summaryrefslogtreecommitdiff
path: root/ext/bcmath/libbcmath/src/raisemod.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/bcmath/libbcmath/src/raisemod.c')
-rw-r--r--ext/bcmath/libbcmath/src/raisemod.c26
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. */