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 76.6 µs · · ·
D38 76.6 µs 90.1 µs 109 µs ·
D57 8.82 µs 11.5 µs 14.5 µs ·
D76 10.4 µs 14.1 µs 17.6 µs ·
D115 18 µs 23.3 µs 29.3 µs ·
D153 18.4 µs 24.3 µs 30.3 µs 117 µs
D230 17 µs 22 µs 27.8 µs 90.9 µs
D307 21.2 µs 28.1 µs 34.6 µs 119 µs
D462 24.3 µs 32.2 µs 39.9 µs 126 µs
D616 27.2 µs 35.5 µs 44.4 µs 133 µs
D924 34.9 µs 44.7 µs 58.1 µs 157 µs
D1232 48.5 µs 56.8 µs 77.2 µs 180 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 950 µs 8.7× @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 35 µs · · ·
D38 54.9 µs 62.8 µs 54.8 µs ·
D57 35.5 µs 45.2 µs 49.1 µs ·
D76 42.7 µs 55.2 µs 60.3 µs ·
D115 72.3 µs 126 µs 152 µs ·
D153 73.1 µs 127 µs 153 µs 313 µs
D230 66.7 µs 98.2 µs 121 µs 589 µs
D307 76.2 µs 131 µs 157 µs 788 µs
D462 77.8 µs 135 µs 162 µs 789 µs
D616 80.1 µs 139 µs 157 µs 747 µs
D924 88.2 µs 143 µs 178 µs 867 µs
D1232 101 µs 161 µs 196 µs 835 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 532 µs 9.7× @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 76.5 µs · · ·
D38 76.5 µs 91.1 µs 109 µs ·
D57 8.72 µs 11.4 µs 14.3 µs ·
D76 10.4 µs 14 µs 17.4 µs ·
D115 17.8 µs 23.1 µs 28.9 µs ·
D153 18.3 µs 24.2 µs 30 µs 117 µs
D230 17.2 µs 22.6 µs 27 µs 91.3 µs
D307 21.4 µs 28.1 µs 34.2 µs 119 µs
D462 24.2 µs 32.2 µs 39.4 µs 125 µs
D616 27.5 µs 35.7 µs 44.4 µs 132 µs
D924 35.1 µs 44.4 µs 59.4 µs 157 µs
D1232 48.5 µs 59 µs 78.3 µs 179 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 943 µs 8.6× @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 42.5 µs · · ·
D38 47.4 µs 54.3 µs 62 µs ·
D57 7.74 µs 11.2 µs 9.78 µs ·
D76 8.9 µs 13.3 µs 13.2 µs ·
D115 24.7 µs 25.3 µs 28.6 µs ·
D153 26.4 µs 26.9 µs 30.1 µs 85.8 µs
D230 30.5 µs 23.8 µs 26.5 µs 105 µs
D307 53.9 µs 31.8 µs 35.6 µs 144 µs
D462 61.5 µs 36.6 µs 40.8 µs 156 µs
D616 99.2 µs 40.4 µs 45.7 µs 166 µs
D924 157 µs 56.4 µs 63.9 µs 199 µs
D1232 218 µs 198 µs 83.4 µs 220 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 651 µs 10× @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.43 µs · · ·
D38 4.95 µs 49.2 µs 14.7 µs ·
D57 7.03 µs 9.78 µs 12.3 µs ·
D76 8.32 µs 11.8 µs 14.3 µs ·
D115 21.9 µs 21.3 µs 26 µs ·
D153 23.7 µs 22.3 µs 27.3 µs 105 µs
D230 24.3 µs 24.4 µs 24.3 µs 75.3 µs
D307 49.3 µs 26.6 µs 31.7 µs 103 µs
D462 45 µs 27.6 µs 30.5 µs 112 µs
D616 75.7 µs 35.4 µs 42.8 µs 125 µs
D924 109 µs 49 µs 58.8 µs 159 µs
D1232 147 µs 63.9 µs 80.2 µs 181 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 482 µs 33× @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 25.1 µs · · ·
D38 77.3 µs 89.3 µs 109 µs ·
D57 8.12 µs 10.5 µs 13.1 µs ·
D76 9.96 µs 13.1 µs 16.1 µs ·
D115 16.9 µs 21.7 µs 27.1 µs ·
D153 17.7 µs 23.5 µs 28.7 µs 116 µs
D230 19.3 µs 22.9 µs 27 µs 89.8 µs
D307 22.3 µs 30.3 µs 36.5 µs 118 µs
D462 27.9 µs 38.3 µs 45.8 µs 130 µs
D616 34.5 µs 45 µs 52.4 µs 136 µs
D924 49.9 µs 63.4 µs 77.6 µs 181 µs
D1232 72 µs 90.4 µs 111 µs 227 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 837 µs 7.7× @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 12.7 µs · · ·
D38 12.7 µs 15.7 µs 18 µs ·
D57 30.6 µs 40.9 µs 45.3 µs ·
D76 36.9 µs 49.2 µs 55.3 µs ·
D115 62.5 µs 113 µs 136 µs ·
D153 63.8 µs 114 µs 139 µs 434 µs
D230 54.1 µs 90.8 µs 108 µs 566 µs
D307 67.8 µs 119 µs 143 µs 739 µs
D462 68.8 µs 122 µs 147 µs 739 µs
D616 71.5 µs 123 µs 146 µs 723 µs
D924 79.8 µs 135 µs 164 µs 815 µs
D1232 92.5 µs 148 µs 183 µs 786 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 429 µs 24× @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.

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.71 µs · · ·
D38 7.72 µs 9.58 µs 10.8 µs ·
D57 4.11 µs 5.39 µs 6.05 µs ·
D76 5.02 µs 6.66 µs 7.42 µs ·
D115 8.57 µs 11.3 µs 12.7 µs ·
D153 9.02 µs 12.1 µs 13.6 µs 66.1 µs
D230 9.41 µs 12.8 µs 13.5 µs 52.4 µs
D307 11.3 µs 15.7 µs 17.6 µs 59.1 µs
D462 12.5 µs 17.2 µs 20.4 µs 67.7 µs
D616 18.6 µs 24 µs 28.1 µs 82.4 µs
D924 27.5 µs 34.1 µs 42.3 µs 106 µs
D1232 40 µs 48.8 µs 61.1 µs 129 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 1.32 ms 20× @152
g_math 38 418 µs 39× @37
rust_decimal 28 4.42 µs 0.46× @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 12.3 µs · · ·
D38 12.4 µs 15.1 µs 17.1 µs ·
D57 6.93 µs 7.97 µs 9.26 µs ·
D76 8.56 µs 9.92 µs 11.6 µs ·
D115 29.5 µs 31.2 µs 35.3 µs ·
D153 25.7 µs 19.3 µs 22.3 µs 81.6 µs
D230 28.1 µs 17.4 µs 19.1 µs 66.2 µs
D307 50.2 µs 24.6 µs 27.3 µs 143 µs
D462 56.1 µs 30.6 µs 33.1 µs 103 µs
D616 93.1 µs 46.1 µs 39 µs 111 µs
D924 146 µs 137 µs 58 µs 147 µs
D1232 195 µs 186 µs 84.9 µs 170 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 577 µs 34× @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.76 µs · · ·
D38 7.77 µs 9.57 µs 10.8 µs ·
D57 4.12 µs 5.34 µs 5.98 µs ·
D76 5.32 µs 6.55 µs 7.37 µs ·
D115 8.72 µs 11.2 µs 12.6 µs ·
D153 9.17 µs 12 µs 13.5 µs 65.6 µs
D230 8.67 µs 11.7 µs 13.2 µs 55.5 µs
D307 11.8 µs 15.5 µs 17.6 µs 59 µs
D462 12.8 µs 17.2 µs 20.2 µs 67.4 µs
D616 18.6 µs 23.7 µs 28 µs 81.8 µs
D924 27.1 µs 34 µs 42.9 µs 104 µs
D1232 39.8 µs 47.8 µs 59.7 µs 129 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 544 µs 8.3× @152
g_math 38 412 µs 38× @37
rust_decimal 28 4.34 µs 0.45× @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 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 12.3 µs · · ·
D38 12.4 µs 15.1 µs 17 µs ·
D57 6.83 µs 7.89 µs 9.27 µs ·
D76 8.37 µs 9.9 µs 11.6 µs ·
D115 28.9 µs 31.3 µs 36 µs ·
D153 25.5 µs 20.6 µs 22.5 µs 80.6 µs
D230 29.9 µs 26.4 µs 22.1 µs 67.2 µs
D307 46.7 µs 51.6 µs 28.2 µs 151 µs
D462 52.5 µs 59 µs 33.8 µs 105 µs
D616 87.7 µs 95.4 µs 40.9 µs 113 µs
D924 144 µs 150 µs 62.8 µs 152 µs
D1232 193 µs 199 µs 91.1 µs 177 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 577 µs 34× @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 14.3 µs · · ·
D38 14.3 µs 17.5 µs 19.9 µs ·
D57 5.17 µs 6.85 µs 7.65 µs ·
D76 6.36 µs 8.21 µs 9.38 µs ·
D115 10.7 µs 13.8 µs 15.7 µs ·
D153 11.2 µs 14.8 µs 16.8 µs 75.7 µs
D230 11 µs 16.1 µs 15.8 µs 59.8 µs
D307 13.7 µs 18.3 µs 20.7 µs 69.1 µs
D462 14.2 µs 19.5 µs 22.8 µs 76.6 µs
D616 20.6 µs 26.9 µs 31.3 µs 89 µs
D924 29.4 µs 37.9 µs 46.7 µs 115 µs
D1232 41.9 µs 51.2 µs 62.8 µs 139 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 4.39 ms 58× @152
g_math 38 450 µs 23× @37
rust_decimal 28 4.38 µs 0.25× @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 12.4 µs · · ·
D38 12.4 µs 15.1 µs 17.1 µs ·
D57 6.79 µs 8.1 µs 9.55 µs ·
D76 8.06 µs 10 µs 11.8 µs ·
D115 26.4 µs 30.7 µs 34 µs ·
D153 15 µs 19 µs 22.1 µs 88.4 µs
D230 15.7 µs 17.2 µs 19.9 µs 66.3 µs
D307 18.1 µs 23.3 µs 26.8 µs 99.4 µs
D462 21.5 µs 27.4 µs 32.3 µs 97.3 µs
D616 25.4 µs 31.6 µs 37.7 µs 103 µs
D924 35.3 µs 44.8 µs 55.5 µs 134 µs
D1232 51.7 µs 59.9 µs 73.7 µs 156 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 344 µs 20× @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.