From: Thomas Crowley
Subject: Bug in Gabriel benchmark?
Date: 
Message-ID: <7172@allegra.UUCP>
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