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.5 µs · · ·
D38 76.6 µs 90.2 µs 109 µs ·
D57 10.4 µs 14.2 µs 17.9 µs ·
D76 9.77 µs 13.3 µs 16.7 µs ·
D115 17.8 µs 23 µs 28.6 µs ·
D153 17.5 µs 23.2 µs 28.9 µs 113 µs
D230 18.4 µs 25.2 µs 30.7 µs 116 µs
D307 19.2 µs 26.7 µs 32.9 µs 121 µs
D462 22.4 µs 30.7 µs 37.9 µs 125 µs
D616 25.5 µs 34.6 µs 44.1 µs 135 µs
D924 34.4 µs 43.7 µs 59.4 µs 156 µs
D1232 50.3 µs 58.3 µs 76.1 µs 186 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 1.08 ms 9.9× @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 55 µs 62.7 µs 55 µs ·
D57 44.9 µs 57.7 µs 62.8 µs ·
D76 41.5 µs 53.6 µs 58.5 µs ·
D115 70.1 µs 124 µs 150 µs ·
D153 71.6 µs 127 µs 155 µs 303 µs
D230 72.3 µs 125 µs 151 µs 819 µs
D307 73.5 µs 130 µs 157 µs 830 µs
D462 74.9 µs 131 µs 159 µs 828 µs
D616 78.8 µs 135 µs 163 µs 836 µs
D924 87.8 µs 148 µs 176 µs 862 µs
D1232 101 µs 163 µs 201 µs 887 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 586 µs 11× @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 90.4 µs 109 µs ·
D57 10.4 µs 14 µs 17.7 µs ·
D76 9.79 µs 13.2 µs 16.5 µs ·
D115 17.9 µs 22.9 µs 28.2 µs ·
D153 17.4 µs 22.9 µs 28.6 µs 113 µs
D230 18.3 µs 25.1 µs 30.4 µs 114 µs
D307 19.4 µs 26.5 µs 32.9 µs 118 µs
D462 22.4 µs 30.6 µs 37.8 µs 125 µs
D616 25.6 µs 34.6 µs 43.8 µs 133 µs
D924 34.9 µs 45.7 µs 57.6 µs 156 µs
D1232 50 µs 60.4 µs 77.4 µs 184 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 1.07 ms 9.8× @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.3 µs · · ·
D38 47.2 µs 54.3 µs 62 µs ·
D57 9.53 µs 14.1 µs 12.5 µs ·
D76 8.54 µs 12.8 µs 13 µs ·
D115 24.7 µs 25.7 µs 28.6 µs ·
D153 26.1 µs 26.1 µs 29.3 µs 87 µs
D230 34.7 µs 28.4 µs 31.6 µs 138 µs
D307 51.7 µs 30.7 µs 34.3 µs 148 µs
D462 58.4 µs 35.9 µs 39.6 µs 159 µs
D616 98.1 µs 41.5 µs 46.3 µs 174 µs
D924 160 µs 55.2 µs 63 µs 196 µs
D1232 220 µs 77.3 µs 86.8 µs 228 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 610 µs 9.8× @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.72 µs · · ·
D38 4.96 µs 49.4 µs 15.9 µs ·
D57 8.4 µs 11.8 µs 15 µs ·
D76 7.62 µs 11 µs 13.8 µs ·
D115 22.2 µs 21.1 µs 25.3 µs ·
D153 22.9 µs 21.1 µs 25.6 µs 104 µs
D230 30.7 µs 23.3 µs 27.8 µs 95.1 µs
D307 46.5 µs 25.1 µs 30.3 µs 102 µs
D462 42.7 µs 26.7 µs 28.7 µs 110 µs
D616 75.3 µs 34.9 µs 42.5 µs 132 µs
D924 107 µs 48.4 µs 59.7 µs 157 µs
D1232 155 µs 66.4 µs 81.9 µs 190 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 487 µs 31× @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 µs · · ·
D38 77.4 µs 89.3 µs 109 µs ·
D57 9.58 µs 12.8 µs 16 µs ·
D76 9.15 µs 12.2 µs 15.2 µs ·
D115 16.9 µs 21.7 µs 26.5 µs ·
D153 16.8 µs 22.1 µs 27.1 µs 110 µs
D230 18.6 µs 26.2 µs 30.8 µs 112 µs
D307 20.5 µs 28.7 µs 34.5 µs 118 µs
D462 26.6 µs 36.4 µs 43.2 µs 129 µs
D616 32.2 µs 43.4 µs 52.6 µs 143 µs
D924 49.1 µs 63.7 µs 77.9 µs 180 µs
D1232 70.9 µs 91.1 µs 111 µs 232 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 942 µs 8.6× @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.6 µs · · ·
D38 12.6 µs 15.6 µs 18.1 µs ·
D57 38.8 µs 51.5 µs 57.6 µs ·
D76 35.9 µs 47.9 µs 53.9 µs ·
D115 60.9 µs 111 µs 133 µs ·
D153 62.3 µs 114 µs 137 µs 430 µs
D230 63.3 µs 116 µs 137 µs 761 µs
D307 64.3 µs 117 µs 141 µs 779 µs
D462 67.4 µs 120 µs 146 µs 774 µs
D616 70.5 µs 123 µs 150 µs 781 µs
D924 79.2 µs 134 µs 166 µs 811 µs
D1232 91.3 µs 149 µs 189 µs 839 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 397 µs 22× @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.72 µs · · ·
D38 7.76 µs 9.6 µs 10.9 µs ·
D57 4.79 µs 6.33 µs 7.17 µs ·
D76 4.69 µs 6.27 µs 7.02 µs ·
D115 8.7 µs 10.9 µs 12.2 µs ·
D153 8.82 µs 11.5 µs 12.9 µs 64.3 µs
D230 9.96 µs 13.6 µs 15 µs 66.1 µs
D307 10.8 µs 15.1 µs 16.9 µs 60.1 µs
D462 11.5 µs 15.9 µs 19.9 µs 67.5 µs
D616 17.7 µs 23.6 µs 27.8 µs 83.8 µs
D924 27.4 µs 35.1 µs 42.1 µs 104 µs
D1232 40.2 µs 47.8 µs 62.3 µs 133 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 1.45 ms 23× @152
g_math 38 424 µs 39× @37
rust_decimal 28 4.64 µs 0.48× @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.5 µs 15.1 µs 17.1 µs ·
D57 8.36 µs 9.79 µs 11.5 µs ·
D76 8.23 µs 9.5 µs 11.2 µs ·
D115 28.1 µs 30 µs 33.2 µs ·
D153 24.8 µs 18.5 µs 21.4 µs 78.9 µs
D230 31.8 µs 21.2 µs 24 µs 91.9 µs
D307 45.5 µs 24.2 µs 26.8 µs 150 µs
D462 52.2 µs 37.5 µs 33.1 µs 106 µs
D616 90.6 µs 42 µs 40.1 µs 116 µs
D924 142 µs 58 µs 57.6 µs 143 µs
D1232 192 µs 78.2 µs 82.1 µs 178 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 621 µs 36× @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.74 µs · · ·
D38 7.79 µs 9.56 µs 10.8 µs ·
D57 4.87 µs 6.53 µs 7.29 µs ·
D76 4.8 µs 6.14 µs 6.96 µs ·
D115 8.78 µs 10.8 µs 12.1 µs ·
D153 8.83 µs 11.3 µs 12.8 µs 63.5 µs
D230 10 µs 13.4 µs 14.8 µs 65.9 µs
D307 10.9 µs 14.8 µs 16.9 µs 59.3 µs
D462 11.5 µs 16.2 µs 19.5 µs 67.2 µs
D616 17.8 µs 23.2 µs 27.8 µs 83.2 µs
D924 27.4 µs 34.3 µs 43.3 µs 106 µs
D1232 40.1 µs 49.4 µs 61.9 µs 131 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 600 µs 9.5× @152
g_math 38 416 µs 39× @37
rust_decimal 28 4.59 µs 0.48× @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 12.3 µs · · ·
D38 12.5 µs 15.1 µs 17.1 µs ·
D57 8.55 µs 9.84 µs 11.6 µs ·
D76 8.04 µs 9.51 µs 11.2 µs ·
D115 27.5 µs 30.2 µs 33.7 µs ·
D153 24 µs 19.7 µs 21.7 µs 77.8 µs
D230 32.5 µs 29.1 µs 24.1 µs 93.4 µs
D307 45.8 µs 49 µs 27.3 µs 157 µs
D462 48.8 µs 56.9 µs 34 µs 107 µs
D616 84.6 µs 94.9 µs 41.3 µs 118 µs
D924 141 µs 149 µs 60.6 µs 153 µs
D1232 194 µs 205 µs 87.6 µs 407 µs

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

Peer Precision Median vs decimal-scaled
g_math 38 623 µs 36× @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 6.07 µs 7.93 µs 9.08 µs ·
D76 5.93 µs 7.8 µs 8.87 µs ·
D115 10.8 µs 13.4 µs 15.3 µs ·
D153 10.8 µs 13.9 µs 15.7 µs 74 µs
D230 12 µs 15.9 µs 17.7 µs 75.5 µs
D307 12.8 µs 17.6 µs 19.9 µs 70.1 µs
D462 13 µs 18.2 µs 22 µs 75.5 µs
D616 19.5 µs 25.7 µs 30.4 µs 93.7 µs
D924 29.1 µs 36.8 µs 45.5 µs 115 µs
D1232 43.1 µs 50.6 µs 67.4 µs 143 µs

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

Peer Precision Median vs decimal-scaled
fastnum 154 4.58 ms 62× @152
g_math 38 454 µs 23× @37
rust_decimal 28 4.66 µ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 12.4 µs · · ·
D38 12.5 µs 15.2 µs 17.2 µs ·
D57 8.09 µs 10 µs 11.9 µs ·
D76 7.64 µs 9.58 µs 11.3 µs ·
D115 26.4 µs 29.4 µs 32.3 µs ·
D153 14.3 µs 18.1 µs 21.2 µs 87.4 µs
D230 15.7 µs 20.3 µs 23.3 µs 91.2 µs
D307 17.2 µs 22.3 µs 25.9 µs 101 µs
D462 21.1 µs 26.6 µs 31.8 µs 100 µs
D616 24.9 µs 31.6 µs 37.5 µs 107 µs
D924 36.4 µs 43.4 µs 54.6 µs 132 µs
D1232 53.9 µs 60 µs 75.1 µs 161 µs

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

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