From 17928334e0b80cf009df2a5838d6778fe23cf64f Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sat, 10 Dec 2011 10:44:59 -0800 Subject: * lib.c (mulv): Recognize cases to eliminate a wasteful mul call with an initial element of 1. --- ChangeLog | 5 +++++ lib.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 1751e296..64f54f1c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2011-12-10 Kaz Kylheku + + * lib.c (mulv): Recognize cases to eliminate a wasteful mul call + with an initial element of 1. + 2011-12-10 Kaz Kylheku * lib.c (plusv): Recognize cases to eliminate a wasteful plus call diff --git a/lib.c b/lib.c index 6109a5b3..84d61371 100644 --- a/lib.c +++ b/lib.c @@ -881,7 +881,11 @@ val mul(val anum, val bnum) val mulv(val nlist) { - return reduce_left(func_n2(mul), nlist, num(1), nil); + if (!nlist) + return num(1); + else if (!cdr(nlist)) + return car(nlist); + return reduce_left(func_n2(mul), cdr(nlist), car(nlist), nil); } val trunc(val anum, val bnum) -- cgit v1.2.3