DoubleFloats Benchmark Report

Generated by docs/reports/benchmarks.jl on Julia 1.12.6.

This report covers a representative sample of operations; it does not cover all available functions. Timings are best-of-trials amortized averages on the machine that ran the script — treat them as indicative magnitudes, not precise measurements.

Double64 carries ~32 significant decimal digits (106-bit significand); BigFloat timings use the default 256-bit precision. The D64/F64 column shows the cost of the extra precision relative to Float64; Big/D64 shows the advantage of Double64 over BigFloat.

Scalar Arithmetic

operationDouble64Float64D64/F64BigFloatBig/D64
+2 ns0 ns6.6x35 ns14.3x
*2 ns0 ns5.1x52 ns27.6x
/2 ns1 ns3.5x88 ns37.4x
sqrt1 ns1 ns1.0x149 ns128.1x
abs0 ns0 ns1.2x18 ns43.1x
fma5 ns0 ns11.9x76 ns16.7x

Elementary Functions

functionDouble64Float64D64/F64BigFloatBig/D64
exp181 ns2 ns106.0x1.71 µs9.5x
log236 ns3 ns71.7x3.34 µs14.2x
sin160 ns2 ns71.2x1.85 µs11.5x
cos147 ns2 ns60.7x1.42 µs9.6x
tan614 ns4 ns157.8x2.34 µs3.8x
atan511 ns3 ns161.3x8.64 µs16.9x
sinh384 ns2 ns156.3x2.11 µs5.5x
tanh763 ns3 ns231.1x2.17 µs2.8x
asinh260 ns5 ns48.0x3.96 µs15.2x
x^y456 ns16 ns28.4x5.63 µs12.3x

Linear Algebra (n = 32)

Float64 timings use LAPACK/BLAS; Double64 uses pure-Julia generic algorithms (GenericLinearAlgebra / GenericSchur), so these ratios combine the precision cost with the loss of BLAS blocking and SIMD.

operationDouble64Float64D64/F64
A * B (n=32)167.87 µs1.60 µs104.9x
lu(A)58.63 µs4.23 µs13.9x
qr(A)168.20 µs23.30 µs7.2x
A \ b69.13 µs4.90 µs14.1x
eigen(S) symmetric913.13 µs49.20 µs18.6x
eigen(A) general5.01 ms118.70 µs42.2x
svd(A)511.50 µs24.50 µs20.9x

Matrix Functions (n = 32 unless noted)

operationDouble64Float64D64/F64
exp(A) (n=32)2.79 ms34.97 µs79.8x
sqrt(P) spd1.05 ms52.17 µs20.2x
log(P) spd990.33 µs52.27 µs18.9x
sylvester(A, B, S)38.26 ms245.10 µs156.1x

Notes

  • Entries below ~10 ns are at the resolution of the timing loop; treat them (and their ratios) as "too fast to matter" rather than exact.
  • Scalar Double64 arithmetic is typically 3–20x Float64 and several times faster than BigFloat, with no heap allocation per operation.
  • Double64 values are immutable bitstypes; vectors of them are stored inline, which is where much of the advantage over BigFloat comes from.
  • Matrix-function timings include the full dense algorithm (scaling-and-squaring for exp, Schur-based methods for sqrt/log).