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 7.92 µs · · ·
D38 7.97 µs 10.1 µs 10.1 µs ·
D57 1.03 µs 1.31 µs 1.67 µs ·
D76 1.31 µs 1.58 µs 1.99 µs ·
D115 3.02 µs 4.54 µs 5.36 µs ·
D153 4.21 µs 5.09 µs 6.24 µs 11.1 µs
D230 6.16 µs 7.18 µs 8.28 µs 21.5 µs
D307 7.78 µs 8.64 µs 10.3 µs 27.5 µs
D462 12.3 µs 12.9 µs 15 µs 43.6 µs
D616 17.8 µs 18.6 µs 22 µs 51.4 µs
D924 27.6 µs 27.9 µs 33.4 µs 72.2 µs
D1232 51.5 µs 48.8 µs 58.3 µs 108 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 2.21 ms 2e+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 7.66 µs · · ·
D38 7.7 µs 9.31 µs 10.5 µs ·
D57 4.52 µs 5.46 µs 6.62 µs ·
D76 6.02 µs 7.2 µs 7.96 µs ·
D115 23.9 µs 24.2 µs 19.3 µs ·
D153 21.2 µs 19.6 µs 16.7 µs 56.7 µs
D230 34.7 µs 38.9 µs 22.9 µs 85.9 µs
D307 54.1 µs 59.8 µs 26.2 µs 92.2 µs
D462 54.4 µs 60.9 µs 39.2 µs 101 µs
D616 88.1 µs 96.3 µs 55.8 µs 174 µs
D924 112 µs 125 µs 55.3 µs 217 µs
D1232 206 µs 220 µs 82.7 µs 377 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 560 µs 9.9× @152
decimal-rs 38 10.4 µs 1× @37
g_math 38 173 µs 17× @37
rust_decimal 28 5.32 µs 0.57× @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 7.67 µs · · ·
D38 7.71 µs 9.37 µs 10.4 µs ·
D57 11.2 µs 13.2 µs 15 µs ·
D76 11.1 µs 13.2 µs 14.9 µs ·
D115 39.4 µs 45.1 µs 50.2 µs ·
D153 28.6 µs 39.4 µs 38.2 µs 85 µs
D230 58.9 µs 71.7 µs 81.4 µs 173 µs
D307 81.9 µs 105 µs 120 µs 251 µs
D462 84.7 µs 109 µs 118 µs 243 µs
D616 197 µs 242 µs 322 µs 709 µs
D924 191 µs 232 µs 307 µs 692 µs
D1232 541 µs 708 µs 1.45 ms 3.19 ms

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

Peer Precision Median vs decimal-scaled
fastnum 154 1.92 ms 23× @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.

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 280 ns · · ·
D38 431 ns 571 ns 591 ns ·
D57 576 ns 791 ns 1.05 µs ·
D76 786 ns 982 ns 1.23 µs ·
D115 1.74 µs 2.71 µs 2.97 µs ·
D153 2.5 µs 3.25 µs 4.42 µs 5.73 µs
D230 5.51 µs 6.75 µs 7.42 µs 11.5 µs
D307 7.93 µs 9.29 µs 10.3 µs 15.4 µs
D462 14 µs 17.5 µs 18.1 µs 28.2 µs
D616 23.2 µs 24.8 µs 29.4 µs 40.2 µs
D924 38.4 µs 38.2 µs 47.2 µs 68.5 µs
D1232 71.5 µs 71.7 µs 88.1 µs 122 µ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 7.62 µs · · ·
D38 7.83 µs 9.78 µs 11 µs ·
D57 2.12 µs 2.71 µs 3.27 µs ·
D76 2.25 µs 2.81 µs 3.4 µs ·
D115 4.25 µs 5.45 µs 6.25 µs ·
D153 4.53 µs 5.53 µs 6.44 µs 28.6 µs
D230 6.23 µs 8.13 µs 9.35 µs 39.7 µs
D307 8.14 µs 10.2 µs 11.9 µs 38.3 µs
D462 15 µs 19.5 µs 21.2 µs 49.3 µs
D616 19.4 µs 23.6 µs 27.8 µs 59.1 µs
D924 28.7 µs 33.5 µs 39.7 µs 76.7 µs
D1232 52.3 µs 58.9 µs 71 µs 129 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 10 ms 3.5e+02× @152
decimal-rs 38 6.17 µs 0.56× @37
g_math 38 239 µs 22× @37
rust_decimal 28 10.9 µ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 20.5 µs · · ·
D38 19.9 µs 24.9 µs 29.5 µs ·
D57 13 µs 15.2 µs 17.3 µs ·
D76 12.6 µs 15 µs 17.1 µs ·
D115 39.1 µs 46 µs 51.6 µs ·
D153 31.3 µs 37.4 µs 41.1 µs 131 µs
D230 52.2 µs 62.2 µs 68.3 µs 196 µs
D307 82.7 µs 96.6 µs 107 µs 276 µs
D462 87.1 µs 104 µs 111 µs 274 µs
D616 140 µs 161 µs 180 µs 420 µs
D924 184 µs 208 µs 232 µs 502 µs
D1232 306 µs 348 µs 391 µs 813 µ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 12.4 µs · · ·
D38 12.6 µs 15.5 µs 17.7 µs ·
D57 7.62 µs 8.67 µs 9.81 µs ·
D76 7.42 µs 8.68 µs 9.67 µs ·
D115 23.4 µs 26.5 µs 29.3 µs ·
D153 19.9 µs 22.2 µs 23.3 µs 65.7 µs
D230 31.6 µs 35.9 µs 39.2 µs 104 µs
D307 49.7 µs 55.2 µs 60.6 µs 145 µs
D462 49.9 µs 59.6 µs 61.6 µs 147 µs
D616 84 µs 93 µs 103 µs 225 µs
D924 110 µs 122 µs 133 µs 272 µs
D1232 186 µs 201 µs 224 µs 438 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 9.96 ms 1.5e+02× @152
rust_decimal 28 12.1 µs 0.78× @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.

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 13.3 µs · · ·
D38 12.7 µs 15.7 µs 18.9 µs ·
D57 7.86 µs 8.87 µs 9.92 µs ·
D76 7.72 µs 8.83 µs 9.79 µs ·
D115 24.1 µs 26.7 µs 29.6 µs ·
D153 19.4 µs 22.5 µs 23.5 µs 64.4 µs
D230 33.3 µs 36.4 µs 39.6 µs 105 µs
D307 54.7 µs 55.5 µs 61 µs 148 µs
D462 53.9 µs 59.9 µs 62.3 µs 156 µs
D616 91.7 µs 94.1 µs 104 µs 227 µs
D924 116 µs 123 µs 136 µs 275 µs
D1232 190 µs 203 µs 225 µs 444 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 9.95 ms 1.5e+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 13.6 µs · · ·
D38 13.8 µs 18.5 µs 21.6 µs ·
D57 11.9 µs 15.1 µs 17.1 µs ·
D76 11.3 µs 14.5 µs 16.2 µs ·
D115 36.5 µs 47.2 µs 52.1 µs ·
D153 29.5 µs 41.8 µs 44.3 µs 114 µs
D230 53.3 µs 67.6 µs 75.1 µs 197 µs
D307 78.4 µs 99.7 µs 111 µs 266 µs
D462 80.3 µs 114 µs 124 µs 280 µs
D616 140 µs 212 µs 237 µs 467 µs
D924 194 µs 293 µs 323 µs 690 µs
D1232 312 µs 525 µs 581 µs 1.41 ms

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

Peer Precision Median vs decimal-scaled
fastnum 154 11.8 ms 1e+02× @152
decimal-rs 38 16.6 µs 0.77× @37
g_math 38 431 µs 20× @37
rust_decimal 28 15.6 µs 0.85× @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 260 ns · · ·
D38 1.4 µs 2.81 µs 3.23 µs ·
D57 802 ns 1.13 µs 1.21 µs ·
D76 912 ns 1.23 µs 1.34 µs ·
D115 2.03 µs 2.98 µs 3.11 µs ·
D153 2.58 µs 3.65 µs 4.1 µs 6.19 µs
D230 4.77 µs 5.54 µs 6.23 µs 11.2 µs
D307 5.97 µs 7.04 µs 8.09 µs 14.3 µs
D462 10.3 µs 10.9 µs 13.6 µs 23 µs
D616 15.3 µs 16.5 µs 19.4 µs 34.4 µs
D924 23.7 µs 25.2 µs 30.1 µs 51.5 µs
D1232 43.8 µs 45.2 µs 53.8 µs 85.8 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 180 µs 29× @152
decimal-rs 38 5.72 µs 1.8× @37
g_math 38 133 µs 41× @37
rust_decimal 28 2.76 µs 0.98× @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.