This file is generated using estimate_accuracy.py. Do not edit!
The reference values are obtained by evaluating MPMath functions using multi-precision arithmetic.
The following table shows the counts of samples that produce function values being
-
different from expected values by the given ULP difference (dULP):
ulp_diff(func(sample), reference(sample)) == dULP
-
out of the reference values ulp-range:
not (lower <= func(sample) <= upper) lower = minimal(reference(s) for s in surrounding(sample) if diff_ulp(s, sample) <= ulp_width) upper = maximal(reference(s) for s in surrounding(sample) if diff_ulp(s, sample) <= ulp_width)
When a counts value is attributed with a superscript, this indicates
the number of samples that lead to out-of-ulp-range results. When dULP
<= 3, out-of-ulp-range counts are acceptable as it typically indicates
that reference function is not sensitive to input perturbations, that
is, lower == reference(sample) == upper
holds. On the other hand,
when the out-of-ulp-range counts is zero, dULP > 3 counts are
acceptable as it indicates that function's variability is very high
with respect to minimal variations in its input.
When ulp_width
is specified, its value is indicated as a superscript
in function name. Notice the specified ulp_width
is not the upper
limit in general: there may exist function-function dependent regions
in complex plane where ulp_width
needs to be larger to pass the
"out-of-ulp-range counts is zero" test.
Finally,
- "using native " means "using the corresponding numpy ",
- "using upcast " means that the function arguments are upcasted to a dtype with bits doubled, and the function results are downcasted to a dtype with bits split half.
Function | dtype | dULP=0 (exact) | dULP=1 | dULP=2 | dULP=3 | dULP>3 | Notes |
---|---|---|---|---|---|---|---|
absolute | complex64 | 967745 | 33704 | 552 | - | - | - |
absolute2 | complex64 | 962177 | 39264 | 552 | - | 8 | using native absolute |
absolute | complex128 | 991861 | 9996 | 144 | - | - | - |
acos | float32 | 961608 | 38291 | 99 | 3 | - | - |
acos2 | float32 | 961878 | 38119 | 4 | - | - | using native acos |
acos | float64 | 992599 | 7396 | 6 | - | - | - |
acos | complex64 | 810406 | 190999 | 588 | 8 | - | - |
acos2 | complex64 | 678274 | 323467 | 260 | - | - | using native acos |
acos | complex128 | 750619 | 251104 | 278 | - | - | - |
acosh | float32 | 988269 | 11704 | 28 | - | - | - |
acosh2 | float32 | 999248 | 753 | - | - | - | using native acosh |
acosh | float64 | 946280 | 53715 | 6 | - | - | - |
acosh | complex64 | 810406 | 190999 | 588 | 8 | - | - |
acosh2 | complex64 | 678274 | 323467 | 260 | - | - | using native acosh |
acosh | complex128 | 750619 | 251104 | 278 | - | - | - |
asin | float32 | 974679 | 24368 | 942 | 12 | - | - |
asin2 | float32 | 996779 | 3010 | 212 | - | - | using native asin |
asin | float64 | 995203 | 4772 | 26 | - | - | - |
asin | complex64 | 808231 | 192742 | 996 | 32 | - | - |
asin2 | complex64 | 806919 | 194826 | 252 | 4 | - | using native asin |
asin | complex128 | 750491 | 250830 | 680 | - | - | - |
asinh | float32 | 916129 | 83790 | 82 | - | - | - |
asinh2 | float32 | 999111 | 890 | - | - | - | using native asinh |
asinh | float64 | 825119 | 174798 | 84 | - | - | - |
asinh | complex64 | 808231 | 192742 | 996 | 32 | - | - |
asinh2 | complex64 | 806919 | 194826 | 252 | 4 | - | using native asinh |
asinh | complex128 | 750491 | 250830 | 680 | - | - | - |
atan | complex64 | 851639 | 145498 | 4780 | 84 | - | - |
atan2 | complex64 | 902789 | 97576 | 1636 | - | - | using native atan |
atan | complex128 | 936441 | 65256 | 304 | - | - | - |
atanh | complex64 | 851639 | 145498 | 4780 | 84 | - | - |
atanh2 | complex64 | 902789 | 97576 | 1636 | - | - | using native atanh |
atanh | complex128 | 936441 | 65256 | 304 | - | - | - |
square | float32 | 997347 | 2654 | - | - | - | - |
square2 | float32 | 997347 | 2654 | - | - | - | using native square |
square | float64 | 999553 | 448 | - | - | - | - |
square | complex64 | 976865 | 25136 | - | - | - | - |
square2 | complex64 | 940181 | 28836 | 16 | - | 32968 | using native square |
square | complex128 | 995705 | 6296 | - | - | - | - |
sqrt | float32 | 1000001 | - | - | - | - | using native sqrt |
sqrt | complex64 | 639573 | 362328 | 100 | - | - | using native sqrt |
angle | complex64 | 940289 | 61332 | 376 | 4 | - | - |
angle | complex128 | 989787 | 12214 | - | - | - | - |
log1p1 | complex64 | 902529 | 9759248500 | 15861172 | 10428 | 19022!! | - |
log1p2 | complex64 | 902529 | 9759242692 | 158678 | 1046 | 1902!! | - |
log1p3 | complex64 | 902529 | 9759241452 | 158644 | 104 | 190 | - |
log1p1 | complex64 | 698489 | 6170650263 | 24371108 | 15191505 | 237850237612!! | using native log1p |
log1p2[using={'native log1p'}] | complex64 | 698489 | 6170649384 | 243748 | 1519984 | 237850237376!! | using native log1p |
log1p3[using={'native log1p'}] | complex64 | 698489 | 6170649206 | 24378 | 151936 | 237850235730!! | using native log1p |
log1p1 | complex128 | 850341 | 151568139004 | 868 | 4 | 2 | - |
tan | float32 | 866723 | 132062 | 1168 | 48 | - | using native tan |
tan2 | float32 | 1000001 | - | - | - | - | using upcast tan, native tan |
real_naive_tan | float32 | 819251 | 179168 | 1580 | 2 | - | - |
real_naive_tan2 | float32 | 825895 | 173622 | 484 | - | - | using upcast sin, upcast cos |
real_naive_tan3 | float32 | 1000001 | - | - | - | - | using upcast sin, upcast cos, upcast divide |
tan | complex64 | 783819 | 197524 | 19806 | 792 | 60 | using native tan |
tan2 | complex64 | 1001409 | 592 | - | - | - | using upcast tan, native tan |
tanh | float32 | 985109 | 14892 | - | - | - | using native tanh |
tanh2 | float32 | 1000001 | - | - | - | - | using native tanh, upcast tanh |
tanh | complex64 | 783819 | 197524 | 19806 | 792 | 60 | using native tanh |
tanh2 | complex64 | 1001409 | 592 | - | - | - | using native tanh, upcast tanh |