Skip to content

Comparisons — Roots and Exponents

Speed of decimal-scaled against the peer decimal crates on the root and exponential functions. See the Comparisons overview for the time units, the per-library precision model, and how to read the timings.

cbrt

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 8.89 µs · · ·
D38 8.93 µs 11.3 µs 11.3 µs ·
D57 801 ns 1.06 µs 1.32 µs ·
D76 1.34 µs 1.58 µs 1.99 µs ·
D115 2.86 µs 4.2 µs 5.06 µs ·
D153 3.63 µs 5.05 µs 6 µs 14.6 µs
D230 5.24 µs 6.47 µs 8.01 µs 16.8 µs
D307 7.48 µs 9.13 µs 10.6 µs 27.8 µs
D462 12.4 µs 14 µs 16.3 µs 45.4 µs
D616 17.4 µs 18.5 µs 21.8 µs 50.6 µs
D924 33.4 µs 33.7 µs 40.3 µs 78.2 µs
D1232 52.8 µs 50.1 µs 59.8 µs 104 µs

peers (fixed precision; each timed beside the matching decimal-scaled line):

Peer Precision Median vs decimal-scaled
fastnum 154 2.64 ms 1.8e+02× @152
10 ns100 ns1 µs10 µs100 µs1 ms10 ms100 ms1 s183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnum
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

exp

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 8.28 µs · · ·
D38 8.36 µs 10.1 µs 11.3 µs ·
D57 4.26 µs 5.07 µs 5.85 µs ·
D76 6.68 µs 7.79 µs 8.51 µs ·
D115 26.3 µs 17.4 µs 20.6 µs ·
D153 27.5 µs 18.8 µs 21.7 µs 85.6 µs
D230 32.7 µs 29.3 µs 19.9 µs 69.9 µs
D307 58.6 µs 60.7 µs 26.7 µs 92.7 µs
D462 63.1 µs 67.7 µs 32.5 µs 107 µs
D616 99.1 µs 96.6 µs 39.5 µs 126 µs
D924 151 µs 148 µs 62.3 µs 253 µs
D1232 240 µs 223 µs 91.6 µs 349 µs

peers (fixed precision; each timed beside the matching decimal-scaled line):

Peer Precision Median vs decimal-scaled
fastnum 154 564 µs 6.6× @152
decimal-rs 38 10.7 µs 0.94× @37
g_math 38 292 µs 26× @37
rust_decimal 28 5.35 µs 0.53× @28
10 ns100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnumdecimal-rsg_mathrust_decimal
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

exp2

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 8.3 µs · · ·
D38 8.36 µs 10.2 µs 11.3 µs ·
D57 10 µs 11.7 µs 13.3 µs ·
D76 11.5 µs 13.8 µs 15.8 µs ·
D115 40.6 µs 47.9 µs 53.2 µs ·
D153 40.6 µs 50.8 µs 54.1 µs 124 µs
D230 43 µs 55.2 µs 63.8 µs 153 µs
D307 83.6 µs 106 µs 116 µs 253 µs
D462 88 µs 111 µs 127 µs 264 µs
D616 201 µs 253 µs 305 µs 670 µs
D924 246 µs 305 µs 361 µs 799 µs
D1232 690 µs 928 µs 1.3 ms 3.25 ms

peers (fixed precision; each timed beside the matching decimal-scaled line):

Peer Precision Median vs decimal-scaled
fastnum 154 2.01 ms 16× @152
100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnum
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

expm1

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 11.7 µs · · ·
D38 11.7 µs 15.1 µs 13.3 µs ·
D57 10 µs 10.8 µs 12.9 µs ·
D76 11.3 µs 12.5 µs 14.8 µs ·
D115 36.5 µs 38.4 µs 47.2 µs ·
D153 37 µs 44.4 µs 45.8 µs 110 µs
D230 37.7 µs 40.6 µs 50 µs 111 µs
D307 79.8 µs 73.3 µs 83 µs 176 µs
D462 71 µs 85.8 µs 98.3 µs 179 µs
D616 125 µs 135 µs 155 µs 328 µs
D924 158 µs 183 µs 180 µs 366 µs
D1232 284 µs 294 µs 425 µs 720 µs
100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 prec
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

hypot

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 300 ns · · ·
D38 461 ns 590 ns 560 ns ·
D57 481 ns 691 ns 842 ns ·
D76 786 ns 988 ns 1.26 µs ·
D115 1.87 µs 2.58 µs 2.89 µs ·
D153 2.82 µs 3.93 µs 4.36 µs 6.6 µs
D230 5.23 µs 5.84 µs 6.97 µs 9.77 µs
D307 8.44 µs 9.33 µs 10.5 µs 15.5 µs
D462 15.2 µs 17.5 µs 19.8 µs 27.9 µs
D616 23.9 µs 24.9 µs 28.9 µs 41 µs
D924 45.2 µs 49.6 µs 58.2 µs 81.2 µs
D1232 72.3 µs 73.9 µs 88.9 µs 126 µs
100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 prec
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

ln

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 8.14 µs · · ·
D38 8.39 µs 10.4 µs 11.8 µs ·
D57 2 µs 2.46 µs 2.9 µs ·
D76 2.5 µs 3.07 µs 3.6 µs ·
D115 4.4 µs 5.52 µs 6.53 µs ·
D153 5.12 µs 6.46 µs 7.5 µs 40.8 µs
D230 5.58 µs 7.33 µs 8.42 µs 34.5 µs
D307 8.44 µs 10.9 µs 12.5 µs 39.2 µs
D462 16.1 µs 20 µs 23.1 µs 51.1 µs
D616 19.6 µs 23.6 µs 27.3 µs 58.3 µs
D924 32 µs 39.2 µs 45.4 µs 87.8 µs
D1232 49.5 µs 58.2 µs 70.1 µs 123 µs

peers (fixed precision; each timed beside the matching decimal-scaled line):

Peer Precision Median vs decimal-scaled
fastnum 154 10.1 ms 2.5e+02× @152
decimal-rs 38 6.27 µs 0.53× @37
g_math 38 367 µs 31× @37
rust_decimal 28 11.7 µs 1.1× @28
100 ns1 µs10 µs100 µs1 ms10 ms100 ms1 s183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnumdecimal-rsg_mathrust_decimal
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

log

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 21.9 µs · · ·
D38 21.2 µs 26.7 µs 31.6 µs ·
D57 11.1 µs 13 µs 14.6 µs ·
D76 13.4 µs 16.1 µs 18.1 µs ·
D115 42 µs 48.8 µs 54.5 µs ·
D153 42.8 µs 50.3 µs 55.9 µs 183 µs
D230 44.5 µs 52.1 µs 59.5 µs 159 µs
D307 80.8 µs 94.2 µs 104 µs 267 µs
D462 87.8 µs 103 µs 114 µs 283 µs
D616 144 µs 167 µs 184 µs 411 µs
D924 218 µs 254 µs 284 µs 625 µs
D1232 309 µs 359 µs 405 µs 845 µs
1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 prec
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

log10

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 13.3 µs · · ·
D38 13.5 µs 16.6 µs 18.3 µs ·
D57 6.63 µs 7.58 µs 8.4 µs ·
D76 7.99 µs 9.25 µs 10.3 µs ·
D115 24.8 µs 28 µs 30.9 µs ·
D153 25.4 µs 28.9 µs 31.8 µs 95.3 µs
D230 27.1 µs 29.7 µs 33.6 µs 96.6 µs
D307 48.7 µs 54.8 µs 59.9 µs 141 µs
D462 52.4 µs 59.8 µs 65.8 µs 151 µs
D616 85.6 µs 96.1 µs 105 µs 222 µs
D924 129 µs 147 µs 162 µs 336 µs
D1232 186 µs 205 µs 231 µs 451 µs

peers (fixed precision; each timed beside the matching decimal-scaled line):

Peer Precision Median vs decimal-scaled
fastnum 154 10 ms 1.1e+02× @152
rust_decimal 28 12.3 µs 0.74× @28
10 ns100 ns1 µs10 µs100 µs1 ms10 ms100 ms1 s183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnumrust_decimal
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

log1p

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 4.76 µs · · ·
D38 5.13 µs 5.09 µs 4.94 µs ·
D57 2.68 µs 2.82 µs 3.08 µs ·
D76 3.24 µs 3.46 µs 3.84 µs ·
D115 10.7 µs 11.2 µs 11.7 µs ·
D153 11.1 µs 11.5 µs 12 µs 15 µs
D230 13.3 µs 13.2 µs 13.9 µs 23.5 µs
D307 23.9 µs 24.1 µs 24.7 µs 38.9 µs
D462 25.2 µs 27.9 µs 29.5 µs 45.5 µs
D616 41.1 µs 40.9 µs 43.3 µs 64.9 µs
D924 60.6 µs 66.6 µs 70.5 µs 104 µs
D1232 94 µs 99.8 µs 102 µs 146 µs
1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 prec
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

log2

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 14.2 µs · · ·
D38 13.5 µs 16.8 µs 20.1 µs ·
D57 6.79 µs 7.74 µs 8.51 µs ·
D76 8.16 µs 9.42 µs 10.4 µs ·
D115 25.3 µs 28.3 µs 31.1 µs ·
D153 26.1 µs 29.3 µs 32.2 µs 97.2 µs
D230 27.8 µs 30.3 µs 33.7 µs 91.9 µs
D307 50 µs 55.4 µs 60.4 µs 144 µs
D462 54 µs 60.7 µs 66.5 µs 153 µs
D616 88.5 µs 97.5 µs 107 µs 231 µs
D924 135 µs 149 µs 167 µs 339 µs
D1232 196 µs 208 µs 234 µs 453 µs

peers (fixed precision; each timed beside the matching decimal-scaled line):

Peer Precision Median vs decimal-scaled
fastnum 154 10 ms 1e+02× @152
100 ns1 µs10 µs100 µs1 ms10 ms100 ms1 s183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnum
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

powf

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 14.9 µs · · ·
D38 14.9 µs 19.8 µs 23.1 µs ·
D57 10.1 µs 12.8 µs 14.4 µs ·
D76 12 µs 15.2 µs 17.2 µs ·
D115 37.2 µs 47.8 µs 53.1 µs ·
D153 38.2 µs 48.7 µs 54.7 µs 164 µs
D230 40.3 µs 55.5 µs 61.6 µs 156 µs
D307 78.7 µs 99.8 µs 112 µs 265 µs
D462 85.8 µs 115 µs 129 µs 288 µs
D616 140 µs 213 µs 238 µs 462 µs
D924 219 µs 370 µs 411 µs 755 µs
D1232 307 µs 549 µs 601 µs 1.26 ms

peers (fixed precision; each timed beside the matching decimal-scaled line):

Peer Precision Median vs decimal-scaled
fastnum 154 12 ms 73× @152
decimal-rs 38 16.9 µs 0.73× @37
g_math 38 703 µs 30× @37
rust_decimal 28 15.2 µs 0.77× @28
10 ns100 ns1 µs10 µs100 µs1 ms10 ms100 ms1 s183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnumdecimal-rsg_mathrust_decimal
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

sqrt

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 280 ns · · ·
D38 1.52 µs 3.08 µs 3.54 µs ·
D57 651 ns 921 ns 992 ns ·
D76 922 ns 1.26 µs 1.39 µs ·
D115 1.91 µs 2.77 µs 3.04 µs ·
D153 2.58 µs 3.48 µs 4.3 µs 7.4 µs
D230 3.93 µs 5.09 µs 6.18 µs 10.2 µs
D307 5.74 µs 7.19 µs 8.24 µs 14.6 µs
D462 10.3 µs 11.7 µs 13.8 µs 24.2 µs
D616 15.1 µs 16.1 µs 19.5 µs 33.9 µs
D924 29.6 µs 30.8 µs 36.5 µs 58.2 µs
D1232 43.6 µs 45.6 µs 55.1 µs 84.6 µs

peers (fixed precision; each timed beside the matching decimal-scaled line):

Peer Precision Median vs decimal-scaled
fastnum 154 181 µs 24× @152
decimal-rs 38 5.73 µs 1.6× @37
g_math 38 228 µs 64× @37
rust_decimal 28 2.79 µs 0.9× @28
10 ns100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnumdecimal-rsg_mathrust_decimal
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.