Skip to content

Commit

Permalink
add s_mp_floor_ilog2()
Browse files Browse the repository at this point in the history
instead of all those copies

Signed-off-by: Steffen Jaeckel <[email protected]>
  • Loading branch information
sjaeckel authored and czurnieden committed Jun 21, 2023
1 parent f05f62b commit eea3a5f
Show file tree
Hide file tree
Showing 13 changed files with 144 additions and 70 deletions.
20 changes: 20 additions & 0 deletions libtommath_VS2008.vcproj
Original file line number Diff line number Diff line change
Expand Up @@ -832,6 +832,18 @@
RelativePath="s_mp_exptmod_fast.c"
>
</File>
<File
RelativePath="s_mp_faster_read_radix.c"
>
</File>
<File
RelativePath="s_mp_faster_to_radix.c"
>
</File>
<File
RelativePath="s_mp_floor_ilog2.c"
>
</File>
<File
RelativePath="s_mp_fp_log.c"
>
Expand Down Expand Up @@ -908,6 +920,14 @@
RelativePath="s_mp_rand_platform.c"
>
</File>
<File
RelativePath="s_mp_slower_read_radix.c"
>
</File>
<File
RelativePath="s_mp_slower_to_radix.c"
>
</File>
<File
RelativePath="s_mp_sqr.c"
>
Expand Down
13 changes: 7 additions & 6 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,13 @@ mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o
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 \
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 \
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 \
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_fp_log.o s_mp_fp_log_d.o \
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 \
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 \
s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o \
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 \
s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_faster_read_radix.o \
s_mp_faster_to_radix.o s_mp_floor_ilog2.o s_mp_fp_log.o s_mp_fp_log_d.o 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 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 s_mp_mul_toom.o \
s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o s_mp_radix_size_overestimate.o \
s_mp_rand_platform.o s_mp_slower_read_radix.o s_mp_slower_to_radix.o s_mp_sqr.o s_mp_sqr_comba.o \
s_mp_sqr_karatsuba.o s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o

#END_INS

Expand Down
13 changes: 7 additions & 6 deletions makefile.mingw
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,13 @@ mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o
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 \
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 \
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 \
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_fp_log.o s_mp_fp_log_d.o \
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 \
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 \
s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o \
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 \
s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_faster_read_radix.o \
s_mp_faster_to_radix.o s_mp_floor_ilog2.o s_mp_fp_log.o s_mp_fp_log_d.o 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 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 s_mp_mul_toom.o \
s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o s_mp_radix_size_overestimate.o \
s_mp_rand_platform.o s_mp_slower_read_radix.o s_mp_slower_to_radix.o s_mp_sqr.o s_mp_sqr_comba.o \
s_mp_sqr_karatsuba.o s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o

HEADERS_PUB=tommath.h
HEADERS=tommath_private.h tommath_class.h tommath_superclass.h tommath_cutoffs.h $(HEADERS_PUB)
Expand Down
13 changes: 7 additions & 6 deletions makefile.msvc
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,13 @@ mp_reduce_setup.obj mp_root_n.obj mp_rshd.obj mp_sbin_size.obj mp_set.obj mp_set
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 \
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 \
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 \
s_mp_div_school.obj s_mp_div_small.obj s_mp_exptmod.obj s_mp_exptmod_fast.obj s_mp_fp_log.obj s_mp_fp_log_d.obj \
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 \
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 \
s_mp_mul_toom.obj s_mp_prime_is_divisible.obj s_mp_prime_tab.obj s_mp_radix_map.obj \
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 \
s_mp_sqr_toom.obj s_mp_sub.obj s_mp_zero_buf.obj s_mp_zero_digs.obj
s_mp_div_school.obj s_mp_div_small.obj s_mp_exptmod.obj s_mp_exptmod_fast.obj s_mp_faster_read_radix.obj \
s_mp_faster_to_radix.obj s_mp_floor_ilog2.obj s_mp_fp_log.obj s_mp_fp_log_d.obj 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 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 s_mp_mul_toom.obj \
s_mp_prime_is_divisible.obj s_mp_prime_tab.obj s_mp_radix_map.obj s_mp_radix_size_overestimate.obj \
s_mp_rand_platform.obj s_mp_slower_read_radix.obj s_mp_slower_to_radix.obj s_mp_sqr.obj s_mp_sqr_comba.obj \
s_mp_sqr_karatsuba.obj s_mp_sqr_toom.obj s_mp_sub.obj s_mp_zero_buf.obj s_mp_zero_digs.obj

HEADERS_PUB=tommath.h
HEADERS=tommath_private.h tommath_class.h tommath_superclass.h tommath_cutoffs.h $(HEADERS_PUB)
Expand Down
13 changes: 7 additions & 6 deletions makefile.shared
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,13 @@ mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o
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 \
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 \
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 \
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_fp_log.o s_mp_fp_log_d.o \
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 \
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 \
s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o \
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 \
s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_faster_read_radix.o \
s_mp_faster_to_radix.o s_mp_floor_ilog2.o s_mp_fp_log.o s_mp_fp_log_d.o 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 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 s_mp_mul_toom.o \
s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o s_mp_radix_size_overestimate.o \
s_mp_rand_platform.o s_mp_slower_read_radix.o s_mp_slower_to_radix.o s_mp_sqr.o s_mp_sqr_comba.o \
s_mp_sqr_karatsuba.o s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o

#END_INS

Expand Down
13 changes: 7 additions & 6 deletions makefile.unix
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,13 @@ mp_reduce_setup.o mp_root_n.o mp_rshd.o mp_sbin_size.o mp_set.o mp_set_double.o
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 \
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 \
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 \
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_fp_log.o s_mp_fp_log_d.o \
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 \
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 \
s_mp_mul_toom.o s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o \
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 \
s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o
s_mp_div_school.o s_mp_div_small.o s_mp_exptmod.o s_mp_exptmod_fast.o s_mp_faster_read_radix.o \
s_mp_faster_to_radix.o s_mp_floor_ilog2.o s_mp_fp_log.o s_mp_fp_log_d.o 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 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 s_mp_mul_toom.o \
s_mp_prime_is_divisible.o s_mp_prime_tab.o s_mp_radix_map.o s_mp_radix_size_overestimate.o \
s_mp_rand_platform.o s_mp_slower_read_radix.o s_mp_slower_to_radix.o s_mp_sqr.o s_mp_sqr_comba.o \
s_mp_sqr_karatsuba.o s_mp_sqr_toom.o s_mp_sub.o s_mp_zero_buf.o s_mp_zero_digs.o


HEADERS_PUB=tommath.h
Expand Down
12 changes: 1 addition & 11 deletions mp_prime_is_prime.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,6 @@
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
/* SPDX-License-Identifier: Unlicense */

/* portable integer log of two with small footprint */
static unsigned int s_floor_ilog2(int value)
{
unsigned int r = 0;
while ((value >>= 1) != 0) {
r++;
}
return r;
}

mp_err mp_prime_is_prime(const mp_int *a, int t, bool *result)
{
mp_int b;
Expand Down Expand Up @@ -186,7 +176,7 @@ mp_err mp_prime_is_prime(const mp_int *a, int t, bool *result)
* Hence the ugly type-fiddling in the following code.
*/
size_a = mp_count_bits(a);
mask = (1u << s_floor_ilog2(size_a)) - 1u;
mask = (1u << s_mp_floor_ilog2((unsigned int)size_a)) - 1u;
/*
Assuming the General Rieman hypothesis (never thought to write that in a
comment) the upper bound can be lowered to 2*(log a)^2.
Expand Down
17 changes: 4 additions & 13 deletions s_mp_faster_read_radix.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,11 @@ static const uint8_t s_read_radix_cutoff[65] = { 0, 0,
18, 17, 17, 17, 17, 17, 17 /* 58 .. 64 */
};

/* This is in mp_prime_is_prime.c and can be reused */
static int s_floor_ilog2(int value)
{
int r = 0;
while ((value >>= 1) != 0) {
r++;
}
return r;
}

mp_err s_mp_faster_read_radix(mp_int *a, const char *str, size_t start, size_t end, int radix)
{
size_t len, mid;
mp_int A, B, m;
mp_digit radix_ = (mp_digit)radix;
mp_err err = MP_OKAY;

len = end - start;
Expand All @@ -42,7 +33,7 @@ mp_err s_mp_faster_read_radix(mp_int *a, const char *str, size_t start, size_t e

mid = len / 2u;

if ((err = mp_init_set(&m, (mp_digit)radix)) != MP_OKAY) {
if ((err = mp_init_set(&m, radix_)) != MP_OKAY) {
return err;
}
if ((err = mp_init_multi(&A, &B, NULL)) != MP_OKAY) {
Expand All @@ -53,8 +44,8 @@ mp_err s_mp_faster_read_radix(mp_int *a, const char *str, size_t start, size_t e
if ((err = s_mp_slower_read_radix(&A, str, start, start + mid + 1, radix)) != MP_OKAY) goto LTM_ERR;
if ((err = s_mp_slower_read_radix(&B, str, start + mid +1, end, radix)) != MP_OKAY) goto LTM_ERR;

if (MP_IS_2EXPT((unsigned int)radix)) {
if ((err = mp_mul_2d(&A, (int)(((len - mid) - 1u) * (size_t)s_floor_ilog2(radix)), &A)) != MP_OKAY)goto LTM_ERR;
if (MP_IS_2EXPT(radix_)) {
if ((err = mp_mul_2d(&A, (int)(((len - mid) - 1u) * s_mp_floor_ilog2(radix_)), &A)) != MP_OKAY) goto LTM_ERR;
} else {
if ((err = mp_expt_n(&m, (int)((len - mid) - 1u), &m)) != MP_OKAY) goto LTM_ERR;
if ((err = mp_mul(&A, &m, &A)) != MP_OKAY) goto LTM_ERR;
Expand Down
15 changes: 15 additions & 0 deletions s_mp_floor_ilog2.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#include "tommath_private.h"
#ifdef S_MP_FLOOR_ILOG2_C
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
/* SPDX-License-Identifier: Unlicense */

size_t s_mp_floor_ilog2(mp_word value)
{
size_t r = 0u;
while ((value >>= 1) != 0u) {
r++;
}
return r;
}

#endif
11 changes: 1 addition & 10 deletions s_mp_fp_log_d.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,13 @@
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
/* SPDX-License-Identifier: Unlicense */

static mp_word s_mp_flog2_mp_word_d(mp_word value)
{
mp_word r = 0u;
while ((value >>= 1) != 0u) {
r++;
}
return r;
}

/* Fixed point bitwise logarithm base two of "x" with precision "p" */
static mp_err s_mp_fp_log_fraction_d(mp_word x, int p, mp_word *c)
{
mp_word b, L_out, L, a_bar, twoep;
int i;

L = s_mp_flog2_mp_word_d(x);
L = s_mp_floor_ilog2(x);

if ((L + (mp_word)p) > MP_UPPER_LIMIT_FIXED_LOG) {
return MP_VAL;
Expand Down
5 changes: 5 additions & 0 deletions sources.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,9 @@ s_mp_div_school.c
s_mp_div_small.c
s_mp_exptmod.c
s_mp_exptmod_fast.c
s_mp_faster_read_radix.c
s_mp_faster_to_radix.c
s_mp_floor_ilog2.c
s_mp_fp_log.c
s_mp_fp_log_d.c
s_mp_get_bit.c
Expand All @@ -151,6 +154,8 @@ s_mp_prime_tab.c
s_mp_radix_map.c
s_mp_radix_size_overestimate.c
s_mp_rand_platform.c
s_mp_slower_read_radix.c
s_mp_slower_to_radix.c
s_mp_sqr.c
s_mp_sqr_comba.c
s_mp_sqr_karatsuba.c
Expand Down
68 changes: 62 additions & 6 deletions tommath_class.h
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,9 @@
# define S_MP_DIV_SMALL_C
# define S_MP_EXPTMOD_C
# define S_MP_EXPTMOD_FAST_C
# define S_MP_FASTER_READ_RADIX_C
# define S_MP_FASTER_TO_RADIX_C
# define S_MP_FLOOR_ILOG2_C
# define S_MP_FP_LOG_C
# define S_MP_FP_LOG_D_C
# define S_MP_GET_BIT_C
Expand All @@ -160,6 +163,8 @@
# define S_MP_RADIX_MAP_C
# define S_MP_RADIX_SIZE_OVERESTIMATE_C
# define S_MP_RAND_PLATFORM_C
# define S_MP_SLOWER_READ_RADIX_C
# define S_MP_SLOWER_TO_RADIX_C
# define S_MP_SQR_C
# define S_MP_SQR_COMBA_C
# define S_MP_SQR_KARATSUBA_C
Expand Down Expand Up @@ -647,6 +652,7 @@
# define MP_RAND_C
# define MP_READ_RADIX_C
# define MP_SET_C
# define S_MP_FLOOR_ILOG2_C
# define S_MP_PRIME_IS_DIVISIBLE_C
#endif

Expand Down Expand Up @@ -734,9 +740,10 @@
#endif

#if defined(MP_READ_RADIX_C)
# define MP_ADD_D_C
# define MP_MUL_D_C
# define MP_ZERO_C
# define S_MP_FASTER_READ_RADIX_C
# define S_MP_SLOWER_READ_RADIX_C
# define S_MP_STRLEN_C
#endif

#if defined(MP_REDUCE_C)
Expand Down Expand Up @@ -931,9 +938,8 @@
#endif

#if defined(MP_TO_RADIX_C)
# define MP_CLEAR_C
# define MP_DIV_D_C
# define MP_INIT_COPY_C
# define S_MP_FASTER_TO_RADIX_C
# define S_MP_SLOWER_TO_RADIX_C
#endif

#if defined(MP_TO_SBIN_C)
Expand Down Expand Up @@ -1069,6 +1075,44 @@
# define S_MP_MONTGOMERY_REDUCE_COMBA_C
#endif

#if defined(S_MP_FASTER_READ_RADIX_C)
# define MP_ADD_C
# define MP_CLEAR_C
# define MP_CLEAR_MULTI_C
# define MP_EXPT_N_C
# define MP_INIT_MULTI_C
# define MP_INIT_SET_C
# define MP_MUL_2D_C
# define MP_MUL_C
# define S_MP_FLOOR_ILOG2_C
# define S_MP_SLOWER_READ_RADIX_C
#endif

#if defined(S_MP_FASTER_TO_RADIX_C)
# define MP_2EXPT_C
# define MP_ADD_C
# define MP_ADD_D_C
# define MP_CLEAR_C
# define MP_CLEAR_MULTI_C
# define MP_CMP_C
# define MP_COUNT_BITS_C
# define MP_DIV_2D_C
# define MP_DIV_C
# define MP_EXPT_N_C
# define MP_INIT_C
# define MP_INIT_I32_C
# define MP_INIT_MULTI_C
# define MP_MUL_C
# define MP_SUB_C
# define MP_SUB_D_C
# define S_MP_SLOWER_TO_RADIX_C
# define S_MP_TO_RADIX_RECURSIVE_C
# define S_MP_ZERO_BUF_C
#endif

#if defined(S_MP_FLOOR_ILOG2_C)
#endif

#if defined(S_MP_FP_LOG_C)
# define MP_2EXPT_C
# define MP_ADD_C
Expand All @@ -1091,7 +1135,7 @@
# define MP_DIV_2D_C
# define MP_GET_I64_C
# define MP_INIT_C
# define S_MP_FLOG2_MP_WORD_D_C
# define S_MP_FLOOR_ILOG2_C
# define S_MP_FP_LOG_FRACTION_D_C
#endif

Expand Down Expand Up @@ -1234,6 +1278,18 @@
#if defined(S_MP_RAND_PLATFORM_C)
#endif

#if defined(S_MP_SLOWER_READ_RADIX_C)
# define MP_ADD_D_C
# define MP_MUL_D_C
# define MP_ZERO_C
#endif

#if defined(S_MP_SLOWER_TO_RADIX_C)
# define MP_CLEAR_C
# define MP_DIV_D_C
# define MP_INIT_COPY_C
#endif

#if defined(S_MP_SQR_C)
# define MP_CLAMP_C
# define MP_CLEAR_C
Expand Down
1 change: 1 addition & 0 deletions tommath_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@ MP_PRIVATE void s_mp_copy_digs(mp_digit *d, const mp_digit *s, int digits);
MP_PRIVATE void s_mp_zero_buf(void *mem, size_t size);
MP_PRIVATE void s_mp_zero_digs(mp_digit *d, int digits);
MP_PRIVATE mp_err s_mp_radix_size_overestimate(const mp_int *a, const int radix, size_t *size);
MP_PRIVATE size_t s_mp_floor_ilog2(mp_word value);

#define MP_PRECISION_FIXED_LOG ( (int) (((sizeof(mp_word) * CHAR_BIT) / 2) - 1))
#define MP_UPPER_LIMIT_FIXED_LOG ( (int) ( (sizeof(mp_word) * CHAR_BIT) - 1))
Expand Down

0 comments on commit eea3a5f

Please sign in to comment.