|
36 | 36 | raise_mod_status bc_raisemod(bc_num base, bc_num expo, bc_num mod, bc_num *result, size_t scale)
|
37 | 37 | {
|
38 | 38 | bc_num power, exponent, modulus, parity, temp;
|
39 |
| - size_t rscale; |
40 | 39 |
|
41 | 40 | /* Check the base for scale digits. */
|
42 | 41 | if (base->n_scale != 0) {
|
@@ -66,18 +65,17 @@ raise_mod_status bc_raisemod(bc_num base, bc_num expo, bc_num mod, bc_num *resul
|
66 | 65 | bc_init_num(&parity);
|
67 | 66 |
|
68 | 67 | /* Do the calculation. */
|
69 |
| - rscale = MAX(scale, power->n_scale); |
70 | 68 | if (!bc_compare(modulus, BCG(_one_))) {
|
71 | 69 | bc_free_num (&temp);
|
72 | 70 | temp = bc_new_num (1, scale);
|
73 | 71 | } else {
|
74 | 72 | while (!bc_is_zero(exponent)) {
|
75 | 73 | (void) bc_divmod(exponent, BCG(_two_), &exponent, &parity, 0);
|
76 | 74 | if (!bc_is_zero(parity)) {
|
77 |
| - bc_multiply(temp, power, &temp, rscale); |
| 75 | + bc_multiply(temp, power, &temp, scale); |
78 | 76 | (void) bc_modulo(temp, modulus, &temp, scale);
|
79 | 77 | }
|
80 |
| - bc_multiply(power, power, &power, rscale); |
| 78 | + bc_multiply(power, power, &power, scale); |
81 | 79 | (void) bc_modulo(power, modulus, &power, scale);
|
82 | 80 | }
|
83 | 81 | }
|
|
0 commit comments