<html><body>
<p>IBM XLF version 13 running on AIX 5.3 prints:<br>
<br>
snan, 32-bit prints as: NaNS<br>
qnan, 32-bit prints as: NaNQ<br>
snan, 64-bit prints as: NaNS<br>
qnan, 64-bit prints as: NaNQ<br>
<br>
I modified the program to include quad precision using the IBM PPC's "double double":<br>
<br>
program ieee_test_nan<br>
<br>
use, intrinsic :: ieee_arithmetic<br>
implicit none<br>
real(4) :: ss, sq<br>
real(8) :: ds, dq<br>
real(16) :: qs, qq<br>
<br>
ss = ieee_value(ss,ieee_signaling_nan)<br>
sq = ieee_value(sq,ieee_quiet_nan)<br>
ds = ieee_value(ds,ieee_signaling_nan)<br>
dq = ieee_value(dq,ieee_quiet_nan)<br>
qs = ieee_value(qs,ieee_signaling_nan)<br>
qq = ieee_value(qq,ieee_quiet_nan)<br>
<br>
write (*,*) "snan, 32-bit prints as: ", ss<br>
write (*,*) "qnan, 32-bit prints as: ", sq<br>
write (*,*) "snan, 64-bit prints as: ", ds<br>
write (*,*) "qnan, 64-bit prints as: ", dq<br>
write (*,*) "snan, 128-bit prints as: ", qs<br>
write (*,*) "qnan, 128-bit prints as: ", qq<br>
<br>
end<br>
<br>
That printed:<br>
<br>
snan, 32-bit prints as: NaNS<br>
qnan, 32-bit prints as: NaNQ<br>
snan, 64-bit prints as: NaNS<br>
qnan, 64-bit prints as: NaNQ<br>
snan, 128-bit prints as: NaNS<br>
qnan, 128-bit prints as: NaNQ<br>
<br>
- Ian McIntosh IBM Canada Lab Compiler Back End Support and Development<br>
<br>
<br>
<img width="16" height="16" src="cid:1__=0ABBF2C4DF9088218f9e8a93df938@ca.ibm.com" border="0" alt="Inactive hide details for "Fred J. Tydeman" ---03/16/2011 07:02:08 AM---Fortran, for some time, has had "support" for signaling"><font color="#424282">"Fred J. Tydeman" ---03/16/2011 07:02:08 AM---Fortran, for some time, has had "support" for signaling NaNs. The following program is supposed to c</font><br>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top"><td width="1%"><img width="96" height="1" src="cid:2__=0ABBF2C4DF9088218f9e8a93df938@ca.ibm.com" border="0" alt=""><br>
<font size="2" color="#5F5F5F">From:</font></td><td width="100%"><img width="1" height="1" src="cid:2__=0ABBF2C4DF9088218f9e8a93df938@ca.ibm.com" border="0" alt=""><br>
<font size="2">"Fred J. Tydeman" <tydeman@tybor.com></font></td></tr>
<tr valign="top"><td width="1%"><img width="96" height="1" src="cid:2__=0ABBF2C4DF9088218f9e8a93df938@ca.ibm.com" border="0" alt=""><br>
<font size="2" color="#5F5F5F">To:</font></td><td width="100%"><img width="1" height="1" src="cid:2__=0ABBF2C4DF9088218f9e8a93df938@ca.ibm.com" border="0" alt=""><br>
<font size="2">"cfp-interest@ucbtest.org" <cfp-interest@ucbtest.org></font></td></tr>
<tr valign="top"><td width="1%"><img width="96" height="1" src="cid:2__=0ABBF2C4DF9088218f9e8a93df938@ca.ibm.com" border="0" alt=""><br>
<font size="2" color="#5F5F5F">Date:</font></td><td width="100%"><img width="1" height="1" src="cid:2__=0ABBF2C4DF9088218f9e8a93df938@ca.ibm.com" border="0" alt=""><br>
<font size="2">03/16/2011 07:02 AM</font></td></tr>
<tr valign="top"><td width="1%"><img width="96" height="1" src="cid:2__=0ABBF2C4DF9088218f9e8a93df938@ca.ibm.com" border="0" alt=""><br>
<font size="2" color="#5F5F5F">Subject:</font></td><td width="100%"><img width="1" height="1" src="cid:2__=0ABBF2C4DF9088218f9e8a93df938@ca.ibm.com" border="0" alt=""><br>
<font size="2">[Cfp-interest] Signaling NaNs and Fortran</font></td></tr>
<tr valign="top"><td width="1%"><img width="96" height="1" src="cid:2__=0ABBF2C4DF9088218f9e8a93df938@ca.ibm.com" border="0" alt=""><br>
<font size="2" color="#5F5F5F">Sent by:</font></td><td width="100%"><img width="1" height="1" src="cid:2__=0ABBF2C4DF9088218f9e8a93df938@ca.ibm.com" border="0" alt=""><br>
<font size="2">cfp-interest-bounces@oakapple.net</font></td></tr>
</table>
<hr width="100%" size="2" align="left" noshade style="color:#8091A5; "><br>
<br>
<br>
<tt>Fortran, for some time, has had "support" for signaling NaNs.<br>
The following program is supposed to create single and double<br>
kinds of signaling and quiet NaNs; and then print them.<br>
For those people who have access to Fortran compilers, would<br>
you please run this and report back the results.<br>
This is to help determine how C should print signaling NaNs.<br>
<br>
program ieee_test_nan<br>
<br>
use, intrinsic :: ieee_arithmetic<br>
implicit none<br>
real(4) :: ss, sq<br>
real(8) :: ds, dq<br>
<br>
ss = ieee_value(ss,ieee_signaling_nan)<br>
sq = ieee_value(sq,ieee_quiet_nan)<br>
ds = ieee_value(ds,ieee_signaling_nan)<br>
dq = ieee_value(dq,ieee_quiet_nan)<br>
<br>
write (*,*) "snan, 32-bit prints as: ", ss<br>
write (*,*) "qnan, 32-bit prints as: ", sq<br>
write (*,*) "snan, 64-bit prints as: ", ds<br>
write (*,*) "qnan, 64-bit prints as: ", dq<br>
<br>
end<br>
<br>
---<br>
Fred J. Tydeman Tydeman Consulting<br>
tydeman@tybor.com Testing, numerics, programming<br>
+1 (775) 358-9748 Vice-chair of PL22.11 (ANSI "C")<br>
Sample C99+FPCE tests: </tt><tt><a href="http://www.tybor.com">http://www.tybor.com</a></tt><tt><br>
Savers sleep well, investors eat well, spenders work forever.<br>
<br>
_______________________________________________<br>
Cfp-interest mailing list<br>
Cfp-interest@oakapple.net<br>
</tt><tt><a href="http://mailman.oakapple.net/mailman/listinfo/cfp-interest">http://mailman.oakapple.net/mailman/listinfo/cfp-interest</a></tt><tt><br>
</tt><br>
<br>
</body></html>