SPB Git

spb/wp34_uqo

Public
95.0 KB · 3,822 lines json
1{2 "experiment": "signature_benchmarks",3 "timestamp_utc": "2026-11-01T05:50:10+00:00",4 "command": "experiments/signature_benchmarks/run_bench.py --no-build --seed 34 --label M3U96a (Apple M3 Ultra)",5 "cwd": "/Users/simon-pierreboucher/wp34-sigbench",6 "seed": 34,7 "host": {8  "hostname": "MacStudnpierre2",9  "os": "Darwin 25.6.0 (26.6)",10  "machine": "arm64",11  "python": "3.14.5",12  "cpu": "Apple M3 Ultra",13  "cores": 28,14  "ram_gb": 96.015 },16 "software": {17  "numpy": "2.4.4",18  "scipy": "1.17.1",19  "sympy": "1.14.0",20  "gmpy2": null,21  "z3": "4.16.0",22  "pysat": null,23  "ecdsa": null,24  "coincurve": null25 },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/wp34-sigbench/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/wp34-sigbench/data/vectors/bip340_test_vectors.csv --crosscheck-out /Users/simon-pierreboucher/wp34-sigbench/results/signature_benchmarks/crosscheck_triples_MacStudnpierre2.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/wp34-sigbench/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/wp34-sigbench/results/signature_benchmarks/crosscheck_triples_MacStudnpierre2.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": 13.45,410   "resign_checked": true,411   "all_pass": true412  },413  "sign_verify": {414   "ecdsa_sign_k256": {415    "iqr_ns": 53.79175000000032,416    "mean_ns": 18883.256,417    "median_ns": 18848.625,418    "min_ns": 18831.646,419    "ns_per_op_samples": [420     18907.8335,421     18834.229,422     18874.104,423     18848.625,424     18840.125,425     19046.2295,426     18831.646427    ],428    "ops_per_rep": 2000,429    "ops_per_s": 53054.26788426212,430    "q1_ns": 18837.177,431    "q3_ns": 18890.96875,432    "reps": 7,433    "sd_ns": 76.78433267221082434   },435   "ecdsa_sign_libsecp256k1": {436    "iqr_ns": 769.5517499999987,437    "mean_ns": 29011.006,438    "median_ns": 29199.1875,439    "min_ns": 28564.396,440    "ns_per_op_samples": [441     29199.1875,442     29428.3955,443     29259.375,444     29477.021,445     28564.396,446     28583.125,447     28565.542448    ],449    "ops_per_rep": 2000,450    "ops_per_s": 34247.52829166908,451    "q1_ns": 28574.3335,452    "q3_ns": 29343.88525,453    "reps": 7,454    "sd_ns": 422.1895762165573455   },456   "ecdsa_verify_k256": {457    "iqr_ns": 34.57249999999476,458    "mean_ns": 33574.8215,459    "median_ns": 33524.0625,460    "min_ns": 33494.9795,461    "ns_per_op_samples": [462     33531.6665,463     33524.0625,464     33530.0,465     33496.4795,466     33496.042,467     33494.9795,468     33950.5205469    ],470    "ops_per_rep": 2000,471    "ops_per_s": 29829.320357578978,472    "q1_ns": 33496.26075,473    "q3_ns": 33530.833249999996,474    "reps": 7,475    "sd_ns": 166.49122054806097476   },477   "ecdsa_verify_libsecp256k1": {478    "iqr_ns": 37.5,479    "mean_ns": 16691.279857142858,480    "median_ns": 16680.3545,481    "min_ns": 16664.75,482    "ns_per_op_samples": [483     16734.8125,484     16712.1875,485     16680.3545,486     16676.167,487     16704.8335,488     16665.854,489     16664.75490    ],491    "ops_per_rep": 2000,492    "ops_per_s": 59950.76423585601,493    "q1_ns": 16671.0105,494    "q3_ns": 16708.5105,495    "reps": 7,496    "sd_ns": 26.501544514289243497   },498   "schnorr_sign_k256": {499    "iqr_ns": 401.4482500000013,500    "mean_ns": 14996.696428571431,501    "median_ns": 14837.9585,502    "min_ns": 14731.3335,503    "ns_per_op_samples": [504     15160.396,505     15131.4585,506     15626.7705,507     14837.9585,508     14737.125,509     14731.3335,510     14751.833511    ],512    "ops_per_rep": 2000,513    "ops_per_s": 67394.71605881631,514    "q1_ns": 14744.479,515    "q3_ns": 15145.92725,516    "reps": 7,517    "sd_ns": 332.8919594697641518   },519   "schnorr_sign_libsecp256k1": {520    "iqr_ns": 80.92725000000064,521    "mean_ns": 24748.6905,522    "median_ns": 24717.3335,523    "min_ns": 24694.75,524    "ns_per_op_samples": [525     24863.1045,526     24694.75,527     24697.854,528     24838.604,529     24717.3335,530     24725.146,531     24704.0415532    ],533    "ops_per_rep": 2000,534    "ops_per_s": 40457.438501608594,535    "q1_ns": 24700.94775,536    "q3_ns": 24781.875,537    "reps": 7,538    "sd_ns": 70.94606669975937539   },540   "schnorr_verify_k256": {541    "iqr_ns": 430.46875,542    "mean_ns": 32320.133928571428,543    "median_ns": 32497.646,544    "min_ns": 31759.083,545    "ns_per_op_samples": [546     31759.083,547     32652.521,548     32539.5625,549     32138.75,550     32096.625,551     32556.75,552     32497.646553    ],554    "ops_per_rep": 2000,555    "ops_per_s": 30771.459569717757,556    "q1_ns": 32117.6875,557    "q3_ns": 32548.15625,558    "reps": 7,559    "sd_ns": 327.5571907110819560   },561   "schnorr_verify_libsecp256k1": {562    "iqr_ns": 161.56224999999904,563    "mean_ns": 17099.41664285714,564    "median_ns": 16944.1665,565    "min_ns": 16924.729,566    "ns_per_op_samples": [567     16968.4165,568     16944.1665,569     16942.3335,570     16941.8125,571     16924.729,572     17238.854,573     17735.6045574    ],575    "ops_per_rep": 2000,576    "ops_per_s": 59017.36152085144,577    "q1_ns": 16942.073,578    "q3_ns": 17103.63525,579    "reps": 7,580    "sd_ns": 301.51599255853716581   }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": 57.45799999999872,587    "mean_ns": 22889.636785714283,588    "median_ns": 22876.0625,589    "min_ns": 22856.104,590    "ns_per_op_samples": [591     22856.104,592     22876.0625,593     22913.3955,594     22868.396,595     22857.5415,596     22928.5,597     22927.458598    ],599    "ops_per_rep": 2000,600    "ops_per_s": 43713.816571361436,601    "q1_ns": 22862.96875,602    "q3_ns": 22920.42675,603    "reps": 7,604    "sd_ns": 32.39150473099511605   },606   "k256_mul_by_generator_precomputed_table": {607    "iqr_ns": 30.05199999999968,608    "mean_ns": 10807.788571428571,609    "median_ns": 10800.4165,610    "min_ns": 10788.1665,611    "ns_per_op_samples": [612     10788.1665,613     10842.333,614     10805.729,615     10800.4165,616     10836.125,617     10788.75,618     10793.0619    ],620    "ops_per_rep": 2000,621    "ops_per_s": 92589.0219141086,622    "q1_ns": 10790.875,623    "q3_ns": 10820.927,624    "reps": 7,625    "sd_ns": 22.439008947271418626   },627   "k256_mul_by_generator_vartime_table": {628    "iqr_ns": 215.25025000000096,629    "mean_ns": 9460.776714285716,630    "median_ns": 9426.2085,631    "min_ns": 9328.0,632    "ns_per_op_samples": [633     9344.583,634     9370.229,635     9328.0,636     9426.2085,637     9611.104,638     9591.625,639     9553.6875640    ],641    "ops_per_rep": 2000,642    "ops_per_s": 106087.19295780481,643    "q1_ns": 9357.405999999999,644    "q3_ns": 9572.65625,645    "reps": 7,646    "sd_ns": 121.70761815647116647   },648   "k256_point_mul_ct_glv": {649    "iqr_ns": 555.0832499999997,650    "mean_ns": 23166.4405,651    "median_ns": 23236.7295,652    "min_ns": 22841.8125,653    "ns_per_op_samples": [654     22870.521,655     22864.479,656     22841.8125,657     23385.479,658     23459.6875,659     23506.375,660     23236.7295661    ],662    "ops_per_rep": 2000,663    "ops_per_s": 43035.31613603368,664    "q1_ns": 22867.5,665    "q3_ns": 23422.58325,666    "reps": 7,667    "sd_ns": 299.61088978011685668   },669   "k256_point_mul_vartime_glv_wnaf": {670    "iqr_ns": 18.03125,671    "mean_ns": 19012.967214285713,672    "median_ns": 19015.3125,673    "min_ns": 18989.0625,674    "ns_per_op_samples": [675     19036.125,676     19025.3125,677     19013.229,678     19017.854,679     19015.3125,680     18993.875,681     18989.0625682    ],683    "ops_per_rep": 2000,684    "ops_per_s": 52589.19620700422,685    "q1_ns": 19003.552,686    "q3_ns": 19021.58325,687    "reps": 7,688    "sd_ns": 16.6036476987667689   },690   "libsecp256k1_generator_mul_ecmult_gen": {691    "iqr_ns": 157.67725000000064,692    "mean_ns": 23915.16957142857,693    "median_ns": 23797.458,694    "min_ns": 23744.854,695    "ns_per_op_samples": [696     23766.4375,697     23796.729,698     23797.458,699     23744.854,700     23897.917,701     24422.1875,702     23980.604703    ],704    "ops_per_rep": 2000,705    "ops_per_s": 42021.29487947831,706    "q1_ns": 23781.58325,707    "q3_ns": 23939.2605,708    "reps": 7,709    "sd_ns": 238.27830419742892710   },711   "libsecp256k1_point_mul_tweak_ecmult_const": {712    "iqr_ns": 52.25,713    "mean_ns": 15656.592285714287,714    "median_ns": 15607.6665,715    "min_ns": 15591.271,716    "ns_per_op_samples": [717     15653.75,718     15650.396,719     15893.4165,720     15607.6665,721     15600.9375,722     15598.7085,723     15591.271724    ],725    "ops_per_rep": 2000,726    "ops_per_s": 64071.07686469339,727    "q1_ns": 15599.823,728    "q3_ns": 15652.073,729    "reps": 7,730    "sd_ns": 107.42499066280944731   },732   "own_wnaf5_agrees_with_k256_64_cases": true,733   "own_wnaf5_point_mul_no_glv": {734    "iqr_ns": 489.82274999999936,735    "mean_ns": 29217.413571428566,736    "median_ns": 28983.8955,737    "min_ns": 28971.625,738    "ns_per_op_samples": [739     29524.583,740     29412.6875,741     29671.479,742     28971.625,743     28973.8335,744     28983.8955,745     28983.7915746    ],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": 34501.91848780299,755    "q1_ns": 28978.8125,756    "q3_ns": 29468.63525,757    "reps": 7,758    "sd_ns": 307.5477235153144759   }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": 37863.703,801     "msm_only_ns_per_sig_samples": [802      37904.747,803      37863.703,804      37877.7395,805      37838.8055,806      37833.0995,807      37857.391,808      39200.6545809     ],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": 42.08325000000332,826      "mean_ns": 41625.127928571426,827      "median_ns": 41422.25,828      "min_ns": 41383.104,829      "ns_per_op_samples": [830       41463.604,831       41422.25,832       41425.9165,833       41389.6665,834       41383.104,835       41415.6875,836       42875.667837      ],838      "ops_per_rep": 2000,839      "ops_per_s": 24141.614711900005,840      "q1_ns": 41402.676999999996,841      "q3_ns": 41444.76025,842      "reps": 7,843      "sd_ns": 552.0666558957832844     },845     "sigs_per_rep": 2000,846     "speedup_vs_k256_single_verify": {847      "bootstrap_resamples": 2000,848      "ci95_high": 0.7861760012006862,849      "ci95_low": 0.774091538207822,850      "point": 0.7845456487757184851     },852     "speedup_vs_libsecp256k1_single_verify": {853      "bootstrap_resamples": 2000,854      "ci95_high": 0.4162397159288977,855      "ci95_low": 0.4085947883353314,856      "point": 0.4090595392572832857     },858     "window_bits": 5859    },860    {861     "algorithm": "pippenger",862     "batch_size": 1,863     "msm_only_ns_per_sig_median": 128402.972,864     "msm_only_ns_per_sig_samples": [865      126369.512,866      126422.9685,867      127447.3695,868      130600.072,869      132717.03,870      133060.248,871      128402.972872     ],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": 4832.135500000004,889      "mean_ns": 133008.00900000002,890      "median_ns": 132033.25,891      "min_ns": 130045.521,892      "ns_per_op_samples": [893       130045.521,894       130087.479,895       131150.7085,896       134406.521,897       136495.9375,898       136836.646,899       132033.25900      ],901      "ops_per_rep": 2000,902      "ops_per_s": 7573.849768902909,903      "q1_ns": 130619.09375,904      "q3_ns": 135451.22925,905      "reps": 7,906      "sd_ns": 2900.7324707003045907     },908     "sigs_per_rep": 2000,909     "speedup_vs_k256_single_verify": {910      "bootstrap_resamples": 2000,911      "ci95_high": 0.2501360065560191,912      "ci95_low": 0.2354557255595977,913      "point": 0.24613228864698855914     },915     "speedup_vs_libsecp256k1_single_verify": {916      "bootstrap_resamples": 2000,917      "ci95_high": 0.1314430870954845,918      "ci95_low": 0.12411953652466763,919      "point": 0.1283325715302774920     },921     "window_bits": 3922    },923    {924     "algorithm": "k256_lincomb_vartime",925     "batch_size": 1,926     "msm_only_ns_per_sig_median": 30657.826,927     "msm_only_ns_per_sig_samples": [928      30687.119,929      30657.826,930      30656.965,931      30630.114,932      30628.986,933      30666.121,934      30667.96935     ],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": 30.510500000003958,952      "mean_ns": 34235.878000000004,953      "median_ns": 34243.375,954      "min_ns": 34203.9165,955      "ns_per_op_samples": [956       34260.9585,957       34233.8125,958       34243.375,959       34207.125,960       34203.9165,961       34245.875,962       34256.0835963      ],964      "ops_per_rep": 2000,965      "ops_per_s": 29202.728995024587,966      "q1_ns": 34220.46875,967      "q3_ns": 34250.979250000004,968      "reps": 7,969      "sd_ns": 22.531376308014337970     },971     "sigs_per_rep": 2000,972     "speedup_vs_k256_single_verify": {973      "bootstrap_resamples": 2000,974      "ci95_high": 0.9512510186108888,975      "ci95_low": 0.9372406165706089,976      "point": 0.9490199491142447977     },978     "speedup_vs_libsecp256k1_single_verify": {979      "bootstrap_resamples": 2000,980      "ci95_high": 0.503562201843572,981      "ci95_low": 0.494563615248077,982      "point": 0.4948159023460742983     },984     "window_bits": 0985    },986    {987     "algorithm": "k256_lincomb_ct",988     "batch_size": 1,989     "msm_only_ns_per_sig_median": 47663.242,990     "msm_only_ns_per_sig_samples": [991      47633.805,992      47658.7665,993      48232.4715,994      47964.444,995      47810.781,996      47663.242,997      47654.2825998     ],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": 247.87475000000268,1015      "mean_ns": 51388.184499999996,1016      "median_ns": 51239.4375,1017      "min_ns": 51212.4375,1018      "ns_per_op_samples": [1019       51212.4375,1020       51234.042,1021       51849.042,1022       51560.458,1023       51395.604,1024       51239.4375,1025       51226.27051026      ],1027      "ops_per_rep": 2000,1028      "ops_per_s": 19516.217366749977,1029      "q1_ns": 51230.15625,1030      "q3_ns": 51478.031,1031      "reps": 7,1032      "sd_ns": 239.830347957676371033     },1034     "sigs_per_rep": 2000,1035     "speedup_vs_k256_single_verify": {1036      "bootstrap_resamples": 2000,1037      "ci95_high": 0.6354515226419184,1038      "ci95_low": 0.6233012296942746,1039      "point": 0.63423112324369291040     },1041     "speedup_vs_libsecp256k1_single_verify": {1042      "bootstrap_resamples": 2000,1043      "ci95_high": 0.33647265230410667,1044      "ci95_low": 0.32859160211493854,1045      "point": 0.330686036512403141046     },1047     "window_bits": 01048    },1049    {1050     "algorithm": "straus_wnaf5",1051     "batch_size": 2,1052     "msm_only_ns_per_sig_median": 24900.267,1053     "msm_only_ns_per_sig_samples": [1054      24910.854,1055      25081.6005,1056      24900.267,1057      24911.542,1058      24899.5015,1059      24879.188,1060      24892.47351061     ],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": 17.76075000000128,1078      "mean_ns": 28566.616071428572,1079      "median_ns": 28541.9795,1080      "min_ns": 28511.0625,1081      "ns_per_op_samples": [1082       28546.875,1083       28756.625,1084       28532.7915,1085       28541.9795,1086       28527.7705,1087       28511.0625,1088       28549.20851089      ],1090      "ops_per_rep": 2000,1091      "ops_per_s": 35036.11233411474,1092      "q1_ns": 28530.281,1093      "q3_ns": 28548.04175,1094      "reps": 7,1095      "sd_ns": 84.796193294288811096     },1097     "sigs_per_rep": 2000,1098     "speedup_vs_k256_single_verify": {1099      "bootstrap_resamples": 2000,1100      "ci95_high": 1.1412300866623981,1101      "ci95_low": 1.1243481116584564,1102      "point": 1.13859117585029451103     },1104     "speedup_vs_libsecp256k1_single_verify": {1105      "bootstrap_resamples": 2000,1106      "ci95_high": 0.604176916934328,1107      "ci95_low": 0.5934249455637273,1108      "point": 0.59365772090194371109     },1110     "window_bits": 51111    },1112    {1113     "algorithm": "pippenger",1114     "batch_size": 2,1115     "msm_only_ns_per_sig_median": 80944.258,1116     "msm_only_ns_per_sig_samples": [1117      81606.7265,1118      81753.7915,1119      83183.8795,1120      80892.0165,1121      80910.3795,1122      80915.337,1123      80944.2581124     ],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": 819.5835000000079,1141      "mean_ns": 85136.1845,1142      "median_ns": 84597.6875,1143      "min_ns": 84540.2915,1144      "ns_per_op_samples": [1145       85295.9585,1146       85458.75,1147       86945.0625,1148       84540.2915,1149       84560.5415,1150       84555.0,1151       84597.68751152      ],1153      "ops_per_rep": 2000,1154      "ops_per_s": 11820.65408111776,1155      "q1_ns": 84557.77075,1156      "q3_ns": 85377.35425,1157      "reps": 7,1158      "sd_ns": 886.54983171632661159     },1160     "sigs_per_rep": 2000,1161     "speedup_vs_k256_single_verify": {1162      "bootstrap_resamples": 2000,1163      "ci95_high": 0.38501113430074235,1164      "ci95_low": 0.3760732517150087,1165      "point": 0.38414343181662031166     },1167     "speedup_vs_libsecp256k1_single_verify": {1168      "bootstrap_resamples": 2000,1169      "ci95_high": 0.20387740523919343,1170      "ci95_low": 0.19825159506779588,1171      "point": 0.200291130889363841172     },1173     "window_bits": 31174    },1175    {1176     "algorithm": "k256_lincomb_vartime",1177     "batch_size": 2,1178     "msm_only_ns_per_sig_median": 23211.2325,1179     "msm_only_ns_per_sig_samples": [1180      23234.8325,1181      23199.4075,1182      23205.684,1183      23223.3685,1184      23211.2325,1185      23208.038,1186      23226.14751187     ],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": 16.44800000000032,1204      "mean_ns": 26869.80942857143,1205      "median_ns": 26871.2915,1206      "min_ns": 26853.7705,1207      "ns_per_op_samples": [1208       26887.25,1209       26853.7705,1210       26864.3125,1211       26873.7915,1212       26871.2915,1213       26857.4165,1214       26880.83351215      ],1216      "ops_per_rep": 2000,1217      "ops_per_s": 37214.437571785485,1218      "q1_ns": 26860.8645,1219      "q3_ns": 26877.3125,1220      "reps": 7,1221      "sd_ns": 12.1436213929669671222     },1223     "sigs_per_rep": 2000,1224     "speedup_vs_k256_single_verify": {1225      "bootstrap_resamples": 2000,1226      "ci95_high": 1.2122070639221758,1227      "ci95_low": 1.1943467299729553,1228      "point": 1.20938161829698431229     },1230     "speedup_vs_libsecp256k1_single_verify": {1231      "bootstrap_resamples": 2000,1232      "ci95_high": 0.64170091827215,1233      "ci95_low": 0.63027511684115,1234      "point": 0.6305676264201891235     },1236     "window_bits": 01237    },1238    {1239     "algorithm": "k256_lincomb_ct",1240     "batch_size": 2,1241     "msm_only_ns_per_sig_median": 36292.7915,1242     "msm_only_ns_per_sig_samples": [1243      37212.9615,1244      37159.6615,1245      37109.338,1246      36215.7065,1247      36247.0035,1248      36292.7915,1249      36262.02151250     ],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": 978.020749999996,1267      "mean_ns": 40323.27085714286,1268      "median_ns": 39937.8955,1269      "min_ns": 39853.0835,1270      "ns_per_op_samples": [1271       40955.3335,1272       40899.5,1273       40836.8125,1274       39853.0835,1275       39885.6665,1276       39937.8955,1277       39894.60451278      ],1279      "ops_per_rep": 2000,1280      "ops_per_s": 25038.87567135329,1281      "q1_ns": 39890.135500000004,1282      "q3_ns": 40868.15625,1283      "reps": 7,1284      "sd_ns": 538.53365174461751285     },1286     "sigs_per_rep": 2000,1287     "speedup_vs_k256_single_verify": {1288      "bootstrap_resamples": 2000,1289      "ci95_high": 0.8160690000072566,1290      "ci95_low": 0.7857981148913801,1291      "point": 0.81370451780565161292     },1293     "speedup_vs_libsecp256k1_single_verify": {1294      "bootstrap_resamples": 2000,1295      "ci95_high": 0.43210991100312823,1296      "ci95_low": 0.41424304698101444,1297      "point": 0.42426287834820941298     },1299     "window_bits": 01300    },1301    {1302     "algorithm": "straus_wnaf5",1303     "batch_size": 4,1304     "msm_only_ns_per_sig_median": 18388.972,1305     "msm_only_ns_per_sig_samples": [1306      18409.9975,1307      18388.972,1308      18366.673,1309      18411.878,1310      18378.1235,1311      18390.009,1312      18367.02451313     ],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": 26.15625,1330      "mean_ns": 22011.58635714286,1331      "median_ns": 22009.583,1332      "min_ns": 21980.7915,1333      "ns_per_op_samples": [1334       22032.25,1335       22006.646,1336       21990.146,1337       22044.8335,1338       22009.583,1339       22016.8545,1340       21980.79151341      ],1342      "ops_per_rep": 2000,1343      "ops_per_s": 45434.75448853347,1344      "q1_ns": 21998.396,1345      "q3_ns": 22024.55225,1346      "reps": 7,1347      "sd_ns": 22.3477988582664441348     },1349     "sigs_per_rep": 2000,1350     "speedup_vs_k256_single_verify": {1351      "bootstrap_resamples": 2000,1352      "ci95_high": 1.4803635483280937,1353      "ci95_low": 1.4578206437254695,1354      "point": 1.4765225674652721355     },1356     "speedup_vs_libsecp256k1_single_verify": {1357      "bootstrap_resamples": 2000,1358      "ci95_high": 0.7833476305294318,1359      "ci95_low": 0.7689788151459792,1360      "point": 0.76985404494033351361     },1362     "window_bits": 51363    },1364    {1365     "algorithm": "pippenger",1366     "batch_size": 4,1367     "msm_only_ns_per_sig_median": 59259.009,1368     "msm_only_ns_per_sig_samples": [1369      60760.2285,1370      59430.209,1371      59258.8085,1372      59250.0155,1373      59219.633,1374      59259.009,1375      59302.9731376     ],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": 122.33325000000332,1393      "mean_ns": 63140.34807142856,1394      "median_ns": 62885.9165,1395      "min_ns": 62854.9165,1396      "ns_per_op_samples": [1397       64500.354,1398       63070.5205,1399       62885.9165,1400       62876.7915,1401       62854.9165,1402       62871.5,1403       62922.43751404      ],1405      "ops_per_rep": 2000,1406      "ops_per_s": 15901.811656032714,1407      "q1_ns": 62874.145749999996,1408      "q3_ns": 62996.479,1409      "reps": 7,1410      "sd_ns": 604.14195227380321411     },1412     "sigs_per_rep": 2000,1413     "speedup_vs_k256_single_verify": {1414      "bootstrap_resamples": 2000,1415      "ci95_high": 0.5177864395323034,1416      "ci95_low": 0.5089005885086996,1417      "point": 0.51677144595642491418     },1419     "speedup_vs_libsecp256k1_single_verify": {1420      "bootstrap_resamples": 2000,1421      "ci95_high": 0.27416879247090714,1422      "ci95_low": 0.26862523673005045,1423      "point": 0.269442944351459051424     },1425     "window_bits": 41426    },1427    {1428     "algorithm": "k256_lincomb_vartime",1429     "batch_size": 4,1430     "msm_only_ns_per_sig_median": 19676.3585,1431     "msm_only_ns_per_sig_samples": [1432      20088.9145,1433      20037.5555,1434      19682.3745,1435      19564.021,1436      19676.3585,1437      19517.4,1438      19534.6041439     ],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": 380.15625,1456      "mean_ns": 23423.21135714286,1457      "median_ns": 23361.771,1458      "min_ns": 23168.5205,1459      "ns_per_op_samples": [1460       23863.7915,1461       23774.917,1462       23361.771,1463       23226.5625,1464       23389.4375,1465       23168.5205,1466       23177.47951467      ],1468      "ops_per_rep": 2000,1469      "ops_per_s": 42804.97398934353,1470      "q1_ns": 23202.021,1471      "q3_ns": 23582.17725,1472      "reps": 7,1473      "sd_ns": 284.793979264648271474     },1475     "sigs_per_rep": 2000,1476     "speedup_vs_k256_single_verify": {1477      "bootstrap_resamples": 2000,1478      "ci95_high": 1.4039301598778244,1479      "ci95_low": 1.3517923111992356,1480      "point": 1.3910608917448941481     },1482     "speedup_vs_libsecp256k1_single_verify": {1483      "bootstrap_resamples": 2000,1484      "ci95_high": 0.7422042758156744,1485      "ci95_low": 0.7126137811543148,1486      "point": 0.7252946063036061487     },1488     "window_bits": 01489    },1490    {1491     "algorithm": "k256_lincomb_ct",1492     "batch_size": 4,1493     "msm_only_ns_per_sig_median": 30477.128,1494     "msm_only_ns_per_sig_samples": [1495      30466.2575,1496      30483.9385,1497      30483.54,1498      30472.5255,1499      30481.272,1500      30477.128,1501      30457.90051502     ],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": 16.177499999997963,1519      "mean_ns": 34096.863,1520      "median_ns": 34094.854,1521      "min_ns": 34080.4165,1522      "ns_per_op_samples": [1523       34084.8955,1524       34117.0415,1525       34105.896,1526       34091.7915,1527       34103.146,1528       34094.854,1529       34080.41651530      ],1531      "ops_per_rep": 2000,1532      "ops_per_s": 29329.93935096481,1533      "q1_ns": 34088.3435,1534      "q3_ns": 34104.521,1535      "reps": 7,1536      "sd_ns": 12.7260078317335031537     },1538     "sigs_per_rep": 2000,1539     "speedup_vs_k256_single_verify": {1540      "bootstrap_resamples": 2000,1541      "ci95_high": 0.9549732814715824,1542      "ci95_low": 0.941163170107532,1543      "point": 0.95315398622912431544     },1545     "speedup_vs_libsecp256k1_single_verify": {1546      "bootstrap_resamples": 2000,1547      "ci95_high": 0.505659962164206,1548      "ci95_low": 0.4967567337917174,1549      "point": 0.496971375797649661550     },1551     "window_bits": 01552    },1553    {1554     "algorithm": "straus_wnaf5",1555     "batch_size": 8,1556     "msm_only_ns_per_sig_median": 15227.732,1557     "msm_only_ns_per_sig_samples": [1558      15294.683,1559      15241.145,1560      15216.585,1561      15215.4375,1562      15209.7305,1563      15238.08,1564      15227.7321565     ],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": 24.71875,1582      "mean_ns": 18848.910714285714,1583      "median_ns": 18839.167,1584      "min_ns": 18824.8125,1585      "ns_per_op_samples": [1586       18925.375,1587       18854.604,1588       18826.4375,1589       18825.354,1590       18824.8125,1591       18846.625,1592       18839.1671593      ],1594      "ops_per_rep": 2000,1595      "ops_per_s": 53080.90320553982,1596      "q1_ns": 18825.89575,1597      "q3_ns": 18850.6145,1598      "reps": 7,1599      "sd_ns": 35.6371833668350961600     },1601     "sigs_per_rep": 2000,1602     "speedup_vs_k256_single_verify": {1603      "bootstrap_resamples": 2000,1604      "ci95_high": 1.7293101788376053,1605      "ci95_low": 1.703043648398586,1606      "point": 1.72500440173389811607     },1608     "speedup_vs_libsecp256k1_single_verify": {1609      "bootstrap_resamples": 2000,1610      "ci95_high": 0.9156726544785756,1611      "ci95_low": 0.898578060828008,1612      "point": 0.89941166188505041613     },1614     "window_bits": 51615    },1616    {1617     "algorithm": "pippenger",1618     "batch_size": 8,1619     "msm_only_ns_per_sig_median": 39667.79,1620     "msm_only_ns_per_sig_samples": [1621      40840.5035,1622      41513.021,1623      40084.354,1624      39661.0435,1625      39667.79,1626      39653.7705,1627      39664.06751628     ],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": 881.6977499999994,1645      "mean_ns": 43819.02971428571,1646      "median_ns": 43290.0,1647      "min_ns": 43262.104,1648      "ns_per_op_samples": [1649       44577.5415,1650       45306.3335,1651       43741.5415,1652       43277.7915,1653       43277.896,1654       43262.104,1655       43290.01656      ],1657      "ops_per_rep": 2000,1658      "ops_per_s": 23100.0231000231,1659      "q1_ns": 43277.84375,1660      "q3_ns": 44159.5415,1661      "reps": 7,1662      "sd_ns": 813.34907374698081663     },1664     "sigs_per_rep": 2000,1665     "speedup_vs_k256_single_verify": {1666      "bootstrap_resamples": 2000,1667      "ci95_high": 0.7522720143326745,1668      "ci95_low": 0.7209628193605069,1669      "point": 0.75069637329637331670     },1671     "speedup_vs_libsecp256k1_single_verify": {1672      "bootstrap_resamples": 2000,1673      "ci95_high": 0.3983292995574461,1674      "ci95_low": 0.3800643312731816,1675      "point": 0.391410637560637541676     },1677     "window_bits": 41678    },1679    {1680     "algorithm": "k256_lincomb_vartime",1681     "batch_size": 8,1682     "msm_only_ns_per_sig_median": 18167.6035,1683     "msm_only_ns_per_sig_samples": [1684      17793.0005,1685      17714.141,1686      18325.0785,1687      18203.497,1688      18234.184,1689      18167.6035,1690      17909.9781691     ],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": 447.83350000000064,1708      "mean_ns": 21760.074285714287,1709      "median_ns": 21912.021,1710      "min_ns": 21359.5625,1711      "ns_per_op_samples": [1712       21446.708,1713       21359.5625,1714       22088.5625,1715       21951.5,1716       21976.5205,1717       21912.021,1718       21585.64551719      ],1720      "ops_per_rep": 2000,1721      "ops_per_s": 45637.05009227583,1722      "q1_ns": 21516.17675,1723      "q3_ns": 21964.01025,1724      "reps": 7,1725      "sd_ns": 289.689086055903941726     },1727     "sigs_per_rep": 2000,1728     "speedup_vs_k256_single_verify": {1729      "bootstrap_resamples": 2000,1730      "ci95_high": 1.517228774691202,1731      "ci95_low": 1.460496214585016,1732      "point": 1.48309669838304741733     },1734     "speedup_vs_libsecp256k1_single_verify": {1735      "bootstrap_resamples": 2000,1736      "ci95_high": 0.7986258275204232,1737      "ci95_low": 0.7709288419884304,1738      "point": 0.77328177533236211739     },1740     "window_bits": 01741    },1742    {1743     "algorithm": "k256_lincomb_ct",1744     "batch_size": 8,1745     "msm_only_ns_per_sig_median": 27605.0425,1746     "msm_only_ns_per_sig_samples": [1747      27611.515,1748      27587.767,1749      27625.4575,1750      27605.0425,1751      27596.411,1752      27602.1285,1753      27812.441754     ],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": 14.10425000000032,1771      "mean_ns": 31259.532642857142,1772      "median_ns": 31232.2915,1773      "min_ns": 31209.604,1774      "ns_per_op_samples": [1775       31234.8125,1776       31209.604,1777       31239.104,1778       31232.2915,1779       31232.1665,1780       31213.5415,1781       31455.20851782      ],1783      "ops_per_rep": 2000,1784      "ops_per_s": 32018.14378557526,1785      "q1_ns": 31222.854,1786      "q3_ns": 31236.95825,1787      "reps": 7,1788      "sd_ns": 87.002390980897391789     },1790     "sigs_per_rep": 2000,1791     "speedup_vs_k256_single_verify": {1792      "bootstrap_resamples": 2000,1793      "ci95_high": 1.042482234833878,1794      "ci95_low": 1.0275878802676353,1795      "point": 1.04051430232072481796     },1797     "speedup_vs_libsecp256k1_single_verify": {1798      "bootstrap_resamples": 2000,1799      "ci95_high": 0.5519583151556264,1800      "ci95_low": 0.5423437720877013,1801      "point": 0.54252075932372751802     },1803     "window_bits": 01804    },1805    {1806     "algorithm": "straus_wnaf5",1807     "batch_size": 16,1808     "msm_only_ns_per_sig_median": 13652.0405,1809     "msm_only_ns_per_sig_samples": [1810      13702.6885,1811      13652.0405,1812      13825.751,1813      13650.6455,1814      13649.6005,1815      13647.457,1816      13661.6051817     ],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": 37.86475000000064,1834      "mean_ns": 17299.675714285713,1835      "median_ns": 17269.875,1836      "min_ns": 17250.9585,1837      "ns_per_op_samples": [1838       17314.292,1839       17250.9585,1840       17480.375,1841       17257.771,1842       17252.625,1843       17269.875,1844       17271.83351845      ],1846      "ops_per_rep": 2000,1847      "ops_per_s": 57904.29867037254,1848      "q1_ns": 17255.198,1849      "q3_ns": 17293.06275,1850      "reps": 7,1851      "sd_ns": 82.535124740852471852     },1853     "sigs_per_rep": 2000,1854     "speedup_vs_k256_single_verify": {1855      "bootstrap_resamples": 2000,1856      "ci95_high": 1.886497972420656,1857      "ci95_low": 1.8537647973131097,1858      "point": 1.88175340006803761859     },1860     "speedup_vs_libsecp256k1_single_verify": {1861      "bootstrap_resamples": 2000,1862      "ci95_high": 0.9989113047862268,1863      "ci95_low": 0.9785172561488509,1864      "point": 0.98114007773652091865     },1866     "window_bits": 51867    },1868    {1869     "algorithm": "pippenger",1870     "batch_size": 16,1871     "msm_only_ns_per_sig_median": 31886.127,1872     "msm_only_ns_per_sig_samples": [1873      31449.4375,1874      32053.687,1875      32149.106,1876      31762.021,1877      32138.5815,1878      31886.127,1879      31387.14651880     ],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": 550.2497500000027,1897      "mean_ns": 35499.69335714286,1898      "median_ns": 35558.1665,1899      "min_ns": 35002.333,1900      "ns_per_op_samples": [1901       35062.6875,1902       35743.208,1903       35849.604,1904       35429.625,1905       35852.2295,1906       35558.1665,1907       35002.3331908      ],1909      "ops_per_rep": 2000,1910      "ops_per_s": 28122.93485379793,1911      "q1_ns": 35246.15625,1912      "q3_ns": 35796.406,1913      "reps": 7,1914      "sd_ns": 354.1865559357711915     },1916     "sigs_per_rep": 2000,1917     "speedup_vs_k256_single_verify": {1918      "bootstrap_resamples": 2000,1919      "ci95_high": 0.9280396005012451,1920      "ci95_low": 0.8964220448842416,1921      "point": 0.9139291813597871922     },1923     "speedup_vs_libsecp256k1_single_verify": {1924      "bootstrap_resamples": 2000,1925      "ci95_high": 0.4865660869964048,1926      "ci95_low": 0.47259471820107135,1927      "point": 0.47651969063140531928     },1929     "window_bits": 51930    },1931    {1932     "algorithm": "k256_lincomb_vartime",1933     "batch_size": 16,1934     "msm_only_ns_per_sig_median": 17277.2315,1935     "msm_only_ns_per_sig_samples": [1936      17342.459,1937      17277.2315,1938      17487.397,1939      17162.545,1940      17190.583,1941      17357.042,1942      17236.2471943     ],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": 172.32274999999936,1960      "mean_ns": 21030.5535,1961      "median_ns": 21011.583,1962      "min_ns": 20890.9375,1963      "ns_per_op_samples": [1964       21099.875,1965       21011.583,1966       21260.8335,1967       20894.625,1968       20890.9375,1969       21097.708,1970       20958.31251971      ],1972      "ops_per_rep": 2000,1973      "ops_per_s": 47592.796792131274,1974      "q1_ns": 20926.46875,1975      "q3_ns": 21098.7915,1976      "reps": 7,1977      "sd_ns": 132.8482230165941978     },1979     "sigs_per_rep": 2000,1980     "speedup_vs_k256_single_verify": {1981      "bootstrap_resamples": 2000,1982      "ci95_high": 1.5573173722907208,1983      "ci95_low": 1.52117607331797,1984      "point": 1.54665386230061791985     },1986     "speedup_vs_libsecp256k1_single_verify": {1987      "bootstrap_resamples": 2000,1988      "ci95_high": 0.8225306307461538,1989      "ci95_low": 0.8029342590892126,1990      "point": 0.80642027304653821991     },1992     "window_bits": 01993    },1994    {1995     "algorithm": "k256_lincomb_ct",1996     "batch_size": 16,1997     "msm_only_ns_per_sig_median": 26715.4365,1998     "msm_only_ns_per_sig_samples": [1999      29196.8735,2000      27781.8345,2001      26887.562,2002      26715.4365,2003      26333.733,2004      26212.483,2005      26173.60552006     ],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": 1207.96875,2023      "mean_ns": 30773.3185,2024      "median_ns": 30383.167,2025      "min_ns": 29777.25,2026      "ns_per_op_samples": [2027       33230.875,2028       31623.3125,2029       30595.625,2030       30383.167,2031       29975.375,2032       29827.625,2033       29777.252034      ],2035      "ops_per_rep": 2000,2036      "ops_per_s": 32912.96131176845,2037      "q1_ns": 29901.5,2038      "q3_ns": 31109.46875,2039      "reps": 7,2040      "sd_ns": 1256.25564048149982041     },2042     "sigs_per_rep": 2000,2043     "speedup_vs_k256_single_verify": {2044      "bootstrap_resamples": 2000,2045      "ci95_high": 1.0909203297278949,2046      "ci95_low": 1.016299288697223,2047      "point": 1.06959376552154682048     },2049     "speedup_vs_libsecp256k1_single_verify": {2050      "bootstrap_resamples": 2000,2051      "ci95_high": 0.5751005283503542,2052      "ci95_low": 0.5357545481675899,2053      "point": 0.55768269647466312054     },2055     "window_bits": 02056    },2057    {2058     "algorithm": "straus_wnaf5",2059     "batch_size": 32,2060     "msm_only_ns_per_sig_median": 12876.077380952382,2061     "msm_only_ns_per_sig_samples": [2062      12876.077380952382,2063      12865.44990079365,2064      12856.479662698413,2065      12857.289186507936,2066      13016.35119047619,2067      13163.21626984127,2068      13210.1304563492072069     ],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": 303.49925595238165,2086      "mean_ns": 16612.959396258502,2087      "median_ns": 16477.96775793651,2088      "min_ns": 16456.494047619046,2089      "ns_per_op_samples": [2090       16477.96775793651,2091       16463.231646825396,2092       16456.494047619046,2093       16457.299603174604,2094       16661.065476190477,2095       16866.464285714286,2096       16908.1929563492052097      ],2098      "ops_per_rep": 2016,2099      "ops_per_s": 60687.095319649256,2100      "q1_ns": 16460.265625,2101      "q3_ns": 16763.76488095238,2102      "reps": 7,2103      "sd_ns": 201.285161227874622104     },2105     "sigs_per_rep": 2016,2106     "speedup_vs_k256_single_verify": {2107      "bootstrap_resamples": 2000,2108      "ci95_high": 1.9775430910782281,2109      "ci95_low": 1.9054823498023339,2110      "point": 1.97218774046621832111     },2112     "speedup_vs_libsecp256k1_single_verify": {2113      "bootstrap_resamples": 2000,2114      "ci95_high": 1.0471123999111176,2115      "ci95_low": 1.0044982287336874,2116      "point": 1.02829224749750762117     },2118     "window_bits": 52119    },2120    {2121     "algorithm": "pippenger",2122     "batch_size": 32,2123     "msm_only_ns_per_sig_median": 22151.82738095238,2124     "msm_only_ns_per_sig_samples": [2125      22171.37896825397,2126      22151.82738095238,2127      22136.035714285714,2128      22146.720734126986,2129      22139.34771825397,2130      22470.196428571428,2131      22722.7202380952372132     ],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": 206.09102182539937,2149      "mean_ns": 25903.740362811794,2150      "median_ns": 25749.565972222223,2151      "min_ns": 25743.283234126986,2152      "ns_per_op_samples": [2153       25777.405753968254,2154       25747.82986111111,2155       25743.283234126986,2156       25749.04910714286,2157       25749.565972222223,2158       26131.65525793651,2159       26427.3933531746042160      ],2161      "ops_per_rep": 2016,2162      "ops_per_s": 38835.60604783657,2163      "q1_ns": 25748.439484126982,2164      "q3_ns": 25954.53050595238,2165      "reps": 7,2166      "sd_ns": 270.761823105259572167     },2168     "sigs_per_rep": 2016,2169     "speedup_vs_k256_single_verify": {2170      "bootstrap_resamples": 2000,2171      "ci95_high": 1.2643879937589277,2172      "ci95_low": 1.229878080158702,2173      "point": 1.26206577753805172174     },2175     "speedup_vs_libsecp256k1_single_verify": {2176      "bootstrap_resamples": 2000,2177      "ci95_high": 0.6694947812739963,2178      "ci95_low": 0.6483452093932857,2179      "point": 0.65803697500294972180     },2181     "window_bits": 52182    },2183    {2184     "algorithm": "k256_lincomb_vartime",2185     "batch_size": 32,2186     "msm_only_ns_per_sig_median": 16860.328373015873,2187     "msm_only_ns_per_sig_samples": [2188      16905.174603174604,2189      16903.646825396827,2190      16860.328373015873,2191      17010.93005952381,2192      16828.684027777777,2193      16443.740575396827,2194      16427.4141865079362195     ],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": 323.55753968254066,2212      "mean_ns": 20458.59615929705,2213      "median_ns": 20577.62896825397,2214      "min_ns": 20044.97371031746,2215      "ns_per_op_samples": [2216       20617.352678571428,2217       20617.663194444445,2218       20577.62896825397,2219       20764.65376984127,2220       20524.44990079365,2221       20063.45089285714,2222       20044.973710317462223      ],2224      "ops_per_rep": 2016,2225      "ops_per_s": 48596.463739468956,2226      "q1_ns": 20293.950396825396,2227      "q3_ns": 20617.507936507936,2228      "reps": 7,2229      "sd_ns": 285.74640616630412230     },2231     "sigs_per_rep": 2016,2232     "speedup_vs_k256_single_verify": {2233      "bootstrap_resamples": 2000,2234      "ci95_high": 1.6218327880765777,2235      "ci95_low": 1.5567772206447976,2236      "point": 1.57927067545709842237     },2238     "speedup_vs_libsecp256k1_single_verify": {2239      "bootstrap_resamples": 2000,2240      "ci95_high": 0.8465172738673182,2241      "ci95_low": 0.8217135152622473,2242      "point": 0.82342657291277472243     },2244     "window_bits": 02245    },2246    {2247     "algorithm": "k256_lincomb_ct",2248     "batch_size": 32,2249     "msm_only_ns_per_sig_median": 25570.581845238095,2250     "msm_only_ns_per_sig_samples": [2251      25529.967261904763,2252      25540.199404761905,2253      25570.581845238095,2254      25567.749503968254,2255      25843.398313492064,2256      26723.422123015873,2257      28419.642361111112258     ],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": 832.5376984126997,2275      "mean_ns": 29866.69430272109,2276      "median_ns": 29182.97371031746,2277      "min_ns": 29138.49603174603,2278      "ns_per_op_samples": [2279       29138.49603174603,2280       29155.423115079364,2281       29182.97371031746,2282       29169.312003968254,2283       29494.068452380954,2284       30495.742063492064,2285       32430.844742063492286      ],2287      "ops_per_rep": 2016,2288      "ops_per_s": 34266.55590093124,2289      "q1_ns": 29162.36755952381,2290      "q3_ns": 29994.90525793651,2291      "reps": 7,2292      "sd_ns": 1231.49055542212822293     },2294     "sigs_per_rep": 2016,2295     "speedup_vs_k256_single_verify": {2296      "bootstrap_resamples": 2000,2297      "ci95_high": 1.1161434909878987,2298      "ci95_low": 1.0538766340916446,2299      "point": 1.11358240330767472300     },2301     "speedup_vs_libsecp256k1_single_verify": {2302      "bootstrap_resamples": 2000,2303      "ci95_high": 0.5909928214163841,2304      "ci95_low": 0.5555639034697402,2305      "point": 0.58061822856693652306     },2307     "window_bits": 02308    },2309    {2310     "algorithm": "straus_wnaf5",2311     "batch_size": 64,2312     "msm_only_ns_per_sig_median": 12562.376953125,2313     "msm_only_ns_per_sig_samples": [2314      12580.32275390625,2315      12572.2646484375,2316      12572.97802734375,2317      12539.57080078125,2318      12551.3916015625,2319      12562.376953125,2320      12560.607910156252321     ],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": 25.1162109375,2338      "mean_ns": 16165.393624441964,2339      "median_ns": 16163.39111328125,2340      "min_ns": 16149.06787109375,2341      "ns_per_op_samples": [2342       16181.33544921875,2343       16176.2900390625,2344       16180.806640625,2345       16149.06787109375,2346       16149.08837890625,2347       16163.39111328125,2348       16157.775878906252349      ],2350      "ops_per_rep": 2048,2351      "ops_per_s": 61868.20531604367,2352      "q1_ns": 16153.43212890625,2353      "q3_ns": 16178.54833984375,2354      "reps": 7,2355      "sd_ns": 14.1707800833100762356     },2357     "sigs_per_rep": 2048,2358     "speedup_vs_k256_single_verify": {2359      "bootstrap_resamples": 2000,2360      "ci95_high": 2.014947329318155,2361      "ci95_low": 1.9841771458408004,2362      "point": 2.01057103501610522363     },2364     "speedup_vs_libsecp256k1_single_verify": {2365      "bootstrap_resamples": 2000,2366      "ci95_high": 1.0669076071605301,2367      "ci95_low": 1.0470635906038852,2368      "point": 1.0483051719312292369     },2370     "window_bits": 52371    },2372    {2373     "algorithm": "pippenger",2374     "batch_size": 64,2375     "msm_only_ns_per_sig_median": 18316.42822265625,2376     "msm_only_ns_per_sig_samples": [2377      18331.134765625,2378      18490.904296875,2379      18315.93896484375,2380      18304.6884765625,2381      18303.8544921875,2382      18316.42822265625,2383      18508.646972656252384     ],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": 133.18896484375,2401      "mean_ns": 21983.33740234375,2402      "median_ns": 21915.140625,2403      "min_ns": 21902.9951171875,2404      "ns_per_op_samples": [2405       21941.5078125,2406       22162.29248046875,2407       21915.140625,2408       21902.9951171875,2409       21904.1953125,2410       21914.08251953125,2411       22143.147949218752412      ],2413      "ops_per_rep": 2048,2414      "ops_per_s": 45630.55364834101,2415      "q1_ns": 21909.138916015625,2416      "q3_ns": 22042.327880859375,2417      "reps": 7,2418      "sd_ns": 116.532855072520422419     },2420     "sigs_per_rep": 2048,2421     "speedup_vs_k256_single_verify": {2422      "bootstrap_resamples": 2000,2423      "ci95_high": 1.4856542577579197,2424      "ci95_low": 1.4514083577323482,2425      "point": 1.48288557924779462426     },2427     "speedup_vs_libsecp256k1_single_verify": {2428      "bootstrap_resamples": 2000,2429      "ci95_high": 0.7866564335803525,2430      "ci95_low": 0.7651275933690249,2431      "point": 0.77317169850467252432     },2433     "window_bits": 62434    },2435    {2436     "algorithm": "k256_lincomb_vartime",2437     "batch_size": 64,2438     "msm_only_ns_per_sig_median": 16553.30419921875,2439     "msm_only_ns_per_sig_samples": [2440      16564.73876953125,2441      16574.400390625,2442      16641.93017578125,2443      16364.2998046875,2444      16553.30419921875,2445      16373.16796875,2446      16352.0097656252447     ],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": 241.556884765625,2464      "mean_ns": 20131.957938058036,2465      "median_ns": 20212.68701171875,2466      "min_ns": 19971.86279296875,2467      "ns_per_op_samples": [2468       20217.97705078125,2469       20232.46240234375,2470       20321.390625,2471       19974.8330078125,2472       20212.68701171875,2473       19992.49267578125,2474       19971.862792968752475      ],2476      "ops_per_rep": 2048,2477      "ops_per_s": 49473.877442431476,2478      "q1_ns": 19983.662841796875,2479      "q3_ns": 20225.2197265625,2480      "reps": 7,2481      "sd_ns": 147.009988254184782482     },2483     "sigs_per_rep": 2048,2484     "speedup_vs_k256_single_verify": {2485      "bootstrap_resamples": 2000,2486      "ci95_high": 1.629028011762262,2487      "ci95_low": 1.5875290054679205,2488      "point": 1.60778455537152352489     },2490     "speedup_vs_libsecp256k1_single_verify": {2491      "bootstrap_resamples": 2000,2492      "ci95_high": 0.862266365658496,2493      "ci95_low": 0.837383020320719,2494      "point": 0.83829361678515312495     },2496     "window_bits": 02497    },2498    {2499     "algorithm": "k256_lincomb_ct",2500     "batch_size": 64,2501     "msm_only_ns_per_sig_median": 25216.51171875,2502     "msm_only_ns_per_sig_samples": [2503      25266.07177734375,2504      25185.2216796875,2505      25213.44287109375,2506      25216.51171875,2507      25169.353515625,2508      25900.2080078125,2509      25795.554199218752510     ],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": 370.930908203125,2527      "mean_ns": 29023.91427176339,2528      "median_ns": 28822.20458984375,2529      "min_ns": 28770.6708984375,2530      "ns_per_op_samples": [2531       28868.1640625,2532       28794.88134765625,2533       28822.20458984375,2534       28819.64111328125,2535       28770.6708984375,2536       29603.61767578125,2537       29488.220214843752538      ],2539      "ops_per_rep": 2048,2540      "ops_per_s": 34695.47226628097,2541      "q1_ns": 28807.26123046875,2542      "q3_ns": 29178.192138671875,2543      "reps": 7,2544      "sd_ns": 359.373709530474062545     },2546     "sigs_per_rep": 2048,2547     "speedup_vs_k256_single_verify": {2548      "bootstrap_resamples": 2000,2549      "ci95_high": 1.1300467644624814,2550      "ci95_low": 1.0898843594440477,2551      "point": 1.12752117551241682552     },2553     "speedup_vs_libsecp256k1_single_verify": {2554      "bootstrap_resamples": 2000,2555      "ci95_high": 0.5981633821267691,2556      "ci95_low": 0.5745458144493776,2557      "point": 0.58788585887599712558     },2559     "window_bits": 02560    },2561    {2562     "algorithm": "straus_wnaf5",2563     "batch_size": 128,2564     "msm_only_ns_per_sig_median": 12476.25732421875,2565     "msm_only_ns_per_sig_samples": [2566      12512.04638671875,2567      12630.6357421875,2568      12476.25732421875,2569      12473.89697265625,2570      12457.23583984375,2571      12460.95947265625,2572      12493.895996093752573     ],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": 46.05078125,2590      "mean_ns": 16105.648856026786,2591      "median_ns": 16073.64892578125,2592      "min_ns": 16054.30078125,2593      "ns_per_op_samples": [2594       16120.462890625,2595       16259.19580078125,2596       16073.64892578125,2597       16070.76025390625,2598       16054.30078125,2599       16059.38720703125,2600       16101.78613281252601      ],2602      "ops_per_rep": 2048,2603      "ops_per_s": 62213.62707481155,2604      "q1_ns": 16065.07373046875,2605      "q3_ns": 16111.12451171875,2606      "reps": 7,2607      "sd_ns": 71.681024383317452608     },2609     "sigs_per_rep": 2048,2610     "speedup_vs_k256_single_verify": {2611      "bootstrap_resamples": 2000,2612      "ci95_high": 2.0262020013910162,2613      "ci95_low": 1.993300313204662,2614      "point": 2.02179642905324152615     },2616     "speedup_vs_libsecp256k1_single_verify": {2617      "bootstrap_resamples": 2000,2618      "ci95_high": 1.0726844111690252,2619      "ci95_low": 1.0509830651235808,2620      "point": 1.0541580557245152621     },2622     "window_bits": 52623    },2624    {2625     "algorithm": "pippenger",2626     "batch_size": 128,2627     "msm_only_ns_per_sig_median": 14093.8515625,2628     "msm_only_ns_per_sig_samples": [2629      13655.8642578125,2630      13661.1943359375,2631      14370.626953125,2632      14052.470703125,2633      14165.466796875,2634      14093.8515625,2635      14112.487792968752636     ],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": 339.192626953125,2653      "mean_ns": 17713.698660714286,2654      "median_ns": 17814.798828125,2655      "min_ns": 17256.34765625,2656      "ns_per_op_samples": [2657       17256.34765625,2658       17265.56396484375,2659       18164.73388671875,2660       17775.24853515625,2661       17887.51220703125,2662       17831.685546875,2663       17814.7988281252664      ],2665      "ops_per_rep": 2048,2666      "ops_per_s": 56133.106505881864,2667      "q1_ns": 17520.40625,2668      "q3_ns": 17859.598876953125,2669      "reps": 7,2670      "sd_ns": 334.5566985100942671     },2672     "sigs_per_rep": 2048,2673     "speedup_vs_k256_single_verify": {2674      "bootstrap_resamples": 2000,2675      "ci95_high": 1.8846510062606274,2676      "ci95_low": 1.794359362470954,2677      "point": 1.82419382410844572678     },2679     "speedup_vs_libsecp256k1_single_verify": {2680      "bootstrap_resamples": 2000,2681      "ci95_high": 0.9827895882550489,2682      "ci95_low": 0.9471598567709311,2683      "point": 0.95112870279789542684     },2685     "window_bits": 62686    },2687    {2688     "algorithm": "k256_lincomb_vartime",2689     "batch_size": 128,2690     "msm_only_ns_per_sig_median": 16316.4072265625,2691     "msm_only_ns_per_sig_samples": [2692      16406.6572265625,2693      16329.244140625,2694      16524.76025390625,2695      16316.4072265625,2696      16289.3466796875,2697      16296.61083984375,2698      16310.546386718752699     ],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": 69.936279296875,2716      "mean_ns": 19958.385672433036,2717      "median_ns": 19917.92822265625,2718      "min_ns": 19889.46533203125,2719      "ns_per_op_samples": [2720       20015.70654296875,2721       19923.4619140625,2722       20162.841796875,2723       19917.92822265625,2724       19890.07568359375,2725       19889.46533203125,2726       19909.220214843752727      ],2728      "ops_per_rep": 2048,2729      "ops_per_s": 50206.024884782935,2730      "q1_ns": 19899.64794921875,2731      "q3_ns": 19969.584228515625,2732      "reps": 7,2733      "sd_ns": 99.814806248246572734     },2735     "sigs_per_rep": 2048,2736     "speedup_vs_k256_single_verify": {2737      "bootstrap_resamples": 2000,2738      "ci95_high": 1.635969767919995,2739      "ci95_low": 1.6035719214356245,2740      "point": 1.63157762377286652741     },2742     "speedup_vs_libsecp256k1_single_verify": {2743      "bootstrap_resamples": 2000,2744      "ci95_high": 0.8658728877360651,2745      "ci95_low": 0.8464519333169188,2746      "point": 0.85069924495090532747     },2748     "window_bits": 02749    },2750    {2751     "algorithm": "k256_lincomb_ct",2752     "batch_size": 128,2753     "msm_only_ns_per_sig_median": 25191.00048828125,2754     "msm_only_ns_per_sig_samples": [2755      25191.00048828125,2756      24960.10400390625,2757      24988.2607421875,2758      25003.7646484375,2759      25421.6923828125,2760      25714.0283203125,2761      25586.8730468752762     ],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": 616.0888671875,2779      "mean_ns": 28914.22530691964,2780      "median_ns": 28822.65185546875,2781      "min_ns": 28558.87890625,2782      "ns_per_op_samples": [2783       28822.65185546875,2784       28558.87890625,2785       28584.65576171875,2786       28608.5615234375,2787       29113.72900390625,2788       29399.43408203125,2789       29311.6660156252790      ],2791      "ops_per_rep": 2048,2792      "ops_per_s": 34694.93386710224,2793      "q1_ns": 28596.608642578125,2794      "q3_ns": 29212.697509765625,2795      "reps": 7,2796      "sd_ns": 358.21120227897392797     },2798     "sigs_per_rep": 2048,2799     "speedup_vs_k256_single_verify": {2800      "bootstrap_resamples": 2000,2801      "ci95_high": 1.1383576829208402,2802      "ci95_low": 1.0964491060613197,2803      "point": 1.12750367880649982804     },2805     "speedup_vs_libsecp256k1_single_verify": {2806      "bootstrap_resamples": 2000,2807      "ci95_high": 0.6025767491272537,2808      "ci95_low": 0.5780065005847381,2809      "point": 0.58787673615066932810     },2811     "window_bits": 02812    },2813    {2814     "algorithm": "straus_wnaf5",2815     "batch_size": 256,2816     "msm_only_ns_per_sig_median": 12508.30126953125,2817     "msm_only_ns_per_sig_samples": [2818      12527.24169921875,2819      12508.30126953125,2820      12507.06005859375,2821      12503.01123046875,2822      12520.20361328125,2823      12488.138671875,2824      12542.500488281252825     ],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": 26.9775390625,2842      "mean_ns": 16116.76304408482,2843      "median_ns": 16127.685546875,2844      "min_ns": 16088.37890625,2845      "ns_per_op_samples": [2846       16130.28955078125,2847       16127.685546875,2848       16104.89892578125,2849       16099.52783203125,2850       16128.09228515625,2851       16088.37890625,2852       16138.468261718752853      ],2854      "ops_per_rep": 2048,2855      "ops_per_s": 62005.17719008765,2856      "q1_ns": 16102.21337890625,2857      "q3_ns": 16129.19091796875,2858      "reps": 7,2859      "sd_ns": 18.9085727677491462860     },2861     "sigs_per_rep": 2048,2862     "speedup_vs_k256_single_verify": {2863      "bootstrap_resamples": 2000,2864      "ci95_high": 2.021543267675036,2865      "ci95_low": 1.9901067300774715,2866      "point": 2.01502229849074332867     },2868     "speedup_vs_libsecp256k1_single_verify": {2869      "bootstrap_resamples": 2000,2870      "ci95_high": 1.0704105675822329,2871      "ci95_low": 1.0503105010399174,2872      "point": 1.05062604617084722873     },2874     "window_bits": 52875    },2876    {2877     "algorithm": "pippenger",2878     "batch_size": 256,2879     "msm_only_ns_per_sig_median": 11731.14013671875,2880     "msm_only_ns_per_sig_samples": [2881      11731.14013671875,2882      11721.41552734375,2883      11720.15283203125,2884      11732.421875,2885      11760.82470703125,2886      11736.26708984375,2887      11728.332519531252888     ],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": 13.89599609375,2905      "mean_ns": 15330.798897879464,2906      "median_ns": 15327.1279296875,2907      "min_ns": 15313.06982421875,2908      "ns_per_op_samples": [2909       15325.33740234375,2910       15316.5283203125,2911       15313.06982421875,2912       15327.1279296875,2913       15363.87109375,2914       15337.82958984375,2915       15331.8281252916      ],2917      "ops_per_rep": 2048,2918      "ops_per_s": 65243.795483893286,2919      "q1_ns": 15320.932861328125,2920      "q3_ns": 15334.828857421875,2921      "reps": 7,2922      "sd_ns": 16.8598806617772152923     },2924     "sigs_per_rep": 2048,2925     "speedup_vs_k256_single_verify": {2926      "bootstrap_resamples": 2000,2927      "ci95_high": 2.124953577142075,2928      "ci95_low": 2.0934636586268147,2929      "point": 2.1202697693319632930     },2931     "speedup_vs_libsecp256k1_single_verify": {2932      "bootstrap_resamples": 2000,2933      "ci95_high": 1.1248596717592403,2934      "ci95_low": 1.1045769155773095,2935      "point": 1.1055017337710362936     },2937     "window_bits": 72938    },2939    {2940     "algorithm": "k256_lincomb_vartime",2941     "batch_size": 256,2942     "msm_only_ns_per_sig_median": 16294.82080078125,2943     "msm_only_ns_per_sig_samples": [2944      16308.919921875,2945      16291.85009765625,2946      16294.82080078125,2947      16403.80908203125,2948      16372.86376953125,2949      16285.64501953125,2950      16283.324707031252951     ],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": 64.015625,2968      "mean_ns": 19925.89453125,2969      "median_ns": 19898.3154296875,2970      "min_ns": 19883.544921875,2971      "ns_per_op_samples": [2972       19910.013671875,2973       19887.939453125,2974       19898.3154296875,2975       20007.52734375,2976       19999.93896484375,2977       19893.98193359375,2978       19883.5449218752979      ],2980      "ops_per_rep": 2048,2981      "ops_per_s": 50255.5104995491,2982      "q1_ns": 19890.960693359375,2983      "q3_ns": 19954.976318359375,2984      "reps": 7,2985      "sd_ns": 53.8698957662846852986     },2987     "sigs_per_rep": 2048,2988     "speedup_vs_k256_single_verify": {2989      "bootstrap_resamples": 2000,2990      "ci95_high": 1.6365124945159122,2991      "ci95_low": 1.6069424039990357,2992      "point": 1.63318578976362972993     },2994     "speedup_vs_libsecp256k1_single_verify": {2995      "bootstrap_resamples": 2000,2996      "ci95_high": 0.866536124218038,2997      "ci95_low": 0.8471192602028205,2998      "point": 0.85153773744685812999     },3000     "window_bits": 03001    },3002    {3003     "algorithm": "k256_lincomb_ct",3004     "batch_size": 256,3005     "msm_only_ns_per_sig_median": 25624.47021484375,3006     "msm_only_ns_per_sig_samples": [3007      25624.47021484375,3008      25446.77734375,3009      25534.95361328125,3010      25670.36962890625,3011      25518.53515625,3012      27657.45068359375,3013      27548.46191406253014     ],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": 1187.02197265625,3031      "mean_ns": 29932.3701171875,3032      "median_ns": 29308.89892578125,3033      "min_ns": 29177.67333984375,3034      "ns_per_op_samples": [3035       29308.89892578125,3036       29177.67333984375,3037       29286.80419921875,3038       29359.70068359375,3039       29237.12158203125,3040       31618.123046875,3041       31538.269042968753042      ],3043      "ops_per_rep": 2048,3044      "ops_per_s": 34119.33019156721,3045      "q1_ns": 29261.962890625,3046      "q3_ns": 30448.98486328125,3047      "reps": 7,3048      "sd_ns": 1125.98357094843049     },3050     "sigs_per_rep": 2048,3051     "speedup_vs_k256_single_verify": {3052      "bootstrap_resamples": 2000,3053      "ci95_high": 1.1129536951407142,3054      "ci95_low": 1.019039756310441,3055      "point": 1.10879791432266343056     },3057     "speedup_vs_libsecp256k1_single_verify": {3058      "bootstrap_resamples": 2000,3059      "ci95_high": 0.5886218886408869,3060      "ci95_low": 0.5371992190477296,3061      "point": 0.57812361163439173062     },3063     "window_bits": 03064    },3065    {3066     "algorithm": "straus_wnaf5",3067     "batch_size": 512,3068     "msm_only_ns_per_sig_median": 12536.1328125,3069     "msm_only_ns_per_sig_samples": [3070      12560.11962890625,3071      12567.1796875,3072      12540.58837890625,3073      12529.52099609375,3074      12536.1328125,3075      12535.03369140625,3076      12527.770019531253077     ],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": 22.29833984375,3094      "mean_ns": 16144.060477120536,3095      "median_ns": 16138.712890625,3096      "min_ns": 16123.31103515625,3097      "ns_per_op_samples": [3098       16165.568359375,3099       16170.30859375,3100       16144.775390625,3101       16128.4990234375,3102       16137.248046875,3103       16138.712890625,3104       16123.311035156253105      ],3106      "ops_per_rep": 2048,3107      "ops_per_s": 61962.80996986453,3108      "q1_ns": 16132.87353515625,3109      "q3_ns": 16155.171875,3110      "reps": 7,3111      "sd_ns": 17.79404299534343112     },3113     "sigs_per_rep": 2048,3114     "speedup_vs_k256_single_verify": {3115      "bootstrap_resamples": 2000,3116      "ci95_high": 2.0175195753004904,3117      "ci95_low": 1.9880502653903733,3118      "point": 2.0136454635659283119     },3120     "speedup_vs_libsecp256k1_single_verify": {3121      "bootstrap_resamples": 2000,3122      "ci95_high": 1.0688442845765722,3123      "ci95_low": 1.0480505926767818,3124      "point": 1.04990816893724453125     },3126     "window_bits": 53127    },3128    {3129     "algorithm": "pippenger",3130     "batch_size": 512,3131     "msm_only_ns_per_sig_median": 9719.8896484375,3132     "msm_only_ns_per_sig_samples": [3133      9499.28857421875,3134      9778.1376953125,3135      9719.8896484375,3136      9886.169921875,3137      9735.45361328125,3138      9700.05322265625,3139      9627.7675781253140     ],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": 111.60302734375,3157      "mean_ns": 13386.52992466518,3158      "median_ns": 13426.04541015625,3159      "min_ns": 13088.48095703125,3160      "ns_per_op_samples": [3161       13088.48095703125,3162       13465.80029296875,3163       13452.5556640625,3164       13577.67724609375,3165       13426.04541015625,3166       13398.82421875,3167       13296.325683593753168      ],3169      "ops_per_rep": 2048,3170      "ops_per_s": 74482.09576615473,3171      "q1_ns": 13347.574951171875,3172      "q3_ns": 13459.177978515625,3173      "reps": 7,3174      "sd_ns": 155.918303137052423175     },3176     "sigs_per_rep": 2048,3177     "speedup_vs_k256_single_verify": {3178      "bootstrap_resamples": 2000,3179      "ci95_high": 2.447259737338591,3180      "ci95_low": 2.385912818464951,3181      "point": 2.42049278154659533182     },3183     "speedup_vs_libsecp256k1_single_verify": {3184      "bootstrap_resamples": 2000,3185      "ci95_high": 1.2964389493101882,3186      "ci95_low": 1.2581363254619387,3187      "point": 1.26203703193067083188     },3189     "window_bits": 73190    },3191    {3192     "algorithm": "k256_lincomb_vartime",3193     "batch_size": 512,3194     "msm_only_ns_per_sig_median": 16351.60302734375,3195     "msm_only_ns_per_sig_samples": [3196      16341.41015625,3197      16374.41015625,3198      16351.60302734375,3199      16345.70361328125,3200      16309.7333984375,3201      16979.49267578125,3202      16945.719238281253203     ],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": 361.816162109375,3220      "mean_ns": 20137.71561104911,3221      "median_ns": 19945.86181640625,3222      "min_ns": 19904.94775390625,3223      "ns_per_op_samples": [3224       19936.421875,3225       19969.74658203125,3226       19945.86181640625,3227       19941.650390625,3228       19904.94775390625,3229       20633.4228515625,3230       20631.95800781253231      ],3232      "ops_per_rep": 2048,3233      "ops_per_s": 50135.71282126606,3234      "q1_ns": 19939.0361328125,3235      "q3_ns": 20300.852294921875,3236      "reps": 7,3237      "sd_ns": 338.66510066124083238     },3239     "sigs_per_rep": 2048,3240     "speedup_vs_k256_single_verify": {3241      "bootstrap_resamples": 2000,3242      "ci95_high": 1.6326512909339583,3243      "ci95_low": 1.5577169160498647,3244      "point": 1.62929264722316573245     },3246     "speedup_vs_libsecp256k1_single_verify": {3247      "bootstrap_resamples": 2000,3248      "ci95_high": 0.8644647590504524,3249      "ci95_low": 0.8211694446830793,3250      "point": 0.84950786563971683251     },3252     "window_bits": 03253    },3254    {3255     "algorithm": "straus_wnaf5",3256     "batch_size": 1024,3257     "msm_only_ns_per_sig_median": 12596.31396484375,3258     "msm_only_ns_per_sig_samples": [3259      12596.31396484375,3260      12577.25048828125,3261      12601.94873046875,3262      12658.04052734375,3263      12638.9365234375,3264      12582.3974609375,3265      12593.343261718753266     ],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": 37.4345703125,3283      "mean_ns": 16205.447265625,3284      "median_ns": 16192.42333984375,3285      "min_ns": 16174.76416015625,3286      "ns_per_op_samples": [3287       16192.42333984375,3288       16174.76416015625,3289       16202.880859375,3290       16268.65625,3291       16235.697265625,3292       16175.5576171875,3293       16188.15136718753294      ],3295      "ops_per_rep": 2048,3296      "ops_per_s": 61757.27863656815,3297      "q1_ns": 16181.8544921875,3298      "q3_ns": 16219.2890625,3299      "reps": 7,3300      "sd_ns": 34.690631389465563301     },3302     "sigs_per_rep": 2048,3303     "speedup_vs_k256_single_verify": {3304      "bootstrap_resamples": 2000,3305      "ci95_high": 2.0116501248417404,3306      "ci95_low": 1.9795115340100427,3307      "point": 2.00696617905455453308     },3309     "speedup_vs_libsecp256k1_single_verify": {3310      "bootstrap_resamples": 2000,3311      "ci95_high": 1.064905659020598,3312      "ci95_low": 1.0435236148355098,3313      "point": 1.04642561180490383314     },3315     "window_bits": 53316    },3317    {3318     "algorithm": "pippenger",3319     "batch_size": 1024,3320     "msm_only_ns_per_sig_median": 8207.11328125,3321     "msm_only_ns_per_sig_samples": [3322      8207.11328125,3323      8202.5556640625,3324      8211.24267578125,3325      8202.9013671875,3326      8207.62109375,3327      8205.81103515625,3328      8211.91406253329     ],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": 5.666015625,3346      "mean_ns": 11802.115234375,3347      "median_ns": 11799.31640625,3348      "min_ns": 11794.53515625,3349      "ns_per_op_samples": [3350       11798.2177734375,3351       11796.81396484375,3352       11801.65576171875,3353       11794.53515625,3354       11804.7080078125,3355       11799.31640625,3356       11819.55957031253357      ],3358      "ops_per_rep": 2048,3359      "ops_per_s": 84750.67246016966,3360      "q1_ns": 11797.515869140625,3361      "q3_ns": 11803.181884765625,3362      "reps": 7,3363      "sd_ns": 8.3648384042679263364     },3365     "sigs_per_rep": 2048,3366     "speedup_vs_k256_single_verify": {3367      "bootstrap_resamples": 2000,3368      "ci95_high": 2.759463388894062,3369      "ci95_low": 2.71911570044655,3370      "point": 2.7541973518725433371     },3372     "speedup_vs_libsecp256k1_single_verify": {3373      "bootstrap_resamples": 2000,3374      "ci95_high": 1.4613143897474634,3375      "ci95_low": 1.4351742108985417,3376      "point": 1.43602950515207953377     },3378     "window_bits": 83379    },3380    {3381     "algorithm": "k256_lincomb_vartime",3382     "batch_size": 1024,3383     "msm_only_ns_per_sig_median": 16590.4541015625,3384     "msm_only_ns_per_sig_samples": [3385      16590.4541015625,3386      16386.29150390625,3387      16371.94775390625,3388      16353.455078125,3389      16716.1865234375,3390      17243.65234375,3391      16653.137207031253392     ],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": 337.992431640625,3409      "mean_ns": 20236.339704241072,3410      "median_ns": 20192.81005859375,3411      "min_ns": 19948.99462890625,3412      "ns_per_op_samples": [3413       20192.81005859375,3414       19982.177734375,3415       19965.2099609375,3416       19948.99462890625,3417       20311.97119140625,3418       20941.81298828125,3419       20311.40136718753420      ],3421      "ops_per_rep": 2048,3422      "ops_per_s": 49522.57744703617,3423      "q1_ns": 19973.69384765625,3424      "q3_ns": 20311.686279296875,3425      "reps": 7,3426      "sd_ns": 349.19397584269033427     },3428     "sigs_per_rep": 2048,3429     "speedup_vs_k256_single_verify": {3430      "bootstrap_resamples": 2000,3431      "ci95_high": 1.629813188224145,3432      "ci95_low": 1.580227007470356,3433      "point": 1.60936719088136543434     },3435     "speedup_vs_libsecp256k1_single_verify": {3436      "bootstrap_resamples": 2000,3437      "ci95_high": 0.862711473652058,3438      "ci95_low": 0.8341035753135686,3439      "point": 0.83911879777172583440     },3441     "window_bits": 03442    },3443    {3444     "algorithm": "straus_wnaf5",3445     "batch_size": 2048,3446     "msm_only_ns_per_sig_median": 12612.26416015625,3447     "msm_only_ns_per_sig_samples": [3448      12643.5341796875,3449      12800.740234375,3450      12607.666015625,3451      12625.4072265625,3452      12612.26416015625,3453      12608.11376953125,3454      12608.947753906253455     ],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": 34.637451171875,3472      "mean_ns": 16243.2744140625,3473      "median_ns": 16211.28369140625,3474      "min_ns": 16202.04638671875,3475      "ns_per_op_samples": [3476       16252.72607421875,3477       16398.09130859375,3478       16211.28369140625,3479       16227.6611328125,3480       16206.4208984375,3481       16202.04638671875,3482       16204.691406253483      ],3484      "ops_per_rep": 2048,3485      "ops_per_s": 61685.429669589284,3486      "q1_ns": 16205.55615234375,3487      "q3_ns": 16240.193603515625,3488      "reps": 7,3489      "sd_ns": 70.558918576261143490     },3491     "sigs_per_rep": 2048,3492     "speedup_vs_k256_single_verify": {3493      "bootstrap_resamples": 2000,3494      "ci95_high": 2.00887970292928,3495      "ci95_low": 1.9774374989916805,3496      "point": 2.00463125676020943497     },3498     "speedup_vs_libsecp256k1_single_verify": {3499      "bootstrap_resamples": 2000,3500      "ci95_high": 1.0637051887046842,3501      "ci95_low": 1.0424302620146386,3502      "point": 1.04520819094556083503     },3504     "window_bits": 53505    },3506    {3507     "algorithm": "pippenger",3508     "batch_size": 2048,3509     "msm_only_ns_per_sig_median": 7116.53662109375,3510     "msm_only_ns_per_sig_samples": [3511      7117.1669921875,3512      7116.53662109375,3513      7114.11572265625,3514      7116.353515625,3515      7113.56591796875,3516      7133.23974609375,3517      7121.3378906253518     ],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": 5.014892578125,3535      "mean_ns": 10715.921944754464,3536      "median_ns": 10711.080078125,3537      "min_ns": 10707.2548828125,3538      "ns_per_op_samples": [3539       10710.87646484375,3540       10710.75439453125,3541       10707.2548828125,3542       10716.59326171875,3543       10711.080078125,3544       10739.8271484375,3545       10715.06738281253546      ],3547      "ops_per_rep": 2048,3548      "ops_per_s": 93361.26634346407,3549      "q1_ns": 10710.8154296875,3550      "q3_ns": 10715.830322265625,3551      "reps": 7,3552      "sd_ns": 10.9799953226222963553     },3554     "sigs_per_rep": 2048,3555     "speedup_vs_k256_single_verify": {3556      "bootstrap_resamples": 2000,3557      "ci95_high": 3.039597189535407,3558      "ci95_low": 2.9954664635599566,3559      "point": 3.03402138374160973560     },3561     "speedup_vs_libsecp256k1_single_verify": {3562      "bootstrap_resamples": 2000,3563      "ci95_high": 1.6094718351558803,3564      "ci95_low": 1.5808953541718012,3565      "point": 1.58192884157450123566     },3567     "window_bits": 83568    },3569    {3570     "algorithm": "k256_lincomb_vartime",3571     "batch_size": 2048,3572     "msm_only_ns_per_sig_median": 16532.30810546875,3573     "msm_only_ns_per_sig_samples": [3574      16380.5947265625,3575      17224.955078125,3576      17976.62353515625,3577      16838.6025390625,3578      16349.12109375,3579      16370.462890625,3580      16532.308105468753581     ],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": 706.06494140625,3598      "mean_ns": 20436.096330915178,3599      "median_ns": 20122.6806640625,3600      "min_ns": 19936.11669921875,3601      "ns_per_op_samples": [3602       19988.38330078125,3603       20821.26904296875,3604       21693.888671875,3605       20534.7900390625,3606       19936.11669921875,3607       19955.5458984375,3608       20122.68066406253609      ],3610      "ops_per_rep": 2048,3611      "ops_per_s": 49695.1681882981,3612      "q1_ns": 19971.964599609375,3613      "q3_ns": 20678.029541015625,3614      "reps": 7,3615      "sd_ns": 648.03867258083113616     },3617     "sigs_per_rep": 2048,3618     "speedup_vs_k256_single_verify": {3619      "bootstrap_resamples": 2000,3620      "ci95_high": 1.6306024733980249,3621      "ci95_low": 1.5435538503284991,3622      "point": 1.6149759836937733623     },3624     "speedup_vs_libsecp256k1_single_verify": {3625      "bootstrap_resamples": 2000,3626      "ci95_high": 0.8624436374164496,3627      "ci95_low": 0.8137032120874185,3628      "point": 0.84204320402802633629     },3630     "window_bits": 03631    }3632   ],3633   "single_verify_reference_ns": {3634    "k256_verify_raw": 32497.646,3635    "libsecp256k1_schnorr_verify": 16944.16653636   },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.14.5",3657   "results": {3658    "wp34_pure_python_ecdsa_sign": {3659     "reps": 7,3660     "ops_per_rep": 20,3661     "ns_per_op_samples": [3662      4615279.2,3663      4589406.25,3664      4673427.1,3665      4671043.75,3666      4623656.25,3667      4576283.35,3668      4673160.453669     ],3670     "median_ns": 4623656.25,3671     "q1_ns": 4602342.725,3672     "q3_ns": 4672102.1,3673     "iqr_ns": 69759.375,3674     "min_ns": 4576283.35,3675     "mean_ns": 4631750.907142857,3676     "sd_ns": 41235.38788650303,3677     "ops_per_s": 216.279054049487343678    },3679    "wp34_pure_python_ecdsa_verify": {3680     "reps": 7,3681     "ops_per_rep": 20,3682     "ns_per_op_samples": [3683      9114654.2,3684      9192429.15,3685      9100618.75,3686      9098322.9,3687      9096145.8,3688      9220681.25,3689      9285858.353690     ],3691     "median_ns": 9114654.2,3692     "q1_ns": 9099470.825,3693     "q3_ns": 9206555.2,3694     "iqr_ns": 107084.375,3695     "min_ns": 9096145.8,3696     "mean_ns": 9158387.2,3697     "sd_ns": 75299.15694567886,3698     "ops_per_s": 109.713432682942613699    },3700    "wp34_pure_python_ecdsa_verify_shamir": {3701     "reps": 7,3702     "ops_per_rep": 20,3703     "ns_per_op_samples": [3704      5657356.25,3705      5519695.85,3706      5494897.95,3707      5747664.55,3708      5854495.8,3709      5724783.35,3710      5723125.03711     ],3712     "median_ns": 5723125.0,3713     "q1_ns": 5588526.05,3714     "q3_ns": 5736223.949999999,3715     "iqr_ns": 147697.89999999944,3716     "min_ns": 5494897.95,3717     "mean_ns": 5674574.107142857,3718     "sd_ns": 128555.71830207325,3719     "ops_per_s": 174.729714972152463720    },3721    "wp34_pure_python_schnorr_sign": {3722     "reps": 7,3723     "ops_per_rep": 20,3724     "ns_per_op_samples": [3725      18541975.0,3726      18548685.4,3727      18528050.0,3728      19253277.1,3729      18509164.55,3730      18715677.1,3731      18492147.93732     ],3733     "median_ns": 18541975.0,3734     "q1_ns": 18518607.275,3735     "q3_ns": 18632181.25,3736     "iqr_ns": 113573.97500000149,3737     "min_ns": 18492147.9,3738     "mean_ns": 18655568.15,3739     "sd_ns": 273738.7658386299,3740     "ops_per_s": 53.9316874281191763741    },3742    "wp34_pure_python_schnorr_verify": {3743     "reps": 7,3744     "ops_per_rep": 20,3745     "ns_per_op_samples": [3746      9274020.85,3747      9219837.5,3748      9217985.45,3749      9216875.0,3750      9212522.9,3751      9509041.65,3752      9392354.153753     ],3754     "median_ns": 9219837.5,3755     "q1_ns": 9217430.225,3756     "q3_ns": 9333187.5,3757     "iqr_ns": 115757.27500000037,3758     "min_ns": 9212522.9,3759     "mean_ns": 9291805.357142856,3760     "sd_ns": 115576.07376250606,3761     "ops_per_s": 108.4617814576453762    },3763    "wp34_pure_python_schnorr_batch_verify_per_sig": {3764     "reps": 7,3765     "ops_per_rep": 16,3766     "ns_per_op_samples": [3767      7228744.8125,3768      7255359.375,3769      7301432.25,3770      7269578.125,3771      7261411.4375,3772      7261630.25,3773      7328841.1253774     ],3775     "median_ns": 7261630.25,3776     "q1_ns": 7258385.40625,3777     "q3_ns": 7285505.1875,3778     "iqr_ns": 27119.78125,3779     "min_ns": 7228744.8125,3780     "mean_ns": 7272428.196428572,3781     "sd_ns": 32836.27024471402,3782     "ops_per_s": 137.7101237012171,3783     "batch_size": 163784    }3785   },3786   "versions": {3787    "ecdsa": null,3788    "coincurve": null3789   },3790   "pure_python_batch_negative_control_rejected": true,3791   "python_ecdsa_pkg_error": "ModuleNotFoundError(\"No module named 'ecdsa'\")",3792   "coincurve_error": "ModuleNotFoundError(\"No module named 'coincurve'\")"3793  },3794  "rust_elapsed_s": 27.28,3795  "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)"3796 },3797 "elapsed_s": 50.922,3798 "label": "M3U96a (Apple M3 Ultra)",3799 "toolchain": {3800  "rustc": "rustc 1.96.0 (ac68faa20 2026-05-25) (Homebrew)",3801  "cargo": "cargo 1.96.0 (30a34c682 2026-05-25) (Homebrew)",3802  "crates": {3803   "clap": "4.6.7",3804   "k256": "0.14.0",3805   "ecdsa": "0.17.0",3806   "elliptic-curve": "0.14.3",3807   "crypto-bigint": "0.7.10",3808   "primeorder": "0.14.0",3809   "wnaf": "0.14.1",3810   "sha2": "0.11.1",3811   "rand": "0.9.5",3812   "rand_chacha": "0.9.0",3813   "secp256k1": "0.33.1",3814   "secp256k1-sys": "0.14.1",3815   "serde": "1.0.229",3816   "serde_json": "1.0.154"3817  },3818  "profile": "release (opt-level 3, lto fat, codegen-units 1)",3819  "target": "aarch64-apple-darwin"3820 },3821 "crate": "experiments/signature_benchmarks/sigbench"3822}
Files · main
Menu

Theme