Skip to content

Comparisons — Trigonometry

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

acos

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 72.2 µs · · ·
D38 72.5 µs 85.5 µs 104 µs ·
D57 9.83 µs 13 µs 16.5 µs ·
D76 9.79 µs 13.2 µs 16.7 µs ·
D115 17 µs 22.4 µs 27.8 µs ·
D153 14.8 µs 22.6 µs 23.5 µs 89.8 µs
D230 19.3 µs 25.3 µs 31 µs 113 µs
D307 20 µs 26.5 µs 32.8 µs 116 µs
D462 21.8 µs 30.8 µs 35.5 µs 115 µs
D616 26.5 µs 35 µs 43.3 µs 131 µs
D924 33.7 µs 42 µs 52.4 µs 141 µs
D1232 51.7 µs 60.9 µs 79.7 µs 187 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 557 µs 5.4× @37
100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precg_math
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.

acosh

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 32.8 µs · · ·
D38 51.5 µs 59 µs 51.7 µs ·
D57 41.1 µs 53 µs 58.1 µs ·
D76 41 µs 53.2 µs 58 µs ·
D115 69.4 µs 123 µs 148 µs ·
D153 56.7 µs 95.5 µs 113 µs 209 µs
D230 72 µs 126 µs 151 µs 769 µs
D307 73.8 µs 128 µs 153 µs 777 µs
D462 70.2 µs 126 µs 146 µs 747 µs
D616 79.7 µs 135 µs 163 µs 789 µs
D924 83.9 µs 132 µs 159 µs 717 µs
D1232 108 µs 169 µs 203 µs 892 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 313 µs 6.1× @37
100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precg_math
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.

asin

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 72 µs · · ·
D38 72.2 µs 85.6 µs 104 µs ·
D57 9.84 µs 12.9 µs 16.3 µs ·
D76 9.8 µs 13.1 µs 16.4 µs ·
D115 17.3 µs 22.3 µs 27.4 µs ·
D153 14.8 µs 22.6 µs 23.6 µs 84.3 µs
D230 19.4 µs 25.2 µs 30.9 µs 113 µs
D307 19.9 µs 26.4 µs 32.3 µs 115 µs
D462 21.1 µs 30.5 µs 34.9 µs 120 µs
D616 26.5 µs 34.4 µs 42.9 µs 130 µs
D924 33.5 µs 42.3 µs 52.3 µs 139 µs
D1232 51.3 µs 60.9 µs 79.1 µs 187 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 554 µs 5.3× @37
100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precg_math
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.

asinh

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 39.6 µs · · ·
D38 44.2 µs 51 µs 58.4 µs ·
D57 8.77 µs 13 µs 11.6 µs ·
D76 8.44 µs 12.8 µs 12.4 µs ·
D115 24 µs 25 µs 27.9 µs ·
D153 20.6 µs 21.6 µs 23.3 µs 63.4 µs
D230 35.4 µs 28.5 µs 31.8 µs 135 µs
D307 52.9 µs 30.3 µs 34.2 µs 142 µs
D462 60.1 µs 33.9 µs 37.3 µs 143 µs
D616 99.7 µs 40.5 µs 46.1 µs 165 µs
D924 132 µs 55.4 µs 55.2 µs 171 µs
D1232 221 µs 74.2 µs 82.3 µs 225 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 382 µs 6.5× @37
100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precg_math
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.

atan

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 4.67 µs 46.3 µs 20.6 µs ·
D57 7.65 µs 11 µs 13.9 µs ·
D76 7.64 µs 11 µs 13.5 µs ·
D115 21.5 µs 20.4 µs 24.5 µs ·
D153 17.6 µs 20.5 µs 21 µs 80.9 µs
D230 31.3 µs 23.2 µs 28.2 µs 92.7 µs
D307 46.3 µs 24.9 µs 30 µs 99.1 µs
D462 40.5 µs 24.9 µs 27 µs 102 µs
D616 72.3 µs 33.9 µs 41.2 µs 127 µs
D924 87.1 µs 43 µs 51.4 µs 139 µs
D1232 147 µs 62 µs 78.2 µs 185 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 274 µs 13× @37
100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precg_math
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.

atan2

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 23.5 µs · · ·
D38 73.3 µs 84.7 µs 104 µs ·
D57 9.14 µs 12 µs 14.9 µs ·
D76 9.32 µs 12.1 µs 15.1 µs ·
D115 16.3 µs 21 µs 25.9 µs ·
D153 14.5 µs 19.9 µs 26.6 µs 85.5 µs
D230 19.3 µs 26.1 µs 31.3 µs 110 µs
D307 20.8 µs 28.5 µs 34.4 µs 115 µs
D462 26.9 µs 36.8 µs 41.4 µs 118 µs
D616 33.3 µs 44.1 µs 52.6 µs 139 µs
D924 46.9 µs 56.6 µs 68.9 µs 159 µs
D1232 76.3 µs 91.6 µs 112 µs 231 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 463 µs 4.5× @37
1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precg_math
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.

atanh

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.8 µs · · ·
D38 11.9 µs 14.7 µs 16.9 µs ·
D57 35.8 µs 47.4 µs 53.8 µs ·
D76 35.4 µs 47.5 µs 53.5 µs ·
D115 61.1 µs 111 µs 132 µs ·
D153 50.2 µs 86.3 µs 103 µs 303 µs
D230 63.6 µs 113 µs 137 µs 721 µs
D307 66.6 µs 116 µs 138 µs 726 µs
D462 64 µs 120 µs 141 µs 687 µs
D616 71.9 µs 123 µs 149 µs 733 µs
D924 74.6 µs 122 µs 149 µs 668 µs
D1232 97.6 µs 155 µs 190 µs 844 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 272 µs 16× @37
100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precg_math
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.

cos

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.17 µs · · ·
D38 7.21 µs 8.9 µs 10 µs ·
D57 4.76 µs 6.09 µs 6.94 µs ·
D76 4.81 µs 6.31 µs 7.06 µs ·
D115 8.61 µs 11 µs 12.2 µs ·
D153 7.51 µs 10.1 µs 11 µs 48.9 µs
D230 10.4 µs 13.4 µs 14.9 µs 63.5 µs
D307 11.2 µs 14.9 µs 16.8 µs 58.4 µs
D462 11.6 µs 16 µs 18.7 µs 62.5 µs
D616 18.4 µs 23.6 µs 27.6 µs 82.9 µs
D924 25.5 µs 31.4 µs 38.2 µs 93 µs
D1232 42.4 µs 49.8 µs 62.6 µs 133 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 1.3 ms 27× @152
g_math 38 273 µs 27× @37
rust_decimal 28 4.43 µs 0.5× @28
100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnumg_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.

cosh

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.4 µs · · ·
D38 11.5 µs 14 µs 15.8 µs ·
D57 7.79 µs 9.25 µs 10.9 µs ·
D76 8.12 µs 9.48 µs 11.1 µs ·
D115 28.2 µs 29.6 µs 33.1 µs ·
D153 18.9 µs 15.5 µs 20.2 µs 54.7 µs
D230 35.9 µs 20.8 µs 23.4 µs 85.9 µs
D307 49.8 µs 23.7 µs 26.3 µs 141 µs
D462 50.5 µs 30 µs 32 µs 98.4 µs
D616 91.5 µs 45.2 µs 38.5 µs 113 µs
D924 118 µs 51.6 µs 49.2 µs 118 µs
D1232 199 µs 142 µs 76.3 µs 168 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 338 µs 21× @37
100 ns1 µs10 µs100 µs1 ms10 ms100 ms1 s183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precg_math
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.

sin

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.19 µs · · ·
D38 7.21 µs 8.86 µs 10 µs ·
D57 4.8 µs 6.01 µs 6.84 µs ·
D76 4.82 µs 6.16 µs 6.98 µs ·
D115 8.63 µs 10.8 µs 12.1 µs ·
D153 7.61 µs 10.6 µs 10.9 µs 48.6 µs
D230 10.5 µs 13.2 µs 14.7 µs 63.1 µs
D307 11.4 µs 14.7 µs 16.8 µs 57.8 µs
D462 11.1 µs 15.4 µs 19.5 µs 61 µs
D616 18.5 µs 23.4 µs 27.5 µs 82.6 µs
D924 25.3 µs 31.2 µs 38 µs 93.1 µs
D1232 42.3 µs 49.8 µs 62.6 µs 133 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 546 µs 11× @152
g_math 38 268 µs 27× @37
rust_decimal 28 4.33 µs 0.49× @28
100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnumg_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.

sinh

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.4 µs · · ·
D38 11.5 µs 14 µs 15.8 µs ·
D57 7.72 µs 9.2 µs 10.8 µs ·
D76 7.99 µs 9.54 µs 11.2 µs ·
D115 27.7 µs 29.9 µs 33.5 µs ·
D153 18.3 µs 17.5 µs 20.3 µs 53.9 µs
D230 34 µs 35.9 µs 23.8 µs 86.3 µs
D307 47.2 µs 49 µs 27 µs 148 µs
D462 47.8 µs 56 µs 33 µs 97.7 µs
D616 86.2 µs 93.2 µs 47.4 µs 113 µs
D924 118 µs 124 µs 55.3 µs 127 µs
D1232 199 µs 207 µs 82.8 µs 405 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 337 µs 21× @37
100 ns1 µs10 µs100 µs1 ms10 ms100 ms1 s183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precg_math
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.

tan

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.2 µs · · ·
D38 13.2 µs 16.2 µs 18.3 µs ·
D57 5.96 µs 7.59 µs 8.77 µs ·
D76 5.98 µs 7.76 µs 8.85 µs ·
D115 10.6 µs 13.3 µs 15.1 µs ·
D153 9.29 µs 13.4 µs 13.4 µs 56.1 µs
D230 12.6 µs 15.8 µs 17.8 µs 73.5 µs
D307 13.4 µs 17.3 µs 19.8 µs 67.9 µs
D462 12.4 µs 17.9 µs 20.7 µs 71.7 µs
D616 20.5 µs 25.9 µs 30.7 µs 91.7 µs
D924 27.4 µs 34 µs 41 µs 102 µs
D1232 44.9 µs 52.3 µs 65.5 µs 144 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 4.26 ms 76× @152
g_math 38 290 µs 16× @37
rust_decimal 28 4.36 µs 0.27× @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 precfastnumg_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.

tanh

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.4 µs · · ·
D38 11.5 µs 14 µs 15.8 µs ·
D57 7.55 µs 9.33 µs 11.1 µs ·
D76 7.59 µs 9.62 µs 11.3 µs ·
D115 26.6 µs 29.2 µs 32.6 µs ·
D153 12.6 µs 15.2 µs 16.7 µs 61.9 µs
D230 16.1 µs 19.9 µs 23.3 µs 84.9 µs
D307 17.6 µs 22 µs 25.6 µs 98.6 µs
D462 21.4 µs 25.9 µs 28.8 µs 87.8 µs
D616 26 µs 31 µs 37.2 µs 103 µs
D924 33.2 µs 39.2 µs 46.6 µs 113 µs
D1232 50.9 µs 58.9 µs 73.9 µs 159 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 203 µs 13× @37
100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precg_math
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.