thc@allegra.UUCP (Thomas Crowley) (08/25/87)
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