Skip to content

Latest commit

 

History

History

results

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Accuracy of provided algorithms

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