Commit 8a78a9a1 authored by Liam M. Healy's avatar Liam M. Healy
Browse files

Fix infinite recursion in negation

Do negation by multiplying by -1 rather than finding the negative of
the second argument recursively, which overflows the stack.
parent 821bf3cf
;; Generic functions arithmetic functions on generalized numbers ;; Generic functions arithmetic functions on generalized numbers
;; Liam Healy Tue Feb 9 1999 - 21:38 ;; Liam Healy Tue Feb 9 1999 - 21:38
;; Time-stamp: <2014-01-05 14:14:06EST generic.lisp> ;; Time-stamp: <2014-07-10 10:17:09EDT generic.lisp>
;; Copyright 2011, 2013, 2014 Liam M. Healy ;; Copyright 2011, 2013, 2014 Liam M. Healy
;; Distributed under the terms of the GNU General Public License ;; Distributed under the terms of the GNU General Public License
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
(defun - (&rest args) (defun - (&rest args)
"Subtraction of generalized or regular numbers." "Subtraction of generalized or regular numbers."
(when (member nil args) (warn 'null-argument)) (when (member nil args) (warn 'null-argument))
(if (single args) (-i 0 (first args)) (reduce #'-i args))) (if (single args) (*i -1 (first args)) (reduce #'-i args)))
(defgeneric *i (a b) (defgeneric *i (a b)
(:documentation "Multiplication of generalized or regular numbers.") (:documentation "Multiplication of generalized or regular numbers.")
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment