From 884764036bd1622f4e4a255acdf06484a4aeb2b3 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Wed, 11 Jul 2012 23:09:25 +0900 Subject: [PATCH] shortcut multiplication by exact 0 --- opt/bignum.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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);