commit 26a20b6b4a247bd92db41b515df4fc5c463f23f9
parent df7144108f8a1436e5d4ce57ade488d832ac99c3
Author: Christian Grothoff <grothoff@gnunet.org>
Date: Wed, 6 Dec 2023 23:29:57 +0900
-remove get base info
Diffstat:
1 file changed, 6 insertions(+), 65 deletions(-)
diff --git a/source/montgomery.cl b/source/montgomery.cl
@@ -371,8 +371,6 @@ int
mpz_tstbit (const mpz_t d, mp_bitcnt_t bit_index);
mp_bitcnt_t
mpn_limb_size_in_base_2 (mp_limb_t u);
-size_t
-mpz_sizeinbase (const mpz_t u, int base);
int
mpz_sgn (const mpz_t u);
mp_bitcnt_t
@@ -404,7 +402,6 @@ mpz_addmul_ui (mpz_t r, const mpz_t u, unsigned long int v);
unsigned
mpn_base_power_of_two_p (unsigned b);
void
-mpn_get_base_info (struct mpn_base_info *info, mp_limb_t b);
int isspace_gpu(unsigned char c);
int strlen_c(__global char *c);
mp_size_t mpn_set_str_bits (mp_ptr rp, const unsigned char *sp, size_t sn,
@@ -1867,22 +1864,13 @@ mpn_limb_size_in_base_2 (mp_limb_t u)
}
size_t
-mpz_sizeinbase (const mpz_t u, int base)
+mpz_sizeinbase2 (const mpz_t u)
{
- mp_size_t un, tn;
+ mp_size_t un;
mp_srcptr up;
- //mp_ptr tp;
- mpz_t tp;
mp_bitcnt_t bits;
- struct gmp_div_inverse bi;
- size_t ndigits;
- mpz_init(tp);
-
- assert (base >= 2);
-assert (base <= 62);
-
un = GMP_ABS (u->_mp_size);
if (un == 0)
return 1;
@@ -1890,39 +1878,7 @@ assert (base <= 62);
up = u->_mp_d;
bits = (un - 1) * GMP_LIMB_BITS + mpn_limb_size_in_base_2 (up[un-1]);
- switch (base)
- {
- case 2:
- return bits;
- case 4:
- return (bits + 1) / 2;
- case 8:
- return (bits + 2) / 3;
- case 16:
- return (bits + 3) / 4;
- case 32:
- return (bits + 4) / 5;
- /* FIXME: Do something more clever for the common case of base
- 10. */
- }
-
- //tp = gmp_alloc_limbs (un);
-
- mpn_copyi (tp->_mp_d, up, un);
- mpn_div_qr_1_invert (&bi, base);
-
- tn = un;
- ndigits = 0;
- do
- {
- ndigits++;
- mpn_div_qr_1_preinv (tp->_mp_d, tp->_mp_d, tn, &bi);
- tn -= (tp->_mp_d[tn-1] == 0);
- }
- while (tn > 0);
-
- //gmp_free_limbs (tp, un);
- return ndigits;
+ return bits;
}
int
@@ -2302,21 +2258,6 @@ mpz_addmul_ui (mpz_t r, const mpz_t u, unsigned long int v)
}
-void
-mpn_get_base_info (struct mpn_base_info *info, mp_limb_t b)
-{
- mp_limb_t m;
- mp_limb_t p;
- unsigned exp;
-
- m = GMP_LIMB_MAX / b;
- for (exp = 1, p = b; p <= m; exp++)
- p *= b;
-
- info->exp = exp;
- info->bb = p;
-}
-
// Montgomery multiplication
@@ -2377,7 +2318,7 @@ void mont_prepare(mpz_t b, mpz_t e, mpz_t m,
mpz_init_set_si(one,1);
mpz_init_set_si(oo,0);
- //unsigned long len = mpz_sizeinbase(m,2);
+ //unsigned long len = mpz_sizeinbase2(m);
unsigned long len = 2049;
@@ -2429,7 +2370,7 @@ void mont_modexp(mpz_t ret,
mpz_init_set(aa, M);
mpz_init_set(xx, a);
- int k = (int)mpz_sizeinbase(e,2);
+ int k = (int)mpz_sizeinbase2(e);
for (int i = k - 1; i >= 0; i--) {
@@ -2489,7 +2430,7 @@ void mont_product(mpz_t ret,
mpz_add(ab, ab, mn);
- unsigned long sz = mpz_sizeinbase(r,2) - 1;
+ unsigned long sz = mpz_sizeinbase2(r) - 1;
mpz_tdiv_q_2exp(u, ab, sz); // this is essentially a bit shift, instead of a division
if (mpz_cmp(u, n) >= 0)