PageRenderTime 44ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/demo/manydigits.py

http://mpmath.googlecode.com/
Python | 104 lines | 102 code | 0 blank | 2 comment | 0 complexity | 60005388f23d95e5762d2636fdf45b09 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. """
  2. This script calculates solutions to some of the problems from the
  3. "Many Digits" competition:
  4. http://www.cs.ru.nl/~milad/manydigits/problems.php
  5. Run with:
  6. python manydigits.py
  7. """
  8. from mpmath import *
  9. from mpmath.libmp import to_fixed, bin_to_radix
  10. dps = 100
  11. mp.dps = dps + 10
  12. def pr(x):
  13. """Return the first dps digits after the decimal point"""
  14. x = x._mpf_
  15. p = int(dps*3.33 + 10)
  16. t = to_fixed(x, p)
  17. d = bin_to_radix(t, p, 10, dps)
  18. s = str(d).zfill(dps)[-dps:]
  19. return s[:dps//2] + "\n" + s[dps//2:]
  20. print """
  21. This script prints answers to a selection of the "Many Digits"
  22. competition problems: http://www.cs.ru.nl/~milad/manydigits/problems.php
  23. The output for each problem is the first 100 digits after the
  24. decimal point in the result.
  25. """
  26. print "C01: sin(tan(cos(1)))"
  27. print pr(sin(tan(cos(1))))
  28. print
  29. print "C02: sqrt(e/pi)"
  30. print pr(sqrt(e/pi))
  31. print
  32. print "C03: sin((e+1)^3)"
  33. print pr(sin((e+1)**3))
  34. print
  35. print "C04: exp(pi*sqrt(2011))"
  36. mp.dps += 65
  37. print pr(exp(pi*sqrt(2011)))
  38. mp.dps -= 65
  39. print
  40. print "C05: exp(exp(exp(1/2)))"
  41. print pr(exp(exp(exp(0.5))))
  42. print
  43. print "C06: arctanh(1-arctanh(1-arctanh(1-arctanh(1/pi))))"
  44. print pr(atanh(1-atanh(1-atanh(1-atanh(1/pi)))))
  45. print
  46. print "C07: pi^1000"
  47. mp.dps += 505
  48. print pr(pi**1000)
  49. mp.dps -= 505
  50. print
  51. print "C08: sin(6^(6^6))"
  52. print pr(sin(6**(6**6)))
  53. print
  54. print "C09: sin(10*arctan(tanh(pi*(2011^(1/2))/3)))"
  55. mp.dps += 150
  56. print pr(sin(10*atan(tanh(pi*sqrt(2011)/3))))
  57. mp.dps -= 150
  58. print
  59. print "C10: (7+2^(1/5)-5*(8^(1/5)))^(1/3) + 4^(1/5)-2^(1/5)"
  60. a = mpf(1)/5
  61. print pr(((7 + 2**a - 5*(8**a))**(mpf(1)/3) + 4**a - 2**a))
  62. print
  63. print "C11: tan(2^(1/2))+arctanh(sin(1))"
  64. print pr((tan(sqrt(2)) + atanh(sin(1))))
  65. print
  66. print "C12: arcsin(1/e^2) + arcsinh(e^2)"
  67. print pr(asin(1/exp(2)) + asinh(exp(2)))
  68. print
  69. print "C17: S= -4*Zeta(2) - 2*Zeta(3) + 4*Zeta(2)*Zeta(3) + 2*Zeta(5)"
  70. print pr(-4*zeta(2) - 2*zeta(3) + 4*zeta(2)*zeta(3) + 2*zeta(5))
  71. print
  72. print "C18: Catalan G = Sum{i=0}{\infty}(-1)^i/(2i+1)^2"
  73. print pr(catalan)
  74. print
  75. print "C21: Equation exp(cos(x)) = x"
  76. print pr(findroot(lambda x: exp(cos(x))-x, 1))
  77. print
  78. print "C22: J = integral(sin(sin(sin(x)))), x=0..1"
  79. print pr(quadts(lambda x: sin(sin(sin(x))), [0, 1]))
  80. print