Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!seismo!rutgers!princeton!allegra!thc From: thc@allegra.UUCP (Thomas Crowley) Newsgroups: comp.lang.lisp Subject: Bug in Gabriel benchmark? Message-ID: <7172@allegra.UUCP> Date: Tue, 25-Aug-87 14:15:05 EDT Article-I.D.: allegra.7172 Posted: Tue Aug 25 14:15:05 1987 Date-Received: Thu, 27-Aug-87 03:04:38 EDT Reply-To: thc@allegra.UUCP (Thomas Crowley) Organization: AT&T Bell Laboratories, Murray Hill Lines: 28 Keywords: bug Gabriel Common Lisp benchmark Summary: Bug in polynomial benchmark While running the Gabriel polynomial manipulation benchmark, I noticed that the result is incorrect. My question is, Does anyone out there know if Gabriel ran his benchmarks exactly as presented in his book, "Performance and Evaluation of Lisp Systems.", or did the bug creep in to the code while editing the book? As far as the benchmark is concerned, the actual result is irrelevant, but I'd like to be sure that I'm running the same benchmark. FYI, the problem *appears* to be in the function PTIMES3 in the code segment: (defun ptimes3 (y) ... b (if (or (null (cdr u)) (< (caddr u) e)) (rplacd u (cons e (cons c (cdr u)))) (go e)) (cond ((pzerop (setq c (pplus (caddr u) c))) ...) ...) ...) I believe IF should be WHEN (i.e. (GO E) is not an else clause, but part of an implicit PROGN). Also, PZEROP is a macro which evaluates its argument twice, causing C to be set incorrectly. Any information would be greatly appreciated. tom crowley