Skip to content

Commit 5715bba

Browse files
committed
Renamed mp_sieve.c to mp_is_small_prime.c for organisational purposes.
1 parent 2f3ae38 commit 5715bba

13 files changed

+99
-88
lines changed

demo/test.c

+13-7
Original file line numberDiff line numberDiff line change
@@ -1601,18 +1601,21 @@ static int test_mp_next_small_prime(void)
16011601
};
16021602

16031603
#if ( (defined MP_64BIT) && (defined MP_SIEVE_USE_LARGE_SIEVE) )
1604-
/* primesum up to 2^33. Would fit into a 64-bit type */
1605-
/*const char *primesum_64 = "1649816561794735645";*/
16061604
/* primesum up to 2^64
16071605
$ time /home/czurnieden/GITHUB/primesum/primesum 2^64
16081606
3879578600671960388666457126750869198
16091607
16101608
real 37m6,448s
16111609
user 107m17,056s
16121610
sys 0m12,152s
1611+
I think we should use something smaller.
16131612
*/
1614-
const char *primesum_64 = "3879578600671960388666457126750869198";
1613+
/* const char *primesum_64 = "3879578600671960388666457126750869198"; */
1614+
1615+
/* primesum up to 2^33. */
1616+
const char *primesum_64 = "1649816561794735645";
16151617
#else
1618+
/* TODO: Needs a minute here. Might cause a time-out in Github CI tests: check */
16161619
const char *primesum_32 = "425649736193687430";
16171620
#endif
16181621

@@ -1636,13 +1639,15 @@ static int test_mp_next_small_prime(void)
16361639

16371640
DOR(mp_init_multi(&primesum, &t, NULL));
16381641
start = clock();
1639-
for (p = 0;ret < (mp_sieve_prime)MP_SIEVE_BIGGEST_PRIME;p++) {
1642+
for (p = 0;ret < (mp_sieve_prime)MP_SIEVE_BIGGEST_PRIME;) {
16401643
DO(mp_next_small_prime(p, &ret, &sieve));
1644+
p = ret + 1;
16411645
#if ( (defined MP_64BIT) && (defined MP_SIEVE_USE_LARGE_SIEVE) )
16421646
mp_set_u64(&t, ret);
16431647
#else
16441648
mp_set_u32(&t, ret);
16451649
#endif
1650+
printf(" %"MP_SIEVE_PR_UINT"\n", ret);
16461651
DO(mp_add(&primesum, &t, &primesum));
16471652
}
16481653
stop = clock();
@@ -2427,9 +2432,10 @@ static int unit_tests(int argc, char **argv)
24272432
T1(mp_prime_next_prime, MP_PRIME_NEXT_PRIME),
24282433
T1(mp_prime_rand, MP_PRIME_RAND),
24292434
T1(mp_rand, MP_RAND),
2430-
T1(mp_is_small_prime, ),
2431-
T1(mp_next_small_prime, MP_NEXT_SMALL_PRIME_C),
2432-
T1(mp_prec_small_prime, MP_PREC_SMALL_PRIME_C),
2435+
2436+
T1(mp_is_small_prime, MP_IS_SMALL_PRIME),
2437+
T1(mp_next_small_prime, MP_NEXT_SMALL_PRIME),
2438+
T1(mp_prec_small_prime, MP_PREC_SMALL_PRIME),
24332439

24342440
T1(mp_read_radix, MP_READ_RADIX),
24352441
T1(mp_read_write_ubin, MP_TO_UBIN),

libtommath_VS2008.vcproj

+4-4
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,10 @@
532532
RelativePath="mp_invmod.c"
533533
>
534534
</File>
535+
<File
536+
RelativePath="mp_is_small_prime.c"
537+
>
538+
</File>
535539
<File
536540
RelativePath="mp_is_square.c"
537541
>
@@ -748,10 +752,6 @@
748752
RelativePath="mp_shrink.c"
749753
>
750754
</File>
751-
<File
752-
RelativePath="mp_sieve.c"
753-
>
754-
</File>
755755
<File
756756
RelativePath="mp_sieve_clear.c"
757757
>

makefile

+7-7
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,16 @@ mp_error_to_string.o mp_exch.o mp_expt_n.o mp_exptmod.o mp_exteuclid.o mp_fread.
3333
mp_from_ubin.o mp_fwrite.o mp_gcd.o mp_get_double.o mp_get_i32.o mp_get_i64.o mp_get_l.o mp_get_mag_u32.o \
3434
mp_get_mag_u64.o mp_get_mag_ul.o mp_grow.o mp_hash.o mp_init.o mp_init_copy.o mp_init_i32.o mp_init_i64.o \
3535
mp_init_l.o mp_init_multi.o mp_init_set.o mp_init_size.o mp_init_u32.o mp_init_u64.o mp_init_ul.o \
36-
mp_invmod.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log_n.o mp_lshd.o mp_mod.o mp_mod_2d.o \
37-
mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o mp_mul_2.o \
38-
mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_next_small_prime.o mp_or.o mp_pack.o mp_pack_count.o \
39-
mp_prec_small_prime.o mp_prime_fermat.o mp_prime_frobenius_underwood.o mp_prime_is_prime.o \
40-
mp_prime_miller_rabin.o mp_prime_next_prime.o mp_prime_rabin_miller_trials.o mp_prime_rand.o \
41-
mp_prime_strong_lucas_selfridge.o mp_radix_size.o mp_radix_size_overestimate.o mp_rand.o \
36+
mp_invmod.o mp_is_small_prime.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log_n.o mp_lshd.o mp_mod.o \
37+
mp_mod_2d.o mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o \
38+
mp_mul_2.o mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_next_small_prime.o mp_or.o mp_pack.o \
39+
mp_pack_count.o mp_prec_small_prime.o mp_prime_fermat.o mp_prime_frobenius_underwood.o \
40+
mp_prime_is_prime.o mp_prime_miller_rabin.o mp_prime_next_prime.o mp_prime_rabin_miller_trials.o \
41+
mp_prime_rand.o mp_prime_strong_lucas_selfridge.o mp_radix_size.o mp_radix_size_overestimate.o mp_rand.o \
4242
mp_rand_source.o mp_read_radix.o mp_reduce.o mp_reduce_2k.o mp_reduce_2k_l.o mp_reduce_2k_setup.o \
4343
mp_reduce_2k_setup_l.o mp_reduce_is_2k.o mp_reduce_is_2k_l.o mp_reduce_setup.o mp_root_n.o mp_rshd.o \
4444
mp_sbin_size.o mp_set.o mp_set_double.o mp_set_i32.o mp_set_i64.o mp_set_l.o mp_set_u32.o mp_set_u64.o \
45-
mp_set_ul.o mp_shrink.o mp_sieve.o mp_sieve_clear.o mp_sieve_init.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
45+
mp_set_ul.o mp_shrink.o mp_sieve_clear.o mp_sieve_init.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
4646
mp_sqrtmod_prime.o mp_sub.o mp_sub_d.o mp_submod.o mp_to_radix.o mp_to_sbin.o mp_to_ubin.o mp_ubin_size.o \
4747
mp_unpack.o mp_xor.o mp_zero.o s_mp_add.o s_mp_copy_digs.o s_mp_div_3.o s_mp_div_recursive.o \
4848
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_get_bit.o s_mp_invmod.o \

makefile.mingw

+7-7
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,16 @@ mp_error_to_string.o mp_exch.o mp_expt_n.o mp_exptmod.o mp_exteuclid.o mp_fread.
3535
mp_from_ubin.o mp_fwrite.o mp_gcd.o mp_get_double.o mp_get_i32.o mp_get_i64.o mp_get_l.o mp_get_mag_u32.o \
3636
mp_get_mag_u64.o mp_get_mag_ul.o mp_grow.o mp_hash.o mp_init.o mp_init_copy.o mp_init_i32.o mp_init_i64.o \
3737
mp_init_l.o mp_init_multi.o mp_init_set.o mp_init_size.o mp_init_u32.o mp_init_u64.o mp_init_ul.o \
38-
mp_invmod.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log_n.o mp_lshd.o mp_mod.o mp_mod_2d.o \
39-
mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o mp_mul_2.o \
40-
mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_next_small_prime.o mp_or.o mp_pack.o mp_pack_count.o \
41-
mp_prec_small_prime.o mp_prime_fermat.o mp_prime_frobenius_underwood.o mp_prime_is_prime.o \
42-
mp_prime_miller_rabin.o mp_prime_next_prime.o mp_prime_rabin_miller_trials.o mp_prime_rand.o \
43-
mp_prime_strong_lucas_selfridge.o mp_radix_size.o mp_radix_size_overestimate.o mp_rand.o \
38+
mp_invmod.o mp_is_small_prime.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log_n.o mp_lshd.o mp_mod.o \
39+
mp_mod_2d.o mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o \
40+
mp_mul_2.o mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_next_small_prime.o mp_or.o mp_pack.o \
41+
mp_pack_count.o mp_prec_small_prime.o mp_prime_fermat.o mp_prime_frobenius_underwood.o \
42+
mp_prime_is_prime.o mp_prime_miller_rabin.o mp_prime_next_prime.o mp_prime_rabin_miller_trials.o \
43+
mp_prime_rand.o mp_prime_strong_lucas_selfridge.o mp_radix_size.o mp_radix_size_overestimate.o mp_rand.o \
4444
mp_rand_source.o mp_read_radix.o mp_reduce.o mp_reduce_2k.o mp_reduce_2k_l.o mp_reduce_2k_setup.o \
4545
mp_reduce_2k_setup_l.o mp_reduce_is_2k.o mp_reduce_is_2k_l.o mp_reduce_setup.o mp_root_n.o mp_rshd.o \
4646
mp_sbin_size.o mp_set.o mp_set_double.o mp_set_i32.o mp_set_i64.o mp_set_l.o mp_set_u32.o mp_set_u64.o \
47-
mp_set_ul.o mp_shrink.o mp_sieve.o mp_sieve_clear.o mp_sieve_init.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
47+
mp_set_ul.o mp_shrink.o mp_sieve_clear.o mp_sieve_init.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
4848
mp_sqrtmod_prime.o mp_sub.o mp_sub_d.o mp_submod.o mp_to_radix.o mp_to_sbin.o mp_to_ubin.o mp_ubin_size.o \
4949
mp_unpack.o mp_xor.o mp_zero.o s_mp_add.o s_mp_copy_digs.o s_mp_div_3.o s_mp_div_recursive.o \
5050
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_get_bit.o s_mp_invmod.o \

makefile.msvc

+7-7
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,16 @@ mp_error_to_string.obj mp_exch.obj mp_expt_n.obj mp_exptmod.obj mp_exteuclid.obj
3131
mp_from_ubin.obj mp_fwrite.obj mp_gcd.obj mp_get_double.obj mp_get_i32.obj mp_get_i64.obj mp_get_l.obj mp_get_mag_u32.obj \
3232
mp_get_mag_u64.obj mp_get_mag_ul.obj mp_grow.obj mp_hash.obj mp_init.obj mp_init_copy.obj mp_init_i32.obj mp_init_i64.obj \
3333
mp_init_l.obj mp_init_multi.obj mp_init_set.obj mp_init_size.obj mp_init_u32.obj mp_init_u64.obj mp_init_ul.obj \
34-
mp_invmod.obj mp_is_square.obj mp_kronecker.obj mp_lcm.obj mp_log_n.obj mp_lshd.obj mp_mod.obj mp_mod_2d.obj \
35-
mp_montgomery_calc_normalization.obj mp_montgomery_reduce.obj mp_montgomery_setup.obj mp_mul.obj mp_mul_2.obj \
36-
mp_mul_2d.obj mp_mul_d.obj mp_mulmod.obj mp_neg.obj mp_next_small_prime.obj mp_or.obj mp_pack.obj mp_pack_count.obj \
37-
mp_prec_small_prime.obj mp_prime_fermat.obj mp_prime_frobenius_underwood.obj mp_prime_is_prime.obj \
38-
mp_prime_miller_rabin.obj mp_prime_next_prime.obj mp_prime_rabin_miller_trials.obj mp_prime_rand.obj \
39-
mp_prime_strong_lucas_selfridge.obj mp_radix_size.obj mp_radix_size_overestimate.obj mp_rand.obj \
34+
mp_invmod.obj mp_is_small_prime.obj mp_is_square.obj mp_kronecker.obj mp_lcm.obj mp_log_n.obj mp_lshd.obj mp_mod.obj \
35+
mp_mod_2d.obj mp_montgomery_calc_normalization.obj mp_montgomery_reduce.obj mp_montgomery_setup.obj mp_mul.obj \
36+
mp_mul_2.obj mp_mul_2d.obj mp_mul_d.obj mp_mulmod.obj mp_neg.obj mp_next_small_prime.obj mp_or.obj mp_pack.obj \
37+
mp_pack_count.obj mp_prec_small_prime.obj mp_prime_fermat.obj mp_prime_frobenius_underwood.obj \
38+
mp_prime_is_prime.obj mp_prime_miller_rabin.obj mp_prime_next_prime.obj mp_prime_rabin_miller_trials.obj \
39+
mp_prime_rand.obj mp_prime_strong_lucas_selfridge.obj mp_radix_size.obj mp_radix_size_overestimate.obj mp_rand.obj \
4040
mp_rand_source.obj mp_read_radix.obj mp_reduce.obj mp_reduce_2k.obj mp_reduce_2k_l.obj mp_reduce_2k_setup.obj \
4141
mp_reduce_2k_setup_l.obj mp_reduce_is_2k.obj mp_reduce_is_2k_l.obj mp_reduce_setup.obj mp_root_n.obj mp_rshd.obj \
4242
mp_sbin_size.obj mp_set.obj mp_set_double.obj mp_set_i32.obj mp_set_i64.obj mp_set_l.obj mp_set_u32.obj mp_set_u64.obj \
43-
mp_set_ul.obj mp_shrink.obj mp_sieve.obj mp_sieve_clear.obj mp_sieve_init.obj mp_signed_rsh.obj mp_sqrmod.obj mp_sqrt.obj \
43+
mp_set_ul.obj mp_shrink.obj mp_sieve_clear.obj mp_sieve_init.obj mp_signed_rsh.obj mp_sqrmod.obj mp_sqrt.obj \
4444
mp_sqrtmod_prime.obj mp_sub.obj mp_sub_d.obj mp_submod.obj mp_to_radix.obj mp_to_sbin.obj mp_to_ubin.obj mp_ubin_size.obj \
4545
mp_unpack.obj mp_xor.obj mp_zero.obj s_mp_add.obj s_mp_copy_digs.obj s_mp_div_3.obj s_mp_div_recursive.obj \
4646
s_mp_div_school.obj s_mp_div_small.obj s_mp_exptmod.obj s_mp_exptmod_fast.obj s_mp_get_bit.obj s_mp_invmod.obj \

makefile.shared

+7-7
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,16 @@ mp_error_to_string.o mp_exch.o mp_expt_n.o mp_exptmod.o mp_exteuclid.o mp_fread.
3030
mp_from_ubin.o mp_fwrite.o mp_gcd.o mp_get_double.o mp_get_i32.o mp_get_i64.o mp_get_l.o mp_get_mag_u32.o \
3131
mp_get_mag_u64.o mp_get_mag_ul.o mp_grow.o mp_hash.o mp_init.o mp_init_copy.o mp_init_i32.o mp_init_i64.o \
3232
mp_init_l.o mp_init_multi.o mp_init_set.o mp_init_size.o mp_init_u32.o mp_init_u64.o mp_init_ul.o \
33-
mp_invmod.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log_n.o mp_lshd.o mp_mod.o mp_mod_2d.o \
34-
mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o mp_mul_2.o \
35-
mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_next_small_prime.o mp_or.o mp_pack.o mp_pack_count.o \
36-
mp_prec_small_prime.o mp_prime_fermat.o mp_prime_frobenius_underwood.o mp_prime_is_prime.o \
37-
mp_prime_miller_rabin.o mp_prime_next_prime.o mp_prime_rabin_miller_trials.o mp_prime_rand.o \
38-
mp_prime_strong_lucas_selfridge.o mp_radix_size.o mp_radix_size_overestimate.o mp_rand.o \
33+
mp_invmod.o mp_is_small_prime.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log_n.o mp_lshd.o mp_mod.o \
34+
mp_mod_2d.o mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o \
35+
mp_mul_2.o mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_next_small_prime.o mp_or.o mp_pack.o \
36+
mp_pack_count.o mp_prec_small_prime.o mp_prime_fermat.o mp_prime_frobenius_underwood.o \
37+
mp_prime_is_prime.o mp_prime_miller_rabin.o mp_prime_next_prime.o mp_prime_rabin_miller_trials.o \
38+
mp_prime_rand.o mp_prime_strong_lucas_selfridge.o mp_radix_size.o mp_radix_size_overestimate.o mp_rand.o \
3939
mp_rand_source.o mp_read_radix.o mp_reduce.o mp_reduce_2k.o mp_reduce_2k_l.o mp_reduce_2k_setup.o \
4040
mp_reduce_2k_setup_l.o mp_reduce_is_2k.o mp_reduce_is_2k_l.o mp_reduce_setup.o mp_root_n.o mp_rshd.o \
4141
mp_sbin_size.o mp_set.o mp_set_double.o mp_set_i32.o mp_set_i64.o mp_set_l.o mp_set_u32.o mp_set_u64.o \
42-
mp_set_ul.o mp_shrink.o mp_sieve.o mp_sieve_clear.o mp_sieve_init.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
42+
mp_set_ul.o mp_shrink.o mp_sieve_clear.o mp_sieve_init.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
4343
mp_sqrtmod_prime.o mp_sub.o mp_sub_d.o mp_submod.o mp_to_radix.o mp_to_sbin.o mp_to_ubin.o mp_ubin_size.o \
4444
mp_unpack.o mp_xor.o mp_zero.o s_mp_add.o s_mp_copy_digs.o s_mp_div_3.o s_mp_div_recursive.o \
4545
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_get_bit.o s_mp_invmod.o \

makefile.unix

+7-7
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,16 @@ mp_error_to_string.o mp_exch.o mp_expt_n.o mp_exptmod.o mp_exteuclid.o mp_fread.
3636
mp_from_ubin.o mp_fwrite.o mp_gcd.o mp_get_double.o mp_get_i32.o mp_get_i64.o mp_get_l.o mp_get_mag_u32.o \
3737
mp_get_mag_u64.o mp_get_mag_ul.o mp_grow.o mp_hash.o mp_init.o mp_init_copy.o mp_init_i32.o mp_init_i64.o \
3838
mp_init_l.o mp_init_multi.o mp_init_set.o mp_init_size.o mp_init_u32.o mp_init_u64.o mp_init_ul.o \
39-
mp_invmod.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log_n.o mp_lshd.o mp_mod.o mp_mod_2d.o \
40-
mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o mp_mul_2.o \
41-
mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_next_small_prime.o mp_or.o mp_pack.o mp_pack_count.o \
42-
mp_prec_small_prime.o mp_prime_fermat.o mp_prime_frobenius_underwood.o mp_prime_is_prime.o \
43-
mp_prime_miller_rabin.o mp_prime_next_prime.o mp_prime_rabin_miller_trials.o mp_prime_rand.o \
44-
mp_prime_strong_lucas_selfridge.o mp_radix_size.o mp_radix_size_overestimate.o mp_rand.o \
39+
mp_invmod.o mp_is_small_prime.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log_n.o mp_lshd.o mp_mod.o \
40+
mp_mod_2d.o mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o \
41+
mp_mul_2.o mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_next_small_prime.o mp_or.o mp_pack.o \
42+
mp_pack_count.o mp_prec_small_prime.o mp_prime_fermat.o mp_prime_frobenius_underwood.o \
43+
mp_prime_is_prime.o mp_prime_miller_rabin.o mp_prime_next_prime.o mp_prime_rabin_miller_trials.o \
44+
mp_prime_rand.o mp_prime_strong_lucas_selfridge.o mp_radix_size.o mp_radix_size_overestimate.o mp_rand.o \
4545
mp_rand_source.o mp_read_radix.o mp_reduce.o mp_reduce_2k.o mp_reduce_2k_l.o mp_reduce_2k_setup.o \
4646
mp_reduce_2k_setup_l.o mp_reduce_is_2k.o mp_reduce_is_2k_l.o mp_reduce_setup.o mp_root_n.o mp_rshd.o \
4747
mp_sbin_size.o mp_set.o mp_set_double.o mp_set_i32.o mp_set_i64.o mp_set_l.o mp_set_u32.o mp_set_u64.o \
48-
mp_set_ul.o mp_shrink.o mp_sieve.o mp_sieve_clear.o mp_sieve_init.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
48+
mp_set_ul.o mp_shrink.o mp_sieve_clear.o mp_sieve_init.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
4949
mp_sqrtmod_prime.o mp_sub.o mp_sub_d.o mp_submod.o mp_to_radix.o mp_to_sbin.o mp_to_ubin.o mp_ubin_size.o \
5050
mp_unpack.o mp_xor.o mp_zero.o s_mp_add.o s_mp_copy_digs.o s_mp_div_3.o s_mp_div_recursive.o \
5151
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_get_bit.o s_mp_invmod.o \

mp_sieve.c renamed to mp_is_small_prime.c

+1-24
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
#include "tommath_private.h"
2-
#ifdef MP_SIEVE_C
2+
#ifdef MP_IS_SMALL_PRIME_C
33
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
44
/* SPDX-License-Identifier: Unlicense */
55

66

7-
8-
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
9-
/* SPDX-License-Identifier: Unlicense */
10-
117
/* Segmented version of an Eratosthenes sieve */
128
#define MP_SIEVE_PRIME_NUM_BITS (sizeof(mp_sieve_prime)*CHAR_BIT)
139

@@ -100,24 +96,6 @@ static mp_sieve_prime s_isqrt(mp_sieve_prime n)
10096
return root;
10197
}
10298

103-
/*
104-
* Set range_a_b to sqrt(MP_SIEVE_PRIME_MAX)
105-
* TODO: Make it const or put it in bncore.c because it is said to be faster
106-
* if the size of range_a_b fits into the L2-cache.
107-
* Not much difference on the author's machine for 32 bit but quite
108-
* a large one for 64 bit and large limits. YMMV, as always.
109-
* Please be aware that range_a_b is in bits, not bytes and memory
110-
* allocation rounds up and adds CHAR_BIT*sizeof(mp_sieve_prime) bits.
111-
*/
112-
#ifndef MP_SIEVE_RANGE_A_B
113-
#if ( (defined MP_64BIT) && (defined MP_SIEVE_USE_LARGE_SIEVE) )
114-
#define MP_SIEVE_RANGE_A_B 0x400000uL
115-
#else
116-
#define MP_SIEVE_RANGE_A_B ((mp_sieve_prime) MP_SIEVE_PRIME_MAX_SQRT)
117-
#endif
118-
#endif
119-
#define MP_SIEVE_BASE_SIEVE_SIZE ((mp_sieve_prime)MP_SIEVE_PRIME_MAX_SQRT)
120-
12199
/* TODO: Some redundant code below, needs a clean-up */
122100

123101

@@ -398,5 +376,4 @@ mp_err mp_is_small_prime(mp_sieve_prime n, mp_sieve_prime *result, mp_sieve *sie
398376
}
399377

400378

401-
402379
#endif

sources.cmake

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ mp_init_u32.c
5757
mp_init_u64.c
5858
mp_init_ul.c
5959
mp_invmod.c
60+
mp_is_small_prime.c
6061
mp_is_square.c
6162
mp_kronecker.c
6263
mp_lcm.c
@@ -111,7 +112,6 @@ mp_set_u32.c
111112
mp_set_u64.c
112113
mp_set_ul.c
113114
mp_shrink.c
114-
mp_sieve.c
115115
mp_sieve_clear.c
116116
mp_sieve_init.c
117117
mp_signed_rsh.c

tommath.def

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ EXPORTS
6060
mp_init_u64
6161
mp_init_ul
6262
mp_invmod
63+
mp_is_small_prime
6364
mp_is_square
6465
mp_kronecker
6566
mp_lcm
@@ -114,7 +115,6 @@ EXPORTS
114115
mp_set_u64
115116
mp_set_ul
116117
mp_shrink
117-
mp_sieve
118118
mp_sieve_clear
119119
mp_sieve_init
120120
mp_signed_rsh

tommath.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -568,11 +568,11 @@ mp_err mp_prime_rand(mp_int *a, int t, int size, int flags) MP_WUR;
568568

569569
#if ( (defined MP_64BIT) && (defined MP_SIEVE_USE_LARGE_SIEVE) )
570570
typedef uint64_t mp_sieve_prime;
571-
# define MP_SIEVE_BIGGEST_PRIME 18446744073709551557llu
571+
# define MP_SIEVE_BIGGEST_PRIME 18446744073709551557lu
572572
# define MP_SIEVE_PR_UINT PRIu64
573573
#else
574574
typedef uint32_t mp_sieve_prime;
575-
# define MP_SIEVE_BIGGEST_PRIME 4294967291lu
575+
# define MP_SIEVE_BIGGEST_PRIME 4294967291u
576576
# define MP_SIEVE_PR_UINT PRIu32
577577
#endif
578578

tommath_class.h

+13-14
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
# define MP_INIT_U64_C
6767
# define MP_INIT_UL_C
6868
# define MP_INVMOD_C
69+
# define MP_IS_SMALL_PRIME_C
6970
# define MP_IS_SQUARE_C
7071
# define MP_KRONECKER_C
7172
# define MP_LCM_C
@@ -120,7 +121,6 @@
120121
# define MP_SET_U64_C
121122
# define MP_SET_UL_C
122123
# define MP_SHRINK_C
123-
# define MP_SIEVE_C
124124
# define MP_SIEVE_CLEAR_C
125125
# define MP_SIEVE_INIT_C
126126
# define MP_SIGNED_RSH_C
@@ -454,6 +454,18 @@
454454
# define S_MP_INVMOD_ODD_C
455455
#endif
456456

457+
#if defined(MP_IS_SMALL_PRIME_C)
458+
# define S_MP_ERATOSTHENES_C
459+
# define S_MP_ERATOSTHENES_INIT_C
460+
# define S_MP_ERATOSTHENES_SEGMENT_C
461+
# define S_MP_ERATOSTHENES_SEGMENT_CLEAR_C
462+
# define S_MP_ERATOSTHENES_SEGMENT_INIT_C
463+
# define S_MP_SIEVE_CLEAR_C
464+
# define S_MP_SIEVE_GET_C
465+
# define S_MP_SIEVE_NEXTSET_C
466+
# define S_MP_SIEVE_SETALL_C
467+
#endif
468+
457469
#if defined(MP_IS_SQUARE_C)
458470
# define MP_CLEAR_C
459471
# define MP_CMP_MAG_C
@@ -861,19 +873,6 @@
861873
#if defined(MP_SHRINK_C)
862874
#endif
863875

864-
#if defined(MP_SIEVE_C)
865-
# define MP_IS_SMALL_PRIME_C
866-
# define S_MP_ERATOSTHENES_C
867-
# define S_MP_ERATOSTHENES_INIT_C
868-
# define S_MP_ERATOSTHENES_SEGMENT_C
869-
# define S_MP_ERATOSTHENES_SEGMENT_CLEAR_C
870-
# define S_MP_ERATOSTHENES_SEGMENT_INIT_C
871-
# define S_MP_SIEVE_CLEAR_C
872-
# define S_MP_SIEVE_GET_C
873-
# define S_MP_SIEVE_NEXTSET_C
874-
# define S_MP_SIEVE_SETALL_C
875-
#endif
876-
877876
#if defined(MP_SIEVE_CLEAR_C)
878877
#endif
879878

tommath_private.h

+29
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,35 @@ extern void *MP_CALLOC(size_t nmemb, size_t size);
104104
extern void MP_FREE(void *mem, size_t size);
105105
#endif
106106

107+
/* Size of the base sieve of mp_sieve*/
108+
#if ( (defined MP_64BIT) && (defined MP_SIEVE_USE_LARGE_SIEVE) )
109+
# define MP_SIEVE_PRIME_MAX 0xFFFFFFFFFFFFFFFFllu
110+
# define MP_SIEVE_PRIME_MAX_SQRT 0xFFFFFFFFllu
111+
#else
112+
# define MP_SIEVE_PRIME_MAX 0xFFFFFFFFlu
113+
# define MP_SIEVE_PRIME_MAX_SQRT 0xFFFFlu
114+
#endif
115+
116+
/*
117+
* Set range_a_b to sqrt(MP_SIEVE_PRIME_MAX)
118+
* TODO: Make it const or put it in bncore.c because it is said to be faster
119+
* if the size of range_a_b fits into the L2-cache.
120+
* Not much difference on the author's machine for 32 bit but quite
121+
* a large one for 64 bit and large limits. YMMV, as always.
122+
* Please be aware that range_a_b is in bits, not bytes and memory
123+
* allocation rounds up and adds CHAR_BIT*sizeof(mp_sieve_prime) bits.
124+
*/
125+
#ifndef MP_SIEVE_RANGE_A_B
126+
#if ( (defined MP_64BIT) && (defined MP_SIEVE_USE_LARGE_SIEVE) )
127+
#define MP_SIEVE_RANGE_A_B 0x400000uL
128+
#else
129+
#define MP_SIEVE_RANGE_A_B ((mp_sieve_prime) MP_SIEVE_PRIME_MAX_SQRT)
130+
#endif
131+
#endif
132+
#define MP_SIEVE_BASE_SIEVE_SIZE ((mp_sieve_prime)MP_SIEVE_PRIME_MAX_SQRT)
133+
134+
135+
107136
/* feature detection macro */
108137
#ifdef _MSC_VER
109138
/* Prevent false positive: not enough arguments for function-like macro invocation */

0 commit comments

Comments
 (0)