Skip to content

Commit d2f9c6b

Browse files
committed
Use more precise pippenger bucket windows
1 parent 4c950bb commit d2f9c6b

File tree

1 file changed

+41
-41
lines changed

1 file changed

+41
-41
lines changed

src/ecmult_impl.h

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@
6060

6161
/* Minimum number of points for which pippenger_wnaf is faster than strauss wnaf */
6262
#ifdef USE_ENDOMORPHISM
63-
#define ECMULT_PIPPENGER_THRESHOLD 96
63+
#define ECMULT_PIPPENGER_THRESHOLD 88
6464
#else
65-
#define ECMULT_PIPPENGER_THRESHOLD 156
65+
#define ECMULT_PIPPENGER_THRESHOLD 160
6666
#endif
6767

6868
#ifdef USE_ENDOMORPHISM
@@ -716,51 +716,51 @@ static int secp256k1_ecmult_pippenger_wnaf(secp256k1_gej *buckets, int bucket_wi
716716
*/
717717
static int secp256k1_pippenger_bucket_window(size_t n) {
718718
#ifdef USE_ENDOMORPHISM
719-
if (n <= 4) {
719+
if (n <= 1) {
720720
return 1;
721-
} else if (n <= 8) {
721+
} else if (n <= 4) {
722722
return 2;
723-
} else if (n <= 40) {
723+
} else if (n <= 20) {
724724
return 3;
725-
} else if (n <= 117) {
725+
} else if (n <= 57) {
726726
return 4;
727-
} else if (n <= 280) {
727+
} else if (n <= 136) {
728728
return 5;
729-
} else if (n <= 480) {
729+
} else if (n <= 235) {
730730
return 6;
731-
} else if (n <= 2560) {
731+
} else if (n <= 1260) {
732732
return 7;
733-
} else if (n <= 9200) {
733+
} else if (n <= 4420) {
734734
return 9;
735-
} else if (n <= 17400) {
735+
} else if (n <= 7880) {
736736
return 10;
737-
} else if (n <= 28600) {
737+
} else if (n <= 16050) {
738738
return 11;
739739
} else {
740740
return PIPPENGER_MAX_BUCKET_WINDOW;
741741
}
742742
#else
743-
if (n <= 2) {
743+
if (n <= 1) {
744744
return 1;
745-
} else if (n <= 9) {
745+
} else if (n <= 11) {
746746
return 2;
747-
} else if (n <= 42) {
747+
} else if (n <= 45) {
748748
return 3;
749749
} else if (n <= 100) {
750750
return 4;
751-
} else if (n <= 280) {
751+
} else if (n <= 275) {
752752
return 5;
753-
} else if (n <= 610) {
753+
} else if (n <= 625) {
754754
return 6;
755-
} else if (n <= 1920) {
755+
} else if (n <= 1850) {
756756
return 7;
757757
} else if (n <= 3400) {
758758
return 8;
759-
} else if (n <= 10240) {
759+
} else if (n <= 9630) {
760760
return 9;
761-
} else if (n <= 19000) {
761+
} else if (n <= 17900) {
762762
return 10;
763-
} else if (n <= 35000) {
763+
} else if (n <= 32800) {
764764
return 11;
765765
} else {
766766
return PIPPENGER_MAX_BUCKET_WINDOW;
@@ -774,30 +774,30 @@ static int secp256k1_pippenger_bucket_window(size_t n) {
774774
static size_t secp256k1_pippenger_bucket_window_inv(int bucket_window) {
775775
switch(bucket_window) {
776776
#ifdef USE_ENDOMORPHISM
777-
case 1: return 4;
778-
case 2: return 8;
779-
case 3: return 40;
780-
case 4: return 117;
781-
case 5: return 280;
782-
case 6: return 480;
783-
case 7: return 2560;
784-
case 8: return 2560;
785-
case 9: return 9200;
786-
case 10: return 17400;
787-
case 11: return 28600;
777+
case 1: return 1;
778+
case 2: return 4;
779+
case 3: return 20;
780+
case 4: return 57;
781+
case 5: return 136;
782+
case 6: return 235;
783+
case 7: return 1260;
784+
case 8: return 1260;
785+
case 9: return 4420;
786+
case 10: return 7880;
787+
case 11: return 16050;
788788
case PIPPENGER_MAX_BUCKET_WINDOW: return SIZE_MAX;
789789
#else
790-
case 1: return 2;
791-
case 2: return 9;
792-
case 3: return 42;
790+
case 1: return 1;
791+
case 2: return 11;
792+
case 3: return 45;
793793
case 4: return 100;
794-
case 5: return 280;
795-
case 6: return 610;
796-
case 7: return 1920;
794+
case 5: return 275;
795+
case 6: return 625;
796+
case 7: return 1850;
797797
case 8: return 3400;
798-
case 9: return 10240;
799-
case 10: return 19000;
800-
case 11: return 35000;
798+
case 9: return 9630;
799+
case 10: return 17900;
800+
case 11: return 32800;
801801
case PIPPENGER_MAX_BUCKET_WINDOW: return SIZE_MAX;
802802
#endif
803803
}

0 commit comments

Comments
 (0)