469 lines
8.6 KiB
Python
469 lines
8.6 KiB
Python
__version__ = '1.3.0'
|
|
|
|
from .usertools import monitor, timing
|
|
|
|
from .ctx_fp import FPContext
|
|
from .ctx_mp import MPContext
|
|
from .ctx_iv import MPIntervalContext
|
|
|
|
fp = FPContext()
|
|
mp = MPContext()
|
|
iv = MPIntervalContext()
|
|
|
|
fp._mp = mp
|
|
mp._mp = mp
|
|
iv._mp = mp
|
|
mp._fp = fp
|
|
fp._fp = fp
|
|
mp._iv = iv
|
|
fp._iv = iv
|
|
iv._iv = iv
|
|
|
|
# XXX: extremely bad pickle hack
|
|
from . import ctx_mp as _ctx_mp
|
|
_ctx_mp._mpf_module.mpf = mp.mpf
|
|
_ctx_mp._mpf_module.mpc = mp.mpc
|
|
|
|
make_mpf = mp.make_mpf
|
|
make_mpc = mp.make_mpc
|
|
|
|
extraprec = mp.extraprec
|
|
extradps = mp.extradps
|
|
workprec = mp.workprec
|
|
workdps = mp.workdps
|
|
autoprec = mp.autoprec
|
|
maxcalls = mp.maxcalls
|
|
memoize = mp.memoize
|
|
|
|
mag = mp.mag
|
|
|
|
bernfrac = mp.bernfrac
|
|
|
|
qfrom = mp.qfrom
|
|
mfrom = mp.mfrom
|
|
kfrom = mp.kfrom
|
|
taufrom = mp.taufrom
|
|
qbarfrom = mp.qbarfrom
|
|
ellipfun = mp.ellipfun
|
|
jtheta = mp.jtheta
|
|
kleinj = mp.kleinj
|
|
eta = mp.eta
|
|
|
|
qp = mp.qp
|
|
qhyper = mp.qhyper
|
|
qgamma = mp.qgamma
|
|
qfac = mp.qfac
|
|
|
|
nint_distance = mp.nint_distance
|
|
|
|
plot = mp.plot
|
|
cplot = mp.cplot
|
|
splot = mp.splot
|
|
|
|
odefun = mp.odefun
|
|
|
|
jacobian = mp.jacobian
|
|
findroot = mp.findroot
|
|
multiplicity = mp.multiplicity
|
|
|
|
isinf = mp.isinf
|
|
isnan = mp.isnan
|
|
isnormal = mp.isnormal
|
|
isint = mp.isint
|
|
isfinite = mp.isfinite
|
|
almosteq = mp.almosteq
|
|
nan = mp.nan
|
|
rand = mp.rand
|
|
|
|
absmin = mp.absmin
|
|
absmax = mp.absmax
|
|
|
|
fraction = mp.fraction
|
|
|
|
linspace = mp.linspace
|
|
arange = mp.arange
|
|
|
|
mpmathify = convert = mp.convert
|
|
mpc = mp.mpc
|
|
|
|
mpi = iv._mpi
|
|
|
|
nstr = mp.nstr
|
|
nprint = mp.nprint
|
|
chop = mp.chop
|
|
|
|
fneg = mp.fneg
|
|
fadd = mp.fadd
|
|
fsub = mp.fsub
|
|
fmul = mp.fmul
|
|
fdiv = mp.fdiv
|
|
fprod = mp.fprod
|
|
|
|
quad = mp.quad
|
|
quadgl = mp.quadgl
|
|
quadts = mp.quadts
|
|
quadosc = mp.quadosc
|
|
quadsubdiv = mp.quadsubdiv
|
|
|
|
invertlaplace = mp.invertlaplace
|
|
invlaptalbot = mp.invlaptalbot
|
|
invlapstehfest = mp.invlapstehfest
|
|
invlapdehoog = mp.invlapdehoog
|
|
|
|
pslq = mp.pslq
|
|
identify = mp.identify
|
|
findpoly = mp.findpoly
|
|
|
|
richardson = mp.richardson
|
|
shanks = mp.shanks
|
|
levin = mp.levin
|
|
cohen_alt = mp.cohen_alt
|
|
nsum = mp.nsum
|
|
nprod = mp.nprod
|
|
difference = mp.difference
|
|
diff = mp.diff
|
|
diffs = mp.diffs
|
|
diffs_prod = mp.diffs_prod
|
|
diffs_exp = mp.diffs_exp
|
|
diffun = mp.diffun
|
|
differint = mp.differint
|
|
taylor = mp.taylor
|
|
pade = mp.pade
|
|
polyval = mp.polyval
|
|
polyroots = mp.polyroots
|
|
fourier = mp.fourier
|
|
fourierval = mp.fourierval
|
|
sumem = mp.sumem
|
|
sumap = mp.sumap
|
|
chebyfit = mp.chebyfit
|
|
limit = mp.limit
|
|
|
|
matrix = mp.matrix
|
|
eye = mp.eye
|
|
diag = mp.diag
|
|
zeros = mp.zeros
|
|
ones = mp.ones
|
|
hilbert = mp.hilbert
|
|
randmatrix = mp.randmatrix
|
|
swap_row = mp.swap_row
|
|
extend = mp.extend
|
|
norm = mp.norm
|
|
mnorm = mp.mnorm
|
|
|
|
lu_solve = mp.lu_solve
|
|
lu = mp.lu
|
|
qr = mp.qr
|
|
unitvector = mp.unitvector
|
|
inverse = mp.inverse
|
|
residual = mp.residual
|
|
qr_solve = mp.qr_solve
|
|
cholesky = mp.cholesky
|
|
cholesky_solve = mp.cholesky_solve
|
|
det = mp.det
|
|
cond = mp.cond
|
|
hessenberg = mp.hessenberg
|
|
schur = mp.schur
|
|
eig = mp.eig
|
|
eig_sort = mp.eig_sort
|
|
eigsy = mp.eigsy
|
|
eighe = mp.eighe
|
|
eigh = mp.eigh
|
|
svd_r = mp.svd_r
|
|
svd_c = mp.svd_c
|
|
svd = mp.svd
|
|
gauss_quadrature = mp.gauss_quadrature
|
|
|
|
expm = mp.expm
|
|
sqrtm = mp.sqrtm
|
|
powm = mp.powm
|
|
logm = mp.logm
|
|
sinm = mp.sinm
|
|
cosm = mp.cosm
|
|
|
|
mpf = mp.mpf
|
|
j = mp.j
|
|
exp = mp.exp
|
|
expj = mp.expj
|
|
expjpi = mp.expjpi
|
|
ln = mp.ln
|
|
im = mp.im
|
|
re = mp.re
|
|
inf = mp.inf
|
|
ninf = mp.ninf
|
|
sign = mp.sign
|
|
|
|
eps = mp.eps
|
|
pi = mp.pi
|
|
ln2 = mp.ln2
|
|
ln10 = mp.ln10
|
|
phi = mp.phi
|
|
e = mp.e
|
|
euler = mp.euler
|
|
catalan = mp.catalan
|
|
khinchin = mp.khinchin
|
|
glaisher = mp.glaisher
|
|
apery = mp.apery
|
|
degree = mp.degree
|
|
twinprime = mp.twinprime
|
|
mertens = mp.mertens
|
|
|
|
ldexp = mp.ldexp
|
|
frexp = mp.frexp
|
|
|
|
fsum = mp.fsum
|
|
fdot = mp.fdot
|
|
|
|
sqrt = mp.sqrt
|
|
cbrt = mp.cbrt
|
|
exp = mp.exp
|
|
ln = mp.ln
|
|
log = mp.log
|
|
log10 = mp.log10
|
|
power = mp.power
|
|
cos = mp.cos
|
|
sin = mp.sin
|
|
tan = mp.tan
|
|
cosh = mp.cosh
|
|
sinh = mp.sinh
|
|
tanh = mp.tanh
|
|
acos = mp.acos
|
|
asin = mp.asin
|
|
atan = mp.atan
|
|
asinh = mp.asinh
|
|
acosh = mp.acosh
|
|
atanh = mp.atanh
|
|
sec = mp.sec
|
|
csc = mp.csc
|
|
cot = mp.cot
|
|
sech = mp.sech
|
|
csch = mp.csch
|
|
coth = mp.coth
|
|
asec = mp.asec
|
|
acsc = mp.acsc
|
|
acot = mp.acot
|
|
asech = mp.asech
|
|
acsch = mp.acsch
|
|
acoth = mp.acoth
|
|
cospi = mp.cospi
|
|
sinpi = mp.sinpi
|
|
sinc = mp.sinc
|
|
sincpi = mp.sincpi
|
|
cos_sin = mp.cos_sin
|
|
cospi_sinpi = mp.cospi_sinpi
|
|
fabs = mp.fabs
|
|
re = mp.re
|
|
im = mp.im
|
|
conj = mp.conj
|
|
floor = mp.floor
|
|
ceil = mp.ceil
|
|
nint = mp.nint
|
|
frac = mp.frac
|
|
root = mp.root
|
|
nthroot = mp.nthroot
|
|
hypot = mp.hypot
|
|
fmod = mp.fmod
|
|
ldexp = mp.ldexp
|
|
frexp = mp.frexp
|
|
sign = mp.sign
|
|
arg = mp.arg
|
|
phase = mp.phase
|
|
polar = mp.polar
|
|
rect = mp.rect
|
|
degrees = mp.degrees
|
|
radians = mp.radians
|
|
atan2 = mp.atan2
|
|
fib = mp.fib
|
|
fibonacci = mp.fibonacci
|
|
lambertw = mp.lambertw
|
|
zeta = mp.zeta
|
|
altzeta = mp.altzeta
|
|
gamma = mp.gamma
|
|
rgamma = mp.rgamma
|
|
factorial = mp.factorial
|
|
fac = mp.fac
|
|
fac2 = mp.fac2
|
|
beta = mp.beta
|
|
betainc = mp.betainc
|
|
psi = mp.psi
|
|
#psi0 = mp.psi0
|
|
#psi1 = mp.psi1
|
|
#psi2 = mp.psi2
|
|
#psi3 = mp.psi3
|
|
polygamma = mp.polygamma
|
|
digamma = mp.digamma
|
|
#trigamma = mp.trigamma
|
|
#tetragamma = mp.tetragamma
|
|
#pentagamma = mp.pentagamma
|
|
harmonic = mp.harmonic
|
|
bernoulli = mp.bernoulli
|
|
bernfrac = mp.bernfrac
|
|
stieltjes = mp.stieltjes
|
|
hurwitz = mp.hurwitz
|
|
dirichlet = mp.dirichlet
|
|
bernpoly = mp.bernpoly
|
|
eulerpoly = mp.eulerpoly
|
|
eulernum = mp.eulernum
|
|
polylog = mp.polylog
|
|
clsin = mp.clsin
|
|
clcos = mp.clcos
|
|
gammainc = mp.gammainc
|
|
gammaprod = mp.gammaprod
|
|
binomial = mp.binomial
|
|
rf = mp.rf
|
|
ff = mp.ff
|
|
hyper = mp.hyper
|
|
hyp0f1 = mp.hyp0f1
|
|
hyp1f1 = mp.hyp1f1
|
|
hyp1f2 = mp.hyp1f2
|
|
hyp2f1 = mp.hyp2f1
|
|
hyp2f2 = mp.hyp2f2
|
|
hyp2f0 = mp.hyp2f0
|
|
hyp2f3 = mp.hyp2f3
|
|
hyp3f2 = mp.hyp3f2
|
|
hyperu = mp.hyperu
|
|
hypercomb = mp.hypercomb
|
|
meijerg = mp.meijerg
|
|
appellf1 = mp.appellf1
|
|
appellf2 = mp.appellf2
|
|
appellf3 = mp.appellf3
|
|
appellf4 = mp.appellf4
|
|
hyper2d = mp.hyper2d
|
|
bihyper = mp.bihyper
|
|
erf = mp.erf
|
|
erfc = mp.erfc
|
|
erfi = mp.erfi
|
|
erfinv = mp.erfinv
|
|
npdf = mp.npdf
|
|
ncdf = mp.ncdf
|
|
expint = mp.expint
|
|
e1 = mp.e1
|
|
ei = mp.ei
|
|
li = mp.li
|
|
ci = mp.ci
|
|
si = mp.si
|
|
chi = mp.chi
|
|
shi = mp.shi
|
|
fresnels = mp.fresnels
|
|
fresnelc = mp.fresnelc
|
|
airyai = mp.airyai
|
|
airybi = mp.airybi
|
|
airyaizero = mp.airyaizero
|
|
airybizero = mp.airybizero
|
|
scorergi = mp.scorergi
|
|
scorerhi = mp.scorerhi
|
|
ellipk = mp.ellipk
|
|
ellipe = mp.ellipe
|
|
ellipf = mp.ellipf
|
|
ellippi = mp.ellippi
|
|
elliprc = mp.elliprc
|
|
elliprj = mp.elliprj
|
|
elliprf = mp.elliprf
|
|
elliprd = mp.elliprd
|
|
elliprg = mp.elliprg
|
|
agm = mp.agm
|
|
jacobi = mp.jacobi
|
|
chebyt = mp.chebyt
|
|
chebyu = mp.chebyu
|
|
legendre = mp.legendre
|
|
legenp = mp.legenp
|
|
legenq = mp.legenq
|
|
hermite = mp.hermite
|
|
pcfd = mp.pcfd
|
|
pcfu = mp.pcfu
|
|
pcfv = mp.pcfv
|
|
pcfw = mp.pcfw
|
|
gegenbauer = mp.gegenbauer
|
|
laguerre = mp.laguerre
|
|
spherharm = mp.spherharm
|
|
besselj = mp.besselj
|
|
j0 = mp.j0
|
|
j1 = mp.j1
|
|
besseli = mp.besseli
|
|
bessely = mp.bessely
|
|
besselk = mp.besselk
|
|
besseljzero = mp.besseljzero
|
|
besselyzero = mp.besselyzero
|
|
hankel1 = mp.hankel1
|
|
hankel2 = mp.hankel2
|
|
struveh = mp.struveh
|
|
struvel = mp.struvel
|
|
angerj = mp.angerj
|
|
webere = mp.webere
|
|
lommels1 = mp.lommels1
|
|
lommels2 = mp.lommels2
|
|
whitm = mp.whitm
|
|
whitw = mp.whitw
|
|
ber = mp.ber
|
|
bei = mp.bei
|
|
ker = mp.ker
|
|
kei = mp.kei
|
|
coulombc = mp.coulombc
|
|
coulombf = mp.coulombf
|
|
coulombg = mp.coulombg
|
|
barnesg = mp.barnesg
|
|
superfac = mp.superfac
|
|
hyperfac = mp.hyperfac
|
|
loggamma = mp.loggamma
|
|
siegeltheta = mp.siegeltheta
|
|
siegelz = mp.siegelz
|
|
grampoint = mp.grampoint
|
|
zetazero = mp.zetazero
|
|
riemannr = mp.riemannr
|
|
primepi = mp.primepi
|
|
primepi2 = mp.primepi2
|
|
primezeta = mp.primezeta
|
|
bell = mp.bell
|
|
polyexp = mp.polyexp
|
|
expm1 = mp.expm1
|
|
log1p = mp.log1p
|
|
powm1 = mp.powm1
|
|
unitroots = mp.unitroots
|
|
cyclotomic = mp.cyclotomic
|
|
mangoldt = mp.mangoldt
|
|
secondzeta = mp.secondzeta
|
|
nzeros = mp.nzeros
|
|
backlunds = mp.backlunds
|
|
lerchphi = mp.lerchphi
|
|
stirling1 = mp.stirling1
|
|
stirling2 = mp.stirling2
|
|
squarew = mp.squarew
|
|
trianglew = mp.trianglew
|
|
sawtoothw = mp.sawtoothw
|
|
unit_triangle = mp.unit_triangle
|
|
sigmoid = mp.sigmoid
|
|
|
|
# be careful when changing this name, don't use test*!
|
|
def runtests():
|
|
"""
|
|
Run all mpmath tests and print output.
|
|
"""
|
|
import os.path
|
|
from inspect import getsourcefile
|
|
from .tests import runtests as tests
|
|
testdir = os.path.dirname(os.path.abspath(getsourcefile(tests)))
|
|
importdir = os.path.abspath(testdir + '/../..')
|
|
tests.testit(importdir, testdir)
|
|
|
|
def doctests(filter=[]):
|
|
import sys
|
|
from timeit import default_timer as clock
|
|
for i, arg in enumerate(sys.argv):
|
|
if '__init__.py' in arg:
|
|
filter = [sn for sn in sys.argv[i+1:] if not sn.startswith("-")]
|
|
break
|
|
import doctest
|
|
globs = globals().copy()
|
|
for obj in globs: #sorted(globs.keys()):
|
|
if filter:
|
|
if not sum([pat in obj for pat in filter]):
|
|
continue
|
|
sys.stdout.write(str(obj) + " ")
|
|
sys.stdout.flush()
|
|
t1 = clock()
|
|
doctest.run_docstring_examples(globs[obj], {}, verbose=("-v" in sys.argv))
|
|
t2 = clock()
|
|
print(round(t2-t1, 3))
|
|
|
|
if __name__ == '__main__':
|
|
doctests()
|