Version française

Test of Mathematical Functions of the Standard C Library

Some of the mathematical functions of the standard C library have been tested on worst cases for correct rounding in double precision. The following table gives the ratio or the number of incorrect roundings for various machines, in the rounding to nearest mode. If your browser has CSS 2 support, you can put the pointer over the machine name to have some information about the machine (you can also look at the details host by host). Greyed cells (or with brackets) contain a link to explanations below the table. This table is quite old (latest changes in 2005, 5 additions in 2006 and 2 in 2009), but this gives an idea about the problem.

Function exp log exp2 log2 exp10 log10 sinh asinh cosh acosh sin asin cos acos tan atan isq isqrt cube cbrt
Number of tests 2268 2813 1145 929 1668 1883 2215 2262 2026 1877 1611 1655 1576 1569 1706 1735 58 78 150 138
jules
49 % 43 % 52 % 46 % 49 % 100 % 50 % 41 % 100 % 49 % 100 % 83 % 100 % 100 % 55 % 51 %
laudomia5
greux
tate
dixsept
hermione
ble
spe186
49 % 43 % 48 % 45 % 52 % 46 % 49 % 52 % 50 % 41 % 51 % 49 % 49 % 83 % 52 % 50 % 55 % 51 % 53 % 43 %
vin (old)
49 % 43 % 48 % 45 % 52 % 46 % 52 % 52 % 50 % 41 % 51 % 49 % 49 % 83 % 52 % 50 % 55 % 51 % 53 % 43 %
spe152
49 % 43 % 46 % 51 % 49 % 46 % 49 % 51 % 50 % 49 % 50 % 52 % 50 % 53 % 51 % 51 % 58 %
spe143 (old)
49 % 43 % 46 % 51 % 82 % 46 % 86 % 51 % 51 % 49 % 95 % 52 % 50 % 53 % 51 %
spe143
49 % 43 % 46 % 51 % 50 % 46 % 50 % 51 % 51 % 49 % 95 % 52 % 50 % 53 % 51 % 51 % 58 %
lepuid
lucrezia
courge
49 % 43 % 48 % 44 % 52 % 47 % 49 % 51 % 50 % 41 % 51 % 49 % 49 % 83 % 52 % 50 % 55 % 51 % 53 % 43 %
l.ldh.org
49 % 42 % 48 % 44 % 52 % 48 % 49 % 50 % 50 % 41 % 51 % 49 % 49 % 83 % 51 % 50 % 55 % 51 % 53 % 43 %
prunille (macosx)
49 % 31 % 46 % 29 % 41 % 50 % 50 % 50 % 49 % 49 % 48 % 44 % 50 % 46 % 44 % 41 % 50 % 47 % 58 %
zaurus
49 % 30 % 70 % 48 % 51 % 50 % 46 % 48 % 49 % 48 % 45 % 30 % 51 % 51 % 53 % 51 %
spe153
spe158
49 % 30 % 51 % 50 % 51 % 50 % 46 % 48 % 49 % 48 % 45 % 30 % 51 % 51 % 53 % 51 %
spe149 (old)
spe149
50 % 30 % 48 % 51 % 50 % 47 % 48 % 49 % 47 % 45 % 29 % 51 % 51 % 53 % 51 %
spe192
spe191
50 % 31 % 50 % 47 % 50 % 49 % 54 % 50 % 48 % 49 % 49 % 50 % 50 % 45 % 45 % 43 % 57 %
ange
50 % 31 % 51 % 48 % 51 % 48 % 53 % 49 % 48 % 51 % 49 % 49 % 50 % 55 % 60 % 49 % 58 %
spe145
51 % 31 % 47 % 42 % 44 % 47 % 47 % 45 % 51 % 51 % 47 % 50 % 41 % 49 % 46 % 48 % 55 % 45 % 51 %
jean
51 % 31 % 44 % 47 % 47 % 45 % 51 % 51 % 47 % 50 % 41 % 49 % 46 % 48 % 55 %
eleonore
51 % 31 % 44 % 47 % 47 % 45 % 51 % 51 % 47 % 50 % 41 % 49 % 46 % 48 % 55 % 45 % 51 %
leon1
cosimo
ginevra
spe206
51 % 31 % 44 % 47 % 46 % 45 % 50 % 51 % 47 % 50 % 41 % 49 % 46 % 48 % 55 % 45 % 51 %
spe171
51 % 31 % 47 % 42 % 44 % 47 % 46 % 45 % 50 % 51 % 47 % 50 % 41 % 49 % 46 % 48 % 55 % 45 % 51 %
marie (libc232)
50 % 30 % 46 % 38 % 50 % 42 % 50 % 50 % 46 % 49 % 48 % 47 % 48 % 29 % 50 % 45 % 48 % 47 %
spe190
50 % 30 % 46 % 38 % 50 % 42 % 50 % 50 % 47 % 49 % 48 % 47 % 48 % 29 % 50 % 45 % 48 % 47 % 49 % 62 %
spe166
49 % 30 % 52 % 50 % 51 % 50 % 46 % 48 % 49 % 47 % 45 % 28 % 50 % 51 % 53 % 51 %
spe156
43 % 52 % 52 % 50 % 66 % 46 % 49 % 50 % 40 % 49 % 51 % 50 % 50 % 41 % 46 % 46 % 55 % 54 % 48 % 46 %
spe176 (old)
47 % 43 % 46 % 46 % 47 % 49 % 46 % 44 % 52 % 49 % 50 % 39 % 49 % 41 % 59 % 49 %
spe176
47 % 43 % 46 % 46 % 44 % 49 % 38 % 44 % 52 % 49 % 50 % 39 % 49 % 41 % 59 % 49 % 45 % 43 %
bar
craffe
50 % 30 % 47 % 49 % 51 % 48 % 50 % 50 % 46 % 49 % 49 % 47 % 50 % 29 % 51 % 50 % 57 % 53 % 40 % 58 %
riscpc
42 % 34 % 66 % 45 % 80 % 50 % 48 % 49 % 47 % 50 % 50 % 37 % 50 % 44 % 59 % 59 %
iyonix
42 % 34 % 51 % 50 % 66 % 45 % 80 % 50 % 48 % 49 % 47 % 50 % 50 % 37 % 50 % 44 % 59 % 59 %
spe170
0 0 51 % 50 % 66 % 47 % 45 % 50 % 45 % 49 % 0 0 17 % 0 0 0 0 0 62 %
lepois
0 0 51 % 50 % 66 % 47 % 45 % 50 % 45 % 49 % 0 0 17 % 0 0 0
lepois (sid)
julien1
0 0 51 % 50 % 66 % 47 % 45 % 50 % 45 % 49 % 0 0 0 17 % 0 0 0
madeleine1
doubleeagle
0 0 51 % 50 % 66 % 47 % 45 % 50 % 45 % 49 % 0 0 0 17 % 0 0 0 0 62 %
marie (libc233)
spe189
helene
vin
n810
0 0 51 % 50 % 66 % 47 % 45 % 50 % 45 % 49 % 0 0 0 17 % 0 0 0 0 0 62 %
ay (libc236)
0 0 52 % 50 % 66 % 47 % 45 % 50 % 45 % 49 % 0 0 0 17 % 0 0 0 0 0 62 %
ay (libc235)
0 0 52 % 50 % 66 % 48 % 45 % 50 % 45 % 49 % 0 0 0 17 % 0 0 0 0 0 62 %
ay (libc232)
doublejack
0 52 % 50 % 66 % 48 % 45 % 50 % 45 % 49 % 0 0 0 17 % 0 0 0 0 0 62 %

More recent results:

Function exp log expm1 log1p exp2 log2 exp10 log10 sinh asinh cosh acosh tanh atanh sin asin cos acos tan atan isq isqrt cube cbrt
Number of tests 2268 2813 7578 7550 1145 929 1668 1883 2215 2262 2026 1877 1852 1552 1611 1655 1576 1569 1706 1735 58 78 150 138
unstable9x
49 % 43 % 50 % 52 % 48 % 44 % 52 % 47 % 51 % 50 % 49 % 50 % 52 % 51 % 51 % 49 % 49 % 40 % 52 % 50 % 53 % 51 % 49 % 49 %
unstable10x
49 % 43 % 50 % 52 % 48 % 44 % 52 % 47 % 51 % 50 % 49 % 48 % 52 % 51 % 51 % 49 % 49 % 40 % 52 % 50 % 53 % 51 % 49 % 49 %
gcc302
49 % 43 % 44 % 52 % 48 % 50 % 46 % 51 % 50 % 46 % 49 % 50 % 51 % 51 % 49 % 49 % 83 % 52 % 50 % 53 % 47 % 51 % 58 %
gcc300
49 % 43 % 44 % 52 % 48 % 45 % 46 % 51 % 50 % 46 % 49 % 50 % 51 % 49 % 49 % 45 % 83 % 51 % 50 % 53 % 51 % 51 % 58 %
gcc303
50 % 30 % 44 % 48 % 48 % 37 % 42 % 51 % 50 % 47 % 48 % 50 % 51 % 49 % 47 % 44 % 29 % 51 % 51 % 53 % 47 % 51 % 56 %
gcc304
48 % 31 % 47 % 49 % 49 % 30 % 40 % 48 % 50 % 45 % 49 % 46 % 50 % 49 % 52 % 43 % 47 % 51 % 52 % 53 % 63 % 41 % 47 %
unstable11s
unstable11x
50 % 31 % 44 % 48 % 47 % 51 % 51 % 49 % 50 % 50 % 46 % 49 % 50 % 50 % 49 % 47 % 48 % 29 % 50 % 48 % 57 % 53 % 40 % 43 %
unstable9s
50 % 30 % 44 % 48 % 47 % 50 % 51 % 48 % 50 % 50 % 46 % 49 % 50 % 50 % 49 % 47 % 50 % 29 % 51 % 50 % 57 % 53 % 40 % 43 %
unstable10s
50 % 30 % 44 % 48 % 47 % 49 % 51 % 48 % 50 % 50 % 46 % 49 % 50 % 50 % 49 % 47 % 47 % 29 % 50 % 48 % 57 % 53 % 40 % 43 %
gcc119
49 % 31 % 43 % 51 % 0 0 41 % 50 % 50 % 46 % 54 % 50 % 50 % 49 % 48 % 44 % 25 % 46 % 44 % 52 % 53 % 50 % 58 %
gcc185
51 % 29 % 44 % 48 % 52 % 50 % 50 % 47 % 51 % 50 % 46 % 49 % 50 % 51 % 47 % 0 44 % 17 % 0 0 47 % 50 % 53 % 62 %
joooj
51 % 29 % 44 % 48 % 51 % 50 % 50 % 47 % 51 % 50 % 46 % 49 % 50 % 51 % 47 % 0 44 % 17 % 0 0 47 % 50 % 53 % 62 %
gcc24
50 % 29 % 44 % 48 % 51 % 50 % 50 % 47 % 51 % 50 % 46 % 49 % 50 % 51 % 47 % 0 44 % 17 % 0 0 50 % 44 % 55 % 62 %
cventin (libc 2.34)
50 % 28 % 44 % 48 % 49 % 37 % 50 % 47 % 51 % 50 % 47 % 49 % 50 % 51 % 47 % 52 % 44 % 29 % 46 % 44 % 60 % 46 % 47 % 62 %
cventin (libc 2.31)
50 % 28 % 44 % 48 % 49 % 37 % 50 % 47 % 51 % 50 % 47 % 49 % 50 % 51 % 47 % 0 44 % 17 % 0 0 60 % 46 % 47 % 62 %
gcc202
49 % 27 % 44 % 48 % 49 % 37 % 50 % 47 % 51 % 50 % 47 % 49 % 50 % 51 % 47 % 0 44 % 17 % 0 0 50 % 42 % 51 % 62 %
gcc115
0 26 % 44 % 48 % 52 % 50 % 50 % 47 % 45 % 50 % 45 % 49 % 50 % 51 % 0 0 0 17 % 0 2 % 0 0 32 % 62 %
gcc110
gcc112
gcc135
22 26 % 44 % 48 % 52 % 50 % 50 % 47 % 45 % 50 % 45 % 49 % 50 % 51 % 0 0 0 17 % 0 2 % 0 0 0 62 %
gcc12
0 0 44 % 48 % 66 % 47 % 45 % 50 % 45 % 49 % 50 % 51 % 0 0 0 17 % 0 0 0 0 0 62 %
gcc118
0 0 44 % 48 % 52 % 50 % 50 % 47 % 45 % 50 % 45 % 49 % 50 % 51 % 0 0 0 17 % 0 0 0 0 0 62 %
gcc70
0 0 44 % 48 % 51 % 50 % 50 % 47 % 45 % 50 % 45 % 49 % 50 % 51 % 0 0 0 17 % 0 0 0 0 0 62 %

Notes:

Distribution:

My publications:

The search for worst cases for the tests above (except precomputations and postcomputations) required 49130 hours of computation on a cluster of the Centre Charles Hermite (8 biprocessor machines), 42129 hours on machines of the Laboratoire de l'Informatique du Parallélisme (ENS de Lyon, France), 9333 hours on machines of the MEDICIS computation center, and 5767 hours on machines of the Loria, in the 2000s.

This page deals with correct rounding only. For error analysis of the mathematical functions, you can look at Gaston H. Gonnet's page or at MPCHECK (by Paul Zimmermann and Nathalie Revol).



webmaster@vinc17.org