version 1.42, 2012/03/08 08:15:37 |
version 1.43, 2012/11/06 15:46:46 |
|
|
return; |
return; |
} |
} |
|
|
if (p->scale != 0) |
if (p->scale != 0) { |
warnx("Runtime warning: non-zero scale in exponent"); |
BIGNUM *i, *f; |
|
i = BN_new(); |
|
bn_checkp(i); |
|
f = BN_new(); |
|
bn_checkp(f); |
|
split_number(p, i, f); |
|
if (!BN_is_zero(f)) |
|
warnx("Runtime warning: non-zero fractional part in exponent"); |
|
BN_free(i); |
|
BN_free(f); |
|
} |
|
|
normalize(p, 0); |
normalize(p, 0); |
|
|
neg = false; |
neg = false; |
if (BN_cmp(p->number, &zero) < 0) { |
if (BN_is_negative(p->number)) { |
neg = true; |
neg = true; |
negate(p); |
negate(p); |
scale = bmachine.scale; |
scale = bmachine.scale; |
|
|
bn_checkp(ctx); |
bn_checkp(ctx); |
scale_number(one, r->scale + scale); |
scale_number(one, r->scale + scale); |
normalize(r, scale); |
normalize(r, scale); |
bn_check(BN_div(r->number, NULL, one, r->number, ctx)); |
|
|
if (BN_is_zero(r->number)) |
|
warnx("divide by zero"); |
|
else |
|
bn_check(BN_div(r->number, NULL, one, |
|
r->number, ctx)); |
BN_free(one); |
BN_free(one); |
BN_CTX_free(ctx); |
BN_CTX_free(ctx); |
} else |
} else |