mpmath 1.4.1__tar.gz → 1.5.0a1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. {mpmath-1.4.1 → mpmath-1.5.0a1}/.github/CONTRIBUTING.rst +37 -0
  2. {mpmath-1.4.1 → mpmath-1.5.0a1}/.github/dependabot.yml +5 -0
  3. {mpmath-1.4.1 → mpmath-1.5.0a1}/.github/workflows/coverage.yml +3 -3
  4. {mpmath-1.4.1 → mpmath-1.5.0a1}/.github/workflows/docs.yml +5 -6
  5. {mpmath-1.4.1 → mpmath-1.5.0a1}/.github/workflows/linter.yml +2 -2
  6. {mpmath-1.4.1 → mpmath-1.5.0a1}/.github/workflows/publish.yml +4 -4
  7. {mpmath-1.4.1 → mpmath-1.5.0a1}/.github/workflows/test.yml +10 -7
  8. {mpmath-1.4.1 → mpmath-1.5.0a1}/CHANGES +110 -0
  9. {mpmath-1.4.1 → mpmath-1.5.0a1}/PKG-INFO +11 -7
  10. {mpmath-1.4.1 → mpmath-1.5.0a1}/README.rst +6 -2
  11. mpmath-1.5.0a1/conftest.py +36 -0
  12. {mpmath-1.4.1 → mpmath-1.5.0a1}/demo/manydigits.py +5 -3
  13. {mpmath-1.4.1 → mpmath-1.5.0a1}/demo/pidigits.py +4 -2
  14. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/basics.rst +34 -4
  15. mpmath-1.5.0a1/docs/calculus/fft.rst +13 -0
  16. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/calculus/index.rst +1 -0
  17. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/calculus/inverselaplace.rst +1 -1
  18. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/calculus/optimization.rst +3 -1
  19. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/bessel.rst +5 -3
  20. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/constants.rst +3 -3
  21. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/elliptic.rst +13 -0
  22. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/powers.rst +3 -3
  23. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/general.rst +7 -4
  24. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/matrices.rst +3 -3
  25. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/setup.rst +3 -3
  26. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/technical.rst +3 -2
  27. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/__init__.py +16 -4
  28. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/__main__.py +5 -0
  29. mpmath-1.5.0a1/mpmath/_version.py +24 -0
  30. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/calculus/__init__.py +1 -0
  31. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/calculus/approximation.py +8 -14
  32. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/calculus/differentiation.py +28 -19
  33. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/calculus/extrapolation.py +30 -10
  34. mpmath-1.5.0a1/mpmath/calculus/fft.py +110 -0
  35. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/calculus/inverselaplace.py +65 -37
  36. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/calculus/odes.py +1 -1
  37. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/calculus/optimization.py +246 -28
  38. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/calculus/polynomials.py +11 -26
  39. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/calculus/quadrature.py +21 -16
  40. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/ctx_base.py +18 -12
  41. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/ctx_fp.py +7 -9
  42. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/ctx_iv.py +49 -38
  43. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/ctx_mp.py +144 -107
  44. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/ctx_mp_python.py +64 -42
  45. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/function_docs.py +9 -11
  46. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/functions/bessel.py +236 -37
  47. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/functions/elliptic.py +795 -20
  48. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/functions/factorials.py +15 -4
  49. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/functions/functions.py +7 -12
  50. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/functions/hypergeometric.py +147 -33
  51. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/functions/orthogonal.py +89 -21
  52. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/functions/qfunctions.py +12 -10
  53. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/functions/rszeta.py +1 -1
  54. mpmath-1.5.0a1/mpmath/functions/theta.py +552 -0
  55. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/functions/zeta.py +64 -32
  56. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/functions/zetazeros.py +2 -0
  57. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/identification.py +21 -27
  58. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/libfp.py +1 -1
  59. mpmath-1.5.0a1/mpmath/libmp/__init__.py +18 -0
  60. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/libmp/gammazeta.py +22 -22
  61. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/libmp/libelefun.py +35 -35
  62. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/libmp/libhyper.py +23 -23
  63. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/libmp/libintmath.py +39 -23
  64. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/libmp/libmpc.py +55 -55
  65. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/libmp/libmpf.py +306 -175
  66. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/matrices/eigen.py +3 -3
  67. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/matrices/linalg.py +55 -13
  68. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/matrices/matrices.py +11 -20
  69. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_basic_ops.py +134 -38
  70. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_bitwise.py +16 -26
  71. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_calculus.py +95 -41
  72. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_cli.py +12 -0
  73. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_convert.py +9 -10
  74. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_demos.py +2 -0
  75. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_division.py +5 -4
  76. mpmath-1.5.0a1/mpmath/tests/test_elliptic.py +1421 -0
  77. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_extra_zeta.py +9 -0
  78. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_format.py +112 -14
  79. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_fp.py +9 -0
  80. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_functions.py +17 -2
  81. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_functions2.py +74 -11
  82. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_gammazeta.py +2 -1
  83. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_hp.py +1 -1
  84. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_identify.py +1 -4
  85. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_interval.py +4 -0
  86. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_linalg.py +27 -1
  87. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_matrices.py +0 -4
  88. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_rootfinding.py +89 -4
  89. mpmath-1.5.0a1/mpmath/tests/test_str.py +159 -0
  90. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_version_frozen.sh +0 -0
  91. mpmath-1.5.0a1/mpmath/tests/test_visualization.py +92 -0
  92. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/visualization.py +21 -7
  93. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath.egg-info/PKG-INFO +11 -7
  94. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath.egg-info/SOURCES.txt +4 -2
  95. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath.egg-info/requires.txt +4 -2
  96. mpmath-1.5.0a1/mpmath.egg-info/scm_file_list.json +252 -0
  97. mpmath-1.5.0a1/mpmath.egg-info/scm_version.json +8 -0
  98. {mpmath-1.4.1 → mpmath-1.5.0a1}/pyproject.toml +5 -5
  99. mpmath-1.4.1/conftest.py +0 -32
  100. mpmath-1.4.1/mpmath/_version.py +0 -34
  101. mpmath-1.4.1/mpmath/functions/theta.py +0 -1049
  102. mpmath-1.4.1/mpmath/libmp/__init__.py +0 -68
  103. mpmath-1.4.1/mpmath/math2.py +0 -7
  104. mpmath-1.4.1/mpmath/rational.py +0 -11
  105. mpmath-1.4.1/mpmath/tests/test_elliptic.py +0 -664
  106. mpmath-1.4.1/mpmath/tests/test_str.py +0 -52
  107. mpmath-1.4.1/mpmath/tests/test_visualization.py +0 -35
  108. {mpmath-1.4.1 → mpmath-1.5.0a1}/.codecov.yml +0 -0
  109. {mpmath-1.4.1 → mpmath-1.5.0a1}/.gitattributes +0 -0
  110. {mpmath-1.4.1 → mpmath-1.5.0a1}/.gitignore +0 -0
  111. {mpmath-1.4.1 → mpmath-1.5.0a1}/.readthedocs.yaml +0 -0
  112. {mpmath-1.4.1 → mpmath-1.5.0a1}/CITATION.bib +0 -0
  113. {mpmath-1.4.1 → mpmath-1.5.0a1}/LICENSE +0 -0
  114. {mpmath-1.4.1 → mpmath-1.5.0a1}/demo/mandelbrot.py +0 -0
  115. {mpmath-1.4.1 → mpmath-1.5.0a1}/demo/plotting.py +0 -0
  116. {mpmath-1.4.1 → mpmath-1.5.0a1}/demo/sofa.py +0 -0
  117. {mpmath-1.4.1 → mpmath-1.5.0a1}/demo/taylor.py +0 -0
  118. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/calculus/approximation.rst +0 -0
  119. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/calculus/differentiation.rst +0 -0
  120. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/calculus/integration.rst +0 -0
  121. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/calculus/odes.rst +0 -0
  122. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/calculus/polynomials.rst +0 -0
  123. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/calculus/sums_limits.rst +0 -0
  124. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/cli.rst +0 -0
  125. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/conf.py +0 -0
  126. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/contexts.rst +0 -0
  127. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/expintegrals.rst +0 -0
  128. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/gamma.rst +0 -0
  129. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/hyperbolic.rst +0 -0
  130. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/hypergeometric.rst +0 -0
  131. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/index.rst +0 -0
  132. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/numtheory.rst +0 -0
  133. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/orthogonal.rst +0 -0
  134. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/qfunctions.rst +0 -0
  135. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/signals.rst +0 -0
  136. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/trigonometric.rst +0 -0
  137. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/functions/zeta.rst +0 -0
  138. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/genindex.rst +0 -0
  139. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/identification.rst +0 -0
  140. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/index.rst +0 -0
  141. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ai.png +0 -0
  142. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ai.py +0 -0
  143. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ai_c.png +0 -0
  144. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ai_c.py +0 -0
  145. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ber.png +0 -0
  146. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ber.py +0 -0
  147. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/besseli.png +0 -0
  148. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/besseli.py +0 -0
  149. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/besseli_c.png +0 -0
  150. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/besseli_c.py +0 -0
  151. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/besselj.png +0 -0
  152. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/besselj.py +0 -0
  153. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/besselj_c.png +0 -0
  154. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/besselj_c.py +0 -0
  155. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/besselk.png +0 -0
  156. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/besselk.py +0 -0
  157. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/besselk_c.png +0 -0
  158. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/besselk_c.py +0 -0
  159. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/bessely.png +0 -0
  160. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/bessely.py +0 -0
  161. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/bessely_c.png +0 -0
  162. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/bessely_c.py +0 -0
  163. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/bi.png +0 -0
  164. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/bi.py +0 -0
  165. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/bi_c.png +0 -0
  166. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/bi_c.py +0 -0
  167. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/buildplots.py +0 -0
  168. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/chebyt.png +0 -0
  169. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/chebyt.py +0 -0
  170. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/chebyu.png +0 -0
  171. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/chebyu.py +0 -0
  172. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/coulombf.png +0 -0
  173. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/coulombf.py +0 -0
  174. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/coulombf_c.png +0 -0
  175. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/coulombf_c.py +0 -0
  176. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/coulombg.png +0 -0
  177. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/coulombg.py +0 -0
  178. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/coulombg_c.png +0 -0
  179. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/coulombg_c.py +0 -0
  180. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ellipe.png +0 -0
  181. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ellipe.py +0 -0
  182. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ellipf.png +0 -0
  183. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ellipf.py +0 -0
  184. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ellipk.png +0 -0
  185. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ellipk.py +0 -0
  186. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ellippi.png +0 -0
  187. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ellippi.py +0 -0
  188. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/gi.png +0 -0
  189. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/gi.py +0 -0
  190. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/gi_c.png +0 -0
  191. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/gi_c.py +0 -0
  192. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hankel1.png +0 -0
  193. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hankel1.py +0 -0
  194. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hankel1_c.png +0 -0
  195. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hankel1_c.py +0 -0
  196. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hankel2.png +0 -0
  197. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hankel2.py +0 -0
  198. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hankel2_c.png +0 -0
  199. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hankel2_c.py +0 -0
  200. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hermite.png +0 -0
  201. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hermite.py +0 -0
  202. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hi.png +0 -0
  203. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hi.py +0 -0
  204. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hi_c.png +0 -0
  205. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/hi_c.py +0 -0
  206. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ker.png +0 -0
  207. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/ker.py +0 -0
  208. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/kleinj.png +0 -0
  209. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/kleinj.py +0 -0
  210. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/kleinj2.png +0 -0
  211. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/kleinj2.py +0 -0
  212. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/laguerre.png +0 -0
  213. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/laguerre.py +0 -0
  214. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/lambertw.png +0 -0
  215. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/lambertw.py +0 -0
  216. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/lambertw_c.png +0 -0
  217. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/lambertw_c.py +0 -0
  218. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/legendre.png +0 -0
  219. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/legendre.py +0 -0
  220. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/lommels1.png +0 -0
  221. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/lommels1.py +0 -0
  222. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/lommels2.png +0 -0
  223. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/lommels2.py +0 -0
  224. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/pcfd.png +0 -0
  225. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/pcfd.py +0 -0
  226. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/spherharm40.png +0 -0
  227. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/spherharm40.py +0 -0
  228. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/spherharm41.png +0 -0
  229. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/spherharm41.py +0 -0
  230. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/spherharm42.png +0 -0
  231. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/spherharm42.py +0 -0
  232. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/spherharm43.png +0 -0
  233. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/spherharm43.py +0 -0
  234. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/spherharm44.png +0 -0
  235. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plots/spherharm44.py +0 -0
  236. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/plotting.rst +0 -0
  237. {mpmath-1.4.1 → mpmath-1.5.0a1}/docs/references.rst +0 -0
  238. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/_interactive.py +0 -0
  239. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/calculus/calculus.py +0 -0
  240. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/functions/__init__.py +0 -0
  241. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/functions/expintegrals.py +0 -0
  242. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/functions/signals.py +0 -0
  243. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/libmp/backend.py +0 -0
  244. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/libmp/libmpi.py +0 -0
  245. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/matrices/__init__.py +0 -0
  246. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/matrices/calculus.py +0 -0
  247. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/matrices/eigen_symmetric.py +0 -0
  248. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_compatibility.py +0 -0
  249. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_diff.py +0 -0
  250. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_eigen.py +0 -0
  251. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_eigen_symmetric.py +0 -0
  252. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_extra_gamma.py +0 -0
  253. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_levin.py +0 -0
  254. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_module.py +0 -0
  255. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_mpmath.py +0 -0
  256. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_ode.py +0 -0
  257. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_pickle.py +0 -0
  258. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_power.py +0 -0
  259. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_quad.py +0 -0
  260. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_special.py +0 -0
  261. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_summation.py +0 -0
  262. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_torture.py +0 -0
  263. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/tests/test_trig.py +0 -0
  264. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath/usertools.py +0 -0
  265. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath.egg-info/dependency_links.txt +0 -0
  266. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath.egg-info/top_level.txt +0 -0
  267. {mpmath-1.4.1 → mpmath-1.5.0a1}/mpmath.egg-info/zip-safe +0 -0
  268. {mpmath-1.4.1 → mpmath-1.5.0a1}/setup.cfg +0 -0
@@ -62,6 +62,43 @@ All work should be submitted via `Pull Requests (PR)`_.
62
62
  and check that it looks as expected.
63
63
 
64
64
 
65
+ AI Generated Code and Communication Policy
66
+ ==========================================
67
+
68
+ The person submitting an issue or PR is responsible for its content, regardless
69
+ of whether AI tools were used in its creation. Generative AI tools can produce
70
+ output quickly, but discretion, good judgment, and critical thinking are the
71
+ foundation of all good contributions.
72
+
73
+ You must understand and explain the code you submit as well as the existing
74
+ related code. It is not acceptable to submit a patch that you cannot
75
+ understand and explain yourself. In explaining your contribution, do not use
76
+ AI to automatically generate descriptions, as AI rarely communicates such
77
+ information correctly and concisely.
78
+
79
+ Disclosure
80
+ ----------
81
+
82
+ If you substantially make use of AI to assist in the development of your patch,
83
+ you must disclose how it was used and what code in the patch is AI generated.
84
+ Pull request without such disclosure may be rejected.
85
+
86
+ Code Quality
87
+ ------------
88
+
89
+ Code generated by AI is very often of low quality. Contributors are expected
90
+ to submit code that meets our standards (see above). We will reject pull
91
+ requests that we deem being "AI slop". Do not waste developers time by
92
+ submitting code that is fully or mostly generated by AI.
93
+
94
+ Communication
95
+ -------------
96
+
97
+ When interacting in communication among developers (email list, discussions,
98
+ issues, pull requests, etc) do not use AI to speak for you, other than for
99
+ translation or grammar editing.
100
+
101
+
65
102
  .. _GitHub issues: https://github.com/mpmath/mpmath/issues
66
103
  .. _Pull Requests (PR): https://github.com/mpmath/mpmath/pulls
67
104
  .. _PEP 8: https://www.python.org/dev/peps/pep-0008/
@@ -4,3 +4,8 @@ updates:
4
4
  directory: "/"
5
5
  schedule:
6
6
  interval: "monthly"
7
+ rebase-strategy: "disabled"
8
+ groups:
9
+ actions-deps:
10
+ patterns:
11
+ - "*"
@@ -8,10 +8,10 @@ jobs:
8
8
  env:
9
9
  PYTEST_ADDOPTS: --cov mpmath --cov-append -n auto
10
10
  steps:
11
- - uses: actions/checkout@v6
11
+ - uses: actions/checkout@v7
12
12
  with:
13
13
  fetch-depth: 0
14
- - uses: actions/setup-python@v6
14
+ - uses: actions/setup-python@v7
15
15
  with:
16
16
  python-version: "3.x"
17
17
  - name: Install dependencies
@@ -37,7 +37,7 @@ jobs:
37
37
  coverage html
38
38
  diff-cover coverage.xml --fail-under=100 \
39
39
  --compare-branch=origin/master
40
- - uses: actions/upload-artifact@v6
40
+ - uses: actions/upload-artifact@v7
41
41
  with:
42
42
  name: coverage
43
43
  path: |
@@ -4,10 +4,10 @@ jobs:
4
4
  docs:
5
5
  runs-on: ubuntu-24.04
6
6
  steps:
7
- - uses: actions/checkout@v6
7
+ - uses: actions/checkout@v7
8
8
  with:
9
9
  fetch-depth: 0
10
- - uses: actions/setup-python@v6
10
+ - uses: actions/setup-python@v7
11
11
  with:
12
12
  python-version: "3.x"
13
13
  - name: Install libs
@@ -20,14 +20,13 @@ jobs:
20
20
  pip install --upgrade .[docs]
21
21
  - name: Building docs
22
22
  run: |
23
- alias sphinx-build='sphinx-build --color -W --keep-going'
24
- sphinx-build -b html docs build/sphinx/html
25
- sphinx-build -b latex docs build/sphinx/latex
23
+ sphinx-build --color -W --keep-going -b html docs build/sphinx/html
24
+ sphinx-build --color -W --keep-going -b latex docs build/sphinx/latex
26
25
  make -C build/sphinx/latex all-pdf
27
26
  env:
28
27
  NO_COLOR: 1 # workaround for sphinx-contrib/autoprogram#76
29
28
  COLUMNS: 80 # also enable line wrapping for argparse
30
- - uses: actions/upload-artifact@v6
29
+ - uses: actions/upload-artifact@v7
31
30
  with:
32
31
  name: docs
33
32
  path: |
@@ -4,10 +4,10 @@ jobs:
4
4
  linter:
5
5
  runs-on: ubuntu-24.04
6
6
  steps:
7
- - uses: actions/checkout@v6
7
+ - uses: actions/checkout@v7
8
8
  with:
9
9
  fetch-depth: 0
10
- - uses: actions/setup-python@v6
10
+ - uses: actions/setup-python@v7
11
11
  with:
12
12
  python-version: "3.x"
13
13
  - run: pip install --upgrade .[develop]
@@ -5,15 +5,15 @@ jobs:
5
5
  name: Build distributions
6
6
  runs-on: ubuntu-24.04
7
7
  steps:
8
- - uses: actions/checkout@v6
8
+ - uses: actions/checkout@v7
9
9
  with:
10
10
  fetch-depth: 0
11
- - uses: actions/setup-python@v6
11
+ - uses: actions/setup-python@v7
12
12
  with:
13
13
  python-version: "3.x"
14
14
  - run: pip install build
15
15
  - run: python -m build
16
- - uses: actions/upload-artifact@v6
16
+ - uses: actions/upload-artifact@v7
17
17
  with:
18
18
  name: build
19
19
  path: dist/
@@ -24,7 +24,7 @@ jobs:
24
24
  - build
25
25
  runs-on: ubuntu-24.04
26
26
  steps:
27
- - uses: actions/download-artifact@v7
27
+ - uses: actions/download-artifact@v8
28
28
  with:
29
29
  pattern: build
30
30
  path: dist/
@@ -5,6 +5,9 @@ on:
5
5
  workflow_dispatch:
6
6
  schedule:
7
7
  - cron: '0 0 * * 2'
8
+ concurrency:
9
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
10
+ cancel-in-progress: true
8
11
  jobs:
9
12
  linter:
10
13
  uses: ./.github/workflows/linter.yml
@@ -15,14 +18,14 @@ jobs:
15
18
  frozen-version:
16
19
  runs-on: ubuntu-24.04
17
20
  steps:
18
- - uses: actions/checkout@v6
21
+ - uses: actions/checkout@v7
19
22
  with:
20
23
  fetch-depth: 0
21
- - uses: actions/setup-python@v6
24
+ - uses: actions/setup-python@v7
22
25
  with:
23
26
  python-version: "3.x"
24
27
  - name: Run frozen version test
25
- run: bash mpmath/tests/test_version_frozen.sh
28
+ run: ./mpmath/tests/test_version_frozen.sh
26
29
  tests:
27
30
  needs:
28
31
  - linter
@@ -32,7 +35,7 @@ jobs:
32
35
  strategy:
33
36
  fail-fast: false
34
37
  matrix:
35
- python-version: [3.9, '3.10', 3.11, 3.12, 3.13, 3.14, 3.13t, 3.14t]
38
+ python-version: ['3.10', 3.11, 3.12, 3.13, 3.14, 3.14t, 3.15, 3.15t]
36
39
  nogmpy: [false]
37
40
  purepy: [false]
38
41
  include:
@@ -43,13 +46,13 @@ jobs:
43
46
  - python-version: pypy3.11
44
47
  purepy: true
45
48
  env:
46
- PYTEST_ADDOPTS: -n auto
49
+ PYTEST_ADDOPTS: -n auto --durations=20
47
50
  steps:
48
- - uses: actions/checkout@v6
51
+ - uses: actions/checkout@v7
49
52
  with:
50
53
  fetch-depth: 0
51
54
  - name: Set up Python ${{ matrix.python-version }}
52
- uses: actions/setup-python@v6
55
+ uses: actions/setup-python@v7
53
56
  with:
54
57
  python-version: ${{ matrix.python-version }}
55
58
  allow-prereleases: true
@@ -1,3 +1,112 @@
1
+ --1.5.0--
2
+ Released TBD
3
+
4
+ Features:
5
+
6
+ * Support special numbers in mpf_frexp() like math.frexp(),
7
+ see #1081 (Sergey B Kirpichev)
8
+ * Add ModAB rootfinding algorithm, see #1093 (Ayush Baranwal)
9
+ * Add Brent root-finding algorithm, see #1103 (Ayush Baranwal)
10
+ * Correct integral path of the lerchphi() to use Laplace transform
11
+ integral, see #1109 (Sergey B Kirpichev)
12
+ * Add Weierstrass elliptic functions, see #1113, #1117,
13
+ #1141, #1146 and #1157 (Graham Hesketh)
14
+ * Implement the modified spherical bessel functions spherical_in()
15
+ and spherical_kn(), see #1121 (Warren Weckesser)
16
+ * Add ulp(), see #1144 (Sergey B Kirpichev)
17
+ * Use round_nearest in repr/str and as default mpf's rounding mode,
18
+ see #1153 (Sergey B Kirpichev)
19
+ * Add shortest_str context option to enable using shortest decimal
20
+ representations in str/repr/format output, see #1115 (Sergey B Kirpichev)
21
+ * Add fft()/invfft() functions for DFT calculation, see #1152 (Ayush Baranwal)
22
+
23
+ Compatibility:
24
+
25
+ * Drop support for CPython 3.9, see #1058 (Sergey B Kirpichev)
26
+ * Remove deprecated math2 and rational modules, see #1057 (Sergey B Kirpichev)
27
+ * Remove deprecated mp.mpnumeric alias, see #1057 (Sergey B Kirpichev)
28
+ * Remove deprecated bitcount(), fp.is_special() and to/from_pickable()
29
+ functions, see #1057 (Sergey B Kirpichev)
30
+ * Drop DeprecationWarning for force_type kwarg for matrix(),
31
+ see #1057 (Sergey B Kirpichev)
32
+ * Use signed=True per default in to_man_exp(), see #1057 (Sergey B Kirpichev)
33
+ * Use asc=True per default for polynomial functions, see
34
+ #1057 (Sergey B Kirpichev)
35
+ * Restrict libmp exports to public API, see #1089 (Sergey B Kirpichev)
36
+ * Use explicit kwargs in public API, where possible,
37
+ see #1127 (Sergey B Kirpichev)
38
+
39
+ Bug fixes:
40
+
41
+ * Fix test_hexadecimal_with_libc_bulk(), see #1049 (Doug Torrance)
42
+ * Keep available deprecated aliases for mpc/mpf_log() (Sergey B Kirpichev)
43
+ * Use version_file option of setuptools-scm to keep version info, see #1048
44
+ (Sergey B Kirpichev)
45
+ * Add workaround for test on s390x, see #1061 (Sergey B Kirpichev)
46
+ * Fix signature of root(), see #1072 (Sergey B Kirpichev)
47
+ * Speedup removal trailing zeros in _normalize/from_man_exp(), see #1074
48
+ (Fredrik Johansson and Sergey B Kirpichev)
49
+ * Improve documentation about rounding in the mp context,
50
+ see #1079 (Sergey B Kirpichev)
51
+ * Correct to_float() conversion for double-rounding cases (e.g. subnormals),
52
+ see #1082 (Sergey B Kirpichev)
53
+ * Fix qr_solve() failure on well-conditioned matrices with zero pivot, see
54
+ #1083 (Jam Balaya)
55
+ * Clarify to_float() docstring, see #1087 (Sergey B Kirpichev)
56
+ * Add extra precision for summation in mpf_hypot(), see
57
+ #1088 (Sergey B Kirpichev)
58
+ * Fix typo and function names for sin/cospi(), see #1091 (Sergey B Kirpichev)
59
+ * Raise ValueError when same sign at interval boundaries in bisection
60
+ rootfinding algorithm, see #1092 (Ayush Baranwal)
61
+ * Correct interval update for Ridder's method, see #1096 (Sergey B Kirpichev)
62
+ * Set dynamic maxsteps value for the bisect method, see
63
+ #1096 (Sergey B Kirpichev)
64
+ * Implement direct series for lerchphi() base case with |z| < 1,
65
+ see #1100 (Sergey B Kirpichev)
66
+ * Correct exception message for THETA_Q_LIM, see #1102
67
+ (Sergey B Kirpichev and Jam Balaya)
68
+ * Fix gegenbauer() failing to converge for odd integer n at z=0,
69
+ see #1101 (Vincent Gao)
70
+ * Reorganize fixed-precision computations for theta3 to avoid
71
+ severe cancellation, see #1107 (Sergey B Kirpichev)
72
+ * Fix fp.hypsum() to exit if ZeroDivisionError occurs and t==0,
73
+ see #1112 (Sergey B Kirpichev)
74
+ * Fix chebyfit IndexError when N <= 0, see #1114 (Vincent Gao)
75
+ * Use generic modular transformations to compute jtheta() with
76
+ |q| ~ 1, see #1111 (Sergey B Kirpichev, Jam Balaya)
77
+ * Fix repr_dps() to produce a correct estimate for prec!=53,
78
+ see #1118 (Sergey B Kirpichev)
79
+ * Use quasi-periodicity property (DLMF, §20.2(ii)) to compute
80
+ jtheta(), *_theta2/3a() helpers now not needed, see #1120
81
+ (Sergey B Kirpichev)
82
+ * Close leftover figure in plot/cplot/splot on error,
83
+ see #1123 (Apoorv Darshan)
84
+ * Better document None return value of the pslq(), see
85
+ #1134 (Sergey B Kirpichev)
86
+ * Fix last-digit rounding of the "f" format type, see #1132 (Vincent Gao)
87
+ * Use CoW pattern to manage constant_memo() cache, see
88
+ #1138 (Sergey B Kirpichev)
89
+ * Widen to_str's digit window so str/nstr rounds near-boundary values
90
+ correctly, see #1139 (Vincent Gao)
91
+ * Correct definitions for spherical Bessel functions, see #1143
92
+ (Sergey B Kirpichev)
93
+ * Added 2 new expceptions to Rosser's Rule, se #1148 (catalin-hanga)
94
+ * Avoid spurious overflow in fp gammaprod, see #1150 (Sanjay Santhanam)
95
+ * Document pretty_dps context's option, see #1153 (Sergey B Kirpichev)
96
+ * Fix cplot points rounding, see #1155 (alexfyp)
97
+
98
+ Maintenance:
99
+
100
+ * Add bash script to test package version in a frozen application version
101
+ and a separate CI job to run it, see #1055 (flurin4)
102
+ * Revert "Add backport action", see #1063 (Sergey B Kirpichev)
103
+ * Test on CPython 3.15, see #1071, #1106 and #1110 (Sergey B Kirpichev)
104
+ * Add AI-related policy, see #1098 (Sergey B Kirpichev)
105
+ * Fix test_sn_cn_dn_identities(), see #1106 (Sergey B Kirpichev)
106
+ * Fix test_compatibility(): avoid using of private numpy
107
+ API (Sergey B Kirpichev)
108
+
109
+
1
110
  --1.4.1--
2
111
  Released March 15, 2026
3
112
 
@@ -9,6 +118,7 @@ Bug fixes:
9
118
  (Sergey B Kirpichev)
10
119
  * Add workaround for test on s390x, see #1061 (Sergey B Kirpichev)
11
120
 
121
+
12
122
  --1.4.0--
13
123
  Released February 23, 2026
14
124
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mpmath
3
- Version: 1.4.1
3
+ Version: 1.5.0a1
4
4
  Summary: Python library for arbitrary-precision floating-point arithmetic
5
5
  Author-email: Fredrik Johansson <fredrik.johansson@gmail.com>
6
6
  License-Expression: BSD-3-Clause
@@ -13,24 +13,24 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
13
13
  Classifier: Programming Language :: Python
14
14
  Classifier: Programming Language :: Python :: 3
15
15
  Classifier: Programming Language :: Python :: 3 :: Only
16
- Classifier: Programming Language :: Python :: 3.9
17
16
  Classifier: Programming Language :: Python :: 3.10
18
17
  Classifier: Programming Language :: Python :: 3.11
19
18
  Classifier: Programming Language :: Python :: 3.12
20
19
  Classifier: Programming Language :: Python :: 3.13
21
20
  Classifier: Programming Language :: Python :: 3.14
21
+ Classifier: Programming Language :: Python :: 3.15
22
22
  Classifier: Programming Language :: Python :: Free Threading :: 2 - Beta
23
23
  Classifier: Programming Language :: Python :: Implementation :: CPython
24
24
  Classifier: Programming Language :: Python :: Implementation :: PyPy
25
- Requires-Python: >=3.9
25
+ Requires-Python: >=3.10
26
26
  Description-Content-Type: text/x-rst
27
27
  License-File: LICENSE
28
28
  Provides-Extra: tests
29
29
  Requires-Dist: pytest>=6; extra == "tests"
30
- Requires-Dist: numpy; extra == "tests"
30
+ Requires-Dist: numpy; python_version < "3.15" and extra == "tests"
31
31
  Requires-Dist: packaging; extra == "tests"
32
32
  Requires-Dist: pytest-timeout; extra == "tests"
33
- Requires-Dist: matplotlib; extra == "tests"
33
+ Requires-Dist: matplotlib; python_version < "3.15" and extra == "tests"
34
34
  Requires-Dist: pexpect; extra == "tests"
35
35
  Requires-Dist: ipython; extra == "tests"
36
36
  Requires-Dist: hypothesis; extra == "tests"
@@ -142,6 +142,7 @@ Credit also goes to:
142
142
 
143
143
  Release history:
144
144
 
145
+ * Version 1.4.1 released on March 15, 2026
145
146
  * Version 1.4.0 released on February 23, 2026
146
147
  * Version 1.3.0 released on March 7, 2023
147
148
  * Version 1.2.1 released on February 9, 2021
@@ -171,8 +172,8 @@ Release history:
171
172
  1. Download & installation
172
173
  --------------------------
173
174
 
174
- Mpmath requires Python 3.9 or later versions. It has been tested with CPython
175
- 3.9 through 3.14 and for PyPy 3.11.
175
+ Mpmath requires Python 3.10 or later versions. It has been tested with CPython
176
+ 3.10 through 3.15 and for PyPy 3.11.
176
177
 
177
178
  The latest release of mpmath can be downloaded from the mpmath
178
179
  website and from https://github.com/mpmath/mpmath/releases
@@ -243,3 +244,6 @@ to the `mpmath mailinglist <https://groups.google.com/g/mpmath>`_.
243
244
 
244
245
  You can also report bugs and send patches to the mpmath issue tracker,
245
246
  https://github.com/mpmath/mpmath/issues
247
+
248
+ See also our `contributing guidelines
249
+ <https://github.com/mpmath/mpmath/blob/master/.github/CONTRIBUTING.rst>`_.
@@ -85,6 +85,7 @@ Credit also goes to:
85
85
 
86
86
  Release history:
87
87
 
88
+ * Version 1.4.1 released on March 15, 2026
88
89
  * Version 1.4.0 released on February 23, 2026
89
90
  * Version 1.3.0 released on March 7, 2023
90
91
  * Version 1.2.1 released on February 9, 2021
@@ -114,8 +115,8 @@ Release history:
114
115
  1. Download & installation
115
116
  --------------------------
116
117
 
117
- Mpmath requires Python 3.9 or later versions. It has been tested with CPython
118
- 3.9 through 3.14 and for PyPy 3.11.
118
+ Mpmath requires Python 3.10 or later versions. It has been tested with CPython
119
+ 3.10 through 3.15 and for PyPy 3.11.
119
120
 
120
121
  The latest release of mpmath can be downloaded from the mpmath
121
122
  website and from https://github.com/mpmath/mpmath/releases
@@ -186,3 +187,6 @@ to the `mpmath mailinglist <https://groups.google.com/g/mpmath>`_.
186
187
 
187
188
  You can also report bugs and send patches to the mpmath issue tracker,
188
189
  https://github.com/mpmath/mpmath/issues
190
+
191
+ See also our `contributing guidelines
192
+ <https://github.com/mpmath/mpmath/blob/master/.github/CONTRIBUTING.rst>`_.
@@ -0,0 +1,36 @@
1
+ import sys
2
+
3
+ import pytest
4
+
5
+ import mpmath
6
+
7
+
8
+ def pytest_report_header(config):
9
+ print("mpmath backend: %s" % mpmath.libmp.backend.BACKEND)
10
+ print("mpmath mp class: %s" % repr(mpmath.mp))
11
+ print("mpmath version: %s" % mpmath.__version__)
12
+ print("Python version: %s" % sys.version)
13
+
14
+
15
+ def pytest_configure(config):
16
+ config.addinivalue_line('markers', 'slow: marks tests as slow')
17
+
18
+ if "no:hypothesispytest" not in config.getoption("-p"):
19
+ from hypothesis import settings
20
+
21
+ default = settings.get_profile("default")
22
+ settings.register_profile("default",
23
+ settings(default, max_examples=1000))
24
+ ci = settings.get_profile("ci")
25
+ settings.register_profile("ci", settings(ci, max_examples=10000))
26
+
27
+
28
+ @pytest.fixture(autouse=True)
29
+ def reset_mp_globals():
30
+ mpmath.mp.prec = sys.float_info.mant_dig
31
+ mpmath.mp.pretty = False
32
+ mpmath.mp.rounding = 'n'
33
+ mpmath.mp.pretty_dps = "str"
34
+ mpmath.mp.shortest_str = False
35
+ mpmath.iv.prec = mpmath.mp.prec
36
+ mpmath.iv.pretty = False
@@ -8,9 +8,11 @@ Run with:
8
8
  python manydigits.py
9
9
 
10
10
  """
11
- from mpmath import (mp, sin, tan, cos, sqrt, e, pi, exp, atanh, mpf, tanh,
12
- zeta, catalan, findroot, quadts, atan, asin, asinh)
13
- from mpmath.libmp import to_fixed, bin_to_radix
11
+ from mpmath import (asin, asinh, atan, atanh, catalan, cos, e, exp, findroot,
12
+ mp, mpf, pi, quadts, sin, sqrt, tan, tanh, zeta)
13
+ from mpmath.libmp.libintmath import bin_to_radix
14
+ from mpmath.libmp.libmpf import to_fixed
15
+
14
16
 
15
17
  dps = 100
16
18
  mp.dps = dps + 10
@@ -5,11 +5,13 @@ Calculate digits of pi. This module can be run interactively with
5
5
 
6
6
  """
7
7
 
8
- import sys
9
8
  import math
9
+ import sys
10
10
  from time import perf_counter
11
11
 
12
- from mpmath.libmp import bin_to_radix, numeral, pi_fixed
12
+ from mpmath.libmp.libelefun import pi_fixed
13
+ from mpmath.libmp.libintmath import bin_to_radix, numeral
14
+
13
15
 
14
16
  def display_fraction(digits, skip=0, colwidth=10, columns=5):
15
17
  perline = colwidth * columns
@@ -82,6 +82,8 @@ Mpmath uses a global working precision; it does not keep track of the precision
82
82
  mp.dps = 15 [default: 15]
83
83
  mp.rounding = 'n' [default: 'n']
84
84
  mp.trap_complex = False [default: False]
85
+ mp.pretty_dps = 'str' [default: 'str']
86
+ mp.shortest_str = False [default: False]
85
87
 
86
88
  The term **prec** denotes the binary precision (measured in bits) while **dps** (short for *decimal places*) is the decimal precision. Binary and decimal precision are related roughly according to the formula ``prec = 3.33*dps``. For example, it takes a precision of roughly 333 bits to hold an approximation of pi that is accurate to 100 decimal places (actually slightly more than 333 bits is used).
87
89
 
@@ -97,10 +99,10 @@ When the precision has been set, all ``mpf`` operations are carried out at that
97
99
 
98
100
  >>> mp.dps = 50
99
101
  >>> mpf(1) / 6
100
- mpf('0.16666666666666666666666666666666666666666666666666656')
102
+ mpf('0.1666666666666666666666666666666666666666666666666666')
101
103
  >>> mp.dps = 25
102
104
  >>> mpf(2) ** mpf('0.5')
103
- mpf('1.414213562373095048801688713')
105
+ mpf('1.41421356237309504880168871')
104
106
 
105
107
  The precision of complex arithmetic is also controlled by the ``mp`` object:
106
108
 
@@ -123,7 +125,7 @@ The (binary) exponent is stored exactly and is independent of the precision.
123
125
 
124
126
  The ``rounding`` property control default rounding mode for the context:
125
127
 
126
- >>> mp.rounding # round to nearest
128
+ >>> mp.rounding # round to nearest is the default
127
129
  'n'
128
130
  >>> sin(1)
129
131
  mpf('0.8414709848078965')
@@ -233,11 +235,39 @@ Setting the ``mp.pretty`` option will use the ``str()``-style output for ``repr(
233
235
  >>> mpf(0.6)
234
236
  mpf('0.59999999999999998')
235
237
 
236
- To use enough digits to be able recreate value exactly, set ``mp.pretty_dps``
238
+ To use enough digits to be able recreate value exactly, enable
239
+ ``mp.shortest_str`` option. With this, repr/str and the new-style string
240
+ formatting *without format specifier* will use *minimal* number of decimal
241
+ digits that will preserve value on string input, like repr for CPython's
242
+ builtin floats:
243
+
244
+ >>> mp.shortest_str = True
245
+ >>> mp.pretty = True
246
+ >>> mpf(10.9) == mpf("10.9")
247
+ True
248
+ >>> mpf(10.9)
249
+ 10.9
250
+ >>> f"{_}"
251
+ '10.9'
252
+ >>> mp.pretty = False
253
+ >>> mpf(10.9)
254
+ mpf('10.9')
255
+ >>> mp.shortest_str = False
256
+
257
+ Alternatively, set ``mp.pretty_dps``
237
258
  to ``"repr"`` (default value is ``"str"``). Same option is used to control
238
259
  default number of digits in the new-style string formatting *without format
239
260
  specifier*, i.e. ``format(exp(mpf(1)))``.
240
261
 
262
+ >>> mp.pretty = True
263
+ >>> mpf(0.1)
264
+ 0.1
265
+ >>> mp.pretty_dps = "repr"
266
+ >>> mpf(0.1)
267
+ 0.10000000000000001
268
+ >>> mp.pretty_dps = "str"
269
+ >>> mp.pretty = False
270
+
241
271
  The number of digits with which numbers are printed by default is determined by
242
272
  the working precision. To specify the number of digits to show without
243
273
  changing the working precision, use :func:`format syntax support
@@ -0,0 +1,13 @@
1
+ Fast Fourier Transform
2
+ ----------------------------------
3
+
4
+ FFT
5
+ ...
6
+
7
+ .. autofunction:: mpmath.fft
8
+
9
+
10
+ Inverse FFT
11
+ ...........
12
+
13
+ .. autofunction:: mpmath.invfft
@@ -12,3 +12,4 @@ Numerical calculus
12
12
  odes
13
13
  approximation
14
14
  inverselaplace
15
+ fft
@@ -55,7 +55,7 @@ using the existing interface):
55
55
  >>> ft = lambda t: exp(-t) - exp(-1000*t)
56
56
  >>> fpvec = [fp(p) for p in myTalbot.p]
57
57
  >>> ft(t)-myTalbot.calc_time_domain_solution(fpvec,t,manual_prec=True)
58
- mpf('1.928300179528890061756872185e-21')
58
+ mpf('1.92830017952889006175687218e-21')
59
59
 
60
60
  This manual approach is also useful to look at the Laplace parameter,
61
61
  order, or working precision which were computed.
@@ -4,7 +4,7 @@ Root-finding and optimization
4
4
  Root-finding (``findroot``)
5
5
  ...........................
6
6
 
7
- .. autofunction:: mpmath.findroot(f, x0, solver=Secant, tol=None, verbose=False, verify=True, **kwargs)
7
+ .. autofunction:: mpmath.findroot
8
8
 
9
9
  Solvers
10
10
  ^^^^^^^
@@ -21,3 +21,5 @@ Solvers
21
21
  .. autoclass:: mpmath.calculus.optimization.Ridder
22
22
  .. autoclass:: mpmath.calculus.optimization.ANewton
23
23
  .. autoclass:: mpmath.calculus.optimization.MDNewton
24
+ .. autoclass:: mpmath.calculus.optimization.ModAB
25
+ .. autoclass:: mpmath.calculus.optimization.Brent
@@ -38,6 +38,8 @@ Spherical Bessel functions
38
38
 
39
39
  .. autofunction:: mpmath.spherical_jn
40
40
  .. autofunction:: mpmath.spherical_yn
41
+ .. autofunction:: mpmath.spherical_in
42
+ .. autofunction:: mpmath.spherical_kn
41
43
 
42
44
 
43
45
  Kelvin functions
@@ -92,9 +94,9 @@ Coulomb wave functions
92
94
  Confluent U and Whittaker functions
93
95
  ...................................
94
96
 
95
- .. autofunction:: mpmath.hyperu(a, b, z)
96
- .. autofunction:: mpmath.whitm(k,m,z)
97
- .. autofunction:: mpmath.whitw(k,m,z)
97
+ .. autofunction:: mpmath.hyperu
98
+ .. autofunction:: mpmath.whitm
99
+ .. autofunction:: mpmath.whitw
98
100
 
99
101
 
100
102
  Parabolic cylinder functions
@@ -22,11 +22,11 @@ function::
22
22
  >>> pi
23
23
  <pi: 3.14159~>
24
24
  >>> 2*pi
25
- mpf('6.283185307179586476925286766559005768394338')
25
+ mpf('6.28318530717958647692528676655900576839434')
26
26
  >>> +pi
27
- mpf('3.141592653589793238462643383279502884197169')
27
+ mpf('3.14159265358979323846264338327950288419717')
28
28
  >>> pi()
29
- mpf('3.141592653589793238462643383279502884197169')
29
+ mpf('3.14159265358979323846264338327950288419717')
30
30
 
31
31
  The predefined objects ``j`` (imaginary unit), ``inf`` (positive infinity) and
32
32
  ``nan`` (not-a-number) are shortcuts to ``mpc`` and ``mpf`` instances with
@@ -13,6 +13,8 @@ Elliptic arguments
13
13
  .. autofunction:: mpmath.mfrom
14
14
  .. autofunction:: mpmath.kfrom
15
15
  .. autofunction:: mpmath.taufrom
16
+ .. autofunction:: mpmath.g2g3from
17
+ .. autofunction:: mpmath.omega1omega2from
16
18
 
17
19
 
18
20
  Legendre elliptic integrals
@@ -46,8 +48,19 @@ Jacobi elliptic functions
46
48
  .. autofunction:: mpmath.ellipfun
47
49
 
48
50
 
51
+ Weierstrass elliptic functions
52
+ ..............................
53
+
54
+ .. autofunction:: mpmath.weierp
55
+ .. autofunction:: mpmath.weierpprime
56
+ .. autofunction:: mpmath.weiersigma
57
+ .. autofunction:: mpmath.weierzeta
58
+ .. autofunction:: mpmath.weierpinv
59
+
60
+
49
61
  Modular functions
50
62
  .................
51
63
 
52
64
  .. autofunction:: mpmath.eta
53
65
  .. autofunction:: mpmath.kleinj
66
+ .. autofunction:: mpmath.kleinjinv