- testing for NaNs

From: Campbell, Robert D \(SELEX\) \(UK Edinburgh\) <"Campbell,>
Date: Mon, 13 Aug 2007 11:37:59 +0100

----boundary-LibPST-iamunique-2123907780_-_-
Content-type: text/plain


Andrew

The code below LOOKs incorrect.

But maybe there is a kinder interpretation.

Bit 51 (ie bit 19 in the CONST below because of the 32-bit shift)
being set indicates a quiet nan, rather than a signalling nan.
So maybe this code recognises only quiet nans, and deliberately did not
bother with signalling nans which, presumably, should cause run-time
exceptions?

I really can't remember quite what I intended.

Cheers Robert
PS - why don't simple questions have simple answers?


>> Andrew
>>
>> My platform independent code ...
>>
>> CONST
>> nanS = {19 .. 30};
>>
>> PROCEDURE IsNan (x : REAL) : BOOLEAN;
>> VAR
>> xSet : SET;
>> BEGIN
>> xSet := SYSTEM.VAL (SET, SHORT (ASH (SYSTEM.VAL
>> (LONGINT, x), -32)));
>> RETURN nanS - xSet = {}
>> END IsNan;
>>
>> I neither guarantee it is BEST, or even correct. I haven't
>> used it for years.
>>
>> Cheers
>>
>> Robert
>>
>>
>> >> -----Original Message-----
>> >> From: blackbox{([at]})nowhere.xy
>> Behalf Of A
>> >> Thomas
>> >> Sent: 13 August 2007 09:04
>> >> To: BlackBox Mailing List
>> >> Subject: [BlackBox] - testing for NaNs
>> >>
>> >> *** WARNING ***
>> >>
>> >> This mail has originated outside your organization,
>> either from an
>> >> external partner or the Global Internet.
>> >> Keep this in mind if you answer this message.
>> >>
>> >> Hei,
>> >>
>> >> I would like to test a REAL to see if it is a NaN. What
>> is the best
>> >> way of doing this? If I use a variant record I can regard
>> the 8 byte
>> >> real as two 4 byte integers (or maybe better two
>> variables of type
>> >> SET)But what bit pattern will indicate a NaN?
>> >>
>> >> Thanks
>> >>
>> >> Andrew
>> >>
>> >> --- BlackBox
>> >> --- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy
>> >>

>> >>
>> >>
>>
>> SELEX Sensors and Airborne Systems Limited Registered
>> Office: Sigma House, Christopher Martin Road, Basildon,
>> Essex SS14 3EL A company registered in England & Wales.
>> Company no. 02426132
>> ********************************************************************
>> This email and any attachments are confidential to the
>> intended recipient and may also be privileged. If you are
>> not the intended recipient please delete it from your system
>> and notify the sender.
>> You should not copy it or use it for any purpose nor
>> disclose or distribute its contents to any other person.
>> ********************************************************************
>>
>> --- BlackBox
>> --- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy
>>
>>

SELEX Sensors and Airborne Systems Limited
Registered Office: Sigma House, Christopher Martin Road, Basildon, Essex SS14 3EL
A company registered in England & Wales. Company no. 02426132
********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy

----boundary-LibPST-iamunique-2123907780_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIFxwYXINCkFuZHJld1xwYXINClxwYXINClRoZSBj
b2RlIGJlbG93IExPT0tzIGluY29ycmVjdC5ccGFyDQpccGFyDQpCdXQgbWF5YmUgdGhlcmUgaXMg
YSBraW5kZXIgaW50ZXJwcmV0YXRpb24uXHBhcg0KXHBhcg0KQml0IDUxIChpZSBiaXQgMTkgaW4g
dGhlIENPTlNUIGJlbG93IGJlY2F1c2Ugb2YgdGhlIDMyLWJpdCBzaGlmdClccGFyDQpiZWluZyBz
ZXQgaW5kaWNhdGVzIGEgcXVpZXQgbmFuLCByYXRoZXIgdGhhbiBhIHNpZ25hbGxpbmcgbmFuLlxw
YXINClNvIG1heWJlIHRoaXMgY29kZSByZWNvZ25pc2VzIG9ubHkgcXVpZXQgbmFucywgYW5kIGRl
bGliZXJhdGVseSBkaWQgbm90XHBhcg0KYm90aGVyIHdpdGggc2lnbmFsbGluZyBuYW5zIHdoaWNo
LCBwcmVzdW1hYmx5LCBzaG91bGQgY2F1c2UgcnVuLXRpbWVccGFyDQpleGNlcHRpb25zP1xwYXIN
ClxwYXINCkkgcmVhbGx5IGNhbid0IHJlbWVtYmVyIHF1aXRlIHdoYXQgSSBpbnRlbmRlZC5ccGFy
DQpccGFyDQpDaGVlcnMgUm9iZXJ0XHBhcg0KUFMgLSB3aHkgZG9uJ3Qgc2ltcGxlIHF1ZXN0aW9u
cyBoYXZlIHNpbXBsZSBhbnN3ZXJzP1xwYXINClxwYXINClxwYXINCj4+IEFuZHJld1xwYXINCj4+
IFxwYXINCj4+IE15IHBsYXRmb3JtIGluZGVwZW5kZW50IGNvZGUgLi4uXHBhcg0KPj4gXHBhcg0K
Pj4gQ09OU1RccGFyDQo+PiAgIG5hblMgID0gIFx7MTkgLi4gMzBcfTtccGFyDQo+PiBccGFyDQo+
PiBQUk9DRURVUkUgIElzTmFuICh4IDogUkVBTCkgOiBCT09MRUFOO1xwYXINCj4+ICAgVkFSXHBh
cg0KPj4gICAgIHhTZXQgIDogIFNFVDtccGFyDQo+PiAgIEJFR0lOXHBhcg0KPj4gICAgIHhTZXQg
IDo9ICBTWVNURU0uVkFMIChTRVQsIFNIT1JUIChBU0ggKFNZU1RFTS5WQUwgXHBhcg0KPj4gKExP
TkdJTlQsIHgpLCAtMzIpKSk7XHBhcg0KPj4gICAgIFJFVFVSTiAgbmFuUyAtIHhTZXQgID0gIFx7
XH1ccGFyDQo+PiAgIEVORCAgSXNOYW47XHBhcg0KPj4gXHBhcg0KPj4gSSBuZWl0aGVyIGd1YXJh
bnRlZSBpdCBpcyBCRVNULCBvciBldmVuIGNvcnJlY3QuIEkgaGF2ZW4ndCBccGFyDQo+PiB1c2Vk
IGl0IGZvciB5ZWFycy5ccGFyDQo+PiBccGFyDQo+PiBDaGVlcnNccGFyDQo+PiBccGFyDQo+PiBS
b2JlcnRccGFyDQo+PiAgXHBhcg0KPj4gXHBhcg0KPj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl
LS0tLS1ccGFyDQo+PiA+PiBGcm9tOiBibGFja2JveEBvYmVyb24uY2ggW21haWx0bzpibGFja2Jv
eEBvYmVyb24uY2hdIE9uIFxwYXINCj4+IEJlaGFsZiBPZiBBIFxwYXINCj4+ID4+IFRob21hc1xw
YXINCj4+ID4+IFNlbnQ6IDEzIEF1Z3VzdCAyMDA3IDA5OjA0XHBhcg0KPj4gPj4gVG86IEJsYWNr
Qm94IE1haWxpbmcgTGlzdFxwYXINCj4+ID4+IFN1YmplY3Q6IFtCbGFja0JveF0gLSB0ZXN0aW5n
IGZvciBOYU5zXHBhcg0KPj4gPj4gXHBhcg0KPj4gPj4gICAgICAgICAgICAgICAqKiogV0FSTklO
RyAqKipccGFyDQo+PiA+PiBccGFyDQo+PiA+PiBUaGlzIG1haWwgaGFzIG9yaWdpbmF0ZWQgb3V0
c2lkZSB5b3VyIG9yZ2FuaXphdGlvbiwgXHBhcg0KPj4gZWl0aGVyIGZyb20gYW4gXHBhcg0KPj4g
Pj4gZXh0ZXJuYWwgcGFydG5lciBvciB0aGUgR2xvYmFsIEludGVybmV0LlxwYXINCj4+ID4+ICAg
ICAgS2VlcCB0aGlzIGluIG1pbmQgaWYgeW91IGFuc3dlciB0aGlzIG1lc3NhZ2UuIFxwYXINCj4+
ID4+IFxwYXINCj4+ID4+IEhlaSxccGFyDQo+PiA+PiBccGFyDQo+PiA+PiBcdGFiIEkgd291bGQg
bGlrZSB0byB0ZXN0IGEgUkVBTCB0byBzZWUgaWYgaXQgaXMgYSBOYU4uIFdoYXQgXHBhcg0KPj4g
aXMgdGhlIGJlc3QgXHBhcg0KPj4gPj4gd2F5IG9mIGRvaW5nIHRoaXM/IElmIEkgdXNlIGEgdmFy
aWFudCByZWNvcmQgSSBjYW4gcmVnYXJkIFxwYXINCj4+IHRoZSA4IGJ5dGUgXHBhcg0KPj4gPj4g
cmVhbCBhcyB0d28gNCBieXRlIGludGVnZXJzIChvciBtYXliZSBiZXR0ZXIgdHdvIFxwYXINCj4+
IHZhcmlhYmxlcyBvZiB0eXBlIFxwYXINCj4+ID4+IFNFVClCdXQgd2hhdCBiaXQgcGF0dGVybiB3
aWxsIGluZGljYXRlIGEgTmFOP1xwYXINCj4+ID4+IFxwYXINCj4+ID4+IFRoYW5rc1xwYXINCj4+
ID4+IFxwYXINCj4+ID4+IFx0YWIgQW5kcmV3XHBhcg0KPj4gPj4gXHBhcg0KPj4gPj4gLS0tIEJs
YWNrQm94XHBhcg0KPj4gPj4gLS0tIHNlbmQgc3ViamVjdCBIRUxQIG9yIFVOU1VCU0NSSUJFIHRv
IGJsYWNrYm94QG9iZXJvbi5jaFxwYXINCj4+ID4+IFxwYXINCj4+ID4+IFxwYXINCj4+ID4+IFxw
YXINCj4+IFxwYXINCj4+IFNFTEVYIFNlbnNvcnMgYW5kIEFpcmJvcm5lIFN5c3RlbXMgTGltaXRl
ZCBSZWdpc3RlcmVkIFxwYXINCj4+IE9mZmljZTogU2lnbWEgSG91c2UsIENocmlzdG9waGVyIE1h
cnRpbiBSb2FkLCBCYXNpbGRvbiwgXHBhcg0KPj4gRXNzZXggU1MxNCAzRUwgQSBjb21wYW55IHJl
Z2lzdGVyZWQgaW4gRW5nbGFuZCAmIFdhbGVzLiAgXHBhcg0KPj4gQ29tcGFueSBuby4gMDI0MjYx
MzJccGFyDQo+PiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKlxwYXINCj4+IFRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2ht
ZW50cyBhcmUgY29uZmlkZW50aWFsIHRvIHRoZSBccGFyDQo+PiBpbnRlbmRlZCByZWNpcGllbnQg
YW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgXHBhcg0KPj4gbm90IHRoZSBp
bnRlbmRlZCByZWNpcGllbnQgcGxlYXNlIGRlbGV0ZSBpdCBmcm9tIHlvdXIgc3lzdGVtIFxwYXIN
Cj4+IGFuZCBub3RpZnkgdGhlIHNlbmRlci5ccGFyDQo+PiBZb3Ugc2hvdWxkIG5vdCBjb3B5IGl0
IG9yIHVzZSBpdCBmb3IgYW55IHB1cnBvc2Ugbm9yIFxwYXINCj4+IGRpc2Nsb3NlIG9yIGRpc3Ry
aWJ1dGUgaXRzIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24uXHBhcg0KPj4gKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KipccGFyDQo+PiBccGFyDQo+PiAtLS0gQmxhY2tCb3hccGFyDQo+PiAtLS0gc2VuZCBzdWJqZWN0
IEhFTFAgb3IgVU5TVUJTQ1JJQkUgdG8gYmxhY2tib3hAb2Jlcm9uLmNoXHBhcg0KPj4gXHBhcg0K
Pj4gXHBhcg0KXHBhcg0KU0VMRVggU2Vuc29ycyBhbmQgQWlyYm9ybmUgU3lzdGVtcyBMaW1pdGVk
XHBhcg0KUmVnaXN0ZXJlZCBPZmZpY2U6IFNpZ21hIEhvdXNlLCBDaHJpc3RvcGhlciBNYXJ0aW4g
Um9hZCwgQmFzaWxkb24sIEVzc2V4IFNTMTQgM0VMXHBhcg0KQSBjb21wYW55IHJlZ2lzdGVyZWQg
aW4gRW5nbGFuZCAmIFdhbGVzLiAgQ29tcGFueSBuby4gMDI0MjYxMzJccGFyDQoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KlxwYXINClRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIHRv
IHRoZSBpbnRlbmRlZFxwYXINCnJlY2lwaWVudCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4g
SWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkXHBhcg0KcmVjaXBpZW50IHBsZWFzZSBkZWxldGUg
aXQgZnJvbSB5b3VyIHN5c3RlbSBhbmQgbm90aWZ5IHRoZSBzZW5kZXIuXHBhcg0KWW91IHNob3Vs
ZCBub3QgY29weSBpdCBvciB1c2UgaXQgZm9yIGFueSBwdXJwb3NlIG5vciBkaXNjbG9zZSBvclxw
YXINCmRpc3RyaWJ1dGUgaXRzIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24uXHBhcg0KKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKipccGFyDQpccGFyDQotLS0gQmxhY2tCb3hccGFyDQotLS0gc2VuZCBzdWJqZWN0IEhF
TFAgb3IgVU5TVUJTQ1JJQkUgdG8gYmxhY2tib3hAb2Jlcm9ufX0AaHRtbHRhZw=


----boundary-LibPST-iamunique-2123907780_-_---
Received on Mon Aug 13 2007 - 12:37:59 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:31:25 UTC