Made bcmath extension thread safe.

@Made bcmath extension thread safe. (Sander)
This commit is contained in:
Sander Roobol 2002-11-22 09:25:29 +00:00
parent 64a75d6d77
commit f200f739d8
14 changed files with 186 additions and 202 deletions

View file

@ -44,9 +44,7 @@
only the integer part is used. */
void
bc_raise (num1, num2, result, scale)
bc_num num1, num2, *result;
int scale;
bc_raise (bc_num num1, bc_num num2, bc_num *result, int scale TSRMLS_DC)
{
bc_num temp, power;
long exponent;
@ -66,7 +64,7 @@ bc_raise (num1, num2, result, scale)
if (exponent == 0)
{
bc_free_num (result);
*result = bc_copy_num (_one_);
*result = bc_copy_num (BCG(_one_));
return;
}
@ -89,7 +87,7 @@ bc_raise (num1, num2, result, scale)
while ((exponent & 1) == 0)
{
pwrscale = 2*pwrscale;
bc_multiply (power, power, &power, pwrscale);
bc_multiply (power, power, &power, pwrscale TSRMLS_CC);
exponent = exponent >> 1;
}
temp = bc_copy_num (power);
@ -100,10 +98,10 @@ bc_raise (num1, num2, result, scale)
while (exponent > 0)
{
pwrscale = 2*pwrscale;
bc_multiply (power, power, &power, pwrscale);
bc_multiply (power, power, &power, pwrscale TSRMLS_CC);
if ((exponent & 1) == 1) {
calcscale = pwrscale + calcscale;
bc_multiply (temp, power, &temp, calcscale);
bc_multiply (temp, power, &temp, calcscale TSRMLS_CC);
}
exponent = exponent >> 1;
}
@ -111,7 +109,7 @@ bc_raise (num1, num2, result, scale)
/* Assign the value. */
if (neg)
{
bc_divide (_one_, temp, result, rscale);
bc_divide (BCG(_one_), temp, result, rscale TSRMLS_CC);
bc_free_num (&temp);
}
else