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()
|