Email list hosting service & mailing list manager


Re: reading NaNs Alan Watson 25 Oct 2005 23:13 UTC

Aubrey Jaffer wrote:
> Having a universal read/write representation for arbitrary bit
> patterms prevents including information like the procedure causing the
> NaN in its printed representation.

I don't see this. Can you elaborate?

BTW, I neither favor nor oppose reading or writing of arbitrary bit
patterns. I am favor of being able to specify the precision of the NaN,
though.

>  | However, I still think we need a read syntax.  Suppose program A
>  | calculates a value and writes it to a file and program B reads the
>  | value from the file and uses it.  Is is not useful for program A to
>  | be able to communicate to program B that it got a NaN?
>
> [...]
>
> If program A writes out its state, it would be useful to see that NaNs
> were computed.  It gives operators a chance to capture the use case
> which provoked the error.  If the program state is very valuable, then
> it can be repaired manually.
>
> But if program B reads its initial state from the file, its reading of
> NaNs puts errors into its state which can propagate and corrupt it.

Um, how about program B doing:

   (let ((x (read)))
     (if (nan? x)
       (display "Help! Help! Program A is feeding me NaNs!")))

Sure, if you don't check your input, you can be screwed, but what's new
there?

Another example. Astronomical detectors tend to have a fair number of
bad pixels. We normally deal with these by associating a binary "bad
pixel map" with each image. The images are initially fixnums, but after
initial processing they are converted to flonums. It is a lot simpler to
simply replace the bad pixels in the processed images with NaNs rather
than continuing to work with the bad pixel maps. I want to be able to
archive processed images, so I need to be able to read and write NaNs.
(Okay, this is a bit of a cheat, because the data are written in a
binary format, but my point is the same: reading a NaN is not
necessarily an error.)

Regards,

Alan
--
Dr Alan Watson
Centro de Radioastronomía y Astrofísica
Universidad Astronómico Nacional de México