
(********************************************************************)
(*                                                                  *)
(*  chkflt.sd7    Checks float literals and operations              *)
(*  Copyright (C) 2007  Thomas Mertes                               *)
(*                                                                  *)
(*  This program is free software; you can redistribute it and/or   *)
(*  modify it under the terms of the GNU General Public License as  *)
(*  published by the Free Software Foundation; either version 2 of  *)
(*  the License, or (at your option) any later version.             *)
(*                                                                  *)
(*  This program is distributed in the hope that it will be useful, *)
(*  but WITHOUT ANY WARRANTY; without even the implied warranty of  *)
(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   *)
(*  GNU General Public License for more details.                    *)
(*                                                                  *)
(*  You should have received a copy of the GNU General Public       *)
(*  License along with this program; if not, write to the           *)
(*  Free Software Foundation, Inc., 51 Franklin Street,             *)
(*  Fifth Floor, Boston, MA  02110-1301, USA.                       *)
(*                                                                  *)
(********************************************************************)


$ include "seed7_05.s7i";
  include "stdio.s7i";
  include "float.s7i";
  include "math.s7i";


const func string: striExpr (in string: stri) is
  return stri;


const func float: floatExpr (in float: number) is
  return number;


const proc: check_comparison is func
  local
    var boolean: okay is TRUE;
  begin
    if  not           -Infinity  =           -Infinity  or
                      -Infinity  =             -1.0E37  or
                      -Infinity  =             -1000.0  or
                      -Infinity  =                -0.0  or
                      -Infinity  =                 0.0  or
                      -Infinity  =              1000.0  or
                      -Infinity  =              1.0E37  or
                      -Infinity  =            Infinity  or
                        -1.0E37  =           -Infinity  or
        not             -1.0E37  =             -1.0E37  or
                        -1.0E37  =             -1000.0  or
                        -1.0E37  =                -0.0  or
                        -1.0E37  =                 0.0  or
                        -1.0E37  =              1000.0  or
                        -1.0E37  =              1.0E37  or
                        -1.0E37  =            Infinity  or
                        -1000.0  =           -Infinity  or
                        -1000.0  =             -1.0E37  or
        not             -1000.0  =             -1000.0  or
                        -1000.0  =                -0.0  or
                        -1000.0  =                 0.0  or
                        -1000.0  =              1000.0  or
                        -1000.0  =              1.0E37  or
                        -1000.0  =            Infinity  or
                           -0.0  =           -Infinity  or
                           -0.0  =             -1.0E37  or
                           -0.0  =             -1000.0  or
        not                -0.0  =                -0.0  or
        not                -0.0  =                 0.0  or
                           -0.0  =              1000.0  or
                           -0.0  =              1.0E37  or
                           -0.0  =            Infinity  or
                            0.0  =           -Infinity  or
                            0.0  =             -1.0E37  or
                            0.0  =             -1000.0  or
        not                 0.0  =                -0.0  or
        not                 0.0  =                 0.0  or
                            0.0  =              1000.0  or
                            0.0  =              1.0E37  or
                            0.0  =            Infinity  or
                         1000.0  =           -Infinity  or
                         1000.0  =             -1.0E37  or
                         1000.0  =             -1000.0  or
                         1000.0  =                -0.0  or
                         1000.0  =                 0.0  or
        not              1000.0  =              1000.0  or
                         1000.0  =              1.0E37  or
                         1000.0  =            Infinity  or
                         1.0E37  =           -Infinity  or
                         1.0E37  =             -1.0E37  or
                         1.0E37  =             -1000.0  or
                         1.0E37  =                -0.0  or
                         1.0E37  =                 0.0  or
                         1.0E37  =              1000.0  or
        not              1.0E37  =              1.0E37  or
                         1.0E37  =            Infinity  or
                       Infinity  =           -Infinity  or
                       Infinity  =             -1.0E37  or
                       Infinity  =             -1000.0  or
                       Infinity  =                -0.0  or
                       Infinity  =                 0.0  or
                       Infinity  =              1000.0  or
                       Infinity  =              1.0E37  or
        not            Infinity  =            Infinity  or
        not floatExpr(-Infinity) =           -Infinity  or
            floatExpr(-Infinity) =             -1.0E37  or
            floatExpr(-Infinity) =             -1000.0  or
            floatExpr(-Infinity) =                -0.0  or
            floatExpr(-Infinity) =                 0.0  or
            floatExpr(-Infinity) =              1000.0  or
            floatExpr(-Infinity) =              1.0E37  or
            floatExpr(-Infinity) =            Infinity  or
            floatExpr(  -1.0E37) =           -Infinity  or
        not floatExpr(  -1.0E37) =             -1.0E37  or
            floatExpr(  -1.0E37) =             -1000.0  or
            floatExpr(  -1.0E37) =                -0.0  or
            floatExpr(  -1.0E37) =                 0.0  or
            floatExpr(  -1.0E37) =              1000.0  or
            floatExpr(  -1.0E37) =              1.0E37  or
            floatExpr(  -1.0E37) =            Infinity  or
            floatExpr(  -1000.0) =           -Infinity  or
            floatExpr(  -1000.0) =             -1.0E37  or
        not floatExpr(  -1000.0) =             -1000.0  or
            floatExpr(  -1000.0) =                -0.0  or
            floatExpr(  -1000.0) =                 0.0  or
            floatExpr(  -1000.0) =              1000.0  or
            floatExpr(  -1000.0) =              1.0E37  or
            floatExpr(  -1000.0) =            Infinity  or
            floatExpr(     -0.0) =           -Infinity  or
            floatExpr(     -0.0) =             -1.0E37  or
            floatExpr(     -0.0) =             -1000.0  or
        not floatExpr(     -0.0) =                -0.0  or
        not floatExpr(     -0.0) =                 0.0  or
            floatExpr(     -0.0) =              1000.0  or
            floatExpr(     -0.0) =              1.0E37  or
            floatExpr(     -0.0) =            Infinity  or
            floatExpr(      0.0) =           -Infinity  or
            floatExpr(      0.0) =             -1.0E37  or
            floatExpr(      0.0) =             -1000.0  or
        not floatExpr(      0.0) =                -0.0  or
        not floatExpr(      0.0) =                 0.0  or
            floatExpr(      0.0) =              1000.0  or
            floatExpr(      0.0) =              1.0E37  or
            floatExpr(      0.0) =            Infinity  or
            floatExpr(   1000.0) =           -Infinity  or
            floatExpr(   1000.0) =             -1.0E37  or
            floatExpr(   1000.0) =             -1000.0  or
            floatExpr(   1000.0) =                -0.0  or
            floatExpr(   1000.0) =                 0.0  or
        not floatExpr(   1000.0) =              1000.0  or
            floatExpr(   1000.0) =              1.0E37  or
            floatExpr(   1000.0) =            Infinity  or
            floatExpr(   1.0E37) =           -Infinity  or
            floatExpr(   1.0E37) =             -1.0E37  or
            floatExpr(   1.0E37) =             -1000.0  or
            floatExpr(   1.0E37) =                -0.0  or
            floatExpr(   1.0E37) =                 0.0  or
            floatExpr(   1.0E37) =              1000.0  or
        not floatExpr(   1.0E37) =              1.0E37  or
            floatExpr(   1.0E37) =            Infinity  or
            floatExpr( Infinity) =           -Infinity  or
            floatExpr( Infinity) =             -1.0E37  or
            floatExpr( Infinity) =             -1000.0  or
            floatExpr( Infinity) =                -0.0  or
            floatExpr( Infinity) =                 0.0  or
            floatExpr( Infinity) =              1000.0  or
            floatExpr( Infinity) =              1.0E37  or
        not floatExpr( Infinity) =            Infinity  or
        not           -Infinity  = floatExpr(-Infinity) or
                      -Infinity  = floatExpr(  -1.0E37) or
                      -Infinity  = floatExpr(  -1000.0) or
                      -Infinity  = floatExpr(     -0.0) or
                      -Infinity  = floatExpr(      0.0) or
                      -Infinity  = floatExpr(   1000.0) or
                      -Infinity  = floatExpr(   1.0E37) or
                      -Infinity  = floatExpr( Infinity) or
                        -1.0E37  = floatExpr(-Infinity) or
        not             -1.0E37  = floatExpr(  -1.0E37) or
                        -1.0E37  = floatExpr(  -1000.0) or
                        -1.0E37  = floatExpr(     -0.0) or
                        -1.0E37  = floatExpr(      0.0) or
                        -1.0E37  = floatExpr(   1000.0) or
                        -1.0E37  = floatExpr(   1.0E37) or
                        -1.0E37  = floatExpr( Infinity) or
                        -1000.0  = floatExpr(-Infinity) or
                        -1000.0  = floatExpr(  -1.0E37) or
        not             -1000.0  = floatExpr(  -1000.0) or
                        -1000.0  = floatExpr(     -0.0) or
                        -1000.0  = floatExpr(      0.0) or
                        -1000.0  = floatExpr(   1000.0) or
                        -1000.0  = floatExpr(   1.0E37) or
                        -1000.0  = floatExpr( Infinity) or
                           -0.0  = floatExpr(-Infinity) or
                           -0.0  = floatExpr(  -1.0E37) or
                           -0.0  = floatExpr(  -1000.0) or
        not                -0.0  = floatExpr(     -0.0) or
        not                -0.0  = floatExpr(      0.0) or
                           -0.0  = floatExpr(   1000.0) or
                           -0.0  = floatExpr(   1.0E37) or
                           -0.0  = floatExpr( Infinity) or
                            0.0  = floatExpr(-Infinity) or
                            0.0  = floatExpr(  -1.0E37) or
                            0.0  = floatExpr(  -1000.0) or
        not                 0.0  = floatExpr(     -0.0) or
        not                 0.0  = floatExpr(      0.0) or
                            0.0  = floatExpr(   1000.0) or
                            0.0  = floatExpr(   1.0E37) or
                            0.0  = floatExpr( Infinity) or
                         1000.0  = floatExpr(-Infinity) or
                         1000.0  = floatExpr(  -1.0E37) or
                         1000.0  = floatExpr(  -1000.0) or
                         1000.0  = floatExpr(     -0.0) or
                         1000.0  = floatExpr(      0.0) or
        not              1000.0  = floatExpr(   1000.0) or
                         1000.0  = floatExpr(   1.0E37) or
                         1000.0  = floatExpr( Infinity) or
                         1.0E37  = floatExpr(-Infinity) or
                         1.0E37  = floatExpr(  -1.0E37) or
                         1.0E37  = floatExpr(  -1000.0) or
                         1.0E37  = floatExpr(     -0.0) or
                         1.0E37  = floatExpr(      0.0) or
                         1.0E37  = floatExpr(   1000.0) or
        not              1.0E37  = floatExpr(   1.0E37) or
                         1.0E37  = floatExpr( Infinity) or
                       Infinity  = floatExpr(-Infinity) or
                       Infinity  = floatExpr(  -1.0E37) or
                       Infinity  = floatExpr(  -1000.0) or
                       Infinity  = floatExpr(     -0.0) or
                       Infinity  = floatExpr(      0.0) or
                       Infinity  = floatExpr(   1000.0) or
                       Infinity  = floatExpr(   1.0E37) or
        not            Infinity  = floatExpr( Infinity) or
        not floatExpr(-Infinity) = floatExpr(-Infinity) or
            floatExpr(-Infinity) = floatExpr(  -1.0E37) or
            floatExpr(-Infinity) = floatExpr(  -1000.0) or
            floatExpr(-Infinity) = floatExpr(     -0.0) or
            floatExpr(-Infinity) = floatExpr(      0.0) or
            floatExpr(-Infinity) = floatExpr(   1000.0) or
            floatExpr(-Infinity) = floatExpr(   1.0E37) or
            floatExpr(-Infinity) = floatExpr( Infinity) or
            floatExpr(  -1.0E37) = floatExpr(-Infinity) or
        not floatExpr(  -1.0E37) = floatExpr(  -1.0E37) or
            floatExpr(  -1.0E37) = floatExpr(  -1000.0) or
            floatExpr(  -1.0E37) = floatExpr(     -0.0) or
            floatExpr(  -1.0E37) = floatExpr(      0.0) or
            floatExpr(  -1.0E37) = floatExpr(   1000.0) or
            floatExpr(  -1.0E37) = floatExpr(   1.0E37) or
            floatExpr(  -1.0E37) = floatExpr( Infinity) or
            floatExpr(  -1000.0) = floatExpr(-Infinity) or
            floatExpr(  -1000.0) = floatExpr(  -1.0E37) or
        not floatExpr(  -1000.0) = floatExpr(  -1000.0) or
            floatExpr(  -1000.0) = floatExpr(     -0.0) or
            floatExpr(  -1000.0) = floatExpr(      0.0) or
            floatExpr(  -1000.0) = floatExpr(   1000.0) or
            floatExpr(  -1000.0) = floatExpr(   1.0E37) or
            floatExpr(  -1000.0) = floatExpr( Infinity) or
            floatExpr(     -0.0) = floatExpr(-Infinity) or
            floatExpr(     -0.0) = floatExpr(  -1.0E37) or
            floatExpr(     -0.0) = floatExpr(  -1000.0) or
        not floatExpr(     -0.0) = floatExpr(     -0.0) or
        not floatExpr(     -0.0) = floatExpr(      0.0) or
            floatExpr(     -0.0) = floatExpr(   1000.0) or
            floatExpr(     -0.0) = floatExpr(   1.0E37) or
            floatExpr(     -0.0) = floatExpr( Infinity) or
            floatExpr(      0.0) = floatExpr(-Infinity) or
            floatExpr(      0.0) = floatExpr(  -1.0E37) or
            floatExpr(      0.0) = floatExpr(  -1000.0) or
        not floatExpr(      0.0) = floatExpr(     -0.0) or
        not floatExpr(      0.0) = floatExpr(      0.0) or
            floatExpr(      0.0) = floatExpr(   1000.0) or
            floatExpr(      0.0) = floatExpr(   1.0E37) or
            floatExpr(      0.0) = floatExpr( Infinity) or
            floatExpr(   1000.0) = floatExpr(-Infinity) or
            floatExpr(   1000.0) = floatExpr(  -1.0E37) or
            floatExpr(   1000.0) = floatExpr(  -1000.0) or
            floatExpr(   1000.0) = floatExpr(     -0.0) or
            floatExpr(   1000.0) = floatExpr(      0.0) or
        not floatExpr(   1000.0) = floatExpr(   1000.0) or
            floatExpr(   1000.0) = floatExpr(   1.0E37) or
            floatExpr(   1000.0) = floatExpr( Infinity) or
            floatExpr(   1.0E37) = floatExpr(-Infinity) or
            floatExpr(   1.0E37) = floatExpr(  -1.0E37) or
            floatExpr(   1.0E37) = floatExpr(  -1000.0) or
            floatExpr(   1.0E37) = floatExpr(     -0.0) or
            floatExpr(   1.0E37) = floatExpr(      0.0) or
            floatExpr(   1.0E37) = floatExpr(   1000.0) or
        not floatExpr(   1.0E37) = floatExpr(   1.0E37) or
            floatExpr(   1.0E37) = floatExpr( Infinity) or
            floatExpr( Infinity) = floatExpr(-Infinity) or
            floatExpr( Infinity) = floatExpr(  -1.0E37) or
            floatExpr( Infinity) = floatExpr(  -1000.0) or
            floatExpr( Infinity) = floatExpr(     -0.0) or
            floatExpr( Infinity) = floatExpr(      0.0) or
            floatExpr( Infinity) = floatExpr(   1000.0) or
            floatExpr( Infinity) = floatExpr(   1.0E37) or
        not floatExpr( Infinity) = floatExpr( Infinity) then
      writeln(" ***** Equal for float values does not work correct.");
      okay := FALSE;
    end if;

    if                -Infinity  <>           -Infinity  or
        not           -Infinity  <>             -1.0E37  or
        not           -Infinity  <>             -1000.0  or
        not           -Infinity  <>                -0.0  or
        not           -Infinity  <>                 0.0  or
        not           -Infinity  <>              1000.0  or
        not           -Infinity  <>              1.0E37  or
        not           -Infinity  <>            Infinity  or
        not             -1.0E37  <>           -Infinity  or
                        -1.0E37  <>             -1.0E37  or
        not             -1.0E37  <>             -1000.0  or
        not             -1.0E37  <>                -0.0  or
        not             -1.0E37  <>                 0.0  or
        not             -1.0E37  <>              1000.0  or
        not             -1.0E37  <>              1.0E37  or
        not             -1.0E37  <>            Infinity  or
        not             -1000.0  <>           -Infinity  or
        not             -1000.0  <>             -1.0E37  or
                        -1000.0  <>             -1000.0  or
        not             -1000.0  <>                -0.0  or
        not             -1000.0  <>                 0.0  or
        not             -1000.0  <>              1000.0  or
        not             -1000.0  <>              1.0E37  or
        not             -1000.0  <>            Infinity  or
        not                -0.0  <>           -Infinity  or
        not                -0.0  <>             -1.0E37  or
        not                -0.0  <>             -1000.0  or
                           -0.0  <>                -0.0  or
                           -0.0  <>                 0.0  or
        not                -0.0  <>              1000.0  or
        not                -0.0  <>              1.0E37  or
        not                -0.0  <>            Infinity  or
        not                 0.0  <>           -Infinity  or
        not                 0.0  <>             -1.0E37  or
        not                 0.0  <>             -1000.0  or
                            0.0  <>                -0.0  or
                            0.0  <>                 0.0  or
        not                 0.0  <>              1000.0  or
        not                 0.0  <>              1.0E37  or
        not                 0.0  <>            Infinity  or
        not              1000.0  <>           -Infinity  or
        not              1000.0  <>             -1.0E37  or
        not              1000.0  <>             -1000.0  or
        not              1000.0  <>                -0.0  or
        not              1000.0  <>                 0.0  or
                         1000.0  <>              1000.0  or
        not              1000.0  <>              1.0E37  or
        not              1000.0  <>            Infinity  or
        not              1.0E37  <>           -Infinity  or
        not              1.0E37  <>             -1.0E37  or
        not              1.0E37  <>             -1000.0  or
        not              1.0E37  <>                -0.0  or
        not              1.0E37  <>                 0.0  or
        not              1.0E37  <>              1000.0  or
                         1.0E37  <>              1.0E37  or
        not              1.0E37  <>            Infinity  or
        not            Infinity  <>           -Infinity  or
        not            Infinity  <>             -1.0E37  or
        not            Infinity  <>             -1000.0  or
        not            Infinity  <>                -0.0  or
        not            Infinity  <>                 0.0  or
        not            Infinity  <>              1000.0  or
        not            Infinity  <>              1.0E37  or
                       Infinity  <>            Infinity  or
            floatExpr(-Infinity) <>           -Infinity  or
        not floatExpr(-Infinity) <>             -1.0E37  or
        not floatExpr(-Infinity) <>             -1000.0  or
        not floatExpr(-Infinity) <>                -0.0  or
        not floatExpr(-Infinity) <>                 0.0  or
        not floatExpr(-Infinity) <>              1000.0  or
        not floatExpr(-Infinity) <>              1.0E37  or
        not floatExpr(-Infinity) <>            Infinity  or
        not floatExpr(  -1.0E37) <>           -Infinity  or
            floatExpr(  -1.0E37) <>             -1.0E37  or
        not floatExpr(  -1.0E37) <>             -1000.0  or
        not floatExpr(  -1.0E37) <>                -0.0  or
        not floatExpr(  -1.0E37) <>                 0.0  or
        not floatExpr(  -1.0E37) <>              1000.0  or
        not floatExpr(  -1.0E37) <>              1.0E37  or
        not floatExpr(  -1.0E37) <>            Infinity  or
        not floatExpr(  -1000.0) <>           -Infinity  or
        not floatExpr(  -1000.0) <>             -1.0E37  or
            floatExpr(  -1000.0) <>             -1000.0  or
        not floatExpr(  -1000.0) <>                -0.0  or
        not floatExpr(  -1000.0) <>                 0.0  or
        not floatExpr(  -1000.0) <>              1000.0  or
        not floatExpr(  -1000.0) <>              1.0E37  or
        not floatExpr(  -1000.0) <>            Infinity  or
        not floatExpr(     -0.0) <>           -Infinity  or
        not floatExpr(     -0.0) <>             -1.0E37  or
        not floatExpr(     -0.0) <>             -1000.0  or
            floatExpr(     -0.0) <>                -0.0  or
            floatExpr(     -0.0) <>                 0.0  or
        not floatExpr(     -0.0) <>              1000.0  or
        not floatExpr(     -0.0) <>              1.0E37  or
        not floatExpr(     -0.0) <>            Infinity  or
        not floatExpr(      0.0) <>           -Infinity  or
        not floatExpr(      0.0) <>             -1.0E37  or
        not floatExpr(      0.0) <>             -1000.0  or
            floatExpr(      0.0) <>                -0.0  or
            floatExpr(      0.0) <>                 0.0  or
        not floatExpr(      0.0) <>              1000.0  or
        not floatExpr(      0.0) <>              1.0E37  or
        not floatExpr(      0.0) <>            Infinity  or
        not floatExpr(   1000.0) <>           -Infinity  or
        not floatExpr(   1000.0) <>             -1.0E37  or
        not floatExpr(   1000.0) <>             -1000.0  or
        not floatExpr(   1000.0) <>                -0.0  or
        not floatExpr(   1000.0) <>                 0.0  or
            floatExpr(   1000.0) <>              1000.0  or
        not floatExpr(   1000.0) <>              1.0E37  or
        not floatExpr(   1000.0) <>            Infinity  or
        not floatExpr(   1.0E37) <>           -Infinity  or
        not floatExpr(   1.0E37) <>             -1.0E37  or
        not floatExpr(   1.0E37) <>             -1000.0  or
        not floatExpr(   1.0E37) <>                -0.0  or
        not floatExpr(   1.0E37) <>                 0.0  or
        not floatExpr(   1.0E37) <>              1000.0  or
            floatExpr(   1.0E37) <>              1.0E37  or
        not floatExpr(   1.0E37) <>            Infinity  or
        not floatExpr( Infinity) <>           -Infinity  or
        not floatExpr( Infinity) <>             -1.0E37  or
        not floatExpr( Infinity) <>             -1000.0  or
        not floatExpr( Infinity) <>                -0.0  or
        not floatExpr( Infinity) <>                 0.0  or
        not floatExpr( Infinity) <>              1000.0  or
        not floatExpr( Infinity) <>              1.0E37  or
            floatExpr( Infinity) <>            Infinity  or
                      -Infinity  <> floatExpr(-Infinity) or
        not           -Infinity  <> floatExpr(  -1.0E37) or
        not           -Infinity  <> floatExpr(  -1000.0) or
        not           -Infinity  <> floatExpr(     -0.0) or
        not           -Infinity  <> floatExpr(      0.0) or
        not           -Infinity  <> floatExpr(   1000.0) or
        not           -Infinity  <> floatExpr(   1.0E37) or
        not           -Infinity  <> floatExpr( Infinity) or
        not             -1.0E37  <> floatExpr(-Infinity) or
                        -1.0E37  <> floatExpr(  -1.0E37) or
        not             -1.0E37  <> floatExpr(  -1000.0) or
        not             -1.0E37  <> floatExpr(     -0.0) or
        not             -1.0E37  <> floatExpr(      0.0) or
        not             -1.0E37  <> floatExpr(   1000.0) or
        not             -1.0E37  <> floatExpr(   1.0E37) or
        not             -1.0E37  <> floatExpr( Infinity) or
        not             -1000.0  <> floatExpr(-Infinity) or
        not             -1000.0  <> floatExpr(  -1.0E37) or
                        -1000.0  <> floatExpr(  -1000.0) or
        not             -1000.0  <> floatExpr(     -0.0) or
        not             -1000.0  <> floatExpr(      0.0) or
        not             -1000.0  <> floatExpr(   1000.0) or
        not             -1000.0  <> floatExpr(   1.0E37) or
        not             -1000.0  <> floatExpr( Infinity) or
        not                -0.0  <> floatExpr(-Infinity) or
        not                -0.0  <> floatExpr(  -1.0E37) or
        not                -0.0  <> floatExpr(  -1000.0) or
                           -0.0  <> floatExpr(     -0.0) or
                           -0.0  <> floatExpr(      0.0) or
        not                -0.0  <> floatExpr(   1000.0) or
        not                -0.0  <> floatExpr(   1.0E37) or
        not                -0.0  <> floatExpr( Infinity) or
        not                 0.0  <> floatExpr(-Infinity) or
        not                 0.0  <> floatExpr(  -1.0E37) or
        not                 0.0  <> floatExpr(  -1000.0) or
                            0.0  <> floatExpr(     -0.0) or
                            0.0  <> floatExpr(      0.0) or
        not                 0.0  <> floatExpr(   1000.0) or
        not                 0.0  <> floatExpr(   1.0E37) or
        not                 0.0  <> floatExpr( Infinity) or
        not              1000.0  <> floatExpr(-Infinity) or
        not              1000.0  <> floatExpr(  -1.0E37) or
        not              1000.0  <> floatExpr(  -1000.0) or
        not              1000.0  <> floatExpr(     -0.0) or
        not              1000.0  <> floatExpr(      0.0) or
                         1000.0  <> floatExpr(   1000.0) or
        not              1000.0  <> floatExpr(   1.0E37) or
        not              1000.0  <> floatExpr( Infinity) or
        not              1.0E37  <> floatExpr(-Infinity) or
        not              1.0E37  <> floatExpr(  -1.0E37) or
        not              1.0E37  <> floatExpr(  -1000.0) or
        not              1.0E37  <> floatExpr(     -0.0) or
        not              1.0E37  <> floatExpr(      0.0) or
        not              1.0E37  <> floatExpr(   1000.0) or
                         1.0E37  <> floatExpr(   1.0E37) or
        not              1.0E37  <> floatExpr( Infinity) or
        not            Infinity  <> floatExpr(-Infinity) or
        not            Infinity  <> floatExpr(  -1.0E37) or
        not            Infinity  <> floatExpr(  -1000.0) or
        not            Infinity  <> floatExpr(     -0.0) or
        not            Infinity  <> floatExpr(      0.0) or
        not            Infinity  <> floatExpr(   1000.0) or
        not            Infinity  <> floatExpr(   1.0E37) or
                       Infinity  <> floatExpr( Infinity) or
            floatExpr(-Infinity) <> floatExpr(-Infinity) or
        not floatExpr(-Infinity) <> floatExpr(  -1.0E37) or
        not floatExpr(-Infinity) <> floatExpr(  -1000.0) or
        not floatExpr(-Infinity) <> floatExpr(     -0.0) or
        not floatExpr(-Infinity) <> floatExpr(      0.0) or
        not floatExpr(-Infinity) <> floatExpr(   1000.0) or
        not floatExpr(-Infinity) <> floatExpr(   1.0E37) or
        not floatExpr(-Infinity) <> floatExpr( Infinity) or
        not floatExpr(  -1.0E37) <> floatExpr(-Infinity) or
            floatExpr(  -1.0E37) <> floatExpr(  -1.0E37) or
        not floatExpr(  -1.0E37) <> floatExpr(  -1000.0) or
        not floatExpr(  -1.0E37) <> floatExpr(     -0.0) or
        not floatExpr(  -1.0E37) <> floatExpr(      0.0) or
        not floatExpr(  -1.0E37) <> floatExpr(   1000.0) or
        not floatExpr(  -1.0E37) <> floatExpr(   1.0E37) or
        not floatExpr(  -1.0E37) <> floatExpr( Infinity) or
        not floatExpr(  -1000.0) <> floatExpr(-Infinity) or
        not floatExpr(  -1000.0) <> floatExpr(  -1.0E37) or
            floatExpr(  -1000.0) <> floatExpr(  -1000.0) or
        not floatExpr(  -1000.0) <> floatExpr(     -0.0) or
        not floatExpr(  -1000.0) <> floatExpr(      0.0) or
        not floatExpr(  -1000.0) <> floatExpr(   1000.0) or
        not floatExpr(  -1000.0) <> floatExpr(   1.0E37) or
        not floatExpr(  -1000.0) <> floatExpr( Infinity) or
        not floatExpr(     -0.0) <> floatExpr(-Infinity) or
        not floatExpr(     -0.0) <> floatExpr(  -1.0E37) or
        not floatExpr(     -0.0) <> floatExpr(  -1000.0) or
            floatExpr(     -0.0) <> floatExpr(     -0.0) or
            floatExpr(     -0.0) <> floatExpr(      0.0) or
        not floatExpr(     -0.0) <> floatExpr(   1000.0) or
        not floatExpr(     -0.0) <> floatExpr(   1.0E37) or
        not floatExpr(     -0.0) <> floatExpr( Infinity) or
        not floatExpr(      0.0) <> floatExpr(-Infinity) or
        not floatExpr(      0.0) <> floatExpr(  -1.0E37) or
        not floatExpr(      0.0) <> floatExpr(  -1000.0) or
            floatExpr(      0.0) <> floatExpr(     -0.0) or
            floatExpr(      0.0) <> floatExpr(      0.0) or
        not floatExpr(      0.0) <> floatExpr(   1000.0) or
        not floatExpr(      0.0) <> floatExpr(   1.0E37) or
        not floatExpr(      0.0) <> floatExpr( Infinity) or
        not floatExpr(   1000.0) <> floatExpr(-Infinity) or
        not floatExpr(   1000.0) <> floatExpr(  -1.0E37) or
        not floatExpr(   1000.0) <> floatExpr(  -1000.0) or
        not floatExpr(   1000.0) <> floatExpr(     -0.0) or
        not floatExpr(   1000.0) <> floatExpr(      0.0) or
            floatExpr(   1000.0) <> floatExpr(   1000.0) or
        not floatExpr(   1000.0) <> floatExpr(   1.0E37) or
        not floatExpr(   1000.0) <> floatExpr( Infinity) or
        not floatExpr(   1.0E37) <> floatExpr(-Infinity) or
        not floatExpr(   1.0E37) <> floatExpr(  -1.0E37) or
        not floatExpr(   1.0E37) <> floatExpr(  -1000.0) or
        not floatExpr(   1.0E37) <> floatExpr(     -0.0) or
        not floatExpr(   1.0E37) <> floatExpr(      0.0) or
        not floatExpr(   1.0E37) <> floatExpr(   1000.0) or
            floatExpr(   1.0E37) <> floatExpr(   1.0E37) or
        not floatExpr(   1.0E37) <> floatExpr( Infinity) or
        not floatExpr( Infinity) <> floatExpr(-Infinity) or
        not floatExpr( Infinity) <> floatExpr(  -1.0E37) or
        not floatExpr( Infinity) <> floatExpr(  -1000.0) or
        not floatExpr( Infinity) <> floatExpr(     -0.0) or
        not floatExpr( Infinity) <> floatExpr(      0.0) or
        not floatExpr( Infinity) <> floatExpr(   1000.0) or
        not floatExpr( Infinity) <> floatExpr(   1.0E37) or
            floatExpr( Infinity) <> floatExpr( Infinity) then
      writeln(" ***** Not equal for float values does not work correct.");
      okay := FALSE;
    end if;

    if                -Infinity  <           -Infinity  or
        not           -Infinity  <             -1.0E37  or
        not           -Infinity  <             -1000.0  or
        not           -Infinity  <                -0.0  or
        not           -Infinity  <                 0.0  or
        not           -Infinity  <              1000.0  or
        not           -Infinity  <              1.0E37  or
        not           -Infinity  <            Infinity  or
                        -1.0E37  <           -Infinity  or
                        -1.0E37  <             -1.0E37  or
        not             -1.0E37  <             -1000.0  or
        not             -1.0E37  <                -0.0  or
        not             -1.0E37  <                 0.0  or
        not             -1.0E37  <              1000.0  or
        not             -1.0E37  <              1.0E37  or
        not             -1.0E37  <            Infinity  or
                        -1000.0  <           -Infinity  or
                        -1000.0  <             -1.0E37  or
                        -1000.0  <             -1000.0  or
        not             -1000.0  <                -0.0  or
        not             -1000.0  <                 0.0  or
        not             -1000.0  <              1000.0  or
        not             -1000.0  <              1.0E37  or
        not             -1000.0  <            Infinity  or
                           -0.0  <           -Infinity  or
                           -0.0  <             -1.0E37  or
                           -0.0  <             -1000.0  or
                           -0.0  <                -0.0  or
                           -0.0  <                 0.0  or
        not                -0.0  <              1000.0  or
        not                -0.0  <              1.0E37  or
        not                -0.0  <            Infinity  or
                            0.0  <           -Infinity  or
                            0.0  <             -1.0E37  or
                            0.0  <             -1000.0  or
                            0.0  <                -0.0  or
                            0.0  <                 0.0  or
        not                 0.0  <              1000.0  or
        not                 0.0  <              1.0E37  or
        not                 0.0  <            Infinity  or
                         1000.0  <           -Infinity  or
                         1000.0  <             -1.0E37  or
                         1000.0  <             -1000.0  or
                         1000.0  <                -0.0  or
                         1000.0  <                 0.0  or
                         1000.0  <              1000.0  or
        not              1000.0  <              1.0E37  or
        not              1000.0  <            Infinity  or
                         1.0E37  <           -Infinity  or
                         1.0E37  <             -1.0E37  or
                         1.0E37  <             -1000.0  or
                         1.0E37  <                -0.0  or
                         1.0E37  <                 0.0  or
                         1.0E37  <              1000.0  or
                         1.0E37  <              1.0E37  or
        not              1.0E37  <            Infinity  or
                       Infinity  <           -Infinity  or
                       Infinity  <             -1.0E37  or
                       Infinity  <             -1000.0  or
                       Infinity  <                -0.0  or
                       Infinity  <                 0.0  or
                       Infinity  <              1000.0  or
                       Infinity  <              1.0E37  or
                       Infinity  <            Infinity  or
            floatExpr(-Infinity) <           -Infinity  or
        not floatExpr(-Infinity) <             -1.0E37  or
        not floatExpr(-Infinity) <             -1000.0  or
        not floatExpr(-Infinity) <                -0.0  or
        not floatExpr(-Infinity) <                 0.0  or
        not floatExpr(-Infinity) <              1000.0  or
        not floatExpr(-Infinity) <              1.0E37  or
        not floatExpr(-Infinity) <            Infinity  or
            floatExpr(  -1.0E37) <           -Infinity  or
            floatExpr(  -1.0E37) <             -1.0E37  or
        not floatExpr(  -1.0E37) <             -1000.0  or
        not floatExpr(  -1.0E37) <                -0.0  or
        not floatExpr(  -1.0E37) <                 0.0  or
        not floatExpr(  -1.0E37) <              1000.0  or
        not floatExpr(  -1.0E37) <              1.0E37  or
        not floatExpr(  -1.0E37) <            Infinity  or
            floatExpr(  -1000.0) <           -Infinity  or
            floatExpr(  -1000.0) <             -1.0E37  or
            floatExpr(  -1000.0) <             -1000.0  or
        not floatExpr(  -1000.0) <                -0.0  or
        not floatExpr(  -1000.0) <                 0.0  or
        not floatExpr(  -1000.0) <              1000.0  or
        not floatExpr(  -1000.0) <              1.0E37  or
        not floatExpr(  -1000.0) <            Infinity  or
            floatExpr(     -0.0) <           -Infinity  or
            floatExpr(     -0.0) <             -1.0E37  or
            floatExpr(     -0.0) <             -1000.0  or
            floatExpr(     -0.0) <                -0.0  or
            floatExpr(     -0.0) <                 0.0  or
        not floatExpr(     -0.0) <              1000.0  or
        not floatExpr(     -0.0) <              1.0E37  or
        not floatExpr(     -0.0) <            Infinity  or
            floatExpr(      0.0) <           -Infinity  or
            floatExpr(      0.0) <             -1.0E37  or
            floatExpr(      0.0) <             -1000.0  or
            floatExpr(      0.0) <                -0.0  or
            floatExpr(      0.0) <                 0.0  or
        not floatExpr(      0.0) <              1000.0  or
        not floatExpr(      0.0) <              1.0E37  or
        not floatExpr(      0.0) <            Infinity  or
            floatExpr(   1000.0) <           -Infinity  or
            floatExpr(   1000.0) <             -1.0E37  or
            floatExpr(   1000.0) <             -1000.0  or
            floatExpr(   1000.0) <                -0.0  or
            floatExpr(   1000.0) <                 0.0  or
            floatExpr(   1000.0) <              1000.0  or
        not floatExpr(   1000.0) <              1.0E37  or
        not floatExpr(   1000.0) <            Infinity  or
            floatExpr(   1.0E37) <           -Infinity  or
            floatExpr(   1.0E37) <             -1.0E37  or
            floatExpr(   1.0E37) <             -1000.0  or
            floatExpr(   1.0E37) <                -0.0  or
            floatExpr(   1.0E37) <                 0.0  or
            floatExpr(   1.0E37) <              1000.0  or
            floatExpr(   1.0E37) <              1.0E37  or
        not floatExpr(   1.0E37) <            Infinity  or
            floatExpr( Infinity) <           -Infinity  or
            floatExpr( Infinity) <             -1.0E37  or
            floatExpr( Infinity) <             -1000.0  or
            floatExpr( Infinity) <                -0.0  or
            floatExpr( Infinity) <                 0.0  or
            floatExpr( Infinity) <              1000.0  or
            floatExpr( Infinity) <              1.0E37  or
            floatExpr( Infinity) <            Infinity  or
                      -Infinity  < floatExpr(-Infinity) or
        not           -Infinity  < floatExpr(  -1.0E37) or
        not           -Infinity  < floatExpr(  -1000.0) or
        not           -Infinity  < floatExpr(     -0.0) or
        not           -Infinity  < floatExpr(      0.0) or
        not           -Infinity  < floatExpr(   1000.0) or
        not           -Infinity  < floatExpr(   1.0E37) or
        not           -Infinity  < floatExpr( Infinity) or
                        -1.0E37  < floatExpr(-Infinity) or
                        -1.0E37  < floatExpr(  -1.0E37) or
        not             -1.0E37  < floatExpr(  -1000.0) or
        not             -1.0E37  < floatExpr(     -0.0) or
        not             -1.0E37  < floatExpr(      0.0) or
        not             -1.0E37  < floatExpr(   1000.0) or
        not             -1.0E37  < floatExpr(   1.0E37) or
        not             -1.0E37  < floatExpr( Infinity) or
                        -1000.0  < floatExpr(-Infinity) or
                        -1000.0  < floatExpr(  -1.0E37) or
                        -1000.0  < floatExpr(  -1000.0) or
        not             -1000.0  < floatExpr(     -0.0) or
        not             -1000.0  < floatExpr(      0.0) or
        not             -1000.0  < floatExpr(   1000.0) or
        not             -1000.0  < floatExpr(   1.0E37) or
        not             -1000.0  < floatExpr( Infinity) or
                           -0.0  < floatExpr(-Infinity) or
                           -0.0  < floatExpr(  -1.0E37) or
                           -0.0  < floatExpr(  -1000.0) or
                           -0.0  < floatExpr(     -0.0) or
                           -0.0  < floatExpr(      0.0) or
        not                -0.0  < floatExpr(   1000.0) or
        not                -0.0  < floatExpr(   1.0E37) or
        not                -0.0  < floatExpr( Infinity) or
                            0.0  < floatExpr(-Infinity) or
                            0.0  < floatExpr(  -1.0E37) or
                            0.0  < floatExpr(  -1000.0) or
                            0.0  < floatExpr(     -0.0) or
                            0.0  < floatExpr(      0.0) or
        not                 0.0  < floatExpr(   1000.0) or
        not                 0.0  < floatExpr(   1.0E37) or
        not                 0.0  < floatExpr( Infinity) or
                         1000.0  < floatExpr(-Infinity) or
                         1000.0  < floatExpr(  -1.0E37) or
                         1000.0  < floatExpr(  -1000.0) or
                         1000.0  < floatExpr(     -0.0) or
                         1000.0  < floatExpr(      0.0) or
                         1000.0  < floatExpr(   1000.0) or
        not              1000.0  < floatExpr(   1.0E37) or
        not              1000.0  < floatExpr( Infinity) or
                         1.0E37  < floatExpr(-Infinity) or
                         1.0E37  < floatExpr(  -1.0E37) or
                         1.0E37  < floatExpr(  -1000.0) or
                         1.0E37  < floatExpr(     -0.0) or
                         1.0E37  < floatExpr(      0.0) or
                         1.0E37  < floatExpr(   1000.0) or
                         1.0E37  < floatExpr(   1.0E37) or
        not              1.0E37  < floatExpr( Infinity) or
                       Infinity  < floatExpr(-Infinity) or
                       Infinity  < floatExpr(  -1.0E37) or
                       Infinity  < floatExpr(  -1000.0) or
                       Infinity  < floatExpr(     -0.0) or
                       Infinity  < floatExpr(      0.0) or
                       Infinity  < floatExpr(   1000.0) or
                       Infinity  < floatExpr(   1.0E37) or
                       Infinity  < floatExpr( Infinity) or
            floatExpr(-Infinity) < floatExpr(-Infinity) or
        not floatExpr(-Infinity) < floatExpr(  -1.0E37) or
        not floatExpr(-Infinity) < floatExpr(  -1000.0) or
        not floatExpr(-Infinity) < floatExpr(     -0.0) or
        not floatExpr(-Infinity) < floatExpr(      0.0) or
        not floatExpr(-Infinity) < floatExpr(   1000.0) or
        not floatExpr(-Infinity) < floatExpr(   1.0E37) or
        not floatExpr(-Infinity) < floatExpr( Infinity) or
            floatExpr(  -1.0E37) < floatExpr(-Infinity) or
            floatExpr(  -1.0E37) < floatExpr(  -1.0E37) or
        not floatExpr(  -1.0E37) < floatExpr(  -1000.0) or
        not floatExpr(  -1.0E37) < floatExpr(     -0.0) or
        not floatExpr(  -1.0E37) < floatExpr(      0.0) or
        not floatExpr(  -1.0E37) < floatExpr(   1000.0) or
        not floatExpr(  -1.0E37) < floatExpr(   1.0E37) or
        not floatExpr(  -1.0E37) < floatExpr( Infinity) or
            floatExpr(  -1000.0) < floatExpr(-Infinity) or
            floatExpr(  -1000.0) < floatExpr(  -1.0E37) or
            floatExpr(  -1000.0) < floatExpr(  -1000.0) or
        not floatExpr(  -1000.0) < floatExpr(     -0.0) or
        not floatExpr(  -1000.0) < floatExpr(      0.0) or
        not floatExpr(  -1000.0) < floatExpr(   1000.0) or
        not floatExpr(  -1000.0) < floatExpr(   1.0E37) or
        not floatExpr(  -1000.0) < floatExpr( Infinity) or
            floatExpr(     -0.0) < floatExpr(-Infinity) or
            floatExpr(     -0.0) < floatExpr(  -1.0E37) or
            floatExpr(     -0.0) < floatExpr(  -1000.0) or
            floatExpr(     -0.0) < floatExpr(     -0.0) or
            floatExpr(     -0.0) < floatExpr(      0.0) or
        not floatExpr(     -0.0) < floatExpr(   1000.0) or
        not floatExpr(     -0.0) < floatExpr(   1.0E37) or
        not floatExpr(     -0.0) < floatExpr( Infinity) or
            floatExpr(      0.0) < floatExpr(-Infinity) or
            floatExpr(      0.0) < floatExpr(  -1.0E37) or
            floatExpr(      0.0) < floatExpr(  -1000.0) or
            floatExpr(      0.0) < floatExpr(     -0.0) or
            floatExpr(      0.0) < floatExpr(      0.0) or
        not floatExpr(      0.0) < floatExpr(   1000.0) or
        not floatExpr(      0.0) < floatExpr(   1.0E37) or
        not floatExpr(      0.0) < floatExpr( Infinity) or
            floatExpr(   1000.0) < floatExpr(-Infinity) or
            floatExpr(   1000.0) < floatExpr(  -1.0E37) or
            floatExpr(   1000.0) < floatExpr(  -1000.0) or
            floatExpr(   1000.0) < floatExpr(     -0.0) or
            floatExpr(   1000.0) < floatExpr(      0.0) or
            floatExpr(   1000.0) < floatExpr(   1000.0) or
        not floatExpr(   1000.0) < floatExpr(   1.0E37) or
        not floatExpr(   1000.0) < floatExpr( Infinity) or
            floatExpr(   1.0E37) < floatExpr(-Infinity) or
            floatExpr(   1.0E37) < floatExpr(  -1.0E37) or
            floatExpr(   1.0E37) < floatExpr(  -1000.0) or
            floatExpr(   1.0E37) < floatExpr(     -0.0) or
            floatExpr(   1.0E37) < floatExpr(      0.0) or
            floatExpr(   1.0E37) < floatExpr(   1000.0) or
            floatExpr(   1.0E37) < floatExpr(   1.0E37) or
        not floatExpr(   1.0E37) < floatExpr( Infinity) or
            floatExpr( Infinity) < floatExpr(-Infinity) or
            floatExpr( Infinity) < floatExpr(  -1.0E37) or
            floatExpr( Infinity) < floatExpr(  -1000.0) or
            floatExpr( Infinity) < floatExpr(     -0.0) or
            floatExpr( Infinity) < floatExpr(      0.0) or
            floatExpr( Infinity) < floatExpr(   1000.0) or
            floatExpr( Infinity) < floatExpr(   1.0E37) or
            floatExpr( Infinity) < floatExpr( Infinity) then
      writeln(" ***** Less than for float values does not work correct.");
      okay := FALSE;
    end if;

    if                -Infinity  >           -Infinity  or
                      -Infinity  >             -1.0E37  or
                      -Infinity  >             -1000.0  or
                      -Infinity  >                -0.0  or
                      -Infinity  >                 0.0  or
                      -Infinity  >              1000.0  or
                      -Infinity  >              1.0E37  or
                      -Infinity  >            Infinity  or
        not             -1.0E37  >           -Infinity  or
                        -1.0E37  >             -1.0E37  or
                        -1.0E37  >             -1000.0  or
                        -1.0E37  >                -0.0  or
                        -1.0E37  >                 0.0  or
                        -1.0E37  >              1000.0  or
                        -1.0E37  >              1.0E37  or
                        -1.0E37  >            Infinity  or
        not             -1000.0  >           -Infinity  or
        not             -1000.0  >             -1.0E37  or
                        -1000.0  >             -1000.0  or
                        -1000.0  >                -0.0  or
                        -1000.0  >                 0.0  or
                        -1000.0  >              1000.0  or
                        -1000.0  >              1.0E37  or
                        -1000.0  >            Infinity  or
        not                -0.0  >           -Infinity  or
        not                -0.0  >             -1.0E37  or
        not                -0.0  >             -1000.0  or
                           -0.0  >                -0.0  or
                           -0.0  >                 0.0  or
                           -0.0  >              1000.0  or
                           -0.0  >              1.0E37  or
                           -0.0  >            Infinity  or
        not                 0.0  >           -Infinity  or
        not                 0.0  >             -1.0E37  or
        not                 0.0  >             -1000.0  or
                            0.0  >                -0.0  or
                            0.0  >                 0.0  or
                            0.0  >              1000.0  or
                            0.0  >              1.0E37  or
                            0.0  >            Infinity  or
        not              1000.0  >           -Infinity  or
        not              1000.0  >             -1.0E37  or
        not              1000.0  >             -1000.0  or
        not              1000.0  >                -0.0  or
        not              1000.0  >                 0.0  or
                         1000.0  >              1000.0  or
                         1000.0  >              1.0E37  or
                         1000.0  >            Infinity  or
        not              1.0E37  >           -Infinity  or
        not              1.0E37  >             -1.0E37  or
        not              1.0E37  >             -1000.0  or
        not              1.0E37  >                -0.0  or
        not              1.0E37  >                 0.0  or
        not              1.0E37  >              1000.0  or
                         1.0E37  >              1.0E37  or
                         1.0E37  >            Infinity  or
        not            Infinity  >           -Infinity  or
        not            Infinity  >             -1.0E37  or
        not            Infinity  >             -1000.0  or
        not            Infinity  >                -0.0  or
        not            Infinity  >                 0.0  or
        not            Infinity  >              1000.0  or
        not            Infinity  >              1.0E37  or
                       Infinity  >            Infinity  or
            floatExpr(-Infinity) >           -Infinity  or
            floatExpr(-Infinity) >             -1.0E37  or
            floatExpr(-Infinity) >             -1000.0  or
            floatExpr(-Infinity) >                -0.0  or
            floatExpr(-Infinity) >                 0.0  or
            floatExpr(-Infinity) >              1000.0  or
            floatExpr(-Infinity) >              1.0E37  or
            floatExpr(-Infinity) >            Infinity  or
        not floatExpr(  -1.0E37) >           -Infinity  or
            floatExpr(  -1.0E37) >             -1.0E37  or
            floatExpr(  -1.0E37) >             -1000.0  or
            floatExpr(  -1.0E37) >                -0.0  or
            floatExpr(  -1.0E37) >                 0.0  or
            floatExpr(  -1.0E37) >              1000.0  or
            floatExpr(  -1.0E37) >              1.0E37  or
            floatExpr(  -1.0E37) >            Infinity  or
        not floatExpr(  -1000.0) >           -Infinity  or
        not floatExpr(  -1000.0) >             -1.0E37  or
            floatExpr(  -1000.0) >             -1000.0  or
            floatExpr(  -1000.0) >                -0.0  or
            floatExpr(  -1000.0) >                 0.0  or
            floatExpr(  -1000.0) >              1000.0  or
            floatExpr(  -1000.0) >              1.0E37  or
            floatExpr(  -1000.0) >            Infinity  or
        not floatExpr(     -0.0) >           -Infinity  or
        not floatExpr(     -0.0) >             -1.0E37  or
        not floatExpr(     -0.0) >             -1000.0  or
            floatExpr(     -0.0) >                -0.0  or
            floatExpr(     -0.0) >                 0.0  or
            floatExpr(     -0.0) >              1000.0  or
            floatExpr(     -0.0) >              1.0E37  or
            floatExpr(     -0.0) >            Infinity  or
        not floatExpr(      0.0) >           -Infinity  or
        not floatExpr(      0.0) >             -1.0E37  or
        not floatExpr(      0.0) >             -1000.0  or
            floatExpr(      0.0) >                -0.0  or
            floatExpr(      0.0) >                 0.0  or
            floatExpr(      0.0) >              1000.0  or
            floatExpr(      0.0) >              1.0E37  or
            floatExpr(      0.0) >            Infinity  or
        not floatExpr(   1000.0) >           -Infinity  or
        not floatExpr(   1000.0) >             -1.0E37  or
        not floatExpr(   1000.0) >             -1000.0  or
        not floatExpr(   1000.0) >                -0.0  or
        not floatExpr(   1000.0) >                 0.0  or
            floatExpr(   1000.0) >              1000.0  or
            floatExpr(   1000.0) >              1.0E37  or
            floatExpr(   1000.0) >            Infinity  or
        not floatExpr(   1.0E37) >           -Infinity  or
        not floatExpr(   1.0E37) >             -1.0E37  or
        not floatExpr(   1.0E37) >             -1000.0  or
        not floatExpr(   1.0E37) >                -0.0  or
        not floatExpr(   1.0E37) >                 0.0  or
        not floatExpr(   1.0E37) >              1000.0  or
            floatExpr(   1.0E37) >              1.0E37  or
            floatExpr(   1.0E37) >            Infinity  or
        not floatExpr( Infinity) >           -Infinity  or
        not floatExpr( Infinity) >             -1.0E37  or
        not floatExpr( Infinity) >             -1000.0  or
        not floatExpr( Infinity) >                -0.0  or
        not floatExpr( Infinity) >                 0.0  or
        not floatExpr( Infinity) >              1000.0  or
        not floatExpr( Infinity) >              1.0E37  or
            floatExpr( Infinity) >            Infinity  or
                      -Infinity  > floatExpr(-Infinity) or
                      -Infinity  > floatExpr(  -1.0E37) or
                      -Infinity  > floatExpr(  -1000.0) or
                      -Infinity  > floatExpr(     -0.0) or
                      -Infinity  > floatExpr(      0.0) or
                      -Infinity  > floatExpr(   1000.0) or
                      -Infinity  > floatExpr(   1.0E37) or
                      -Infinity  > floatExpr( Infinity) or
        not             -1.0E37  > floatExpr(-Infinity) or
                        -1.0E37  > floatExpr(  -1.0E37) or
                        -1.0E37  > floatExpr(  -1000.0) or
                        -1.0E37  > floatExpr(     -0.0) or
                        -1.0E37  > floatExpr(      0.0) or
                        -1.0E37  > floatExpr(   1000.0) or
                        -1.0E37  > floatExpr(   1.0E37) or
                        -1.0E37  > floatExpr( Infinity) or
        not             -1000.0  > floatExpr(-Infinity) or
        not             -1000.0  > floatExpr(  -1.0E37) or
                        -1000.0  > floatExpr(  -1000.0) or
                        -1000.0  > floatExpr(     -0.0) or
                        -1000.0  > floatExpr(      0.0) or
                        -1000.0  > floatExpr(   1000.0) or
                        -1000.0  > floatExpr(   1.0E37) or
                        -1000.0  > floatExpr( Infinity) or
        not                -0.0  > floatExpr(-Infinity) or
        not                -0.0  > floatExpr(  -1.0E37) or
        not                -0.0  > floatExpr(  -1000.0) or
                           -0.0  > floatExpr(     -0.0) or
                           -0.0  > floatExpr(      0.0) or
                           -0.0  > floatExpr(   1000.0) or
                           -0.0  > floatExpr(   1.0E37) or
                           -0.0  > floatExpr( Infinity) or
        not                 0.0  > floatExpr(-Infinity) or
        not                 0.0  > floatExpr(  -1.0E37) or
        not                 0.0  > floatExpr(  -1000.0) or
                            0.0  > floatExpr(     -0.0) or
                            0.0  > floatExpr(      0.0) or
                            0.0  > floatExpr(   1000.0) or
                            0.0  > floatExpr(   1.0E37) or
                            0.0  > floatExpr( Infinity) or
        not              1000.0  > floatExpr(-Infinity) or
        not              1000.0  > floatExpr(  -1.0E37) or
        not              1000.0  > floatExpr(  -1000.0) or
        not              1000.0  > floatExpr(     -0.0) or
        not              1000.0  > floatExpr(      0.0) or
                         1000.0  > floatExpr(   1000.0) or
                         1000.0  > floatExpr(   1.0E37) or
                         1000.0  > floatExpr( Infinity) or
        not              1.0E37  > floatExpr(-Infinity) or
        not              1.0E37  > floatExpr(  -1.0E37) or
        not              1.0E37  > floatExpr(  -1000.0) or
        not              1.0E37  > floatExpr(     -0.0) or
        not              1.0E37  > floatExpr(      0.0) or
        not              1.0E37  > floatExpr(   1000.0) or
                         1.0E37  > floatExpr(   1.0E37) or
                         1.0E37  > floatExpr( Infinity) or
        not            Infinity  > floatExpr(-Infinity) or
        not            Infinity  > floatExpr(  -1.0E37) or
        not            Infinity  > floatExpr(  -1000.0) or
        not            Infinity  > floatExpr(     -0.0) or
        not            Infinity  > floatExpr(      0.0) or
        not            Infinity  > floatExpr(   1000.0) or
        not            Infinity  > floatExpr(   1.0E37) or
                       Infinity  > floatExpr( Infinity) or
            floatExpr(-Infinity) > floatExpr(-Infinity) or
            floatExpr(-Infinity) > floatExpr(  -1.0E37) or
            floatExpr(-Infinity) > floatExpr(  -1000.0) or
            floatExpr(-Infinity) > floatExpr(     -0.0) or
            floatExpr(-Infinity) > floatExpr(      0.0) or
            floatExpr(-Infinity) > floatExpr(   1000.0) or
            floatExpr(-Infinity) > floatExpr(   1.0E37) or
            floatExpr(-Infinity) > floatExpr( Infinity) or
        not floatExpr(  -1.0E37) > floatExpr(-Infinity) or
            floatExpr(  -1.0E37) > floatExpr(  -1.0E37) or
            floatExpr(  -1.0E37) > floatExpr(  -1000.0) or
            floatExpr(  -1.0E37) > floatExpr(     -0.0) or
            floatExpr(  -1.0E37) > floatExpr(      0.0) or
            floatExpr(  -1.0E37) > floatExpr(   1000.0) or
            floatExpr(  -1.0E37) > floatExpr(   1.0E37) or
            floatExpr(  -1.0E37) > floatExpr( Infinity) or
        not floatExpr(  -1000.0) > floatExpr(-Infinity) or
        not floatExpr(  -1000.0) > floatExpr(  -1.0E37) or
            floatExpr(  -1000.0) > floatExpr(  -1000.0) or
            floatExpr(  -1000.0) > floatExpr(     -0.0) or
            floatExpr(  -1000.0) > floatExpr(      0.0) or
            floatExpr(  -1000.0) > floatExpr(   1000.0) or
            floatExpr(  -1000.0) > floatExpr(   1.0E37) or
            floatExpr(  -1000.0) > floatExpr( Infinity) or
        not floatExpr(     -0.0) > floatExpr(-Infinity) or
        not floatExpr(     -0.0) > floatExpr(  -1.0E37) or
        not floatExpr(     -0.0) > floatExpr(  -1000.0) or
            floatExpr(     -0.0) > floatExpr(     -0.0) or
            floatExpr(     -0.0) > floatExpr(      0.0) or
            floatExpr(     -0.0) > floatExpr(   1000.0) or
            floatExpr(     -0.0) > floatExpr(   1.0E37) or
            floatExpr(     -0.0) > floatExpr( Infinity) or
        not floatExpr(      0.0) > floatExpr(-Infinity) or
        not floatExpr(      0.0) > floatExpr(  -1.0E37) or
        not floatExpr(      0.0) > floatExpr(  -1000.0) or
            floatExpr(      0.0) > floatExpr(     -0.0) or
            floatExpr(      0.0) > floatExpr(      0.0) or
            floatExpr(      0.0) > floatExpr(   1000.0) or
            floatExpr(      0.0) > floatExpr(   1.0E37) or
            floatExpr(      0.0) > floatExpr( Infinity) or
        not floatExpr(   1000.0) > floatExpr(-Infinity) or
        not floatExpr(   1000.0) > floatExpr(  -1.0E37) or
        not floatExpr(   1000.0) > floatExpr(  -1000.0) or
        not floatExpr(   1000.0) > floatExpr(     -0.0) or
        not floatExpr(   1000.0) > floatExpr(      0.0) or
            floatExpr(   1000.0) > floatExpr(   1000.0) or
            floatExpr(   1000.0) > floatExpr(   1.0E37) or
            floatExpr(   1000.0) > floatExpr( Infinity) or
        not floatExpr(   1.0E37) > floatExpr(-Infinity) or
        not floatExpr(   1.0E37) > floatExpr(  -1.0E37) or
        not floatExpr(   1.0E37) > floatExpr(  -1000.0) or
        not floatExpr(   1.0E37) > floatExpr(     -0.0) or
        not floatExpr(   1.0E37) > floatExpr(      0.0) or
        not floatExpr(   1.0E37) > floatExpr(   1000.0) or
            floatExpr(   1.0E37) > floatExpr(   1.0E37) or
            floatExpr(   1.0E37) > floatExpr( Infinity) or
        not floatExpr( Infinity) > floatExpr(-Infinity) or
        not floatExpr( Infinity) > floatExpr(  -1.0E37) or
        not floatExpr( Infinity) > floatExpr(  -1000.0) or
        not floatExpr( Infinity) > floatExpr(     -0.0) or
        not floatExpr( Infinity) > floatExpr(      0.0) or
        not floatExpr( Infinity) > floatExpr(   1000.0) or
        not floatExpr( Infinity) > floatExpr(   1.0E37) or
            floatExpr( Infinity) > floatExpr( Infinity) then
      writeln(" ***** Greater than for float values does not work correct.");
      okay := FALSE;
    end if;

    if  not           -Infinity  <=           -Infinity  or
        not           -Infinity  <=             -1.0E37  or
        not           -Infinity  <=             -1000.0  or
        not           -Infinity  <=                -0.0  or
        not           -Infinity  <=                 0.0  or
        not           -Infinity  <=              1000.0  or
        not           -Infinity  <=              1.0E37  or
        not           -Infinity  <=            Infinity  or
                        -1.0E37  <=           -Infinity  or
        not             -1.0E37  <=             -1.0E37  or
        not             -1.0E37  <=             -1000.0  or
        not             -1.0E37  <=                -0.0  or
        not             -1.0E37  <=                 0.0  or
        not             -1.0E37  <=              1000.0  or
        not             -1.0E37  <=              1.0E37  or
        not             -1.0E37  <=            Infinity  or
                        -1000.0  <=           -Infinity  or
                        -1000.0  <=             -1.0E37  or
        not             -1000.0  <=             -1000.0  or
        not             -1000.0  <=                -0.0  or
        not             -1000.0  <=                 0.0  or
        not             -1000.0  <=              1000.0  or
        not             -1000.0  <=              1.0E37  or
        not             -1000.0  <=            Infinity  or
                           -0.0  <=           -Infinity  or
                           -0.0  <=             -1.0E37  or
                           -0.0  <=             -1000.0  or
        not                -0.0  <=                -0.0  or
        not                -0.0  <=                 0.0  or
        not                -0.0  <=              1000.0  or
        not                -0.0  <=              1.0E37  or
        not                -0.0  <=            Infinity  or
                            0.0  <=           -Infinity  or
                            0.0  <=             -1.0E37  or
                            0.0  <=             -1000.0  or
        not                 0.0  <=                -0.0  or
        not                 0.0  <=                 0.0  or
        not                 0.0  <=              1000.0  or
        not                 0.0  <=              1.0E37  or
        not                 0.0  <=            Infinity  or
                         1000.0  <=           -Infinity  or
                         1000.0  <=             -1.0E37  or
                         1000.0  <=             -1000.0  or
                         1000.0  <=                -0.0  or
                         1000.0  <=                 0.0  or
        not              1000.0  <=              1000.0  or
        not              1000.0  <=              1.0E37  or
        not              1000.0  <=            Infinity  or
                         1.0E37  <=           -Infinity  or
                         1.0E37  <=             -1.0E37  or
                         1.0E37  <=             -1000.0  or
                         1.0E37  <=                -0.0  or
                         1.0E37  <=                 0.0  or
                         1.0E37  <=              1000.0  or
        not              1.0E37  <=              1.0E37  or
        not              1.0E37  <=            Infinity  or
                       Infinity  <=           -Infinity  or
                       Infinity  <=             -1.0E37  or
                       Infinity  <=             -1000.0  or
                       Infinity  <=                -0.0  or
                       Infinity  <=                 0.0  or
                       Infinity  <=              1000.0  or
                       Infinity  <=              1.0E37  or
        not            Infinity  <=            Infinity  or
        not floatExpr(-Infinity) <=           -Infinity  or
        not floatExpr(-Infinity) <=             -1.0E37  or
        not floatExpr(-Infinity) <=             -1000.0  or
        not floatExpr(-Infinity) <=                -0.0  or
        not floatExpr(-Infinity) <=                 0.0  or
        not floatExpr(-Infinity) <=              1000.0  or
        not floatExpr(-Infinity) <=              1.0E37  or
        not floatExpr(-Infinity) <=            Infinity  or
            floatExpr(  -1.0E37) <=           -Infinity  or
        not floatExpr(  -1.0E37) <=             -1.0E37  or
        not floatExpr(  -1.0E37) <=             -1000.0  or
        not floatExpr(  -1.0E37) <=                -0.0  or
        not floatExpr(  -1.0E37) <=                 0.0  or
        not floatExpr(  -1.0E37) <=              1000.0  or
        not floatExpr(  -1.0E37) <=              1.0E37  or
        not floatExpr(  -1.0E37) <=            Infinity  or
            floatExpr(  -1000.0) <=           -Infinity  or
            floatExpr(  -1000.0) <=             -1.0E37  or
        not floatExpr(  -1000.0) <=             -1000.0  or
        not floatExpr(  -1000.0) <=                -0.0  or
        not floatExpr(  -1000.0) <=                 0.0  or
        not floatExpr(  -1000.0) <=              1000.0  or
        not floatExpr(  -1000.0) <=              1.0E37  or
        not floatExpr(  -1000.0) <=            Infinity  or
            floatExpr(     -0.0) <=           -Infinity  or
            floatExpr(     -0.0) <=             -1.0E37  or
            floatExpr(     -0.0) <=             -1000.0  or
        not floatExpr(     -0.0) <=                -0.0  or
        not floatExpr(     -0.0) <=                 0.0  or
        not floatExpr(     -0.0) <=              1000.0  or
        not floatExpr(     -0.0) <=              1.0E37  or
        not floatExpr(     -0.0) <=            Infinity  or
            floatExpr(      0.0) <=           -Infinity  or
            floatExpr(      0.0) <=             -1.0E37  or
            floatExpr(      0.0) <=             -1000.0  or
        not floatExpr(      0.0) <=                -0.0  or
        not floatExpr(      0.0) <=                 0.0  or
        not floatExpr(      0.0) <=              1000.0  or
        not floatExpr(      0.0) <=              1.0E37  or
        not floatExpr(      0.0) <=            Infinity  or
            floatExpr(   1000.0) <=           -Infinity  or
            floatExpr(   1000.0) <=             -1.0E37  or
            floatExpr(   1000.0) <=             -1000.0  or
            floatExpr(   1000.0) <=                -0.0  or
            floatExpr(   1000.0) <=                 0.0  or
        not floatExpr(   1000.0) <=              1000.0  or
        not floatExpr(   1000.0) <=              1.0E37  or
        not floatExpr(   1000.0) <=            Infinity  or
            floatExpr(   1.0E37) <=           -Infinity  or
            floatExpr(   1.0E37) <=             -1.0E37  or
            floatExpr(   1.0E37) <=             -1000.0  or
            floatExpr(   1.0E37) <=                -0.0  or
            floatExpr(   1.0E37) <=                 0.0  or
            floatExpr(   1.0E37) <=              1000.0  or
        not floatExpr(   1.0E37) <=              1.0E37  or
        not floatExpr(   1.0E37) <=            Infinity  or
            floatExpr( Infinity) <=           -Infinity  or
            floatExpr( Infinity) <=             -1.0E37  or
            floatExpr( Infinity) <=             -1000.0  or
            floatExpr( Infinity) <=                -0.0  or
            floatExpr( Infinity) <=                 0.0  or
            floatExpr( Infinity) <=              1000.0  or
            floatExpr( Infinity) <=              1.0E37  or
        not floatExpr( Infinity) <=            Infinity  or
        not           -Infinity  <= floatExpr(-Infinity) or
        not           -Infinity  <= floatExpr(  -1.0E37) or
        not           -Infinity  <= floatExpr(  -1000.0) or
        not           -Infinity  <= floatExpr(     -0.0) or
        not           -Infinity  <= floatExpr(      0.0) or
        not           -Infinity  <= floatExpr(   1000.0) or
        not           -Infinity  <= floatExpr(   1.0E37) or
        not           -Infinity  <= floatExpr( Infinity) or
                        -1.0E37  <= floatExpr(-Infinity) or
        not             -1.0E37  <= floatExpr(  -1.0E37) or
        not             -1.0E37  <= floatExpr(  -1000.0) or
        not             -1.0E37  <= floatExpr(     -0.0) or
        not             -1.0E37  <= floatExpr(      0.0) or
        not             -1.0E37  <= floatExpr(   1000.0) or
        not             -1.0E37  <= floatExpr(   1.0E37) or
        not             -1.0E37  <= floatExpr( Infinity) or
                        -1000.0  <= floatExpr(-Infinity) or
                        -1000.0  <= floatExpr(  -1.0E37) or
        not             -1000.0  <= floatExpr(  -1000.0) or
        not             -1000.0  <= floatExpr(     -0.0) or
        not             -1000.0  <= floatExpr(      0.0) or
        not             -1000.0  <= floatExpr(   1000.0) or
        not             -1000.0  <= floatExpr(   1.0E37) or
        not             -1000.0  <= floatExpr( Infinity) or
                           -0.0  <= floatExpr(-Infinity) or
                           -0.0  <= floatExpr(  -1.0E37) or
                           -0.0  <= floatExpr(  -1000.0) or
        not                -0.0  <= floatExpr(     -0.0) or
        not                -0.0  <= floatExpr(      0.0) or
        not                -0.0  <= floatExpr(   1000.0) or
        not                -0.0  <= floatExpr(   1.0E37) or
        not                -0.0  <= floatExpr( Infinity) or
                            0.0  <= floatExpr(-Infinity) or
                            0.0  <= floatExpr(  -1.0E37) or
                            0.0  <= floatExpr(  -1000.0) or
        not                 0.0  <= floatExpr(     -0.0) or
        not                 0.0  <= floatExpr(      0.0) or
        not                 0.0  <= floatExpr(   1000.0) or
        not                 0.0  <= floatExpr(   1.0E37) or
        not                 0.0  <= floatExpr( Infinity) or
                         1000.0  <= floatExpr(-Infinity) or
                         1000.0  <= floatExpr(  -1.0E37) or
                         1000.0  <= floatExpr(  -1000.0) or
                         1000.0  <= floatExpr(     -0.0) or
                         1000.0  <= floatExpr(      0.0) or
        not              1000.0  <= floatExpr(   1000.0) or
        not              1000.0  <= floatExpr(   1.0E37) or
        not              1000.0  <= floatExpr( Infinity) or
                         1.0E37  <= floatExpr(-Infinity) or
                         1.0E37  <= floatExpr(  -1.0E37) or
                         1.0E37  <= floatExpr(  -1000.0) or
                         1.0E37  <= floatExpr(     -0.0) or
                         1.0E37  <= floatExpr(      0.0) or
                         1.0E37  <= floatExpr(   1000.0) or
        not              1.0E37  <= floatExpr(   1.0E37) or
        not              1.0E37  <= floatExpr( Infinity) or
                       Infinity  <= floatExpr(-Infinity) or
                       Infinity  <= floatExpr(  -1.0E37) or
                       Infinity  <= floatExpr(  -1000.0) or
                       Infinity  <= floatExpr(     -0.0) or
                       Infinity  <= floatExpr(      0.0) or
                       Infinity  <= floatExpr(   1000.0) or
                       Infinity  <= floatExpr(   1.0E37) or
        not            Infinity  <= floatExpr( Infinity) or
        not floatExpr(-Infinity) <= floatExpr(-Infinity) or
        not floatExpr(-Infinity) <= floatExpr(  -1.0E37) or
        not floatExpr(-Infinity) <= floatExpr(  -1000.0) or
        not floatExpr(-Infinity) <= floatExpr(     -0.0) or
        not floatExpr(-Infinity) <= floatExpr(      0.0) or
        not floatExpr(-Infinity) <= floatExpr(   1000.0) or
        not floatExpr(-Infinity) <= floatExpr(   1.0E37) or
        not floatExpr(-Infinity) <= floatExpr( Infinity) or
            floatExpr(  -1.0E37) <= floatExpr(-Infinity) or
        not floatExpr(  -1.0E37) <= floatExpr(  -1.0E37) or
        not floatExpr(  -1.0E37) <= floatExpr(  -1000.0) or
        not floatExpr(  -1.0E37) <= floatExpr(     -0.0) or
        not floatExpr(  -1.0E37) <= floatExpr(      0.0) or
        not floatExpr(  -1.0E37) <= floatExpr(   1000.0) or
        not floatExpr(  -1.0E37) <= floatExpr(   1.0E37) or
        not floatExpr(  -1.0E37) <= floatExpr( Infinity) or
            floatExpr(  -1000.0) <= floatExpr(-Infinity) or
            floatExpr(  -1000.0) <= floatExpr(  -1.0E37) or
        not floatExpr(  -1000.0) <= floatExpr(  -1000.0) or
        not floatExpr(  -1000.0) <= floatExpr(     -0.0) or
        not floatExpr(  -1000.0) <= floatExpr(      0.0) or
        not floatExpr(  -1000.0) <= floatExpr(   1000.0) or
        not floatExpr(  -1000.0) <= floatExpr(   1.0E37) or
        not floatExpr(  -1000.0) <= floatExpr( Infinity) or
            floatExpr(     -0.0) <= floatExpr(-Infinity) or
            floatExpr(     -0.0) <= floatExpr(  -1.0E37) or
            floatExpr(     -0.0) <= floatExpr(  -1000.0) or
        not floatExpr(     -0.0) <= floatExpr(     -0.0) or
        not floatExpr(     -0.0) <= floatExpr(      0.0) or
        not floatExpr(     -0.0) <= floatExpr(   1000.0) or
        not floatExpr(     -0.0) <= floatExpr(   1.0E37) or
        not floatExpr(     -0.0) <= floatExpr( Infinity) or
            floatExpr(      0.0) <= floatExpr(-Infinity) or
            floatExpr(      0.0) <= floatExpr(  -1.0E37) or
            floatExpr(      0.0) <= floatExpr(  -1000.0) or
        not floatExpr(      0.0) <= floatExpr(     -0.0) or
        not floatExpr(      0.0) <= floatExpr(      0.0) or
        not floatExpr(      0.0) <= floatExpr(   1000.0) or
        not floatExpr(      0.0) <= floatExpr(   1.0E37) or
        not floatExpr(      0.0) <= floatExpr( Infinity) or
            floatExpr(   1000.0) <= floatExpr(-Infinity) or
            floatExpr(   1000.0) <= floatExpr(  -1.0E37) or
            floatExpr(   1000.0) <= floatExpr(  -1000.0) or
            floatExpr(   1000.0) <= floatExpr(     -0.0) or
            floatExpr(   1000.0) <= floatExpr(      0.0) or
        not floatExpr(   1000.0) <= floatExpr(   1000.0) or
        not floatExpr(   1000.0) <= floatExpr(   1.0E37) or
        not floatExpr(   1000.0) <= floatExpr( Infinity) or
            floatExpr(   1.0E37) <= floatExpr(-Infinity) or
            floatExpr(   1.0E37) <= floatExpr(  -1.0E37) or
            floatExpr(   1.0E37) <= floatExpr(  -1000.0) or
            floatExpr(   1.0E37) <= floatExpr(     -0.0) or
            floatExpr(   1.0E37) <= floatExpr(      0.0) or
            floatExpr(   1.0E37) <= floatExpr(   1000.0) or
        not floatExpr(   1.0E37) <= floatExpr(   1.0E37) or
        not floatExpr(   1.0E37) <= floatExpr( Infinity) or
            floatExpr( Infinity) <= floatExpr(-Infinity) or
            floatExpr( Infinity) <= floatExpr(  -1.0E37) or
            floatExpr( Infinity) <= floatExpr(  -1000.0) or
            floatExpr( Infinity) <= floatExpr(     -0.0) or
            floatExpr( Infinity) <= floatExpr(      0.0) or
            floatExpr( Infinity) <= floatExpr(   1000.0) or
            floatExpr( Infinity) <= floatExpr(   1.0E37) or
        not floatExpr( Infinity) <= floatExpr( Infinity) then
      writeln(" ***** Less equal for float values does not work correct.");
      okay := FALSE;
    end if;

    if  not           -Infinity  >=           -Infinity  or
                      -Infinity  >=             -1.0E37  or
                      -Infinity  >=             -1000.0  or
                      -Infinity  >=                -0.0  or
                      -Infinity  >=                 0.0  or
                      -Infinity  >=              1000.0  or
                      -Infinity  >=              1.0E37  or
                      -Infinity  >=            Infinity  or
        not             -1.0E37  >=           -Infinity  or
        not             -1.0E37  >=             -1.0E37  or
                        -1.0E37  >=             -1000.0  or
                        -1.0E37  >=                -0.0  or
                        -1.0E37  >=                 0.0  or
                        -1.0E37  >=              1000.0  or
                        -1.0E37  >=              1.0E37  or
                        -1.0E37  >=            Infinity  or
        not             -1000.0  >=           -Infinity  or
        not             -1000.0  >=             -1.0E37  or
        not             -1000.0  >=             -1000.0  or
                        -1000.0  >=                -0.0  or
                        -1000.0  >=                 0.0  or
                        -1000.0  >=              1000.0  or
                        -1000.0  >=              1.0E37  or
                        -1000.0  >=            Infinity  or
        not                -0.0  >=           -Infinity  or
        not                -0.0  >=             -1.0E37  or
        not                -0.0  >=             -1000.0  or
        not                -0.0  >=                -0.0  or
        not                -0.0  >=                 0.0  or
                           -0.0  >=              1000.0  or
                           -0.0  >=              1.0E37  or
                           -0.0  >=            Infinity  or
        not                 0.0  >=           -Infinity  or
        not                 0.0  >=             -1.0E37  or
        not                 0.0  >=             -1000.0  or
        not                 0.0  >=                -0.0  or
        not                 0.0  >=                 0.0  or
                            0.0  >=              1000.0  or
                            0.0  >=              1.0E37  or
                            0.0  >=            Infinity  or
        not              1000.0  >=           -Infinity  or
        not              1000.0  >=             -1.0E37  or
        not              1000.0  >=             -1000.0  or
        not              1000.0  >=                -0.0  or
        not              1000.0  >=                 0.0  or
        not              1000.0  >=              1000.0  or
                         1000.0  >=              1.0E37  or
                         1000.0  >=            Infinity  or
        not              1.0E37  >=           -Infinity  or
        not              1.0E37  >=             -1.0E37  or
        not              1.0E37  >=             -1000.0  or
        not              1.0E37  >=                -0.0  or
        not              1.0E37  >=                 0.0  or
        not              1.0E37  >=              1000.0  or
        not              1.0E37  >=              1.0E37  or
                         1.0E37  >=            Infinity  or
        not            Infinity  >=           -Infinity  or
        not            Infinity  >=             -1.0E37  or
        not            Infinity  >=             -1000.0  or
        not            Infinity  >=                -0.0  or
        not            Infinity  >=                 0.0  or
        not            Infinity  >=              1000.0  or
        not            Infinity  >=              1.0E37  or
        not            Infinity  >=            Infinity  or
        not floatExpr(-Infinity) >=           -Infinity  or
            floatExpr(-Infinity) >=             -1.0E37  or
            floatExpr(-Infinity) >=             -1000.0  or
            floatExpr(-Infinity) >=                -0.0  or
            floatExpr(-Infinity) >=                 0.0  or
            floatExpr(-Infinity) >=              1000.0  or
            floatExpr(-Infinity) >=              1.0E37  or
            floatExpr(-Infinity) >=            Infinity  or
        not floatExpr(  -1.0E37) >=           -Infinity  or
        not floatExpr(  -1.0E37) >=             -1.0E37  or
            floatExpr(  -1.0E37) >=             -1000.0  or
            floatExpr(  -1.0E37) >=                -0.0  or
            floatExpr(  -1.0E37) >=                 0.0  or
            floatExpr(  -1.0E37) >=              1000.0  or
            floatExpr(  -1.0E37) >=              1.0E37  or
            floatExpr(  -1.0E37) >=            Infinity  or
        not floatExpr(  -1000.0) >=           -Infinity  or
        not floatExpr(  -1000.0) >=             -1.0E37  or
        not floatExpr(  -1000.0) >=             -1000.0  or
            floatExpr(  -1000.0) >=                -0.0  or
            floatExpr(  -1000.0) >=                 0.0  or
            floatExpr(  -1000.0) >=              1000.0  or
            floatExpr(  -1000.0) >=              1.0E37  or
            floatExpr(  -1000.0) >=            Infinity  or
        not floatExpr(     -0.0) >=           -Infinity  or
        not floatExpr(     -0.0) >=             -1.0E37  or
        not floatExpr(     -0.0) >=             -1000.0  or
        not floatExpr(     -0.0) >=                -0.0  or
        not floatExpr(     -0.0) >=                 0.0  or
            floatExpr(     -0.0) >=              1000.0  or
            floatExpr(     -0.0) >=              1.0E37  or
            floatExpr(     -0.0) >=            Infinity  or
        not floatExpr(      0.0) >=           -Infinity  or
        not floatExpr(      0.0) >=             -1.0E37  or
        not floatExpr(      0.0) >=             -1000.0  or
        not floatExpr(      0.0) >=                -0.0  or
        not floatExpr(      0.0) >=                 0.0  or
            floatExpr(      0.0) >=              1000.0  or
            floatExpr(      0.0) >=              1.0E37  or
            floatExpr(      0.0) >=            Infinity  or
        not floatExpr(   1000.0) >=           -Infinity  or
        not floatExpr(   1000.0) >=             -1.0E37  or
        not floatExpr(   1000.0) >=             -1000.0  or
        not floatExpr(   1000.0) >=                -0.0  or
        not floatExpr(   1000.0) >=                 0.0  or
        not floatExpr(   1000.0) >=              1000.0  or
            floatExpr(   1000.0) >=              1.0E37  or
            floatExpr(   1000.0) >=            Infinity  or
        not floatExpr(   1.0E37) >=           -Infinity  or
        not floatExpr(   1.0E37) >=             -1.0E37  or
        not floatExpr(   1.0E37) >=             -1000.0  or
        not floatExpr(   1.0E37) >=                -0.0  or
        not floatExpr(   1.0E37) >=                 0.0  or
        not floatExpr(   1.0E37) >=              1000.0  or
        not floatExpr(   1.0E37) >=              1.0E37  or
            floatExpr(   1.0E37) >=            Infinity  or
        not floatExpr( Infinity) >=           -Infinity  or
        not floatExpr( Infinity) >=             -1.0E37  or
        not floatExpr( Infinity) >=             -1000.0  or
        not floatExpr( Infinity) >=                -0.0  or
        not floatExpr( Infinity) >=                 0.0  or
        not floatExpr( Infinity) >=              1000.0  or
        not floatExpr( Infinity) >=              1.0E37  or
        not floatExpr( Infinity) >=            Infinity  or
        not           -Infinity  >= floatExpr(-Infinity) or
                      -Infinity  >= floatExpr(  -1.0E37) or
                      -Infinity  >= floatExpr(  -1000.0) or
                      -Infinity  >= floatExpr(     -0.0) or
                      -Infinity  >= floatExpr(      0.0) or
                      -Infinity  >= floatExpr(   1000.0) or
                      -Infinity  >= floatExpr(   1.0E37) or
                      -Infinity  >= floatExpr( Infinity) or
        not             -1.0E37  >= floatExpr(-Infinity) or
        not             -1.0E37  >= floatExpr(  -1.0E37) or
                        -1.0E37  >= floatExpr(  -1000.0) or
                        -1.0E37  >= floatExpr(     -0.0) or
                        -1.0E37  >= floatExpr(      0.0) or
                        -1.0E37  >= floatExpr(   1000.0) or
                        -1.0E37  >= floatExpr(   1.0E37) or
                        -1.0E37  >= floatExpr( Infinity) or
        not             -1000.0  >= floatExpr(-Infinity) or
        not             -1000.0  >= floatExpr(  -1.0E37) or
        not             -1000.0  >= floatExpr(  -1000.0) or
                        -1000.0  >= floatExpr(     -0.0) or
                        -1000.0  >= floatExpr(      0.0) or
                        -1000.0  >= floatExpr(   1000.0) or
                        -1000.0  >= floatExpr(   1.0E37) or
                        -1000.0  >= floatExpr( Infinity) or
        not                -0.0  >= floatExpr(-Infinity) or
        not                -0.0  >= floatExpr(  -1.0E37) or
        not                -0.0  >= floatExpr(  -1000.0) or
        not                -0.0  >= floatExpr(     -0.0) or
        not                -0.0  >= floatExpr(      0.0) or
                           -0.0  >= floatExpr(   1000.0) or
                           -0.0  >= floatExpr(   1.0E37) or
                           -0.0  >= floatExpr( Infinity) or
        not                 0.0  >= floatExpr(-Infinity) or
        not                 0.0  >= floatExpr(  -1.0E37) or
        not                 0.0  >= floatExpr(  -1000.0) or
        not                 0.0  >= floatExpr(     -0.0) or
        not                 0.0  >= floatExpr(      0.0) or
                            0.0  >= floatExpr(   1000.0) or
                            0.0  >= floatExpr(   1.0E37) or
                            0.0  >= floatExpr( Infinity) or
        not              1000.0  >= floatExpr(-Infinity) or
        not              1000.0  >= floatExpr(  -1.0E37) or
        not              1000.0  >= floatExpr(  -1000.0) or
        not              1000.0  >= floatExpr(     -0.0) or
        not              1000.0  >= floatExpr(      0.0) or
        not              1000.0  >= floatExpr(   1000.0) or
                         1000.0  >= floatExpr(   1.0E37) or
                         1000.0  >= floatExpr( Infinity) or
        not              1.0E37  >= floatExpr(-Infinity) or
        not              1.0E37  >= floatExpr(  -1.0E37) or
        not              1.0E37  >= floatExpr(  -1000.0) or
        not              1.0E37  >= floatExpr(     -0.0) or
        not              1.0E37  >= floatExpr(      0.0) or
        not              1.0E37  >= floatExpr(   1000.0) or
        not              1.0E37  >= floatExpr(   1.0E37) or
                         1.0E37  >= floatExpr( Infinity) or
        not            Infinity  >= floatExpr(-Infinity) or
        not            Infinity  >= floatExpr(  -1.0E37) or
        not            Infinity  >= floatExpr(  -1000.0) or
        not            Infinity  >= floatExpr(     -0.0) or
        not            Infinity  >= floatExpr(      0.0) or
        not            Infinity  >= floatExpr(   1000.0) or
        not            Infinity  >= floatExpr(   1.0E37) or
        not            Infinity  >= floatExpr( Infinity) or
        not floatExpr(-Infinity) >= floatExpr(-Infinity) or
            floatExpr(-Infinity) >= floatExpr(  -1.0E37) or
            floatExpr(-Infinity) >= floatExpr(  -1000.0) or
            floatExpr(-Infinity) >= floatExpr(     -0.0) or
            floatExpr(-Infinity) >= floatExpr(      0.0) or
            floatExpr(-Infinity) >= floatExpr(   1000.0) or
            floatExpr(-Infinity) >= floatExpr(   1.0E37) or
            floatExpr(-Infinity) >= floatExpr( Infinity) or
        not floatExpr(  -1.0E37) >= floatExpr(-Infinity) or
        not floatExpr(  -1.0E37) >= floatExpr(  -1.0E37) or
            floatExpr(  -1.0E37) >= floatExpr(  -1000.0) or
            floatExpr(  -1.0E37) >= floatExpr(     -0.0) or
            floatExpr(  -1.0E37) >= floatExpr(      0.0) or
            floatExpr(  -1.0E37) >= floatExpr(   1000.0) or
            floatExpr(  -1.0E37) >= floatExpr(   1.0E37) or
            floatExpr(  -1.0E37) >= floatExpr( Infinity) or
        not floatExpr(  -1000.0) >= floatExpr(-Infinity) or
        not floatExpr(  -1000.0) >= floatExpr(  -1.0E37) or
        not floatExpr(  -1000.0) >= floatExpr(  -1000.0) or
            floatExpr(  -1000.0) >= floatExpr(     -0.0) or
            floatExpr(  -1000.0) >= floatExpr(      0.0) or
            floatExpr(  -1000.0) >= floatExpr(   1000.0) or
            floatExpr(  -1000.0) >= floatExpr(   1.0E37) or
            floatExpr(  -1000.0) >= floatExpr( Infinity) or
        not floatExpr(     -0.0) >= floatExpr(-Infinity) or
        not floatExpr(     -0.0) >= floatExpr(  -1.0E37) or
        not floatExpr(     -0.0) >= floatExpr(  -1000.0) or
        not floatExpr(     -0.0) >= floatExpr(     -0.0) or
        not floatExpr(     -0.0) >= floatExpr(      0.0) or
            floatExpr(     -0.0) >= floatExpr(   1000.0) or
            floatExpr(     -0.0) >= floatExpr(   1.0E37) or
            floatExpr(     -0.0) >= floatExpr( Infinity) or
        not floatExpr(      0.0) >= floatExpr(-Infinity) or
        not floatExpr(      0.0) >= floatExpr(  -1.0E37) or
        not floatExpr(      0.0) >= floatExpr(  -1000.0) or
        not floatExpr(      0.0) >= floatExpr(     -0.0) or
        not floatExpr(      0.0) >= floatExpr(      0.0) or
            floatExpr(      0.0) >= floatExpr(   1000.0) or
            floatExpr(      0.0) >= floatExpr(   1.0E37) or
            floatExpr(      0.0) >= floatExpr( Infinity) or
        not floatExpr(   1000.0) >= floatExpr(-Infinity) or
        not floatExpr(   1000.0) >= floatExpr(  -1.0E37) or
        not floatExpr(   1000.0) >= floatExpr(  -1000.0) or
        not floatExpr(   1000.0) >= floatExpr(     -0.0) or
        not floatExpr(   1000.0) >= floatExpr(      0.0) or
        not floatExpr(   1000.0) >= floatExpr(   1000.0) or
            floatExpr(   1000.0) >= floatExpr(   1.0E37) or
            floatExpr(   1000.0) >= floatExpr( Infinity) or
        not floatExpr(   1.0E37) >= floatExpr(-Infinity) or
        not floatExpr(   1.0E37) >= floatExpr(  -1.0E37) or
        not floatExpr(   1.0E37) >= floatExpr(  -1000.0) or
        not floatExpr(   1.0E37) >= floatExpr(     -0.0) or
        not floatExpr(   1.0E37) >= floatExpr(      0.0) or
        not floatExpr(   1.0E37) >= floatExpr(   1000.0) or
        not floatExpr(   1.0E37) >= floatExpr(   1.0E37) or
            floatExpr(   1.0E37) >= floatExpr( Infinity) or
        not floatExpr( Infinity) >= floatExpr(-Infinity) or
        not floatExpr( Infinity) >= floatExpr(  -1.0E37) or
        not floatExpr( Infinity) >= floatExpr(  -1000.0) or
        not floatExpr( Infinity) >= floatExpr(     -0.0) or
        not floatExpr( Infinity) >= floatExpr(      0.0) or
        not floatExpr( Infinity) >= floatExpr(   1000.0) or
        not floatExpr( Infinity) >= floatExpr(   1.0E37) or
        not floatExpr( Infinity) >= floatExpr( Infinity) then
      writeln(" ***** Greater equal for float values does not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Comparison of float values works correct.");
    else
      writeln(" ***** Comparison of float values does not work correct.");
      writeln;
    end if;
  end func;


const proc: check_compare is func
  local
    var boolean: okay is TRUE;
  begin
    if  compare(-Infinity,       -Infinity) <>  0  or
        compare(-Infinity,         -1.0E37) <> -1  or
        compare(-Infinity,         -1000.0) <> -1  or
        compare(-Infinity,            -0.0) <> -1  or
        compare(-Infinity,             0.0) <> -1  or
        compare(-Infinity,          1000.0) <> -1  or
        compare(-Infinity,          1.0E37) <> -1  or
        compare(-Infinity,        Infinity) <> -1  or
        compare(-Infinity,             NaN) <> -1  or
        compare(  -1.0E37,       -Infinity) <>  1  or
        compare(  -1.0E37,         -1.0E37) <>  0  or
        compare(  -1.0E37,         -1000.0) <> -1  or
        compare(  -1.0E37,            -0.0) <> -1  or
        compare(  -1.0E37,             0.0) <> -1  or
        compare(  -1.0E37,          1000.0) <> -1  or
        compare(  -1.0E37,          1.0E37) <> -1  or
        compare(  -1.0E37,        Infinity) <> -1  or
        compare(  -1.0E37,             NaN) <> -1  or
        compare(  -1000.0,       -Infinity) <>  1  or
        compare(  -1000.0,         -1.0E37) <>  1  or
        compare(  -1000.0,         -1000.0) <>  0  or
        compare(  -1000.0,            -0.0) <> -1  or
        compare(  -1000.0,             0.0) <> -1  or
        compare(  -1000.0,          1000.0) <> -1  or
        compare(  -1000.0,          1.0E37) <> -1  or
        compare(  -1000.0,        Infinity) <> -1  or
        compare(  -1000.0,             NaN) <> -1  or
        compare(     -0.0,       -Infinity) <>  1  or
        compare(     -0.0,         -1.0E37) <>  1  or
        compare(     -0.0,         -1000.0) <>  1  or
        compare(     -0.0,            -0.0) <>  0  or
        compare(     -0.0,             0.0) <>  0  or
        compare(     -0.0,          1000.0) <> -1  or
        compare(     -0.0,          1.0E37) <> -1  or
        compare(     -0.0,        Infinity) <> -1  or
        compare(     -0.0,             NaN) <> -1  or
        compare(      0.0,       -Infinity) <>  1  or
        compare(      0.0,         -1.0E37) <>  1  or
        compare(      0.0,         -1000.0) <>  1  or
        compare(      0.0,            -0.0) <>  0  or
        compare(      0.0,             0.0) <>  0  or
        compare(      0.0,          1000.0) <> -1  or
        compare(      0.0,          1.0E37) <> -1  or
        compare(      0.0,        Infinity) <> -1  or
        compare(      0.0,             NaN) <> -1  or
        compare(   1000.0,       -Infinity) <>  1  or
        compare(   1000.0,         -1.0E37) <>  1  or
        compare(   1000.0,         -1000.0) <>  1  or
        compare(   1000.0,            -0.0) <>  1  or
        compare(   1000.0,             0.0) <>  1  or
        compare(   1000.0,          1000.0) <>  0  or
        compare(   1000.0,          1.0E37) <> -1  or
        compare(   1000.0,        Infinity) <> -1  or
        compare(   1000.0,             NaN) <> -1  or
        compare(   1.0E37,       -Infinity) <>  1  or
        compare(   1.0E37,         -1.0E37) <>  1  or
        compare(   1.0E37,         -1000.0) <>  1  or
        compare(   1.0E37,            -0.0) <>  1  or
        compare(   1.0E37,             0.0) <>  1  or
        compare(   1.0E37,          1000.0) <>  1  or
        compare(   1.0E37,          1.0E37) <>  0  or
        compare(   1.0E37,        Infinity) <> -1  or
        compare(   1.0E37,             NaN) <> -1  or
        compare( Infinity,       -Infinity) <>  1  or
        compare( Infinity,         -1.0E37) <>  1  or
        compare( Infinity,         -1000.0) <>  1  or
        compare( Infinity,            -0.0) <>  1  or
        compare( Infinity,             0.0) <>  1  or
        compare( Infinity,          1000.0) <>  1  or
        compare( Infinity,          1.0E37) <>  1  or
        compare( Infinity,        Infinity) <>  0  or
        compare( Infinity,             NaN) <> -1  or
        compare(      NaN,       -Infinity) <>  1  or
        compare(      NaN,         -1.0E37) <>  1  or
        compare(      NaN,         -1000.0) <>  1  or
        compare(      NaN,            -0.0) <>  1  or
        compare(      NaN,             0.0) <>  1  or
        compare(      NaN,          1000.0) <>  1  or
        compare(      NaN,          1.0E37) <>  1  or
        compare(      NaN,        Infinity) <>  1  or
        compare(      NaN,             NaN) <>  0  then
      writeln(" ***** Compare for float values does not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Compare of float values works correct.");
    else
      writeln(" ***** Compare of float values does not work correct.");
      writeln;
    end if;
  end func;


const proc: check_parse is func
  local
    var boolean: okay is TRUE;
  begin
    if  float parse                    "0.0"  <>       0.0 or
        float parse                   "-0.0"  <>       0.0 or
        float parse                    "1.0"  <>       1.0 or
        float parse                   "-1.0"  <>      -1.0 or
        float parse               "Infinity"  <>  Infinity or
        float parse              "-Infinity"  <> -Infinity or
        not isNaN(float parse          "NaN")              or
        float parse striExpr(          "0.0") <>       0.0 or
        float parse striExpr(         "-0.0") <>       0.0 or
        float parse striExpr(          "1.0") <>       1.0 or
        float parse striExpr(         "-1.0") <>      -1.0 or
        float parse striExpr(     "Infinity") <>  Infinity or
        float parse striExpr(    "-Infinity") <> -Infinity or
        not isNaN(float parse striExpr("NaN"))             or
        str(                0.0)  <>       "0.0" or
        str(               -0.0)  <>       "0.0" or
        str(                1.0)  <>       "1.0" or
        str(               -1.0)  <>      "-1.0" or
        str(           Infinity)  <>  "Infinity" or
        str(          -Infinity)  <> "-Infinity" or
        str(                NaN)  <>       "NaN" or
        str(floatExpr(      0.0)) <>       "0.0" or
        str(floatExpr(     -0.0)) <>       "0.0" or
        str(floatExpr(      1.0)) <>       "1.0" or
        str(floatExpr(     -1.0)) <>      "-1.0" or
        str(floatExpr( Infinity)) <>  "Infinity" or
        str(floatExpr(-Infinity)) <> "-Infinity" or
        str(floatExpr(      NaN)) <>       "NaN" or
        (          0.012345   digits 4)      <> "0.0123"     or
        (          1.2468     digits 2)      <> "1.25"       or
        (          3.1415     digits 0)      <> "3"          or
      # (          0.125      digits 2)      <> "0.12"       or
        (          0.375      digits 2)      <> "0.38"       or
        (          Infinity   digits 5)      <> "Infinity"   or
        (          -Infinity  digits 6)      <> "-Infinity"  or
        (          NaN        digits 7)      <> "NaN"        or
        (          -0.004     digits 2)      <> "0.00"       or
        (floatExpr(0.012345 ) digits 4)      <> "0.0123"     or
        (floatExpr(1.2468   ) digits 2)      <> "1.25"       or
        (floatExpr(3.1415   ) digits 0)      <> "3"          or
      # (floatExpr(0.125    ) digits 2)      <> "0.12"       or
        (floatExpr(0.375    ) digits 2)      <> "0.38"       or
        (floatExpr(Infinity ) digits 5)      <> "Infinity"   or
        (floatExpr(-Infinity) digits 6)      <> "-Infinity"  or
        (floatExpr(NaN      ) digits 7)      <> "NaN"        or
        (floatExpr(-0.004   ) digits 2)      <> "0.00"       or
        (          0.012345   sci 4)         <> "1.2345e-2"  or
        (          1.2468     sci 2)         <> "1.25e+0"    or
        (          3.1415     sci 0)         <> "3e+0"       or
      # (          0.125      sci 1)         <> "1.2e-1"     or
        (          0.375      sci 1)         <> "3.8e-1"     or
        (          Infinity   sci 5)         <> "Infinity"   or
        (          -Infinity  sci 6)         <> "-Infinity"  or
        (          NaN        sci 7)         <> "NaN"        or
        (          -0.004     sci 2)         <> "-4.00e-3"   or
        (floatExpr(0.012345 ) sci 4)         <> "1.2345e-2"  or
        (floatExpr(1.2468   ) sci 2)         <> "1.25e+0"    or
        (floatExpr(3.1415   ) sci 0)         <> "3e+0"       or
      # (floatExpr(0.125    ) sci 1)         <> "1.2e-1"     or
        (floatExpr(0.375    ) sci 1)         <> "3.8e-1"     or
        (floatExpr(Infinity ) sci 5)         <> "Infinity"   or
        (floatExpr(-Infinity) sci 6)         <> "-Infinity"  or
        (floatExpr(NaN      ) sci 7)         <> "NaN"        or
        (floatExpr(-0.004   ) sci 2)         <> "-4.00e-3"   or
        (          0.012345   sci 4 exp 2)   <> "1.2345e-02" or
        (          1.2468e15  sci 2 exp 1)   <> "1.25e+15"   or
        (          3.1415     sci 0 exp 3)   <> "3e+000"     or
      # (          0.125      sci 1 exp 2)   <> "1.2e-01"    or
        (          0.375      sci 1 exp 2)   <> "3.8e-01"    or
        (          Infinity   sci 5 exp 2)   <> "Infinity"   or
        (          -Infinity  sci 6 exp 2)   <> "-Infinity"  or
        (          NaN        sci 7 exp 2)   <> "NaN"        or
        (          -0.004     sci 2 exp 2)   <> "-4.00e-03"  or
        (floatExpr(0.012345 ) sci 4 exp 2)   <> "1.2345e-02" or
        (floatExpr(1.2468e15) sci 2 exp 1)   <> "1.25e+15"   or
        (floatExpr(3.1415   ) sci 0 exp 3)   <> "3e+000"     or
      # (floatExpr(0.125    ) sci 1 exp 2)   <> "1.2e-01"    or
        (floatExpr(0.375    ) sci 1 exp 2)   <> "3.8e-01"    or
        (floatExpr(Infinity ) sci 5 exp 2)   <> "Infinity"   or
        (floatExpr(-Infinity) sci 6 exp 2)   <> "-Infinity"  or
        (floatExpr(NaN      ) sci 7 exp 2)   <> "NaN"        or
        (floatExpr(-0.004   ) sci 2 exp 2)   <> "-4.00e-03"  then
      writeln(" ***** Decimal conversion of float does not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Decimal conversion of float works correct.");
    else
      writeln(" ***** Decimal conversion of float does not work correct.");
      writeln;
    end if;
  end func;


const proc: check_conversion is func
  local
    var boolean: okay is TRUE;
  begin
    if  float conv        (-2) <>         -2.0 or
        float conv        (-1) <>         -1.0 or
        float conv          0  <>          0.0 or
        float conv          1  <>          1.0 or
        float conv         10  <>         10.0 or
        float conv        100  <>        100.0 or
        float conv       1000  <>       1000.0 or
        float conv      10000  <>      10000.0 or
        float conv     100000  <>     100000.0 or
        float conv    1000000  <>    1000000.0 or
        float conv   10000000  <>   10000000.0 or
        float conv  100000000  <>  100000000.0 or
        float conv 1000000000  <> 1000000000.0 then
      writeln(" ***** Conversion from integer to float does not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Conversion from integer to float works correct.");
    else
      writeln(" ***** Conversion from integer to float does not work correct.");
      writeln;
    end if;
  end func;


const proc: check_trunc is func
  local
    var boolean: okay is TRUE;
  begin
    if  trunc(-1000000000.0) <> -1000000000 or
        trunc( -100000000.0) <>  -100000000 or
        trunc(  -10000000.0) <>   -10000000 or
        trunc(   -1000000.0) <>    -1000000 or
        trunc(    -100000.0) <>     -100000 or
        trunc(     -10000.0) <>      -10000 or
        trunc(      -1000.0) <>       -1000 or
        trunc(       -100.0) <>        -100 or
        trunc(        -10.0) <>         -10 or
        trunc(         -1.0) <>          -1 or
        trunc(          0.0) <>           0 or
        trunc(          1.0) <>           1 or
        trunc(         10.0) <>          10 or
        trunc(        100.0) <>         100 or
        trunc(       1000.0) <>        1000 or
        trunc(      10000.0) <>       10000 or
        trunc(     100000.0) <>      100000 or
        trunc(    1000000.0) <>     1000000 or
        trunc(   10000000.0) <>    10000000 or
        trunc(  100000000.0) <>   100000000 or
        trunc( 1000000000.0) <>  1000000000 then
      writeln(" ***** Truncation of float does not work correct.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Truncation of float works correct.");
    else
      writeln(" ***** Truncation of float does not work correct.");
      writeln;
    end if;
  end func;


const proc: check_add is func
  begin
    if           0.0 +          0.0 =          0.0 and
                 2.0 +          3.0 =          5.0 and
               127.0 +        127.0 =        254.0 and
               255.0 +        255.0 =        510.0 and
             18341.0 +      26783.0 =      45124.0 and
             32767.0 +      32767.0 =      65534.0 and
             35759.0 +      58537.0 =      94296.0 and
             65535.0 +      65535.0 =     131070.0 and
             73819.0 +     124303.0 =     198122.0 and
        2147483647.0 +          0.0 = 2147483647.0 and
                 0.0 + 2147483647.0 = 2147483647.0 and
                 0.1 +          0.0 =          0.1 and
                 0.0 +          0.1 =          0.1 and
                 2.3 +          3.2 =          5.5 and
             390.625 +     195.3125 =     585.9375 and
             0.78125 +      0.15625 =       0.9375 then
      writeln("Addition works correct for selected values.");
    else
      writeln(" ***** Addition does not work correct");
    end if;
  end func;


const proc: check_division is func
  begin
    if             0.0  /             1.0  =  0.0  and
                   0.0  /            12.0  =  0.0  and
                   1.0  /             2.0  =  0.5  and
                   1.0  /             4.0  =  0.25 and
        floatExpr( 0.0) /             1.0  =  0.0  and
        floatExpr( 0.0) /            12.0  =  0.0  and
        floatExpr( 1.0) /             2.0  =  0.5  and
        floatExpr( 1.0) /             4.0  =  0.25 and
                   0.0  / floatExpr(  1.0) =  0.0  and
                   0.0  / floatExpr( 12.0) =  0.0  and
                   1.0  / floatExpr(  2.0) =  0.5  and
                   1.0  / floatExpr(  4.0) =  0.25 and
        floatExpr( 0.0) / floatExpr(  1.0) =  0.0  and
        floatExpr( 0.0) / floatExpr( 12.0) =  0.0  and
        floatExpr( 1.0) / floatExpr(  2.0) =  0.5  and
        floatExpr( 1.0) / floatExpr(  4.0) =  0.25 then
      writeln("Division works correct for selected values.");
    else
      writeln(" ***** Division does not work correct");
    end if;
  end func;


const proc: check_power is func
  begin
    if       (-2.0) ** (-2.0) =  0.25 and
       isNaN((-2.0) ** (-1.5))        and
             (-2.0) ** (-1.0) = -0.5  and
       isNaN((-2.0) ** (-0.5))        and
             (-2.0) **   0.0  =  1.0  and
       isNaN((-2.0) **   0.5 )        and
             (-2.0) **   1.0  = -2.0  and
       isNaN((-2.0) **   1.5 )        and
             (-2.0) **   2.0  =  4.0  and
       #     (-1.5) ** (-2.0) =  0.444444 and
       isNaN((-1.5) ** (-1.5))        and
       #     (-1.5) ** (-1.0) = -0.666667 and
       isNaN((-1.5) ** (-0.5))        and
             (-1.5) **   0.0  =  1.0  and
       isNaN((-1.5) **   0.5 )        and
             (-1.5) **   1.0  = -1.5  and
       isNaN((-1.5) **   1.5 )        and
             (-1.5) **   2.0  =  2.25 and
             (-1.0) ** (-2.0) =  1.0  and
       isNaN((-1.0) ** (-1.5))        and
             (-1.0) ** (-1.0) = -1.0  and
       isNaN((-1.0) ** (-0.5))        and
             (-1.0) **   0.0  =  1.0  and
       isNaN((-1.0) **   0.5 )        and
             (-1.0) **   1.0  = -1.0  and
       isNaN((-1.0) **   1.5 )        and
             (-1.0) **   2.0  =  1.0  and
             (-0.5) ** (-2.0) =  4.0  and
       isNaN((-0.5) ** (-1.5))        and
             (-0.5) ** (-1.0) = -2.0  and
       isNaN((-0.5) ** (-0.5))        and
             (-0.5) **   0.0  =  1.0  and
       isNaN((-0.5) **   0.5 )        and
             (-0.5) **   1.0  = -0.5  and
       isNaN((-0.5) **   1.5 )        and
             (-0.5) **   2.0  = 0.25  and
               0.0  ** (-2.0) = Infinity and
               0.0  ** (-1.5) = Infinity and
               0.0  ** (-1.0) = Infinity and
               0.0  ** (-0.5) = Infinity and
               0.0  **   0.0  = 1.0 and
               0.0  **   0.5  = 0.0 and
               0.0  **   1.0  = 0.0 and
               0.0  **   1.5  = 0.0 and
               0.0  **   2.0  = 0.0 and
               0.5  ** (-2.0) = 4.0 and
        #      0.5  ** (-1.5) = 2.828427 and
               0.5  ** (-1.0) = 2.0 and
        #      0.5  ** (-0.5) = 1.414214 and
               0.5  **   0.0  = 1.0 and
        #      0.5  **   0.5  = 0.707107 and
               0.5  **   1.0  = 0.5 and
        #      0.5  **   1.5  = 0.353553 and
               0.5  **   2.0  = 0.25 and
               1.0  ** (-2.0) = 1.0 and
               1.0  ** (-1.5) = 1.0 and
               1.0  ** (-1.0) = 1.0 and
               1.0  ** (-0.5) = 1.0 and
               1.0  **   0.0  = 1.0 and
               1.0  **   0.5  = 1.0 and
               1.0  **   1.0  = 1.0 and
               1.0  **   1.5  = 1.0 and
               1.0  **   2.0  = 1.0 and
        #      1.5  ** (-2.0) = 0.444444 and
        #      1.5  ** (-1.5) = 0.544331 and
        #      1.5  ** (-1.0) = 0.666667 and
        #      1.5  ** (-0.5) = 0.816497 and
               1.5  **   0.0  = 1.0 and
        #      1.5  **   0.5  = 1.224745 and
               1.5  **   1.0  = 1.5 and
        #      1.5  **   1.5  = 1.837117 and
               1.5  **   2.0  = 2.25 then
      writeln("A ** B works correct for selected values.");
    else
      writeln(" ***** A ** B does not work correct");
    end if;
  end func;


const proc: check_ipower is func
  begin
    if (-2.0) ** (-2) = 0.25 and
       (-2.0) ** (-1) = -0.5 and
       (-2.0) **   0  = 1.0 and
       (-2.0) **   1  = -2.0 and
       (-2.0) **   2  = 4.0 and
       #(-1.5) ** (-2) = 0.444444 and
       #(-1.5) ** (-1) = -0.666667 and
       (-1.5) **   0  = 1.0 and
       (-1.5) **   1  = -1.5 and
       (-1.5) **   2  = 2.25 and
       (-1.0) ** (-2) = 1.0 and
       (-1.0) ** (-1) = -1.0 and
       (-1.0) **   0  = 1.0 and
       (-1.0) **   1  = -1.0 and
       (-1.0) **   2  = 1.0 and
       (-0.5) ** (-2) = 4.0 and
       (-0.5) ** (-1) = -2.0 and
       (-0.5) **   0  = 1.0 and
       (-0.5) **   1  = -0.5 and
       (-0.5) **   2  = 0.25 and
         0.0  ** (-2) = Infinity and
         0.0  ** (-1) = Infinity and
         0.0  **   0  = 1.0 and
         0.0  **   1  = 0.0 and
         0.0  **   2  = 0.0 and
         0.5  ** (-2) = 4.0 and
         0.5  ** (-1) = 2.0 and
         0.5  **   0  = 1.0 and
         0.5  **   1  = 0.5 and
         0.5  **   2  = 0.25 and
         1.0  ** (-2) = 1.0 and
         1.0  ** (-1) = 1.0 and
         1.0  **   0  = 1.0 and
         1.0  **   1  = 1.0 and
         1.0  **   2  = 1.0 and
        #1.5  ** (-2) = 0.444444 and
        #1.5  ** (-1) = 0.666667 and
         1.5  **   0  = 1.0 and
         1.5  **   1  = 1.5 and
         1.5  **   2  = 2.25 and
         2.0  ** (-2) = 0.25 and
         2.0  ** (-1) = 0.5 and
         2.0  **   0  = 1.0 and
         2.0  **   1  = 2.0 and
         2.0  **   2  = 4.0 then
      writeln("A ** B with integer B works correct for selected values.");
    else
      writeln(" ***** A ** B with integer B does not work correct");
    end if;
  end func;


const proc: check_negative_zero is func
  local
    const float: neg_zero1 is -0.0;
    const float: neg_zero2 is -1.0 /  Infinity;
    const float: neg_zero3 is  1.0 / -Infinity;
  begin
    if not isNegativeZero(                      -0.0)  or
       not isNegativeZero(                 neg_zero1)  or
       not isNegativeZero(          -1.0 /  Infinity)  or
       not isNegativeZero(                 neg_zero2)  or
       not isNegativeZero(           1.0 / -Infinity)  or
       not isNegativeZero(                 neg_zero3)  or
       not isNegativeZero(floatExpr(            -0.0)) or
       not isNegativeZero(floatExpr(       neg_zero1)) or
       not isNegativeZero(floatExpr(-1.0 /  Infinity)) or
       not isNegativeZero(floatExpr(       neg_zero2)) or
       not isNegativeZero(floatExpr( 1.0 / -Infinity)) or
       not isNegativeZero(floatExpr(       neg_zero3)) then
      writeln(" ***** Negative zero does not work correct");
    else
      writeln("Negative zero does work correct.");
    end if;
  end func;


const func float: checkDivAssign (inout float: floatVar, in float: initial, ref proc: divAssign) is func
  result
    var float: valueAfterDivAssign is 0.0;
  begin
    floatVar := initial;
    divAssign;
    valueAfterDivAssign := floatVar;
  end func;


const proc: check_inf is func
  local
    const float: minusZero is -0.0;
    const float: minusOne is -1.0;
    const float: minusTwo is -2.0;
    const float: minusInf is -Infinity;
    const float: minusBig is -1.0E37;
    const float: minusSmall is -1.0E-37;
    var float: floatVar is 0.0;
    var boolean: okay is TRUE;
  begin
    if             -1.0E37  /                -0.0  <>  Infinity or
                   -1.0E37  /           minusZero  <>  Infinity or
                   -1.0E37  /                 0.0  <> -Infinity or
                  minusBig  /                -0.0  <>  Infinity or
                  minusBig  /           minusZero  <>  Infinity or
                  minusBig  /                 0.0  <> -Infinity or
                      -1.0  /                -0.0  <>  Infinity or
                      -1.0  /           minusZero  <>  Infinity or
                      -1.0  /                 0.0  <> -Infinity or
                  minusOne  /                -0.0  <>  Infinity or
                  minusOne  /           minusZero  <>  Infinity or
                  minusOne  /                 0.0  <> -Infinity or
                       1.0  /                -0.0  <> -Infinity or
                       1.0  /           minusZero  <> -Infinity or
                       1.0  /                 0.0  <>  Infinity or
                    1.0E37  /                -0.0  <> -Infinity or
                    1.0E37  /           minusZero  <> -Infinity or
                    1.0E37  /                 0.0  <>  Infinity or
        floatExpr( -1.0E37) /                -0.0  <>  Infinity or
        floatExpr( -1.0E37) /           minusZero  <>  Infinity or
        floatExpr( -1.0E37) /                 0.0  <> -Infinity or
        floatExpr(minusBig) /                -0.0  <>  Infinity or
        floatExpr(minusBig) /           minusZero  <>  Infinity or
        floatExpr(minusBig) /                 0.0  <> -Infinity or
        floatExpr(    -1.0) /                -0.0  <>  Infinity or
        floatExpr(    -1.0) /           minusZero  <>  Infinity or
        floatExpr(    -1.0) /                 0.0  <> -Infinity or
        floatExpr(minusOne) /                -0.0  <>  Infinity or
        floatExpr(minusOne) /           minusZero  <>  Infinity or
        floatExpr(minusOne) /                 0.0  <> -Infinity or
        floatExpr(     1.0) /                -0.0  <> -Infinity or
        floatExpr(     1.0) /           minusZero  <> -Infinity or
        floatExpr(     1.0) /                 0.0  <>  Infinity or
        floatExpr(  1.0E37) /                -0.0  <> -Infinity or
        floatExpr(  1.0E37) /           minusZero  <> -Infinity or
        floatExpr(  1.0E37) /                 0.0  <>  Infinity or
                   -1.0E37  / floatExpr(     -0.0) <>  Infinity or
                   -1.0E37  / floatExpr(minusZero) <>  Infinity or
                   -1.0E37  / floatExpr(      0.0) <> -Infinity or
                  minusBig  / floatExpr(     -0.0) <>  Infinity or
                  minusBig  / floatExpr(minusZero) <>  Infinity or
                  minusBig  / floatExpr(      0.0) <> -Infinity or
                      -1.0  / floatExpr(     -0.0) <>  Infinity or
                      -1.0  / floatExpr(minusZero) <>  Infinity or
                      -1.0  / floatExpr(      0.0) <> -Infinity or
                  minusOne  / floatExpr(     -0.0) <>  Infinity or
                  minusOne  / floatExpr(minusZero) <>  Infinity or
                  minusOne  / floatExpr(      0.0) <> -Infinity or
                       1.0  / floatExpr(     -0.0) <> -Infinity or
                       1.0  / floatExpr(minusZero) <> -Infinity or
                       1.0  / floatExpr(      0.0) <>  Infinity or
                    1.0E37  / floatExpr(     -0.0) <> -Infinity or
                    1.0E37  / floatExpr(minusZero) <> -Infinity or
                    1.0E37  / floatExpr(      0.0) <>  Infinity or
        floatExpr( -1.0E37) / floatExpr(     -0.0) <>  Infinity or
        floatExpr( -1.0E37) / floatExpr(minusZero) <>  Infinity or
        floatExpr( -1.0E37) / floatExpr(      0.0) <> -Infinity or
        floatExpr(minusBig) / floatExpr(     -0.0) <>  Infinity or
        floatExpr(minusBig) / floatExpr(minusZero) <>  Infinity or
        floatExpr(minusBig) / floatExpr(      0.0) <> -Infinity or
        floatExpr(    -1.0) / floatExpr(     -0.0) <>  Infinity or
        floatExpr(    -1.0) / floatExpr(minusZero) <>  Infinity or
        floatExpr(    -1.0) / floatExpr(      0.0) <> -Infinity or
        floatExpr(minusOne) / floatExpr(     -0.0) <>  Infinity or
        floatExpr(minusOne) / floatExpr(minusZero) <>  Infinity or
        floatExpr(minusOne) / floatExpr(      0.0) <> -Infinity or
        floatExpr(     1.0) / floatExpr(     -0.0) <> -Infinity or
        floatExpr(     1.0) / floatExpr(minusZero) <> -Infinity or
        floatExpr(     1.0) / floatExpr(      0.0) <>  Infinity or
        floatExpr(  1.0E37) / floatExpr(     -0.0) <> -Infinity or
        floatExpr(  1.0E37) / floatExpr(minusZero) <> -Infinity or
        floatExpr(  1.0E37) / floatExpr(      0.0) <>  Infinity then
      writeln(" ***** Division by 0.0 does not return Infinity");
      okay := FALSE;
    end if;

    if  checkDivAssign(floatVar,  -1.0E37, floatVar /:=                -0.0)  <>  Infinity or
        checkDivAssign(floatVar,  -1.0E37, floatVar /:=           minusZero)  <>  Infinity or
        checkDivAssign(floatVar,  -1.0E37, floatVar /:=                 0.0)  <> -Infinity or
        checkDivAssign(floatVar, minusBig, floatVar /:=                -0.0)  <>  Infinity or
        checkDivAssign(floatVar, minusBig, floatVar /:=           minusZero)  <>  Infinity or
        checkDivAssign(floatVar, minusBig, floatVar /:=                 0.0)  <> -Infinity or
        checkDivAssign(floatVar,     -1.0, floatVar /:=                -0.0)  <>  Infinity or
        checkDivAssign(floatVar,     -1.0, floatVar /:=           minusZero)  <>  Infinity or
        checkDivAssign(floatVar,     -1.0, floatVar /:=                 0.0)  <> -Infinity or
        checkDivAssign(floatVar, minusOne, floatVar /:=                -0.0)  <>  Infinity or
        checkDivAssign(floatVar, minusOne, floatVar /:=           minusZero)  <>  Infinity or
        checkDivAssign(floatVar, minusOne, floatVar /:=                 0.0)  <> -Infinity or
        checkDivAssign(floatVar,      1.0, floatVar /:=                -0.0)  <> -Infinity or
        checkDivAssign(floatVar,      1.0, floatVar /:=           minusZero)  <> -Infinity or
        checkDivAssign(floatVar,      1.0, floatVar /:=                 0.0)  <>  Infinity or
        checkDivAssign(floatVar,   1.0E37, floatVar /:=                -0.0)  <> -Infinity or
        checkDivAssign(floatVar,   1.0E37, floatVar /:=           minusZero)  <> -Infinity or
        checkDivAssign(floatVar,   1.0E37, floatVar /:=                 0.0)  <>  Infinity or
        checkDivAssign(floatVar,  -1.0E37, floatVar /:= floatExpr(     -0.0)) <>  Infinity or
        checkDivAssign(floatVar,  -1.0E37, floatVar /:= floatExpr(minusZero)) <>  Infinity or
        checkDivAssign(floatVar,  -1.0E37, floatVar /:= floatExpr(      0.0)) <> -Infinity or
        checkDivAssign(floatVar, minusBig, floatVar /:= floatExpr(     -0.0)) <>  Infinity or
        checkDivAssign(floatVar, minusBig, floatVar /:= floatExpr(minusZero)) <>  Infinity or
        checkDivAssign(floatVar, minusBig, floatVar /:= floatExpr(      0.0)) <> -Infinity or
        checkDivAssign(floatVar,     -1.0, floatVar /:= floatExpr(     -0.0)) <>  Infinity or
        checkDivAssign(floatVar,     -1.0, floatVar /:= floatExpr(minusZero)) <>  Infinity or
        checkDivAssign(floatVar,     -1.0, floatVar /:= floatExpr(      0.0)) <> -Infinity or
        checkDivAssign(floatVar, minusOne, floatVar /:= floatExpr(     -0.0)) <>  Infinity or
        checkDivAssign(floatVar, minusOne, floatVar /:= floatExpr(minusZero)) <>  Infinity or
        checkDivAssign(floatVar, minusOne, floatVar /:= floatExpr(      0.0)) <> -Infinity or
        checkDivAssign(floatVar,      1.0, floatVar /:= floatExpr(     -0.0)) <> -Infinity or
        checkDivAssign(floatVar,      1.0, floatVar /:= floatExpr(minusZero)) <> -Infinity or
        checkDivAssign(floatVar,      1.0, floatVar /:= floatExpr(      0.0)) <>  Infinity or
        checkDivAssign(floatVar,   1.0E37, floatVar /:= floatExpr(     -0.0)) <> -Infinity or
        checkDivAssign(floatVar,   1.0E37, floatVar /:= floatExpr(minusZero)) <> -Infinity or
        checkDivAssign(floatVar,   1.0E37, floatVar /:= floatExpr(      0.0)) <>  Infinity then
      writeln(" ***** Assignment division by 0.0 does not assign Infinity");
      okay := FALSE;
    end if;

    if                (-0.0) **              (-2.0) <>  Infinity or
                      (-0.0) **           minusTwo  <>  Infinity or
                      (-0.0) **              (-1.5) <>  Infinity or
                      (-0.0) **              (-1.0) <> -Infinity or
                      (-0.0) **           minusOne  <> -Infinity or
                      (-0.0) **              (-0.5) <>  Infinity or
                  minusZero  **              (-2.0) <>  Infinity or
                  minusZero  **           minusTwo  <>  Infinity or
                  minusZero  **              (-1.5) <>  Infinity or
                  minusZero  **              (-1.0) <> -Infinity or
                  minusZero  **           minusOne  <> -Infinity or
                  minusZero  **              (-0.5) <>  Infinity or
                        0.0  **              (-2.0) <>  Infinity or
                        0.0  **           minusTwo  <>  Infinity or
                        0.0  **              (-1.5) <>  Infinity or
                        0.0  **              (-1.0) <>  Infinity or
                        0.0  **           minusOne  <>  Infinity or
                        0.0  **              (-0.5) <>  Infinity or
        floatExpr(     -0.0) **              (-2.0) <>  Infinity or
        floatExpr(     -0.0) **           minusTwo  <>  Infinity or
        floatExpr(     -0.0) **              (-1.5) <>  Infinity or
        floatExpr(     -0.0) **              (-1.0) <> -Infinity or
        floatExpr(     -0.0) **           minusOne  <> -Infinity or
        floatExpr(     -0.0) **              (-0.5) <>  Infinity or
        floatExpr(minusZero) **              (-2.0) <>  Infinity or
        floatExpr(minusZero) **           minusTwo  <>  Infinity or
        floatExpr(minusZero) **              (-1.5) <>  Infinity or
        floatExpr(minusZero) **              (-1.0) <> -Infinity or
        floatExpr(minusZero) **           minusOne  <> -Infinity or
        floatExpr(minusZero) **              (-0.5) <>  Infinity or
        floatExpr(      0.0) **              (-2.0) <>  Infinity or
        floatExpr(      0.0) **           minusTwo  <>  Infinity or
        floatExpr(      0.0) **              (-1.5) <>  Infinity or
        floatExpr(      0.0) **              (-1.0) <>  Infinity or
        floatExpr(      0.0) **           minusOne  <>  Infinity or
        floatExpr(      0.0) **              (-0.5) <>  Infinity or
                      (-0.0) ** floatExpr(    -2.0) <>  Infinity or
                      (-0.0) ** floatExpr(minusTwo) <>  Infinity or
                      (-0.0) ** floatExpr(    -1.5) <>  Infinity or
                      (-0.0) ** floatExpr(    -1.0) <> -Infinity or
                      (-0.0) ** floatExpr(minusOne) <> -Infinity or
                      (-0.0) ** floatExpr(    -0.5) <>  Infinity or
                  minusZero  ** floatExpr(    -2.0) <>  Infinity or
                  minusZero  ** floatExpr(minusTwo) <>  Infinity or
                  minusZero  ** floatExpr(    -1.5) <>  Infinity or
                  minusZero  ** floatExpr(    -1.0) <> -Infinity or
                  minusZero  ** floatExpr(minusOne) <> -Infinity or
                  minusZero  ** floatExpr(    -0.5) <>  Infinity or
                        0.0  ** floatExpr(    -2.0) <>  Infinity or
                        0.0  ** floatExpr(minusTwo) <>  Infinity or
                        0.0  ** floatExpr(    -1.5) <>  Infinity or
                        0.0  ** floatExpr(    -1.0) <>  Infinity or
                        0.0  ** floatExpr(minusOne) <>  Infinity or
                        0.0  ** floatExpr(    -0.5) <>  Infinity or
        floatExpr(     -0.0) ** floatExpr(    -2.0) <>  Infinity or
        floatExpr(     -0.0) ** floatExpr(minusTwo) <>  Infinity or
        floatExpr(     -0.0) ** floatExpr(    -1.5) <>  Infinity or
        floatExpr(     -0.0) ** floatExpr(    -1.0) <> -Infinity or
        floatExpr(     -0.0) ** floatExpr(minusOne) <> -Infinity or
        floatExpr(     -0.0) ** floatExpr(    -0.5) <>  Infinity or
        floatExpr(minusZero) ** floatExpr(    -2.0) <>  Infinity or
        floatExpr(minusZero) ** floatExpr(minusTwo) <>  Infinity or
        floatExpr(minusZero) ** floatExpr(    -1.5) <>  Infinity or
        floatExpr(minusZero) ** floatExpr(    -1.0) <> -Infinity or
        floatExpr(minusZero) ** floatExpr(minusOne) <> -Infinity or
        floatExpr(minusZero) ** floatExpr(    -0.5) <>  Infinity or
        floatExpr(      0.0) ** floatExpr(    -2.0) <>  Infinity or
        floatExpr(      0.0) ** floatExpr(minusTwo) <>  Infinity or
        floatExpr(      0.0) ** floatExpr(    -1.5) <>  Infinity or
        floatExpr(      0.0) ** floatExpr(    -1.0) <>  Infinity or
        floatExpr(      0.0) ** floatExpr(minusOne) <>  Infinity or
        floatExpr(      0.0) ** floatExpr(    -0.5) <>  Infinity then
      writeln(" ***** Power of 0.0 with negative exponent does not return Infinity");
      okay := FALSE;
    end if;

    if  log(                 -0.0)  <> -Infinity or
        log(            minusZero)  <> -Infinity or
        log(                  0.0)  <> -Infinity or
        log(  floatExpr(     -0.0)) <> -Infinity or
        log(  floatExpr(minusZero)) <> -Infinity or
        log(  floatExpr(      0.0)) <> -Infinity or
        log10(               -0.0)  <> -Infinity or
        log10(          minusZero)  <> -Infinity or
        log10(                0.0)  <> -Infinity or
        log10(floatExpr(     -0.0)) <> -Infinity or
        log10(floatExpr(minusZero)) <> -Infinity or
        log10(floatExpr(      0.0)) <> -Infinity then
      writeln(" ***** Logarithm of 0.0 does not return -Infinity");
      okay := FALSE;
    end if;

    if            Infinity  +             -1.0E37  <> Infinity or
                  Infinity  +            minusBig  <> Infinity or
                  Infinity  +             -1000.0  <> Infinity or
                  Infinity  +                -0.0  <> Infinity or
                  Infinity  +           minusZero  <> Infinity or
                  Infinity  +                 0.0  <> Infinity or
                  Infinity  +              1000.0  <> Infinity or
                  Infinity  +              1.0E37  <> Infinity or
                  Infinity  +            Infinity  <> Infinity or
                  Infinity  -           -Infinity  <> Infinity or
                  Infinity  -            minusInf  <> Infinity or
                  Infinity  -             -1.0E37  <> Infinity or
                  Infinity  -            minusBig  <> Infinity or
                  Infinity  -             -1000.0  <> Infinity or
                  Infinity  -                -0.0  <> Infinity or
                  Infinity  -           minusZero  <> Infinity or
                  Infinity  -                 0.0  <> Infinity or
                  Infinity  -              1000.0  <> Infinity or
                  Infinity  -              1.0E37  <> Infinity or
        floatExpr(Infinity) +             -1.0E37  <> Infinity or
        floatExpr(Infinity) +            minusBig  <> Infinity or
        floatExpr(Infinity) +             -1000.0  <> Infinity or
        floatExpr(Infinity) +                -0.0  <> Infinity or
        floatExpr(Infinity) +           minusZero  <> Infinity or
        floatExpr(Infinity) +                 0.0  <> Infinity or
        floatExpr(Infinity) +              1000.0  <> Infinity or
        floatExpr(Infinity) +              1.0E37  <> Infinity or
        floatExpr(Infinity) +            Infinity  <> Infinity or
        floatExpr(Infinity) -           -Infinity  <> Infinity or
        floatExpr(Infinity) -            minusInf  <> Infinity or
        floatExpr(Infinity) -             -1.0E37  <> Infinity or
        floatExpr(Infinity) -            minusBig  <> Infinity or
        floatExpr(Infinity) -             -1000.0  <> Infinity or
        floatExpr(Infinity) -                -0.0  <> Infinity or
        floatExpr(Infinity) -           minusZero  <> Infinity or
        floatExpr(Infinity) -                 0.0  <> Infinity or
        floatExpr(Infinity) -              1000.0  <> Infinity or
        floatExpr(Infinity) -              1.0E37  <> Infinity or
                  Infinity  + floatExpr(  -1.0E37) <> Infinity or
                  Infinity  + floatExpr( minusBig) <> Infinity or
                  Infinity  + floatExpr(  -1000.0) <> Infinity or
                  Infinity  + floatExpr(     -0.0) <> Infinity or
                  Infinity  + floatExpr(minusZero) <> Infinity or
                  Infinity  + floatExpr(      0.0) <> Infinity or
                  Infinity  + floatExpr(   1000.0) <> Infinity or
                  Infinity  + floatExpr(   1.0E37) <> Infinity or
                  Infinity  + floatExpr( Infinity) <> Infinity or
                  Infinity  - floatExpr(-Infinity) <> Infinity or
                  Infinity  - floatExpr( minusInf) <> Infinity or
                  Infinity  - floatExpr(  -1.0E37) <> Infinity or
                  Infinity  - floatExpr( minusBig) <> Infinity or
                  Infinity  - floatExpr(  -1000.0) <> Infinity or
                  Infinity  - floatExpr(     -0.0) <> Infinity or
                  Infinity  - floatExpr(minusZero) <> Infinity or
                  Infinity  - floatExpr(      0.0) <> Infinity or
                  Infinity  - floatExpr(   1000.0) <> Infinity or
                  Infinity  - floatExpr(   1.0E37) <> Infinity or
        floatExpr(Infinity) + floatExpr(  -1.0E37) <> Infinity or
        floatExpr(Infinity) + floatExpr( minusBig) <> Infinity or
        floatExpr(Infinity) + floatExpr(  -1000.0) <> Infinity or
        floatExpr(Infinity) + floatExpr(     -0.0) <> Infinity or
        floatExpr(Infinity) + floatExpr(minusZero) <> Infinity or
        floatExpr(Infinity) + floatExpr(      0.0) <> Infinity or
        floatExpr(Infinity) + floatExpr(   1000.0) <> Infinity or
        floatExpr(Infinity) + floatExpr(   1.0E37) <> Infinity or
        floatExpr(Infinity) + floatExpr( Infinity) <> Infinity or
        floatExpr(Infinity) - floatExpr(-Infinity) <> Infinity or
        floatExpr(Infinity) - floatExpr( minusInf) <> Infinity or
        floatExpr(Infinity) - floatExpr(  -1.0E37) <> Infinity or
        floatExpr(Infinity) - floatExpr( minusBig) <> Infinity or
        floatExpr(Infinity) - floatExpr(  -1000.0) <> Infinity or
        floatExpr(Infinity) - floatExpr(     -0.0) <> Infinity or
        floatExpr(Infinity) - floatExpr(minusZero) <> Infinity or
        floatExpr(Infinity) - floatExpr(      0.0) <> Infinity or
        floatExpr(Infinity) - floatExpr(   1000.0) <> Infinity or
        floatExpr(Infinity) - floatExpr(   1.0E37) <> Infinity then
      writeln(" ***** Adding a finite value to Infinity does not return Infinity");
      okay := FALSE;
    end if;

    if            -Infinity  +           -Infinity  <> -Infinity or
                  -Infinity  +            minusInf  <> -Infinity or
                  -Infinity  +             -1.0E37  <> -Infinity or
                  -Infinity  +            minusBig  <> -Infinity or
                  -Infinity  +             -1000.0  <> -Infinity or
                  -Infinity  +                -0.0  <> -Infinity or
                  -Infinity  +           minusZero  <> -Infinity or
                  -Infinity  +                 0.0  <> -Infinity or
                  -Infinity  +              1000.0  <> -Infinity or
                  -Infinity  +              1.0E37  <> -Infinity or
                  -Infinity  -             -1.0E37  <> -Infinity or
                  -Infinity  -            minusBig  <> -Infinity or
                  -Infinity  -             -1000.0  <> -Infinity or
                  -Infinity  -                -0.0  <> -Infinity or
                  -Infinity  -           minusZero  <> -Infinity or
                  -Infinity  -                 0.0  <> -Infinity or
                  -Infinity  -              1000.0  <> -Infinity or
                  -Infinity  -              1.0E37  <> -Infinity or
                  -Infinity  -            Infinity  <> -Infinity or
                   minusInf  +           -Infinity  <> -Infinity or
                   minusInf  +            minusInf  <> -Infinity or
                   minusInf  +             -1.0E37  <> -Infinity or
                   minusInf  +            minusBig  <> -Infinity or
                   minusInf  +             -1000.0  <> -Infinity or
                   minusInf  +                -0.0  <> -Infinity or
                   minusInf  +           minusZero  <> -Infinity or
                   minusInf  +                 0.0  <> -Infinity or
                   minusInf  +              1000.0  <> -Infinity or
                   minusInf  +              1.0E37  <> -Infinity or
                   minusInf  -             -1.0E37  <> -Infinity or
                   minusInf  -            minusBig  <> -Infinity or
                   minusInf  -             -1000.0  <> -Infinity or
                   minusInf  -                -0.0  <> -Infinity or
                   minusInf  -           minusZero  <> -Infinity or
                   minusInf  -                 0.0  <> -Infinity or
                   minusInf  -              1000.0  <> -Infinity or
                   minusInf  -              1.0E37  <> -Infinity or
                   minusInf  -            Infinity  <> -Infinity or
        floatExpr(-Infinity) +           -Infinity  <> -Infinity or
        floatExpr(-Infinity) +            minusInf  <> -Infinity or
        floatExpr(-Infinity) +             -1.0E37  <> -Infinity or
        floatExpr(-Infinity) +            minusBig  <> -Infinity or
        floatExpr(-Infinity) +             -1000.0  <> -Infinity or
        floatExpr(-Infinity) +                -0.0  <> -Infinity or
        floatExpr(-Infinity) +           minusZero  <> -Infinity or
        floatExpr(-Infinity) +                 0.0  <> -Infinity or
        floatExpr(-Infinity) +              1000.0  <> -Infinity or
        floatExpr(-Infinity) +              1.0E37  <> -Infinity or
        floatExpr(-Infinity) -             -1.0E37  <> -Infinity or
        floatExpr(-Infinity) -            minusBig  <> -Infinity or
        floatExpr(-Infinity) -             -1000.0  <> -Infinity or
        floatExpr(-Infinity) -                -0.0  <> -Infinity or
        floatExpr(-Infinity) -           minusZero  <> -Infinity or
        floatExpr(-Infinity) -                 0.0  <> -Infinity or
        floatExpr(-Infinity) -              1000.0  <> -Infinity or
        floatExpr(-Infinity) -              1.0E37  <> -Infinity or
        floatExpr(-Infinity) -            Infinity  <> -Infinity or
        floatExpr( minusInf) +           -Infinity  <> -Infinity or
        floatExpr( minusInf) +            minusInf  <> -Infinity or
        floatExpr( minusInf) +             -1.0E37  <> -Infinity or
        floatExpr( minusInf) +            minusBig  <> -Infinity or
        floatExpr( minusInf) +             -1000.0  <> -Infinity or
        floatExpr( minusInf) +                -0.0  <> -Infinity or
        floatExpr( minusInf) +           minusZero  <> -Infinity or
        floatExpr( minusInf) +                 0.0  <> -Infinity or
        floatExpr( minusInf) +              1000.0  <> -Infinity or
        floatExpr( minusInf) +              1.0E37  <> -Infinity or
        floatExpr( minusInf) -             -1.0E37  <> -Infinity or
        floatExpr( minusInf) -            minusBig  <> -Infinity or
        floatExpr( minusInf) -             -1000.0  <> -Infinity or
        floatExpr( minusInf) -                -0.0  <> -Infinity or
        floatExpr( minusInf) -           minusZero  <> -Infinity or
        floatExpr( minusInf) -                 0.0  <> -Infinity or
        floatExpr( minusInf) -              1000.0  <> -Infinity or
        floatExpr( minusInf) -              1.0E37  <> -Infinity or
        floatExpr( minusInf) -            Infinity  <> -Infinity or
                  -Infinity  + floatExpr(-Infinity) <> -Infinity or
                  -Infinity  + floatExpr( minusInf) <> -Infinity or
                  -Infinity  + floatExpr(  -1.0E37) <> -Infinity or
                  -Infinity  + floatExpr( minusBig) <> -Infinity or
                  -Infinity  + floatExpr(  -1000.0) <> -Infinity or
                  -Infinity  + floatExpr(     -0.0) <> -Infinity or
                  -Infinity  + floatExpr(minusZero) <> -Infinity or
                  -Infinity  + floatExpr(      0.0) <> -Infinity or
                  -Infinity  + floatExpr(   1000.0) <> -Infinity or
                  -Infinity  + floatExpr(   1.0E37) <> -Infinity or
                  -Infinity  - floatExpr(  -1.0E37) <> -Infinity or
                  -Infinity  - floatExpr( minusBig) <> -Infinity or
                  -Infinity  - floatExpr(  -1000.0) <> -Infinity or
                  -Infinity  - floatExpr(     -0.0) <> -Infinity or
                  -Infinity  - floatExpr(minusZero) <> -Infinity or
                  -Infinity  - floatExpr(      0.0) <> -Infinity or
                  -Infinity  - floatExpr(   1000.0) <> -Infinity or
                  -Infinity  - floatExpr(   1.0E37) <> -Infinity or
                  -Infinity  - floatExpr( Infinity) <> -Infinity or
                   minusInf  + floatExpr(-Infinity) <> -Infinity or
                   minusInf  + floatExpr( minusInf) <> -Infinity or
                   minusInf  + floatExpr(  -1.0E37) <> -Infinity or
                   minusInf  + floatExpr( minusBig) <> -Infinity or
                   minusInf  + floatExpr(  -1000.0) <> -Infinity or
                   minusInf  + floatExpr(     -0.0) <> -Infinity or
                   minusInf  + floatExpr(minusZero) <> -Infinity or
                   minusInf  + floatExpr(      0.0) <> -Infinity or
                   minusInf  + floatExpr(   1000.0) <> -Infinity or
                   minusInf  + floatExpr(   1.0E37) <> -Infinity or
                   minusInf  - floatExpr(  -1.0E37) <> -Infinity or
                   minusInf  - floatExpr( minusBig) <> -Infinity or
                   minusInf  - floatExpr(  -1000.0) <> -Infinity or
                   minusInf  - floatExpr(     -0.0) <> -Infinity or
                   minusInf  - floatExpr(minusZero) <> -Infinity or
                   minusInf  - floatExpr(      0.0) <> -Infinity or
                   minusInf  - floatExpr(   1000.0) <> -Infinity or
                   minusInf  - floatExpr(   1.0E37) <> -Infinity or
                   minusInf  - floatExpr( Infinity) <> -Infinity or
        floatExpr(-Infinity) + floatExpr(-Infinity) <> -Infinity or
        floatExpr(-Infinity) + floatExpr( minusInf) <> -Infinity or
        floatExpr(-Infinity) + floatExpr(  -1.0E37) <> -Infinity or
        floatExpr(-Infinity) + floatExpr( minusBig) <> -Infinity or
        floatExpr(-Infinity) + floatExpr(  -1000.0) <> -Infinity or
        floatExpr(-Infinity) + floatExpr(     -0.0) <> -Infinity or
        floatExpr(-Infinity) + floatExpr(minusZero) <> -Infinity or
        floatExpr(-Infinity) + floatExpr(      0.0) <> -Infinity or
        floatExpr(-Infinity) + floatExpr(   1000.0) <> -Infinity or
        floatExpr(-Infinity) + floatExpr(   1.0E37) <> -Infinity or
        floatExpr(-Infinity) - floatExpr(  -1.0E37) <> -Infinity or
        floatExpr(-Infinity) - floatExpr( minusBig) <> -Infinity or
        floatExpr(-Infinity) - floatExpr(  -1000.0) <> -Infinity or
        floatExpr(-Infinity) - floatExpr(     -0.0) <> -Infinity or
        floatExpr(-Infinity) - floatExpr(minusZero) <> -Infinity or
        floatExpr(-Infinity) - floatExpr(      0.0) <> -Infinity or
        floatExpr(-Infinity) - floatExpr(   1000.0) <> -Infinity or
        floatExpr(-Infinity) - floatExpr(   1.0E37) <> -Infinity or
        floatExpr(-Infinity) - floatExpr( Infinity) <> -Infinity or
        floatExpr( minusInf) + floatExpr(-Infinity) <> -Infinity or
        floatExpr( minusInf) + floatExpr( minusInf) <> -Infinity or
        floatExpr( minusInf) + floatExpr(  -1.0E37) <> -Infinity or
        floatExpr( minusInf) + floatExpr( minusBig) <> -Infinity or
        floatExpr( minusInf) + floatExpr(  -1000.0) <> -Infinity or
        floatExpr( minusInf) + floatExpr(     -0.0) <> -Infinity or
        floatExpr( minusInf) + floatExpr(minusZero) <> -Infinity or
        floatExpr( minusInf) + floatExpr(      0.0) <> -Infinity or
        floatExpr( minusInf) + floatExpr(   1000.0) <> -Infinity or
        floatExpr( minusInf) + floatExpr(   1.0E37) <> -Infinity or
        floatExpr( minusInf) - floatExpr(  -1.0E37) <> -Infinity or
        floatExpr( minusInf) - floatExpr( minusBig) <> -Infinity or
        floatExpr( minusInf) - floatExpr(  -1000.0) <> -Infinity or
        floatExpr( minusInf) - floatExpr(     -0.0) <> -Infinity or
        floatExpr( minusInf) - floatExpr(minusZero) <> -Infinity or
        floatExpr( minusInf) - floatExpr(      0.0) <> -Infinity or
        floatExpr( minusInf) - floatExpr(   1000.0) <> -Infinity or
        floatExpr( minusInf) - floatExpr(   1.0E37) <> -Infinity or
        floatExpr( minusInf) - floatExpr( Infinity) <> -Infinity then
      writeln(" ***** Adding a finite value to -Infinity does not return -Infinity");
      okay := FALSE;
    end if;

    if              Infinity  *            -Infinity  <> -Infinity or
                    Infinity  *             minusInf  <> -Infinity or
                    Infinity  *              -1.0E37  <> -Infinity or
                    Infinity  *             minusBig  <> -Infinity or
                    Infinity  *              -1000.0  <> -Infinity or
                    Infinity  *                 -1.0  <> -Infinity or
                    Infinity  *             minusOne  <> -Infinity or
                    Infinity  *             -1.0E-37  <> -Infinity or
                    Infinity  *           minusSmall  <> -Infinity or
                    Infinity  *              1.0E-37  <>  Infinity or
                    Infinity  *                  1.0  <>  Infinity or
                    Infinity  *               1000.0  <>  Infinity or
                    Infinity  *               1.0E37  <>  Infinity or
                    Infinity  *             Infinity  <>  Infinity or
                   -Infinity  *             Infinity  <> -Infinity or
                    minusInf  *             Infinity  <> -Infinity or
                     -1.0E37  *             Infinity  <> -Infinity or
                    minusBig  *             Infinity  <> -Infinity or
                     -1000.0  *             Infinity  <> -Infinity or
                        -1.0  *             Infinity  <> -Infinity or
                    minusOne  *             Infinity  <> -Infinity or
                    -1.0E-37  *             Infinity  <> -Infinity or
                  minusSmall  *             Infinity  <> -Infinity or
                     1.0E-37  *             Infinity  <>  Infinity or
                         1.0  *             Infinity  <>  Infinity or
                      1000.0  *             Infinity  <>  Infinity or
                      1.0E37  *             Infinity  <>  Infinity or
                    Infinity  *             Infinity  <>  Infinity or
        floatExpr(  Infinity) *            -Infinity  <> -Infinity or
        floatExpr(  Infinity) *             minusInf  <> -Infinity or
        floatExpr(  Infinity) *              -1.0E37  <> -Infinity or
        floatExpr(  Infinity) *             minusBig  <> -Infinity or
        floatExpr(  Infinity) *              -1000.0  <> -Infinity or
        floatExpr(  Infinity) *                 -1.0  <> -Infinity or
        floatExpr(  Infinity) *             minusOne  <> -Infinity or
        floatExpr(  Infinity) *             -1.0E-37  <> -Infinity or
        floatExpr(  Infinity) *           minusSmall  <> -Infinity or
        floatExpr(  Infinity) *              1.0E-37  <>  Infinity or
        floatExpr(  Infinity) *                  1.0  <>  Infinity or
        floatExpr(  Infinity) *               1000.0  <>  Infinity or
        floatExpr(  Infinity) *               1.0E37  <>  Infinity or
        floatExpr(  Infinity) *             Infinity  <>  Infinity or
        floatExpr( -Infinity) *             Infinity  <> -Infinity or
        floatExpr(  minusInf) *             Infinity  <> -Infinity or
        floatExpr(   -1.0E37) *             Infinity  <> -Infinity or
        floatExpr(  minusBig) *             Infinity  <> -Infinity or
        floatExpr(   -1000.0) *             Infinity  <> -Infinity or
        floatExpr(      -1.0) *             Infinity  <> -Infinity or
        floatExpr(  minusOne) *             Infinity  <> -Infinity or
        floatExpr(  -1.0E-37) *             Infinity  <> -Infinity or
        floatExpr(minusSmall) *             Infinity  <> -Infinity or
        floatExpr(   1.0E-37) *             Infinity  <>  Infinity or
        floatExpr(       1.0) *             Infinity  <>  Infinity or
        floatExpr(    1000.0) *             Infinity  <>  Infinity or
        floatExpr(    1.0E37) *             Infinity  <>  Infinity or
        floatExpr(  Infinity) *             Infinity  <>  Infinity or
                    Infinity  * floatExpr( -Infinity) <> -Infinity or
                    Infinity  * floatExpr(  minusInf) <> -Infinity or
                    Infinity  * floatExpr(   -1.0E37) <> -Infinity or
                    Infinity  * floatExpr(  minusBig) <> -Infinity or
                    Infinity  * floatExpr(   -1000.0) <> -Infinity or
                    Infinity  * floatExpr(      -1.0) <> -Infinity or
                    Infinity  * floatExpr(  minusOne) <> -Infinity or
                    Infinity  * floatExpr(  -1.0E-37) <> -Infinity or
                    Infinity  * floatExpr(minusSmall) <> -Infinity or
                    Infinity  * floatExpr(   1.0E-37) <>  Infinity or
                    Infinity  * floatExpr(       1.0) <>  Infinity or
                    Infinity  * floatExpr(    1000.0) <>  Infinity or
                    Infinity  * floatExpr(    1.0E37) <>  Infinity or
                    Infinity  * floatExpr(  Infinity) <>  Infinity or
                   -Infinity  * floatExpr(  Infinity) <> -Infinity or
                    minusInf  * floatExpr(  Infinity) <> -Infinity or
                     -1.0E37  * floatExpr(  Infinity) <> -Infinity or
                    minusBig  * floatExpr(  Infinity) <> -Infinity or
                     -1000.0  * floatExpr(  Infinity) <> -Infinity or
                        -1.0  * floatExpr(  Infinity) <> -Infinity or
                    minusOne  * floatExpr(  Infinity) <> -Infinity or
                    -1.0E-37  * floatExpr(  Infinity) <> -Infinity or
                  minusSmall  * floatExpr(  Infinity) <> -Infinity or
                     1.0E-37  * floatExpr(  Infinity) <>  Infinity or
                         1.0  * floatExpr(  Infinity) <>  Infinity or
                      1000.0  * floatExpr(  Infinity) <>  Infinity or
                      1.0E37  * floatExpr(  Infinity) <>  Infinity or
                    Infinity  * floatExpr(  Infinity) <>  Infinity or
        floatExpr(  Infinity) * floatExpr( -Infinity) <> -Infinity or
        floatExpr(  Infinity) * floatExpr(  minusInf) <> -Infinity or
        floatExpr(  Infinity) * floatExpr(   -1.0E37) <> -Infinity or
        floatExpr(  Infinity) * floatExpr(  minusBig) <> -Infinity or
        floatExpr(  Infinity) * floatExpr(   -1000.0) <> -Infinity or
        floatExpr(  Infinity) * floatExpr(      -1.0) <> -Infinity or
        floatExpr(  Infinity) * floatExpr(  minusOne) <> -Infinity or
        floatExpr(  Infinity) * floatExpr(  -1.0E-37) <> -Infinity or
        floatExpr(  Infinity) * floatExpr(minusSmall) <> -Infinity or
        floatExpr(  Infinity) * floatExpr(   1.0E-37) <>  Infinity or
        floatExpr(  Infinity) * floatExpr(       1.0) <>  Infinity or
        floatExpr(  Infinity) * floatExpr(    1000.0) <>  Infinity or
        floatExpr(  Infinity) * floatExpr(    1.0E37) <>  Infinity or
        floatExpr(  Infinity) * floatExpr(  Infinity) <>  Infinity or
        floatExpr( -Infinity) * floatExpr(  Infinity) <> -Infinity or
        floatExpr(  minusInf) * floatExpr(  Infinity) <> -Infinity or
        floatExpr(   -1.0E37) * floatExpr(  Infinity) <> -Infinity or
        floatExpr(  minusBig) * floatExpr(  Infinity) <> -Infinity or
        floatExpr(   -1000.0) * floatExpr(  Infinity) <> -Infinity or
        floatExpr(      -1.0) * floatExpr(  Infinity) <> -Infinity or
        floatExpr(  minusOne) * floatExpr(  Infinity) <> -Infinity or
        floatExpr(  -1.0E-37) * floatExpr(  Infinity) <> -Infinity or
        floatExpr(minusSmall) * floatExpr(  Infinity) <> -Infinity or
        floatExpr(   1.0E-37) * floatExpr(  Infinity) <>  Infinity or
        floatExpr(       1.0) * floatExpr(  Infinity) <>  Infinity or
        floatExpr(    1000.0) * floatExpr(  Infinity) <>  Infinity or
        floatExpr(    1.0E37) * floatExpr(  Infinity) <>  Infinity or
        floatExpr(  Infinity) * floatExpr(  Infinity) <>  Infinity then
      writeln(" ***** Infinity multiplied by any value except zero, is not Infinity");
      okay := FALSE;
    end if;

    if             -Infinity  *            -Infinity  <>  Infinity or
                   -Infinity  *             minusInf  <>  Infinity or
                   -Infinity  *              -1.0E37  <>  Infinity or
                   -Infinity  *             minusBig  <>  Infinity or
                   -Infinity  *              -1000.0  <>  Infinity or
                   -Infinity  *                 -1.0  <>  Infinity or
                   -Infinity  *             minusOne  <>  Infinity or
                   -Infinity  *             -1.0E-37  <>  Infinity or
                   -Infinity  *           minusSmall  <>  Infinity or
                   -Infinity  *              1.0E-37  <> -Infinity or
                   -Infinity  *                  1.0  <> -Infinity or
                   -Infinity  *               1000.0  <> -Infinity or
                   -Infinity  *               1.0E37  <> -Infinity or
                   -Infinity  *             Infinity  <> -Infinity or
                    minusInf  *            -Infinity  <>  Infinity or
                    minusInf  *             minusInf  <>  Infinity or
                    minusInf  *              -1.0E37  <>  Infinity or
                    minusInf  *             minusBig  <>  Infinity or
                    minusInf  *              -1000.0  <>  Infinity or
                    minusInf  *                 -1.0  <>  Infinity or
                    minusInf  *             minusOne  <>  Infinity or
                    minusInf  *             -1.0E-37  <>  Infinity or
                    minusInf  *           minusSmall  <>  Infinity or
                    minusInf  *              1.0E-37  <> -Infinity or
                    minusInf  *                  1.0  <> -Infinity or
                    minusInf  *               1000.0  <> -Infinity or
                    minusInf  *               1.0E37  <> -Infinity or
                    minusInf  *             Infinity  <> -Infinity or
                   -Infinity  *            -Infinity  <>  Infinity or
                    minusInf  *            -Infinity  <>  Infinity or
                     -1.0E37  *            -Infinity  <>  Infinity or
                    minusBig  *            -Infinity  <>  Infinity or
                     -1000.0  *            -Infinity  <>  Infinity or
                        -1.0  *            -Infinity  <>  Infinity or
                    minusOne  *            -Infinity  <>  Infinity or
                    -1.0E-37  *            -Infinity  <>  Infinity or
                  minusSmall  *            -Infinity  <>  Infinity or
                     1.0E-37  *            -Infinity  <> -Infinity or
                         1.0  *            -Infinity  <> -Infinity or
                      1000.0  *            -Infinity  <> -Infinity or
                      1.0E37  *            -Infinity  <> -Infinity or
                    Infinity  *            -Infinity  <> -Infinity or
                   -Infinity  *             minusInf  <>  Infinity or
                    minusInf  *             minusInf  <>  Infinity or
                     -1.0E37  *             minusInf  <>  Infinity or
                    minusBig  *             minusInf  <>  Infinity or
                     -1000.0  *             minusInf  <>  Infinity or
                        -1.0  *             minusInf  <>  Infinity or
                    minusOne  *             minusInf  <>  Infinity or
                    -1.0E-37  *             minusInf  <>  Infinity or
                  minusSmall  *             minusInf  <>  Infinity or
                     1.0E-37  *             minusInf  <> -Infinity or
                         1.0  *             minusInf  <> -Infinity or
                      1000.0  *             minusInf  <> -Infinity or
                      1.0E37  *             minusInf  <> -Infinity or
                    Infinity  *             minusInf  <> -Infinity or
        floatExpr( -Infinity) *            -Infinity  <>  Infinity or
        floatExpr( -Infinity) *             minusInf  <>  Infinity or
        floatExpr( -Infinity) *              -1.0E37  <>  Infinity or
        floatExpr( -Infinity) *             minusBig  <>  Infinity or
        floatExpr( -Infinity) *              -1000.0  <>  Infinity or
        floatExpr( -Infinity) *                 -1.0  <>  Infinity or
        floatExpr( -Infinity) *             minusOne  <>  Infinity or
        floatExpr( -Infinity) *             -1.0E-37  <>  Infinity or
        floatExpr( -Infinity) *           minusSmall  <>  Infinity or
        floatExpr( -Infinity) *              1.0E-37  <> -Infinity or
        floatExpr( -Infinity) *                  1.0  <> -Infinity or
        floatExpr( -Infinity) *               1000.0  <> -Infinity or
        floatExpr( -Infinity) *               1.0E37  <> -Infinity or
        floatExpr( -Infinity) *             Infinity  <> -Infinity or
        floatExpr(  minusInf) *            -Infinity  <>  Infinity or
        floatExpr(  minusInf) *             minusInf  <>  Infinity or
        floatExpr(  minusInf) *              -1.0E37  <>  Infinity or
        floatExpr(  minusInf) *             minusBig  <>  Infinity or
        floatExpr(  minusInf) *              -1000.0  <>  Infinity or
        floatExpr(  minusInf) *                 -1.0  <>  Infinity or
        floatExpr(  minusInf) *             minusOne  <>  Infinity or
        floatExpr(  minusInf) *             -1.0E-37  <>  Infinity or
        floatExpr(  minusInf) *           minusSmall  <>  Infinity or
        floatExpr(  minusInf) *              1.0E-37  <> -Infinity or
        floatExpr(  minusInf) *                  1.0  <> -Infinity or
        floatExpr(  minusInf) *               1000.0  <> -Infinity or
        floatExpr(  minusInf) *               1.0E37  <> -Infinity or
        floatExpr(  minusInf) *             Infinity  <> -Infinity or
        floatExpr( -Infinity) *            -Infinity  <>  Infinity or
        floatExpr(  minusInf) *            -Infinity  <>  Infinity or
        floatExpr(   -1.0E37) *            -Infinity  <>  Infinity or
        floatExpr(  minusBig) *            -Infinity  <>  Infinity or
        floatExpr(   -1000.0) *            -Infinity  <>  Infinity or
        floatExpr(      -1.0) *            -Infinity  <>  Infinity or
        floatExpr(  minusOne) *            -Infinity  <>  Infinity or
        floatExpr(  -1.0E-37) *            -Infinity  <>  Infinity or
        floatExpr(minusSmall) *            -Infinity  <>  Infinity or
        floatExpr(   1.0E-37) *            -Infinity  <> -Infinity or
        floatExpr(       1.0) *            -Infinity  <> -Infinity or
        floatExpr(    1000.0) *            -Infinity  <> -Infinity or
        floatExpr(    1.0E37) *            -Infinity  <> -Infinity or
        floatExpr(  Infinity) *            -Infinity  <> -Infinity or
        floatExpr( -Infinity) *             minusInf  <>  Infinity or
        floatExpr(  minusInf) *             minusInf  <>  Infinity or
        floatExpr(   -1.0E37) *             minusInf  <>  Infinity or
        floatExpr(  minusBig) *             minusInf  <>  Infinity or
        floatExpr(   -1000.0) *             minusInf  <>  Infinity or
        floatExpr(      -1.0) *             minusInf  <>  Infinity or
        floatExpr(  minusOne) *             minusInf  <>  Infinity or
        floatExpr(  -1.0E-37) *             minusInf  <>  Infinity or
        floatExpr(minusSmall) *             minusInf  <>  Infinity or
        floatExpr(   1.0E-37) *             minusInf  <> -Infinity or
        floatExpr(       1.0) *             minusInf  <> -Infinity or
        floatExpr(    1000.0) *             minusInf  <> -Infinity or
        floatExpr(    1.0E37) *             minusInf  <> -Infinity or
        floatExpr(  Infinity) *             minusInf  <> -Infinity or
                   -Infinity  * floatExpr( -Infinity) <>  Infinity or
                   -Infinity  * floatExpr(  minusInf) <>  Infinity or
                   -Infinity  * floatExpr(   -1.0E37) <>  Infinity or
                   -Infinity  * floatExpr(  minusBig) <>  Infinity or
                   -Infinity  * floatExpr(   -1000.0) <>  Infinity or
                   -Infinity  * floatExpr(      -1.0) <>  Infinity or
                   -Infinity  * floatExpr(  minusOne) <>  Infinity or
                   -Infinity  * floatExpr(  -1.0E-37) <>  Infinity or
                   -Infinity  * floatExpr(minusSmall) <>  Infinity or
                   -Infinity  * floatExpr(   1.0E-37) <> -Infinity or
                   -Infinity  * floatExpr(       1.0) <> -Infinity or
                   -Infinity  * floatExpr(    1000.0) <> -Infinity or
                   -Infinity  * floatExpr(    1.0E37) <> -Infinity or
                   -Infinity  * floatExpr(  Infinity) <> -Infinity or
                    minusInf  * floatExpr( -Infinity) <>  Infinity or
                    minusInf  * floatExpr(  minusInf) <>  Infinity or
                    minusInf  * floatExpr(   -1.0E37) <>  Infinity or
                    minusInf  * floatExpr(  minusBig) <>  Infinity or
                    minusInf  * floatExpr(   -1000.0) <>  Infinity or
                    minusInf  * floatExpr(      -1.0) <>  Infinity or
                    minusInf  * floatExpr(  minusOne) <>  Infinity or
                    minusInf  * floatExpr(  -1.0E-37) <>  Infinity or
                    minusInf  * floatExpr(minusSmall) <>  Infinity or
                    minusInf  * floatExpr(   1.0E-37) <> -Infinity or
                    minusInf  * floatExpr(       1.0) <> -Infinity or
                    minusInf  * floatExpr(    1000.0) <> -Infinity or
                    minusInf  * floatExpr(    1.0E37) <> -Infinity or
                    minusInf  * floatExpr(  Infinity) <> -Infinity or
                   -Infinity  * floatExpr( -Infinity) <>  Infinity or
                    minusInf  * floatExpr( -Infinity) <>  Infinity or
                     -1.0E37  * floatExpr( -Infinity) <>  Infinity or
                    minusBig  * floatExpr( -Infinity) <>  Infinity or
                     -1000.0  * floatExpr( -Infinity) <>  Infinity or
                        -1.0  * floatExpr( -Infinity) <>  Infinity or
                    minusOne  * floatExpr( -Infinity) <>  Infinity or
                    -1.0E-37  * floatExpr( -Infinity) <>  Infinity or
                  minusSmall  * floatExpr( -Infinity) <>  Infinity or
                     1.0E-37  * floatExpr( -Infinity) <> -Infinity or
                         1.0  * floatExpr( -Infinity) <> -Infinity or
                      1000.0  * floatExpr( -Infinity) <> -Infinity or
                      1.0E37  * floatExpr( -Infinity) <> -Infinity or
                    Infinity  * floatExpr( -Infinity) <> -Infinity or
                   -Infinity  * floatExpr(  minusInf) <>  Infinity or
                    minusInf  * floatExpr(  minusInf) <>  Infinity or
                     -1.0E37  * floatExpr(  minusInf) <>  Infinity or
                    minusBig  * floatExpr(  minusInf) <>  Infinity or
                     -1000.0  * floatExpr(  minusInf) <>  Infinity or
                        -1.0  * floatExpr(  minusInf) <>  Infinity or
                    minusOne  * floatExpr(  minusInf) <>  Infinity or
                    -1.0E-37  * floatExpr(  minusInf) <>  Infinity or
                  minusSmall  * floatExpr(  minusInf) <>  Infinity or
                     1.0E-37  * floatExpr(  minusInf) <> -Infinity or
                         1.0  * floatExpr(  minusInf) <> -Infinity or
                      1000.0  * floatExpr(  minusInf) <> -Infinity or
                      1.0E37  * floatExpr(  minusInf) <> -Infinity or
                    Infinity  * floatExpr(  minusInf) <> -Infinity or
        floatExpr( -Infinity) * floatExpr( -Infinity) <>  Infinity or
        floatExpr( -Infinity) * floatExpr(  minusInf) <>  Infinity or
        floatExpr( -Infinity) * floatExpr(   -1.0E37) <>  Infinity or
        floatExpr( -Infinity) * floatExpr(  minusBig) <>  Infinity or
        floatExpr( -Infinity) * floatExpr(   -1000.0) <>  Infinity or
        floatExpr( -Infinity) * floatExpr(      -1.0) <>  Infinity or
        floatExpr( -Infinity) * floatExpr(  minusOne) <>  Infinity or
        floatExpr( -Infinity) * floatExpr(  -1.0E-37) <>  Infinity or
        floatExpr( -Infinity) * floatExpr(minusSmall) <>  Infinity or
        floatExpr( -Infinity) * floatExpr(   1.0E-37) <> -Infinity or
        floatExpr( -Infinity) * floatExpr(       1.0) <> -Infinity or
        floatExpr( -Infinity) * floatExpr(    1000.0) <> -Infinity or
        floatExpr( -Infinity) * floatExpr(    1.0E37) <> -Infinity or
        floatExpr( -Infinity) * floatExpr(  Infinity) <> -Infinity or
        floatExpr(  minusInf) * floatExpr( -Infinity) <>  Infinity or
        floatExpr(  minusInf) * floatExpr(  minusInf) <>  Infinity or
        floatExpr(  minusInf) * floatExpr(   -1.0E37) <>  Infinity or
        floatExpr(  minusInf) * floatExpr(  minusBig) <>  Infinity or
        floatExpr(  minusInf) * floatExpr(   -1000.0) <>  Infinity or
        floatExpr(  minusInf) * floatExpr(      -1.0) <>  Infinity or
        floatExpr(  minusInf) * floatExpr(  minusOne) <>  Infinity or
        floatExpr(  minusInf) * floatExpr(  -1.0E-37) <>  Infinity or
        floatExpr(  minusInf) * floatExpr(minusSmall) <>  Infinity or
        floatExpr(  minusInf) * floatExpr(   1.0E-37) <> -Infinity or
        floatExpr(  minusInf) * floatExpr(       1.0) <> -Infinity or
        floatExpr(  minusInf) * floatExpr(    1000.0) <> -Infinity or
        floatExpr(  minusInf) * floatExpr(    1.0E37) <> -Infinity or
        floatExpr(  minusInf) * floatExpr(  Infinity) <> -Infinity or
        floatExpr( -Infinity) * floatExpr( -Infinity) <>  Infinity or
        floatExpr(  minusInf) * floatExpr( -Infinity) <>  Infinity or
        floatExpr(   -1.0E37) * floatExpr( -Infinity) <>  Infinity or
        floatExpr(  minusBig) * floatExpr( -Infinity) <>  Infinity or
        floatExpr(   -1000.0) * floatExpr( -Infinity) <>  Infinity or
        floatExpr(      -1.0) * floatExpr( -Infinity) <>  Infinity or
        floatExpr(  minusOne) * floatExpr( -Infinity) <>  Infinity or
        floatExpr(  -1.0E-37) * floatExpr( -Infinity) <>  Infinity or
        floatExpr(minusSmall) * floatExpr( -Infinity) <>  Infinity or
        floatExpr(   1.0E-37) * floatExpr( -Infinity) <> -Infinity or
        floatExpr(       1.0) * floatExpr( -Infinity) <> -Infinity or
        floatExpr(    1000.0) * floatExpr( -Infinity) <> -Infinity or
        floatExpr(    1.0E37) * floatExpr( -Infinity) <> -Infinity or
        floatExpr(  Infinity) * floatExpr( -Infinity) <> -Infinity or
        floatExpr( -Infinity) * floatExpr(  minusInf) <>  Infinity or
        floatExpr(  minusInf) * floatExpr(  minusInf) <>  Infinity or
        floatExpr(   -1.0E37) * floatExpr(  minusInf) <>  Infinity or
        floatExpr(  minusBig) * floatExpr(  minusInf) <>  Infinity or
        floatExpr(   -1000.0) * floatExpr(  minusInf) <>  Infinity or
        floatExpr(      -1.0) * floatExpr(  minusInf) <>  Infinity or
        floatExpr(  minusOne) * floatExpr(  minusInf) <>  Infinity or
        floatExpr(  -1.0E-37) * floatExpr(  minusInf) <>  Infinity or
        floatExpr(minusSmall) * floatExpr(  minusInf) <>  Infinity or
        floatExpr(   1.0E-37) * floatExpr(  minusInf) <> -Infinity or
        floatExpr(       1.0) * floatExpr(  minusInf) <> -Infinity or
        floatExpr(    1000.0) * floatExpr(  minusInf) <> -Infinity or
        floatExpr(    1.0E37) * floatExpr(  minusInf) <> -Infinity or
        floatExpr(  Infinity) * floatExpr(  minusInf) <> -Infinity then
      writeln(" ***** -Infinity multiplied by any value except zero, is not Infinity");
      okay := FALSE;
    end if;

    if            abs(-Infinity)  <> Infinity or
                  abs( minusInf)  <> Infinity or
                  abs( Infinity)  <> Infinity or
        floatExpr(abs(-Infinity)) <> Infinity or
        floatExpr(abs( minusInf)) <> Infinity or
        floatExpr(abs( Infinity)) <> Infinity then
      writeln(" ***** Absolute value of Infinity does not work correct");
      okay := FALSE;
    end if;

    if okay then
      writeln("Infinity works correct for selected values.");
    else
      writeln(" ***** Infinity does not work correct");
    end if;
  end func;


const proc: check_nan is func
  local
    const float: minusZero is -0.0;
    const float: minusInf is -Infinity;
    const float: minusBig is -1.0E37;
    var float: nanVar1 is NaN;
    var float: nanVar2 is NaN;
    var float: floatVar is 0.0;
    var boolean: okay is TRUE;
  begin
    if  not isNaN(               -0.0  /                -0.0)  or
        not isNaN(               -0.0  /           minusZero)  or
        not isNaN(               -0.0  /                 0.0)  or
        not isNaN(          minusZero  /                -0.0)  or
        not isNaN(          minusZero  /           minusZero)  or
        not isNaN(          minusZero  /                 0.0)  or
        not isNaN(                0.0  /                -0.0)  or
        not isNaN(                0.0  /           minusZero)  or
        not isNaN(                0.0  /                 0.0)  or
        not isNaN(floatExpr(     -0.0) /                -0.0)  or
        not isNaN(floatExpr(     -0.0) /           minusZero)  or
        not isNaN(floatExpr(     -0.0) /                 0.0)  or
        not isNaN(floatExpr(minusZero) /                -0.0)  or
        not isNaN(floatExpr(minusZero) /           minusZero)  or
        not isNaN(floatExpr(minusZero) /                 0.0)  or
        not isNaN(floatExpr(      0.0) /                -0.0)  or
        not isNaN(floatExpr(      0.0) /           minusZero)  or
        not isNaN(floatExpr(      0.0) /                 0.0)  or
        not isNaN(               -0.0  / floatExpr(     -0.0)) or
        not isNaN(               -0.0  / floatExpr(minusZero)) or
        not isNaN(               -0.0  / floatExpr(      0.0)) or
        not isNaN(          minusZero  / floatExpr(     -0.0)) or
        not isNaN(          minusZero  / floatExpr(minusZero)) or
        not isNaN(          minusZero  / floatExpr(      0.0)) or
        not isNaN(                0.0  / floatExpr(     -0.0)) or
        not isNaN(                0.0  / floatExpr(minusZero)) or
        not isNaN(                0.0  / floatExpr(      0.0)) or
        not isNaN(floatExpr(     -0.0) / floatExpr(     -0.0)) or
        not isNaN(floatExpr(     -0.0) / floatExpr(minusZero)) or
        not isNaN(floatExpr(     -0.0) / floatExpr(      0.0)) or
        not isNaN(floatExpr(minusZero) / floatExpr(     -0.0)) or
        not isNaN(floatExpr(minusZero) / floatExpr(minusZero)) or
        not isNaN(floatExpr(minusZero) / floatExpr(      0.0)) or
        not isNaN(floatExpr(      0.0) / floatExpr(     -0.0)) or
        not isNaN(floatExpr(      0.0) / floatExpr(minusZero)) or
        not isNaN(floatExpr(      0.0) / floatExpr(      0.0)) then
      writeln(" ***** 0.0 / 0.0 does not return NaN");
      okay := FALSE;
    end if;

    if  not isNaN(          -Infinity  /           -Infinity)  or
        not isNaN(          -Infinity  /            minusInf)  or
        not isNaN(          -Infinity  /            Infinity)  or
        not isNaN(           minusInf  /           -Infinity)  or
        not isNaN(           minusInf  /            minusInf)  or
        not isNaN(           minusInf  /            Infinity)  or
        not isNaN(           Infinity  /           -Infinity)  or
        not isNaN(           Infinity  /            minusInf)  or
        not isNaN(           Infinity  /            Infinity)  or
        not isNaN(floatExpr(-Infinity) /           -Infinity)  or
        not isNaN(floatExpr(-Infinity) /            minusInf)  or
        not isNaN(floatExpr(-Infinity) /            Infinity)  or
        not isNaN(floatExpr( minusInf) /           -Infinity)  or
        not isNaN(floatExpr( minusInf) /            minusInf)  or
        not isNaN(floatExpr( minusInf) /            Infinity)  or
        not isNaN(floatExpr( Infinity) /           -Infinity)  or
        not isNaN(floatExpr( Infinity) /            minusInf)  or
        not isNaN(floatExpr( Infinity) /            Infinity)  or
        not isNaN(          -Infinity  / floatExpr(-Infinity)) or
        not isNaN(          -Infinity  / floatExpr( minusInf)) or
        not isNaN(          -Infinity  / floatExpr( Infinity)) or
        not isNaN(           minusInf  / floatExpr(-Infinity)) or
        not isNaN(           minusInf  / floatExpr( minusInf)) or
        not isNaN(           minusInf  / floatExpr( Infinity)) or
        not isNaN(           Infinity  / floatExpr(-Infinity)) or
        not isNaN(           Infinity  / floatExpr( minusInf)) or
        not isNaN(           Infinity  / floatExpr( Infinity)) or
        not isNaN(floatExpr(-Infinity) / floatExpr(-Infinity)) or
        not isNaN(floatExpr(-Infinity) / floatExpr( minusInf)) or
        not isNaN(floatExpr(-Infinity) / floatExpr( Infinity)) or
        not isNaN(floatExpr( minusInf) / floatExpr(-Infinity)) or
        not isNaN(floatExpr( minusInf) / floatExpr( minusInf)) or
        not isNaN(floatExpr( minusInf) / floatExpr( Infinity)) or
        not isNaN(floatExpr( Infinity) / floatExpr(-Infinity)) or
        not isNaN(floatExpr( Infinity) / floatExpr( minusInf)) or
        not isNaN(floatExpr( Infinity) / floatExpr( Infinity)) then
      writeln(" ***** Infinity / Infinity does not return NaN");
      okay := FALSE;
    end if;

    if  not isNaN(               -0.0  *           -Infinity)  or
        not isNaN(               -0.0  *            minusInf)  or
        not isNaN(               -0.0  *            Infinity)  or
        not isNaN(          minusZero  *           -Infinity)  or
        not isNaN(          minusZero  *            minusInf)  or
        not isNaN(          minusZero  *            Infinity)  or
        not isNaN(                0.0  *           -Infinity)  or
        not isNaN(                0.0  *            minusInf)  or
        not isNaN(                0.0  *            Infinity)  or
        not isNaN(floatExpr(     -0.0) *           -Infinity)  or
        not isNaN(floatExpr(     -0.0) *            minusInf)  or
        not isNaN(floatExpr(     -0.0) *            Infinity)  or
        not isNaN(floatExpr(minusZero) *           -Infinity)  or
        not isNaN(floatExpr(minusZero) *            minusInf)  or
        not isNaN(floatExpr(minusZero) *            Infinity)  or
        not isNaN(floatExpr(      0.0) *           -Infinity)  or
        not isNaN(floatExpr(      0.0) *            minusInf)  or
        not isNaN(floatExpr(      0.0) *            Infinity)  or
        not isNaN(               -0.0  * floatExpr(-Infinity)) or
        not isNaN(               -0.0  * floatExpr( minusInf)) or
        not isNaN(               -0.0  * floatExpr( Infinity)) or
        not isNaN(          minusZero  * floatExpr(-Infinity)) or
        not isNaN(          minusZero  * floatExpr( minusInf)) or
        not isNaN(          minusZero  * floatExpr( Infinity)) or
        not isNaN(                0.0  * floatExpr(-Infinity)) or
        not isNaN(                0.0  * floatExpr( minusInf)) or
        not isNaN(                0.0  * floatExpr( Infinity)) or
        not isNaN(floatExpr(     -0.0) * floatExpr(-Infinity)) or
        not isNaN(floatExpr(     -0.0) * floatExpr( minusInf)) or
        not isNaN(floatExpr(     -0.0) * floatExpr( Infinity)) or
        not isNaN(floatExpr(minusZero) * floatExpr(-Infinity)) or
        not isNaN(floatExpr(minusZero) * floatExpr( minusInf)) or
        not isNaN(floatExpr(minusZero) * floatExpr( Infinity)) or
        not isNaN(floatExpr(      0.0) * floatExpr(-Infinity)) or
        not isNaN(floatExpr(      0.0) * floatExpr( minusInf)) or
        not isNaN(floatExpr(      0.0) * floatExpr( Infinity)) then
      writeln(" ***** 0.0 * Infinity does not return NaN");
      okay := FALSE;
    end if;

    if  not isNaN(          -Infinity  *                -0.0)  or
        not isNaN(           minusInf  *                -0.0)  or
        not isNaN(           Infinity  *                -0.0)  or
        not isNaN(          -Infinity  *           minusZero)  or
        not isNaN(           minusInf  *           minusZero)  or
        not isNaN(           Infinity  *           minusZero)  or
        not isNaN(          -Infinity  *                 0.0)  or
        not isNaN(           minusInf  *                 0.0)  or
        not isNaN(           Infinity  *                 0.0)  or
        not isNaN(floatExpr(-Infinity) *                -0.0)  or
        not isNaN(floatExpr( minusInf) *                -0.0)  or
        not isNaN(floatExpr( Infinity) *                -0.0)  or
        not isNaN(floatExpr(-Infinity) *           minusZero)  or
        not isNaN(floatExpr( minusInf) *           minusZero)  or
        not isNaN(floatExpr( Infinity) *           minusZero)  or
        not isNaN(floatExpr(-Infinity) *                 0.0)  or
        not isNaN(floatExpr( minusInf) *                 0.0)  or
        not isNaN(floatExpr( Infinity) *                 0.0)  or
        not isNaN(          -Infinity  * floatExpr(     -0.0)) or
        not isNaN(           minusInf  * floatExpr(     -0.0)) or
        not isNaN(           Infinity  * floatExpr(     -0.0)) or
        not isNaN(          -Infinity  * floatExpr(minusZero)) or
        not isNaN(           minusInf  * floatExpr(minusZero)) or
        not isNaN(           Infinity  * floatExpr(minusZero)) or
        not isNaN(          -Infinity  * floatExpr(      0.0)) or
        not isNaN(           minusInf  * floatExpr(      0.0)) or
        not isNaN(           Infinity  * floatExpr(      0.0)) or
        not isNaN(floatExpr(-Infinity) * floatExpr(     -0.0)) or
        not isNaN(floatExpr( minusInf) * floatExpr(     -0.0)) or
        not isNaN(floatExpr( Infinity) * floatExpr(     -0.0)) or
        not isNaN(floatExpr(-Infinity) * floatExpr(minusZero)) or
        not isNaN(floatExpr( minusInf) * floatExpr(minusZero)) or
        not isNaN(floatExpr( Infinity) * floatExpr(minusZero)) or
        not isNaN(floatExpr(-Infinity) * floatExpr(      0.0)) or
        not isNaN(floatExpr( minusInf) * floatExpr(      0.0)) or
        not isNaN(floatExpr( Infinity) * floatExpr(      0.0)) then
      writeln(" ***** Infinity * 0.0 does not return NaN");
      okay := FALSE;
    end if;

    if  not isNaN(          -Infinity  -           -Infinity)  or
        not isNaN(          -Infinity  -            minusInf)  or
        not isNaN(          -Infinity  +            Infinity)  or
        not isNaN(           minusInf  -           -Infinity)  or
        not isNaN(           minusInf  -            minusInf)  or
        not isNaN(           minusInf  +            Infinity)  or
        not isNaN(           Infinity  +           -Infinity)  or
        not isNaN(           Infinity  +            minusInf)  or
        not isNaN(           Infinity  -            Infinity)  or
        not isNaN(floatExpr(-Infinity) -           -Infinity)  or
        not isNaN(floatExpr(-Infinity) -            minusInf)  or
        not isNaN(floatExpr(-Infinity) +            Infinity)  or
        not isNaN(floatExpr( minusInf) -           -Infinity)  or
        not isNaN(floatExpr( minusInf) -            minusInf)  or
        not isNaN(floatExpr( minusInf) +            Infinity)  or
        not isNaN(floatExpr( Infinity) +           -Infinity)  or
        not isNaN(floatExpr( Infinity) +            minusInf)  or
        not isNaN(floatExpr( Infinity) -            Infinity)  or
        not isNaN(          -Infinity  - floatExpr(-Infinity)) or
        not isNaN(          -Infinity  - floatExpr( minusInf)) or
        not isNaN(          -Infinity  + floatExpr( Infinity)) or
        not isNaN(           minusInf  - floatExpr(-Infinity)) or
        not isNaN(           minusInf  - floatExpr( minusInf)) or
        not isNaN(           minusInf  + floatExpr( Infinity)) or
        not isNaN(           Infinity  + floatExpr(-Infinity)) or
        not isNaN(           Infinity  + floatExpr( minusInf)) or
        not isNaN(           Infinity  - floatExpr( Infinity)) or
        not isNaN(floatExpr(-Infinity) - floatExpr(-Infinity)) or
        not isNaN(floatExpr(-Infinity) - floatExpr( minusInf)) or
        not isNaN(floatExpr(-Infinity) + floatExpr( Infinity)) or
        not isNaN(floatExpr( minusInf) - floatExpr(-Infinity)) or
        not isNaN(floatExpr( minusInf) - floatExpr( minusInf)) or
        not isNaN(floatExpr( minusInf) + floatExpr( Infinity)) or
        not isNaN(floatExpr( Infinity) + floatExpr(-Infinity)) or
        not isNaN(floatExpr( Infinity) + floatExpr( minusInf)) or
        not isNaN(floatExpr( Infinity) - floatExpr( Infinity)) then
      writeln(" ***** Infinity - Infinity does not return NaN");
      okay := FALSE;
    end if;

    if  not isNaN(asin(2.0))   or
        not isNaN(acos(2.0))   or
        not isNaN(sqrt(-1.0))  or
        not isNaN(log(-1.0))   or
        not isNaN(log10(-1.0)) then
      writeln(" ***** NaN is not returned as error value for math functions");
      okay := FALSE;
    end if;

    if  not isNaN(          NaN  +           -Infinity)  or
        not isNaN(          NaN  +            minusInf)  or
        not isNaN(          NaN  +             -1.0E37)  or
        not isNaN(          NaN  +            minusBig)  or
        not isNaN(          NaN  +             -1000.0)  or
        not isNaN(          NaN  +                -0.0)  or
        not isNaN(          NaN  +           minusZero)  or
        not isNaN(          NaN  +                 0.0)  or
        not isNaN(          NaN  +              1000.0)  or
        not isNaN(          NaN  +              1.0E37)  or
        not isNaN(          NaN  +            Infinity)  or
        not isNaN(          NaN  +                 NaN)  or
        not isNaN(floatExpr(NaN) +           -Infinity)  or
        not isNaN(floatExpr(NaN) +            minusInf)  or
        not isNaN(floatExpr(NaN) +             -1.0E37)  or
        not isNaN(floatExpr(NaN) +            minusBig)  or
        not isNaN(floatExpr(NaN) +             -1000.0)  or
        not isNaN(floatExpr(NaN) +                -0.0)  or
        not isNaN(floatExpr(NaN) +           minusZero)  or
        not isNaN(floatExpr(NaN) +                 0.0)  or
        not isNaN(floatExpr(NaN) +              1000.0)  or
        not isNaN(floatExpr(NaN) +              1.0E37)  or
        not isNaN(floatExpr(NaN) +            Infinity)  or
        not isNaN(floatExpr(NaN) +                 NaN)  or
        not isNaN(          NaN  + floatExpr(-Infinity)) or
        not isNaN(          NaN  + floatExpr( minusInf)) or
        not isNaN(          NaN  + floatExpr(  -1.0E37)) or
        not isNaN(          NaN  + floatExpr( minusBig)) or
        not isNaN(          NaN  + floatExpr(  -1000.0)) or
        not isNaN(          NaN  + floatExpr(     -0.0)) or
        not isNaN(          NaN  + floatExpr(minusZero)) or
        not isNaN(          NaN  + floatExpr(      0.0)) or
        not isNaN(          NaN  + floatExpr(   1000.0)) or
        not isNaN(          NaN  + floatExpr(   1.0E37)) or
        not isNaN(          NaN  + floatExpr( Infinity)) or
        not isNaN(          NaN  + floatExpr(      NaN)) or
        not isNaN(floatExpr(NaN) + floatExpr(-Infinity)) or
        not isNaN(floatExpr(NaN) + floatExpr( minusInf)) or
        not isNaN(floatExpr(NaN) + floatExpr(  -1.0E37)) or
        not isNaN(floatExpr(NaN) + floatExpr( minusBig)) or
        not isNaN(floatExpr(NaN) + floatExpr(  -1000.0)) or
        not isNaN(floatExpr(NaN) + floatExpr(     -0.0)) or
        not isNaN(floatExpr(NaN) + floatExpr(minusZero)) or
        not isNaN(floatExpr(NaN) + floatExpr(      0.0)) or
        not isNaN(floatExpr(NaN) + floatExpr(   1000.0)) or
        not isNaN(floatExpr(NaN) + floatExpr(   1.0E37)) or
        not isNaN(floatExpr(NaN) + floatExpr( Infinity)) or
        not isNaN(floatExpr(NaN) + floatExpr(      NaN)) or
        not isNaN(          -Infinity  +           NaN)  or
        not isNaN(           minusInf  +           NaN)  or
        not isNaN(            -1.0E37  +           NaN)  or
        not isNaN(           minusBig  +           NaN)  or
        not isNaN(            -1000.0  +           NaN)  or
        not isNaN(               -0.0  +           NaN)  or
        not isNaN(          minusZero  +           NaN)  or
        not isNaN(                0.0  +           NaN)  or
        not isNaN(             1000.0  +           NaN)  or
        not isNaN(             1.0E37  +           NaN)  or
        not isNaN(           Infinity  +           NaN)  or
        not isNaN(                NaN  +           NaN)  or
        not isNaN(          -Infinity  + floatExpr(NaN)) or
        not isNaN(           minusInf  + floatExpr(NaN)) or
        not isNaN(            -1.0E37  + floatExpr(NaN)) or
        not isNaN(           minusBig  + floatExpr(NaN)) or
        not isNaN(            -1000.0  + floatExpr(NaN)) or
        not isNaN(               -0.0  + floatExpr(NaN)) or
        not isNaN(          minusZero  + floatExpr(NaN)) or
        not isNaN(                0.0  + floatExpr(NaN)) or
        not isNaN(             1000.0  + floatExpr(NaN)) or
        not isNaN(             1.0E37  + floatExpr(NaN)) or
        not isNaN(           Infinity  + floatExpr(NaN)) or
        not isNaN(                NaN  + floatExpr(NaN)) or
        not isNaN(floatExpr(-Infinity) +           NaN)  or
        not isNaN(floatExpr( minusInf) +           NaN)  or
        not isNaN(floatExpr(  -1.0E37) +           NaN)  or
        not isNaN(floatExpr( minusBig) +           NaN)  or
        not isNaN(floatExpr(  -1000.0) +           NaN)  or
        not isNaN(floatExpr(     -0.0) +           NaN)  or
        not isNaN(floatExpr(minusZero) +           NaN)  or
        not isNaN(floatExpr(      0.0) +           NaN)  or
        not isNaN(floatExpr(   1000.0) +           NaN)  or
        not isNaN(floatExpr(   1.0E37) +           NaN)  or
        not isNaN(floatExpr( Infinity) +           NaN)  or
        not isNaN(floatExpr(      NaN) +           NaN)  or
        not isNaN(floatExpr(-Infinity) + floatExpr(NaN)) or
        not isNaN(floatExpr( minusInf) + floatExpr(NaN)) or
        not isNaN(floatExpr(  -1.0E37) + floatExpr(NaN)) or
        not isNaN(floatExpr( minusBig) + floatExpr(NaN)) or
        not isNaN(floatExpr(  -1000.0) + floatExpr(NaN)) or
        not isNaN(floatExpr(     -0.0) + floatExpr(NaN)) or
        not isNaN(floatExpr(minusZero) + floatExpr(NaN)) or
        not isNaN(floatExpr(      0.0) + floatExpr(NaN)) or
        not isNaN(floatExpr(   1000.0) + floatExpr(NaN)) or
        not isNaN(floatExpr(   1.0E37) + floatExpr(NaN)) or
        not isNaN(floatExpr( Infinity) + floatExpr(NaN)) or
        not isNaN(floatExpr(      NaN) + floatExpr(NaN)) then
      writeln(" ***** Adding a value to NaN does not return NaN");
      okay := FALSE;
    end if;

    if  not isNaN(          NaN  -           -Infinity)  or
        not isNaN(          NaN  -            minusInf)  or
        not isNaN(          NaN  -             -1.0E37)  or
        not isNaN(          NaN  -            minusBig)  or
        not isNaN(          NaN  -             -1000.0)  or
        not isNaN(          NaN  -                -0.0)  or
        not isNaN(          NaN  -           minusZero)  or
        not isNaN(          NaN  -                 0.0)  or
        not isNaN(          NaN  -              1000.0)  or
        not isNaN(          NaN  -              1.0E37)  or
        not isNaN(          NaN  -            Infinity)  or
        not isNaN(          NaN  -                 NaN)  or
        not isNaN(floatExpr(NaN) -           -Infinity)  or
        not isNaN(floatExpr(NaN) -            minusInf)  or
        not isNaN(floatExpr(NaN) -             -1.0E37)  or
        not isNaN(floatExpr(NaN) -            minusBig)  or
        not isNaN(floatExpr(NaN) -             -1000.0)  or
        not isNaN(floatExpr(NaN) -                -0.0)  or
        not isNaN(floatExpr(NaN) -           minusZero)  or
        not isNaN(floatExpr(NaN) -                 0.0)  or
        not isNaN(floatExpr(NaN) -              1000.0)  or
        not isNaN(floatExpr(NaN) -              1.0E37)  or
        not isNaN(floatExpr(NaN) -            Infinity)  or
        not isNaN(floatExpr(NaN) -                 NaN)  or
        not isNaN(          NaN  - floatExpr(-Infinity)) or
        not isNaN(          NaN  - floatExpr( minusInf)) or
        not isNaN(          NaN  - floatExpr(  -1.0E37)) or
        not isNaN(          NaN  - floatExpr( minusBig)) or
        not isNaN(          NaN  - floatExpr(  -1000.0)) or
        not isNaN(          NaN  - floatExpr(     -0.0)) or
        not isNaN(          NaN  - floatExpr(minusZero)) or
        not isNaN(          NaN  - floatExpr(      0.0)) or
        not isNaN(          NaN  - floatExpr(   1000.0)) or
        not isNaN(          NaN  - floatExpr(   1.0E37)) or
        not isNaN(          NaN  - floatExpr( Infinity)) or
        not isNaN(          NaN  - floatExpr(      NaN)) or
        not isNaN(floatExpr(NaN) - floatExpr(-Infinity)) or
        not isNaN(floatExpr(NaN) - floatExpr( minusInf)) or
        not isNaN(floatExpr(NaN) - floatExpr(  -1.0E37)) or
        not isNaN(floatExpr(NaN) - floatExpr( minusBig)) or
        not isNaN(floatExpr(NaN) - floatExpr(  -1000.0)) or
        not isNaN(floatExpr(NaN) - floatExpr(     -0.0)) or
        not isNaN(floatExpr(NaN) - floatExpr(minusZero)) or
        not isNaN(floatExpr(NaN) - floatExpr(      0.0)) or
        not isNaN(floatExpr(NaN) - floatExpr(   1000.0)) or
        not isNaN(floatExpr(NaN) - floatExpr(   1.0E37)) or
        not isNaN(floatExpr(NaN) - floatExpr( Infinity)) or
        not isNaN(floatExpr(NaN) - floatExpr(      NaN)) or
        not isNaN(          -Infinity  -           NaN)  or
        not isNaN(           minusInf  -           NaN)  or
        not isNaN(            -1.0E37  -           NaN)  or
        not isNaN(           minusBig  -           NaN)  or
        not isNaN(            -1000.0  -           NaN)  or
        not isNaN(               -0.0  -           NaN)  or
        not isNaN(          minusZero  -           NaN)  or
        not isNaN(                0.0  -           NaN)  or
        not isNaN(             1000.0  -           NaN)  or
        not isNaN(             1.0E37  -           NaN)  or
        not isNaN(           Infinity  -           NaN)  or
        not isNaN(                NaN  -           NaN)  or
        not isNaN(          -Infinity  - floatExpr(NaN)) or
        not isNaN(           minusInf  - floatExpr(NaN)) or
        not isNaN(            -1.0E37  - floatExpr(NaN)) or
        not isNaN(           minusBig  - floatExpr(NaN)) or
        not isNaN(            -1000.0  - floatExpr(NaN)) or
        not isNaN(               -0.0  - floatExpr(NaN)) or
        not isNaN(          minusZero  - floatExpr(NaN)) or
        not isNaN(                0.0  - floatExpr(NaN)) or
        not isNaN(             1000.0  - floatExpr(NaN)) or
        not isNaN(             1.0E37  - floatExpr(NaN)) or
        not isNaN(           Infinity  - floatExpr(NaN)) or
        not isNaN(                NaN  - floatExpr(NaN)) or
        not isNaN(floatExpr(-Infinity) -           NaN)  or
        not isNaN(floatExpr( minusInf) -           NaN)  or
        not isNaN(floatExpr(  -1.0E37) -           NaN)  or
        not isNaN(floatExpr( minusBig) -           NaN)  or
        not isNaN(floatExpr(  -1000.0) -           NaN)  or
        not isNaN(floatExpr(     -0.0) -           NaN)  or
        not isNaN(floatExpr(minusZero) -           NaN)  or
        not isNaN(floatExpr(      0.0) -           NaN)  or
        not isNaN(floatExpr(   1000.0) -           NaN)  or
        not isNaN(floatExpr(   1.0E37) -           NaN)  or
        not isNaN(floatExpr( Infinity) -           NaN)  or
        not isNaN(floatExpr(      NaN) -           NaN)  or
        not isNaN(floatExpr(-Infinity) - floatExpr(NaN)) or
        not isNaN(floatExpr( minusInf) - floatExpr(NaN)) or
        not isNaN(floatExpr(  -1.0E37) - floatExpr(NaN)) or
        not isNaN(floatExpr( minusBig) - floatExpr(NaN)) or
        not isNaN(floatExpr(  -1000.0) - floatExpr(NaN)) or
        not isNaN(floatExpr(     -0.0) - floatExpr(NaN)) or
        not isNaN(floatExpr(minusZero) - floatExpr(NaN)) or
        not isNaN(floatExpr(      0.0) - floatExpr(NaN)) or
        not isNaN(floatExpr(   1000.0) - floatExpr(NaN)) or
        not isNaN(floatExpr(   1.0E37) - floatExpr(NaN)) or
        not isNaN(floatExpr( Infinity) - floatExpr(NaN)) or
        not isNaN(floatExpr(      NaN) - floatExpr(NaN)) then
      writeln(" ***** Subtracting from NaN or subtracting NaN does not return NaN");
      okay := FALSE;
    end if;

    if  not isNaN(          NaN  *           -Infinity)  or
        not isNaN(          NaN  *            minusInf)  or
        not isNaN(          NaN  *             -1.0E37)  or
        not isNaN(          NaN  *            minusBig)  or
        not isNaN(          NaN  *             -1000.0)  or
        not isNaN(          NaN  *                -0.0)  or
        not isNaN(          NaN  *           minusZero)  or
        not isNaN(          NaN  *                 0.0)  or
        not isNaN(          NaN  *              1000.0)  or
        not isNaN(          NaN  *              1.0E37)  or
        not isNaN(          NaN  *            Infinity)  or
        not isNaN(          NaN  *                 NaN)  or
        not isNaN(floatExpr(NaN) *           -Infinity)  or
        not isNaN(floatExpr(NaN) *            minusInf)  or
        not isNaN(floatExpr(NaN) *             -1.0E37)  or
        not isNaN(floatExpr(NaN) *            minusBig)  or
        not isNaN(floatExpr(NaN) *             -1000.0)  or
        not isNaN(floatExpr(NaN) *                -0.0)  or
        not isNaN(floatExpr(NaN) *           minusZero)  or
        not isNaN(floatExpr(NaN) *                 0.0)  or
        not isNaN(floatExpr(NaN) *              1000.0)  or
        not isNaN(floatExpr(NaN) *              1.0E37)  or
        not isNaN(floatExpr(NaN) *            Infinity)  or
        not isNaN(floatExpr(NaN) *                 NaN)  or
        not isNaN(          NaN  * floatExpr(-Infinity)) or
        not isNaN(          NaN  * floatExpr( minusInf)) or
        not isNaN(          NaN  * floatExpr(  -1.0E37)) or
        not isNaN(          NaN  * floatExpr( minusBig)) or
        not isNaN(          NaN  * floatExpr(  -1000.0)) or
        not isNaN(          NaN  * floatExpr(     -0.0)) or
        not isNaN(          NaN  * floatExpr(minusZero)) or
        not isNaN(          NaN  * floatExpr(      0.0)) or
        not isNaN(          NaN  * floatExpr(   1000.0)) or
        not isNaN(          NaN  * floatExpr(   1.0E37)) or
        not isNaN(          NaN  * floatExpr( Infinity)) or
        not isNaN(          NaN  * floatExpr(      NaN)) or
        not isNaN(floatExpr(NaN) * floatExpr(-Infinity)) or
        not isNaN(floatExpr(NaN) * floatExpr( minusInf)) or
        not isNaN(floatExpr(NaN) * floatExpr(  -1.0E37)) or
        not isNaN(floatExpr(NaN) * floatExpr( minusBig)) or
        not isNaN(floatExpr(NaN) * floatExpr(  -1000.0)) or
        not isNaN(floatExpr(NaN) * floatExpr(     -0.0)) or
        not isNaN(floatExpr(NaN) * floatExpr(minusZero)) or
        not isNaN(floatExpr(NaN) * floatExpr(      0.0)) or
        not isNaN(floatExpr(NaN) * floatExpr(   1000.0)) or
        not isNaN(floatExpr(NaN) * floatExpr(   1.0E37)) or
        not isNaN(floatExpr(NaN) * floatExpr( Infinity)) or
        not isNaN(floatExpr(NaN) * floatExpr(      NaN)) or
        not isNaN(          -Infinity  *           NaN)  or
        not isNaN(           minusInf  *           NaN)  or
        not isNaN(            -1.0E37  *           NaN)  or
        not isNaN(           minusBig  *           NaN)  or
        not isNaN(            -1000.0  *           NaN)  or
        not isNaN(               -0.0  *           NaN)  or
        not isNaN(          minusZero  *           NaN)  or
        not isNaN(                0.0  *           NaN)  or
        not isNaN(             1000.0  *           NaN)  or
        not isNaN(             1.0E37  *           NaN)  or
        not isNaN(           Infinity  *           NaN)  or
        not isNaN(                NaN  *           NaN)  or
        not isNaN(          -Infinity  * floatExpr(NaN)) or
        not isNaN(           minusInf  * floatExpr(NaN)) or
        not isNaN(            -1.0E37  * floatExpr(NaN)) or
        not isNaN(           minusBig  * floatExpr(NaN)) or
        not isNaN(            -1000.0  * floatExpr(NaN)) or
        not isNaN(               -0.0  * floatExpr(NaN)) or
        not isNaN(          minusZero  * floatExpr(NaN)) or
        not isNaN(                0.0  * floatExpr(NaN)) or
        not isNaN(             1000.0  * floatExpr(NaN)) or
        not isNaN(             1.0E37  * floatExpr(NaN)) or
        not isNaN(           Infinity  * floatExpr(NaN)) or
        not isNaN(                NaN  * floatExpr(NaN)) or
        not isNaN(floatExpr(-Infinity) *           NaN)  or
        not isNaN(floatExpr( minusInf) *           NaN)  or
        not isNaN(floatExpr(  -1.0E37) *           NaN)  or
        not isNaN(floatExpr( minusBig) *           NaN)  or
        not isNaN(floatExpr(  -1000.0) *           NaN)  or
        not isNaN(floatExpr(     -0.0) *           NaN)  or
        not isNaN(floatExpr(minusZero) *           NaN)  or
        not isNaN(floatExpr(      0.0) *           NaN)  or
        not isNaN(floatExpr(   1000.0) *           NaN)  or
        not isNaN(floatExpr(   1.0E37) *           NaN)  or
        not isNaN(floatExpr( Infinity) *           NaN)  or
        not isNaN(floatExpr(      NaN) *           NaN)  or
        not isNaN(floatExpr(-Infinity) * floatExpr(NaN)) or
        not isNaN(floatExpr( minusInf) * floatExpr(NaN)) or
        not isNaN(floatExpr(  -1.0E37) * floatExpr(NaN)) or
        not isNaN(floatExpr( minusBig) * floatExpr(NaN)) or
        not isNaN(floatExpr(  -1000.0) * floatExpr(NaN)) or
        not isNaN(floatExpr(     -0.0) * floatExpr(NaN)) or
        not isNaN(floatExpr(minusZero) * floatExpr(NaN)) or
        not isNaN(floatExpr(      0.0) * floatExpr(NaN)) or
        not isNaN(floatExpr(   1000.0) * floatExpr(NaN)) or
        not isNaN(floatExpr(   1.0E37) * floatExpr(NaN)) or
        not isNaN(floatExpr( Infinity) * floatExpr(NaN)) or
        not isNaN(floatExpr(      NaN) * floatExpr(NaN)) then
      writeln(" ***** Multiplying by NaN does not return NaN");
      okay := FALSE;
    end if;

    if  not isNaN(          NaN  /           -Infinity)  or
        not isNaN(          NaN  /            minusInf)  or
        not isNaN(          NaN  /             -1.0E37)  or
        not isNaN(          NaN  /            minusBig)  or
        not isNaN(          NaN  /             -1000.0)  or
        not isNaN(          NaN  /                -0.0)  or
        not isNaN(          NaN  /           minusZero)  or
        not isNaN(          NaN  /                 0.0)  or
        not isNaN(          NaN  /              1000.0)  or
        not isNaN(          NaN  /              1.0E37)  or
        not isNaN(          NaN  /            Infinity)  or
        not isNaN(          NaN  /                 NaN)  or
        not isNaN(floatExpr(NaN) /           -Infinity)  or
        not isNaN(floatExpr(NaN) /            minusInf)  or
        not isNaN(floatExpr(NaN) /             -1.0E37)  or
        not isNaN(floatExpr(NaN) /            minusBig)  or
        not isNaN(floatExpr(NaN) /             -1000.0)  or
        not isNaN(floatExpr(NaN) /                -0.0)  or
        not isNaN(floatExpr(NaN) /           minusZero)  or
        not isNaN(floatExpr(NaN) /                 0.0)  or
        not isNaN(floatExpr(NaN) /              1000.0)  or
        not isNaN(floatExpr(NaN) /              1.0E37)  or
        not isNaN(floatExpr(NaN) /            Infinity)  or
        not isNaN(floatExpr(NaN) /                 NaN)  or
        not isNaN(          NaN  / floatExpr(-Infinity)) or
        not isNaN(          NaN  / floatExpr( minusInf)) or
        not isNaN(          NaN  / floatExpr(  -1.0E37)) or
        not isNaN(          NaN  / floatExpr( minusBig)) or
        not isNaN(          NaN  / floatExpr(  -1000.0)) or
        not isNaN(          NaN  / floatExpr(     -0.0)) or
        not isNaN(          NaN  / floatExpr(minusZero)) or
        not isNaN(          NaN  / floatExpr(      0.0)) or
        not isNaN(          NaN  / floatExpr(   1000.0)) or
        not isNaN(          NaN  / floatExpr(   1.0E37)) or
        not isNaN(          NaN  / floatExpr( Infinity)) or
        not isNaN(          NaN  / floatExpr(      NaN)) or
        not isNaN(floatExpr(NaN) / floatExpr(-Infinity)) or
        not isNaN(floatExpr(NaN) / floatExpr( minusInf)) or
        not isNaN(floatExpr(NaN) / floatExpr(  -1.0E37)) or
        not isNaN(floatExpr(NaN) / floatExpr( minusBig)) or
        not isNaN(floatExpr(NaN) / floatExpr(  -1000.0)) or
        not isNaN(floatExpr(NaN) / floatExpr(     -0.0)) or
        not isNaN(floatExpr(NaN) / floatExpr(minusZero)) or
        not isNaN(floatExpr(NaN) / floatExpr(      0.0)) or
        not isNaN(floatExpr(NaN) / floatExpr(   1000.0)) or
        not isNaN(floatExpr(NaN) / floatExpr(   1.0E37)) or
        not isNaN(floatExpr(NaN) / floatExpr( Infinity)) or
        not isNaN(floatExpr(NaN) / floatExpr(      NaN)) or
        not isNaN(          -Infinity  /           NaN)  or
        not isNaN(           minusInf  /           NaN)  or
        not isNaN(            -1.0E37  /           NaN)  or
        not isNaN(           minusBig  /           NaN)  or
        not isNaN(            -1000.0  /           NaN)  or
        not isNaN(               -0.0  /           NaN)  or
        not isNaN(          minusZero  /           NaN)  or
        not isNaN(                0.0  /           NaN)  or
        not isNaN(             1000.0  /           NaN)  or
        not isNaN(             1.0E37  /           NaN)  or
        not isNaN(           Infinity  /           NaN)  or
        not isNaN(                NaN  /           NaN)  or
        not isNaN(          -Infinity  / floatExpr(NaN)) or
        not isNaN(           minusInf  / floatExpr(NaN)) or
        not isNaN(            -1.0E37  / floatExpr(NaN)) or
        not isNaN(           minusBig  / floatExpr(NaN)) or
        not isNaN(            -1000.0  / floatExpr(NaN)) or
        not isNaN(               -0.0  / floatExpr(NaN)) or
        not isNaN(          minusZero  / floatExpr(NaN)) or
        not isNaN(                0.0  / floatExpr(NaN)) or
        not isNaN(             1000.0  / floatExpr(NaN)) or
        not isNaN(             1.0E37  / floatExpr(NaN)) or
        not isNaN(           Infinity  / floatExpr(NaN)) or
        not isNaN(                NaN  / floatExpr(NaN)) or
        not isNaN(floatExpr(-Infinity) /           NaN)  or
        not isNaN(floatExpr( minusInf) /           NaN)  or
        not isNaN(floatExpr(  -1.0E37) /           NaN)  or
        not isNaN(floatExpr( minusBig) /           NaN)  or
        not isNaN(floatExpr(  -1000.0) /           NaN)  or
        not isNaN(floatExpr(     -0.0) /           NaN)  or
        not isNaN(floatExpr(minusZero) /           NaN)  or
        not isNaN(floatExpr(      0.0) /           NaN)  or
        not isNaN(floatExpr(   1000.0) /           NaN)  or
        not isNaN(floatExpr(   1.0E37) /           NaN)  or
        not isNaN(floatExpr( Infinity) /           NaN)  or
        not isNaN(floatExpr(      NaN) /           NaN)  or
        not isNaN(floatExpr(-Infinity) / floatExpr(NaN)) or
        not isNaN(floatExpr( minusInf) / floatExpr(NaN)) or
        not isNaN(floatExpr(  -1.0E37) / floatExpr(NaN)) or
        not isNaN(floatExpr( minusBig) / floatExpr(NaN)) or
        not isNaN(floatExpr(  -1000.0) / floatExpr(NaN)) or
        not isNaN(floatExpr(     -0.0) / floatExpr(NaN)) or
        not isNaN(floatExpr(minusZero) / floatExpr(NaN)) or
        not isNaN(floatExpr(      0.0) / floatExpr(NaN)) or
        not isNaN(floatExpr(   1000.0) / floatExpr(NaN)) or
        not isNaN(floatExpr(   1.0E37) / floatExpr(NaN)) or
        not isNaN(floatExpr( Infinity) / floatExpr(NaN)) or
        not isNaN(floatExpr(      NaN) / floatExpr(NaN)) then
      writeln(" ***** Dividing NaN or dividing by NaN does not return NaN");
      okay := FALSE;
    end if;

    if  not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:=           -Infinity))  or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:=            minusInf))  or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:=             -1.0E37))  or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:=            minusBig))  or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:=             -1000.0))  or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:=                -0.0))  or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:=           minusZero))  or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:=                 0.0))  or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:=              1000.0))  or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:=              1.0E37))  or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:=            Infinity))  or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:=                 NaN))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:=           -Infinity))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:=            minusInf))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:=             -1.0E37))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:=            minusBig))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:=             -1000.0))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:=                -0.0))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:=           minusZero))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:=                 0.0))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:=              1000.0))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:=              1.0E37))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:=            Infinity))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:=                 NaN))  or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:= floatExpr(-Infinity))) or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:= floatExpr( minusInf))) or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:= floatExpr(  -1.0E37))) or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:= floatExpr( minusBig))) or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:= floatExpr(  -1000.0))) or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:= floatExpr(     -0.0))) or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:= floatExpr(minusZero))) or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:= floatExpr(      0.0))) or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:= floatExpr(   1000.0))) or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:= floatExpr(   1.0E37))) or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:= floatExpr( Infinity))) or
        not isNaN(checkDivAssign(floatVar,           NaN , floatVar /:= floatExpr(      NaN))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:= floatExpr(-Infinity))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:= floatExpr( minusInf))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:= floatExpr(  -1.0E37))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:= floatExpr( minusBig))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:= floatExpr(  -1000.0))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:= floatExpr(     -0.0))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:= floatExpr(minusZero))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:= floatExpr(      0.0))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:= floatExpr(   1000.0))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:= floatExpr(   1.0E37))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:= floatExpr( Infinity))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(NaN), floatVar /:= floatExpr(      NaN))) or
        not isNaN(checkDivAssign(floatVar,           -Infinity , floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar,            minusInf , floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar,             -1.0E37 , floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar,            minusBig , floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar,             -1000.0 , floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar,                -0.0 , floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar,           minusZero , floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar,                 0.0 , floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar,              1000.0 , floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar,              1.0E37 , floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar,            Infinity , floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar,                 NaN , floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar,           -Infinity , floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar,            minusInf , floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar,             -1.0E37 , floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar,            minusBig , floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar,             -1000.0 , floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar,                -0.0 , floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar,           minusZero , floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar,                 0.0 , floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar,              1000.0 , floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar,              1.0E37 , floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar,            Infinity , floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar,                 NaN , floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(-Infinity), floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar, floatExpr( minusInf), floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(  -1.0E37), floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar, floatExpr( minusBig), floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(  -1000.0), floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(     -0.0), floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(minusZero), floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(      0.0), floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(   1000.0), floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(   1.0E37), floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar, floatExpr( Infinity), floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(      NaN), floatVar /:=           NaN))  or
        not isNaN(checkDivAssign(floatVar, floatExpr(-Infinity), floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar, floatExpr( minusInf), floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(  -1.0E37), floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar, floatExpr( minusBig), floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(  -1000.0), floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(     -0.0), floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(minusZero), floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(      0.0), floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(   1000.0), floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(   1.0E37), floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar, floatExpr( Infinity), floatVar /:= floatExpr(NaN))) or
        not isNaN(checkDivAssign(floatVar, floatExpr(      NaN), floatVar /:= floatExpr(NaN))) then
      writeln(" ***** Assignment dividing NaN or dividing by NaN does not return NaN");
      okay := FALSE;
    end if;

    if                  NaN  =                 NaN  or
                        NaN  =           -Infinity  or
                        NaN  =                -1.0  or
                        NaN  =                -0.0  or
                        NaN  =                 0.0  or
                        NaN  =                 1.0  or
                        NaN  =            Infinity  or
                        NaN  =             nanVar1  or
                    nanVar1  =             nanVar1  or
                    nanVar1  =             nanVar2  or
        floatExpr(      NaN) =                 NaN  or
        floatExpr(      NaN) =           -Infinity  or
        floatExpr(      NaN) =                -1.0  or
        floatExpr(      NaN) =                -0.0  or
        floatExpr(      NaN) =                 0.0  or
        floatExpr(      NaN) =                 1.0  or
        floatExpr(      NaN) =            Infinity  or
        floatExpr(      NaN) =             nanVar1  or
        floatExpr(  nanVar1) =             nanVar1  or
        floatExpr(  nanVar1) =             nanVar2  or
                        NaN  = floatExpr(      NaN) or
                        NaN  = floatExpr(-Infinity) or
                        NaN  = floatExpr(     -1.0) or
                        NaN  = floatExpr(     -0.0) or
                        NaN  = floatExpr(      0.0) or
                        NaN  = floatExpr(      1.0) or
                        NaN  = floatExpr( Infinity) or
                        NaN  = floatExpr(  nanVar1) or
                    nanVar1  = floatExpr(  nanVar1) or
                    nanVar1  = floatExpr(  nanVar2) or
        floatExpr(      NaN) = floatExpr(      NaN) or
        floatExpr(      NaN) = floatExpr(-Infinity) or
        floatExpr(      NaN) = floatExpr(     -1.0) or
        floatExpr(      NaN) = floatExpr(     -0.0) or
        floatExpr(      NaN) = floatExpr(      0.0) or
        floatExpr(      NaN) = floatExpr(      1.0) or
        floatExpr(      NaN) = floatExpr( Infinity) or
        floatExpr(      NaN) = floatExpr(  nanVar1) or
        floatExpr(  nanVar1) = floatExpr(  nanVar1) or
        floatExpr(  nanVar1) = floatExpr(  nanVar2) or
                        NaN  =                 NaN  or
                  -Infinity  =                 NaN  or
                       -1.0  =                 NaN  or
                       -0.0  =                 NaN  or
                        0.0  =                 NaN  or
                        1.0  =                 NaN  or
                   Infinity  =                 NaN  or
                    nanVar1  =                 NaN  or
                    nanVar1  =             nanVar1  or
                    nanVar2  =             nanVar1  or
        floatExpr(      NaN) =                 NaN  or
        floatExpr(-Infinity) =                 NaN  or
        floatExpr(     -1.0) =                 NaN  or
        floatExpr(     -0.0) =                 NaN  or
        floatExpr(      0.0) =                 NaN  or
        floatExpr(      1.0) =                 NaN  or
        floatExpr( Infinity) =                 NaN  or
        floatExpr(  nanVar1) =                 NaN  or
        floatExpr(  nanVar1) =             nanVar1  or
        floatExpr(  nanVar2) =             nanVar1  or
                        NaN  = floatExpr(      NaN) or
                  -Infinity  = floatExpr(      NaN) or
                       -1.0  = floatExpr(      NaN) or
                       -0.0  = floatExpr(      NaN) or
                        0.0  = floatExpr(      NaN) or
                        1.0  = floatExpr(      NaN) or
                   Infinity  = floatExpr(      NaN) or
                    nanVar1  = floatExpr(      NaN) or
                    nanVar1  = floatExpr(  nanVar1) or
                    nanVar2  = floatExpr(  nanVar1) or
        floatExpr(      NaN) = floatExpr(      NaN) or
        floatExpr(-Infinity) = floatExpr(      NaN) or
        floatExpr(     -1.0) = floatExpr(      NaN) or
        floatExpr(     -0.0) = floatExpr(      NaN) or
        floatExpr(      0.0) = floatExpr(      NaN) or
        floatExpr(      1.0) = floatExpr(      NaN) or
        floatExpr( Infinity) = floatExpr(      NaN) or
        floatExpr(  nanVar1) = floatExpr(      NaN) or
        floatExpr(  nanVar1) = floatExpr(  nanVar1) or
        floatExpr(  nanVar2) = floatExpr(  nanVar1) then
      writeln(" ***** There are values that are equal to a NaN");
      okay := FALSE;
    end if;

    if  not                 NaN  <>                 NaN  or
        not                 NaN  <>           -Infinity  or
        not                 NaN  <>                -1.0  or
        not                 NaN  <>                -0.0  or
        not                 NaN  <>                 0.0  or
        not                 NaN  <>                 1.0  or
        not                 NaN  <>            Infinity  or
        not                 NaN  <>             nanVar1  or
        not             nanVar1  <>             nanVar1  or
        not             nanVar1  <>             nanVar2  or
        not floatExpr(      NaN) <>                 NaN  or
        not floatExpr(      NaN) <>           -Infinity  or
        not floatExpr(      NaN) <>                -1.0  or
        not floatExpr(      NaN) <>                -0.0  or
        not floatExpr(      NaN) <>                 0.0  or
        not floatExpr(      NaN) <>                 1.0  or
        not floatExpr(      NaN) <>            Infinity  or
        not floatExpr(      NaN) <>             nanVar1  or
        not floatExpr(  nanVar1) <>             nanVar1  or
        not floatExpr(  nanVar1) <>             nanVar2  or
        not                 NaN  <> floatExpr(      NaN) or
        not                 NaN  <> floatExpr(-Infinity) or
        not                 NaN  <> floatExpr(     -1.0) or
        not                 NaN  <> floatExpr(     -0.0) or
        not                 NaN  <> floatExpr(      0.0) or
        not                 NaN  <> floatExpr(      1.0) or
        not                 NaN  <> floatExpr( Infinity) or
        not                 NaN  <> floatExpr(  nanVar1) or
        not             nanVar1  <> floatExpr(  nanVar1) or
        not             nanVar1  <> floatExpr(  nanVar2) or
        not floatExpr(      NaN) <> floatExpr(      NaN) or
        not floatExpr(      NaN) <> floatExpr(-Infinity) or
        not floatExpr(      NaN) <> floatExpr(     -1.0) or
        not floatExpr(      NaN) <> floatExpr(     -0.0) or
        not floatExpr(      NaN) <> floatExpr(      0.0) or
        not floatExpr(      NaN) <> floatExpr(      1.0) or
        not floatExpr(      NaN) <> floatExpr( Infinity) or
        not floatExpr(      NaN) <> floatExpr(  nanVar1) or
        not floatExpr(  nanVar1) <> floatExpr(  nanVar1) or
        not floatExpr(  nanVar1) <> floatExpr(  nanVar2) or
        not                 NaN  <>                 NaN  or
        not           -Infinity  <>                 NaN  or
        not                -1.0  <>                 NaN  or
        not                -0.0  <>                 NaN  or
        not                 0.0  <>                 NaN  or
        not                 1.0  <>                 NaN  or
        not            Infinity  <>                 NaN  or
        not             nanVar1  <>                 NaN  or
        not             nanVar1  <>             nanVar1  or
        not             nanVar2  <>             nanVar1  or
        not floatExpr(      NaN) <>                 NaN  or
        not floatExpr(-Infinity) <>                 NaN  or
        not floatExpr(     -1.0) <>                 NaN  or
        not floatExpr(     -0.0) <>                 NaN  or
        not floatExpr(      0.0) <>                 NaN  or
        not floatExpr(      1.0) <>                 NaN  or
        not floatExpr( Infinity) <>                 NaN  or
        not floatExpr(  nanVar1) <>                 NaN  or
        not floatExpr(  nanVar1) <>             nanVar1  or
        not floatExpr(  nanVar2) <>             nanVar1  or
        not                 NaN  <> floatExpr(      NaN) or
        not           -Infinity  <> floatExpr(      NaN) or
        not                -1.0  <> floatExpr(      NaN) or
        not                -0.0  <> floatExpr(      NaN) or
        not                 0.0  <> floatExpr(      NaN) or
        not                 1.0  <> floatExpr(      NaN) or
        not            Infinity  <> floatExpr(      NaN) or
        not             nanVar1  <> floatExpr(      NaN) or
        not             nanVar1  <> floatExpr(  nanVar1) or
        not             nanVar2  <> floatExpr(  nanVar1) or
        not floatExpr(      NaN) <> floatExpr(      NaN) or
        not floatExpr(-Infinity) <> floatExpr(      NaN) or
        not floatExpr(     -1.0) <> floatExpr(      NaN) or
        not floatExpr(     -0.0) <> floatExpr(      NaN) or
        not floatExpr(      0.0) <> floatExpr(      NaN) or
        not floatExpr(      1.0) <> floatExpr(      NaN) or
        not floatExpr( Infinity) <> floatExpr(      NaN) or
        not floatExpr(  nanVar1) <> floatExpr(      NaN) or
        not floatExpr(  nanVar1) <> floatExpr(  nanVar1) or
        not floatExpr(  nanVar2) <> floatExpr(  nanVar1) then
      writeln(" ***** Comparing a NaN for not equal returns FALSE");
      okay := FALSE;
    end if;

    if                  NaN  <                 NaN  or
                        NaN  <           -Infinity  or
                        NaN  <                -1.0  or
                        NaN  <                -0.0  or
                        NaN  <                 0.0  or
                        NaN  <                 1.0  or
                        NaN  <            Infinity  or
                        NaN  <             nanVar1  or
                    nanVar1  <             nanVar1  or
                    nanVar1  <             nanVar2  or
        floatExpr(      NaN) <                 NaN  or
        floatExpr(      NaN) <           -Infinity  or
        floatExpr(      NaN) <                -1.0  or
        floatExpr(      NaN) <                -0.0  or
        floatExpr(      NaN) <                 0.0  or
        floatExpr(      NaN) <                 1.0  or
        floatExpr(      NaN) <            Infinity  or
        floatExpr(      NaN) <             nanVar1  or
        floatExpr(  nanVar1) <             nanVar1  or
        floatExpr(  nanVar1) <             nanVar2  or
                        NaN  < floatExpr(      NaN) or
                        NaN  < floatExpr(-Infinity) or
                        NaN  < floatExpr(     -1.0) or
                        NaN  < floatExpr(     -0.0) or
                        NaN  < floatExpr(      0.0) or
                        NaN  < floatExpr(      1.0) or
                        NaN  < floatExpr( Infinity) or
                        NaN  < floatExpr(  nanVar1) or
                    nanVar1  < floatExpr(  nanVar1) or
                    nanVar1  < floatExpr(  nanVar2) or
        floatExpr(      NaN) < floatExpr(      NaN) or
        floatExpr(      NaN) < floatExpr(-Infinity) or
        floatExpr(      NaN) < floatExpr(     -1.0) or
        floatExpr(      NaN) < floatExpr(     -0.0) or
        floatExpr(      NaN) < floatExpr(      0.0) or
        floatExpr(      NaN) < floatExpr(      1.0) or
        floatExpr(      NaN) < floatExpr( Infinity) or
        floatExpr(      NaN) < floatExpr(  nanVar1) or
        floatExpr(  nanVar1) < floatExpr(  nanVar1) or
        floatExpr(  nanVar1) < floatExpr(  nanVar2) or
                        NaN  <                 NaN  or
                  -Infinity  <                 NaN  or
                       -1.0  <                 NaN  or
                       -0.0  <                 NaN  or
                        0.0  <                 NaN  or
                        1.0  <                 NaN  or
                   Infinity  <                 NaN  or
                    nanVar1  <                 NaN  or
                    nanVar1  <             nanVar1  or
                    nanVar2  <             nanVar1  or
        floatExpr(      NaN) <                 NaN  or
        floatExpr(-Infinity) <                 NaN  or
        floatExpr(     -1.0) <                 NaN  or
        floatExpr(     -0.0) <                 NaN  or
        floatExpr(      0.0) <                 NaN  or
        floatExpr(      1.0) <                 NaN  or
        floatExpr( Infinity) <                 NaN  or
        floatExpr(  nanVar1) <                 NaN  or
        floatExpr(  nanVar1) <             nanVar1  or
        floatExpr(  nanVar2) <             nanVar1  or
                        NaN  < floatExpr(      NaN) or
                  -Infinity  < floatExpr(      NaN) or
                       -1.0  < floatExpr(      NaN) or
                       -0.0  < floatExpr(      NaN) or
                        0.0  < floatExpr(      NaN) or
                        1.0  < floatExpr(      NaN) or
                   Infinity  < floatExpr(      NaN) or
                    nanVar1  < floatExpr(      NaN) or
                    nanVar1  < floatExpr(  nanVar1) or
                    nanVar2  < floatExpr(  nanVar1) or
        floatExpr(      NaN) < floatExpr(      NaN) or
        floatExpr(-Infinity) < floatExpr(      NaN) or
        floatExpr(     -1.0) < floatExpr(      NaN) or
        floatExpr(     -0.0) < floatExpr(      NaN) or
        floatExpr(      0.0) < floatExpr(      NaN) or
        floatExpr(      1.0) < floatExpr(      NaN) or
        floatExpr( Infinity) < floatExpr(      NaN) or
        floatExpr(  nanVar1) < floatExpr(      NaN) or
        floatExpr(  nanVar1) < floatExpr(  nanVar1) or
        floatExpr(  nanVar2) < floatExpr(  nanVar1) then
      writeln(" ***** NaN is less than something");
      okay := FALSE;
    end if;

    if                  NaN  >                 NaN  or
                        NaN  >           -Infinity  or
                        NaN  >                -1.0  or
                        NaN  >                -0.0  or
                        NaN  >                 0.0  or
                        NaN  >                 1.0  or
                        NaN  >            Infinity  or
                        NaN  >             nanVar1  or
                    nanVar1  >             nanVar1  or
                    nanVar1  >             nanVar2  or
        floatExpr(      NaN) >                 NaN  or
        floatExpr(      NaN) >           -Infinity  or
        floatExpr(      NaN) >                -1.0  or
        floatExpr(      NaN) >                -0.0  or
        floatExpr(      NaN) >                 0.0  or
        floatExpr(      NaN) >                 1.0  or
        floatExpr(      NaN) >            Infinity  or
        floatExpr(      NaN) >             nanVar1  or
        floatExpr(  nanVar1) >             nanVar1  or
        floatExpr(  nanVar1) >             nanVar2  or
                        NaN  > floatExpr(      NaN) or
                        NaN  > floatExpr(-Infinity) or
                        NaN  > floatExpr(     -1.0) or
                        NaN  > floatExpr(     -0.0) or
                        NaN  > floatExpr(      0.0) or
                        NaN  > floatExpr(      1.0) or
                        NaN  > floatExpr( Infinity) or
                        NaN  > floatExpr(  nanVar1) or
                    nanVar1  > floatExpr(  nanVar1) or
                    nanVar1  > floatExpr(  nanVar2) or
        floatExpr(      NaN) > floatExpr(      NaN) or
        floatExpr(      NaN) > floatExpr(-Infinity) or
        floatExpr(      NaN) > floatExpr(     -1.0) or
        floatExpr(      NaN) > floatExpr(     -0.0) or
        floatExpr(      NaN) > floatExpr(      0.0) or
        floatExpr(      NaN) > floatExpr(      1.0) or
        floatExpr(      NaN) > floatExpr( Infinity) or
        floatExpr(      NaN) > floatExpr(  nanVar1) or
        floatExpr(  nanVar1) > floatExpr(  nanVar1) or
        floatExpr(  nanVar1) > floatExpr(  nanVar2) or
                        NaN  >                 NaN  or
                  -Infinity  >                 NaN  or
                       -1.0  >                 NaN  or
                       -0.0  >                 NaN  or
                        0.0  >                 NaN  or
                        1.0  >                 NaN  or
                   Infinity  >                 NaN  or
                    nanVar1  >                 NaN  or
                    nanVar1  >             nanVar1  or
                    nanVar2  >             nanVar1  or
        floatExpr(      NaN) >                 NaN  or
        floatExpr(-Infinity) >                 NaN  or
        floatExpr(     -1.0) >                 NaN  or
        floatExpr(     -0.0) >                 NaN  or
        floatExpr(      0.0) >                 NaN  or
        floatExpr(      1.0) >                 NaN  or
        floatExpr( Infinity) >                 NaN  or
        floatExpr(  nanVar1) >                 NaN  or
        floatExpr(  nanVar1) >             nanVar1  or
        floatExpr(  nanVar2) >             nanVar1  or
                        NaN  > floatExpr(      NaN) or
                  -Infinity  > floatExpr(      NaN) or
                       -1.0  > floatExpr(      NaN) or
                       -0.0  > floatExpr(      NaN) or
                        0.0  > floatExpr(      NaN) or
                        1.0  > floatExpr(      NaN) or
                   Infinity  > floatExpr(      NaN) or
                    nanVar1  > floatExpr(      NaN) or
                    nanVar1  > floatExpr(  nanVar1) or
                    nanVar2  > floatExpr(  nanVar1) or
        floatExpr(      NaN) > floatExpr(      NaN) or
        floatExpr(-Infinity) > floatExpr(      NaN) or
        floatExpr(     -1.0) > floatExpr(      NaN) or
        floatExpr(     -0.0) > floatExpr(      NaN) or
        floatExpr(      0.0) > floatExpr(      NaN) or
        floatExpr(      1.0) > floatExpr(      NaN) or
        floatExpr( Infinity) > floatExpr(      NaN) or
        floatExpr(  nanVar1) > floatExpr(      NaN) or
        floatExpr(  nanVar1) > floatExpr(  nanVar1) or
        floatExpr(  nanVar2) > floatExpr(  nanVar1) then
      writeln(" ***** NaN is greater than something");
      okay := FALSE;
    end if;

    if                  NaN  <=                 NaN  or
                        NaN  <=           -Infinity  or
                        NaN  <=                -1.0  or
                        NaN  <=                -0.0  or
                        NaN  <=                 0.0  or
                        NaN  <=                 1.0  or
                        NaN  <=            Infinity  or
                        NaN  <=             nanVar1  or
                    nanVar1  <=             nanVar1  or
                    nanVar1  <=             nanVar2  or
        floatExpr(      NaN) <=                 NaN  or
        floatExpr(      NaN) <=           -Infinity  or
        floatExpr(      NaN) <=                -1.0  or
        floatExpr(      NaN) <=                -0.0  or
        floatExpr(      NaN) <=                 0.0  or
        floatExpr(      NaN) <=                 1.0  or
        floatExpr(      NaN) <=            Infinity  or
        floatExpr(      NaN) <=             nanVar1  or
        floatExpr(  nanVar1) <=             nanVar1  or
        floatExpr(  nanVar1) <=             nanVar2  or
                        NaN  <= floatExpr(      NaN) or
                        NaN  <= floatExpr(-Infinity) or
                        NaN  <= floatExpr(     -1.0) or
                        NaN  <= floatExpr(     -0.0) or
                        NaN  <= floatExpr(      0.0) or
                        NaN  <= floatExpr(      1.0) or
                        NaN  <= floatExpr( Infinity) or
                        NaN  <= floatExpr(  nanVar1) or
                    nanVar1  <= floatExpr(  nanVar1) or
                    nanVar1  <= floatExpr(  nanVar2) or
        floatExpr(      NaN) <= floatExpr(      NaN) or
        floatExpr(      NaN) <= floatExpr(-Infinity) or
        floatExpr(      NaN) <= floatExpr(     -1.0) or
        floatExpr(      NaN) <= floatExpr(     -0.0) or
        floatExpr(      NaN) <= floatExpr(      0.0) or
        floatExpr(      NaN) <= floatExpr(      1.0) or
        floatExpr(      NaN) <= floatExpr( Infinity) or
        floatExpr(      NaN) <= floatExpr(  nanVar1) or
        floatExpr(  nanVar1) <= floatExpr(  nanVar1) or
        floatExpr(  nanVar1) <= floatExpr(  nanVar2) or
                        NaN  <=                 NaN  or
                  -Infinity  <=                 NaN  or
                       -1.0  <=                 NaN  or
                       -0.0  <=                 NaN  or
                        0.0  <=                 NaN  or
                        1.0  <=                 NaN  or
                   Infinity  <=                 NaN  or
                    nanVar1  <=                 NaN  or
                    nanVar1  <=             nanVar1  or
                    nanVar2  <=             nanVar1  or
        floatExpr(      NaN) <=                 NaN  or
        floatExpr(-Infinity) <=                 NaN  or
        floatExpr(     -1.0) <=                 NaN  or
        floatExpr(     -0.0) <=                 NaN  or
        floatExpr(      0.0) <=                 NaN  or
        floatExpr(      1.0) <=                 NaN  or
        floatExpr( Infinity) <=                 NaN  or
        floatExpr(  nanVar1) <=                 NaN  or
        floatExpr(  nanVar1) <=             nanVar1  or
        floatExpr(  nanVar2) <=             nanVar1  or
                        NaN  <= floatExpr(      NaN) or
                  -Infinity  <= floatExpr(      NaN) or
                       -1.0  <= floatExpr(      NaN) or
                       -0.0  <= floatExpr(      NaN) or
                        0.0  <= floatExpr(      NaN) or
                        1.0  <= floatExpr(      NaN) or
                   Infinity  <= floatExpr(      NaN) or
                    nanVar1  <= floatExpr(      NaN) or
                    nanVar1  <= floatExpr(  nanVar1) or
                    nanVar2  <= floatExpr(  nanVar1) or
        floatExpr(      NaN) <= floatExpr(      NaN) or
        floatExpr(-Infinity) <= floatExpr(      NaN) or
        floatExpr(     -1.0) <= floatExpr(      NaN) or
        floatExpr(     -0.0) <= floatExpr(      NaN) or
        floatExpr(      0.0) <= floatExpr(      NaN) or
        floatExpr(      1.0) <= floatExpr(      NaN) or
        floatExpr( Infinity) <= floatExpr(      NaN) or
        floatExpr(  nanVar1) <= floatExpr(      NaN) or
        floatExpr(  nanVar1) <= floatExpr(  nanVar1) or
        floatExpr(  nanVar2) <= floatExpr(  nanVar1) then
      writeln(" ***** NaN is less equal than something");
      okay := FALSE;
    end if;

    if                  NaN  >=                 NaN  or
                        NaN  >=           -Infinity  or
                        NaN  >=                -1.0  or
                        NaN  >=                -0.0  or
                        NaN  >=                 0.0  or
                        NaN  >=                 1.0  or
                        NaN  >=            Infinity  or
                        NaN  >=             nanVar1  or
                    nanVar1  >=             nanVar1  or
                    nanVar1  >=             nanVar2  or
        floatExpr(      NaN) >=                 NaN  or
        floatExpr(      NaN) >=           -Infinity  or
        floatExpr(      NaN) >=                -1.0  or
        floatExpr(      NaN) >=                -0.0  or
        floatExpr(      NaN) >=                 0.0  or
        floatExpr(      NaN) >=                 1.0  or
        floatExpr(      NaN) >=            Infinity  or
        floatExpr(      NaN) >=             nanVar1  or
        floatExpr(  nanVar1) >=             nanVar1  or
        floatExpr(  nanVar1) >=             nanVar2  or
                        NaN  >= floatExpr(      NaN) or
                        NaN  >= floatExpr(-Infinity) or
                        NaN  >= floatExpr(     -1.0) or
                        NaN  >= floatExpr(     -0.0) or
                        NaN  >= floatExpr(      0.0) or
                        NaN  >= floatExpr(      1.0) or
                        NaN  >= floatExpr( Infinity) or
                        NaN  >= floatExpr(  nanVar1) or
                    nanVar1  >= floatExpr(  nanVar1) or
                    nanVar1  >= floatExpr(  nanVar2) or
        floatExpr(      NaN) >= floatExpr(      NaN) or
        floatExpr(      NaN) >= floatExpr(-Infinity) or
        floatExpr(      NaN) >= floatExpr(     -1.0) or
        floatExpr(      NaN) >= floatExpr(     -0.0) or
        floatExpr(      NaN) >= floatExpr(      0.0) or
        floatExpr(      NaN) >= floatExpr(      1.0) or
        floatExpr(      NaN) >= floatExpr( Infinity) or
        floatExpr(      NaN) >= floatExpr(  nanVar1) or
        floatExpr(  nanVar1) >= floatExpr(  nanVar1) or
        floatExpr(  nanVar1) >= floatExpr(  nanVar2) or
                        NaN  >=                 NaN  or
                  -Infinity  >=                 NaN  or
                       -1.0  >=                 NaN  or
                       -0.0  >=                 NaN  or
                        0.0  >=                 NaN  or
                        1.0  >=                 NaN  or
                   Infinity  >=                 NaN  or
                    nanVar1  >=                 NaN  or
                    nanVar1  >=             nanVar1  or
                    nanVar2  >=             nanVar1  or
        floatExpr(      NaN) >=                 NaN  or
        floatExpr(-Infinity) >=                 NaN  or
        floatExpr(     -1.0) >=                 NaN  or
        floatExpr(     -0.0) >=                 NaN  or
        floatExpr(      0.0) >=                 NaN  or
        floatExpr(      1.0) >=                 NaN  or
        floatExpr( Infinity) >=                 NaN  or
        floatExpr(  nanVar1) >=                 NaN  or
        floatExpr(  nanVar1) >=             nanVar1  or
        floatExpr(  nanVar2) >=             nanVar1  or
                        NaN  >= floatExpr(      NaN) or
                  -Infinity  >= floatExpr(      NaN) or
                       -1.0  >= floatExpr(      NaN) or
                       -0.0  >= floatExpr(      NaN) or
                        0.0  >= floatExpr(      NaN) or
                        1.0  >= floatExpr(      NaN) or
                   Infinity  >= floatExpr(      NaN) or
                    nanVar1  >= floatExpr(      NaN) or
                    nanVar1  >= floatExpr(  nanVar1) or
                    nanVar2  >= floatExpr(  nanVar1) or
        floatExpr(      NaN) >= floatExpr(      NaN) or
        floatExpr(-Infinity) >= floatExpr(      NaN) or
        floatExpr(     -1.0) >= floatExpr(      NaN) or
        floatExpr(     -0.0) >= floatExpr(      NaN) or
        floatExpr(      0.0) >= floatExpr(      NaN) or
        floatExpr(      1.0) >= floatExpr(      NaN) or
        floatExpr( Infinity) >= floatExpr(      NaN) or
        floatExpr(  nanVar1) >= floatExpr(      NaN) or
        floatExpr(  nanVar1) >= floatExpr(  nanVar1) or
        floatExpr(  nanVar2) >= floatExpr(  nanVar1) then
      writeln(" ***** NaN is greater equal than something");
      okay := FALSE;
    end if;

    if okay then
      writeln("NaN works correct for selected values.");
    else
      writeln(" ***** NaN does not work correct");
    end if;
  end func;


const proc: main is func

  begin
    writeln;
    check_comparison;
    check_compare;
    check_parse;
    check_conversion;
    check_trunc;
    check_add;
    check_division;
    check_power;
    check_ipower;
    check_negative_zero;
    check_inf;
    check_nan;
  end func;
