diff --git a/include/chibi/sexp.h b/include/chibi/sexp.h index dbead7c8..86435616 100644 --- a/include/chibi/sexp.h +++ b/include/chibi/sexp.h @@ -1046,11 +1046,14 @@ SEXP_API sexp sexp_make_unsigned_integer(sexp ctx, sexp_luint_t x); #define sexp_negativep(x) (sexp_exact_negativep(x) || \ (sexp_flonump(x) && sexp_flonum_value(x) < 0)) #define sexp_positivep(x) (!(sexp_negativep(x))) -#define sexp_pedantic_negativep(x) (sexp_exact_negativep(x) || \ - (sexp_flonump(x) && \ - ((sexp_flonum_value(x) < 0) || \ - (sexp_flonum_value(x) == 0 && \ - 1.0 / sexp_flonum_value(x) < 0)))) +#define sexp_pedantic_negativep(x) ( \ + sexp_exact_negativep(x) || \ + (sexp_ratiop(x) && \ + sexp_exact_negativep(sexp_ratio_numerator(x))) || \ + (sexp_flonump(x) && \ + ((sexp_flonum_value(x) < 0) || \ + (sexp_flonum_value(x) == 0 && \ + 1.0 / sexp_flonum_value(x) < 0)))) #if SEXP_USE_BIGNUMS #define sexp_oddp(x) (sexp_fixnump(x) ? sexp_unbox_fixnum(x) & 1 : \