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."
        msg = "This is a number."
     end if
     msg = "NaNs are not supported."
  end if
  write (*,'(A)') msg
uses sysutils;
  if r1.IsNan then
   if (TDoubleRec(r1).Data and $4000000000000000) = $4000000000000000 then
     writeln('This is a quiet NaN')
     writeln('This is a signalling NaN');
    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.')
    print('This is a number.')