71 power = bc_copy_num(base);
73 while ((exponent & 1) == 0) {
74 pwrscale = 2 * pwrscale;
76 exponent = exponent >> 1;
78 temp = bc_copy_num(power);
80 exponent = exponent >> 1;
83 while (exponent > 0) {
84 pwrscale = 2 * pwrscale;
86 if ((exponent & 1) == 1) {
87 calcscale = pwrscale + calcscale;
90 exponent = exponent >> 1;
104 (*result)->
n_scale =
MIN(scale, (*result)->n_scale);
117 if (exponent == 0 && (expo->
n_len > 1 || expo->
n_value[0] != 0)) {
118 assert(
false &&
"Exponent is not well formed in internal call");
assert(mixed $assertion, Throwable|string|null $description=null)
bc_num bc_square(bc_num n1, size_t scale)
long bc_num2long(bc_num num)
bool bc_divide(bc_num n1, bc_num n2, bc_num *quot, size_t scale)
struct bc_struct * bc_num
#define bc_multiply_ex(n1, n2, result, scale_min)
bool bc_raise(bc_num base, long exponent, bc_num *result, size_t scale)
void bc_square_ex(bc_num n1, bc_num *result, size_t scale_min)
void bc_raise_bc_exponent(bc_num base, bc_num expo, bc_num *result, size_t scale)