mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-19 05:39:18 +02:00
Merge pull request #460 from jacius/remainder_inf
Raise type error if remainder called with infinity.
This commit is contained in:
commit
d167f90802
1 changed files with 6 additions and 2 deletions
8
bignum.c
8
bignum.c
|
@ -1667,8 +1667,11 @@ sexp sexp_remainder (sexp ctx, sexp a, sexp b) {
|
||||||
#if SEXP_USE_RATIOS
|
#if SEXP_USE_RATIOS
|
||||||
case SEXP_NUM_FLO_RAT:
|
case SEXP_NUM_FLO_RAT:
|
||||||
#endif
|
#endif
|
||||||
if (sexp_flonum_value(a) != trunc(sexp_flonum_value(a))) {
|
if (isinf(sexp_flonum_value(a)) ||
|
||||||
|
sexp_flonum_value(a) != trunc(sexp_flonum_value(a))) {
|
||||||
r = sexp_type_exception(ctx, NULL, SEXP_FIXNUM, a);
|
r = sexp_type_exception(ctx, NULL, SEXP_FIXNUM, a);
|
||||||
|
} else if (bt == SEXP_NUM_FLO && isinf(sexp_flonum_value(b))) {
|
||||||
|
r = sexp_type_exception(ctx, NULL, SEXP_FIXNUM, b);
|
||||||
} else {
|
} else {
|
||||||
tmp = sexp_bignum_normalize(sexp_double_to_bignum(ctx, sexp_flonum_value(a)));
|
tmp = sexp_bignum_normalize(sexp_double_to_bignum(ctx, sexp_flonum_value(a)));
|
||||||
tmp = sexp_remainder(ctx, tmp, b);
|
tmp = sexp_remainder(ctx, tmp, b);
|
||||||
|
@ -1691,7 +1694,8 @@ sexp sexp_remainder (sexp ctx, sexp a, sexp b) {
|
||||||
#if SEXP_USE_RATIOS
|
#if SEXP_USE_RATIOS
|
||||||
case SEXP_NUM_RAT_FLO:
|
case SEXP_NUM_RAT_FLO:
|
||||||
#endif
|
#endif
|
||||||
if (sexp_flonum_value(b) != trunc(sexp_flonum_value(b))) {
|
if (isinf(sexp_flonum_value(b)) ||
|
||||||
|
sexp_flonum_value(b) != trunc(sexp_flonum_value(b))) {
|
||||||
r = sexp_type_exception(ctx, NULL, SEXP_FIXNUM, b);
|
r = sexp_type_exception(ctx, NULL, SEXP_FIXNUM, b);
|
||||||
} else {
|
} else {
|
||||||
tmp = sexp_bignum_normalize(sexp_double_to_bignum(ctx, sexp_flonum_value(b)));
|
tmp = sexp_bignum_normalize(sexp_double_to_bignum(ctx, sexp_flonum_value(b)));
|
||||||
|
|
Loading…
Add table
Reference in a new issue