Skip to content

Commit 3be34b1

Browse files
committed
Expansion of mp_log to the full range together with the extension of mp_log to bigint bases.
1 parent 3f10a28 commit 3be34b1

20 files changed

+619
-221
lines changed

.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,16 @@ etc/tune
8585
tommath.tex
8686
libtommath.pc
8787

88+
# ignore files generated by bibtex/biber
89+
83aea75e0c59d1de027747003151d53dcb2a51c9.bib
90+
*.bbl
91+
*.bcf
92+
*.blg
93+
*.loa
94+
*.lol
95+
*.run.xml
96+
97+
8898
# ignore files generated by testme.sh
8999
gcc_errors_*.txt
90100
test_*.txt

demo/test.c

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1516,6 +1516,70 @@ static int test_mp_log_n(void)
15161516
return EXIT_FAILURE;
15171517
}
15181518

1519+
static int test_mp_log(void)
1520+
{
1521+
mp_int a, base, bn, t;
1522+
int lb, lb2, i, j;
1523+
1524+
DOR(mp_init_multi(&a, &base, &bn, &t, NULL));
1525+
1526+
/*
1527+
The small values got tested above for mp_log_n already, leaving the big stuff
1528+
with bases larger than INT_MAX.
1529+
*/
1530+
1531+
/* Edgecases a^b and -1+a^b (floor(log_2(256^129)) = 1032) */
1532+
for (i = 2; i < 256; i++) {
1533+
mp_set_i32(&a,i);
1534+
for (j = 2; j < ((i/2)+1); j++) {
1535+
DO(mp_expt_n(&a, j, &bn));
1536+
mp_set_i32(&base,j);
1537+
/* i^j a perfect power */
1538+
DO(mp_log(&bn, &a, &lb));
1539+
DO(mp_expt_n(&a, lb, &t));
1540+
if (mp_cmp(&t, &bn) != MP_EQ) {
1541+
fprintf(stderr,"FAILURE mp_log for perf. power at i = %d, j = %d\n", i, j);
1542+
goto LBL_ERR;
1543+
}
1544+
/* -1 + i^j */
1545+
DO(mp_decr(&bn));
1546+
DO(mp_log(&bn, &a, &lb2));
1547+
if (lb != (lb2+1)) {
1548+
fprintf(stderr,"FAILURE mp_log for -1 + i^j at i = %d, j = %d\n", i, j);
1549+
goto LBL_ERR;
1550+
}
1551+
}
1552+
}
1553+
1554+
/* Random a, base */
1555+
for (i = 1; i < 256; i++) {
1556+
DO(mp_rand(&a, i));
1557+
for (j = 1; j < ((i/2)+1); j++) {
1558+
DO(mp_rand(&base, j));
1559+
DO(mp_log(&a, &base, &lb));
1560+
DO(mp_expt_n(&base, lb, &bn));
1561+
/* "bn" must be smaller than or equal to "a" at this point. */
1562+
if (mp_cmp(&bn, &a) == MP_GT) {
1563+
fprintf(stderr,"FAILURE mp_log random in GT check");
1564+
goto LBL_ERR;
1565+
}
1566+
DO(mp_mul(&bn, &base, &bn));
1567+
/* "bn" must be bigger than "a" at this point. */
1568+
if (mp_cmp(&bn, &a) != MP_GT) {
1569+
fprintf(stderr,"FAILURE mp_log random in NOT GT check");
1570+
goto LBL_ERR;
1571+
}
1572+
}
1573+
}
1574+
1575+
mp_clear_multi(&a, &base, &bn, &t, NULL);
1576+
return EXIT_SUCCESS;
1577+
LBL_ERR:
1578+
mp_clear_multi(&a, &base, &bn, &t, NULL);
1579+
return EXIT_FAILURE;
1580+
}
1581+
1582+
15191583
static int test_mp_incr(void)
15201584
{
15211585
mp_int a, b;
@@ -2373,6 +2437,7 @@ static int unit_tests(int argc, char **argv)
23732437
T1(mp_get_u64, MP_GET_I64),
23742438
T1(mp_get_ul, MP_GET_L),
23752439
T1(mp_log_n, MP_LOG_N),
2440+
T1(mp_log, MP_LOG),
23762441
T1(mp_incr, MP_ADD_D),
23772442
T1(mp_invmod, MP_INVMOD),
23782443
T1(mp_is_square, MP_IS_SQUARE),

doc/bn.tex

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1946,18 +1946,24 @@ \section{Root Finding}
19461946
\begin{alltt}
19471947
mp_err mp_sqrt(const mp_int *arg, mp_int *ret)
19481948
\end{alltt}
1949-
19501949
\chapter{Logarithm}
19511950
\section{Integer Logarithm}
19521951
A logarithm function for positive integer input \texttt{a, base} computing $\floor{\log_bx}$ such
1953-
that $(\log_b x)^b \le x$.
1952+
that $(\log_b x)^b \le x$. The function \texttt{mp\_log\_n} is just a wrapper that converts \texttt{base}
1953+
to a bigint and calls \texttt{mp\_log}.
1954+
1955+
\index{mp\_log}
1956+
\begin{alltt}
1957+
mp_err mp_log(const mp_int *a, const mp_int *base, int *c)
1958+
\end{alltt}
19541959

19551960
\index{mp\_log\_n}
19561961
\begin{alltt}
19571962
mp_err mp_log_n(const mp_int *a, int base, int *c)
19581963
\end{alltt}
19591964

19601965
\subsection{Example}
1966+
Example given for \texttt{mp\_log\_n} only because the single difference is the type of \texttt{base}.
19611967
\begin{small}
19621968
\begin{alltt}
19631969
#include <stdlib.h>
@@ -1968,15 +1974,15 @@ \subsection{Example}
19681974
19691975
int main(int argc, char **argv)
19701976
{
1971-
mp_int x, output;
1972-
int base;
1977+
mp_int x;
1978+
int base, output;
19731979
mp_err e;
19741980
19751981
if (argc != 3) {
19761982
fprintf(stderr,"Usage %s base x\textbackslash{}n", argv[0]);
19771983
exit(EXIT_FAILURE);
19781984
}
1979-
if ((e = mp_init_multi(&x, &output, NULL)) != MP_OKAY) {
1985+
if ((e = mp_init(&x)) != MP_OKAY) {
19801986
fprintf(stderr,"mp_init failed: \textbackslash{}"%s\textbackslash{}"\textbackslash{}n",
19811987
mp_error_to_string(e));
19821988
exit(EXIT_FAILURE);
@@ -1998,20 +2004,18 @@ \subsection{Example}
19982004
mp_error_to_string(e));
19992005
exit(EXIT_FAILURE);
20002006
}
2007+
printf("%d\n",output);
20012008
2002-
if ((e = mp_fwrite(&output, 10, stdout)) != MP_OKAY) {
2003-
fprintf(stderr,"mp_fwrite failed: \textbackslash{}"%s\textbackslash{}"\textbackslash{}n",
2004-
mp_error_to_string(e));
2005-
exit(EXIT_FAILURE);
2006-
}
2007-
putchar('\textbackslash{}n');
2008-
2009-
mp_clear_multi(&x, &output, NULL);
2009+
mp_clear(&x);
20102010
exit(EXIT_SUCCESS);
20112011
}
20122012
\end{alltt}
20132013
\end{small}
20142014

2015+
2016+
2017+
2018+
20152019
\chapter{Prime Numbers}
20162020

20172021
\section{Fermat Test}

libtommath_VS2008.vcproj

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,10 @@
544544
RelativePath="mp_lcm.c"
545545
>
546546
</File>
547+
<File
548+
RelativePath="mp_log.c"
549+
>
550+
</File>
547551
<File
548552
RelativePath="mp_log_n.c"
549553
>
@@ -829,27 +833,27 @@
829833
>
830834
</File>
831835
<File
832-
RelativePath="s_mp_get_bit.c"
836+
RelativePath="s_mp_flog2_mp_word.c"
833837
>
834838
</File>
835839
<File
836-
RelativePath="s_mp_invmod.c"
840+
RelativePath="s_mp_fp_log.c"
837841
>
838842
</File>
839843
<File
840-
RelativePath="s_mp_invmod_odd.c"
844+
RelativePath="s_mp_get_bit.c"
841845
>
842846
</File>
843847
<File
844-
RelativePath="s_mp_log.c"
848+
RelativePath="s_mp_invmod.c"
845849
>
846850
</File>
847851
<File
848-
RelativePath="s_mp_log_2expt.c"
852+
RelativePath="s_mp_invmod_odd.c"
849853
>
850854
</File>
851855
<File
852-
RelativePath="s_mp_log_d.c"
856+
RelativePath="s_mp_log_2expt.c"
853857
>
854858
</File>
855859
<File

makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ 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 \
36+
mp_invmod.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log.o mp_log_n.o mp_lshd.o mp_mod.o mp_mod_2d.o \
3737
mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o mp_mul_2.o \
3838
mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_or.o mp_pack.o mp_pack_count.o mp_prime_fermat.o \
3939
mp_prime_frobenius_underwood.o mp_prime_is_prime.o mp_prime_miller_rabin.o mp_prime_next_prime.o \
@@ -44,8 +44,8 @@ mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o
4444
mp_set_l.o mp_set_u32.o mp_set_u64.o mp_set_ul.o mp_shrink.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
4545
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 \
4646
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 \
47-
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 \
48-
s_mp_invmod_odd.o s_mp_log.o s_mp_log_2expt.o s_mp_log_d.o s_mp_montgomery_reduce_comba.o s_mp_mul.o \
47+
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_flog2_mp_word.o s_mp_fp_log.o \
48+
s_mp_get_bit.o s_mp_invmod.o s_mp_invmod_odd.o s_mp_log_2expt.o s_mp_montgomery_reduce_comba.o s_mp_mul.o \
4949
s_mp_mul_balance.o s_mp_mul_comba.o s_mp_mul_high.o s_mp_mul_high_comba.o s_mp_mul_karatsuba.o \
5050
s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o \
5151
s_mp_radix_size_overestimate.o s_mp_rand_platform.o s_mp_sqr.o s_mp_sqr_comba.o s_mp_sqr_karatsuba.o \

makefile.mingw

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ 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 \
38+
mp_invmod.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log.o mp_log_n.o mp_lshd.o mp_mod.o mp_mod_2d.o \
3939
mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o mp_mul_2.o \
4040
mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_or.o mp_pack.o mp_pack_count.o mp_prime_fermat.o \
4141
mp_prime_frobenius_underwood.o mp_prime_is_prime.o mp_prime_miller_rabin.o mp_prime_next_prime.o \
@@ -46,8 +46,8 @@ mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o
4646
mp_set_l.o mp_set_u32.o mp_set_u64.o mp_set_ul.o mp_shrink.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
4747
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 \
4848
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 \
49-
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 \
50-
s_mp_invmod_odd.o s_mp_log.o s_mp_log_2expt.o s_mp_log_d.o s_mp_montgomery_reduce_comba.o s_mp_mul.o \
49+
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_flog2_mp_word.o s_mp_fp_log.o \
50+
s_mp_get_bit.o s_mp_invmod.o s_mp_invmod_odd.o s_mp_log_2expt.o s_mp_montgomery_reduce_comba.o s_mp_mul.o \
5151
s_mp_mul_balance.o s_mp_mul_comba.o s_mp_mul_high.o s_mp_mul_high_comba.o s_mp_mul_karatsuba.o \
5252
s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o \
5353
s_mp_radix_size_overestimate.o s_mp_rand_platform.o s_mp_sqr.o s_mp_sqr_comba.o s_mp_sqr_karatsuba.o \

makefile.msvc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ 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 \
34+
mp_invmod.obj mp_is_square.obj mp_kronecker.obj mp_lcm.obj mp_log.obj mp_log_n.obj mp_lshd.obj mp_mod.obj mp_mod_2d.obj \
3535
mp_montgomery_calc_normalization.obj mp_montgomery_reduce.obj mp_montgomery_setup.obj mp_mul.obj mp_mul_2.obj \
3636
mp_mul_2d.obj mp_mul_d.obj mp_mulmod.obj mp_neg.obj mp_or.obj mp_pack.obj mp_pack_count.obj mp_prime_fermat.obj \
3737
mp_prime_frobenius_underwood.obj mp_prime_is_prime.obj mp_prime_miller_rabin.obj mp_prime_next_prime.obj \
@@ -42,8 +42,8 @@ mp_reduce_setup.obj mp_root_n.obj mp_rshd.obj mp_sbin_size.obj mp_set.obj mp_set
4242
mp_set_l.obj mp_set_u32.obj mp_set_u64.obj mp_set_ul.obj mp_shrink.obj mp_signed_rsh.obj mp_sqrmod.obj mp_sqrt.obj \
4343
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 \
4444
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 \
45-
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 \
46-
s_mp_invmod_odd.obj s_mp_log.obj s_mp_log_2expt.obj s_mp_log_d.obj s_mp_montgomery_reduce_comba.obj s_mp_mul.obj \
45+
s_mp_div_school.obj s_mp_div_small.obj s_mp_exptmod.obj s_mp_exptmod_fast.obj s_mp_flog2_mp_word.obj s_mp_fp_log.obj \
46+
s_mp_get_bit.obj s_mp_invmod.obj s_mp_invmod_odd.obj s_mp_log_2expt.obj s_mp_montgomery_reduce_comba.obj s_mp_mul.obj \
4747
s_mp_mul_balance.obj s_mp_mul_comba.obj s_mp_mul_high.obj s_mp_mul_high_comba.obj s_mp_mul_karatsuba.obj \
4848
s_mp_mul_toom.obj s_mp_prime_is_divisible.obj s_mp_prime_tab.obj s_mp_radix_map.obj \
4949
s_mp_radix_size_overestimate.obj s_mp_rand_platform.obj s_mp_sqr.obj s_mp_sqr_comba.obj s_mp_sqr_karatsuba.obj \

makefile.shared

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ 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 \
33+
mp_invmod.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log.o mp_log_n.o mp_lshd.o mp_mod.o mp_mod_2d.o \
3434
mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o mp_mul_2.o \
3535
mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_or.o mp_pack.o mp_pack_count.o mp_prime_fermat.o \
3636
mp_prime_frobenius_underwood.o mp_prime_is_prime.o mp_prime_miller_rabin.o mp_prime_next_prime.o \
@@ -41,8 +41,8 @@ mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o
4141
mp_set_l.o mp_set_u32.o mp_set_u64.o mp_set_ul.o mp_shrink.o mp_signed_rsh.o mp_sqrmod.o mp_sqrt.o \
4242
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 \
4343
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 \
44-
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 \
45-
s_mp_invmod_odd.o s_mp_log.o s_mp_log_2expt.o s_mp_log_d.o s_mp_montgomery_reduce_comba.o s_mp_mul.o \
44+
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_flog2_mp_word.o s_mp_fp_log.o \
45+
s_mp_get_bit.o s_mp_invmod.o s_mp_invmod_odd.o s_mp_log_2expt.o s_mp_montgomery_reduce_comba.o s_mp_mul.o \
4646
s_mp_mul_balance.o s_mp_mul_comba.o s_mp_mul_high.o s_mp_mul_high_comba.o s_mp_mul_karatsuba.o \
4747
s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o \
4848
s_mp_radix_size_overestimate.o s_mp_rand_platform.o s_mp_sqr.o s_mp_sqr_comba.o s_mp_sqr_karatsuba.o \

makefile.unix

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ 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 \
39+
mp_invmod.o mp_is_square.o mp_kronecker.o mp_lcm.o mp_log.o mp_log_n.o mp_lshd.o mp_mod.o mp_mod_2d.o \
4040
mp_montgomery_calc_normalization.o mp_montgomery_reduce.o mp_montgomery_setup.o mp_mul.o mp_mul_2.o \
4141
mp_mul_2d.o mp_mul_d.o mp_mulmod.o mp_neg.o mp_or.o mp_pack.o mp_pack_count.o mp_prime_fermat.o \
4242
mp_prime_frobenius_underwood.o mp_prime_is_prime.o mp_prime_miller_rabin.o mp_prime_next_prime.o \
@@ -47,8 +47,8 @@ mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o
4747
mp_set_l.o mp_set_u32.o mp_set_u64.o mp_set_ul.o mp_shrink.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 \
50-
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 \
51-
s_mp_invmod_odd.o s_mp_log.o s_mp_log_2expt.o s_mp_log_d.o s_mp_montgomery_reduce_comba.o s_mp_mul.o \
50+
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_flog2_mp_word.o s_mp_fp_log.o \
51+
s_mp_get_bit.o s_mp_invmod.o s_mp_invmod_odd.o s_mp_log_2expt.o s_mp_montgomery_reduce_comba.o s_mp_mul.o \
5252
s_mp_mul_balance.o s_mp_mul_comba.o s_mp_mul_high.o s_mp_mul_high_comba.o s_mp_mul_karatsuba.o \
5353
s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o \
5454
s_mp_radix_size_overestimate.o s_mp_rand_platform.o s_mp_sqr.o s_mp_sqr_comba.o s_mp_sqr_karatsuba.o \

0 commit comments

Comments
 (0)