1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Remove rscale in bc_raisemod

power is a copy of base and returns early if base->n_scale is non-zero. Since
scale is size_t, it is always greater than or equal to 0, so rscale is always
the value of scale.
This commit is contained in:
Saki Takamachi
2024-04-05 00:03:07 +09:00
parent c2553a28e1
commit 5d91f8761b

View File

@@ -36,7 +36,6 @@
raise_mod_status bc_raisemod(bc_num base, bc_num expo, bc_num mod, bc_num *result, size_t scale)
{
bc_num power, exponent, modulus, parity, temp;
size_t rscale;
/* Check the base for scale digits. */
if (base->n_scale != 0) {
@@ -66,7 +65,6 @@ raise_mod_status bc_raisemod(bc_num base, bc_num expo, bc_num mod, bc_num *resul
bc_init_num(&parity);
/* Do the calculation. */
rscale = MAX(scale, power->n_scale);
if (!bc_compare(modulus, BCG(_one_))) {
bc_free_num (&temp);
temp = bc_new_num (1, scale);
@@ -74,10 +72,10 @@ raise_mod_status bc_raisemod(bc_num base, bc_num expo, bc_num mod, bc_num *resul
while (!bc_is_zero(exponent)) {
(void) bc_divmod(exponent, BCG(_two_), &exponent, &parity, 0);
if (!bc_is_zero(parity)) {
bc_multiply(temp, power, &temp, rscale);
bc_multiply(temp, power, &temp, scale);
(void) bc_modulo(temp, modulus, &temp, scale);
}
bc_multiply(power, power, &power, rscale);
bc_multiply(power, power, &power, scale);
(void) bc_modulo(power, modulus, &power, scale);
}
}