# Programming-Idioms

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."
New implementation

Be concise.

Be useful.

All contributions dictatorially edited by webmasters to match personal tastes.

Please do not paste any copyright violating material.

Please try to avoid dependencies to third-party libraries and frameworks.

Other implementations
``````if (r1.isNaN) {
print("This is a quiet NaN.");
} else {
print("This is a number.");
}``````
``use, intrinsic:: ieee_arithmetic``
``````  character (len=:), allocatable :: msg
if (ieee_support_nan(r1)) then
if (ieee_class(r1) == ieee_quiet_nan) then
msg = "This s a quiet NaN."
else if (ieee_class(r1) == ieee_signaling_nan) then
msg = "This is a signaling NaN."
else
msg = "This is a number."
end if
else
msg = "NaNs are not supported."
end if
write (*,'(A)') msg``````
``uses sysutils;``
``````  if r1.IsNan then
begin
if (TDoubleRec(r1).Data and \$4000000000000000) = \$4000000000000000 then
writeln('This is a quiet NaN')
else
writeln('This is a signalling NaN');
end
else
writeln('This is a number: ',r1);
``````
``use POSIX qw(:nan_payload nan isnan issignaling setpayload);``
``````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
``````
``import math``
``````if math.isnan(r1):
print('This is a quiet NaN.')
else:
print('This is a number.')
``````