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 | 9.16 µs | · | · | · |
| D38 | 8.96 µs | 11.3 µs | 11.3 µs | · |
| D57 | 1.04 µs | 1.33 µs | 1.67 µs | · |
| D76 | 1.34 µs | 1.59 µs | 2 µs | · |
| D115 | 3.08 µs | 4.61 µs | 5.38 µs | · |
| D153 | 3.59 µs | 4.98 µs | 5.96 µs | 14.6 µs |
| D230 | 5.54 µs | 7.58 µs | 8.34 µs | 22.2 µs |
| D307 | 7.25 µs | 9.05 µs | 10.6 µs | 28.8 µs |
| D462 | 12 µs | 14.2 µs | 16.6 µs | 42.1 µs |
| D616 | 18.2 µs | 19.3 µs | 22.9 µs | 52.1 µs |
| D924 | 34.4 µs | 33.8 µs | 40.9 µs | 77.1 µs |
| D1232 | 51.8 µs | 52.8 µs | 63.3 µs | 109 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 3.53 ms | 2.4e+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.31 µs | · | · | · |
| D38 | 8.37 µs | 10.1 µs | 11.4 µs | · |
| D57 | 4.97 µs | 6.02 µs | 7 µs | · |
| D76 | 6.13 µs | 7.19 µs | 8.14 µs | · |
| D115 | 24 µs | 18.7 µs | 19.5 µs | · |
| D153 | 25.3 µs | 27.1 µs | 20.7 µs | 82.8 µs |
| D230 | 35.6 µs | 39.6 µs | 23.7 µs | 92 µs |
| D307 | 54.3 µs | 60.9 µs | 26 µs | 104 µs |
| D462 | 55.5 µs | 64.6 µs | 33.4 µs | 113 µs |
| D616 | 87.3 µs | 98.4 µs | 45.2 µs | 178 µs |
| D924 | 130 µs | 145 µs | 64.3 µs | 251 µs |
| D1232 | 220 µs | 231 µs | 98.9 µs | 387 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 593 µs | 7.2× @152 |
| decimal-rs | 38 | 11.5 µs | 1× @37 |
| g_math | 38 | 297 µs | 26× @37 |
| rust_decimal | 28 | 5.61 µs | 0.56× @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.33 µs | · | · | · |
| D38 | 8.36 µs | 10.2 µs | 11.3 µs | · |
| D57 | 11.8 µs | 14.1 µs | 15.8 µs | · |
| D76 | 11.3 µs | 13.1 µs | 15 µs | · |
| D115 | 38.8 µs | 48 µs | 49.8 µs | · |
| D153 | 39.7 µs | 51 µs | 53.3 µs | 122 µs |
| D230 | 59.5 µs | 74.8 µs | 86.5 µs | 189 µs |
| D307 | 85.6 µs | 110 µs | 120 µs | 270 µs |
| D462 | 87.6 µs | 114 µs | 128 µs | 280 µs |
| D616 | 206 µs | 251 µs | 315 µs | 738 µs |
| D924 | 238 µs | 289 µs | 360 µs | 804 µs |
| D1232 | 714 µs | 1.12 ms | 1.39 ms | 3.16 ms |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 2.24 ms | 18× @152 |
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 | 291 ns | · | · | · |
| D38 | 451 ns | 571 ns | 591 ns | · |
| D57 | 606 ns | 852 ns | 1.03 µs | · |
| D76 | 806 ns | 1.01 µs | 1.26 µs | · |
| D115 | 1.92 µs | 2.79 µs | 3.05 µs | · |
| D153 | 2.91 µs | 3.9 µs | 4.28 µs | 6.59 µs |
| D230 | 5.82 µs | 7.32 µs | 7.62 µs | 11.6 µs |
| D307 | 8.42 µs | 9.85 µs | 10.6 µs | 16.1 µs |
| D462 | 16.8 µs | 17 µs | 20.8 µs | 30.3 µs |
| D616 | 25.3 µs | 26.5 µs | 30.5 µs | 44.9 µs |
| D924 | 46.8 µs | 45.2 µs | 59.2 µs | 81.1 µs |
| D1232 | 81.4 µs | 77 µs | 97.3 µs | 132 µ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.09 µs | · | · | · |
| D38 | 8.3 µs | 10.3 µs | 11.7 µs | · |
| D57 | 2.33 µs | 2.92 µs | 3.5 µs | · |
| D76 | 2.31 µs | 2.85 µs | 3.46 µs | · |
| D115 | 4.41 µs | 5.3 µs | 6.44 µs | · |
| D153 | 4.79 µs | 6.07 µs | 7.23 µs | 39.1 µs |
| D230 | 6.05 µs | 8.4 µs | 9.39 µs | 41.1 µs |
| D307 | 7.94 µs | 10.4 µs | 12 µs | 39.7 µs |
| D462 | 15.3 µs | 19.1 µs | 22.2 µs | 52.3 µs |
| D616 | 18.5 µs | 23.5 µs | 26.9 µs | 60 µs |
| D924 | 31.5 µs | 37.4 µs | 46 µs | 90.3 µs |
| D1232 | 48.9 µs | 58 µs | 67 µs | 129 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 10.5 ms | 2.7e+02× @152 |
| decimal-rs | 38 | 6.81 µs | 0.58× @37 |
| g_math | 38 | 369 µs | 32× @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.3 µs | 26.6 µs | 31.7 µs | · |
| D57 | 13.8 µs | 16.4 µs | 18.3 µs | · |
| D76 | 12.6 µs | 15.4 µs | 17.2 µs | · |
| D115 | 38.9 µs | 45.3 µs | 50.2 µs | · |
| D153 | 40.2 µs | 46.8 µs | 52.4 µs | 173 µs |
| D230 | 51.2 µs | 60.9 µs | 67.6 µs | 208 µs |
| D307 | 81.2 µs | 94.7 µs | 105 µs | 279 µs |
| D462 | 83.8 µs | 98.5 µs | 110 µs | 284 µs |
| D616 | 136 µs | 158 µs | 176 µs | 415 µs |
| D924 | 213 µs | 248 µs | 275 µs | 617 µs |
| D1232 | 293 µs | 338 µs | 382 µs | 822 µ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.6 µs | · | · | · |
| D38 | 13.5 µs | 16.6 µs | 18.3 µs | · |
| D57 | 8.25 µs | 9.41 µs | 10.4 µs | · |
| D76 | 7.48 µs | 8.82 µs | 9.76 µs | · |
| D115 | 23.5 µs | 26.2 µs | 28.6 µs | · |
| D153 | 23.5 µs | 26.8 µs | 29.6 µs | 90.2 µs |
| D230 | 30.1 µs | 34.9 µs | 38.3 µs | 109 µs |
| D307 | 48.1 µs | 53.9 µs | 59.3 µs | 149 µs |
| D462 | 50 µs | 56.6 µs | 62.7 µs | 151 µs |
| D616 | 80.9 µs | 91 µs | 100 µs | 222 µs |
| D924 | 128 µs | 144 µs | 160 µs | 329 µs |
| D1232 | 177 µs | 198 µs | 218 µs | 441 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 10.4 ms | 1.2e+02× @152 |
| rust_decimal | 28 | 12.8 µs | 0.77× @28 |
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.2 µs | · |
| D57 | 8.4 µs | 9.7 µs | 10.5 µs | · |
| D76 | 7.71 µs | 8.97 µs | 9.91 µs | · |
| D115 | 24.1 µs | 26.6 µs | 29 µs | · |
| D153 | 24 µs | 27 µs | 29.8 µs | 91.8 µs |
| D230 | 30.9 µs | 35.4 µs | 38.6 µs | 110 µs |
| D307 | 49.1 µs | 54.4 µs | 59.9 µs | 150 µs |
| D462 | 51.4 µs | 57.5 µs | 63.6 µs | 153 µs |
| D616 | 84.1 µs | 92.7 µs | 101 µs | 224 µs |
| D924 | 134 µs | 145 µs | 161 µs | 334 µs |
| D1232 | 186 µs | 198 µs | 223 µs | 447 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 10.4 ms | 1.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.7 µs | · | · | · |
| D38 | 14.8 µs | 19.8 µs | 23.1 µs | · |
| D57 | 12.5 µs | 15.7 µs | 17.8 µs | · |
| D76 | 11.4 µs | 14.5 µs | 16.3 µs | · |
| D115 | 37.3 µs | 46.9 µs | 52.2 µs | · |
| D153 | 37.1 µs | 47.2 µs | 53 µs | 156 µs |
| D230 | 50.4 µs | 66.2 µs | 73.6 µs | 201 µs |
| D307 | 74.6 µs | 99 µs | 110 µs | 266 µs |
| D462 | 82.5 µs | 109 µs | 124 µs | 288 µs |
| D616 | 139 µs | 211 µs | 235 µs | 473 µs |
| D924 | 223 µs | 368 µs | 409 µs | 754 µs |
| D1232 | 313 µs | 558 µs | 624 µs | 1.33 ms |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 12.7 ms | 81× @152 |
| decimal-rs | 38 | 18.4 µs | 0.8× @37 |
| g_math | 38 | 738 µs | 32× @37 |
| rust_decimal | 28 | 16.5 µs | 0.83× @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.5 µs | 3.06 µs | 3.54 µs | · |
| D57 | 791 ns | 1.12 µs | 1.23 µs | · |
| D76 | 962 ns | 1.25 µs | 1.39 µs | · |
| D115 | 2.13 µs | 3.05 µs | 3.31 µs | · |
| D153 | 2.48 µs | 3.44 µs | 4.27 µs | 7.38 µs |
| D230 | 4.27 µs | 5.8 µs | 6.27 µs | 11.4 µs |
| D307 | 5.69 µs | 7.07 µs | 8.21 µs | 15.1 µs |
| D462 | 10.3 µs | 11.8 µs | 14 µs | 24.8 µs |
| D616 | 15.6 µs | 17 µs | 20 µs | 35.5 µs |
| D924 | 29.4 µs | 30.1 µs | 37.1 µs | 59.6 µs |
| D1232 | 47.1 µs | 48 µs | 57.8 µs | 88.5 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 190 µs | 26× @152 |
| decimal-rs | 38 | 6.26 µs | 1.8× @37 |
| g_math | 38 | 278 µs | 78× @37 |
| rust_decimal | 28 | 2.84 µs | 0.93× @28 |