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