test integer-decode-float on NaN, Infinity, etc.
before you decide your program is correct. I think that
such non-numbers should be "bigfloated" into symbols / gensyms
with appropriate properties.
e.g. NaN - NaN = NaN (not 0).
Complicates matters!
RJF
Camm Maguire wrote:
>Greetings!
>
>Raymond Toy <toy@rtp.ericsson.se> writes:
>
>
>
>>>>>>>"Camm" == Camm Maguire <camm@enhanced.com> writes:
>>>>>>>
>>>>>>>
>> Camm> I don't think this is the case:
>>
>>My apologies. I didn't test it. I used to have problems with gcl's
>>float reader/printer, but I guess you've fixed those. Nice!
>>
>> Camm> OK, will consider after Stavros gets a chance to look into things next
>> Camm> week. Thanks again to all!
>>
>>FWIW, I ran your test function on cmucl. It passes the test case
>>(test-f 1d0 10). Also, there were a couple of minor bugs. float
>>should take the 2nd arg, otherwise it converts to single-float be
>>default. This was messing up cmucl. :-)
>>
>>
>>
>
>Thanks. Just a clarification here, this test also passes with GCL's
>current rationalize, just not (yet) with the proposed improved one.
>
>Take care,
>
>
>
>>(defun test-f (x i)
>> (multiple-value-bind
>> (q r s)
>> (integer-decode-float x)
>> (format t "~S~%" x)
>> (and (eql x (float (* q (expt 2 r)) x))
>> (eql (float (rationalize x) x) x)
>> (if (> i 0)
>> (test-f (float (* (+ q 1) (expt 2 r)) x) (- i 1))
>> t))))
>>
>>Ray
>>
>>
>>
>>
>>
>>
>
>
>