[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Testing the reference implementation

This page is part of the web mail archives of SRFI 77 from before July 7th, 2015. The new archives for SRFI 77 contain all messages, not just those from before July 7th, 2015.

On Nov 20, 2005, at 9:04 AM, Michael Sperber wrote:

This error is due to

(/ (make-rectangular (r5rs->number 0) (r5rs->number 1)) (r5rs- >number 0))

raising an exception.  Your program converts the result into
("ERROR"), which your program then feeds to =.  (In PRINT-NUMBER,
expression (= x x).)  The error message is admittedly obscure---it
means that there's no way to convert the arguments of = into suitable


Thanks for the fix to number->string.

Otherwise, something is really fishy here.

First, I ran the code in Gambit-C 4.0b15 after defining r5rs->number to be values, and it ran to completion.

Then I looked more closely at the output from scheme-48.  It begins with

r6rs/will> (load "complex-test.scm")
(+ +0+0i +0+0i)        =>         +0+0i
(- +0+0i +0+0i)        =>         +0+0i
(* +0+0i +0+0i)        =>         +0+0i
(/ +0+0i +0+0i)        =>         ERROR

So in this case it had no problem seeing that there was an error and reporting it correctly. After a while we get

(/ +0+0i +NAN.+NAN.i) => +NAN.+NAN.i ;;; cycled through all values for second argument (+ +0+0i +0+0i) => +0+0i ;;; first argument should be +0+1i from here down
(- +0+0i +0+0i)        =>         +0+0i
(* +0+0i +0+0i)        =>         +0+0i
(/ +0+0i +0+0i)        =>
Error: contagion error
       #{Procedure 9414 (=/2 in generic-arithmetic/will)}
1 r6rs/will>

First of all, the first argument here is supposed to be +0+1i; why it's printing as +0+0i I don't know.

Secondly, I don't know why the result of the expression does not compare eq? to error-object; ("ERROR") shouldn't be passed to print- number in any case. I get the same results when I test it with equal?.