Idiom #270 Test for quiet or signaling NaN
Given a floating point number r1 classify it as follows:
If it is a signaling NaN, print "This is a signaling NaN."
If it is a quiet NaN, print "This s a quiet NaN."
If it is not a NaN, print "This is a number."
my @r = (nan, nan, 1.234);
setpayloadsig $r[1],'999';
foreach my $r1 ( @r ) {
if ( isnan $r1 ) {
printf "This is a %s NaN\n",
issignaling($r1) ? 'signaling' : 'quiet';
} else {
printf "This is not a NaN: %s\n", $r1;
}
}
# Output:
# This is a quiet NaN
# This is a signaling NaN
# This is not a NaN: 1.234
Use POSIX nan function to init array members 0 and 1 to NaN; init member 2 to a float. Use setpayloadsig to set member 1 to a signalling NaN. Loop over the list and uses isnan and issignaling to test and print.