SPB Git

spb/wp34_uqo

Public
98.0 KB · 3,947 lines json
1{2 "experiment": "signature_benchmarks",3 "timestamp_utc": "2026-11-01T05:49:56+00:00",4 "command": "experiments/signature_benchmarks/run_bench.py --no-build --seed 34 --label Laptop (Apple M5 Max)",5 "cwd": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/mathematiques/beyond-square-root-barrier",6 "seed": 34,7 "host": {8  "hostname": "MacBookPro-de-simon-pierre-2.local",9  "os": "Darwin 27.0.0 (27.0)",10  "machine": "arm64",11  "python": "3.12.13",12  "cpu": "Apple M5 Max",13  "cores": 18,14  "ram_gb": 48.015 },16 "software": {17  "numpy": "2.5.4",18  "scipy": "1.18.1",19  "sympy": "1.14.0",20  "gmpy2": "2.3.2",21  "z3": "5.3.3",22  "pysat": "1.9.dev17",23  "ecdsa": "0.19.2",24  "coincurve": "21.0.0"25 },26 "params": {27  "seed": 34,28  "reps": 7,29  "batch_ops": 2000,30  "batch_min_sigs": 2000,31  "batch_sizes": [32   1,33   2,34   4,35   8,36   16,37   32,38   64,39   128,40   256,41   512,42   1024,43   204844  ],45  "crosscheck_n": 1000,46  "python_crosscheck_n": 200,47  "bootstrap": 2000,48  "python_ops": 20,49  "rust_command": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/mathematiques/beyond-square-root-barrier/experiments/signature_benchmarks/sigbench/target/release/sigbench --seed 34 --reps 7 --batch-ops 2000 --batch-min-sigs 2000 --batch-sizes 1,2,4,8,16,32,64,128,256,512,1024,2048 --crosscheck-n 1000 --python-crosscheck-n 200 --bootstrap 2000 --vectors /Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/mathematiques/beyond-square-root-barrier/data/vectors/bip340_test_vectors.csv --crosscheck-out /Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/mathematiques/beyond-square-root-barrier/results/signature_benchmarks/crosscheck_triples_MacBookPro-de-simon-pierre-2.json"50 },51 "measurements": {52  "correctness_gates": {53   "bip340_vectors_both_libraries": true,54   "cross_library_1000": true,55   "python_reference_200": true,56   "own_scalar_mult_agrees_with_k256": true,57   "batch_negative_controls_rejected": true,58   "all": true59  },60  "bip340_vectors": {61   "both_all_pass": true,62   "file": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/mathematiques/beyond-square-root-barrier/data/vectors/bip340_test_vectors.csv",63   "k256": {64    "all_pass": true,65    "details": [66     {67      "comment": "",68      "expected": true,69      "index": 0,70      "sign_checked": true,71      "sign_ok": true,72      "verify_ok": true73     },74     {75      "comment": "",76      "expected": true,77      "index": 1,78      "sign_checked": true,79      "sign_ok": true,80      "verify_ok": true81     },82     {83      "comment": "",84      "expected": true,85      "index": 2,86      "sign_checked": true,87      "sign_ok": true,88      "verify_ok": true89     },90     {91      "comment": "test fails if msg is reduced modulo p or n",92      "expected": true,93      "index": 3,94      "sign_checked": true,95      "sign_ok": true,96      "verify_ok": true97     },98     {99      "comment": "",100      "expected": true,101      "index": 4,102      "sign_checked": false,103      "sign_ok": null,104      "verify_ok": true105     },106     {107      "comment": "public key not on the curve",108      "expected": false,109      "index": 5,110      "sign_checked": false,111      "sign_ok": null,112      "verify_ok": true113     },114     {115      "comment": "has_even_y(R) is false",116      "expected": false,117      "index": 6,118      "sign_checked": false,119      "sign_ok": null,120      "verify_ok": true121     },122     {123      "comment": "negated message",124      "expected": false,125      "index": 7,126      "sign_checked": false,127      "sign_ok": null,128      "verify_ok": true129     },130     {131      "comment": "negated s value",132      "expected": false,133      "index": 8,134      "sign_checked": false,135      "sign_ok": null,136      "verify_ok": true137     },138     {139      "comment": "sG - eP is infinite. Test fails in single verification if has_even_y(inf) is defined as true and x(inf) as 0",140      "expected": false,141      "index": 9,142      "sign_checked": false,143      "sign_ok": null,144      "verify_ok": true145     },146     {147      "comment": "sG - eP is infinite. Test fails in single verification if has_even_y(inf) is defined as true and x(inf) as 1",148      "expected": false,149      "index": 10,150      "sign_checked": false,151      "sign_ok": null,152      "verify_ok": true153     },154     {155      "comment": "sig[0:32] is not an X coordinate on the curve",156      "expected": false,157      "index": 11,158      "sign_checked": false,159      "sign_ok": null,160      "verify_ok": true161     },162     {163      "comment": "sig[0:32] is equal to field size",164      "expected": false,165      "index": 12,166      "sign_checked": false,167      "sign_ok": null,168      "verify_ok": true169     },170     {171      "comment": "sig[32:64] is equal to curve order",172      "expected": false,173      "index": 13,174      "sign_checked": false,175      "sign_ok": null,176      "verify_ok": true177     },178     {179      "comment": "public key is not a valid X coordinate because it exceeds the field size",180      "expected": false,181      "index": 14,182      "sign_checked": false,183      "sign_ok": null,184      "verify_ok": true185     },186     {187      "comment": "message of size 0 (added 2022-12)",188      "expected": true,189      "index": 15,190      "sign_checked": true,191      "sign_ok": true,192      "verify_ok": true193     },194     {195      "comment": "message of size 1 (added 2022-12)",196      "expected": true,197      "index": 16,198      "sign_checked": true,199      "sign_ok": true,200      "verify_ok": true201     },202     {203      "comment": "message of size 17 (added 2022-12)",204      "expected": true,205      "index": 17,206      "sign_checked": true,207      "sign_ok": true,208      "verify_ok": true209     },210     {211      "comment": "message of size 100 (added 2022-12)",212      "expected": true,213      "index": 18,214      "sign_checked": true,215      "sign_ok": true,216      "verify_ok": true217     }218    ],219    "library": "k256 (RustCrypto)",220    "n_vectors": 19,221    "sign_cases": 8,222    "sign_pass": 8,223    "verify_pass": 19224   },225   "libsecp256k1": {226    "all_pass": true,227    "details": [228     {229      "comment": "",230      "expected": true,231      "index": 0,232      "sign_checked": true,233      "sign_ok": true,234      "verify_ok": true235     },236     {237      "comment": "",238      "expected": true,239      "index": 1,240      "sign_checked": true,241      "sign_ok": true,242      "verify_ok": true243     },244     {245      "comment": "",246      "expected": true,247      "index": 2,248      "sign_checked": true,249      "sign_ok": true,250      "verify_ok": true251     },252     {253      "comment": "test fails if msg is reduced modulo p or n",254      "expected": true,255      "index": 3,256      "sign_checked": true,257      "sign_ok": true,258      "verify_ok": true259     },260     {261      "comment": "",262      "expected": true,263      "index": 4,264      "sign_checked": false,265      "sign_ok": null,266      "verify_ok": true267     },268     {269      "comment": "public key not on the curve",270      "expected": false,271      "index": 5,272      "sign_checked": false,273      "sign_ok": null,274      "verify_ok": true275     },276     {277      "comment": "has_even_y(R) is false",278      "expected": false,279      "index": 6,280      "sign_checked": false,281      "sign_ok": null,282      "verify_ok": true283     },284     {285      "comment": "negated message",286      "expected": false,287      "index": 7,288      "sign_checked": false,289      "sign_ok": null,290      "verify_ok": true291     },292     {293      "comment": "negated s value",294      "expected": false,295      "index": 8,296      "sign_checked": false,297      "sign_ok": null,298      "verify_ok": true299     },300     {301      "comment": "sG - eP is infinite. Test fails in single verification if has_even_y(inf) is defined as true and x(inf) as 0",302      "expected": false,303      "index": 9,304      "sign_checked": false,305      "sign_ok": null,306      "verify_ok": true307     },308     {309      "comment": "sG - eP is infinite. Test fails in single verification if has_even_y(inf) is defined as true and x(inf) as 1",310      "expected": false,311      "index": 10,312      "sign_checked": false,313      "sign_ok": null,314      "verify_ok": true315     },316     {317      "comment": "sig[0:32] is not an X coordinate on the curve",318      "expected": false,319      "index": 11,320      "sign_checked": false,321      "sign_ok": null,322      "verify_ok": true323     },324     {325      "comment": "sig[0:32] is equal to field size",326      "expected": false,327      "index": 12,328      "sign_checked": false,329      "sign_ok": null,330      "verify_ok": true331     },332     {333      "comment": "sig[32:64] is equal to curve order",334      "expected": false,335      "index": 13,336      "sign_checked": false,337      "sign_ok": null,338      "verify_ok": true339     },340     {341      "comment": "public key is not a valid X coordinate because it exceeds the field size",342      "expected": false,343      "index": 14,344      "sign_checked": false,345      "sign_ok": null,346      "verify_ok": true347     },348     {349      "comment": "message of size 0 (added 2022-12)",350      "expected": true,351      "index": 15,352      "sign_checked": true,353      "sign_ok": true,354      "verify_ok": true355     },356     {357      "comment": "message of size 1 (added 2022-12)",358      "expected": true,359      "index": 16,360      "sign_checked": true,361      "sign_ok": true,362      "verify_ok": true363     },364     {365      "comment": "message of size 17 (added 2022-12)",366      "expected": true,367      "index": 17,368      "sign_checked": true,369      "sign_ok": true,370      "verify_ok": true371     },372     {373      "comment": "message of size 100 (added 2022-12)",374      "expected": true,375      "index": 18,376      "sign_checked": true,377      "sign_ok": true,378      "verify_ok": true379     }380    ],381    "library": "libsecp256k1 (rust-secp256k1)",382    "n_vectors": 19,383    "sign_cases": 8,384    "sign_pass": 8,385    "verify_pass": 19386   },387   "n_vectors": 19388  },389  "cross_library_checks": {390   "all_pass": true,391   "ecdsa_k256_sign_libsecp_verify_pass": 1000,392   "ecdsa_libsecp_sign_k256_verify_pass": 1000,393   "ecdsa_signatures_byte_identical": 1000,394   "n": 1000,395   "schnorr_k256_sign_libsecp_verify_pass": 1000,396   "schnorr_libsecp_sign_k256_verify_pass": 1000,397   "schnorr_signatures_byte_identical": 1000398  },399  "python_reference_crosscheck": {400   "n": 200,401   "source": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/mathematiques/beyond-square-root-barrier/results/signature_benchmarks/crosscheck_triples_MacBookPro-de-simon-pierre-2.json",402   "ecdsa_k256_sig_verified_by_python": 200,403   "ecdsa_libsecp_sig_verified_by_python": 200,404   "ecdsa_python_resign_identical": 200,405   "schnorr_k256_sig_verified_by_python": 200,406   "schnorr_libsecp_sig_verified_by_python": 200,407   "schnorr_python_resign_identical": 200,408   "tampered_sig_rejected_by_python": 200,409   "elapsed_s": 11.27,410   "resign_checked": true,411   "all_pass": true412  },413  "sign_verify": {414   "ecdsa_sign_k256": {415    "iqr_ns": 304.8125,416    "mean_ns": 15284.860142857144,417    "median_ns": 15267.4375,418    "min_ns": 15064.0625,419    "ns_per_op_samples": [420     15743.146,421     15066.979,422     15087.896,423     15064.0625,424     15334.375,425     15430.125,426     15267.4375427    ],428    "ops_per_rep": 2000,429    "ops_per_s": 65498.87628490374,430    "q1_ns": 15077.4375,431    "q3_ns": 15382.25,432    "reps": 7,433    "sd_ns": 247.9589146798846434   },435   "ecdsa_sign_libsecp256k1": {436    "iqr_ns": 16.53074999999808,437    "mean_ns": 23624.657714285713,438    "median_ns": 23630.833,439    "min_ns": 23605.9795,440    "ns_per_op_samples": [441     23635.979,442     23631.604,443     23605.9795,444     23634.833,445     23616.4585,446     23630.833,447     23616.917448    ],449    "ops_per_rep": 2000,450    "ops_per_s": 42317.594136440304,451    "q1_ns": 23616.68775,452    "q3_ns": 23633.2185,453    "reps": 7,454    "sd_ns": 11.504451674087065455   },456   "ecdsa_verify_k256": {457    "iqr_ns": 503.8962500000016,458    "mean_ns": 24928.16671428571,459    "median_ns": 25012.0835,460    "min_ns": 24629.3125,461    "ns_per_op_samples": [462     24629.3125,463     25012.0835,464     25263.0625,465     25127.417,466     24655.729,467     24636.729,468     25172.8335469    ],470    "ops_per_rep": 2000,471    "ops_per_s": 39980.67574018773,472    "q1_ns": 24646.229,473    "q3_ns": 25150.12525,474    "reps": 7,475    "sd_ns": 279.0554955178958476   },477   "ecdsa_verify_libsecp256k1": {478    "iqr_ns": 88.03099999999904,479    "mean_ns": 12607.327357142856,480    "median_ns": 12615.604,481    "min_ns": 12460.521,482    "ns_per_op_samples": [483     12771.9375,484     12615.604,485     12660.5,486     12562.8125,487     12629.1455,488     12460.521,489     12550.771490    ],491    "ops_per_rep": 2000,492    "ops_per_s": 79266.9142119553,493    "q1_ns": 12556.79175,494    "q3_ns": 12644.82275,495    "reps": 7,496    "sd_ns": 97.63935664121043497   },498   "schnorr_sign_k256": {499    "iqr_ns": 198.40599999999904,500    "mean_ns": 11589.74107142857,501    "median_ns": 11569.0835,502    "min_ns": 11451.0625,503    "ns_per_op_samples": [504     11724.208,505     11460.4585,506     11473.25,507     11843.8125,508     11569.0835,509     11606.3125,510     11451.0625511    ],512    "ops_per_rep": 2000,513    "ops_per_s": 86437.27050634564,514    "q1_ns": 11466.85425,515    "q3_ns": 11665.26025,516    "reps": 7,517    "sd_ns": 148.8012614021435518   },519   "schnorr_sign_libsecp256k1": {520    "iqr_ns": 381.5829999999987,521    "mean_ns": 20523.824285714283,522    "median_ns": 20548.1875,523    "min_ns": 20246.0205,524    "ns_per_op_samples": [525     20275.1875,526     20256.5,527     20246.0205,528     20548.1875,529     21046.021,530     20634.208,531     20660.6455532    ],533    "ops_per_rep": 2000,534    "ops_per_s": 48666.092812322255,535    "q1_ns": 20265.84375,536    "q3_ns": 20647.42675,537    "reps": 7,538    "sd_ns": 292.8722850149957539   },540   "schnorr_verify_k256": {541    "iqr_ns": 716.9579999999987,542    "mean_ns": 24617.791714285715,543    "median_ns": 24486.6875,544    "min_ns": 24107.1045,545    "ns_per_op_samples": [546     24330.7915,547     25160.667,548     25005.6455,549     24996.354,550     24486.6875,551     24237.292,552     24107.1045553    ],554    "ops_per_rep": 2000,555    "ops_per_s": 40838.51684716441,556    "q1_ns": 24284.04175,557    "q3_ns": 25000.99975,558    "reps": 7,559    "sd_ns": 426.9255283433374560   },561   "schnorr_verify_libsecp256k1": {562    "iqr_ns": 116.33324999999968,563    "mean_ns": 13187.339285714286,564    "median_ns": 13197.0415,565    "min_ns": 13020.3545,566    "ns_per_op_samples": [567     13243.1045,568     13124.9585,569     13274.208,570     13020.3545,571     13197.0415,572     13159.6875,573     13292.0205574    ],575    "ops_per_rep": 2000,576    "ops_per_s": 75774.55901764044,577    "q1_ns": 13142.323,578    "q3_ns": 13258.65625,579    "reps": 7,580    "sd_ns": 95.0860352276898581   }582  },583  "scalar_mult": {584   "glv_note": "k256: every constant-time multiplication goes through lincomb(), which always applies the GLV decomposition (no public feature toggle); the vartime path uses GLV + wNAF-5; the only non-GLV reference is our own wNAF-5 double-and-add above. libsecp256k1: the GLV endomorphism has been unconditional since v0.1 (USE_ENDOMORPHISM removed) and ecmult is not exposed by rust-secp256k1's public API; mul_tweak maps to secp256k1_ec_pubkey_tweak_mul (constant-time ecmult_const) and from_secret_key to ecmult_gen (precomputed generator table).",585   "k256_generator_mul_ct_glv": {586    "iqr_ns": 6.63550000000032,587    "mean_ns": 16414.24692857143,588    "median_ns": 16409.729,589    "min_ns": 16409.375,590    "ns_per_op_samples": [591     16409.375,592     16429.4375,593     16409.458,594     16409.5,595     16419.6665,596     16412.5625,597     16409.729598    ],599    "ops_per_rep": 2000,600    "ops_per_s": 60939.45853706664,601    "q1_ns": 16409.479,602    "q3_ns": 16416.1145,603    "reps": 7,604    "sd_ns": 7.665692496596951605   },606   "k256_mul_by_generator_precomputed_table": {607    "iqr_ns": 338.90625,608    "mean_ns": 8261.479214285715,609    "median_ns": 8293.0625,610    "min_ns": 7994.396,611    "ns_per_op_samples": [612     8293.0625,613     8606.5835,614     8386.3125,615     8420.75,616     8029.4375,617     7994.396,618     8099.8125619    ],620    "ops_per_rep": 2000,621    "ops_per_s": 120582.71597494894,622    "q1_ns": 8064.625,623    "q3_ns": 8403.53125,624    "reps": 7,625    "sd_ns": 228.1658502745058626   },627   "k256_mul_by_generator_vartime_table": {628    "iqr_ns": 316.4375,629    "mean_ns": 6602.491071428572,630    "median_ns": 6577.479,631    "min_ns": 6422.6455,632    "ns_per_op_samples": [633     6611.146,634     6577.479,635     6428.0835,636     6423.8125,637     6422.6455,638     6880.646,639     6873.625640    ],641    "ops_per_rep": 2000,642    "ops_per_s": 152033.93275752,643    "q1_ns": 6425.948,644    "q3_ns": 6742.3855,645    "reps": 7,646    "sd_ns": 202.59678569295977647   },648   "k256_point_mul_ct_glv": {649    "iqr_ns": 248.96875,650    "mean_ns": 17254.71121428571,651    "median_ns": 17153.25,652    "min_ns": 16850.646,653    "ns_per_op_samples": [654     16850.646,655     17905.354,656     17073.0625,657     17454.9165,658     17230.9165,659     17153.25,660     17114.833661    ],662    "ops_per_rep": 2000,663    "ops_per_s": 58297.990176788655,664    "q1_ns": 17093.94775,665    "q3_ns": 17342.9165,666    "reps": 7,667    "sd_ns": 339.1434369828955668   },669   "k256_point_mul_vartime_glv_wnaf": {670    "iqr_ns": 196.0,671    "mean_ns": 13868.470214285713,672    "median_ns": 13955.729,673    "min_ns": 13498.625,674    "ns_per_op_samples": [675     14025.625,676     13895.271,677     13955.729,678     13967.125,679     14031.4375,680     13705.479,681     13498.625682    ],683    "ops_per_rep": 2000,684    "ops_per_s": 71655.16040043483,685    "q1_ns": 13800.375,686    "q3_ns": 13996.375,687    "reps": 7,688    "sd_ns": 196.92330397641646689   },690   "libsecp256k1_generator_mul_ecmult_gen": {691    "iqr_ns": 208.21875,692    "mean_ns": 19722.449285714283,693    "median_ns": 19804.583,694    "min_ns": 19531.0415,695    "ns_per_op_samples": [696     19531.0415,697     19580.5625,698     19646.354,699     19851.25,700     19809.229,701     19804.583,702     19834.125703    ],704    "ops_per_rep": 2000,705    "ops_per_s": 50493.36307661717,706    "q1_ns": 19613.45825,707    "q3_ns": 19821.677,708    "reps": 7,709    "sd_ns": 132.85145081125296710   },711   "libsecp256k1_point_mul_tweak_ecmult_const": {712    "iqr_ns": 111.74974999999904,713    "mean_ns": 11528.723214285714,714    "median_ns": 11468.0835,715    "min_ns": 11425.875,716    "ns_per_op_samples": [717     11635.4165,718     11811.0625,719     11451.4375,720     11434.8335,721     11474.354,722     11468.0835,723     11425.875724    ],725    "ops_per_rep": 2000,726    "ops_per_s": 87198.52798420939,727    "q1_ns": 11443.1355,728    "q3_ns": 11554.88525,729    "reps": 7,730    "sd_ns": 143.23537223042376731   },732   "own_wnaf5_agrees_with_k256_64_cases": true,733   "own_wnaf5_point_mul_no_glv": {734    "iqr_ns": 256.1875,735    "mean_ns": 21225.032642857142,736    "median_ns": 21122.021,737    "min_ns": 20927.8955,738    "ns_per_op_samples": [739     21647.479,740     21092.104,741     20927.8955,742     21122.021,743     21322.4375,744     21372.6665,745     21090.625746    ],747    "op_counts_example": {748     "adds": 52,749     "doublings": 257,750     "identity_adds": 1,751     "mixed_adds": 0752    },753    "ops_per_rep": 2000,754    "ops_per_s": 47343.954444510775,755    "q1_ns": 21091.3645,756    "q3_ns": 21347.552,757    "reps": 7,758    "sd_ns": 239.57660758542949759   }760  },761  "batch_verification": {762   "equation": "sum_i a_i s_i G = sum_i a_i R_i + sum_i a_i e_i P_i, a_1 = 1, a_i uniform 128-bit from ChaCha20(seed); R_i = lift_x(r_i), P_i = lift_x(pk_i); merged into one MSM with 2b+1 terms whose result must be the identity",763   "msm_algorithms": {764    "k256_lincomb_ct": "k256 0.14 library: constant-time GLV + radix-16 fixed-window interleaving (benchmarked up to ct_lincomb_max_batch)",765    "k256_lincomb_vartime": "k256 0.14 library: GLV decomposition + wNAF-5 multiscalar (wnaf crate), variable time",766    "pippenger": "own implementation: bucket method with c-bit windows (c = pippenger_window(2b+1)), mixed additions into buckets, running-sum trick",767    "straus_wnaf5": "own implementation: interleaved Straus with width-5 wNAF recoding, per-term odd-multiple tables (1 dbl + 7 adds), projective additions"768   },769   "negative_controls": {770    "all_invalid_batches_rejected": true,771    "batch_size": 64,772    "cases": {773     "r_plus_one": {774      "k256_lincomb_ct": true,775      "k256_lincomb_vartime": true,776      "pippenger": true,777      "straus_wnaf5": true,778      "unmodified_batch_accepted": true779     },780     "s_plus_one": {781      "k256_lincomb_ct": true,782      "k256_lincomb_vartime": true,783      "pippenger": true,784      "straus_wnaf5": true,785      "unmodified_batch_accepted": true786     },787     "wrong_message": {788      "k256_lincomb_ct": true,789      "k256_lincomb_vartime": true,790      "pippenger": true,791      "straus_wnaf5": true,792      "unmodified_batch_accepted": true793     }794    }795   },796   "results": [797    {798     "algorithm": "straus_wnaf5",799     "batch_size": 1,800     "msm_only_ns_per_sig_median": 27251.2275,801     "msm_only_ns_per_sig_samples": [802      27680.5905,803      27248.0795,804      27251.2275,805      27441.3385,806      27224.7355,807      27624.9845,808      27247.457809     ],810     "n_batches_per_rep": 2000,811     "n_terms": 3,812     "op_counts_per_batch": {813      "adds": 107,814      "doublings": 259,815      "identity_adds": 1,816      "mixed_adds": 0817     },818     "op_counts_per_signature": {819      "adds": 107.0,820      "doublings": 259.0,821      "mixed_adds": 0.0,822      "total": 366.0823     },824     "per_signature": {825      "iqr_ns": 326.28099999999904,826      "mean_ns": 30507.928499999998,827      "median_ns": 30351.3125,828      "min_ns": 30322.5,829      "ns_per_op_samples": [830       30837.292,831       30348.4165,832       30351.3125,833       30575.208,834       30322.5,835       30773.2705,836       30347.5837      ],838      "ops_per_rep": 2000,839      "ops_per_s": 32947.50432950799,840      "q1_ns": 30347.95825,841      "q3_ns": 30674.23925,842      "reps": 7,843      "sd_ns": 221.17372698137854844     },845     "sigs_per_rep": 2000,846     "speedup_vs_k256_single_verify": {847      "bootstrap_resamples": 2000,848      "ci95_high": 0.8239528536645611,849      "ci95_low": 0.7906469187277316,850      "point": 0.8067752424215592851     },852     "speedup_vs_libsecp256k1_single_verify": {853      "bootstrap_resamples": 2000,854      "ci95_high": 0.4373937599017728,855      "ci95_low": 0.4276336991870916,856      "point": 0.4348095819579466857     },858     "window_bits": 5859    },860    {861     "algorithm": "pippenger",862     "batch_size": 1,863     "msm_only_ns_per_sig_median": 88626.9345,864     "msm_only_ns_per_sig_samples": [865      89859.5965,866      89077.3015,867      88865.7205,868      87142.452,869      86287.388,870      86582.1635,871      88626.9345872     ],873     "n_batches_per_rep": 2000,874     "n_terms": 3,875     "op_counts_per_batch": {876      "adds": 630,877      "doublings": 255,878      "identity_adds": 234,879      "mixed_adds": 154880     },881     "op_counts_per_signature": {882      "adds": 630.0,883      "doublings": 255.0,884      "mixed_adds": 154.0,885      "total": 1039.0886     },887     "per_signature": {888      "iqr_ns": 2179.083249999996,889      "mean_ns": 91279.25600000001,890      "median_ns": 91869.8125,891      "min_ns": 89442.8125,892      "ns_per_op_samples": [893       93140.9585,894       92328.2915,895       92101.396,896       90324.8125,897       89442.8125,898       89746.7085,899       91869.8125900      ],901      "ops_per_rep": 2000,902      "ops_per_s": 10884.968334946803,903      "q1_ns": 90035.7605,904      "q3_ns": 92214.84375,905      "reps": 7,906      "sd_ns": 1427.3093451899567907     },908     "sigs_per_rep": 2000,909     "speedup_vs_k256_single_verify": {910      "bootstrap_resamples": 2000,911      "ci95_high": 0.2785211225880223,912      "ci95_low": 0.2628992431938523,913      "point": 0.2665368180652377914     },915     "speedup_vs_libsecp256k1_single_verify": {916      "bootstrap_resamples": 2000,917      "ci95_high": 0.14756089355633584,918      "ci95_low": 0.14218346808187507,919      "point": 0.14364937884247886920     },921     "window_bits": 3922    },923    {924     "algorithm": "k256_lincomb_vartime",925     "batch_size": 1,926     "msm_only_ns_per_sig_median": 22011.5455,927     "msm_only_ns_per_sig_samples": [928      22011.5455,929      21803.892,930      21790.2325,931      22094.897,932      22056.5555,933      22018.8555,934      21992.209935     ],936     "n_batches_per_rep": 2000,937     "n_terms": 3,938     "op_counts_per_batch": {939      "adds": 0,940      "doublings": 0,941      "identity_adds": 0,942      "mixed_adds": 0943     },944     "op_counts_per_signature": {945      "adds": 0.0,946      "doublings": 0.0,947      "mixed_adds": 0.0,948      "total": 0.0949     },950     "per_signature": {951      "iqr_ns": 160.41675000000032,952      "mean_ns": 25085.595142857142,953      "median_ns": 25136.854,954      "min_ns": 24882.104,955      "ns_per_op_samples": [956       25136.854,957       24901.0625,958       24882.104,959       25232.0415,960       25189.396,961       25145.104,962       25112.604963      ],964      "ops_per_rep": 2000,965      "ops_per_s": 39782.22573119134,966      "q1_ns": 25006.83325,967      "q3_ns": 25167.25,968      "reps": 7,969      "sd_ns": 138.1908992682207970     },971     "sigs_per_rep": 2000,972     "speedup_vs_k256_single_verify": {973      "bootstrap_resamples": 2000,974      "ci95_high": 1.0038268045791219,975      "ci95_low": 0.9638970671984495,976      "point": 0.9741349295341414977     },978     "speedup_vs_libsecp256k1_single_verify": {979      "bootstrap_resamples": 2000,980      "ci95_high": 0.5318288928434278,981      "ci95_low": 0.5219687498608079,982      "point": 0.5250076839369983     },984     "window_bits": 0985    },986    {987     "algorithm": "k256_lincomb_ct",988     "batch_size": 1,989     "msm_only_ns_per_sig_median": 35306.3995,990     "msm_only_ns_per_sig_samples": [991      35710.54,992      35067.621,993      35191.772,994      35618.7335,995      34949.98,996      36050.416,997      35306.3995998     ],999     "n_batches_per_rep": 2000,1000     "n_terms": 3,1001     "op_counts_per_batch": {1002      "adds": 0,1003      "doublings": 0,1004      "identity_adds": 0,1005      "mixed_adds": 01006     },1007     "op_counts_per_signature": {1008      "adds": 0.0,1009      "doublings": 0.0,1010      "mixed_adds": 0.0,1011      "total": 0.01012     },1013     "per_signature": {1014      "iqr_ns": 579.8545000000013,1015      "mean_ns": 38591.381,1016      "median_ns": 38468.8125,1017      "min_ns": 38089.292,1018      "ns_per_op_samples": [1019       38914.3125,1020       38213.5205,1021       38355.3125,1022       38814.2295,1023       38089.292,1024       39284.1875,1025       38468.81251026      ],1027      "ops_per_rep": 2000,1028      "ops_per_s": 25995.08367979906,1029      "q1_ns": 38284.4165,1030      "q3_ns": 38864.271,1031      "reps": 7,1032      "sd_ns": 428.08689720517031033     },1034     "sigs_per_rep": 2000,1035     "speedup_vs_k256_single_verify": {1036      "bootstrap_resamples": 2000,1037      "ci95_high": 0.6541232964913557,1038      "ci95_low": 0.6244434660232017,1039      "point": 0.63653349060358951040     },1041     "speedup_vs_libsecp256k1_single_verify": {1042      "bootstrap_resamples": 2000,1043      "ci95_high": 0.3465554685023067,1044      "ci95_low": 0.33814811395393024,1045      "point": 0.343058198118280871046     },1047     "window_bits": 01048    },1049    {1050     "algorithm": "straus_wnaf5",1051     "batch_size": 2,1052     "msm_only_ns_per_sig_median": 18207.731,1053     "msm_only_ns_per_sig_samples": [1054      17927.763,1055      18207.731,1056      18313.5365,1057      18298.3275,1058      17917.3565,1059      19653.395,1060      18084.18051061     ],1062     "n_batches_per_rep": 1000,1063     "n_terms": 5,1064     "op_counts_per_batch": {1065      "adds": 187,1066      "doublings": 261,1067      "identity_adds": 1,1068      "mixed_adds": 01069     },1070     "op_counts_per_signature": {1071      "adds": 93.5,1072      "doublings": 130.5,1073      "mixed_adds": 0.0,1074      "total": 224.01075     },1076     "per_signature": {1077      "iqr_ns": 350.09375,1078      "mean_ns": 21492.455285714288,1079      "median_ns": 21329.2085,1080      "min_ns": 20996.646,1081      "ns_per_op_samples": [1082       21001.9375,1083       21329.2085,1084       21454.875,1085       21440.3955,1086       20996.646,1087       23030.979,1088       21193.14551089      ],1090      "ops_per_rep": 2000,1091      "ops_per_s": 46884.06510724484,1092      "q1_ns": 21097.5415,1093      "q3_ns": 21447.63525,1094      "reps": 7,1095      "sd_ns": 704.01800703242271096     },1097     "sigs_per_rep": 2000,1098     "speedup_vs_k256_single_verify": {1099      "bootstrap_resamples": 2000,1100      "ci95_high": 1.1901927619773176,1101      "ci95_low": 1.1296869359527846,1102      "point": 1.14803545101075821103     },1104     "speedup_vs_libsecp256k1_single_verify": {1105      "bootstrap_resamples": 2000,1106      "ci95_high": 0.6305658466034384,1107      "ci95_low": 0.611747143714424,1108      "point": 0.6187309529090121109     },1110     "window_bits": 51111    },1112    {1113     "algorithm": "pippenger",1114     "batch_size": 2,1115     "msm_only_ns_per_sig_median": 55311.5885,1116     "msm_only_ns_per_sig_samples": [1117      55182.61,1118      55129.7245,1119      55763.123,1120      56691.914,1121      55466.805,1122      55275.806,1123      55311.58851124     ],1125     "n_batches_per_rep": 1000,1126     "n_terms": 5,1127     "op_counts_per_batch": {1128      "adds": 766,1129      "doublings": 255,1130      "identity_adds": 296,1131      "mixed_adds": 2541132     },1133     "op_counts_per_signature": {1134      "adds": 383.0,1135      "doublings": 127.5,1136      "mixed_adds": 127.0,1137      "total": 637.51138     },1139     "per_signature": {1140      "iqr_ns": 411.6877499999973,1141      "mean_ns": 58686.08921428571,1142      "median_ns": 58441.25,1143      "min_ns": 58247.3545,1144      "ns_per_op_samples": [1145       58298.6455,1146       58247.3545,1147       58916.3125,1148       59899.2705,1149       58602.75,1150       58397.0415,1151       58441.251152      ],1153      "ops_per_rep": 2000,1154      "ops_per_s": 17111.201420229718,1155      "q1_ns": 58347.8435,1156      "q3_ns": 58759.53125,1157      "reps": 7,1158      "sd_ns": 579.92134828424881159     },1160     "sigs_per_rep": 2000,1161     "speedup_vs_k256_single_verify": {1162      "bootstrap_resamples": 2000,1163      "ci95_high": 0.428763889548686,1164      "ci95_low": 0.41297206949263837,1165      "point": 0.418996641926721261166     },1167     "speedup_vs_libsecp256k1_single_verify": {1168      "bootstrap_resamples": 2000,1169      "ci95_high": 0.2273095975247308,1170      "ci95_low": 0.22279390841229438,1171      "point": 0.22581723525763051172     },1173     "window_bits": 31174    },1175    {1176     "algorithm": "k256_lincomb_vartime",1177     "batch_size": 2,1178     "msm_only_ns_per_sig_median": 16485.7545,1179     "msm_only_ns_per_sig_samples": [1180      16535.5915,1181      16473.7425,1182      16485.7545,1183      16476.593,1184      17325.2845,1185      16478.729,1186      16511.66251187     ],1188     "n_batches_per_rep": 1000,1189     "n_terms": 5,1190     "op_counts_per_batch": {1191      "adds": 0,1192      "doublings": 0,1193      "identity_adds": 0,1194      "mixed_adds": 01195     },1196     "op_counts_per_signature": {1197      "adds": 0.0,1198      "doublings": 0.0,1199      "mixed_adds": 0.0,1200      "total": 0.01201     },1202     "per_signature": {1203      "iqr_ns": 44.92725000000064,1204      "mean_ns": 19710.461285714286,1205      "median_ns": 19563.6875,1206      "min_ns": 19545.9165,1207      "ns_per_op_samples": [1208       19613.75,1209       19545.9165,1210       19555.229,1211       19563.6875,1212       20568.0625,1213       19547.625,1214       19578.95851215      ],1216      "ops_per_rep": 2000,1217      "ops_per_s": 51115.108028586124,1218      "q1_ns": 19551.427,1219      "q3_ns": 19596.35425,1220      "reps": 7,1221      "sd_ns": 378.89227742007551222     },1223     "sigs_per_rep": 2000,1224     "speedup_vs_k256_single_verify": {1225      "bootstrap_resamples": 2000,1226      "ci95_high": 1.2787412281543153,1227      "ci95_low": 1.2357296284494297,1228      "point": 1.25163967682472951229     },1230     "speedup_vs_libsecp256k1_single_verify": {1231      "bootstrap_resamples": 2000,1232      "ci95_high": 0.6788060625626016,1233      "ci95_low": 0.6691712956471864,1234      "point": 0.67456820193023431235     },1236     "window_bits": 01237    },1238    {1239     "algorithm": "k256_lincomb_ct",1240     "batch_size": 2,1241     "msm_only_ns_per_sig_median": 26563.9235,1242     "msm_only_ns_per_sig_samples": [1243      28305.747,1244      26491.5025,1245      27363.853,1246      26427.541,1247      26484.4295,1248      26563.9235,1249      26856.671250     ],1251     "n_batches_per_rep": 1000,1252     "n_terms": 5,1253     "op_counts_per_batch": {1254      "adds": 0,1255      "doublings": 0,1256      "identity_adds": 0,1257      "mixed_adds": 01258     },1259     "op_counts_per_signature": {1260      "adds": 0.0,1261      "doublings": 0.0,1262      "mixed_adds": 0.0,1263      "total": 0.01264     },1265     "per_signature": {1266      "iqr_ns": 692.3644999999997,1267      "mean_ns": 30075.303714285717,1268      "median_ns": 29666.7085,1269      "min_ns": 29516.1045,1270      "ns_per_op_samples": [1271       31621.375,1272       29587.3125,1273       30557.9585,1274       29516.1045,1275       29581.792,1276       29666.7085,1277       29995.8751278      ],1279      "ops_per_rep": 2000,1280      "ops_per_s": 33707.817636729065,1281      "q1_ns": 29584.55225,1282      "q3_ns": 30276.91675,1283      "reps": 7,1284      "sd_ns": 773.62178863322541285     },1286     "sigs_per_rep": 2000,1287     "speedup_vs_k256_single_verify": {1288      "bootstrap_resamples": 2000,1289      "ci95_high": 0.8451475780370387,1290      "ci95_low": 0.7962178330728474,1291      "point": 0.8253927967775731292     },1293     "speedup_vs_libsecp256k1_single_verify": {1294      "bootstrap_resamples": 2000,1295      "ci95_high": 0.4486452765860367,1296      "ci95_low": 0.4306468149696584,1297      "point": 0.444843468226345351298     },1299     "window_bits": 01300    },1301    {1302     "algorithm": "straus_wnaf5",1303     "batch_size": 4,1304     "msm_only_ns_per_sig_median": 13287.044,1305     "msm_only_ns_per_sig_samples": [1306      13308.124,1307      13287.044,1308      13281.2515,1309      13276.2285,1310      13255.3535,1311      13497.919,1312      13303.7011313     ],1314     "n_batches_per_rep": 500,1315     "n_terms": 9,1316     "op_counts_per_batch": {1317      "adds": 345,1318      "doublings": 265,1319      "identity_adds": 1,1320      "mixed_adds": 01321     },1322     "op_counts_per_signature": {1323      "adds": 86.25,1324      "doublings": 66.25,1325      "mixed_adds": 0.0,1326      "total": 152.51327     },1328     "per_signature": {1329      "iqr_ns": 30.3125,1330      "mean_ns": 16382.73807142857,1331      "median_ns": 16338.042,1332      "min_ns": 16309.521,1333      "ns_per_op_samples": [1334       16360.354,1335       16338.042,1336       16336.3125,1337       16334.958,1338       16309.521,1339       16628.4375,1340       16371.54151341      ],1342      "ops_per_rep": 2000,1343      "ops_per_s": 61206.8447369642,1344      "q1_ns": 16335.63525,1345      "q3_ns": 16365.94775,1346      "reps": 7,1347      "sd_ns": 110.144879078810131348     },1349     "sigs_per_rep": 2000,1350     "speedup_vs_k256_single_verify": {1351      "bootstrap_resamples": 2000,1352      "ci95_high": 1.5306786950849525,1353      "ci95_low": 1.481465009864701,1354      "point": 1.4987528799350621355     },1356     "speedup_vs_libsecp256k1_single_verify": {1357      "bootstrap_resamples": 2000,1358      "ci95_high": 0.8125584032504276,1359      "ci95_low": 0.8016935057703638,1360      "point": 0.80774927007777311361     },1362     "window_bits": 51363    },1364    {1365     "algorithm": "pippenger",1366     "batch_size": 4,1367     "msm_only_ns_per_sig_median": 41195.204,1368     "msm_only_ns_per_sig_samples": [1369      40957.681,1370      41195.204,1371      41034.9805,1372      41305.6265,1373      41545.5815,1374      41328.191,1375      40009.39051376     ],1377     "n_batches_per_rep": 500,1378     "n_terms": 9,1379     "op_counts_per_batch": {1380      "adds": 1224,1381      "doublings": 252,1382      "identity_adds": 380,1383      "mixed_adds": 3831384     },1385     "op_counts_per_signature": {1386      "adds": 306.0,1387      "doublings": 63.0,1388      "mixed_adds": 95.75,1389      "total": 464.751390     },1391     "per_signature": {1392      "iqr_ns": 350.38525000000664,1393      "mean_ns": 44195.387,1394      "median_ns": 44337.875,1395      "min_ns": 43079.3125,1396      "ns_per_op_samples": [1397       44092.521,1398       44337.875,1399       44176.667,1400       44472.2915,1401       44711.375,1402       44497.667,1403       43079.31251404      ],1405      "ops_per_rep": 2000,1406      "ops_per_s": 22554.080456043506,1407      "q1_ns": 44134.594,1408      "q3_ns": 44484.979250000004,1409      "reps": 7,1410      "sd_ns": 534.03337734553951411     },1412     "sigs_per_rep": 2000,1413     "speedup_vs_k256_single_verify": {1414      "bootstrap_resamples": 2000,1415      "ci95_high": 0.5671176184278508,1416      "ci95_low": 0.5449975969868789,1417      "point": 0.55227471997699481418     },1419     "speedup_vs_libsecp256k1_single_verify": {1420      "bootstrap_resamples": 2000,1421      "ci95_high": 0.3004800701691687,1422      "ci95_low": 0.29512665206379124,1423      "point": 0.29764713577274511424     },1425     "window_bits": 41426    },1427    {1428     "algorithm": "k256_lincomb_vartime",1429     "batch_size": 4,1430     "msm_only_ns_per_sig_median": 13860.942,1431     "msm_only_ns_per_sig_samples": [1432      13992.518,1433      13883.1215,1434      13858.1675,1435      13831.3145,1436      13860.942,1437      13840.379,1438      13869.9571439     ],1440     "n_batches_per_rep": 500,1441     "n_terms": 9,1442     "op_counts_per_batch": {1443      "adds": 0,1444      "doublings": 0,1445      "identity_adds": 0,1446      "mixed_adds": 01447     },1448     "op_counts_per_signature": {1449      "adds": 0.0,1450      "doublings": 0.0,1451      "mixed_adds": 0.0,1452      "total": 0.01453     },1454     "per_signature": {1455      "iqr_ns": 31.16675000000032,1456      "mean_ns": 16937.154642857142,1457      "median_ns": 16919.25,1458      "min_ns": 16887.375,1459      "ns_per_op_samples": [1460       17076.833,1461       16943.354,1462       16919.25,1463       16887.375,1464       16914.979,1465       16892.1665,1466       16926.1251467      ],1468      "ops_per_rep": 2000,1469      "ops_per_s": 59104.274716668886,1470      "q1_ns": 16903.57275,1471      "q3_ns": 16934.7395,1472      "reps": 7,1473      "sd_ns": 64.529592329613731474     },1475     "sigs_per_rep": 2000,1476     "speedup_vs_k256_single_verify": {1477      "bootstrap_resamples": 2000,1478      "ci95_high": 1.479760100635996,1479      "ci95_low": 1.4319457052337734,1480      "point": 1.4472679049012221481     },1482     "speedup_vs_libsecp256k1_single_verify": {1483      "bootstrap_resamples": 2000,1484      "ci95_high": 0.784760536799957,1485      "ci95_low": 0.7746375658562054,1486      "point": 0.780001566263281487     },1488     "window_bits": 01489    },1490    {1491     "algorithm": "k256_lincomb_ct",1492     "batch_size": 4,1493     "msm_only_ns_per_sig_median": 22442.3925,1494     "msm_only_ns_per_sig_samples": [1495      22672.3985,1496      22604.3195,1497      22112.876,1498      22234.2665,1499      22442.3925,1500      22181.9185,1501      22658.6941502     ],1503     "n_batches_per_rep": 500,1504     "n_terms": 9,1505     "op_counts_per_batch": {1506      "adds": 0,1507      "doublings": 0,1508      "identity_adds": 0,1509      "mixed_adds": 01510     },1511     "op_counts_per_signature": {1512      "adds": 0.0,1513      "doublings": 0.0,1514      "mixed_adds": 0.0,1515      "total": 0.01516     },1517     "per_signature": {1518      "iqr_ns": 489.59375,1519      "mean_ns": 25514.5,1520      "median_ns": 25549.6045,1521      "min_ns": 25170.5625,1522      "ns_per_op_samples": [1523       25806.9375,1524       25732.458,1525       25170.5625,1526       25305.625,1527       25549.6045,1528       25241.979,1529       25794.33351530      ],1531      "ops_per_rep": 2000,1532      "ops_per_s": 39139.54910730614,1533      "q1_ns": 25273.802,1534      "q3_ns": 25763.39575,1535      "reps": 7,1536      "sd_ns": 273.481857955575151537     },1538     "sigs_per_rep": 2000,1539     "speedup_vs_k256_single_verify": {1540      "bootstrap_resamples": 2000,1541      "ci95_high": 0.9902691861046236,1542      "ci95_low": 0.9418957178517499,1543      "point": 0.95839790788150951544     },1545     "speedup_vs_libsecp256k1_single_verify": {1546      "bootstrap_resamples": 2000,1547      "ci95_high": 0.524646046968029,1548      "ci95_low": 0.5100545971939409,1549      "point": 0.51652625386040711550     },1551     "window_bits": 01552    },1553    {1554     "algorithm": "straus_wnaf5",1555     "batch_size": 8,1556     "msm_only_ns_per_sig_median": 11011.455,1557     "msm_only_ns_per_sig_samples": [1558      11398.392,1559      10984.706,1560      11236.0195,1561      10987.4205,1562      11177.1245,1563      10990.901,1564      11011.4551565     ],1566     "n_batches_per_rep": 250,1567     "n_terms": 17,1568     "op_counts_per_batch": {1569      "adds": 662,1570      "doublings": 273,1571      "identity_adds": 1,1572      "mixed_adds": 01573     },1574     "op_counts_per_signature": {1575      "adds": 82.75,1576      "doublings": 34.125,1577      "mixed_adds": 0.0,1578      "total": 116.8751579     },1580     "per_signature": {1581      "iqr_ns": 271.8857500000013,1582      "mean_ns": 14188.639857142856,1583      "median_ns": 14054.333,1584      "min_ns": 14028.125,1585      "ns_per_op_samples": [1586       14548.5415,1587       14028.125,1588       14352.792,1589       14044.479,1590       14263.8335,1591       14028.375,1592       14054.3331593      ],1594      "ops_per_rep": 2000,1595      "ops_per_s": 71152.43391486454,1596      "q1_ns": 14036.427,1597      "q3_ns": 14308.312750000001,1598      "reps": 7,1599      "sd_ns": 205.10149148992741600     },1601     "sigs_per_rep": 2000,1602     "speedup_vs_k256_single_verify": {1603      "bootstrap_resamples": 2000,1604      "ci95_high": 1.781842444331578,1605      "ci95_low": 1.6951957152308763,1606      "point": 1.74228741413768961607     },1608     "speedup_vs_libsecp256k1_single_verify": {1609      "bootstrap_resamples": 2000,1610      "ci95_high": 0.9451548896901053,1611      "ci95_low": 0.9144533342362936,1612      "point": 0.93900162320047491613     },1614     "window_bits": 51615    },1616    {1617     "algorithm": "pippenger",1618     "batch_size": 8,1619     "msm_only_ns_per_sig_median": 27119.503,1620     "msm_only_ns_per_sig_samples": [1621      27119.503,1622      27130.751,1623      26885.7695,1624      27056.5015,1625      27183.1655,1626      26822.1255,1627      27610.41451628     ],1629     "n_batches_per_rep": 250,1630     "n_terms": 17,1631     "op_counts_per_batch": {1632      "adds": 1492,1633      "doublings": 252,1634      "identity_adds": 581,1635      "mixed_adds": 7451636     },1637     "op_counts_per_signature": {1638      "adds": 186.5,1639      "doublings": 31.5,1640      "mixed_adds": 93.125,1641      "total": 311.1251642     },1643     "per_signature": {1644      "iqr_ns": 209.33299999999872,1645      "mean_ns": 30216.1845,1646      "median_ns": 30217.0835,1647      "min_ns": 29889.229,1648      "ns_per_op_samples": [1649       30217.0835,1650       30227.583,1651       29957.4585,1652       30151.25,1653       30299.7915,1654       29889.229,1655       30770.8961656      ],1657      "ops_per_rep": 2000,1658      "ops_per_s": 33093.86228488928,1659      "q1_ns": 30054.35425,1660      "q3_ns": 30263.68725,1661      "reps": 7,1662      "sd_ns": 286.612759669151441663     },1664     "sigs_per_rep": 2000,1665     "speedup_vs_k256_single_verify": {1666      "bootstrap_resamples": 2000,1667      "ci95_high": 0.8343950138493891,1668      "ci95_low": 0.8018269935773562,1669      "point": 0.81035906393811961670     },1671     "speedup_vs_libsecp256k1_single_verify": {1672      "bootstrap_resamples": 2000,1673      "ci95_high": 0.44206368507528765,1674      "ci95_low": 0.4331699279184809,1675      "point": 0.436741073968968551676     },1677     "window_bits": 41678    },1679    {1680     "algorithm": "k256_lincomb_vartime",1681     "batch_size": 8,1682     "msm_only_ns_per_sig_median": 12545.7275,1683     "msm_only_ns_per_sig_samples": [1684      12558.628,1685      12542.729,1686      12559.227,1687      12545.7275,1688      12585.141,1689      12516.1035,1690      12545.6881691     ],1692     "n_batches_per_rep": 250,1693     "n_terms": 17,1694     "op_counts_per_batch": {1695      "adds": 0,1696      "doublings": 0,1697      "identity_adds": 0,1698      "mixed_adds": 01699     },1700     "op_counts_per_signature": {1701      "adds": 0.0,1702      "doublings": 0.0,1703      "mixed_adds": 0.0,1704      "total": 0.01705     },1706     "per_signature": {1707      "iqr_ns": 16.38550000000032,1708      "mean_ns": 15600.119071428573,1709      "median_ns": 15600.5415,1710      "min_ns": 15557.667,1711      "ns_per_op_samples": [1712       15608.396,1713       15588.104,1714       15608.854,1715       15600.5415,1716       15640.896,1717       15557.667,1718       15596.3751719      ],1720      "ops_per_rep": 2000,1721      "ops_per_s": 64100.33908117869,1722      "q1_ns": 15592.2395,1723      "q3_ns": 15608.625,1724      "reps": 7,1725      "sd_ns": 25.0609299315834061726     },1727     "sigs_per_rep": 2000,1728     "speedup_vs_k256_single_verify": {1729      "bootstrap_resamples": 2000,1730      "ci95_high": 1.603553196719755,1731      "ci95_low": 1.5528368193631172,1732      "point": 1.56960497172485971733     },1734     "speedup_vs_libsecp256k1_single_verify": {1735      "bootstrap_resamples": 2000,1736      "ci95_high": 0.8512352214571548,1737      "ci95_low": 0.8408909217833787,1738      "point": 0.84593483501838711739     },1740     "window_bits": 01741    },1742    {1743     "algorithm": "k256_lincomb_ct",1744     "batch_size": 8,1745     "msm_only_ns_per_sig_median": 20033.061,1746     "msm_only_ns_per_sig_samples": [1747      21291.2455,1748      20030.8965,1749      20058.728,1750      20899.711,1751      20027.7975,1752      20031.398,1753      20033.0611754     ],1755     "n_batches_per_rep": 250,1756     "n_terms": 17,1757     "op_counts_per_batch": {1758      "adds": 0,1759      "doublings": 0,1760      "identity_adds": 0,1761      "mixed_adds": 01762     },1763     "op_counts_per_signature": {1764      "adds": 0.0,1765      "doublings": 0.0,1766      "mixed_adds": 0.0,1767      "total": 0.01768     },1769     "per_signature": {1770      "iqr_ns": 529.4585000000006,1771      "mean_ns": 23434.779714285716,1772      "median_ns": 23098.896,1773      "min_ns": 23083.083,1774      "ns_per_op_samples": [1775       24467.229,1776       23083.083,1777       23117.2085,1778       24109.375,1779       23083.208,1780       23098.896,1781       23084.45851782      ],1783      "ops_per_rep": 2000,1784      "ops_per_s": 43292.11231567084,1785      "q1_ns": 23083.83325,1786      "q3_ns": 23613.29175,1787      "reps": 7,1788      "sd_ns": 592.2721608417491789     },1790     "sigs_per_rep": 2000,1791     "speedup_vs_k256_single_verify": {1792      "bootstrap_resamples": 2000,1793      "ci95_high": 1.0832242610325904,1794      "ci95_low": 1.0091838340894361,1795      "point": 1.06008042548873331796     },1797     "speedup_vs_libsecp256k1_single_verify": {1798      "bootstrap_resamples": 2000,1799      "ci95_high": 0.5750279132603435,1800      "ci95_low": 0.5458327932598833,1801      "point": 0.57132780285256921802     },1803     "window_bits": 01804    },1805    {1806     "algorithm": "straus_wnaf5",1807     "batch_size": 16,1808     "msm_only_ns_per_sig_median": 9834.4355,1809     "msm_only_ns_per_sig_samples": [1810      9834.4355,1811      9839.649,1812      9883.5425,1813      10002.167,1814      9826.854,1815      9829.899,1816      9831.62151817     ],1818     "n_batches_per_rep": 125,1819     "n_terms": 33,1820     "op_counts_per_batch": {1821      "adds": 1296,1822      "doublings": 289,1823      "identity_adds": 1,1824      "mixed_adds": 01825     },1826     "op_counts_per_signature": {1827      "adds": 81.0,1828      "doublings": 18.0625,1829      "mixed_adds": 0.0,1830      "total": 99.06251831     },1832     "per_signature": {1833      "iqr_ns": 40.02049999999872,1834      "mean_ns": 12923.282785714287,1835      "median_ns": 12881.854,1836      "min_ns": 12862.125,1837      "ns_per_op_samples": [1838       12873.396,1839       12881.854,1840       12932.1665,1841       13135.2085,1842       12878.4795,1843       12862.125,1844       12899.751845      ],1846      "ops_per_rep": 2000,1847      "ops_per_s": 77628.57737713841,1848      "q1_ns": 12875.937750000001,1849      "q3_ns": 12915.95825,1850      "reps": 7,1851      "sd_ns": 96.175070918810061852     },1853     "sigs_per_rep": 2000,1854     "speedup_vs_k256_single_verify": {1855      "bootstrap_resamples": 2000,1856      "ci95_high": 1.9424280508422174,1857      "ci95_low": 1.8788962576794126,1858      "point": 1.9008667153035581859     },1860     "speedup_vs_libsecp256k1_single_verify": {1861      "bootstrap_resamples": 2000,1862      "ci95_high": 1.0307278898879328,1863      "ci95_low": 1.017458361596155,1864      "point": 1.02446755723205671865     },1866     "window_bits": 51867    },1868    {1869     "algorithm": "pippenger",1870     "batch_size": 16,1871     "msm_only_ns_per_sig_median": 21733.2095,1872     "msm_only_ns_per_sig_samples": [1873      21195.4365,1874      21622.1445,1875      21733.2095,1876      21746.644,1877      21266.4365,1878      22656.455,1879      22452.20251880     ],1881     "n_batches_per_rep": 125,1882     "n_terms": 33,1883     "op_counts_per_batch": {1884      "adds": 2429,1885      "doublings": 255,1886      "identity_adds": 897,1887      "mixed_adds": 12281888     },1889     "op_counts_per_signature": {1890      "adds": 151.8125,1891      "doublings": 15.9375,1892      "mixed_adds": 76.75,1893      "total": 244.51894     },1895     "per_signature": {1896      "iqr_ns": 726.625250000001,1897      "mean_ns": 24955.96128571429,1898      "median_ns": 24855.0835,1899      "min_ns": 24254.6665,1900      "ns_per_op_samples": [1901       24254.6665,1902       24769.104,1903       24875.896,1904       24855.0835,1905       24340.2915,1906       25909.9375,1907       25686.751908      ],1909      "ops_per_rep": 2000,1910      "ops_per_s": 40233.21828711619,1911      "q1_ns": 24554.69775,1912      "q3_ns": 25281.323,1913      "reps": 7,1914      "sd_ns": 628.02452801269771915     },1916     "sigs_per_rep": 2000,1917     "speedup_vs_k256_single_verify": {1918      "bootstrap_resamples": 2000,1919      "ci95_high": 1.0269537651182197,1920      "ci95_low": 0.9472117531412109,1921      "point": 0.98517824331589951922     },1923     "speedup_vs_libsecp256k1_single_verify": {1924      "bootstrap_resamples": 2000,1925      "ci95_high": 0.5440815899842448,1926      "ci95_low": 0.5123142281526468,1927      "point": 0.53095945141363131928     },1929     "window_bits": 51930    },1931    {1932     "algorithm": "k256_lincomb_vartime",1933     "batch_size": 16,1934     "msm_only_ns_per_sig_median": 11788.519,1935     "msm_only_ns_per_sig_samples": [1936      11848.565,1937      11811.581,1938      11802.0815,1939      11788.519,1940      11785.71,1941      11783.292,1942      11783.00051943     ],1944     "n_batches_per_rep": 125,1945     "n_terms": 33,1946     "op_counts_per_batch": {1947      "adds": 0,1948      "doublings": 0,1949      "identity_adds": 0,1950      "mixed_adds": 01951     },1952     "op_counts_per_signature": {1953      "adds": 0.0,1954      "doublings": 0.0,1955      "mixed_adds": 0.0,1956      "total": 0.01957     },1958     "per_signature": {1959      "iqr_ns": 23.35425000000032,1960      "mean_ns": 14831.479214285715,1961      "median_ns": 14817.521,1962      "min_ns": 14811.0,1963      "ns_per_op_samples": [1964       14883.667,1965       14849.1875,1966       14828.25,1967       14817.521,1968       14814.2085,1969       14816.5205,1970       14811.01971      ],1972      "ops_per_rep": 2000,1973      "ops_per_s": 67487.6721956392,1974      "q1_ns": 14815.3645,1975      "q3_ns": 14838.71875,1976      "reps": 7,1977      "sd_ns": 26.406586471397811978     },1979     "sigs_per_rep": 2000,1980     "speedup_vs_k256_single_verify": {1981      "bootstrap_resamples": 2000,1982      "ci95_high": 1.6876884747822565,1983      "ci95_low": 1.6345348911705697,1984      "point": 1.6525495391570561985     },1986     "speedup_vs_libsecp256k1_single_verify": {1987      "bootstrap_resamples": 2000,1988      "ci95_high": 0.8959058909951226,1989      "ci95_low": 0.8851319946723316,1990      "point": 0.89063761070424661991     },1992     "window_bits": 01993    },1994    {1995     "algorithm": "k256_lincomb_ct",1996     "batch_size": 16,1997     "msm_only_ns_per_sig_median": 19377.0215,1998     "msm_only_ns_per_sig_samples": [1999      19609.5175,2000      19744.9145,2001      19195.833,2002      19377.0215,2003      19345.582,2004      19306.959,2005      19571.62752006     ],2007     "n_batches_per_rep": 125,2008     "n_terms": 33,2009     "op_counts_per_batch": {2010      "adds": 0,2011      "doublings": 0,2012      "identity_adds": 0,2013      "mixed_adds": 02014     },2015     "op_counts_per_signature": {2016      "adds": 0.0,2017      "doublings": 0.0,2018      "mixed_adds": 0.0,2019      "total": 0.02020     },2021     "per_signature": {2022      "iqr_ns": 319.8542500000003,2023      "mean_ns": 22566.943428571427,2024      "median_ns": 22480.7915,2025      "min_ns": 22271.1875,2026      "ns_per_op_samples": [2027       22752.0835,2028       22889.2915,2029       22271.1875,2030       22480.7915,2031       22441.771,2032       22402.0415,2033       22731.43752034      ],2035      "ops_per_rep": 2000,2036      "ops_per_s": 44482.41958028924,2037      "q1_ns": 22421.90625,2038      "q3_ns": 22741.7605,2039      "reps": 7,2040      "sd_ns": 224.721283571529342041     },2042     "sigs_per_rep": 2000,2043     "speedup_vs_k256_single_verify": {2044      "bootstrap_resamples": 2000,2045      "ci95_high": 1.115806967860496,2046      "ci95_low": 1.0662454585197263,2047      "point": 1.0892271075064242048     },2049     "speedup_vs_libsecp256k1_single_verify": {2050      "bootstrap_resamples": 2000,2051      "ci95_high": 0.5914955642315395,2052      "ci95_low": 0.577392366848775,2053      "point": 0.58703633722148972054     },2055     "window_bits": 02056    },2057    {2058     "algorithm": "straus_wnaf5",2059     "batch_size": 32,2060     "msm_only_ns_per_sig_median": 9238.860119047618,2061     "msm_only_ns_per_sig_samples": [2062      9241.980654761905,2063      9234.602182539682,2064      9238.838789682539,2065      9314.628968253968,2066      9311.504960317461,2067      9238.860119047618,2068      9236.3159722222232069     ],2070     "n_batches_per_rep": 63,2071     "n_terms": 65,2072     "op_counts_per_batch": {2073      "adds": 2565,2074      "doublings": 321,2075      "identity_adds": 1,2076      "mixed_adds": 02077     },2078     "op_counts_per_signature": {2079      "adds": 80.15625,2080      "doublings": 10.03125,2081      "mixed_adds": 0.0,2082      "total": 90.18752083     },2084     "per_signature": {2085      "iqr_ns": 57.901289682538845,2086      "mean_ns": 12301.540107709749,2087      "median_ns": 12275.276785714286,2088      "min_ns": 12263.434027777777,2089      "ns_per_op_samples": [2090       12280.753968253968,2091       12275.276785714286,2092       12263.434027777777,2093       12378.927083333334,2094       12373.71875,2095       12265.45982142857,2096       12273.2103174603182097      ],2098      "ops_per_rep": 2016,2099      "ops_per_s": 81464.55818933381,2100      "q1_ns": 12269.335069444445,2101      "q3_ns": 12327.236359126984,2102      "reps": 7,2103      "sd_ns": 51.440521440190542104     },2105     "sigs_per_rep": 2016,2106     "speedup_vs_k256_single_verify": {2107      "bootstrap_resamples": 2000,2108      "ci95_high": 2.038704285371632,2109      "ci95_low": 1.9663281501367564,2110      "point": 1.9947971787077832111     },2112     "speedup_vs_libsecp256k1_single_verify": {2113      "bootstrap_resamples": 2000,2114      "ci95_high": 1.0815595640136326,2115      "ci95_low": 1.0608760188421742,2116      "point": 1.07509115520380322117     },2118     "window_bits": 52119    },2120    {2121     "algorithm": "pippenger",2122     "batch_size": 32,2123     "msm_only_ns_per_sig_median": 14947.916666666666,2124     "msm_only_ns_per_sig_samples": [2125      14932.250496031746,2126      14950.74751984127,2127      14956.970238095239,2128      14920.738095238095,2129      14938.928075396825,2130      14947.916666666666,2131      14963.2718253968252132     ],2133     "n_batches_per_rep": 63,2134     "n_terms": 65,2135     "op_counts_per_batch": {2136      "adds": 2811,2137      "doublings": 255,2138      "identity_adds": 1254,2139      "mixed_adds": 24202140     },2141     "op_counts_per_signature": {2142      "adds": 87.84375,2143      "doublings": 7.96875,2144      "mixed_adds": 75.625,2145      "total": 171.43752146     },2147     "per_signature": {2148      "iqr_ns": 23.974950396826898,2149      "mean_ns": 18005.36196145125,2150      "median_ns": 18007.089285714286,2151      "min_ns": 17978.774305555555,2152      "ns_per_op_samples": [2153       17988.488095238095,2154       18010.56150793651,2155       18017.79513888889,2156       17978.774305555555,2157       17991.91865079365,2158       18007.089285714286,2159       18042.9067460317462160      ],2161      "ops_per_rep": 2016,2162      "ops_per_s": 55533.683658321075,2163      "q1_ns": 17990.203373015873,2164      "q3_ns": 18014.1783234127,2165      "reps": 7,2166      "sd_ns": 21.4731114481878932167     },2168     "sigs_per_rep": 2016,2169     "speedup_vs_k256_single_verify": {2170      "bootstrap_resamples": 2000,2171      "ci95_high": 1.3900915612034945,2172      "ci95_low": 1.3457266165366155,2173      "point": 1.3598359574651652174     },2175     "speedup_vs_libsecp256k1_single_verify": {2176      "bootstrap_resamples": 2000,2177      "ci95_high": 0.7377872397958211,2178      "ci95_low": 0.7287367744873682,2179      "point": 0.73288032788673512180     },2181     "window_bits": 52182    },2183    {2184     "algorithm": "k256_lincomb_vartime",2185     "batch_size": 32,2186     "msm_only_ns_per_sig_median": 11845.693452380952,2187     "msm_only_ns_per_sig_samples": [2188      11735.740575396825,2189      11667.96875,2190      11725.983630952382,2191      11845.693452380952,2192      11968.914682539682,2193      12049.996527777777,2194      11992.6021825396822195     ],2196     "n_batches_per_rep": 63,2197     "n_terms": 65,2198     "op_counts_per_batch": {2199      "adds": 0,2200      "doublings": 0,2201      "identity_adds": 0,2202      "mixed_adds": 02203     },2204     "op_counts_per_signature": {2205      "adds": 0.0,2206      "doublings": 0.0,2207      "mixed_adds": 0.0,2208      "total": 0.02209     },2210     "per_signature": {2211      "iqr_ns": 282.65550595238165,2212      "mean_ns": 14971.002905328798,2213      "median_ns": 14977.595734126984,2214      "min_ns": 14738.033234126984,2215      "ns_per_op_samples": [2216       14857.74255952381,2217       14738.033234126984,2218       14800.760416666666,2219       14977.595734126984,2220       15087.735615079366,2221       15199.074404761905,2222       15136.0783730158732223      ],2224      "ops_per_rep": 2016,2225      "ops_per_s": 66766.39013039085,2226      "q1_ns": 14829.251488095237,2227      "q3_ns": 15111.906994047618,2228      "reps": 7,2229      "sd_ns": 177.492623499620182230     },2231     "sigs_per_rep": 2016,2232     "speedup_vs_k256_single_verify": {2233      "bootstrap_resamples": 2000,2234      "ci95_high": 1.688856065250026,2235      "ci95_low": 1.6064234301518483,2236      "point": 1.6348877306259652237     },2238     "speedup_vs_libsecp256k1_single_verify": {2239      "bootstrap_resamples": 2000,2240      "ci95_high": 0.8947583858655911,2241      "ci95_low": 0.8693220681829901,2242      "point": 0.88111882135595842243     },2244     "window_bits": 02245    },2246    {2247     "algorithm": "k256_lincomb_ct",2248     "batch_size": 32,2249     "msm_only_ns_per_sig_median": 19180.184523809523,2250     "msm_only_ns_per_sig_samples": [2251      19048.053075396827,2252      19145.31994047619,2253      19271.7435515873,2254      19122.12400793651,2255      19180.184523809523,2256      20316.38839285714,2257      19787.5327380952372258     ],2259     "n_batches_per_rep": 63,2260     "n_terms": 65,2261     "op_counts_per_batch": {2262      "adds": 0,2263      "doublings": 0,2264      "identity_adds": 0,2265      "mixed_adds": 02266     },2267     "op_counts_per_signature": {2268      "adds": 0.0,2269      "doublings": 0.0,2270      "mixed_adds": 0.0,2271      "total": 0.02272     },2273     "per_signature": {2274      "iqr_ns": 444.26884920634984,2275      "mean_ns": 22596.55775226757,2276      "median_ns": 22322.130952380954,2277      "min_ns": 22171.833333333332,2278      "ns_per_op_samples": [2279       22171.833333333332,2280       22286.685515873014,2281       22423.218253968254,2282       22273.29265873016,2283       22322.130952380954,2284       23673.445932539682,2285       23025.297619047622286      ],2287      "ops_per_rep": 2016,2288      "ops_per_s": 44798.5903376907,2289      "q1_ns": 22279.989087301587,2290      "q3_ns": 22724.257936507936,2291      "reps": 7,2292      "sd_ns": 552.23404337441962293     },2294     "sigs_per_rep": 2016,2295     "speedup_vs_k256_single_verify": {2296      "bootstrap_resamples": 2000,2297      "ci95_high": 1.1226739523039884,2298      "ci95_low": 1.056698241323596,2299      "point": 1.09696908203955172300     },2301     "speedup_vs_libsecp256k1_single_verify": {2302      "bootstrap_resamples": 2000,2303      "ci95_high": 0.5956115812082442,2304      "ci95_low": 0.5715317003813094,2305      "point": 0.59120885582800322306     },2307     "window_bits": 02308    },2309    {2310     "algorithm": "straus_wnaf5",2311     "batch_size": 64,2312     "msm_only_ns_per_sig_median": 9023.00927734375,2313     "msm_only_ns_per_sig_samples": [2314      9007.7724609375,2315      9019.1630859375,2316      9023.00927734375,2317      9935.99365234375,2318      9625.87548828125,2319      9016.58154296875,2320      9023.640136718752321     ],2322     "n_batches_per_rep": 32,2323     "n_terms": 129,2324     "op_counts_per_batch": {2325      "adds": 5059,2326      "doublings": 385,2327      "identity_adds": 1,2328      "mixed_adds": 02329     },2330     "op_counts_per_signature": {2331      "adds": 79.046875,2332      "doublings": 6.015625,2333      "mixed_adds": 0.0,2334      "total": 85.06252335     },2336     "per_signature": {2337      "iqr_ns": 429.840087890625,2338      "mean_ns": 12364.234584263393,2339      "median_ns": 12078.2470703125,2340      "min_ns": 12052.44970703125,2341      "ns_per_op_samples": [2342       12052.44970703125,2343       12078.2470703125,2344       12103.6376953125,2345       13287.90283203125,2346       12891.7236328125,2347       12064.208984375,2348       12071.472167968752349      ],2350      "ops_per_rep": 2048,2351      "ops_per_s": 82793.47112031937,2352      "q1_ns": 12067.840576171875,2353      "q3_ns": 12497.6806640625,2354      "reps": 7,2355      "sd_ns": 508.92735689785372356     },2357     "sigs_per_rep": 2048,2358     "speedup_vs_k256_single_verify": {2359      "bootstrap_resamples": 2000,2360      "ci95_high": 2.0719430534048366,2361      "ci95_low": 1.8873187320020073,2362      "point": 2.0273378543635352363     },2364     "speedup_vs_libsecp256k1_single_verify": {2365      "bootstrap_resamples": 2000,2366      "ci95_high": 1.0996345611617007,2367      "ci95_low": 1.0207857284890491,2368      "point": 1.0926288743039062369     },2370     "window_bits": 52371    },2372    {2373     "algorithm": "pippenger",2374     "batch_size": 64,2375     "msm_only_ns_per_sig_median": 12919.73828125,2376     "msm_only_ns_per_sig_samples": [2377      12977.7236328125,2378      12901.59228515625,2379      12919.73828125,2380      12925.02880859375,2381      12989.0546875,2382      12881.26611328125,2383      12569.45800781252384     ],2385     "n_batches_per_rep": 32,2386     "n_terms": 129,2387     "op_counts_per_batch": {2388      "adds": 4710,2389      "doublings": 252,2390      "identity_adds": 2063,2391      "mixed_adds": 40982392     },2393     "op_counts_per_signature": {2394      "adds": 73.59375,2395      "doublings": 3.9375,2396      "mixed_adds": 64.03125,2397      "total": 141.56252398     },2399     "per_signature": {2400      "iqr_ns": 77.4638671875,2401      "mean_ns": 16081.830775669643,2402      "median_ns": 16124.6337890625,2403      "min_ns": 15678.263671875,2404      "ns_per_op_samples": [2405       16213.31787109375,2406       16124.6337890625,2407       16114.82763671875,2408       16129.35400390625,2409       16239.501953125,2410       16072.91650390625,2411       15678.2636718752412      ],2413      "ops_per_rep": 2048,2414      "ops_per_s": 62016.912326921185,2415      "q1_ns": 16093.8720703125,2416      "q3_ns": 16171.3359375,2417      "reps": 7,2418      "sd_ns": 187.20500170763182419     },2420     "sigs_per_rep": 2048,2421     "speedup_vs_k256_single_verify": {2422      "bootstrap_resamples": 2000,2423      "ci95_high": 1.555184710498873,2424      "ci95_low": 1.5006670253087837,2425      "point": 1.5185887518642172426     },2427     "speedup_vs_libsecp256k1_single_verify": {2428      "bootstrap_resamples": 2000,2429      "ci95_high": 0.8239391087971799,2430      "ci95_low": 0.8116591313775462,2431      "point": 0.81843976568024032432     },2433     "window_bits": 62434    },2435    {2436     "algorithm": "k256_lincomb_vartime",2437     "batch_size": 64,2438     "msm_only_ns_per_sig_median": 12128.51904296875,2439     "msm_only_ns_per_sig_samples": [2440      12093.32177734375,2441      12453.61181640625,2442      12220.37646484375,2443      12128.51904296875,2444      12067.34130859375,2445      12271.36279296875,2446      11746.621093752447     ],2448     "n_batches_per_rep": 32,2449     "n_terms": 129,2450     "op_counts_per_batch": {2451      "adds": 0,2452      "doublings": 0,2453      "identity_adds": 0,2454      "mixed_adds": 02455     },2456     "op_counts_per_signature": {2457      "adds": 0.0,2458      "doublings": 0.0,2459      "mixed_adds": 0.0,2460      "total": 0.02461     },2462     "per_signature": {2463      "iqr_ns": 177.886962890625,2464      "mean_ns": 15364.257742745536,2465      "median_ns": 15343.017578125,2466      "min_ns": 14851.806640625,2467      "ns_per_op_samples": [2468       15274.0068359375,2469       15817.97265625,2470       15437.41845703125,2471       15343.017578125,2472       15316.60986328125,2473       15508.97216796875,2474       14851.8066406252475      ],2476      "ops_per_rep": 2048,2477      "ops_per_s": 65176.22722571406,2478      "q1_ns": 15295.308349609375,2479      "q3_ns": 15473.1953125,2480      "reps": 7,2481      "sd_ns": 290.29433367234362482     },2483     "sigs_per_rep": 2048,2484     "speedup_vs_k256_single_verify": {2485      "bootstrap_resamples": 2000,2486      "ci95_high": 1.6371372468660534,2487      "ci95_low": 1.5688203729097714,2488      "point": 1.59594990850505212489     },2490     "speedup_vs_libsecp256k1_single_verify": {2491      "bootstrap_resamples": 2000,2492      "ci95_high": 0.8670353917114214,2493      "ci95_low": 0.8485209308183032,2494      "point": 0.86013337551117832495     },2496     "window_bits": 02497    },2498    {2499     "algorithm": "k256_lincomb_ct",2500     "batch_size": 64,2501     "msm_only_ns_per_sig_median": 18811.72900390625,2502     "msm_only_ns_per_sig_samples": [2503      18683.8984375,2504      18811.25927734375,2505      19072.875,2506      18744.6904296875,2507      18811.72900390625,2508      19065.4697265625,2509      18935.7480468752510     ],2511     "n_batches_per_rep": 32,2512     "n_terms": 129,2513     "op_counts_per_batch": {2514      "adds": 0,2515      "doublings": 0,2516      "identity_adds": 0,2517      "mixed_adds": 02518     },2519     "op_counts_per_signature": {2520      "adds": 0.0,2521      "doublings": 0.0,2522      "mixed_adds": 0.0,2523      "total": 0.02524     },2525     "per_signature": {2526      "iqr_ns": 287.577392578125,2527      "mean_ns": 22025.739397321428,2528      "median_ns": 21944.27490234375,2529      "min_ns": 21799.5810546875,2530      "ns_per_op_samples": [2531       21799.5810546875,2532       21923.48193359375,2533       22254.39453125,2534       21879.9033203125,2535       21944.27490234375,2536       22249.369140625,2537       22129.17089843752538      ],2539      "ops_per_rep": 2048,2540      "ops_per_s": 45569.97232536471,2541      "q1_ns": 21901.692626953125,2542      "q3_ns": 22189.27001953125,2543      "reps": 7,2544      "sd_ns": 183.711874917991882545     },2546     "sigs_per_rep": 2048,2547     "speedup_vs_k256_single_verify": {2548      "bootstrap_resamples": 2000,2549      "ci95_high": 1.1424343898628793,2550      "ci95_low": 1.093549724768355,2551      "point": 1.11585767171485382552     },2553     "speedup_vs_libsecp256k1_single_verify": {2554      "bootstrap_resamples": 2000,2555      "ci95_high": 0.6054790037553155,2556      "ci95_low": 0.591463399111474,2557      "point": 0.60138881593168952558     },2559     "window_bits": 02560    },2561    {2562     "algorithm": "straus_wnaf5",2563     "batch_size": 128,2564     "msm_only_ns_per_sig_median": 9073.751953125,2565     "msm_only_ns_per_sig_samples": [2566      9017.3330078125,2567      9073.751953125,2568      9426.3310546875,2569      9407.837890625,2570      9112.91455078125,2571      8979.77734375,2572      8985.188964843752573     ],2574     "n_batches_per_rep": 16,2575     "n_terms": 257,2576     "op_counts_per_batch": {2577      "adds": 10120,2578      "doublings": 513,2579      "identity_adds": 1,2580      "mixed_adds": 02581     },2582     "op_counts_per_signature": {2583      "adds": 79.0625,2584      "doublings": 4.0078125,2585      "mixed_adds": 0.0,2586      "total": 83.07031252587     },2588     "per_signature": {2589      "iqr_ns": 344.31982421875,2590      "mean_ns": 12263.645717075893,2591      "median_ns": 12170.87841796875,2592      "min_ns": 12016.5,2593      "ns_per_op_samples": [2594       12091.9189453125,2595       12170.87841796875,2596       12731.791015625,2597       12600.9521484375,2598       12206.54296875,2599       12016.5,2600       12026.93652343752601      ],2602      "ops_per_rep": 2048,2603      "ops_per_s": 82163.33822903263,2604      "q1_ns": 12059.427734375,2605      "q3_ns": 12403.74755859375,2606      "reps": 7,2607      "sd_ns": 286.183064023627942608     },2609     "sigs_per_rep": 2048,2610     "speedup_vs_k256_single_verify": {2611      "bootstrap_resamples": 2000,2612      "ci95_high": 2.078364174558362,2613      "ci95_low": 1.9308692877638602,2614      "point": 2.01190798717112562615     },2616     "speedup_vs_libsecp256k1_single_verify": {2617      "bootstrap_resamples": 2000,2618      "ci95_high": 1.1011203455004932,2619      "ci95_low": 1.0443407248103693,2620      "point": 1.084312984387082621     },2622     "window_bits": 52623    },2624    {2625     "algorithm": "pippenger",2626     "batch_size": 128,2627     "msm_only_ns_per_sig_median": 9612.99609375,2628     "msm_only_ns_per_sig_samples": [2629      10118.5908203125,2630      9614.64404296875,2631      9282.4912109375,2632      10044.39208984375,2633      9558.0869140625,2634      9612.99609375,2635      9314.147949218752636     ],2637     "n_batches_per_rep": 16,2638     "n_terms": 257,2639     "op_counts_per_batch": {2640      "adds": 5163,2641      "doublings": 252,2642      "identity_adds": 2506,2643      "mixed_adds": 81802644     },2645     "op_counts_per_signature": {2646      "adds": 40.3359375,2647      "doublings": 1.96875,2648      "mixed_adds": 63.90625,2649      "total": 106.21093752650     },2651     "per_signature": {2652      "iqr_ns": 568.257568359375,2653      "mean_ns": 12830.014229910714,2654      "median_ns": 12765.58447265625,2655      "min_ns": 12329.1826171875,2656      "ns_per_op_samples": [2657       13434.08203125,2658       12779.70361328125,2659       12329.1826171875,2660       13429.17919921875,2661       12713.8876953125,2662       12765.58447265625,2663       12358.479980468752664      ],2665      "ops_per_rep": 2048,2666      "ops_per_s": 78335.62201103989,2667      "q1_ns": 12536.183837890625,2668      "q3_ns": 13104.44140625,2669      "reps": 7,2670      "sd_ns": 450.41483574659762671     },2672     "sigs_per_rep": 2048,2673     "speedup_vs_k256_single_verify": {2674      "bootstrap_resamples": 2000,2675      "ci95_high": 2.0226074759601547,2676      "ci95_low": 1.8117854515944993,2677      "point": 1.91817989630245542678     },2679     "speedup_vs_libsecp256k1_single_verify": {2680      "bootstrap_resamples": 2000,2681      "ci95_high": 1.0715803659454322,2682      "ci95_low": 0.9799323774580037,2683      "point": 1.03379845460800682684     },2685     "window_bits": 62686    },2687    {2688     "algorithm": "k256_lincomb_vartime",2689     "batch_size": 128,2690     "msm_only_ns_per_sig_median": 12079.447265625,2691     "msm_only_ns_per_sig_samples": [2692      11504.8212890625,2693      11788.81884765625,2694      12079.447265625,2695      12004.59765625,2696      12768.12646484375,2697      12355.71240234375,2698      12155.9667968752699     ],2700     "n_batches_per_rep": 16,2701     "n_terms": 257,2702     "op_counts_per_batch": {2703      "adds": 0,2704      "doublings": 0,2705      "identity_adds": 0,2706      "mixed_adds": 02707     },2708     "op_counts_per_signature": {2709      "adds": 0.0,2710      "doublings": 0.0,2711      "mixed_adds": 0.0,2712      "total": 0.02713     },2714     "per_signature": {2715      "iqr_ns": 454.65087890625,2716      "mean_ns": 15267.458984375,2717      "median_ns": 15261.41357421875,2718      "min_ns": 14550.21142578125,2719      "ns_per_op_samples": [2720       14550.21142578125,2721       14905.70068359375,2722       15261.41357421875,2723       15171.24462890625,2724       15997.3955078125,2725       15618.306640625,2726       15367.94042968752727      ],2728      "ops_per_rep": 2048,2729      "ops_per_s": 65524.72974648361,2730      "q1_ns": 15038.47265625,2731      "q3_ns": 15493.12353515625,2732      "reps": 7,2733      "sd_ns": 469.14901766767872734     },2735     "sigs_per_rep": 2048,2736     "speedup_vs_k256_single_verify": {2737      "bootstrap_resamples": 2000,2738      "ci95_high": 1.67696605014434,2739      "ci95_low": 1.5578379948510443,2740      "point": 1.60448358082409832741     },2742     "speedup_vs_libsecp256k1_single_verify": {2743      "bootstrap_resamples": 2000,2744      "ci95_high": 0.8884590386667486,2745      "ci95_low": 0.8425253503969763,2746      "point": 0.86473257774062862747     },2748     "window_bits": 02749    },2750    {2751     "algorithm": "k256_lincomb_ct",2752     "batch_size": 128,2753     "msm_only_ns_per_sig_median": 18683.67431640625,2754     "msm_only_ns_per_sig_samples": [2755      18973.572265625,2756      18588.86669921875,2757      18683.67431640625,2758      19045.2265625,2759      18641.5390625,2760      18800.76025390625,2761      18665.445800781252762     ],2763     "n_batches_per_rep": 16,2764     "n_terms": 257,2765     "op_counts_per_batch": {2766      "adds": 0,2767      "doublings": 0,2768      "identity_adds": 0,2769      "mixed_adds": 02770     },2771     "op_counts_per_signature": {2772      "adds": 0.0,2773      "doublings": 0.0,2774      "mixed_adds": 0.0,2775      "total": 0.02776     },2777     "per_signature": {2778      "iqr_ns": 264.68896484375,2779      "mean_ns": 21948.489188058036,2780      "median_ns": 21892.1708984375,2781      "min_ns": 21715.189453125,2782      "ns_per_op_samples": [2783       22159.72900390625,2784       21715.189453125,2785       21814.8193359375,2786       22337.85009765625,2787       21767.5986328125,2788       21952.06689453125,2789       21892.17089843752790      ],2791      "ops_per_rep": 2048,2792      "ops_per_s": 45678.43018580549,2793      "q1_ns": 21791.208984375,2794      "q3_ns": 22055.89794921875,2795      "reps": 7,2796      "sd_ns": 225.250422165685082797     },2798     "sigs_per_rep": 2048,2799     "speedup_vs_k256_single_verify": {2800      "bootstrap_resamples": 2000,2801      "ci95_high": 1.148328505208676,2802      "ci95_low": 1.097973332422569,2803      "point": 1.1185134454503862804     },2805     "speedup_vs_libsecp256k1_single_verify": {2806      "bootstrap_resamples": 2000,2807      "ci95_high": 0.6084949774547164,2808      "ci95_low": 0.5938559762026083,2809      "point": 0.60282013881692782810     },2811     "window_bits": 02812    },2813    {2814     "algorithm": "straus_wnaf5",2815     "batch_size": 256,2816     "msm_only_ns_per_sig_median": 9294.84033203125,2817     "msm_only_ns_per_sig_samples": [2818      9313.72119140625,2819      9433.45068359375,2820      9294.84033203125,2821      9067.810546875,2822      9048.42138671875,2823      9052.71337890625,2824      9853.718752825     ],2826     "n_batches_per_rep": 8,2827     "n_terms": 513,2828     "op_counts_per_batch": {2829      "adds": 20212,2830      "doublings": 769,2831      "identity_adds": 1,2832      "mixed_adds": 02833     },2834     "op_counts_per_signature": {2835      "adds": 78.953125,2836      "doublings": 3.00390625,2837      "mixed_adds": 0.0,2838      "total": 81.957031252839     },2840     "per_signature": {2841      "iqr_ns": 345.3876953125,2842      "mean_ns": 12433.782645089286,2843      "median_ns": 12388.5498046875,2844      "min_ns": 12140.29931640625,2845      "ns_per_op_samples": [2846       12388.5498046875,2847       12611.26708984375,2848       12475.7080078125,2849       12194.4990234375,2850       12201.70068359375,2851       12140.29931640625,2852       13024.454589843752853      ],2854      "ops_per_rep": 2048,2855      "ops_per_s": 80719.69808941046,2856      "q1_ns": 12198.099853515625,2857      "q3_ns": 12543.487548828125,2858      "reps": 7,2859      "sd_ns": 311.30075837721972860     },2861     "sigs_per_rep": 2048,2862     "speedup_vs_k256_single_verify": {2863      "bootstrap_resamples": 2000,2864      "ci95_high": 2.0498057322369436,2865      "ci95_low": 1.9292900012873688,2866      "point": 1.97655802220974122867     },2868     "speedup_vs_libsecp256k1_single_verify": {2869      "bootstrap_resamples": 2000,2870      "ci95_high": 1.0878981827384382,2871      "ci95_low": 1.0434865431244345,2872      "point": 1.06526120555342052873     },2874     "window_bits": 52875    },2876    {2877     "algorithm": "pippenger",2878     "batch_size": 256,2879     "msm_only_ns_per_sig_median": 8209.06494140625,2880     "msm_only_ns_per_sig_samples": [2881      8232.91015625,2882      8022.6240234375,2883      8093.5263671875,2884      8134.19580078125,2885      8319.53857421875,2886      8324.5234375,2887      8209.064941406252888     ],2889     "n_batches_per_rep": 8,2890     "n_terms": 513,2891     "op_counts_per_batch": {2892      "adds": 8866,2893      "doublings": 252,2894      "identity_adds": 4282,2895      "mixed_adds": 141642896     },2897     "op_counts_per_signature": {2898      "adds": 34.6328125,2899      "doublings": 0.984375,2900      "mixed_adds": 55.328125,2901      "total": 90.94531252902     },2903     "per_signature": {2904      "iqr_ns": 200.53125,2905      "mean_ns": 11310.212681361607,2906      "median_ns": 11349.3447265625,2907      "min_ns": 11079.9970703125,2908      "ns_per_op_samples": [2909       11377.54345703125,2910       11079.9970703125,2911       11198.1201171875,2912       11226.6640625,2913       11448.30322265625,2914       11491.51611328125,2915       11349.34472656252916      ],2917      "ops_per_rep": 2048,2918      "ops_per_s": 88110.81380403897,2919      "q1_ns": 11212.39208984375,2920      "q3_ns": 11412.92333984375,2921      "reps": 7,2922      "sd_ns": 147.50651090844022923     },2924     "sigs_per_rep": 2048,2925     "speedup_vs_k256_single_verify": {2926      "bootstrap_resamples": 2000,2927      "ci95_high": 2.2321919874420884,2928      "ci95_low": 2.125274901161706,2929      "point": 2.15754196299018862930     },2931     "speedup_vs_libsecp256k1_single_verify": {2932      "bootstrap_resamples": 2000,2933      "ci95_high": 1.1826185432386767,2934      "ci95_low": 1.1494880284055469,2935      "point": 1.1628020663706752936     },2937     "window_bits": 72938    },2939    {2940     "algorithm": "k256_lincomb_vartime",2941     "batch_size": 256,2942     "msm_only_ns_per_sig_median": 11865.3154296875,2943     "msm_only_ns_per_sig_samples": [2944      12353.12841796875,2945      11882.93408203125,2946      11716.45068359375,2947      11793.29443359375,2948      11899.71923828125,2949      11694.1728515625,2950      11865.31542968752951     ],2952     "n_batches_per_rep": 8,2953     "n_terms": 513,2954     "op_counts_per_batch": {2955      "adds": 0,2956      "doublings": 0,2957      "identity_adds": 0,2958      "mixed_adds": 02959     },2960     "op_counts_per_signature": {2961      "adds": 0.0,2962      "doublings": 0.0,2963      "mixed_adds": 0.0,2964      "total": 0.02965     },2966     "per_signature": {2967      "iqr_ns": 169.4541015625,2968      "mean_ns": 15022.4638671875,2969      "median_ns": 15002.33935546875,2970      "min_ns": 14778.40185546875,2971      "ns_per_op_samples": [2972       15579.7119140625,2973       15033.3251953125,2974       14811.1572265625,2975       14917.78564453125,2976       15034.52587890625,2977       14778.40185546875,2978       15002.339355468752979      ],2980      "ops_per_rep": 2048,2981      "ops_per_s": 66656.27115250353,2982      "q1_ns": 14864.471435546875,2983      "q3_ns": 15033.925537109375,2984      "reps": 7,2985      "sd_ns": 266.573359049049262986     },2987     "sigs_per_rep": 2048,2988     "speedup_vs_k256_single_verify": {2989      "bootstrap_resamples": 2000,2990      "ci95_high": 1.6876705592707673,2991      "ci95_low": 1.6121088350385178,2992      "point": 1.63219128162661862993     },2994     "speedup_vs_libsecp256k1_single_verify": {2995      "bootstrap_resamples": 2000,2996      "ci95_high": 0.8941303030832501,2997      "ci95_low": 0.8729878551351319,2998      "point": 0.87966557663484182999     },3000     "window_bits": 03001    },3002    {3003     "algorithm": "k256_lincomb_ct",3004     "batch_size": 256,3005     "msm_only_ns_per_sig_median": 18714.68017578125,3006     "msm_only_ns_per_sig_samples": [3007      19003.54052734375,3008      19322.896484375,3009      18819.5390625,3010      18617.25,3011      18665.58935546875,3012      18635.04931640625,3013      18714.680175781253014     ],3015     "n_batches_per_rep": 8,3016     "n_terms": 513,3017     "op_counts_per_batch": {3018      "adds": 0,3019      "doublings": 0,3020      "identity_adds": 0,3021      "mixed_adds": 03022     },3023     "op_counts_per_signature": {3024      "adds": 0.0,3025      "doublings": 0.0,3026      "mixed_adds": 0.0,3027      "total": 0.03028     },3029     "per_signature": {3030      "iqr_ns": 307.373046875,3031      "mean_ns": 21985.674176897322,3032      "median_ns": 21844.25830078125,3033      "min_ns": 21740.29541015625,3034      "ns_per_op_samples": [3035       22195.9638671875,3036       22566.67041015625,3037       21985.65673828125,3038       21740.29541015625,3039       21809.7333984375,3040       21757.14111328125,3041       21844.258300781253042      ],3043      "ops_per_rep": 2048,3044      "ops_per_s": 45778.62000305295,3045      "q1_ns": 21783.437255859375,3046      "q3_ns": 22090.810302734375,3047      "reps": 7,3048      "sd_ns": 301.43271363145833049     },3050     "sigs_per_rep": 2048,3051     "speedup_vs_k256_single_verify": {3052      "bootstrap_resamples": 2000,3053      "ci95_high": 1.1488804466475346,3054      "ci95_low": 1.0961808933185566,3055      "point": 1.12096676219600673056     },3057     "speedup_vs_libsecp256k1_single_verify": {3058      "bootstrap_resamples": 2000,3059      "ci95_high": 0.6086785221940758,3060      "ci95_low": 0.5928865075985319,3061      "point": 0.60414234799301993062     },3063     "window_bits": 03064    },3065    {3066     "algorithm": "straus_wnaf5",3067     "batch_size": 512,3068     "msm_only_ns_per_sig_median": 9581.11572265625,3069     "msm_only_ns_per_sig_samples": [3070      9373.27099609375,3071      9673.62451171875,3072      9581.11572265625,3073      9621.17578125,3074      9534.953125,3075      9542.6435546875,3076      9703.002441406253077     ],3078     "n_batches_per_rep": 4,3079     "n_terms": 1025,3080     "op_counts_per_batch": {3081      "adds": 40393,3082      "doublings": 1281,3083      "identity_adds": 1,3084      "mixed_adds": 03085     },3086     "op_counts_per_signature": {3087      "adds": 78.892578125,3088      "doublings": 2.501953125,3089      "mixed_adds": 0.0,3090      "total": 81.394531253091     },3092     "per_signature": {3093      "iqr_ns": 173.27880859375,3094      "mean_ns": 12760.965890066964,3095      "median_ns": 12847.615234375,3096      "min_ns": 12441.162109375,3097      "ns_per_op_samples": [3098       12441.162109375,3099       12869.07958984375,3100       12852.0302734375,3101       12847.615234375,3102       12694.091796875,3103       12680.46044921875,3104       12942.321777343753105      ],3106      "ops_per_rep": 2048,3107      "ops_per_s": 77835.4567565509,3108      "q1_ns": 12687.276123046875,3109      "q3_ns": 12860.554931640625,3110      "reps": 7,3111      "sd_ns": 170.101484026610023112     },3113     "sigs_per_rep": 2048,3114     "speedup_vs_k256_single_verify": {3115      "bootstrap_resamples": 2000,3116      "ci95_high": 1.971249711325746,3117      "ci95_low": 1.8858726196820041,3118      "point": 1.90593250601742573119     },3120     "speedup_vs_libsecp256k1_single_verify": {3121      "bootstrap_resamples": 2000,3122      "ci95_high": 1.0468238163084869,3123      "ci95_low": 1.0212361954302727,3124      "point": 1.02719775298765773125     },3126     "window_bits": 53127    },3128    {3129     "algorithm": "pippenger",3130     "batch_size": 512,3131     "msm_only_ns_per_sig_median": 6513.04150390625,3132     "msm_only_ns_per_sig_samples": [3133      6513.04150390625,3134      6459.14697265625,3135      6465.73876953125,3136      6501.09765625,3137      6987.9560546875,3138      6613.48486328125,3139      7111.043457031253140     ],3141     "n_batches_per_rep": 4,3142     "n_terms": 1025,3143     "op_counts_per_batch": {3144      "adds": 9163,3145      "doublings": 252,3146      "identity_adds": 4577,3147      "mixed_adds": 283133148     },3149     "op_counts_per_signature": {3150      "adds": 17.896484375,3151      "doublings": 0.4921875,3152      "mixed_adds": 55.298828125,3153      "total": 73.68753154     },3155     "per_signature": {3156      "iqr_ns": 450.144775390625,3157      "mean_ns": 9821.27748325893,3158      "median_ns": 9614.15625,3159      "min_ns": 9496.84619140625,3160      "ns_per_op_samples": [3161       9614.15625,3162       9496.84619140625,3163       9506.44921875,3164       9548.2177734375,3165       10227.9462890625,3166       9727.01025390625,3167       10628.316406253168      ],3169      "ops_per_rep": 2048,3170      "ops_per_s": 104013.28769750336,3171      "q1_ns": 9527.33349609375,3172      "q3_ns": 9977.478271484375,3173      "reps": 7,3174      "sd_ns": 437.30442505335763175     },3176     "sigs_per_rep": 2048,3177     "speedup_vs_k256_single_verify": {3178      "bootstrap_resamples": 2000,3179      "ci95_high": 2.6294101430320125,3180      "ci95_low": 2.378854054603192,3181      "point": 2.54694087169635933182     },3183     "speedup_vs_libsecp256k1_single_verify": {3184      "bootstrap_resamples": 2000,3185      "ci95_high": 1.3930652965441634,3186      "ci95_low": 1.2866402626764504,3187      "point": 1.37266767429539123188     },3189     "window_bits": 73190    },3191    {3192     "algorithm": "k256_lincomb_vartime",3193     "batch_size": 512,3194     "msm_only_ns_per_sig_median": 12672.7294921875,3195     "msm_only_ns_per_sig_samples": [3196      12324.46337890625,3197      13232.8896484375,3198      12837.44287109375,3199      12335.77490234375,3200      12562.052734375,3201      13010.8642578125,3202      12672.72949218753203     ],3204     "n_batches_per_rep": 4,3205     "n_terms": 1025,3206     "op_counts_per_batch": {3207      "adds": 0,3208      "doublings": 0,3209      "identity_adds": 0,3210      "mixed_adds": 03211     },3212     "op_counts_per_signature": {3213      "adds": 0.0,3214      "doublings": 0.0,3215      "mixed_adds": 0.0,3216      "total": 0.03217     },3218     "per_signature": {3219      "iqr_ns": 515.0654296875,3220      "mean_ns": 15827.95933314732,3221      "median_ns": 15830.4853515625,3222      "min_ns": 15376.8310546875,3223      "ns_per_op_samples": [3224       15376.8310546875,3225       16402.54736328125,3226       16043.8232421875,3227       15419.880859375,3228       15657.9794921875,3229       16064.16796875,3230       15830.48535156253231      ],3232      "ops_per_rep": 2048,3233      "ops_per_s": 63169.257151126956,3234      "q1_ns": 15538.93017578125,3235      "q3_ns": 16053.99560546875,3236      "reps": 7,3237      "sd_ns": 372.265013714872053238     },3239     "sigs_per_rep": 2048,3240     "speedup_vs_k256_single_verify": {3241      "bootstrap_resamples": 2000,3242      "ci95_high": 1.6210471551602608,3243      "ci95_low": 1.5106930333330797,3244      "point": 1.54680585946678623245     },3246     "speedup_vs_libsecp256k1_single_verify": {3247      "bootstrap_resamples": 2000,3248      "ci95_high": 0.8588331272318773,3249      "ci95_low": 0.8180692533116236,3250      "point": 0.83364730814759413251     },3252     "window_bits": 03253    },3254    {3255     "algorithm": "straus_wnaf5",3256     "batch_size": 1024,3257     "msm_only_ns_per_sig_median": 9625.30517578125,3258     "msm_only_ns_per_sig_samples": [3259      9888.08154296875,3260      9625.30517578125,3261      9624.08447265625,3262      9613.9326171875,3263      9634.1552734375,3264      9589.25390625,3265      9648.579589843753266     ],3267     "n_batches_per_rep": 2,3268     "n_terms": 2049,3269     "op_counts_per_batch": {3270      "adds": 80876,3271      "doublings": 2305,3272      "identity_adds": 1,3273      "mixed_adds": 03274     },3275     "op_counts_per_signature": {3276      "adds": 78.98046875,3277      "doublings": 2.2509765625,3278      "mixed_adds": 0.0,3279      "total": 81.23144531253280     },3281     "per_signature": {3282      "iqr_ns": 35.308837890625,3283      "mean_ns": 12709.48716517857,3284      "median_ns": 12660.8681640625,3285      "min_ns": 12626.77001953125,3286      "ns_per_op_samples": [3287       13026.611328125,3288       12660.8681640625,3289       12655.47705078125,3290       12635.29443359375,3291       12674.9267578125,3292       12626.77001953125,3293       12686.462402343753294      ],3295      "ops_per_rep": 2048,3296      "ops_per_s": 78983.52522447634,3297      "q1_ns": 12645.3857421875,3298      "q3_ns": 12680.694580078125,3299      "reps": 7,3300      "sd_ns": 141.37413926420883301     },3302     "sigs_per_rep": 2048,3303     "speedup_vs_k256_single_verify": {3304      "bootstrap_resamples": 2000,3305      "ci95_high": 1.978296123716881,3306      "ci95_low": 1.910484675028265,3307      "point": 1.93404489982011963308     },3309     "speedup_vs_libsecp256k1_single_verify": {3310      "bootstrap_resamples": 2000,3311      "ci95_high": 1.0488903695005756,3312      "ci95_low": 1.0345640954704,3313      "point": 1.04234886020371123314     },3315     "window_bits": 53316    },3317    {3318     "algorithm": "pippenger",3319     "batch_size": 1024,3320     "msm_only_ns_per_sig_median": 5581.09521484375,3321     "msm_only_ns_per_sig_samples": [3322      5576.23291015625,3323      5582.07177734375,3324      5581.09521484375,3325      5568.96923828125,3326      5586.873046875,3327      5592.7939453125,3328      5578.613281253329     ],3330     "n_batches_per_rep": 2,3331     "n_terms": 2049,3332     "op_counts_per_batch": {3333      "adds": 16281,3334      "doublings": 248,3335      "identity_adds": 8122,3336      "mixed_adds": 489713337     },3338     "op_counts_per_signature": {3339      "adds": 15.8994140625,3340      "doublings": 0.2421875,3341      "mixed_adds": 47.8232421875,3342      "total": 63.964843753343     },3344     "per_signature": {3345      "iqr_ns": 8.910888671875,3346      "mean_ns": 8619.78306361607,3347      "median_ns": 8620.46337890625,3348      "min_ns": 8608.33740234375,3349      "ns_per_op_samples": [3350       8620.46337890625,3351       8616.55712890625,3352       8623.98291015625,3353       8608.33740234375,3354       8626.0986328125,3355       8627.33935546875,3356       8615.702636718753357      ],3358      "ops_per_rep": 2048,3359      "ops_per_s": 116003.04485335895,3360      "q1_ns": 8616.1298828125,3361      "q3_ns": 8625.040771484375,3362      "reps": 7,3363      "sd_ns": 6.747162379721423364     },3365     "sigs_per_rep": 2048,3366     "speedup_vs_k256_single_verify": {3367      "bootstrap_resamples": 2000,3368      "ci95_high": 2.902046040652679,3369      "ci95_low": 2.8104522298457186,3370      "point": 2.8405303083726843371     },3372     "speedup_vs_libsecp256k1_single_verify": {3373      "bootstrap_resamples": 2000,3374      "ci95_high": 1.5405466245292536,3375      "ci95_low": 1.5219137881805243,3376      "point": 1.53089699705613953377     },3378     "window_bits": 83379    },3380    {3381     "algorithm": "k256_lincomb_vartime",3382     "batch_size": 1024,3383     "msm_only_ns_per_sig_median": 12786.1943359375,3384     "msm_only_ns_per_sig_samples": [3385      12847.73779296875,3386      12723.2666015625,3387      12846.76123046875,3388      12841.67431640625,3389      12742.6552734375,3390      12781.90087890625,3391      12786.19433593753392     ],3393     "n_batches_per_rep": 2,3394     "n_terms": 2049,3395     "op_counts_per_batch": {3396      "adds": 0,3397      "doublings": 0,3398      "identity_adds": 0,3399      "mixed_adds": 03400     },3401     "op_counts_per_signature": {3402      "adds": 0.0,3403      "doublings": 0.0,3404      "mixed_adds": 0.0,3405      "total": 0.03406     },3407     "per_signature": {3408      "iqr_ns": 84.177734375,3409      "mean_ns": 15837.823939732143,3410      "median_ns": 15835.65283203125,3411      "min_ns": 15772.90869140625,3412      "ns_per_op_samples": [3413       15886.31201171875,3414       15772.90869140625,3415       15881.24609375,3416       15889.4453125,3417       15779.11376953125,3418       15820.0888671875,3419       15835.652832031253420      ],3421      "ops_per_rep": 2048,3422      "ops_per_s": 63148.64379808011,3423      "q1_ns": 15799.601318359375,3424      "q3_ns": 15883.779052734375,3425      "reps": 7,3426      "sd_ns": 49.802046089174783427     },3428     "sigs_per_rep": 2048,3429     "speedup_vs_k256_single_verify": {3430      "bootstrap_resamples": 2000,3431      "ci95_high": 1.5843005549735723,3432      "ci95_low": 1.526145910325231,3433      "point": 1.54630110673240083434     },3435     "speedup_vs_libsecp256k1_single_verify": {3436      "bootstrap_resamples": 2000,3437      "ci95_high": 0.8392806271269703,3438      "ci95_low": 0.8264438711245256,3439      "point": 0.83337527287198093440     },3441     "window_bits": 03442    },3443    {3444     "algorithm": "straus_wnaf5",3445     "batch_size": 2048,3446     "msm_only_ns_per_sig_median": 10377.62451171875,3447     "msm_only_ns_per_sig_samples": [3448      10435.1396484375,3449      10377.62451171875,3450      10408.8134765625,3451      10866.65869140625,3452      10361.87744140625,3453      10319.580078125,3454      10228.63769531253455     ],3456     "n_batches_per_rep": 1,3457     "n_terms": 4097,3458     "op_counts_per_batch": {3459      "adds": 161617,3460      "doublings": 4353,3461      "identity_adds": 1,3462      "mixed_adds": 03463     },3464     "op_counts_per_signature": {3465      "adds": 78.91455078125,3466      "doublings": 2.12548828125,3467      "mixed_adds": 0.0,3468      "total": 81.04003906253469     },3470     "per_signature": {3471      "iqr_ns": 88.11474609375,3472      "mean_ns": 13471.720424107143,3473      "median_ns": 13424.2353515625,3474      "min_ns": 13279.1953125,3475      "ns_per_op_samples": [3476       13482.177734375,3477       13424.2353515625,3478       13452.53515625,3479       13905.416015625,3480       13410.80712890625,3481       13347.67626953125,3482       13279.19531253483      ],3484      "ops_per_rep": 2048,3485      "ops_per_s": 74492.138569636,3486      "q1_ns": 13379.24169921875,3487      "q3_ns": 13467.3564453125,3488      "reps": 7,3489      "sd_ns": 202.890540470062523490     },3491     "sigs_per_rep": 2048,3492     "speedup_vs_k256_single_verify": {3493      "bootstrap_resamples": 2000,3494      "ci95_high": 1.8727120358065017,3495      "ci95_low": 1.7977282659761333,3496      "point": 1.82406571836137383497     },3498     "speedup_vs_libsecp256k1_single_verify": {3499      "bootstrap_resamples": 2000,3500      "ci95_high": 0.9921655449668076,3501      "ci95_low": 0.9735043372507832,3502      "point": 0.98307584412723693503     },3504     "window_bits": 53505    },3506    {3507     "algorithm": "pippenger",3508     "batch_size": 2048,3509     "msm_only_ns_per_sig_median": 4870.89013671875,3510     "msm_only_ns_per_sig_samples": [3511      4875.447265625,3512      4870.76806640625,3513      4866.47509765625,3514      4870.89013671875,3515      5023.49853515625,3516      4862.99658203125,3517      4929.58593753518     ],3519     "n_batches_per_rep": 1,3520     "n_terms": 4097,3521     "op_counts_per_batch": {3522      "adds": 16351,3523      "doublings": 248,3524      "identity_adds": 8192,3525      "mixed_adds": 979033526     },3527     "op_counts_per_signature": {3528      "adds": 7.98388671875,3529      "doublings": 0.12109375,3530      "mixed_adds": 47.80419921875,3531      "total": 55.90917968753532     },3533     "per_signature": {3534      "iqr_ns": 37.801025390625,3535      "mean_ns": 7939.583844866072,3536      "median_ns": 7911.19384765625,3537      "min_ns": 7906.94140625,3538      "ns_per_op_samples": [3539       7911.19384765625,3540       7908.14208984375,3541       7907.16552734375,3542       7912.55712890625,3543       8052.734375,3544       7906.94140625,3545       7978.35253906253546      ],3547      "ops_per_rep": 2048,3548      "ops_per_s": 126403.17242337039,3549      "q1_ns": 7907.65380859375,3550      "q3_ns": 7945.454833984375,3551      "reps": 7,3552      "sd_ns": 56.195417228776363553     },3554     "sigs_per_rep": 2048,3555     "speedup_vs_k256_single_verify": {3556      "bootstrap_resamples": 2000,3557      "ci95_high": 3.1620126719920965,3558      "ci95_low": 3.0472144867417086,3559      "point": 3.09519498213968853560     },3561     "speedup_vs_libsecp256k1_single_verify": {3562      "bootstrap_resamples": 2000,3563      "ci95_high": 1.678549506216861,3564      "ci95_low": 1.6458141148769065,3565      "point": 1.66814791220287463566     },3567     "window_bits": 83568    },3569    {3570     "algorithm": "k256_lincomb_vartime",3571     "batch_size": 2048,3572     "msm_only_ns_per_sig_median": 14036.9462890625,3573     "msm_only_ns_per_sig_samples": [3574      14012.61376953125,3575      14299.458984375,3576      14115.29541015625,3577      13874.51171875,3578      14104.57373046875,3579      14036.9462890625,3580      14002.90917968753581     ],3582     "n_batches_per_rep": 1,3583     "n_terms": 4097,3584     "op_counts_per_batch": {3585      "adds": 0,3586      "doublings": 0,3587      "identity_adds": 0,3588      "mixed_adds": 03589     },3590     "op_counts_per_signature": {3591      "adds": 0.0,3592      "doublings": 0.0,3593      "mixed_adds": 0.0,3594      "total": 0.03595     },3596     "per_signature": {3597      "iqr_ns": 108.40869140625,3598      "mean_ns": 17105.881417410714,3599      "median_ns": 17075.98876953125,3600      "min_ns": 16918.64013671875,3601      "ns_per_op_samples": [3602       17044.291015625,3603       17354.7158203125,3604       17161.66162109375,3605       16918.64013671875,3606       17142.65966796875,3607       17075.98876953125,3608       17043.2128906253609      ],3610      "ops_per_rep": 2048,3611      "ops_per_s": 58561.76257179928,3612      "q1_ns": 17043.751953125,3613      "q3_ns": 17152.16064453125,3614      "reps": 7,3615      "sd_ns": 135.43523688375253616     },3617     "sigs_per_rep": 2048,3618     "speedup_vs_k256_single_verify": {3619      "bootstrap_resamples": 2000,3620      "ci95_high": 1.4670980140550636,3621      "ci95_low": 1.4138583200883146,3622      "point": 1.43398357954484523623     },3624     "speedup_vs_libsecp256k1_single_verify": {3625      "bootstrap_resamples": 2000,3626      "ci95_high": 0.7788066976696858,3627      "ci95_low": 0.7656313987568761,3628      "point": 0.77284201097318183629     },3630     "window_bits": 03631    }3632   ],3633   "single_verify_reference_ns": {3634    "k256_verify_raw": 24486.6875,3635    "libsecp256k1_schnorr_verify": 13197.04153636   },3637   "sizes": [3638    1,3639    2,3640    4,3641    8,3642    16,3643    32,3644    64,3645    128,3646    256,3647    512,3648    1024,3649    20483650   ]3651  },3652  "python_baselines": {3653   "seed": 34,3654   "ops": 20,3655   "reps": 7,3656   "python": "3.12.13",3657   "results": {3658    "wp34_pure_python_ecdsa_sign": {3659     "reps": 7,3660     "ops_per_rep": 20,3661     "ns_per_op_samples": [3662      3801920.8,3663      3812612.5,3664      3854562.5,3665      3812591.65,3666      3804981.25,3667      3800593.75,3668      3900514.553669     ],3670     "median_ns": 3812591.65,3671     "q1_ns": 3803451.025,3672     "q3_ns": 3833587.5,3673     "iqr_ns": 30136.475000000093,3674     "min_ns": 3800593.75,3675     "mean_ns": 3826825.285714286,3676     "sd_ns": 37393.29075653937,3677     "ops_per_s": 262.28877671701353678    },3679    "wp34_pure_python_ecdsa_verify": {3680     "reps": 7,3681     "ops_per_rep": 20,3682     "ns_per_op_samples": [3683      8599947.9,3684      8206531.25,3685      7140266.7,3686      7175522.9,3687      7237068.75,3688      7099704.15,3689      7252956.253690     ],3691     "median_ns": 7237068.75,3692     "q1_ns": 7157894.800000001,3693     "q3_ns": 7729743.75,3694     "iqr_ns": 571848.9499999993,3695     "min_ns": 7099704.15,3696     "mean_ns": 7530285.414285714,3697     "sd_ns": 609336.3884085865,3698     "ops_per_s": 138.177490714040833699    },3700    "wp34_pure_python_ecdsa_verify_shamir": {3701     "reps": 7,3702     "ops_per_rep": 20,3703     "ns_per_op_samples": [3704      4504793.75,3705      4374181.25,3706      4508685.4,3707      4517350.0,3708      4376629.15,3709      4327158.35,3710      4389137.53711     ],3712     "median_ns": 4389137.5,3713     "q1_ns": 4375405.2,3714     "q3_ns": 4506739.575,3715     "iqr_ns": 131334.375,3716     "min_ns": 4327158.35,3717     "mean_ns": 4428276.485714286,3718     "sd_ns": 79167.60234257094,3719     "ops_per_s": 227.835195411399163720    },3721    "wp34_pure_python_schnorr_sign": {3722     "reps": 7,3723     "ops_per_rep": 20,3724     "ns_per_op_samples": [3725      14907475.0,3726      14713058.3,3727      14788443.75,3728      14512383.35,3729      14396831.25,3730      14651887.5,3731      15177497.93732     ],3733     "median_ns": 14713058.3,3734     "q1_ns": 14582135.425,3735     "q3_ns": 14847959.375,3736     "iqr_ns": 265823.94999999925,3737     "min_ns": 14396831.25,3738     "mean_ns": 14735368.15,3739     "sd_ns": 258106.1490264036,3740     "ops_per_s": 67.966834604332393741    },3742    "wp34_pure_python_schnorr_verify": {3743     "reps": 7,3744     "ops_per_rep": 20,3745     "ns_per_op_samples": [3746      7513406.25,3747      7377645.85,3748      7493079.2,3749      7417233.35,3750      7353604.15,3751      7340768.75,3752      7494881.253753     ],3754     "median_ns": 7417233.35,3755     "q1_ns": 7365625.0,3756     "q3_ns": 7493980.225,3757     "iqr_ns": 128355.22499999963,3758     "min_ns": 7340768.75,3759     "mean_ns": 7427231.257142857,3760     "sd_ns": 72794.21829425759,3761     "ops_per_s": 134.821159428670263762    },3763    "wp34_pure_python_schnorr_batch_verify_per_sig": {3764     "reps": 7,3765     "ops_per_rep": 16,3766     "ns_per_op_samples": [3767      5586445.3125,3768      5942755.1875,3769      5719567.75,3770      5673229.125,3771      5656442.75,3772      5712385.4375,3773      5768197.8753774     ],3775     "median_ns": 5712385.4375,3776     "q1_ns": 5664835.9375,3777     "q3_ns": 5743882.8125,3778     "iqr_ns": 79046.875,3779     "min_ns": 5586445.3125,3780     "mean_ns": 5722717.633928572,3781     "sd_ns": 112556.11319446212,3782     "ops_per_s": 175.05821533598152,3783     "batch_size": 163784    },3785    "python_ecdsa_pkg_ecdsa_sign": {3786     "reps": 7,3787     "ops_per_rep": 20,3788     "ns_per_op_samples": [3789      118562.5,3790      118614.6,3791      118029.2,3792      117841.65,3793      116395.85,3794      118050.0,3795      117793.753796     ],3797     "median_ns": 118029.2,3798     "q1_ns": 117817.7,3799     "q3_ns": 118306.25,3800     "iqr_ns": 488.5500000000029,3801     "min_ns": 116395.85,3802     "mean_ns": 117898.22142857143,3803     "sd_ns": 737.7771698697045,3804     "ops_per_s": 8472.479691466183805    },3806    "python_ecdsa_pkg_ecdsa_verify": {3807     "reps": 7,3808     "ops_per_rep": 20,3809     "ns_per_op_samples": [3810      420854.15,3811      419358.35,3812      415862.5,3813      414627.1,3814      414229.2,3815      442475.0,3816      444735.43817     ],3818     "median_ns": 419358.35,3819     "q1_ns": 415244.8,3820     "q3_ns": 431664.575,3821     "iqr_ns": 16419.775000000023,3822     "min_ns": 414229.2,3823     "mean_ns": 424591.67142857146,3824     "sd_ns": 13227.571538578595,3825     "ops_per_s": 2384.59541821451743826    },3827    "coincurve_ecdsa_sign_der": {3828     "reps": 7,3829     "ops_per_rep": 20,3830     "ns_per_op_samples": [3831      12095.8,3832      11950.0,3833      12045.85,3834      11935.4,3835      11945.85,3836      11931.25,3837      11933.353838     ],3839     "median_ns": 11945.85,3840     "q1_ns": 11934.375,3841     "q3_ns": 11997.925,3842     "iqr_ns": 63.54999999999927,3843     "min_ns": 11931.25,3844     "mean_ns": 11976.785714285714,3845     "sd_ns": 66.18371976479365,3846     "ops_per_s": 83711.07957993783847    },3848    "coincurve_ecdsa_verify_der": {3849     "reps": 7,3850     "ops_per_rep": 20,3851     "ns_per_op_samples": [3852      13354.2,3853      12802.05,3854      12689.6,3855      12606.25,3856      12568.75,3857      12677.05,3858      12660.43859     ],3860     "median_ns": 12677.05,3861     "q1_ns": 12633.325,3862     "q3_ns": 12745.825,3863     "iqr_ns": 112.5,3864     "min_ns": 12568.75,3865     "mean_ns": 12765.471428571429,3866     "sd_ns": 269.75449773380836,3867     "ops_per_s": 78882.705361263073868    },3869    "coincurve_schnorr_sign": {3870     "reps": 7,3871     "ops_per_rep": 20,3872     "ns_per_op_samples": [3873      28385.4,3874      28341.65,3875      28493.75,3876      28347.9,3877      28220.85,3878      27952.1,3879      27862.53880     ],3881     "median_ns": 28341.65,3882     "q1_ns": 28086.475,3883     "q3_ns": 28366.65,3884     "iqr_ns": 280.1750000000029,3885     "min_ns": 27862.5,3886     "mean_ns": 28229.164285714283,3887     "sd_ns": 235.3872159412481,3888     "ops_per_s": 35283.7608254988663889    },3890    "coincurve_schnorr_verify": {3891     "reps": 7,3892     "ops_per_rep": 20,3893     "ns_per_op_samples": [3894      12550.0,3895      12658.35,3896      12520.85,3897      12516.65,3898      12516.65,3899      12504.15,3900      12472.93901     ],3902     "median_ns": 12516.65,3903     "q1_ns": 12510.4,3904     "q3_ns": 12535.425,3905     "iqr_ns": 25.024999999999636,3906     "min_ns": 12472.9,3907     "mean_ns": 12534.221428571429,3908     "sd_ns": 59.32646863713034,3909     "ops_per_s": 79893.581749110193910    }3911   },3912   "versions": {3913    "ecdsa": "0.19.2",3914    "coincurve": "21.0.0"3915   },3916   "pure_python_batch_negative_control_rejected": true,3917   "coincurve_schnorr_identical_to_wp34": 203918  },3919  "rust_elapsed_s": 20.08,3920  "threading": "single thread (all work on the main thread; no rayon; macOS offers no hard CPU pinning from user space - affinity tags are hints only)"3921 },3922 "elapsed_s": 39.823,3923 "label": "Laptop (Apple M5 Max)",3924 "toolchain": {3925  "rustc": "rustc 1.95.0 (59807616e 2026-04-14)",3926  "cargo": "cargo 1.95.0 (f2d3ce0bd 2026-03-21)",3927  "crates": {3928   "clap": "4.6.7",3929   "k256": "0.14.0",3930   "ecdsa": "0.17.0",3931   "elliptic-curve": "0.14.3",3932   "crypto-bigint": "0.7.10",3933   "primeorder": "0.14.0",3934   "wnaf": "0.14.1",3935   "sha2": "0.11.1",3936   "rand": "0.9.5",3937   "rand_chacha": "0.9.0",3938   "secp256k1": "0.33.1",3939   "secp256k1-sys": "0.14.1",3940   "serde": "1.0.229",3941   "serde_json": "1.0.154"3942  },3943  "profile": "release (opt-level 3, lto fat, codegen-units 1)",3944  "target": "aarch64-apple-darwin"3945 },3946 "crate": "experiments/signature_benchmarks/sigbench"3947}
Files · c732f7e320257301eb619a8227b914374a41aac4
Menu

Theme