diff --git a/opt/bignum.c b/opt/bignum.c index d0b1d66d..11b619ad 100644 --- a/opt/bignum.c +++ b/opt/bignum.c @@ -1163,7 +1163,7 @@ sexp sexp_mul (sexp ctx, sexp a, sexp b) { r = sexp_make_fixnum(prod); break; case SEXP_NUM_FIX_FLO: - r = sexp_make_flonum(ctx, sexp_fixnum_to_double(a)*sexp_flonum_value(b)); + r = (a==SEXP_ZERO ? a : sexp_make_flonum(ctx, sexp_fixnum_to_double(a)*sexp_flonum_value(b))); break; case SEXP_NUM_FIX_BIG: r = sexp_bignum_fxmul(ctx, NULL, b, sexp_unbox_fixnum(sexp_fx_abs(a)), 0);