Merge pull request #304 from libtom/deprecate-expt-root
deprecate mp_expt_d and mp_n_root in favor of mp_expt and mp_root
This commit is contained in:
commit
584405ff8e
@ -195,14 +195,38 @@ mp_err mp_prime_is_divisible(const mp_int *a, mp_bool *result)
|
||||
mp_err mp_expt_d_ex(const mp_int *a, mp_digit b, mp_int *c, int fast)
|
||||
{
|
||||
(void)fast;
|
||||
return mp_expt_d(a, b, c);
|
||||
if (b > MP_MIN(MP_DIGIT_MAX, UINT32_MAX)) {
|
||||
return MP_VAL;
|
||||
}
|
||||
return mp_expt_u32(a, (uint32_t)b, c);
|
||||
}
|
||||
#endif
|
||||
#ifdef BN_MP_EXPT_D_C
|
||||
mp_err mp_expt_d(const mp_int *a, mp_digit b, mp_int *c)
|
||||
{
|
||||
if (b > MP_MIN(MP_DIGIT_MAX, UINT32_MAX)) {
|
||||
return MP_VAL;
|
||||
}
|
||||
return mp_expt_u32(a, (uint32_t)b, c);
|
||||
}
|
||||
#endif
|
||||
#ifdef BN_MP_N_ROOT_EX_C
|
||||
mp_err mp_n_root_ex(const mp_int *a, mp_digit b, mp_int *c, int fast)
|
||||
{
|
||||
(void)fast;
|
||||
return mp_n_root(a, b, c);
|
||||
if (b > MP_MIN(MP_DIGIT_MAX, UINT32_MAX)) {
|
||||
return MP_VAL;
|
||||
}
|
||||
return mp_root_u32(a, (uint32_t)b, c);
|
||||
}
|
||||
#endif
|
||||
#ifdef BN_MP_N_ROOT_C
|
||||
mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c)
|
||||
{
|
||||
if (b > MP_MIN(MP_DIGIT_MAX, UINT32_MAX)) {
|
||||
return MP_VAL;
|
||||
}
|
||||
return mp_root_u32(a, (uint32_t)b, c);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
@ -1,10 +1,10 @@
|
||||
#include "tommath_private.h"
|
||||
#ifdef BN_MP_EXPT_D_C
|
||||
#ifdef BN_MP_EXPT_U32_C
|
||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||
/* SPDX-License-Identifier: Unlicense */
|
||||
|
||||
/* calculate c = a**b using a square-multiply algorithm */
|
||||
mp_err mp_expt_d(const mp_int *a, mp_digit b, mp_int *c)
|
||||
mp_err mp_expt_u32(const mp_int *a, uint32_t b, mp_int *c)
|
||||
{
|
||||
mp_err err;
|
||||
|
@ -70,7 +70,7 @@ static mp_digit s_digit_ilogb(mp_digit base, mp_digit n)
|
||||
as is the output of mp_bitcount.
|
||||
With the same problem: max size is INT_MAX * MP_DIGIT not INT_MAX only!
|
||||
*/
|
||||
mp_err mp_ilogb(const mp_int *a, mp_digit base, mp_int *c)
|
||||
mp_err mp_ilogb(const mp_int *a, uint32_t base, mp_int *c)
|
||||
{
|
||||
mp_err err;
|
||||
mp_ord cmp;
|
||||
@ -145,7 +145,7 @@ mp_err mp_ilogb(const mp_int *a, mp_digit base, mp_int *c)
|
||||
err = MP_VAL;
|
||||
goto LBL_ERR;
|
||||
}
|
||||
if ((err = mp_expt_d(&bi_base, (mp_digit)(mid - low), &t)) != MP_OKAY) {
|
||||
if ((err = mp_expt_u32(&bi_base, (uint32_t)(mid - low), &t)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
if ((err = mp_mul(&bracket_low, &t, &bracket_mid)) != MP_OKAY) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "tommath_private.h"
|
||||
#ifdef BN_MP_N_ROOT_C
|
||||
#ifdef BN_MP_ROOT_U32_C
|
||||
/* LibTomMath, multiple-precision integer library -- Tom St Denis */
|
||||
/* SPDX-License-Identifier: Unlicense */
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
* which will find the root in log(N) time where
|
||||
* each step involves a fair bit.
|
||||
*/
|
||||
mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c)
|
||||
mp_err mp_root_u32(const mp_int *a, uint32_t b, mp_int *c)
|
||||
{
|
||||
mp_int t1, t2, t3, a_;
|
||||
mp_ord cmp;
|
||||
@ -36,26 +36,17 @@ mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c)
|
||||
ilog2 = mp_count_bits(a);
|
||||
|
||||
/*
|
||||
GCC and clang do not understand the sizeof tests and complain,
|
||||
icc (the Intel compiler) seems to understand, at least it doesn't complain.
|
||||
2 of 3 say these macros are necessary, so there they are.
|
||||
If "b" is larger than INT_MAX it is also larger than
|
||||
log_2(n) because the bit-length of the "n" is measured
|
||||
with an int and hence the root is always < 2 (two).
|
||||
*/
|
||||
#if ( !(defined MP_8BIT) && !(defined MP_16BIT) )
|
||||
/*
|
||||
The type of mp_digit might be larger than an int.
|
||||
If "b" is larger than INT_MAX it is also larger than
|
||||
log_2(n) because the bit-length of the "n" is measured
|
||||
with an int and hence the root is always < 2 (two).
|
||||
*/
|
||||
if (sizeof(mp_digit) >= sizeof(int)) {
|
||||
if (b > (mp_digit)(INT_MAX/2)) {
|
||||
mp_set(c, 1uL);
|
||||
c->sign = a->sign;
|
||||
err = MP_OKAY;
|
||||
goto LBL_ERR;
|
||||
}
|
||||
if (b > (uint32_t)(INT_MAX/2)) {
|
||||
mp_set(c, 1uL);
|
||||
c->sign = a->sign;
|
||||
err = MP_OKAY;
|
||||
goto LBL_ERR;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* "b" is smaller than INT_MAX, we can cast safely */
|
||||
if (ilog2 < (int)b) {
|
||||
mp_set(c, 1uL);
|
||||
@ -84,7 +75,7 @@ mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c)
|
||||
/* t2 = t1 - ((t1**b - a) / (b * t1**(b-1))) */
|
||||
|
||||
/* t3 = t1**(b-1) */
|
||||
if ((err = mp_expt_d(&t1, b - 1u, &t3)) != MP_OKAY) {
|
||||
if ((err = mp_expt_u32(&t1, b - 1u, &t3)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
/* numerator */
|
||||
@ -124,7 +115,7 @@ mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c)
|
||||
/* result can be off by a few so check */
|
||||
/* Loop beneath can overshoot by one if found root is smaller than actual root */
|
||||
for (;;) {
|
||||
if ((err = mp_expt_d(&t1, b, &t2)) != MP_OKAY) {
|
||||
if ((err = mp_expt_u32(&t1, b, &t2)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
cmp = mp_cmp(&t2, &a_);
|
||||
@ -142,7 +133,7 @@ mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c)
|
||||
}
|
||||
/* correct overshoot from above or from recurrence */
|
||||
for (;;) {
|
||||
if ((err = mp_expt_d(&t1, b, &t2)) != MP_OKAY) {
|
||||
if ((err = mp_expt_u32(&t1, b, &t2)) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
if (mp_cmp(&t2, &a_) == MP_GT) {
|
38
demo/test.c
38
demo/test.c
@ -760,7 +760,7 @@ static int test_mp_sqrt(void)
|
||||
printf("\nmp_sqrt() error!");
|
||||
goto LBL_ERR;
|
||||
}
|
||||
mp_n_root(&a, 2uL, &c);
|
||||
mp_root_u32(&a, 2uL, &c);
|
||||
if (mp_cmp_mag(&b, &c) != MP_EQ) {
|
||||
printf("mp_sqrt() bad result!\n");
|
||||
goto LBL_ERR;
|
||||
@ -1364,8 +1364,10 @@ static mp_err s_rs(const mp_int *a, int radix, int *size)
|
||||
static int test_mp_ilogb(void)
|
||||
{
|
||||
mp_int a, lb;
|
||||
mp_digit d, base;
|
||||
mp_digit d;
|
||||
uint32_t base;
|
||||
int size;
|
||||
const uint32_t max_base = MP_MIN(UINT32_MAX, MP_DIGIT_MAX);
|
||||
|
||||
if (mp_init_multi(&a, &lb, NULL) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
@ -1377,11 +1379,11 @@ static int test_mp_ilogb(void)
|
||||
1 x MP_VAL
|
||||
*/
|
||||
mp_set(&a, 42uL);
|
||||
base = 0uL;
|
||||
base = 0u;
|
||||
if (mp_ilogb(&a, base, &lb) != MP_VAL) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
base = 1uL;
|
||||
base = 1u;
|
||||
if (mp_ilogb(&a, base, &lb) != MP_VAL) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
@ -1392,7 +1394,7 @@ static int test_mp_ilogb(void)
|
||||
2 2 1
|
||||
2 3 1
|
||||
*/
|
||||
base = 2uL;
|
||||
base = 2u;
|
||||
mp_zero(&a);
|
||||
if (mp_ilogb(&a, base, &lb) != MP_VAL) {
|
||||
goto LBL_ERR;
|
||||
@ -1414,7 +1416,7 @@ static int test_mp_ilogb(void)
|
||||
3 2 0
|
||||
3 3 1
|
||||
*/
|
||||
base = 3uL;
|
||||
base = 3u;
|
||||
mp_zero(&a);
|
||||
if (mp_ilogb(&a, base, &lb) != MP_VAL) {
|
||||
goto LBL_ERR;
|
||||
@ -1437,7 +1439,7 @@ static int test_mp_ilogb(void)
|
||||
if (mp_rand(&a, 10) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
for (base = 2uL; base < 65uL; base++) {
|
||||
for (base = 2u; base < 65u; base++) {
|
||||
if (mp_ilogb(&a, base, &lb) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
@ -1458,7 +1460,7 @@ static int test_mp_ilogb(void)
|
||||
if (mp_rand(&a, 1) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
for (base = 2uL; base < 65uL; base++) {
|
||||
for (base = 2u; base < 65u; base++) {
|
||||
if (mp_ilogb(&a, base, &lb) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
@ -1471,15 +1473,15 @@ static int test_mp_ilogb(void)
|
||||
}
|
||||
}
|
||||
|
||||
/*Test upper edgecase with base MP_MASK and number (MP_MASK/2)*MP_MASK^10 */
|
||||
mp_set(&a, MP_MASK);
|
||||
if (mp_expt_d(&a, 10uL, &a) != MP_OKAY) {
|
||||
/*Test upper edgecase with base UINT32_MAX and number (UINT32_MAX/2)*UINT32_MAX^10 */
|
||||
mp_set(&a, max_base);
|
||||
if (mp_expt_u32(&a, 10uL, &a) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
if (mp_add_d(&a, (MP_MASK>>1), &a) != MP_OKAY) {
|
||||
if (mp_add_d(&a, max_base / 2, &a) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
if (mp_ilogb(&a, MP_MASK, &lb) != MP_OKAY) {
|
||||
if (mp_ilogb(&a, max_base, &lb) != MP_OKAY) {
|
||||
goto LBL_ERR;
|
||||
}
|
||||
if (mp_cmp_d(&lb, 10uL) != MP_EQ) {
|
||||
@ -1626,7 +1628,7 @@ LTM_ERR:
|
||||
}
|
||||
|
||||
/*
|
||||
Cannot test mp_exp(_d) without mp_n_root and vice versa.
|
||||
Cannot test mp_exp(_d) without mp_root and vice versa.
|
||||
So one of the two has to be tested from scratch.
|
||||
|
||||
Numbers generated by
|
||||
@ -1647,7 +1649,7 @@ LTM_ERR:
|
||||
All numbers as strings to simplifiy things, especially for the
|
||||
low-mp branch.
|
||||
*/
|
||||
static int test_mp_n_root(void)
|
||||
static int test_mp_root_u32(void)
|
||||
{
|
||||
mp_int a, c, r;
|
||||
mp_err e;
|
||||
@ -1850,10 +1852,10 @@ static int test_mp_n_root(void)
|
||||
#else
|
||||
for (j = 3; j < 100; j++) {
|
||||
#endif
|
||||
mp_n_root(&a, (mp_digit) j, &c);
|
||||
mp_root_u32(&a, (uint32_t)j, &c);
|
||||
mp_read_radix(&r, root[i][j-3], 10);
|
||||
if (mp_cmp(&r, &c) != MP_EQ) {
|
||||
fprintf(stderr, "mp_n_root failed at input #%d, root #%d\n", i, j);
|
||||
fprintf(stderr, "mp_root_u32 failed at input #%d, root #%d\n", i, j);
|
||||
goto LTM_ERR;
|
||||
}
|
||||
}
|
||||
@ -2063,7 +2065,7 @@ int unit_tests(int argc, char **argv)
|
||||
T(mp_is_square),
|
||||
T(mp_kronecker),
|
||||
T(mp_montgomery_reduce),
|
||||
T(mp_n_root),
|
||||
T(mp_root_u32),
|
||||
T(mp_or),
|
||||
T(mp_prime_is_prime),
|
||||
T(mp_prime_rand),
|
||||
|
@ -433,7 +433,7 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_expt_d.c"
|
||||
RelativePath="bn_mp_expt_u32.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
@ -632,10 +632,6 @@
|
||||
RelativePath="bn_mp_mulmod.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_n_root.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_neg.c"
|
||||
>
|
||||
@ -732,6 +728,10 @@
|
||||
RelativePath="bn_mp_reduce_setup.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_root_u32.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="bn_mp_rshd.c"
|
||||
>
|
||||
|
28
makefile
28
makefile
@ -30,7 +30,7 @@ OBJECTS=bn_cutoffs.o bn_deprecated.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp
|
||||
bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o \
|
||||
bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_decr.o bn_mp_div.o bn_mp_div_2.o \
|
||||
bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_exptmod.o bn_mp_exteuclid.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_u32.o bn_mp_exptmod.o bn_mp_exteuclid.o \
|
||||
bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o bn_mp_get_i32.o bn_mp_get_i64.o bn_mp_get_l.o \
|
||||
bn_mp_get_ll.o bn_mp_get_mag_u32.o bn_mp_get_mag_u64.o bn_mp_get_mag_ul.o bn_mp_get_mag_ull.o \
|
||||
bn_mp_grow.o bn_mp_ilogb.o bn_mp_import.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_i32.o \
|
||||
@ -38,24 +38,24 @@ bn_mp_init_i64.o bn_mp_init_l.o bn_mp_init_ll.o bn_mp_init_multi.o bn_mp_init_se
|
||||
bn_mp_init_u32.o bn_mp_init_u64.o bn_mp_init_ul.o bn_mp_init_ull.o bn_mp_invmod.o bn_mp_is_square.o \
|
||||
bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o \
|
||||
bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o \
|
||||
bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_neg.o bn_mp_or.o \
|
||||
bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o bn_mp_or.o \
|
||||
bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o \
|
||||
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
|
||||
bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
|
||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o \
|
||||
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
|
||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o \
|
||||
bn_mp_set_double.o bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o bn_mp_set_u32.o \
|
||||
bn_mp_set_u64.o bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_signed_rsh.o \
|
||||
bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o \
|
||||
bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \
|
||||
bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o \
|
||||
bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o \
|
||||
bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o bn_s_mp_karatsuba_sqr.o \
|
||||
bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o bn_s_mp_mul_high_digs.o \
|
||||
bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o bn_s_mp_rand_jenkins.o \
|
||||
bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o bn_s_mp_sub.o \
|
||||
bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_root_u32.o bn_mp_rshd.o \
|
||||
bn_mp_set.o bn_mp_set_double.o bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o \
|
||||
bn_mp_set_u32.o bn_mp_set_u64.o bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_bin_size.o \
|
||||
bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o \
|
||||
bn_mp_submod.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o \
|
||||
bn_mp_to_unsigned_bin_n.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o \
|
||||
bn_mp_zero.o bn_prime_tab.o bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o \
|
||||
bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o \
|
||||
bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o \
|
||||
bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o \
|
||||
bn_s_mp_rand_jenkins.o bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o \
|
||||
bn_s_mp_sub.o bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
|
||||
#END_INS
|
||||
|
||||
|
@ -33,7 +33,7 @@ OBJECTS=bn_cutoffs.o bn_deprecated.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp
|
||||
bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o \
|
||||
bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_decr.o bn_mp_div.o bn_mp_div_2.o \
|
||||
bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_exptmod.o bn_mp_exteuclid.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_u32.o bn_mp_exptmod.o bn_mp_exteuclid.o \
|
||||
bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o bn_mp_get_i32.o bn_mp_get_i64.o bn_mp_get_l.o \
|
||||
bn_mp_get_ll.o bn_mp_get_mag_u32.o bn_mp_get_mag_u64.o bn_mp_get_mag_ul.o bn_mp_get_mag_ull.o \
|
||||
bn_mp_grow.o bn_mp_ilogb.o bn_mp_import.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_i32.o \
|
||||
@ -41,24 +41,24 @@ bn_mp_init_i64.o bn_mp_init_l.o bn_mp_init_ll.o bn_mp_init_multi.o bn_mp_init_se
|
||||
bn_mp_init_u32.o bn_mp_init_u64.o bn_mp_init_ul.o bn_mp_init_ull.o bn_mp_invmod.o bn_mp_is_square.o \
|
||||
bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o \
|
||||
bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o \
|
||||
bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_neg.o bn_mp_or.o \
|
||||
bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o bn_mp_or.o \
|
||||
bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o \
|
||||
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
|
||||
bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
|
||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o \
|
||||
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
|
||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o \
|
||||
bn_mp_set_double.o bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o bn_mp_set_u32.o \
|
||||
bn_mp_set_u64.o bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_signed_rsh.o \
|
||||
bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o \
|
||||
bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \
|
||||
bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o \
|
||||
bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o \
|
||||
bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o bn_s_mp_karatsuba_sqr.o \
|
||||
bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o bn_s_mp_mul_high_digs.o \
|
||||
bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o bn_s_mp_rand_jenkins.o \
|
||||
bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o bn_s_mp_sub.o \
|
||||
bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_root_u32.o bn_mp_rshd.o \
|
||||
bn_mp_set.o bn_mp_set_double.o bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o \
|
||||
bn_mp_set_u32.o bn_mp_set_u64.o bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_bin_size.o \
|
||||
bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o \
|
||||
bn_mp_submod.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o \
|
||||
bn_mp_to_unsigned_bin_n.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o \
|
||||
bn_mp_zero.o bn_prime_tab.o bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o \
|
||||
bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o \
|
||||
bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o \
|
||||
bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o \
|
||||
bn_s_mp_rand_jenkins.o bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o \
|
||||
bn_s_mp_sub.o bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
|
||||
HEADERS_PUB=tommath.h
|
||||
HEADERS=tommath_private.h tommath_class.h tommath_superclass.h $(HEADERS_PUB)
|
||||
|
@ -25,7 +25,7 @@ OBJECTS=bn_cutoffs.obj bn_deprecated.obj bn_mp_2expt.obj bn_mp_abs.obj bn_mp_add
|
||||
bn_mp_and.obj bn_mp_clamp.obj bn_mp_clear.obj bn_mp_clear_multi.obj bn_mp_cmp.obj bn_mp_cmp_d.obj bn_mp_cmp_mag.obj \
|
||||
bn_mp_cnt_lsb.obj bn_mp_complement.obj bn_mp_copy.obj bn_mp_count_bits.obj bn_mp_decr.obj bn_mp_div.obj bn_mp_div_2.obj \
|
||||
bn_mp_div_2d.obj bn_mp_div_3.obj bn_mp_div_d.obj bn_mp_dr_is_modulus.obj bn_mp_dr_reduce.obj bn_mp_dr_setup.obj \
|
||||
bn_mp_error_to_string.obj bn_mp_exch.obj bn_mp_export.obj bn_mp_expt_d.obj bn_mp_exptmod.obj bn_mp_exteuclid.obj \
|
||||
bn_mp_error_to_string.obj bn_mp_exch.obj bn_mp_export.obj bn_mp_expt_u32.obj bn_mp_exptmod.obj bn_mp_exteuclid.obj \
|
||||
bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_gcd.obj bn_mp_get_double.obj bn_mp_get_i32.obj bn_mp_get_i64.obj bn_mp_get_l.obj \
|
||||
bn_mp_get_ll.obj bn_mp_get_mag_u32.obj bn_mp_get_mag_u64.obj bn_mp_get_mag_ul.obj bn_mp_get_mag_ull.obj \
|
||||
bn_mp_grow.obj bn_mp_ilogb.obj bn_mp_import.obj bn_mp_incr.obj bn_mp_init.obj bn_mp_init_copy.obj bn_mp_init_i32.obj \
|
||||
@ -33,24 +33,24 @@ bn_mp_init_i64.obj bn_mp_init_l.obj bn_mp_init_ll.obj bn_mp_init_multi.obj bn_mp
|
||||
bn_mp_init_u32.obj bn_mp_init_u64.obj bn_mp_init_ul.obj bn_mp_init_ull.obj bn_mp_invmod.obj bn_mp_is_square.obj \
|
||||
bn_mp_iseven.obj bn_mp_isodd.obj bn_mp_kronecker.obj bn_mp_lcm.obj bn_mp_lshd.obj bn_mp_mod.obj bn_mp_mod_2d.obj \
|
||||
bn_mp_mod_d.obj bn_mp_montgomery_calc_normalization.obj bn_mp_montgomery_reduce.obj bn_mp_montgomery_setup.obj \
|
||||
bn_mp_mul.obj bn_mp_mul_2.obj bn_mp_mul_2d.obj bn_mp_mul_d.obj bn_mp_mulmod.obj bn_mp_n_root.obj bn_mp_neg.obj bn_mp_or.obj \
|
||||
bn_mp_mul.obj bn_mp_mul_2.obj bn_mp_mul_2d.obj bn_mp_mul_d.obj bn_mp_mulmod.obj bn_mp_neg.obj bn_mp_or.obj \
|
||||
bn_mp_prime_fermat.obj bn_mp_prime_frobenius_underwood.obj bn_mp_prime_is_prime.obj \
|
||||
bn_mp_prime_miller_rabin.obj bn_mp_prime_next_prime.obj bn_mp_prime_rabin_miller_trials.obj \
|
||||
bn_mp_prime_rand.obj bn_mp_prime_strong_lucas_selfridge.obj bn_mp_radix_size.obj bn_mp_radix_smap.obj \
|
||||
bn_mp_rand.obj bn_mp_read_radix.obj bn_mp_read_signed_bin.obj bn_mp_read_unsigned_bin.obj bn_mp_reduce.obj \
|
||||
bn_mp_reduce_2k.obj bn_mp_reduce_2k_l.obj bn_mp_reduce_2k_setup.obj bn_mp_reduce_2k_setup_l.obj \
|
||||
bn_mp_reduce_is_2k.obj bn_mp_reduce_is_2k_l.obj bn_mp_reduce_setup.obj bn_mp_rshd.obj bn_mp_set.obj \
|
||||
bn_mp_set_double.obj bn_mp_set_i32.obj bn_mp_set_i64.obj bn_mp_set_l.obj bn_mp_set_ll.obj bn_mp_set_u32.obj \
|
||||
bn_mp_set_u64.obj bn_mp_set_ul.obj bn_mp_set_ull.obj bn_mp_shrink.obj bn_mp_signed_bin_size.obj bn_mp_signed_rsh.obj \
|
||||
bn_mp_sqr.obj bn_mp_sqrmod.obj bn_mp_sqrt.obj bn_mp_sqrtmod_prime.obj bn_mp_sub.obj bn_mp_sub_d.obj bn_mp_submod.obj \
|
||||
bn_mp_to_signed_bin.obj bn_mp_to_signed_bin_n.obj bn_mp_to_unsigned_bin.obj bn_mp_to_unsigned_bin_n.obj \
|
||||
bn_mp_toradix.obj bn_mp_toradix_n.obj bn_mp_unsigned_bin_size.obj bn_mp_xor.obj bn_mp_zero.obj bn_prime_tab.obj \
|
||||
bn_s_mp_add.obj bn_s_mp_balance_mul.obj bn_s_mp_exptmod.obj bn_s_mp_exptmod_fast.obj bn_s_mp_get_bit.obj \
|
||||
bn_s_mp_invmod_fast.obj bn_s_mp_invmod_slow.obj bn_s_mp_karatsuba_mul.obj bn_s_mp_karatsuba_sqr.obj \
|
||||
bn_s_mp_montgomery_reduce_fast.obj bn_s_mp_mul_digs.obj bn_s_mp_mul_digs_fast.obj bn_s_mp_mul_high_digs.obj \
|
||||
bn_s_mp_mul_high_digs_fast.obj bn_s_mp_prime_is_divisible.obj bn_s_mp_rand_jenkins.obj \
|
||||
bn_s_mp_rand_platform.obj bn_s_mp_reverse.obj bn_s_mp_sqr.obj bn_s_mp_sqr_fast.obj bn_s_mp_sub.obj \
|
||||
bn_s_mp_toom_mul.obj bn_s_mp_toom_sqr.obj
|
||||
bn_mp_reduce_is_2k.obj bn_mp_reduce_is_2k_l.obj bn_mp_reduce_setup.obj bn_mp_root_u32.obj bn_mp_rshd.obj \
|
||||
bn_mp_set.obj bn_mp_set_double.obj bn_mp_set_i32.obj bn_mp_set_i64.obj bn_mp_set_l.obj bn_mp_set_ll.obj \
|
||||
bn_mp_set_u32.obj bn_mp_set_u64.obj bn_mp_set_ul.obj bn_mp_set_ull.obj bn_mp_shrink.obj bn_mp_signed_bin_size.obj \
|
||||
bn_mp_signed_rsh.obj bn_mp_sqr.obj bn_mp_sqrmod.obj bn_mp_sqrt.obj bn_mp_sqrtmod_prime.obj bn_mp_sub.obj bn_mp_sub_d.obj \
|
||||
bn_mp_submod.obj bn_mp_to_signed_bin.obj bn_mp_to_signed_bin_n.obj bn_mp_to_unsigned_bin.obj \
|
||||
bn_mp_to_unsigned_bin_n.obj bn_mp_toradix.obj bn_mp_toradix_n.obj bn_mp_unsigned_bin_size.obj bn_mp_xor.obj \
|
||||
bn_mp_zero.obj bn_prime_tab.obj bn_s_mp_add.obj bn_s_mp_balance_mul.obj bn_s_mp_exptmod.obj bn_s_mp_exptmod_fast.obj \
|
||||
bn_s_mp_get_bit.obj bn_s_mp_invmod_fast.obj bn_s_mp_invmod_slow.obj bn_s_mp_karatsuba_mul.obj \
|
||||
bn_s_mp_karatsuba_sqr.obj bn_s_mp_montgomery_reduce_fast.obj bn_s_mp_mul_digs.obj bn_s_mp_mul_digs_fast.obj \
|
||||
bn_s_mp_mul_high_digs.obj bn_s_mp_mul_high_digs_fast.obj bn_s_mp_prime_is_divisible.obj \
|
||||
bn_s_mp_rand_jenkins.obj bn_s_mp_rand_platform.obj bn_s_mp_reverse.obj bn_s_mp_sqr.obj bn_s_mp_sqr_fast.obj \
|
||||
bn_s_mp_sub.obj bn_s_mp_toom_mul.obj bn_s_mp_toom_sqr.obj
|
||||
|
||||
HEADERS_PUB=tommath.h
|
||||
HEADERS=tommath_private.h tommath_class.h tommath_superclass.h $(HEADERS_PUB)
|
||||
|
@ -27,7 +27,7 @@ OBJECTS=bn_cutoffs.o bn_deprecated.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp
|
||||
bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o \
|
||||
bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_decr.o bn_mp_div.o bn_mp_div_2.o \
|
||||
bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_exptmod.o bn_mp_exteuclid.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_u32.o bn_mp_exptmod.o bn_mp_exteuclid.o \
|
||||
bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o bn_mp_get_i32.o bn_mp_get_i64.o bn_mp_get_l.o \
|
||||
bn_mp_get_ll.o bn_mp_get_mag_u32.o bn_mp_get_mag_u64.o bn_mp_get_mag_ul.o bn_mp_get_mag_ull.o \
|
||||
bn_mp_grow.o bn_mp_ilogb.o bn_mp_import.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_i32.o \
|
||||
@ -35,24 +35,24 @@ bn_mp_init_i64.o bn_mp_init_l.o bn_mp_init_ll.o bn_mp_init_multi.o bn_mp_init_se
|
||||
bn_mp_init_u32.o bn_mp_init_u64.o bn_mp_init_ul.o bn_mp_init_ull.o bn_mp_invmod.o bn_mp_is_square.o \
|
||||
bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o \
|
||||
bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o \
|
||||
bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_neg.o bn_mp_or.o \
|
||||
bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o bn_mp_or.o \
|
||||
bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o \
|
||||
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
|
||||
bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
|
||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o \
|
||||
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
|
||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o \
|
||||
bn_mp_set_double.o bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o bn_mp_set_u32.o \
|
||||
bn_mp_set_u64.o bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_signed_rsh.o \
|
||||
bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o \
|
||||
bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \
|
||||
bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o \
|
||||
bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o \
|
||||
bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o bn_s_mp_karatsuba_sqr.o \
|
||||
bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o bn_s_mp_mul_high_digs.o \
|
||||
bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o bn_s_mp_rand_jenkins.o \
|
||||
bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o bn_s_mp_sub.o \
|
||||
bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_root_u32.o bn_mp_rshd.o \
|
||||
bn_mp_set.o bn_mp_set_double.o bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o \
|
||||
bn_mp_set_u32.o bn_mp_set_u64.o bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_bin_size.o \
|
||||
bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o \
|
||||
bn_mp_submod.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o \
|
||||
bn_mp_to_unsigned_bin_n.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o \
|
||||
bn_mp_zero.o bn_prime_tab.o bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o \
|
||||
bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o \
|
||||
bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o \
|
||||
bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o \
|
||||
bn_s_mp_rand_jenkins.o bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o \
|
||||
bn_s_mp_sub.o bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
|
||||
#END_INS
|
||||
|
||||
|
@ -34,7 +34,7 @@ OBJECTS=bn_cutoffs.o bn_deprecated.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp
|
||||
bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o \
|
||||
bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_decr.o bn_mp_div.o bn_mp_div_2.o \
|
||||
bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_exptmod.o bn_mp_exteuclid.o \
|
||||
bn_mp_error_to_string.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_u32.o bn_mp_exptmod.o bn_mp_exteuclid.o \
|
||||
bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_double.o bn_mp_get_i32.o bn_mp_get_i64.o bn_mp_get_l.o \
|
||||
bn_mp_get_ll.o bn_mp_get_mag_u32.o bn_mp_get_mag_u64.o bn_mp_get_mag_ul.o bn_mp_get_mag_ull.o \
|
||||
bn_mp_grow.o bn_mp_ilogb.o bn_mp_import.o bn_mp_incr.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_i32.o \
|
||||
@ -42,24 +42,24 @@ bn_mp_init_i64.o bn_mp_init_l.o bn_mp_init_ll.o bn_mp_init_multi.o bn_mp_init_se
|
||||
bn_mp_init_u32.o bn_mp_init_u64.o bn_mp_init_ul.o bn_mp_init_ull.o bn_mp_invmod.o bn_mp_is_square.o \
|
||||
bn_mp_iseven.o bn_mp_isodd.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o \
|
||||
bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o \
|
||||
bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_neg.o bn_mp_or.o \
|
||||
bn_mp_mul.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o bn_mp_or.o \
|
||||
bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_prime.o \
|
||||
bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o bn_mp_prime_rabin_miller_trials.o \
|
||||
bn_mp_prime_rand.o bn_mp_prime_strong_lucas_selfridge.o bn_mp_radix_size.o bn_mp_radix_smap.o \
|
||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce.o \
|
||||
bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o \
|
||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o \
|
||||
bn_mp_set_double.o bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o bn_mp_set_u32.o \
|
||||
bn_mp_set_u64.o bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_signed_rsh.o \
|
||||
bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o \
|
||||
bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \
|
||||
bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o \
|
||||
bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o bn_s_mp_get_bit.o \
|
||||
bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o bn_s_mp_karatsuba_sqr.o \
|
||||
bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o bn_s_mp_mul_high_digs.o \
|
||||
bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o bn_s_mp_rand_jenkins.o \
|
||||
bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o bn_s_mp_sub.o \
|
||||
bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_root_u32.o bn_mp_rshd.o \
|
||||
bn_mp_set.o bn_mp_set_double.o bn_mp_set_i32.o bn_mp_set_i64.o bn_mp_set_l.o bn_mp_set_ll.o \
|
||||
bn_mp_set_u32.o bn_mp_set_u64.o bn_mp_set_ul.o bn_mp_set_ull.o bn_mp_shrink.o bn_mp_signed_bin_size.o \
|
||||
bn_mp_signed_rsh.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o \
|
||||
bn_mp_submod.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o \
|
||||
bn_mp_to_unsigned_bin_n.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o \
|
||||
bn_mp_zero.o bn_prime_tab.o bn_s_mp_add.o bn_s_mp_balance_mul.o bn_s_mp_exptmod.o bn_s_mp_exptmod_fast.o \
|
||||
bn_s_mp_get_bit.o bn_s_mp_invmod_fast.o bn_s_mp_invmod_slow.o bn_s_mp_karatsuba_mul.o \
|
||||
bn_s_mp_karatsuba_sqr.o bn_s_mp_montgomery_reduce_fast.o bn_s_mp_mul_digs.o bn_s_mp_mul_digs_fast.o \
|
||||
bn_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs_fast.o bn_s_mp_prime_is_divisible.o \
|
||||
bn_s_mp_rand_jenkins.o bn_s_mp_rand_platform.o bn_s_mp_reverse.o bn_s_mp_sqr.o bn_s_mp_sqr_fast.o \
|
||||
bn_s_mp_sub.o bn_s_mp_toom_mul.o bn_s_mp_toom_sqr.o
|
||||
|
||||
HEADERS_PUB=tommath.h
|
||||
HEADERS=tommath_private.h tommath_class.h tommath_superclass.h $(HEADERS_PUB)
|
||||
|
@ -34,7 +34,7 @@ EXPORTS
|
||||
mp_error_to_string
|
||||
mp_exch
|
||||
mp_export
|
||||
mp_expt_d
|
||||
mp_expt_u32
|
||||
mp_exptmod
|
||||
mp_exteuclid
|
||||
mp_fread
|
||||
@ -88,7 +88,6 @@ EXPORTS
|
||||
mp_mul_2d
|
||||
mp_mul_d
|
||||
mp_mulmod
|
||||
mp_n_root
|
||||
mp_neg
|
||||
mp_or
|
||||
mp_prime_fermat
|
||||
@ -112,6 +111,7 @@ EXPORTS
|
||||
mp_reduce_is_2k
|
||||
mp_reduce_is_2k_l
|
||||
mp_reduce_setup
|
||||
mp_root_u32
|
||||
mp_rshd
|
||||
mp_set
|
||||
mp_set_double
|
||||
|
32
tommath.h
32
tommath.h
@ -363,6 +363,9 @@ mp_err mp_div_2d(const mp_int *a, int b, mp_int *c, mp_int *d) MP_WUR;
|
||||
/* b = a/2 */
|
||||
mp_err mp_div_2(const mp_int *a, mp_int *b) MP_WUR;
|
||||
|
||||
/* a/3 => 3c + d == a */
|
||||
mp_err mp_div_3(const mp_int *a, mp_int *c, mp_digit *d) MP_WUR;
|
||||
|
||||
/* c = a * 2**b, implemented as c = a << b */
|
||||
mp_err mp_mul_2d(const mp_int *a, int b, mp_int *c) MP_WUR;
|
||||
|
||||
@ -456,6 +459,12 @@ mp_err mp_div(const mp_int *a, const mp_int *b, mp_int *c, mp_int *d) MP_WUR;
|
||||
/* c = a mod b, 0 <= c < b */
|
||||
mp_err mp_mod(const mp_int *a, const mp_int *b, mp_int *c) MP_WUR;
|
||||
|
||||
/* Increment "a" by one like "a++". Changes input! */
|
||||
mp_err mp_incr(mp_int *a) MP_WUR;
|
||||
|
||||
/* Decrement "a" by one like "a--". Changes input! */
|
||||
mp_err mp_decr(mp_int *a) MP_WUR;
|
||||
|
||||
/* ---> single digit functions <--- */
|
||||
|
||||
/* compare against a single digit */
|
||||
@ -464,28 +473,15 @@ mp_ord mp_cmp_d(const mp_int *a, mp_digit b) MP_WUR;
|
||||
/* c = a + b */
|
||||
mp_err mp_add_d(const mp_int *a, mp_digit b, mp_int *c) MP_WUR;
|
||||
|
||||
/* Increment "a" by one like "a++". Changes input! */
|
||||
mp_err mp_incr(mp_int *a) MP_WUR;
|
||||
|
||||
/* c = a - b */
|
||||
mp_err mp_sub_d(const mp_int *a, mp_digit b, mp_int *c) MP_WUR;
|
||||
|
||||
/* Decrement "a" by one like "a--". Changes input! */
|
||||
mp_err mp_decr(mp_int *a) MP_WUR;
|
||||
|
||||
/* c = a * b */
|
||||
mp_err mp_mul_d(const mp_int *a, mp_digit b, mp_int *c) MP_WUR;
|
||||
|
||||
/* a/b => cb + d == a */
|
||||
mp_err mp_div_d(const mp_int *a, mp_digit b, mp_int *c, mp_digit *d) MP_WUR;
|
||||
|
||||
/* a/3 => 3c + d == a */
|
||||
mp_err mp_div_3(const mp_int *a, mp_int *c, mp_digit *d) MP_WUR;
|
||||
|
||||
/* c = a**b */
|
||||
mp_err mp_expt_d(const mp_int *a, mp_digit b, mp_int *c) MP_WUR;
|
||||
MP_DEPRECATED(mp_expt_d) mp_err mp_expt_d_ex(const mp_int *a, mp_digit b, mp_int *c, int fast) MP_WUR;
|
||||
|
||||
/* c = a mod b, 0 <= c < b */
|
||||
mp_err mp_mod_d(const mp_int *a, mp_digit b, mp_digit *c) MP_WUR;
|
||||
|
||||
@ -519,7 +515,8 @@ mp_err mp_lcm(const mp_int *a, const mp_int *b, mp_int *c) MP_WUR;
|
||||
*
|
||||
* returns error if a < 0 and b is even
|
||||
*/
|
||||
mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c) MP_WUR;
|
||||
mp_err mp_root_u32(const mp_int *a, uint32_t b, mp_int *c) MP_WUR;
|
||||
MP_DEPRECATED(mp_root_u32) mp_err mp_n_root(const mp_int *a, mp_digit b, mp_int *c) MP_WUR;
|
||||
MP_DEPRECATED(mp_n_root_ex) mp_err mp_n_root_ex(const mp_int *a, mp_digit b, mp_int *c, int fast) MP_WUR;
|
||||
|
||||
/* special sqrt algo */
|
||||
@ -681,7 +678,12 @@ MP_DEPRECATED(mp_prime_rand) mp_err mp_prime_random_ex(mp_int *a, int t, int siz
|
||||
mp_err mp_prime_rand(mp_int *a, int t, int size, int flags) MP_WUR;
|
||||
|
||||
/* Integer logarithm to integer base */
|
||||
mp_err mp_ilogb(const mp_int *a, mp_digit base, mp_int *c) MP_WUR;
|
||||
mp_err mp_ilogb(const mp_int *a, uint32_t base, mp_int *c) MP_WUR;
|
||||
|
||||
/* c = a**b */
|
||||
mp_err mp_expt_u32(const mp_int *a, uint32_t b, mp_int *c) MP_WUR;
|
||||
MP_DEPRECATED(mp_expt_u32) mp_err mp_expt_d(const mp_int *a, mp_digit b, mp_int *c) MP_WUR;
|
||||
MP_DEPRECATED(mp_expt_d) mp_err mp_expt_d_ex(const mp_int *a, mp_digit b, mp_int *c, int fast) MP_WUR;
|
||||
|
||||
/* ---> radix conversion <--- */
|
||||
int mp_count_bits(const mp_int *a) MP_WUR;
|
||||
|
@ -41,7 +41,7 @@
|
||||
# define BN_MP_ERROR_TO_STRING_C
|
||||
# define BN_MP_EXCH_C
|
||||
# define BN_MP_EXPORT_C
|
||||
# define BN_MP_EXPT_D_C
|
||||
# define BN_MP_EXPT_U32_C
|
||||
# define BN_MP_EXPTMOD_C
|
||||
# define BN_MP_EXTEUCLID_C
|
||||
# define BN_MP_FREAD_C
|
||||
@ -91,7 +91,6 @@
|
||||
# define BN_MP_MUL_2D_C
|
||||
# define BN_MP_MUL_D_C
|
||||
# define BN_MP_MULMOD_C
|
||||
# define BN_MP_N_ROOT_C
|
||||
# define BN_MP_NEG_C
|
||||
# define BN_MP_OR_C
|
||||
# define BN_MP_PRIME_FERMAT_C
|
||||
@ -116,6 +115,7 @@
|
||||
# define BN_MP_REDUCE_IS_2K_C
|
||||
# define BN_MP_REDUCE_IS_2K_L_C
|
||||
# define BN_MP_REDUCE_SETUP_C
|
||||
# define BN_MP_ROOT_U32_C
|
||||
# define BN_MP_RSHD_C
|
||||
# define BN_MP_SET_C
|
||||
# define BN_MP_SET_DOUBLE_C
|
||||
@ -187,6 +187,7 @@
|
||||
# define BN_MP_EXPTMOD_FAST_C
|
||||
# define BN_MP_EXPT_D_C
|
||||
# define BN_MP_EXPT_D_EX_C
|
||||
# define BN_MP_EXPT_U32_C
|
||||
# define BN_MP_GET_BIT_C
|
||||
# define BN_MP_GET_INT_C
|
||||
# define BN_MP_GET_LONG_C
|
||||
@ -207,6 +208,7 @@
|
||||
# define BN_MP_PRIME_IS_DIVISIBLE_C
|
||||
# define BN_MP_PRIME_RANDOM_EX_C
|
||||
# define BN_MP_RAND_DIGIT_C
|
||||
# define BN_MP_ROOT_U32_C
|
||||
# define BN_MP_SET_INT_C
|
||||
# define BN_MP_SET_LONG_C
|
||||
# define BN_MP_SET_LONG_LONG_C
|
||||
@ -391,7 +393,7 @@
|
||||
# define BN_MP_INIT_COPY_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_EXPT_D_C)
|
||||
#if defined(BN_MP_EXPT_U32_C)
|
||||
# define BN_MP_CLEAR_C
|
||||
# define BN_MP_INIT_COPY_C
|
||||
# define BN_MP_MUL_C
|
||||
@ -488,7 +490,7 @@
|
||||
# define BN_MP_COPY_C
|
||||
# define BN_MP_COUNT_BITS_C
|
||||
# define BN_MP_EXCH_C
|
||||
# define BN_MP_EXPT_D_C
|
||||
# define BN_MP_EXPT_U32_C
|
||||
# define BN_MP_INIT_MULTI_C
|
||||
# define BN_MP_MUL_C
|
||||
# define BN_MP_SET_C
|
||||
@ -688,24 +690,6 @@
|
||||
# define BN_MP_MUL_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_N_ROOT_C)
|
||||
# define BN_MP_2EXPT_C
|
||||
# define BN_MP_ADD_D_C
|
||||
# define BN_MP_CLEAR_MULTI_C
|
||||
# define BN_MP_CMP_C
|
||||
# define BN_MP_COPY_C
|
||||
# define BN_MP_COUNT_BITS_C
|
||||
# define BN_MP_DIV_C
|
||||
# define BN_MP_EXCH_C
|
||||
# define BN_MP_EXPT_D_C
|
||||
# define BN_MP_INIT_MULTI_C
|
||||
# define BN_MP_MUL_C
|
||||
# define BN_MP_MUL_D_C
|
||||
# define BN_MP_SET_C
|
||||
# define BN_MP_SUB_C
|
||||
# define BN_MP_SUB_D_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_NEG_C)
|
||||
# define BN_MP_COPY_C
|
||||
#endif
|
||||
@ -929,6 +913,24 @@
|
||||
# define BN_MP_DIV_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_ROOT_U32_C)
|
||||
# define BN_MP_2EXPT_C
|
||||
# define BN_MP_ADD_D_C
|
||||
# define BN_MP_CLEAR_MULTI_C
|
||||
# define BN_MP_CMP_C
|
||||
# define BN_MP_COPY_C
|
||||
# define BN_MP_COUNT_BITS_C
|
||||
# define BN_MP_DIV_C
|
||||
# define BN_MP_EXCH_C
|
||||
# define BN_MP_EXPT_U32_C
|
||||
# define BN_MP_INIT_MULTI_C
|
||||
# define BN_MP_MUL_C
|
||||
# define BN_MP_MUL_D_C
|
||||
# define BN_MP_SET_C
|
||||
# define BN_MP_SUB_C
|
||||
# define BN_MP_SUB_D_C
|
||||
#endif
|
||||
|
||||
#if defined(BN_MP_RSHD_C)
|
||||
# define BN_MP_ZERO_C
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user