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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |