DoubleFloats Accuracy Report

Generated by docs/reports/accuracies.jl on Julia 1.13.0-DEV.1123.

This report samples a representative subset; it does not cover all available functions.

Double64

Errors are measured against a 512-bit BigFloat reference in units of the Double64 working precision, 1 ulp = 2⁻¹⁰⁴ (about 4.9e-32) relative. A worst case of about 1 ulp means the function is as accurate as the format allows.

Exponentials and Logarithms

functiondomainsamplesmedian (ulps)worst (ulps)
exp(-100, 100)2500.160.60
exp(-660, -600)2500.020.12
expm1(-1, 1)2500.110.70
log(0, 100)2500.060.32
log1 ± 2⁻³¹2500.051.04
log1p(-1, 1)2500.050.90
log2(0, 100)2500.080.49
log10(0, 100)2500.671.02

Trigonometric Functions

functiondomainsamplesmedian (ulps)worst (ulps)
sin(-100, 100)2500.020.23
cos(-100, 100)2500.020.22
tan(-1, 1)2500.140.85
sinnear π/22500.030.23
cosnear π/22500.070.48
cosnear π2500.020.19

Inverse Trigonometric Functions

functiondomainsamplesmedian (ulps)worst (ulps)
asin(-1, 1)2500.020.12
acos(-1, 1)2500.020.12
atan(-100, 100)2500.030.42

Hyperbolic and Inverse Hyperbolic Functions

functiondomainsamplesmedian (ulps)worst (ulps)
sinh(-300, 300)2500.170.96
cosh(-100, 100)2500.130.72
tanh(-1, 1)2500.131.16
asinh(-100, 100)2500.070.37
asinh±2⁻⁴⁰2500.080.91
acosh(1, 101)2500.070.32
acosh1 + ε2500.121.09
atanh(-1, 1)2500.060.90
atanh±2⁻⁴⁰2500.000.99

Special Functions

erf, erfc, and gamma are computed via Float128; its 113-bit significand caps their accuracy at roughly half an ulp of Double64.

functiondomainsamplesmedian (ulps)worst (ulps)
erf(-1, 1)2500.020.11
erfc(-1, 1)2500.020.11
gamma(0.1, 10)2500.020.11
ellipk(0, 1)2500.110.70
ellipk1 - 2⁻²⁰⁻⁵⁰2500.160.93

Matrix Functions (identity residuals)

Matrix routines are checked through their defining identities on random matrices, normalized per matrix dimension. An unavailable row identifies a routine that cannot currently execute for that precision.

identitysizesamplesmedian (ulps)worst (ulps)
eigen residual ‖AV−VΛ‖8×8250.380.88
exp∘log roundtrip8×8251.903.22
sqrt squared8×8252.033.57
sin²+cos²−I8×8256.1313.86

Double32

Errors are measured against a 512-bit BigFloat reference in units of the Double32 working precision, 1 ulp = 2⁻⁴⁶ (about 1.4e-14) relative. A worst case of about 1 ulp means the function is as accurate as the format allows.

Exponentials and Logarithms

functiondomainsamplesmedian (ulps)worst (ulps)
exp(-100, 100)2300.03228653268098.46
exp(-660, -600)25070368744177664.0070368744177664.00
expm1(-1, 1)2500.020.12
log(0, 100)2500.020.12
log1 ± 2⁻³¹2500.000.01
log1p(-1, 1)2500.020.11
log2(0, 100)2500.030.13
log10(0, 100)2500.020.10

Trigonometric Functions

functiondomainsamplesmedian (ulps)worst (ulps)
sin(-100, 100)2500.020.12
cos(-100, 100)2500.020.11
tan(-1, 1)2500.020.12
sinnear π/22500.020.07
cosnear π/22500.020.10
cosnear π2500.010.06

Inverse Trigonometric Functions

functiondomainsamplesmedian (ulps)worst (ulps)
asin(-1, 1)2500.020.11
acos(-1, 1)2500.020.12
atan(-100, 100)2500.020.08

Hyperbolic and Inverse Hyperbolic Functions

functiondomainsamplesmedian (ulps)worst (ulps)
sinh(-300, 300)800.030.13
cosh(-100, 100)2200.020.12
tanh(-1, 1)2500.020.13
asinh(-100, 100)2500.020.11
asinh±2⁻⁴⁰2500.000.00
acosh(1, 101)2500.020.12
acosh1 + ε2500.020.11
atanh(-1, 1)2500.020.12
atanh±2⁻⁴⁰2500.000.00

Special Functions

erf, erfc, and gamma are computed via Float128; its 113-bit significand caps their accuracy at roughly half an ulp of Double64.

functiondomainsamplesmedian (ulps)worst (ulps)
erf(-1, 1)2500.020.10
erfc(-1, 1)2500.020.11
gamma(0.1, 10)2500.030.12
ellipk(0, 1)2500.100.91
ellipk1 - 2⁻²⁰⁻⁵⁰2500.160.77

Matrix Functions (identity residuals)

Matrix routines are checked through their defining identities on random matrices, normalized per matrix dimension. An unavailable row identifies a routine that cannot currently execute for that precision.

identitysizesamplesmedian (ulps)worst (ulps)
eigen residual ‖AV−VΛ‖8×8250.380.66
exp∘log roundtrip8×8unavailableunavailable
sqrt squared8×8unavailableunavailable
sin²+cos²−I8×8254.1113.30

The unavailable Double32 matrix rows currently require a generic Schur path through Complex{Double32}, which is not supported.