viete-like_formulas.sf 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/usr/bin/ruby
  2. #
  3. ## Viète-like formulas:
  4. #
  5. # a(c) = {
  6. # f(0) = 0
  7. # f(n) = sqrt(c + f(n-1))
  8. # d = (1 + sqrt(1 + 4*c))/2
  9. # Limit_{n -> Infinity} (2*d)^n * d - (2*d)^n * f(n)
  10. # }
  11. # Closed-forms:
  12. # a(1) = 2*P where P is the Paris constant (https://oeis.org/A105415)
  13. # a(2) = pi^2/4
  14. # See also:
  15. # https://en.wikipedia.org/wiki/Vi%C3%A8te%27s_formula
  16. local Number!PREC = 1024.numify
  17. const n = 100
  18. func a(c) {
  19. func f(n) {
  20. n == 0 ? 0 : sqrt(c + f(n-1))
  21. }
  22. var d = (1 + sqrt(1 + 4*c))/2
  23. var t = ((2*d)**n * d - ((2*d)**n * f(n)))
  24. return t
  25. }
  26. for c in (1..10) {
  27. say ("a(#{c}) = ", a(c).as_dec(48))
  28. }
  29. __END__
  30. a(1) = 2.19728392878831297146933783468719242174669679222
  31. a(2) = 2.46740110027233965470862274996903778382842485181
  32. a(3) = 2.72432397395262808042738254231361436370470931728
  33. a(4) = 2.95697498038250320240181341327815809572441049058
  34. a(5) = 3.16942068660729603631214225411774841781355055152
  35. a(6) = 3.36565753974384094582778152437432384197290834457
  36. a(7) = 3.54871470954831491531526350481479738940975906022
  37. a(8) = 3.72084501177716618448006573526170234977853589736
  38. a(9) = 3.88375012406073194374765723289729464351431116217
  39. a(10) = 4.03874313819098595611125546305106699051058830246