Use FOLD-LEFT instead of REDUCE to do n-ary versions of GCD and LCM --
authorChris Hanson <org/chris-hanson/cph>
Tue, 28 Dec 1993 18:20:48 +0000 (18:20 +0000)
committerChris Hanson <org/chris-hanson/cph>
Tue, 28 Dec 1993 18:20:48 +0000 (18:20 +0000)
REDUCE returns a negative number if there is a single negative
argument, which is incorrect.

v7/src/runtime/arith.scm

index ff8746420296ed9d2f6fde3a344a06ad6ed8afce..56c8e4ed5e4b324f262178a6fca957843b090edd 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Id: arith.scm,v 1.26 1993/02/01 01:31:05 cph Exp $
+$Id: arith.scm,v 1.27 1993/12/28 18:20:48 cph Exp $
 
-Copyright (c) 1989-1992 Massachusetts Institute of Technology
+Copyright (c) 1989-93 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -1834,10 +1834,10 @@ MIT in each case. |#
 (define-integrable integer-divide-remainder cdr)
 
 (define (gcd . integers)
-  (reduce complex:gcd 0 integers))
+  (fold-left complex:gcd 0 integers))
 
 (define (lcm . integers)
-  (reduce complex:lcm 1 integers))
+  (fold-left complex:lcm 1 integers))
 
 (define numerator complex:numerator)
 (define denominator complex:denominator)