__init__.py 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468
  1. __version__ = '1.3.0'
  2. from .usertools import monitor, timing
  3. from .ctx_fp import FPContext
  4. from .ctx_mp import MPContext
  5. from .ctx_iv import MPIntervalContext
  6. fp = FPContext()
  7. mp = MPContext()
  8. iv = MPIntervalContext()
  9. fp._mp = mp
  10. mp._mp = mp
  11. iv._mp = mp
  12. mp._fp = fp
  13. fp._fp = fp
  14. mp._iv = iv
  15. fp._iv = iv
  16. iv._iv = iv
  17. # XXX: extremely bad pickle hack
  18. from . import ctx_mp as _ctx_mp
  19. _ctx_mp._mpf_module.mpf = mp.mpf
  20. _ctx_mp._mpf_module.mpc = mp.mpc
  21. make_mpf = mp.make_mpf
  22. make_mpc = mp.make_mpc
  23. extraprec = mp.extraprec
  24. extradps = mp.extradps
  25. workprec = mp.workprec
  26. workdps = mp.workdps
  27. autoprec = mp.autoprec
  28. maxcalls = mp.maxcalls
  29. memoize = mp.memoize
  30. mag = mp.mag
  31. bernfrac = mp.bernfrac
  32. qfrom = mp.qfrom
  33. mfrom = mp.mfrom
  34. kfrom = mp.kfrom
  35. taufrom = mp.taufrom
  36. qbarfrom = mp.qbarfrom
  37. ellipfun = mp.ellipfun
  38. jtheta = mp.jtheta
  39. kleinj = mp.kleinj
  40. eta = mp.eta
  41. qp = mp.qp
  42. qhyper = mp.qhyper
  43. qgamma = mp.qgamma
  44. qfac = mp.qfac
  45. nint_distance = mp.nint_distance
  46. plot = mp.plot
  47. cplot = mp.cplot
  48. splot = mp.splot
  49. odefun = mp.odefun
  50. jacobian = mp.jacobian
  51. findroot = mp.findroot
  52. multiplicity = mp.multiplicity
  53. isinf = mp.isinf
  54. isnan = mp.isnan
  55. isnormal = mp.isnormal
  56. isint = mp.isint
  57. isfinite = mp.isfinite
  58. almosteq = mp.almosteq
  59. nan = mp.nan
  60. rand = mp.rand
  61. absmin = mp.absmin
  62. absmax = mp.absmax
  63. fraction = mp.fraction
  64. linspace = mp.linspace
  65. arange = mp.arange
  66. mpmathify = convert = mp.convert
  67. mpc = mp.mpc
  68. mpi = iv._mpi
  69. nstr = mp.nstr
  70. nprint = mp.nprint
  71. chop = mp.chop
  72. fneg = mp.fneg
  73. fadd = mp.fadd
  74. fsub = mp.fsub
  75. fmul = mp.fmul
  76. fdiv = mp.fdiv
  77. fprod = mp.fprod
  78. quad = mp.quad
  79. quadgl = mp.quadgl
  80. quadts = mp.quadts
  81. quadosc = mp.quadosc
  82. quadsubdiv = mp.quadsubdiv
  83. invertlaplace = mp.invertlaplace
  84. invlaptalbot = mp.invlaptalbot
  85. invlapstehfest = mp.invlapstehfest
  86. invlapdehoog = mp.invlapdehoog
  87. pslq = mp.pslq
  88. identify = mp.identify
  89. findpoly = mp.findpoly
  90. richardson = mp.richardson
  91. shanks = mp.shanks
  92. levin = mp.levin
  93. cohen_alt = mp.cohen_alt
  94. nsum = mp.nsum
  95. nprod = mp.nprod
  96. difference = mp.difference
  97. diff = mp.diff
  98. diffs = mp.diffs
  99. diffs_prod = mp.diffs_prod
  100. diffs_exp = mp.diffs_exp
  101. diffun = mp.diffun
  102. differint = mp.differint
  103. taylor = mp.taylor
  104. pade = mp.pade
  105. polyval = mp.polyval
  106. polyroots = mp.polyroots
  107. fourier = mp.fourier
  108. fourierval = mp.fourierval
  109. sumem = mp.sumem
  110. sumap = mp.sumap
  111. chebyfit = mp.chebyfit
  112. limit = mp.limit
  113. matrix = mp.matrix
  114. eye = mp.eye
  115. diag = mp.diag
  116. zeros = mp.zeros
  117. ones = mp.ones
  118. hilbert = mp.hilbert
  119. randmatrix = mp.randmatrix
  120. swap_row = mp.swap_row
  121. extend = mp.extend
  122. norm = mp.norm
  123. mnorm = mp.mnorm
  124. lu_solve = mp.lu_solve
  125. lu = mp.lu
  126. qr = mp.qr
  127. unitvector = mp.unitvector
  128. inverse = mp.inverse
  129. residual = mp.residual
  130. qr_solve = mp.qr_solve
  131. cholesky = mp.cholesky
  132. cholesky_solve = mp.cholesky_solve
  133. det = mp.det
  134. cond = mp.cond
  135. hessenberg = mp.hessenberg
  136. schur = mp.schur
  137. eig = mp.eig
  138. eig_sort = mp.eig_sort
  139. eigsy = mp.eigsy
  140. eighe = mp.eighe
  141. eigh = mp.eigh
  142. svd_r = mp.svd_r
  143. svd_c = mp.svd_c
  144. svd = mp.svd
  145. gauss_quadrature = mp.gauss_quadrature
  146. expm = mp.expm
  147. sqrtm = mp.sqrtm
  148. powm = mp.powm
  149. logm = mp.logm
  150. sinm = mp.sinm
  151. cosm = mp.cosm
  152. mpf = mp.mpf
  153. j = mp.j
  154. exp = mp.exp
  155. expj = mp.expj
  156. expjpi = mp.expjpi
  157. ln = mp.ln
  158. im = mp.im
  159. re = mp.re
  160. inf = mp.inf
  161. ninf = mp.ninf
  162. sign = mp.sign
  163. eps = mp.eps
  164. pi = mp.pi
  165. ln2 = mp.ln2
  166. ln10 = mp.ln10
  167. phi = mp.phi
  168. e = mp.e
  169. euler = mp.euler
  170. catalan = mp.catalan
  171. khinchin = mp.khinchin
  172. glaisher = mp.glaisher
  173. apery = mp.apery
  174. degree = mp.degree
  175. twinprime = mp.twinprime
  176. mertens = mp.mertens
  177. ldexp = mp.ldexp
  178. frexp = mp.frexp
  179. fsum = mp.fsum
  180. fdot = mp.fdot
  181. sqrt = mp.sqrt
  182. cbrt = mp.cbrt
  183. exp = mp.exp
  184. ln = mp.ln
  185. log = mp.log
  186. log10 = mp.log10
  187. power = mp.power
  188. cos = mp.cos
  189. sin = mp.sin
  190. tan = mp.tan
  191. cosh = mp.cosh
  192. sinh = mp.sinh
  193. tanh = mp.tanh
  194. acos = mp.acos
  195. asin = mp.asin
  196. atan = mp.atan
  197. asinh = mp.asinh
  198. acosh = mp.acosh
  199. atanh = mp.atanh
  200. sec = mp.sec
  201. csc = mp.csc
  202. cot = mp.cot
  203. sech = mp.sech
  204. csch = mp.csch
  205. coth = mp.coth
  206. asec = mp.asec
  207. acsc = mp.acsc
  208. acot = mp.acot
  209. asech = mp.asech
  210. acsch = mp.acsch
  211. acoth = mp.acoth
  212. cospi = mp.cospi
  213. sinpi = mp.sinpi
  214. sinc = mp.sinc
  215. sincpi = mp.sincpi
  216. cos_sin = mp.cos_sin
  217. cospi_sinpi = mp.cospi_sinpi
  218. fabs = mp.fabs
  219. re = mp.re
  220. im = mp.im
  221. conj = mp.conj
  222. floor = mp.floor
  223. ceil = mp.ceil
  224. nint = mp.nint
  225. frac = mp.frac
  226. root = mp.root
  227. nthroot = mp.nthroot
  228. hypot = mp.hypot
  229. fmod = mp.fmod
  230. ldexp = mp.ldexp
  231. frexp = mp.frexp
  232. sign = mp.sign
  233. arg = mp.arg
  234. phase = mp.phase
  235. polar = mp.polar
  236. rect = mp.rect
  237. degrees = mp.degrees
  238. radians = mp.radians
  239. atan2 = mp.atan2
  240. fib = mp.fib
  241. fibonacci = mp.fibonacci
  242. lambertw = mp.lambertw
  243. zeta = mp.zeta
  244. altzeta = mp.altzeta
  245. gamma = mp.gamma
  246. rgamma = mp.rgamma
  247. factorial = mp.factorial
  248. fac = mp.fac
  249. fac2 = mp.fac2
  250. beta = mp.beta
  251. betainc = mp.betainc
  252. psi = mp.psi
  253. #psi0 = mp.psi0
  254. #psi1 = mp.psi1
  255. #psi2 = mp.psi2
  256. #psi3 = mp.psi3
  257. polygamma = mp.polygamma
  258. digamma = mp.digamma
  259. #trigamma = mp.trigamma
  260. #tetragamma = mp.tetragamma
  261. #pentagamma = mp.pentagamma
  262. harmonic = mp.harmonic
  263. bernoulli = mp.bernoulli
  264. bernfrac = mp.bernfrac
  265. stieltjes = mp.stieltjes
  266. hurwitz = mp.hurwitz
  267. dirichlet = mp.dirichlet
  268. bernpoly = mp.bernpoly
  269. eulerpoly = mp.eulerpoly
  270. eulernum = mp.eulernum
  271. polylog = mp.polylog
  272. clsin = mp.clsin
  273. clcos = mp.clcos
  274. gammainc = mp.gammainc
  275. gammaprod = mp.gammaprod
  276. binomial = mp.binomial
  277. rf = mp.rf
  278. ff = mp.ff
  279. hyper = mp.hyper
  280. hyp0f1 = mp.hyp0f1
  281. hyp1f1 = mp.hyp1f1
  282. hyp1f2 = mp.hyp1f2
  283. hyp2f1 = mp.hyp2f1
  284. hyp2f2 = mp.hyp2f2
  285. hyp2f0 = mp.hyp2f0
  286. hyp2f3 = mp.hyp2f3
  287. hyp3f2 = mp.hyp3f2
  288. hyperu = mp.hyperu
  289. hypercomb = mp.hypercomb
  290. meijerg = mp.meijerg
  291. appellf1 = mp.appellf1
  292. appellf2 = mp.appellf2
  293. appellf3 = mp.appellf3
  294. appellf4 = mp.appellf4
  295. hyper2d = mp.hyper2d
  296. bihyper = mp.bihyper
  297. erf = mp.erf
  298. erfc = mp.erfc
  299. erfi = mp.erfi
  300. erfinv = mp.erfinv
  301. npdf = mp.npdf
  302. ncdf = mp.ncdf
  303. expint = mp.expint
  304. e1 = mp.e1
  305. ei = mp.ei
  306. li = mp.li
  307. ci = mp.ci
  308. si = mp.si
  309. chi = mp.chi
  310. shi = mp.shi
  311. fresnels = mp.fresnels
  312. fresnelc = mp.fresnelc
  313. airyai = mp.airyai
  314. airybi = mp.airybi
  315. airyaizero = mp.airyaizero
  316. airybizero = mp.airybizero
  317. scorergi = mp.scorergi
  318. scorerhi = mp.scorerhi
  319. ellipk = mp.ellipk
  320. ellipe = mp.ellipe
  321. ellipf = mp.ellipf
  322. ellippi = mp.ellippi
  323. elliprc = mp.elliprc
  324. elliprj = mp.elliprj
  325. elliprf = mp.elliprf
  326. elliprd = mp.elliprd
  327. elliprg = mp.elliprg
  328. agm = mp.agm
  329. jacobi = mp.jacobi
  330. chebyt = mp.chebyt
  331. chebyu = mp.chebyu
  332. legendre = mp.legendre
  333. legenp = mp.legenp
  334. legenq = mp.legenq
  335. hermite = mp.hermite
  336. pcfd = mp.pcfd
  337. pcfu = mp.pcfu
  338. pcfv = mp.pcfv
  339. pcfw = mp.pcfw
  340. gegenbauer = mp.gegenbauer
  341. laguerre = mp.laguerre
  342. spherharm = mp.spherharm
  343. besselj = mp.besselj
  344. j0 = mp.j0
  345. j1 = mp.j1
  346. besseli = mp.besseli
  347. bessely = mp.bessely
  348. besselk = mp.besselk
  349. besseljzero = mp.besseljzero
  350. besselyzero = mp.besselyzero
  351. hankel1 = mp.hankel1
  352. hankel2 = mp.hankel2
  353. struveh = mp.struveh
  354. struvel = mp.struvel
  355. angerj = mp.angerj
  356. webere = mp.webere
  357. lommels1 = mp.lommels1
  358. lommels2 = mp.lommels2
  359. whitm = mp.whitm
  360. whitw = mp.whitw
  361. ber = mp.ber
  362. bei = mp.bei
  363. ker = mp.ker
  364. kei = mp.kei
  365. coulombc = mp.coulombc
  366. coulombf = mp.coulombf
  367. coulombg = mp.coulombg
  368. barnesg = mp.barnesg
  369. superfac = mp.superfac
  370. hyperfac = mp.hyperfac
  371. loggamma = mp.loggamma
  372. siegeltheta = mp.siegeltheta
  373. siegelz = mp.siegelz
  374. grampoint = mp.grampoint
  375. zetazero = mp.zetazero
  376. riemannr = mp.riemannr
  377. primepi = mp.primepi
  378. primepi2 = mp.primepi2
  379. primezeta = mp.primezeta
  380. bell = mp.bell
  381. polyexp = mp.polyexp
  382. expm1 = mp.expm1
  383. log1p = mp.log1p
  384. powm1 = mp.powm1
  385. unitroots = mp.unitroots
  386. cyclotomic = mp.cyclotomic
  387. mangoldt = mp.mangoldt
  388. secondzeta = mp.secondzeta
  389. nzeros = mp.nzeros
  390. backlunds = mp.backlunds
  391. lerchphi = mp.lerchphi
  392. stirling1 = mp.stirling1
  393. stirling2 = mp.stirling2
  394. squarew = mp.squarew
  395. trianglew = mp.trianglew
  396. sawtoothw = mp.sawtoothw
  397. unit_triangle = mp.unit_triangle
  398. sigmoid = mp.sigmoid
  399. # be careful when changing this name, don't use test*!
  400. def runtests():
  401. """
  402. Run all mpmath tests and print output.
  403. """
  404. import os.path
  405. from inspect import getsourcefile
  406. from .tests import runtests as tests
  407. testdir = os.path.dirname(os.path.abspath(getsourcefile(tests)))
  408. importdir = os.path.abspath(testdir + '/../..')
  409. tests.testit(importdir, testdir)
  410. def doctests(filter=[]):
  411. import sys
  412. from timeit import default_timer as clock
  413. for i, arg in enumerate(sys.argv):
  414. if '__init__.py' in arg:
  415. filter = [sn for sn in sys.argv[i+1:] if not sn.startswith("-")]
  416. break
  417. import doctest
  418. globs = globals().copy()
  419. for obj in globs: #sorted(globs.keys()):
  420. if filter:
  421. if not sum([pat in obj for pat in filter]):
  422. continue
  423. sys.stdout.write(str(obj) + " ")
  424. sys.stdout.flush()
  425. t1 = clock()
  426. doctest.run_docstring_examples(globs[obj], {}, verbose=("-v" in sys.argv))
  427. t2 = clock()
  428. print(round(t2-t1, 3))
  429. if __name__ == '__main__':
  430. doctests()