diff options
Diffstat (limited to 'ext/bcmath/libbcmath/src/raisemod.c')
-rw-r--r-- | ext/bcmath/libbcmath/src/raisemod.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/ext/bcmath/libbcmath/src/raisemod.c b/ext/bcmath/libbcmath/src/raisemod.c index cc9dd35a57..3f6edcc2ac 100644 --- a/ext/bcmath/libbcmath/src/raisemod.c +++ b/ext/bcmath/libbcmath/src/raisemod.c @@ -43,22 +43,20 @@ only the integer part is used. */ int -bc_raisemod (base, expo, mod, result, scale) - bc_num base, expo, mod, *result; - int scale; +bc_raisemod (bc_num base, bc_num expo, bc_num mod, bc_num *result, int scale TSRMLS_DC) { bc_num power, exponent, parity, temp; int rscale; /* Check for correct numbers. */ - if (bc_is_zero(mod)) return -1; + if (bc_is_zero(mod TSRMLS_CC)) return -1; if (bc_is_neg(expo)) return -1; /* Set initial values. */ power = bc_copy_num (base); exponent = bc_copy_num (expo); - temp = bc_copy_num (_one_); - bc_init_num(&parity); + temp = bc_copy_num (BCG(_one_)); + bc_init_num(&parity TSRMLS_CC); /* Check the base for scale digits. */ if (base->n_scale != 0) @@ -68,7 +66,7 @@ bc_raisemod (base, expo, mod, result, scale) if (exponent->n_scale != 0) { bc_rt_warn ("non-zero scale in exponent"); - bc_divide (exponent, _one_, &exponent, 0); /*truncate */ + bc_divide (exponent, BCG(_one_), &exponent, 0 TSRMLS_CC); /*truncate */ } /* Check the modulus for scale digits. */ @@ -77,17 +75,17 @@ bc_raisemod (base, expo, mod, result, scale) /* Do the calculation. */ rscale = MAX(scale, base->n_scale); - while ( !bc_is_zero(exponent) ) + while ( !bc_is_zero(exponent TSRMLS_CC) ) { - (void) bc_divmod (exponent, _two_, &exponent, &parity, 0); - if ( !bc_is_zero(parity) ) + (void) bc_divmod (exponent, BCG(_two_), &exponent, &parity, 0 TSRMLS_CC); + if ( !bc_is_zero(parity TSRMLS_CC) ) { - bc_multiply (temp, power, &temp, rscale); - (void) bc_modulo (temp, mod, &temp, scale); + bc_multiply (temp, power, &temp, rscale TSRMLS_CC); + (void) bc_modulo (temp, mod, &temp, scale TSRMLS_CC); } - bc_multiply (power, power, &power, rscale); - (void) bc_modulo (power, mod, &power, scale); + bc_multiply (power, power, &power, rscale TSRMLS_CC); + (void) bc_modulo (power, mod, &power, scale TSRMLS_CC); } /* Assign the value. */ |