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

generating a n-a-n float

I need to generate a not-a-number float. I know I can do this by
catching an error:

  (flet ((generate-nan (signal) (dbg:proceed signal :use-non-trap-result)))
    (let ((d 0.0))
      (scl:condition-bind ((sys:float-invalid-operation #'generate-nan))
         (/ d d))))

[note: I need the variable d because the compiler will otherwise try
to evaluate (/ 0.0 0.0)]

Surely there must be a simpler way. I'd also like control over the
exact values in the various fields.

The reason I need this is as follows: I want to communicate with an
SPlus program via rpc; I want to send homogeneous vectors of data
(floats); and I need to be able to represent missing data (the "NA"
value in SPlus). A very simple way to do this is to use a designated
n-a-n value (which I can pass as a float) to represent "NA".  This is
*much* simpler than messing with heterogeneous data vectors, if only I
could cleanly generate a specific n-a-n.

Replies by email to rshapiro@arris.com. Thanks --