Skip to content

Conversation

@LukaszRozmej
Copy link
Member

@LukaszRozmej LukaszRozmej commented Oct 24, 2025

Benchmarks:

MultiplyMod - regression

| Method                       | EnvironmentVariables       | C                   | A                   | B                   | Mean     | Error    | StdDev   | Median   | Ratio | RatioSD | Gen0   | Allocated | Alloc Ratio |
|----------------------------- |--------------------------- |-------------------- |-------------------- |-------------------- |---------:|---------:|---------:|---------:|------:|--------:|-------:|----------:|------------:|
| MultiplyMod_BigInteger       | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] | 214.6 ns |  6.73 ns | 19.83 ns | 209.4 ns |  1.18 |    0.12 | 0.0052 |      88 B |          NA |
| MultiplyMod_UInt256_Standard | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] | 182.9 ns |  3.63 ns |  7.09 ns | 181.5 ns |  1.00 |    0.05 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] | 560.3 ns | 11.15 ns | 26.51 ns | 556.8 ns |  3.07 |    0.19 |      - |         - |          NA |
| MultiplyMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] | 199.1 ns |  3.99 ns |  9.79 ns | 198.3 ns |  1.09 |    0.07 | 0.0052 |      88 B |          NA |
| MultiplyMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] | 269.2 ns |  5.21 ns | 11.09 ns | 267.9 ns |  1.47 |    0.08 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] | 774.9 ns | 15.17 ns | 25.35 ns | 764.9 ns |  4.24 |    0.21 |      - |         - |          NA |
|                              |                            |                     |                     |                     |          |          |          |          |       |         |        |           |             |
| MultiplyMod_BigInteger       | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 195.6 ns |  6.37 ns | 18.67 ns | 187.9 ns |  1.09 |    0.12 | 0.0052 |      88 B |          NA |
| MultiplyMod_UInt256_Standard | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 180.7 ns |  3.96 ns | 11.49 ns | 178.9 ns |  1.00 |    0.09 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 541.5 ns | 13.33 ns | 38.26 ns | 524.8 ns |  3.01 |    0.28 |      - |         - |          NA |
| MultiplyMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 190.4 ns |  4.56 ns | 13.37 ns | 185.8 ns |  1.06 |    0.10 | 0.0052 |      88 B |          NA |
| MultiplyMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 252.5 ns |  4.91 ns |  5.46 ns | 249.7 ns |  1.40 |    0.09 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 749.8 ns | 14.54 ns | 16.74 ns | 751.3 ns |  4.17 |    0.27 |      - |         - |          NA |
|                              |                            |                     |                     |                     |          |          |          |          |       |         |        |           |             |
| MultiplyMod_BigInteger       | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 203.3 ns |  5.40 ns | 15.94 ns | 204.6 ns |  1.16 |    0.09 | 0.0052 |      88 B |          NA |
| MultiplyMod_UInt256_Standard | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 175.6 ns |  3.13 ns |  3.35 ns | 175.2 ns |  1.00 |    0.03 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 559.4 ns | 11.12 ns | 23.69 ns | 556.4 ns |  3.19 |    0.15 |      - |         - |          NA |
| MultiplyMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 195.3 ns |  3.83 ns |  3.58 ns | 195.7 ns |  1.11 |    0.03 | 0.0052 |      88 B |          NA |
| MultiplyMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 271.0 ns |  5.23 ns |  9.30 ns | 267.5 ns |  1.54 |    0.06 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 861.9 ns | 16.95 ns | 31.84 ns | 856.8 ns |  4.91 |    0.20 |      - |         - |          NA |
|                              |                            |                     |                     |                     |          |          |          |          |       |         |        |           |             |
| MultiplyMod_BigInteger       | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 213.0 ns |  4.28 ns |  7.82 ns | 212.5 ns |  1.19 |    0.05 | 0.0086 |     144 B |          NA |
| MultiplyMod_UInt256_Standard | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 179.7 ns |  3.51 ns |  4.30 ns | 179.5 ns |  1.00 |    0.03 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 492.7 ns |  9.84 ns | 15.61 ns | 493.5 ns |  2.74 |    0.11 |      - |         - |          NA |
| MultiplyMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 200.7 ns |  4.04 ns |  7.98 ns | 197.8 ns |  1.12 |    0.05 | 0.0086 |     144 B |          NA |
| MultiplyMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 278.4 ns |  3.86 ns |  3.22 ns | 278.4 ns |  1.55 |    0.04 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 720.1 ns | 14.34 ns | 34.64 ns | 712.2 ns |  4.01 |    0.21 |      - |         - |          NA |
|                              |                            |                     |                     |                     |          |          |          |          |       |         |        |           |             |
| MultiplyMod_BigInteger       | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 192.3 ns |  3.86 ns |  6.66 ns | 190.3 ns |  1.09 |    0.05 | 0.0086 |     144 B |          NA |
| MultiplyMod_UInt256_Standard | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 177.4 ns |  3.58 ns |  5.36 ns | 177.5 ns |  1.00 |    0.04 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 544.3 ns | 10.41 ns | 11.98 ns | 543.8 ns |  3.07 |    0.11 |      - |         - |          NA |
| MultiplyMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 191.9 ns |  3.73 ns |  3.11 ns | 191.7 ns |  1.08 |    0.04 | 0.0086 |     144 B |          NA |
| MultiplyMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 283.3 ns |  5.67 ns |  7.76 ns | 281.9 ns |  1.60 |    0.06 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 785.3 ns | 15.40 ns | 17.12 ns | 782.7 ns |  4.43 |    0.16 |      - |         - |          NA |
|                              |                            |                     |                     |                     |          |          |          |          |       |         |        |           |             |
| MultiplyMod_BigInteger       | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 197.7 ns |  3.89 ns |  6.17 ns | 196.4 ns |  1.05 |    0.04 | 0.0052 |      88 B |          NA |
| MultiplyMod_UInt256_Standard | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 187.6 ns |  3.47 ns |  5.50 ns | 186.1 ns |  1.00 |    0.04 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 560.1 ns | 10.28 ns | 12.24 ns | 555.9 ns |  2.99 |    0.11 |      - |         - |          NA |
| MultiplyMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 181.8 ns |  3.42 ns |  3.51 ns | 181.3 ns |  0.97 |    0.03 | 0.0052 |      88 B |          NA |
| MultiplyMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 277.2 ns |  5.47 ns |  5.12 ns | 279.2 ns |  1.48 |    0.05 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 806.3 ns | 16.02 ns | 24.46 ns | 802.3 ns |  4.30 |    0.18 |      - |         - |          NA |
|                              |                            |                     |                     |                     |          |          |          |          |       |         |        |           |             |
| MultiplyMod_BigInteger       | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] | 189.2 ns |  3.21 ns |  2.85 ns | 188.7 ns |  1.00 |    0.03 | 0.0052 |      88 B |          NA |
| MultiplyMod_UInt256_Standard | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] | 189.9 ns |  3.76 ns |  5.73 ns | 189.6 ns |  1.00 |    0.04 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] | 557.5 ns | 11.17 ns | 18.97 ns | 554.7 ns |  2.94 |    0.13 |      - |         - |          NA |
| MultiplyMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] | 189.7 ns |  3.80 ns |  6.66 ns | 188.9 ns |  1.00 |    0.05 | 0.0052 |      88 B |          NA |
| MultiplyMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] | 293.1 ns |  5.83 ns | 10.06 ns | 291.9 ns |  1.54 |    0.07 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] | 773.4 ns | 15.21 ns | 26.63 ns | 763.6 ns |  4.08 |    0.18 |      - |         - |          NA |
|                              |                            |                     |                     |                     |          |          |          |          |       |         |        |           |             |
| MultiplyMod_BigInteger       | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] | 167.6 ns |  3.03 ns |  4.15 ns | 167.0 ns |  1.00 |    0.06 | 0.0052 |      88 B |          NA |
| MultiplyMod_UInt256_Standard | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] | 168.1 ns |  3.35 ns |  8.77 ns | 167.3 ns |  1.00 |    0.07 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] | 478.2 ns |  9.27 ns | 12.37 ns | 480.0 ns |  2.85 |    0.16 |      - |         - |          NA |
| MultiplyMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] | 164.8 ns |  3.30 ns |  6.45 ns | 163.8 ns |  0.98 |    0.06 | 0.0052 |      88 B |          NA |
| MultiplyMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] | 272.1 ns |  5.44 ns | 13.65 ns | 270.4 ns |  1.62 |    0.12 |      - |         - |          NA |
| MultiplyMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] | 730.4 ns |  9.81 ns |  8.19 ns | 728.3 ns |  4.36 |    0.23 |      - |         - |          NA |

ExpMod - big improvement

| Method                  | EnvironmentVariables       | C                   | A                   | B                   | Mean       | Error     | StdDev     | Median     | Ratio | RatioSD | Allocated | Alloc Ratio |
|------------------------ |--------------------------- |-------------------- |-------------------- |-------------------- |-----------:|----------:|-----------:|-----------:|------:|--------:|----------:|------------:|
| ExpMod_BigInteger       | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |   2.411 us | 0.0594 us |  0.1704 us |   2.354 us |  0.05 |    0.00 |         - |          NA |
| ExpMod_UInt256_Standard | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |  53.381 us | 1.0584 us |  2.8796 us |  52.579 us |  1.00 |    0.07 |         - |          NA |
| ExpMod_UInt256_Barrett  | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |   4.431 us | 0.0789 us |  0.1156 us |   4.396 us |  0.08 |    0.00 |         - |          NA |
| ExpMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |   2.525 us | 0.0498 us |  0.0553 us |   2.515 us |  0.05 |    0.00 |         - |          NA |
| ExpMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |  89.131 us | 1.6622 us |  3.5062 us |  87.799 us |  1.67 |    0.11 |         - |          NA |
| ExpMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |   5.111 us | 0.0879 us |  0.1835 us |   5.069 us |  0.10 |    0.01 |         - |          NA |
|                         |                            |                     |                     |                     |            |           |            |            |       |         |           |             |
| ExpMod_BigInteger       | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] |   3.167 us | 0.0576 us |  0.0845 us |   3.170 us |  0.05 |    0.00 |         - |          NA |
| ExpMod_UInt256_Standard | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] |  67.114 us | 1.2308 us |  1.0911 us |  66.819 us |  1.00 |    0.02 |         - |          NA |
| ExpMod_UInt256_Barrett  | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] |   4.266 us | 0.0764 us |  0.0993 us |   4.253 us |  0.06 |    0.00 |         - |          NA |
| ExpMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] |   3.857 us | 0.1090 us |  0.3163 us |   3.751 us |  0.06 |    0.00 |         - |          NA |
| ExpMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 125.694 us | 2.4776 us |  4.3393 us | 125.342 us |  1.87 |    0.07 |         - |          NA |
| ExpMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] |   6.910 us | 0.1177 us |  0.0983 us |   6.932 us |  0.10 |    0.00 |         - |          NA |
|                         |                            |                     |                     |                     |            |           |            |            |       |         |           |             |
| ExpMod_BigInteger       | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] |  91.025 us | 1.7967 us |  3.0019 us |  91.132 us |  0.42 |    0.02 |      56 B |          NA |
| ExpMod_UInt256_Standard | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 215.493 us | 4.2568 us |  5.0674 us | 214.468 us |  1.00 |    0.03 |         - |          NA |
| ExpMod_UInt256_Barrett  | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 166.974 us | 3.2350 us |  4.0913 us | 167.223 us |  0.78 |    0.03 |         - |          NA |
| ExpMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] |  71.623 us | 1.4187 us |  3.5593 us |  71.041 us |  0.33 |    0.02 |      56 B |          NA |
| ExpMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 302.563 us | 5.4804 us |  4.8582 us | 302.221 us |  1.40 |    0.04 |         - |          NA |
| ExpMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 234.616 us | 4.6583 us |  8.6345 us | 232.854 us |  1.09 |    0.05 |         - |          NA |
|                         |                            |                     |                     |                     |            |           |            |            |       |         |           |             |
| ExpMod_BigInteger       | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 141.452 us | 2.7360 us |  2.8096 us | 141.849 us |  0.49 |    0.02 |      56 B |          NA |
| ExpMod_UInt256_Standard | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 286.343 us | 5.6245 us | 11.1021 us | 286.294 us |  1.00 |    0.05 |         - |          NA |
| ExpMod_UInt256_Barrett  | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 222.078 us | 4.2845 us |  4.9340 us | 220.532 us |  0.78 |    0.03 |         - |          NA |
| ExpMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 132.595 us | 2.4931 us |  2.2101 us | 132.257 us |  0.46 |    0.02 |      56 B |          NA |
| ExpMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 417.725 us | 8.0373 us | 13.8639 us | 412.986 us |  1.46 |    0.07 |         - |          NA |
| ExpMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 307.736 us | 6.1324 us | 14.3342 us | 305.696 us |  1.08 |    0.06 |         - |          NA |
|                         |                            |                     |                     |                     |            |           |            |            |       |         |           |             |
| ExpMod_BigInteger       | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] |  65.837 us | 1.2699 us |  1.3041 us |  65.642 us |  0.30 |    0.01 |      56 B |          NA |
| ExpMod_UInt256_Standard | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 218.894 us | 4.2894 us |  7.5125 us | 218.089 us |  1.00 |    0.05 |         - |          NA |
| ExpMod_UInt256_Barrett  | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 161.255 us | 3.0192 us |  4.7888 us | 160.485 us |  0.74 |    0.03 |         - |          NA |
| ExpMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] |  64.190 us | 1.2827 us |  1.2598 us |  64.487 us |  0.29 |    0.01 |      56 B |          NA |
| ExpMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 303.838 us | 5.9509 us |  6.8530 us | 303.443 us |  1.39 |    0.06 |         - |          NA |
| ExpMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 209.387 us | 3.3426 us |  2.9632 us | 209.517 us |  0.96 |    0.03 |         - |          NA |
|                         |                            |                     |                     |                     |            |           |            |            |       |         |           |             |
| ExpMod_BigInteger       | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] |  89.812 us | 1.2529 us |  1.0462 us |  90.173 us |  0.31 |    0.01 |      56 B |          NA |
| ExpMod_UInt256_Standard | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 294.168 us | 5.8774 us | 13.9684 us | 297.425 us |  1.00 |    0.07 |         - |          NA |
| ExpMod_UInt256_Barrett  | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 222.115 us | 4.2894 us |  4.2128 us | 222.217 us |  0.76 |    0.04 |         - |          NA |
| ExpMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] |  98.146 us | 1.9403 us |  2.2345 us |  97.886 us |  0.33 |    0.02 |      56 B |          NA |
| ExpMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 414.536 us | 8.0051 us | 10.4090 us | 414.299 us |  1.41 |    0.08 |         - |          NA |
| ExpMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 277.736 us | 5.3159 us |  5.2210 us | 278.386 us |  0.95 |    0.05 |         - |          NA |
|                         |                            |                     |                     |                     |            |           |            |            |       |         |           |             |
| ExpMod_BigInteger       | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |   2.510 us | 0.0496 us |  0.0944 us |   2.504 us |  0.05 |    0.00 |         - |          NA |
| ExpMod_UInt256_Standard | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |  54.730 us | 1.0551 us |  1.4442 us |  54.601 us |  1.00 |    0.04 |         - |          NA |
| ExpMod_UInt256_Barrett  | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |   4.213 us | 0.0803 us |  0.1126 us |   4.225 us |  0.08 |    0.00 |         - |          NA |
| ExpMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |   2.726 us | 0.0535 us |  0.0767 us |   2.736 us |  0.05 |    0.00 |         - |          NA |
| ExpMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |  91.118 us | 1.6081 us |  1.3429 us |  91.101 us |  1.67 |    0.05 |         - |          NA |
| ExpMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |   5.301 us | 0.0980 us |  0.1274 us |   5.290 us |  0.10 |    0.00 |         - |          NA |
|                         |                            |                     |                     |                     |            |           |            |            |       |         |           |             |
| ExpMod_BigInteger       | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] |   3.359 us | 0.0652 us |  0.0776 us |   3.363 us |  0.05 |    0.00 |         - |          NA |
| ExpMod_UInt256_Standard | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] |  73.269 us | 1.4629 us |  2.8185 us |  73.038 us |  1.00 |    0.05 |         - |          NA |
| ExpMod_UInt256_Barrett  | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] |   4.551 us | 0.0887 us |  0.0871 us |   4.554 us |  0.06 |    0.00 |         - |          NA |
| ExpMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] |   3.747 us | 0.0732 us |  0.1222 us |   3.721 us |  0.05 |    0.00 |         - |          NA |
| ExpMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] | 123.957 us | 2.3851 us |  2.8393 us | 123.070 us |  1.69 |    0.08 |         - |          NA |
| ExpMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] |   6.703 us | 0.1307 us |  0.1556 us |   6.657 us |  0.09 |    0.00 |         - |          NA |

AddMod

| Method                   | EnvironmentVariables       | C                   | A                   | B                   | Mean       | Error     | StdDev    | Ratio | RatioSD | Gen0   | Allocated | Alloc Ratio |
|------------------------- |--------------------------- |-------------------- |-------------------- |-------------------- |-----------:|----------:|----------:|------:|--------:|-------:|----------:|------------:|
| AddMod_BigInteger        | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |  47.393 ns | 0.7488 ns | 0.6638 ns |  0.78 |    0.01 | 0.0033 |      56 B |          NA |
| AddMod_UInt256_Standard  | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |  60.566 ns | 0.3242 ns | 0.2708 ns |  1.00 |    0.01 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] | 237.381 ns | 1.7960 ns | 1.5921 ns |  3.92 |    0.03 |      - |         - |          NA |
| AddMod_UInt256_Optimized | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |  59.856 ns | 1.0634 ns | 0.9947 ns |  0.99 |    0.02 |      - |         - |          NA |
| AddMod_BigInteger        | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |  45.831 ns | 0.5537 ns | 0.4908 ns |  0.76 |    0.01 | 0.0033 |      56 B |          NA |
| AddMod_UInt256_Standard  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |  95.980 ns | 0.6193 ns | 0.4835 ns |  1.58 |    0.01 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] | 362.333 ns | 2.9602 ns | 2.6241 ns |  5.98 |    0.05 |      - |         - |          NA |
| AddMod_UInt256_Optimized | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |  96.884 ns | 0.7874 ns | 0.7366 ns |  1.60 |    0.01 |      - |         - |          NA |
|                          |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| AddMod_BigInteger        | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] |  63.324 ns | 1.1029 ns | 1.0316 ns |  0.84 |    0.01 | 0.0072 |     120 B |          NA |
| AddMod_UInt256_Standard  | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] |  75.473 ns | 0.4278 ns | 0.4001 ns |  1.00 |    0.01 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 332.493 ns | 3.5893 ns | 3.3575 ns |  4.41 |    0.05 |      - |         - |          NA |
| AddMod_UInt256_Optimized | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] |  71.660 ns | 1.0007 ns | 0.8871 ns |  0.95 |    0.01 |      - |         - |          NA |
| AddMod_BigInteger        | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] |  55.406 ns | 0.8190 ns | 0.7260 ns |  0.73 |    0.01 | 0.0072 |     120 B |          NA |
| AddMod_UInt256_Standard  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 115.023 ns | 2.3241 ns | 3.6863 ns |  1.52 |    0.05 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 478.369 ns | 7.4134 ns | 6.1906 ns |  6.34 |    0.09 |      - |         - |          NA |
| AddMod_UInt256_Optimized | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 112.790 ns | 2.2170 ns | 2.1774 ns |  1.49 |    0.03 |      - |         - |          NA |
|                          |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| AddMod_BigInteger        | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] |  60.063 ns | 1.2288 ns | 1.8011 ns |  0.80 |    0.03 | 0.0072 |     120 B |          NA |
| AddMod_UInt256_Standard  | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] |  75.215 ns | 1.5380 ns | 1.5105 ns |  1.00 |    0.03 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 324.951 ns | 2.0942 ns | 1.8565 ns |  4.32 |    0.09 |      - |         - |          NA |
| AddMod_UInt256_Optimized | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] |  69.542 ns | 0.3489 ns | 0.3263 ns |  0.92 |    0.02 |      - |         - |          NA |
| AddMod_BigInteger        | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] |  59.453 ns | 1.2114 ns | 3.1912 ns |  0.79 |    0.04 | 0.0072 |     120 B |          NA |
| AddMod_UInt256_Standard  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 112.042 ns | 0.9441 ns | 0.8831 ns |  1.49 |    0.03 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 480.434 ns | 4.4132 ns | 3.6853 ns |  6.39 |    0.13 |      - |         - |          NA |
| AddMod_UInt256_Optimized | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 110.503 ns | 1.8101 ns | 1.5115 ns |  1.47 |    0.03 |      - |         - |          NA |
|                          |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| AddMod_BigInteger        | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] |  60.496 ns | 0.7402 ns | 0.6562 ns |  0.80 |    0.01 | 0.0072 |     120 B |          NA |
| AddMod_UInt256_Standard  | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] |  75.597 ns | 0.5498 ns | 0.4591 ns |  1.00 |    0.01 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 322.263 ns | 2.0702 ns | 1.7287 ns |  4.26 |    0.03 |      - |         - |          NA |
| AddMod_UInt256_Optimized | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] |  70.632 ns | 0.8761 ns | 0.8195 ns |  0.93 |    0.01 |      - |         - |          NA |
| AddMod_BigInteger        | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] |  56.838 ns | 1.1622 ns | 1.1414 ns |  0.75 |    0.02 | 0.0072 |     120 B |          NA |
| AddMod_UInt256_Standard  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 112.030 ns | 0.8902 ns | 0.6950 ns |  1.48 |    0.01 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 498.978 ns | 3.3381 ns | 3.1225 ns |  6.60 |    0.06 |      - |         - |          NA |
| AddMod_UInt256_Optimized | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 111.991 ns | 2.0102 ns | 1.9743 ns |  1.48 |    0.03 |      - |         - |          NA |
|                          |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| AddMod_BigInteger        | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] |  43.088 ns | 0.8694 ns | 0.8539 ns |  4.47 |    0.09 | 0.0067 |     112 B |          NA |
| AddMod_UInt256_Standard  | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] |   9.641 ns | 0.0489 ns | 0.0408 ns |  1.00 |    0.01 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 137.602 ns | 0.8403 ns | 0.7017 ns | 14.27 |    0.09 |      - |         - |          NA |
| AddMod_UInt256_Optimized | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] |   6.149 ns | 0.0674 ns | 0.0597 ns |  0.64 |    0.01 |      - |         - |          NA |
| AddMod_BigInteger        | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] |  42.517 ns | 0.7948 ns | 1.7939 ns |  4.41 |    0.19 | 0.0067 |     112 B |          NA |
| AddMod_UInt256_Standard  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] |  21.364 ns | 0.1346 ns | 0.1193 ns |  2.22 |    0.01 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 226.697 ns | 3.4693 ns | 3.2452 ns | 23.51 |    0.34 |      - |         - |          NA |
| AddMod_UInt256_Optimized | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] |  18.171 ns | 0.3261 ns | 0.3050 ns |  1.88 |    0.03 |      - |         - |          NA |
|                          |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| AddMod_BigInteger        | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] |  58.040 ns | 0.8311 ns | 0.7368 ns |  0.75 |    0.03 | 0.0072 |     120 B |          NA |
| AddMod_UInt256_Standard  | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] |  77.333 ns | 1.5721 ns | 2.7535 ns |  1.00 |    0.05 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 326.264 ns | 6.1658 ns | 6.0556 ns |  4.22 |    0.16 |      - |         - |          NA |
| AddMod_UInt256_Optimized | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] |  71.147 ns | 1.3169 ns | 1.2934 ns |  0.92 |    0.04 |      - |         - |          NA |
| AddMod_BigInteger        | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] |  53.617 ns | 1.0225 ns | 2.5840 ns |  0.69 |    0.04 | 0.0072 |     120 B |          NA |
| AddMod_UInt256_Standard  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 109.885 ns | 0.9736 ns | 0.9107 ns |  1.42 |    0.05 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 480.794 ns | 8.2966 ns | 7.7606 ns |  6.22 |    0.23 |      - |         - |          NA |
| AddMod_UInt256_Optimized | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 113.975 ns | 2.2484 ns | 6.0015 ns |  1.48 |    0.09 |      - |         - |          NA |
|                          |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| AddMod_BigInteger        | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |  59.754 ns | 1.2241 ns | 1.4571 ns |  0.82 |    0.02 | 0.0072 |     120 B |          NA |
| AddMod_UInt256_Standard  | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |  73.244 ns | 0.6762 ns | 0.5994 ns |  1.00 |    0.01 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] | 320.138 ns | 2.8379 ns | 2.6546 ns |  4.37 |    0.05 |      - |         - |          NA |
| AddMod_UInt256_Optimized | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |  68.919 ns | 0.5246 ns | 0.4381 ns |  0.94 |    0.01 |      - |         - |          NA |
| AddMod_BigInteger        | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |  53.021 ns | 1.0866 ns | 1.8452 ns |  0.72 |    0.03 | 0.0072 |     120 B |          NA |
| AddMod_UInt256_Standard  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] | 108.843 ns | 0.7252 ns | 0.6429 ns |  1.49 |    0.01 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] | 473.775 ns | 1.7795 ns | 1.4860 ns |  6.47 |    0.05 |      - |         - |          NA |
| AddMod_UInt256_Optimized | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] | 108.012 ns | 1.2566 ns | 1.1139 ns |  1.47 |    0.02 |      - |         - |          NA |
|                          |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| AddMod_BigInteger        | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] |  51.656 ns | 0.5480 ns | 0.5126 ns |  0.66 |    0.01 | 0.0038 |      64 B |          NA |
| AddMod_UInt256_Standard  | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] |  78.632 ns | 0.4613 ns | 0.3852 ns |  1.00 |    0.01 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] | 322.064 ns | 6.2698 ns | 6.1578 ns |  4.10 |    0.08 |      - |         - |          NA |
| AddMod_UInt256_Optimized | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] |  79.379 ns | 1.5792 ns | 1.8186 ns |  1.01 |    0.02 |      - |         - |          NA |
| AddMod_BigInteger        | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] |  45.573 ns | 0.3555 ns | 0.2969 ns |  0.58 |    0.00 | 0.0038 |      64 B |          NA |
| AddMod_UInt256_Standard  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] | 109.733 ns | 0.5742 ns | 0.5371 ns |  1.40 |    0.01 |      - |         - |          NA |
| AddMod_UInt256_Barrett   | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] | 472.850 ns | 3.6002 ns | 3.1915 ns |  6.01 |    0.05 |      - |         - |          NA |
| AddMod_UInt256_Optimized | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] | 106.198 ns | 0.5154 ns | 0.4569 ns |  1.35 |    0.01 |      - |         - |          NA |

SubMod:

| Method                       | EnvironmentVariables       | C                   | A                   | B                   | Mean       | Error     | StdDev    | Ratio | RatioSD | Gen0   | Allocated | Alloc Ratio |
|----------------------------- |--------------------------- |-------------------- |-------------------- |-------------------- |-----------:|----------:|----------:|------:|--------:|-------:|----------:|------------:|
| SubtractMod_BigInteger       | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |  24.013 ns | 0.3967 ns | 0.3313 ns |  3.62 |    0.07 |      - |         - |          NA |
| SubtractMod_UInt256_Standard | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |   6.638 ns | 0.1051 ns | 0.0983 ns |  1.00 |    0.02 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] | 139.939 ns | 0.5874 ns | 0.5494 ns | 21.09 |    0.31 |      - |         - |          NA |
| SubtractMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |  25.270 ns | 0.5237 ns | 0.7511 ns |  3.81 |    0.12 |      - |         - |          NA |
| SubtractMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] |  23.320 ns | 0.1746 ns | 0.1633 ns |  3.51 |    0.06 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (619(...)658) [156] | 235.902 ns | 2.6307 ns | 2.1968 ns | 35.55 |    0.60 |      - |         - |          NA |
|                              |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| SubtractMod_BigInteger       | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] |  56.609 ns | 0.4925 ns | 0.4607 ns |  0.95 |    0.01 | 0.0067 |     112 B |          NA |
| SubtractMod_UInt256_Standard | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] |  59.518 ns | 0.7418 ns | 0.6194 ns |  1.00 |    0.01 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | Empty                      | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 221.198 ns | 4.0829 ns | 4.0099 ns |  3.72 |    0.08 |      - |         - |          NA |
| SubtractMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] |  55.697 ns | 1.1365 ns | 1.5556 ns |  0.94 |    0.03 | 0.0067 |     112 B |          NA |
| SubtractMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 124.960 ns | 2.0446 ns | 1.8125 ns |  2.10 |    0.04 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (619(...)658) [156] | (115(...)935) [160] | 423.380 ns | 5.9294 ns | 5.5464 ns |  7.11 |    0.11 |      - |         - |          NA |
|                              |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| SubtractMod_BigInteger       | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] |  58.713 ns | 1.1722 ns | 2.2302 ns |  1.00 |    0.04 | 0.0067 |     112 B |          NA |
| SubtractMod_UInt256_Standard | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] |  58.646 ns | 0.9708 ns | 0.8606 ns |  1.00 |    0.02 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 229.167 ns | 4.4145 ns | 4.9067 ns |  3.91 |    0.10 |      - |         - |          NA |
| SubtractMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] |  54.536 ns | 1.0584 ns | 1.9617 ns |  0.93 |    0.04 | 0.0067 |     112 B |          NA |
| SubtractMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] |  98.322 ns | 1.9370 ns | 2.4496 ns |  1.68 |    0.05 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (619(...)658) [156] | 389.020 ns | 7.4011 ns | 8.5231 ns |  6.63 |    0.17 |      - |         - |          NA |
|                              |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| SubtractMod_BigInteger       | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] |  23.858 ns | 0.4065 ns | 0.3802 ns |  3.53 |    0.10 |      - |         - |          NA |
| SubtractMod_UInt256_Standard | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] |   6.761 ns | 0.1500 ns | 0.1668 ns |  1.00 |    0.03 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | Empty                      | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 140.085 ns | 1.3728 ns | 1.2169 ns | 20.73 |    0.53 |      - |         - |          NA |
| SubtractMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] |  24.747 ns | 0.4938 ns | 0.4850 ns |  3.66 |    0.11 |      - |         - |          NA |
| SubtractMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] |  23.718 ns | 0.3855 ns | 0.3606 ns |  3.51 |    0.10 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (619(...)658) [156] | (115(...)935) [160] | (115(...)935) [160] | 235.081 ns | 2.1507 ns | 2.0118 ns | 34.79 |    0.88 |      - |         - |          NA |
|                              |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| SubtractMod_BigInteger       | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] |  23.837 ns | 0.2366 ns | 0.1975 ns |  4.87 |    0.18 |      - |         - |          NA |
| SubtractMod_UInt256_Standard | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] |   4.901 ns | 0.1226 ns | 0.1835 ns |  1.00 |    0.05 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 143.459 ns | 2.1486 ns | 1.9046 ns | 29.31 |    1.12 |      - |         - |          NA |
| SubtractMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] |  24.808 ns | 0.5114 ns | 0.5472 ns |  5.07 |    0.21 |      - |         - |          NA |
| SubtractMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] |  23.572 ns | 0.1226 ns | 0.1024 ns |  4.82 |    0.17 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (619(...)658) [156] | 238.844 ns | 4.7222 ns | 5.0527 ns | 48.80 |    2.02 |      - |         - |          NA |
|                              |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| SubtractMod_BigInteger       | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] |  45.294 ns | 0.9189 ns | 1.0583 ns |  4.03 |    0.09 | 0.0067 |     112 B |          NA |
| SubtractMod_UInt256_Standard | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] |  11.239 ns | 0.0698 ns | 0.0618 ns |  1.00 |    0.01 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | Empty                      | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 145.832 ns | 2.3485 ns | 1.9611 ns | 12.98 |    0.18 |      - |         - |          NA |
| SubtractMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] |  41.343 ns | 0.8241 ns | 0.8094 ns |  3.68 |    0.07 | 0.0067 |     112 B |          NA |
| SubtractMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] |  44.875 ns | 0.3473 ns | 0.3249 ns |  3.99 |    0.04 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (619(...)658) [156] | (115(...)935) [160] | 244.831 ns | 2.5376 ns | 2.3736 ns | 21.78 |    0.24 |      - |         - |          NA |
|                              |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| SubtractMod_BigInteger       | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |  44.539 ns | 0.8144 ns | 0.7219 ns |  5.64 |    0.09 | 0.0067 |     112 B |          NA |
| SubtractMod_UInt256_Standard | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |   7.899 ns | 0.0350 ns | 0.0328 ns |  1.00 |    0.01 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] | 140.523 ns | 1.0119 ns | 0.7900 ns | 17.79 |    0.12 |      - |         - |          NA |
| SubtractMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |  41.330 ns | 0.8257 ns | 0.9509 ns |  5.23 |    0.12 | 0.0067 |     112 B |          NA |
| SubtractMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] |  19.488 ns | 0.2867 ns | 0.2682 ns |  2.47 |    0.03 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (619(...)658) [156] | 234.090 ns | 2.1482 ns | 1.7938 ns | 29.64 |    0.25 |      - |         - |          NA |
|                              |                            |                     |                     |                     |            |           |           |       |         |        |           |             |
| SubtractMod_BigInteger       | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] |  23.296 ns | 0.2694 ns | 0.2520 ns |  3.12 |    0.04 |      - |         - |          NA |
| SubtractMod_UInt256_Standard | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] |   7.466 ns | 0.0757 ns | 0.0671 ns |  1.00 |    0.01 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | Empty                      | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] | 140.840 ns | 1.3840 ns | 1.2946 ns | 18.87 |    0.23 |      - |         - |          NA |
| SubtractMod_BigInteger       | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] |  24.459 ns | 0.1111 ns | 0.0984 ns |  3.28 |    0.03 |      - |         - |          NA |
| SubtractMod_UInt256_Standard | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] |  22.802 ns | 0.0733 ns | 0.0612 ns |  3.05 |    0.03 |      - |         - |          NA |
| SubtractMod_UInt256_Barrett  | DOTNET_EnableHWIntrinsic=0 | (115(...)935) [160] | (115(...)935) [160] | (115(...)935) [160] | 230.459 ns | 2.9534 ns | 2.7626 ns | 30.87 |    0.45 |      - |         - |          NA |

@LukaszRozmej
Copy link
Member Author

ok i give up

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants