
(********************************************************************)
(*                                                                  *)
(*  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 float: FLOAT_MIN is 2.22507385850720138309e-308;
const float: FLOAT_MAX is 1.79769313486231570815e+308;


const func string: striExpr (in string: stri) is
  return stri & str(rand(1, 9))[2 ..];


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


const func integer: intExpr (in integer: number) is
  return number + length(str(rand(1, 9))[2 ..]);


const func boolean: raisesRangeError (ref func string: expression) is func
  result
    var boolean: raisesRangeError is FALSE;
  local
    var string: exprResult is "";
  begin
    block
      exprResult := expression;
    exception
      catch RANGE_ERROR:
        raisesRangeError := TRUE;
    end block;
  end func;


const func boolean: raisesRangeError (ref func float: expression) is func
  result
    var boolean: raisesRangeError is FALSE;
  local
    var float: exprResult is 0.0;
  begin
    block
      exprResult := expression;
    exception
      catch RANGE_ERROR:
        raisesRangeError := TRUE;
    end block;
  end func;


const func boolean: raisesRangeError (ref func integer: expression) is func
  result
    var boolean: raisesRangeError is FALSE;
  local
    var integer: exprResult is 0;
  begin
    block
      exprResult := expression;
    exception
      catch RANGE_ERROR:
        raisesRangeError := TRUE;
    end block;
  end func;


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.");
    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.");
    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
        float parse           "123.456000000000000000000000000000000"  <>  123.456   or
        float parse          "+123.456000000000000000000000000000000"  <>  123.456   or
        float parse          "-123.456000000000000000000000000000000"  <> -123.456   or
        float parse           "0.00000000000000000000000000000000001"  <>    1.0e-35 or
        float parse          "+0.00000000000000000000000000000000001"  <>    1.0e-35 or
        float parse          "-0.00000000000000000000000000000000001"  <>   -1.0e-35 or
        float parse           "00000000000000000000000000000000000.5"  <>    0.5     or
        float parse          "+00000000000000000000000000000000000.5"  <>    0.5     or
        float parse          "-00000000000000000000000000000000000.5"  <>   -0.5     or
        float parse striExpr( "123.456000000000000000000000000000000") <>  123.456   or
        float parse striExpr("+123.456000000000000000000000000000000") <>  123.456   or
        float parse striExpr("-123.456000000000000000000000000000000") <> -123.456   or
        float parse striExpr( "0.00000000000000000000000000000000001") <>    1.0e-35 or
        float parse striExpr("+0.00000000000000000000000000000000001") <>    1.0e-35 or
        float parse striExpr("-0.00000000000000000000000000000000001") <>   -1.0e-35 or
        float parse striExpr( "00000000000000000000000000000000000.5") <>    0.5     or
        float parse striExpr("+00000000000000000000000000000000000.5") <>    0.5     or
        float parse striExpr("-00000000000000000000000000000000000.5") <>   -0.5     or
        float parse                               "1.0" <>                               1.0 or
        float parse                               "2.0" <>                               2.0 or
        float parse                               "4.0" <>                               4.0 or
        float parse                               "8.0" <>                               8.0 or
        float parse                              "16.0" <>                              16.0 or
        float parse                              "32.0" <>                              32.0 or
        float parse                              "64.0" <>                              64.0 or
        float parse                             "128.0" <>                             128.0 or
        float parse                             "256.0" <>                             256.0 or
        float parse                             "512.0" <>                             512.0 or
        float parse                            "1024.0" <>                            1024.0 or
        float parse                            "2048.0" <>                            2048.0 or
        float parse                            "4096.0" <>                            4096.0 or
        float parse                            "8192.0" <>                            8192.0 or
        float parse                           "16384.0" <>                           16384.0 or
        float parse                           "32768.0" <>                           32768.0 or
        float parse                           "65536.0" <>                           65536.0 or
        float parse                          "131072.0" <>                          131072.0 or
        float parse                          "262144.0" <>                          262144.0 or
        float parse                          "524288.0" <>                          524288.0 or
        float parse                         "1048576.0" <>                         1048576.0 or
        float parse                         "2097152.0" <>                         2097152.0 or
        float parse                         "4194304.0" <>                         4194304.0 or
        float parse                         "8388608.0" <>                         8388608.0 or
        float parse                        "16777216.0" <>                        16777216.0 or
        float parse                        "33554432.0" <>                        33554432.0 or
        float parse                        "67108864.0" <>                        67108864.0 or
        float parse                       "134217728.0" <>                       134217728.0 or
        float parse                       "268435456.0" <>                       268435456.0 or
        float parse                       "536870912.0" <>                       536870912.0 or
        float parse                      "1073741824.0" <>                      1073741824.0 or
        float parse                      "2147483648.0" <>                      2147483648.0 or
        float parse                      "4294967296.0" <>                      4294967296.0 or
        float parse                      "8589934592.0" <>                      8589934592.0 or
        float parse                     "17179869184.0" <>                     17179869184.0 or
        float parse                     "34359738368.0" <>                     34359738368.0 or
        float parse                     "68719476736.0" <>                     68719476736.0 or
        float parse                    "137438953472.0" <>                    137438953472.0 or
        float parse                    "274877906944.0" <>                    274877906944.0 or
        float parse                    "549755813888.0" <>                    549755813888.0 or
        float parse                   "1099511627776.0" <>                   1099511627776.0 or
        float parse                   "2199023255552.0" <>                   2199023255552.0 or
        float parse                   "4398046511104.0" <>                   4398046511104.0 or
        float parse                   "8796093022208.0" <>                   8796093022208.0 or
        float parse                  "17592186044416.0" <>                  17592186044416.0 or
        float parse                  "35184372088832.0" <>                  35184372088832.0 or
        float parse                  "70368744177664.0" <>                  70368744177664.0 or
        float parse                 "140737488355328.0" <>                 140737488355328.0 or
        float parse                 "281474976710656.0" <>                 281474976710656.0 or
        float parse                 "562949953421312.0" <>                 562949953421312.0 or
        float parse                "1125899906842624.0" <>                1125899906842624.0 or
        float parse                "2251799813685248.0" <>                2251799813685248.0 or
        float parse                "4503599627370496.0" <>                4503599627370496.0 or
        float parse                "9007199254740992.0" <>                9007199254740992.0 or
        float parse               "18014398509481984.0" <>               18014398509481984.0 or
        float parse               "36028797018963968.0" <>               36028797018963968.0 or
        float parse               "72057594037927936.0" <>               72057594037927936.0 or
        float parse              "144115188075855872.0" <>              144115188075855872.0 or
        float parse              "288230376151711744.0" <>              288230376151711744.0 or
        float parse              "576460752303423488.0" <>              576460752303423488.0 or
        float parse             "1152921504606846976.0" <>             1152921504606846976.0 or
        float parse             "2305843009213693952.0" <>             2305843009213693952.0 or
        float parse             "4611686018427387904.0" <>             4611686018427387904.0 or
        float parse             "9223372036854775808.0" <>             9223372036854775808.0 or
        float parse            "18446744073709551616.0" <>            18446744073709551616.0 or
        float parse            "36893488147419103232.0" <>            36893488147419103232.0 or
        float parse            "73786976294838206464.0" <>            73786976294838206464.0 or
        float parse           "147573952589676412928.0" <>           147573952589676412928.0 or
        float parse           "295147905179352825856.0" <>           295147905179352825856.0 or
        float parse           "590295810358705651712.0" <>           590295810358705651712.0 or
        float parse          "1180591620717411303424.0" <>          1180591620717411303424.0 or
        float parse          "2361183241434822606848.0" <>          2361183241434822606848.0 or
        float parse          "4722366482869645213696.0" <>          4722366482869645213696.0 or
        float parse          "9444732965739290427392.0" <>          9444732965739290427392.0 or
        float parse         "18889465931478580854784.0" <>         18889465931478580854784.0 or
        float parse         "37778931862957161709568.0" <>         37778931862957161709568.0 or
        float parse         "75557863725914323419136.0" <>         75557863725914323419136.0 or
        float parse        "151115727451828646838272.0" <>        151115727451828646838272.0 or
        float parse        "302231454903657293676544.0" <>        302231454903657293676544.0 or
        float parse        "604462909807314587353088.0" <>        604462909807314587353088.0 or
        float parse       "1208925819614629174706176.0" <>       1208925819614629174706176.0 or
        float parse       "2417851639229258349412352.0" <>       2417851639229258349412352.0 or
        float parse       "4835703278458516698824704.0" <>       4835703278458516698824704.0 or
        float parse       "9671406556917033397649408.0" <>       9671406556917033397649408.0 or
        float parse      "19342813113834066795298816.0" <>      19342813113834066795298816.0 or
        float parse      "38685626227668133590597632.0" <>      38685626227668133590597632.0 or
        float parse      "77371252455336267181195264.0" <>      77371252455336267181195264.0 or
        float parse      "15474250491067253436239052.0" <>      15474250491067253436239052.0 or
        float parse      "30948500982134506872478105.0" <>      30948500982134506872478105.0 or
        float parse     "618970019642690137449562112.0" <>     618970019642690137449562112.0 or
        float parse    "1237940039285380274899124224.0" <>    1237940039285380274899124224.0 or
        float parse    "2475880078570760549798248448.0" <>    2475880078570760549798248448.0 or
        float parse    "4951760157141521099596496896.0" <>    4951760157141521099596496896.0 or
        float parse    "9903520314283042199192993792.0" <>    9903520314283042199192993792.0 or
        float parse   "19807040628566084398385987584.0" <>   19807040628566084398385987584.0 or
        float parse   "39614081257132168796771975168.0" <>   39614081257132168796771975168.0 or
        float parse   "79228162514264337593543950336.0" <>   79228162514264337593543950336.0 or
        float parse  "158456325028528675187087900672.0" <>  158456325028528675187087900672.0 or
        float parse  "316912650057057350374175801344.0" <>  316912650057057350374175801344.0 or
        float parse  "633825300114114700748351602688.0" <>  633825300114114700748351602688.0 or
        float parse "1267650600228229401496703205376.0" <> 1267650600228229401496703205376.0 or
        float parse "0.5"                                <> 0.5 or
        float parse "0.25"                               <> 0.25 or
        float parse "0.125"                              <> 0.125 or
        float parse "0.0625"                             <> 0.0625 or
        float parse "0.03125"                            <> 0.03125 or
        float parse "0.015625"                           <> 0.015625 or
        float parse "0.0078125"                          <> 0.0078125 or
        float parse "0.00390625"                         <> 0.00390625 or
        float parse "0.001953125"                        <> 0.001953125 or
        float parse "0.0009765625"                       <> 0.0009765625 or
        float parse "0.00048828125"                      <> 0.00048828125 or
        float parse "0.000244140625"                     <> 0.000244140625 or
        float parse "0.0001220703125"                    <> 0.0001220703125 or
        float parse "0.00006103515625"                   <> 0.00006103515625 or
        float parse "0.000030517578125"                  <> 0.000030517578125 or
        float parse "0.0000152587890625"                 <> 0.0000152587890625 or
        float parse "0.00000762939453125"                <> 0.00000762939453125 or
        float parse "0.000003814697265625"               <> 0.000003814697265625 or
        float parse "0.0000019073486328125"              <> 0.0000019073486328125 or
        float parse "0.00000095367431640625"             <> 0.00000095367431640625 or
        float parse "0.000000476837158203125"            <> 0.000000476837158203125 or
        float parse "0.0000002384185791015625"           <> 0.0000002384185791015625 or
        float parse "0.00000011920928955078125"          <> 0.00000011920928955078125 or
        float parse "0.000000059604644775390625"         <> 0.000000059604644775390625 or
        float parse "0.0000000298023223876953125"        <> 0.0000000298023223876953125 or
        float parse "0.00000001490116119384765625"       <> 0.00000001490116119384765625 or
        float parse "0.000000007450580596923828125"      <> 0.000000007450580596923828125 or
        float parse "0.0000000037252902984619140625"     <> 0.0000000037252902984619140625 or
        float parse "0.00000000186264514923095703125"    <> 0.00000000186264514923095703125 or
        float parse "0.000000000931322574615478515625"   <> 0.000000000931322574615478515625 or
        float parse "0.0000000004656612873077392578125"  <> 0.0000000004656612873077392578125 or
        float parse "0.00000000023283064365386962890625" <> 0.00000000023283064365386962890625 or
        float parse "0.000000000116415321826934814453125" <>
                     0.000000000116415321826934814453125 or
        float parse "0.0000000000582076609134674072265625" <>
                     0.0000000000582076609134674072265625 or
        float parse "0.00000000002910383045673370361328125" <>
                     0.00000000002910383045673370361328125 or
        float parse "0.000000000014551915228366851806640625" <>
                     0.000000000014551915228366851806640625 or
        float parse "0.0000000000072759576141834259033203125" <>
                     0.0000000000072759576141834259033203125 or
        float parse "0.00000000000363797880709171295166015625" <>
                     0.00000000000363797880709171295166015625 or
        float parse "0.000000000001818989403545856475830078125" <>
                     0.000000000001818989403545856475830078125 or
        float parse "0.0000000000009094947017729282379150390625" <>
                     0.0000000000009094947017729282379150390625 or
        float parse "0.00000000000045474735088646411895751953125" <>
                     0.00000000000045474735088646411895751953125 or
        float parse "0.000000000000227373675443232059478759765625" <>
                     0.000000000000227373675443232059478759765625 or
        float parse "0.0000000000001136868377216160297393798828125" <>
                     0.0000000000001136868377216160297393798828125 or
        float parse "0.00000000000005684341886080801486968994140625" <>
                     0.00000000000005684341886080801486968994140625 or
        float parse "0.000000000000028421709430404007434844970703125" <>
                     0.000000000000028421709430404007434844970703125 or
        float parse "0.0000000000000142108547152020037174224853515625" <>
                     0.0000000000000142108547152020037174224853515625 or
        float parse "0.00000000000000710542735760100185871124267578125" <>
                     0.00000000000000710542735760100185871124267578125 or
        float parse "0.000000000000003552713678800500929355621337890625" <>
                     0.000000000000003552713678800500929355621337890625 or
        float parse "0.0000000000000017763568394002504646778106689453125" <>
                     0.0000000000000017763568394002504646778106689453125 or
        float parse "0.00000000000000088817841970012523233890533447265625" <>
                     0.00000000000000088817841970012523233890533447265625 or
        float parse "0.000000000000000444089209850062616169452667236328125" <>
                     0.000000000000000444089209850062616169452667236328125 or
        float parse "0.0000000000000002220446049250313080847263336181640625" <>
                     0.0000000000000002220446049250313080847263336181640625 or
        float parse "0.00000000000000011102230246251565404236316680908203125" <>
                     0.00000000000000011102230246251565404236316680908203125 or
        float parse "0.000000000000000055511151231257827021181583404541015625" <>
                     0.000000000000000055511151231257827021181583404541015625 or
        float parse "0.0000000000000000277555756156289135105907917022705078125" <>
                     0.0000000000000000277555756156289135105907917022705078125 or
        float parse "0.00000000000000001387778780781445675529539585113525390625" <>
                     0.00000000000000001387778780781445675529539585113525390625 or
        float parse "0.000000000000000006938893903907228377647697925567626953125" <>
                     0.000000000000000006938893903907228377647697925567626953125 or
        float parse "0.0000000000000000034694469519536141888238489627838134765625" <>
                     0.0000000000000000034694469519536141888238489627838134765625 or
        float parse "0.00000000000000000173472347597680709441192448139190673828125" <>
                     0.00000000000000000173472347597680709441192448139190673828125 or
        float parse "0.000000000000000000867361737988403547205962240695953369140625" <>
                     0.000000000000000000867361737988403547205962240695953369140625 or
        float parse "0.0000000000000000004336808689942017736029811203479766845703125" <>
                     0.0000000000000000004336808689942017736029811203479766845703125 or
        float parse "0.00000000000000000021684043449710088680149056017398834228515625" <>
                     0.00000000000000000021684043449710088680149056017398834228515625 or
        float parse "0.000000000000000000108420217248550443400745280086994171142578125" <>
                     0.000000000000000000108420217248550443400745280086994171142578125 or
        float parse "0.0000000000000000000542101086242752217003726400434970855712890625" <>
                     0.0000000000000000000542101086242752217003726400434970855712890625 or
        float parse "0.00000000000000000002710505431213761085018632002174854278564453125" <>
                     0.00000000000000000002710505431213761085018632002174854278564453125 or
        float parse "0.000000000000000000013552527156068805425093160010874271392822265625" <>
                     0.000000000000000000013552527156068805425093160010874271392822265625 or
        float parse "0.0000000000000000000067762635780344027125465800054371356964111328125" <>
                     0.0000000000000000000067762635780344027125465800054371356964111328125 or
        float parse "0.00000000000000000000338813178901720135627329000271856784820556640625" <>
                     0.00000000000000000000338813178901720135627329000271856784820556640625 or
        float parse "0.000000000000000000001694065894508600678136645001359283924102783203125" <>
                     0.000000000000000000001694065894508600678136645001359283924102783203125 or
        float parse "0.0000000000000000000008470329472543003390683225006796419620513916015625" <>
                     0.0000000000000000000008470329472543003390683225006796419620513916015625 or
        float parse "0.00000000000000000000042351647362715016953416125033982098102569580078125" <>
                     0.00000000000000000000042351647362715016953416125033982098102569580078125 or
        float parse "0.000000000000000000000211758236813575084767080625169910490512847900390625" <>
                     0.000000000000000000000211758236813575084767080625169910490512847900390625 or
        float parse "0.0000000000000000000001058791184067875423835403125849552452564239501953125" <>
                     0.0000000000000000000001058791184067875423835403125849552452564239501953125 or
        float parse "0.00000000000000000000005293955920339377119177015629247762262821197509765625" <>
                     0.00000000000000000000005293955920339377119177015629247762262821197509765625 or
        float parse "0.000000000000000000000026469779601696885595885078146238811314105987548828125" <>
                     0.000000000000000000000026469779601696885595885078146238811314105987548828125 then
      writeln(" ***** Parse operator for float does not work correct.");
      okay := FALSE;
    end if;

    if  float parse "1.0e-308" <> 1.0e-308 or
        float parse "1.0e-307" <> 1.0e-307 or
        float parse "1.0e-300" <> 1.0e-300 or
        float parse "1.0e-275" <> 1.0e-275 or
        float parse "1.0e-250" <> 1.0e-250 or
        float parse "1.0e-225" <> 1.0e-225 or
        float parse "1.0e-200" <> 1.0e-200 or
        float parse "1.0e-175" <> 1.0e-175 or
        float parse "1.0e-150" <> 1.0e-150 or
        float parse "1.0e-125" <> 1.0e-125 or
        float parse "1.0e-101" <> 1.0e-101 or
        float parse "1.0e-100" <> 1.0e-100 or
        float parse "1.0e-99"  <> 1.0e-99  or
        float parse "1.0e-75"  <> 1.0e-75  or
        float parse "1.0e-25"  <> 1.0e-25  or
        float parse "1.0e-11"  <> 1.0e-11  or
        float parse "1.0e-10"  <> 1.0e-10  or
        float parse "1.0e-9"   <> 1.0e-9   or
        float parse "1.0e-2"   <> 1.0e-2   or
        float parse "1.0e-1"   <> 1.0e-1   or
        float parse "1.0e0"    <> 1.0e0    or
        float parse "1.0e1"    <> 1.0e1    or
        float parse "1.0e2"    <> 1.0e2    or
        float parse "1.0e9"    <> 1.0e9    or
        float parse "1.0e10"   <> 1.0e10   or
        float parse "1.0e11"   <> 1.0e11   or
        float parse "1.0e25"   <> 1.0e25   or
        float parse "1.0e50"   <> 1.0e50   or
        float parse "1.0e75"   <> 1.0e75   or
        float parse "1.0e99"   <> 1.0e99   or
        float parse "1.0e100"  <> 1.0e100  or
        float parse "1.0e101"  <> 1.0e101  or
        float parse "1.0e125"  <> 1.0e125  or
        float parse "1.0e150"  <> 1.0e150  or
        float parse "1.0e175"  <> 1.0e175  or
        float parse "1.0e200"  <> 1.0e200  or
        float parse "1.0e225"  <> 1.0e225  or
        float parse "1.0e250"  <> 1.0e250  or
        float parse "1.0e275"  <> 1.0e275  or
        float parse "1.0e300"  <> 1.0e300  or
        float parse "1.0e307"  <> 1.0e307  or
        float parse "1.0e308"  <> 1.0e308  or
        float parse striExpr("1.0e-308") <> 1.0e-308 or
        float parse striExpr("1.0e-307") <> 1.0e-307 or
        float parse striExpr("1.0e-300") <> 1.0e-300 or
        float parse striExpr("1.0e-275") <> 1.0e-275 or
        float parse striExpr("1.0e-250") <> 1.0e-250 or
        float parse striExpr("1.0e-225") <> 1.0e-225 or
        float parse striExpr("1.0e-200") <> 1.0e-200 or
        float parse striExpr("1.0e-175") <> 1.0e-175 or
        float parse striExpr("1.0e-150") <> 1.0e-150 or
        float parse striExpr("1.0e-125") <> 1.0e-125 or
        float parse striExpr("1.0e-101") <> 1.0e-101 or
        float parse striExpr("1.0e-100") <> 1.0e-100 or
        float parse striExpr("1.0e-99")  <> 1.0e-99  or
        float parse striExpr("1.0e-75")  <> 1.0e-75  or
        float parse striExpr("1.0e-25")  <> 1.0e-25  or
        float parse striExpr("1.0e-11")  <> 1.0e-11  or
        float parse striExpr("1.0e-10")  <> 1.0e-10  or
        float parse striExpr("1.0e-9")   <> 1.0e-9   or
        float parse striExpr("1.0e-2")   <> 1.0e-2   or
        float parse striExpr("1.0e-1")   <> 1.0e-1   or
        float parse striExpr("1.0e0")    <> 1.0e0    or
        float parse striExpr("1.0e1")    <> 1.0e1    or
        float parse striExpr("1.0e2")    <> 1.0e2    or
        float parse striExpr("1.0e9")    <> 1.0e9    or
        float parse striExpr("1.0e10")   <> 1.0e10   or
        float parse striExpr("1.0e11")   <> 1.0e11   or
        float parse striExpr("1.0e25")   <> 1.0e25   or
        float parse striExpr("1.0e50")   <> 1.0e50   or
        float parse striExpr("1.0e75")   <> 1.0e75   or
        float parse striExpr("1.0e99")   <> 1.0e99   or
        float parse striExpr("1.0e100")  <> 1.0e100  or
        float parse striExpr("1.0e101")  <> 1.0e101  or
        float parse striExpr("1.0e125")  <> 1.0e125  or
        float parse striExpr("1.0e150")  <> 1.0e150  or
        float parse striExpr("1.0e175")  <> 1.0e175  or
        float parse striExpr("1.0e200")  <> 1.0e200  or
        float parse striExpr("1.0e225")  <> 1.0e225  or
        float parse striExpr("1.0e250")  <> 1.0e250  or
        float parse striExpr("1.0e275")  <> 1.0e275  or
        float parse striExpr("1.0e300")  <> 1.0e300  or
        float parse striExpr("1.0e307")  <> 1.0e307  or
        float parse striExpr("1.0e308")  <> 1.0e308  then
      writeln(" ***** Parse operator for float with exponent does not work correct.");
      okay := FALSE;
    end if;

    if  float parse str(1.0e-308) <> 1.0e-308 or
        float parse str(1.0e-307) <> 1.0e-307 or
        float parse str(1.0e-300) <> 1.0e-300 or
        float parse str(1.0e-275) <> 1.0e-275 or
        float parse str(1.0e-250) <> 1.0e-250 or
        float parse str(1.0e-225) <> 1.0e-225 or
        float parse str(1.0e-200) <> 1.0e-200 or
        float parse str(1.0e-175) <> 1.0e-175 or
        float parse str(1.0e-150) <> 1.0e-150 or
        float parse str(1.0e-125) <> 1.0e-125 or
        float parse str(1.0e-101) <> 1.0e-101 or
        float parse str(1.0e-100) <> 1.0e-100 or
        float parse str(1.0e-99)  <> 1.0e-99  or
        float parse str(1.0e-75)  <> 1.0e-75  or
        float parse str(1.0e-25)  <> 1.0e-25  or
        float parse str(1.0e-11)  <> 1.0e-11  or
        float parse str(1.0e-10)  <> 1.0e-10  or
        float parse str(1.0e-9)   <> 1.0e-9   or
        float parse str(1.0e-2)   <> 1.0e-2   or
        float parse str(1.0e-1)   <> 1.0e-1   or
        float parse str(1.0e0)    <> 1.0e0    or
        float parse str(1.0e1)    <> 1.0e1    or
        float parse str(1.0e2)    <> 1.0e2    or
        float parse str(1.0e9)    <> 1.0e9    or
        float parse str(1.0e10)   <> 1.0e10   or
        float parse str(1.0e11)   <> 1.0e11   or
        float parse str(1.0e25)   <> 1.0e25   or
        float parse str(1.0e50)   <> 1.0e50   or
        float parse str(1.0e75)   <> 1.0e75   or
        float parse str(1.0e99)   <> 1.0e99   or
        float parse str(1.0e100)  <> 1.0e100  or
        float parse str(1.0e101)  <> 1.0e101  or
        float parse str(1.0e125)  <> 1.0e125  or
        float parse str(1.0e150)  <> 1.0e150  or
        float parse str(1.0e175)  <> 1.0e175  or
        float parse str(1.0e200)  <> 1.0e200  or
        float parse str(1.0e225)  <> 1.0e225  or
        float parse str(1.0e250)  <> 1.0e250  or
        float parse str(1.0e275)  <> 1.0e275  or
        float parse str(1.0e300)  <> 1.0e300  or
        float parse str(1.0e307)  <> 1.0e307  or
        float parse str(1.0e308)  <> 1.0e308  or
        float parse str(floatExpr(1.0e-308)) <> 1.0e-308 or
        float parse str(floatExpr(1.0e-307)) <> 1.0e-307 or
        float parse str(floatExpr(1.0e-300)) <> 1.0e-300 or
        float parse str(floatExpr(1.0e-275)) <> 1.0e-275 or
        float parse str(floatExpr(1.0e-250)) <> 1.0e-250 or
        float parse str(floatExpr(1.0e-225)) <> 1.0e-225 or
        float parse str(floatExpr(1.0e-200)) <> 1.0e-200 or
        float parse str(floatExpr(1.0e-175)) <> 1.0e-175 or
        float parse str(floatExpr(1.0e-150)) <> 1.0e-150 or
        float parse str(floatExpr(1.0e-125)) <> 1.0e-125 or
        float parse str(floatExpr(1.0e-101)) <> 1.0e-101 or
        float parse str(floatExpr(1.0e-100)) <> 1.0e-100 or
        float parse str(floatExpr(1.0e-99))  <> 1.0e-99  or
        float parse str(floatExpr(1.0e-75))  <> 1.0e-75  or
        float parse str(floatExpr(1.0e-25))  <> 1.0e-25  or
        float parse str(floatExpr(1.0e-11))  <> 1.0e-11  or
        float parse str(floatExpr(1.0e-10))  <> 1.0e-10  or
        float parse str(floatExpr(1.0e-9))   <> 1.0e-9   or
        float parse str(floatExpr(1.0e-2))   <> 1.0e-2   or
        float parse str(floatExpr(1.0e-1))   <> 1.0e-1   or
        float parse str(floatExpr(1.0e0))    <> 1.0e0    or
        float parse str(floatExpr(1.0e1))    <> 1.0e1    or
        float parse str(floatExpr(1.0e2))    <> 1.0e2    or
        float parse str(floatExpr(1.0e9))    <> 1.0e9    or
        float parse str(floatExpr(1.0e10))   <> 1.0e10   or
        float parse str(floatExpr(1.0e11))   <> 1.0e11   or
        float parse str(floatExpr(1.0e25))   <> 1.0e25   or
        float parse str(floatExpr(1.0e50))   <> 1.0e50   or
        float parse str(floatExpr(1.0e75))   <> 1.0e75   or
        float parse str(floatExpr(1.0e99))   <> 1.0e99   or
        float parse str(floatExpr(1.0e100))  <> 1.0e100  or
        float parse str(floatExpr(1.0e101))  <> 1.0e101  or
        float parse str(floatExpr(1.0e125))  <> 1.0e125  or
        float parse str(floatExpr(1.0e150))  <> 1.0e150  or
        float parse str(floatExpr(1.0e175))  <> 1.0e175  or
        float parse str(floatExpr(1.0e200))  <> 1.0e200  or
        float parse str(floatExpr(1.0e225))  <> 1.0e225  or
        float parse str(floatExpr(1.0e250))  <> 1.0e250  or
        float parse str(floatExpr(1.0e275))  <> 1.0e275  or
        float parse str(floatExpr(1.0e300))  <> 1.0e300  or
        float parse str(floatExpr(1.0e307))  <> 1.0e307  or
        float parse str(floatExpr(1.0e308))  <> 1.0e308  then
      writeln(" ***** Convert float to string and parse back to float does not work correct.");
      okay := FALSE;
    end if;

    if  not raisesRangeError(float parse           " 0.0" ) or
        not raisesRangeError(float parse           "asdf" ) or
        not raisesRangeError(float parse           "0.0a" ) or
        not raisesRangeError(float parse            "1,2" ) or
        not raisesRangeError(float parse            "0x1" ) or
        not raisesRangeError(float parse            "0X1" ) or
        not raisesRangeError(float parse          "0x1.2" ) or
        not raisesRangeError(float parse          "0X1.3" ) or
        not raisesRangeError(float parse striExpr( " 0.0")) or
        not raisesRangeError(float parse striExpr( "asdf")) or
        not raisesRangeError(float parse striExpr( "0.0a")) or
        not raisesRangeError(float parse striExpr(  "1,2")) or
        not raisesRangeError(float parse striExpr(  "0x1")) or
        not raisesRangeError(float parse striExpr(  "0X1")) or
        not raisesRangeError(float parse striExpr("0x1.2")) or
        not raisesRangeError(float parse striExpr("0X1.3")) then
      writeln(" ***** Parse operator for float with illegal literal does not raise RANGE_ERROR.");
      okay := FALSE;
    end if;

    if  str(                 1.0)  <>                  "1.0" or
        str(                 7.0)  <>                  "7.0" or
        str(                 9.0)  <>                  "9.0" or
        str(                10.0)  <>                 "10.0" or
        str(                67.0)  <>                 "67.0" or
        str(                99.0)  <>                 "99.0" or
        str(               100.0)  <>                "100.0" or
        str(               567.0)  <>                "567.0" or
        str(               999.0)  <>                "999.0" or
        str(              1000.0)  <>               "1000.0" or
        str(              4567.0)  <>               "4567.0" or
        str(              9999.0)  <>               "9999.0" or
        str(             10000.0)  <>              "10000.0" or
        str(             34567.0)  <>              "34567.0" or
        str(             99999.0)  <>              "99999.0" or
        str(            100000.0)  <>             "100000.0" or
        str(            234567.0)  <>             "234567.0" or
        str(            999999.0)  <>             "999999.0" or
        str(           1000000.0)  <>            "1000000.0" or
        str(           1234567.0)  <>            "1234567.0" or
        str(           9999999.0)  <>            "9999999.0" or
        str(          10000000.0)  <>           "10000000.0" or
        str(          91234567.0)  <>           "91234567.0" or
        str(          99999999.0)  <>           "99999999.0" or
        str(         100000000.0)  <>          "100000000.0" or
        str(         891234567.0)  <>          "891234567.0" or
        str(         999999999.0)  <>          "999999999.0" or
        str(        1000000000.0)  <>         "1000000000.0" or
        str(        7891234567.0)  <>         "7891234567.0" or
        str(        9999999999.0)  <>         "9999999999.0" or
        str(       10000000000.0)  <>        "10000000000.0" or
        str(       67891234567.0)  <>        "67891234567.0" or
        str(       99999999999.0)  <>        "99999999999.0" or
        str(      100000000000.0)  <>       "100000000000.0" or
        str(      567891234567.0)  <>       "567891234567.0" or
        str(      999999999999.0)  <>       "999999999999.0" or
        str(     1000000000000.0)  <>      "1000000000000.0" or
        str(     4567891234567.0)  <>      "4567891234567.0" or
        str(     9999999999999.0)  <>      "9999999999999.0" or
        str(    10000000000000.0)  <>     "10000000000000.0" or
        str(    34567891234567.0)  <>     "34567891234567.0" or
        str(    99999999999999.0)  <>     "99999999999999.0" or
        str(   100000000000000.0)  <>    "100000000000000.0" or
        str(   234567891234567.0)  <>    "234567891234567.0" or
        str(   999999999999999.0)  <>    "999999999999999.0" or
        str(  1000000000000000.0)  <>   "1000000000000000.0" or
        str(  1125899906842624.0)  <>   "1125899906842624.0" or
        str(  2251799813685248.0)  <>   "2251799813685248.0" or
        str(  4503599627370496.0)  <>   "4503599627370496.0" or
        str(  9007199254740992.0)  <>   "9007199254740992.0" or
        str( 10000000000000000.0)  <>  "10000000000000000.0" or
        str(                -1.0)  <>                 "-1.0" or
        str(                -7.0)  <>                 "-7.0" or
        str(                -9.0)  <>                 "-9.0" or
        str(               -10.0)  <>                "-10.0" or
        str(               -67.0)  <>                "-67.0" or
        str(               -99.0)  <>                "-99.0" or
        str(              -100.0)  <>               "-100.0" or
        str(              -567.0)  <>               "-567.0" or
        str(              -999.0)  <>               "-999.0" or
        str(             -1000.0)  <>              "-1000.0" or
        str(             -4567.0)  <>              "-4567.0" or
        str(             -9999.0)  <>              "-9999.0" or
        str(            -10000.0)  <>             "-10000.0" or
        str(            -34567.0)  <>             "-34567.0" or
        str(            -99999.0)  <>             "-99999.0" or
        str(           -100000.0)  <>            "-100000.0" or
        str(           -234567.0)  <>            "-234567.0" or
        str(           -999999.0)  <>            "-999999.0" or
        str(          -1000000.0)  <>           "-1000000.0" or
        str(          -1234567.0)  <>           "-1234567.0" or
        str(          -9999999.0)  <>           "-9999999.0" or
        str(         -10000000.0)  <>          "-10000000.0" or
        str(         -91234567.0)  <>          "-91234567.0" or
        str(         -99999999.0)  <>          "-99999999.0" or
        str(        -100000000.0)  <>         "-100000000.0" or
        str(        -891234567.0)  <>         "-891234567.0" or
        str(        -999999999.0)  <>         "-999999999.0" or
        str(       -1000000000.0)  <>        "-1000000000.0" or
        str(       -7891234567.0)  <>        "-7891234567.0" or
        str(       -9999999999.0)  <>        "-9999999999.0" or
        str(      -10000000000.0)  <>       "-10000000000.0" or
        str(      -67891234567.0)  <>       "-67891234567.0" or
        str(      -99999999999.0)  <>       "-99999999999.0" or
        str(     -100000000000.0)  <>      "-100000000000.0" or
        str(     -567891234567.0)  <>      "-567891234567.0" or
        str(     -999999999999.0)  <>      "-999999999999.0" or
        str(    -1000000000000.0)  <>     "-1000000000000.0" or
        str(    -4567891234567.0)  <>     "-4567891234567.0" or
        str(    -9999999999999.0)  <>     "-9999999999999.0" or
        str(   -10000000000000.0)  <>    "-10000000000000.0" or
        str(   -34567891234567.0)  <>    "-34567891234567.0" or
        str(   -99999999999999.0)  <>    "-99999999999999.0" or
        str(  -100000000000000.0)  <>   "-100000000000000.0" or
        str(  -234567891234567.0)  <>   "-234567891234567.0" or
        str(  -999999999999999.0)  <>   "-999999999999999.0" or
        str( -1000000000000000.0)  <>  "-1000000000000000.0" or
        str( -1125899906842624.0)  <>  "-1125899906842624.0" or
        str( -2251799813685248.0)  <>  "-2251799813685248.0" or
        str( -4503599627370496.0)  <>  "-4503599627370496.0" or
        str( -9007199254740992.0)  <>  "-9007199254740992.0" or
        str(-10000000000000000.0)  <> "-10000000000000000.0" or
        str( -4503599627370495.5)  <>  "-4503599627370495.5" or
        str( -4000000000000000.5)  <>  "-4000000000000000.5" or
        str( -3000000000000000.5)  <>  "-3000000000000000.5" or
        str( -2251799813685248.5)  <>  "-2251799813685248.5" or
        str(  2251799813685248.5)  <>   "2251799813685248.5" or
        str(  3000000000000000.5)  <>   "3000000000000000.5" or
        str(  4000000000000000.5)  <>   "4000000000000000.5" or
        str(  4503599627370495.5)  <>   "4503599627370495.5" or
        str( 0.999999999999999)      <>  "0.999999999999999" or
        str( 0.1)                    <>  "0.1" or
        str( 0.0999999999999999)     <>  "0.0999999999999999" or
        str( 0.01)                   <>  "0.01" or
        str( 0.00999999999999999)    <>  "0.00999999999999999" or
        str( 0.001)                  <>  "0.001" or
        str( 0.000999999999999999)   <>  "0.000999999999999999" or
        str( 0.0001)                 <>  "0.0001" or
        str( 0.0000999999999999999)  <>  "0.0000999999999999999" or
        str( 0.00001)                <>  "0.00001" or
        str( 0.00000999999999999999) <>  "0.00000999999999999999" or
        str( 0.000001)               <>  "0.000001" or
        str( 9.99999999999999e-7)    <>  "0.000000999999999999999" or
        str( 1.00000000000000e-7)    <>  "0.0000001" or
        str( 9.99999999999999e-10)   <>  "0.000000000999999999999999" or
        str( 1.00000000000000e-10)   <>  "0.0000000001" or
        str( 9.99999999999999e-15)   <>  "0.00000000000000999999999999999" or
        str( 1.00000000000000e-15)   <>  "0.000000000000001" or
        str( 9.99999999999999e-20)   <>  "0.0000000000000000000999999999999999" or
        str( 1.00000000000000e-20)   <>  "0.00000000000000000001" or
        str( 9.99999999999999e-25)   <>  "0.000000000000000000000000999999999999999" or
        str( 1.00000000000000e-25)   <>  "0.0000000000000000000000001" or
        str( 9.99999999999999e-30)   <>  "0.00000000000000000000000000000999999999999999" or
        str( 1.00000000000000e-30)   <>  "0.000000000000000000000000000001" or
        str( 9.99999999999999e-35)   <>  "0.0000000000000000000000000000000000999999999999999" or
        str( 1.00000000000000e-35)   <>  "0.00000000000000000000000000000000001" or
        str(-0.999999999999999)      <> "-0.999999999999999" or
        str(-0.1)                    <> "-0.1" or
        str(-0.0999999999999999)     <> "-0.0999999999999999" or
        str(-0.01)                   <> "-0.01" or
        str(-0.00999999999999999)    <> "-0.00999999999999999" or
        str(-0.001)                  <> "-0.001" or
        str(-0.000999999999999999)   <> "-0.000999999999999999" or
        str(-0.0001)                 <> "-0.0001" or
        str(-0.0000999999999999999)  <> "-0.0000999999999999999" or
        str(-0.00001)                <> "-0.00001" or
        str(-0.00000999999999999999) <> "-0.00000999999999999999" or
        str(-0.000001)               <> "-0.000001" or
        str(-9.99999999999999e-7)    <> "-0.000000999999999999999" or
        str(-1.00000000000000e-7)    <> "-0.0000001" or
        str(-9.99999999999999e-10)   <> "-0.000000000999999999999999" or
        str(-1.00000000000000e-10)   <> "-0.0000000001" or
        str(-9.99999999999999e-15)   <> "-0.00000000000000999999999999999" or
        str(-1.00000000000000e-15)   <> "-0.000000000000001" or
        str(-9.99999999999999e-20)   <> "-0.0000000000000000000999999999999999" or
        str(-1.00000000000000e-20)   <> "-0.00000000000000000001" or
        str(-9.99999999999999e-25)   <> "-0.000000000000000000000000999999999999999" or
        str(-1.00000000000000e-25)   <> "-0.0000000000000000000000001" or
        str(-9.99999999999999e-30)   <> "-0.00000000000000000000000000000999999999999999" or
        str(-1.00000000000000e-30)   <> "-0.000000000000000000000000000001" or
        str(-9.99999999999999e-35)   <> "-0.0000000000000000000000000000000000999999999999999" or
        str(-1.00000000000000e-35)   <> "-0.00000000000000000000000000000000001" or
        str( 12345.0e15) <>  "12345000000000000000.0" or
        str( 12345.0e14) <>   "1234500000000000000.0" or
        str( 12345.0e13) <>    "123450000000000000.0" or
        str( 12345.0e12) <>     "12345000000000000.0" or
        str( 12345.0e10) <>       "123450000000000.0" or
        str( 12345.0e8)  <>         "1234500000000.0" or
        str( 12345.0e6)  <>           "12345000000.0" or
        str( 12345.0e4)  <>             "123450000.0" or
        str( 12345.0e2)  <>               "1234500.0" or
        str( 12345.0e1)  <>                "123450.0" or
        str( 12345.0e0)  <>                 "12345.0" or
        str( 12345.0e-1)  <>                 "1234.5" or
        str( 12345.0e-2)  <>                  "123.45" or
        str( 12345.0e-3)  <>                   "12.345" or
        str( 12345.0e-4)  <>                    "1.2345" or
        str( 12345.0e-5)  <>                    "0.12345" or
        str( 12345.0e-6)  <>                    "0.012345" or
        str( 12345.0e-7)  <>                    "0.0012345" or
        str( 12345.0e-8)  <>                    "0.00012345" or
        str( 12345.0e-10)  <>                   "0.0000012345" or
        str( 12345.0e-12)  <>                   "0.000000012345" or
        str( 12345.0e-14)  <>                   "0.00000000012345" or
        str( 12345.0e-16)  <>                   "0.0000000000012345" or
        str( 12345.0e-18)  <>                   "0.000000000000012345" or
        str( 12345.0e-20)  <>                   "0.00000000000000012345" or
        str( 12345.0e-25)  <>                   "0.0000000000000000000012345" or
        str( 12345.0e-30)  <>                   "0.000000000000000000000000012345" or
        str( 12345.0e-35)  <>                   "0.00000000000000000000000000000012345" or
        str( 12345.0e-40)  <>                   "0.0000000000000000000000000000000000012345" or
        str( 12345.0e-45)  <>                   "0.000000000000000000000000000000000000000012345" or
        str(-12345.0e15) <> "-12345000000000000000.0" or
        str(-12345.0e14) <>  "-1234500000000000000.0" or
        str(-12345.0e13) <>   "-123450000000000000.0" or
        str(-12345.0e12) <>    "-12345000000000000.0" or
        str(-12345.0e10) <>      "-123450000000000.0" or
        str(-12345.0e8)  <>        "-1234500000000.0" or
        str(-12345.0e6)  <>          "-12345000000.0" or
        str(-12345.0e4)  <>            "-123450000.0" or
        str(-12345.0e2)  <>              "-1234500.0" or
        str(-12345.0e1)  <>               "-123450.0" or
        str(-12345.0e0)  <>                "-12345.0" or
        str(-12345.0e-1)  <>                "-1234.5" or
        str(-12345.0e-2)  <>                 "-123.45" or
        str(-12345.0e-3)  <>                  "-12.345" or
        str(-12345.0e-4)  <>                   "-1.2345" or
        str(-12345.0e-5)  <>                   "-0.12345" or
        str(-12345.0e-6)  <>                   "-0.012345" or
        str(-12345.0e-7)  <>                   "-0.0012345" or
        str(-12345.0e-8)  <>                   "-0.00012345" or
        str(-12345.0e-10)  <>                  "-0.0000012345" or
        str(-12345.0e-12)  <>                  "-0.000000012345" or
        str(-12345.0e-14)  <>                  "-0.00000000012345" or
        str(-12345.0e-16)  <>                  "-0.0000000000012345" or
        str(-12345.0e-18)  <>                  "-0.000000000000012345" or
        str(-12345.0e-20)  <>                  "-0.00000000000000012345" or
        str(-12345.0e-25)  <>                  "-0.0000000000000000000012345" or
        str(-12345.0e-30)  <>                  "-0.000000000000000000000000012345" or
        str(-12345.0e-35)  <>                  "-0.00000000000000000000000000000012345" or
        str(-12345.0e-40)  <>                  "-0.0000000000000000000000000000000000012345" or
        str(-12345.0e-45)  <>                  "-0.000000000000000000000000000000000000000012345" or
        str(                 0.00000123456789012345) <>                  "0.00000123456789012345" or
        str(                 0.0000123456789012345)  <>                  "0.0000123456789012345" or
        str(                 0.000123456789012345)   <>                  "0.000123456789012345" or
        str(                 0.00123456789012345)    <>                  "0.00123456789012345" or
        str(                 0.0123456789012345)     <>                  "0.0123456789012345" or
        str(                 0.123456789012345)      <>                  "0.123456789012345" or
        str(                 1.23456789012345)       <>                  "1.23456789012345" or
        str(                12.3456789012345)        <>                 "12.3456789012345" or
        str(               123.456789012345)         <>                "123.456789012345" or
        str(              1234.56789012345)          <>               "1234.56789012345" or
        str(             12345.6789012345)           <>              "12345.6789012345" or
        str(            123456.789012345)            <>             "123456.789012345" or
        str(           1234567.89012345)             <>            "1234567.89012345" or
        str(          12345678.9012345)              <>           "12345678.9012345" or
        str(         123456789.012345)               <>          "123456789.012345" or
        str(        1234567890.12345)                <>         "1234567890.12345" or
        str(       12345678901.2345)                 <>        "12345678901.2345" or
        str(      123456789012.345)                  <>       "123456789012.345" or
        str(     1234567890123.45)                   <>      "1234567890123.45" or
        str(    12345678901234.5)                    <>     "12345678901234.5" or
        str(   123456789012345.0)                    <>    "123456789012345.0" or
        str(  1234567890123450.0)                    <>   "1234567890123450.0" or
        str( 12345678901234500.0)                    <>  "12345678901234500.0" or
        str(                -0.00000123456789012345) <>                 "-0.00000123456789012345" or
        str(                -0.0000123456789012345)  <>                 "-0.0000123456789012345" or
        str(                -0.000123456789012345)   <>                 "-0.000123456789012345" or
        str(                -0.00123456789012345)    <>                 "-0.00123456789012345" or
        str(                -0.0123456789012345)     <>                 "-0.0123456789012345" or
        str(                -0.123456789012345)      <>                 "-0.123456789012345" or
        str(                -1.23456789012345)       <>                 "-1.23456789012345" or
        str(               -12.3456789012345)        <>                "-12.3456789012345" or
        str(              -123.456789012345)         <>               "-123.456789012345" or
        str(             -1234.56789012345)          <>              "-1234.56789012345" or
        str(            -12345.6789012345)           <>             "-12345.6789012345" or
        str(           -123456.789012345)            <>            "-123456.789012345" or
        str(          -1234567.89012345)             <>           "-1234567.89012345" or
        str(         -12345678.9012345)              <>          "-12345678.9012345" or
        str(        -123456789.012345)               <>         "-123456789.012345" or
        str(       -1234567890.12345)                <>        "-1234567890.12345" or
        str(      -12345678901.2345)                 <>       "-12345678901.2345" or
        str(     -123456789012.345)                  <>      "-123456789012.345" or
        str(    -1234567890123.45)                   <>     "-1234567890123.45" or
        str(   -12345678901234.5)                    <>    "-12345678901234.5" or
        str(  -123456789012345.0)                    <>   "-123456789012345.0" or
        str( -1234567890123450.0)                    <>  "-1234567890123450.0" or
        str(-12345678901234500.0)                    <> "-12345678901234500.0" 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(  123.456)) <>   "123.456" or
        str(floatExpr( -123.456)) <>  "-123.456" 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" then
      writeln(" ***** Str function for float does not work correct.");
      okay := FALSE;
    end if;

    if  (          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"       then
      writeln(" ***** Digits operator for float does not work correct.");
      okay := FALSE;
    end if;

    if (          1.0  digits  0)      <> "1" or
       (          1.0  digits  1)      <> "1.0" or
       (          1.0  digits  2)      <> "1.00" or
       (          1.0  digits  3)      <> "1.000" or
       (          1.0  digits  4)      <> "1.0000" or
       (          1.0  digits  5)      <> "1.00000" or
       (          1.0  digits  6)      <> "1.000000" or
       (          1.0  digits  7)      <> "1.0000000" or
       (          1.0  digits  8)      <> "1.00000000" or
       (          1.0  digits  9)      <> "1.000000000" or
       (          1.0  digits 10)      <> "1.0000000000" or
       (          1.0  digits 11)      <> "1.00000000000" or
       (          1.0  digits 12)      <> "1.000000000000" or
       (          1.0  digits 13)      <> "1.0000000000000" or
       (          1.0  digits 14)      <> "1.00000000000000" or
       (          1.0  digits 15)      <> "1.000000000000000" or
       (          1.0  digits 16)      <> "1.0000000000000000" or
       (          1.0  digits 17)      <> "1.00000000000000000" or
       (          1.0  digits 18)      <> "1.000000000000000000" or
       (          1.0  digits 19)      <> "1.0000000000000000000" or
       (          1.0  digits 20)      <> "1.00000000000000000000" or
       (          1.0  digits 21)      <> "1.000000000000000000000" or
       (          1.0  digits 22)      <> "1.0000000000000000000000" or
       (          1.0  digits 23)      <> "1.00000000000000000000000" or
       (          1.0  digits 24)      <> "1.000000000000000000000000" or
       (          1.0  digits 25)      <> "1.0000000000000000000000000" or
       (          1.0  digits 26)      <> "1.00000000000000000000000000" or
       (          1.0  digits 27)      <> "1.000000000000000000000000000" or
       (          1.0  digits 28)      <> "1.0000000000000000000000000000" or
       (          1.0  digits 29)      <> "1.00000000000000000000000000000" or
       (          1.0  digits 30)      <> "1.000000000000000000000000000000" or
       (          1.0  digits 100)     <> "1." & "0" mult 100 or
       (          1.0  digits 1000)    <> "1." & "0" mult 1000 or
       (          1.0  digits 10000)   <> "1." & "0" mult 10000 or
       (          1.0  digits 100000)  <> "1." & "0" mult 100000 or
       (          1.0  digits 1000000) <> "1." & "0" mult 1000000 or
       (floatExpr(1.0) digits  0)      <> "1" or
       (floatExpr(1.0) digits  1)      <> "1.0" or
       (floatExpr(1.0) digits  2)      <> "1.00" or
       (floatExpr(1.0) digits  3)      <> "1.000" or
       (floatExpr(1.0) digits  4)      <> "1.0000" or
       (floatExpr(1.0) digits  5)      <> "1.00000" or
       (floatExpr(1.0) digits  6)      <> "1.000000" or
       (floatExpr(1.0) digits  7)      <> "1.0000000" or
       (floatExpr(1.0) digits  8)      <> "1.00000000" or
       (floatExpr(1.0) digits  9)      <> "1.000000000" or
       (floatExpr(1.0) digits 10)      <> "1.0000000000" or
       (floatExpr(1.0) digits 11)      <> "1.00000000000" or
       (floatExpr(1.0) digits 12)      <> "1.000000000000" or
       (floatExpr(1.0) digits 13)      <> "1.0000000000000" or
       (floatExpr(1.0) digits 14)      <> "1.00000000000000" or
       (floatExpr(1.0) digits 15)      <> "1.000000000000000" or
       (floatExpr(1.0) digits 16)      <> "1.0000000000000000" or
       (floatExpr(1.0) digits 17)      <> "1.00000000000000000" or
       (floatExpr(1.0) digits 18)      <> "1.000000000000000000" or
       (floatExpr(1.0) digits 19)      <> "1.0000000000000000000" or
       (floatExpr(1.0) digits 20)      <> "1.00000000000000000000" or
       (floatExpr(1.0) digits 21)      <> "1.000000000000000000000" or
       (floatExpr(1.0) digits 22)      <> "1.0000000000000000000000" or
       (floatExpr(1.0) digits 23)      <> "1.00000000000000000000000" or
       (floatExpr(1.0) digits 24)      <> "1.000000000000000000000000" or
       (floatExpr(1.0) digits 25)      <> "1.0000000000000000000000000" or
       (floatExpr(1.0) digits 26)      <> "1.00000000000000000000000000" or
       (floatExpr(1.0) digits 27)      <> "1.000000000000000000000000000" or
       (floatExpr(1.0) digits 28)      <> "1.0000000000000000000000000000" or
       (floatExpr(1.0) digits 29)      <> "1.00000000000000000000000000000" or
       (floatExpr(1.0) digits 30)      <> "1.000000000000000000000000000000" or
       (floatExpr(1.0) digits 100)     <> "1." & "0" mult 100 or
       (floatExpr(1.0) digits 1000)    <> "1." & "0" mult 1000 or
       (floatExpr(1.0) digits 10000)   <> "1." & "0" mult 10000 or
       (floatExpr(1.0) digits 100000)  <> "1." & "0" mult 100000 or
       (floatExpr(1.0) digits 1000000) <> "1." & "0" mult 1000000 then
      writeln(" ***** Digits operator for float with many digits does not work correct.");
      okay := FALSE;
    end if;

    if  not raisesRangeError(          3.1415     digits         -1 ) or
        not raisesRangeError(floatExpr(3.1415   ) digits         -1 ) or
        not raisesRangeError(          3.1415     digits intExpr(-1)) or
        not raisesRangeError(floatExpr(3.1415   ) digits intExpr(-1)) then
      writeln(" ***** Digits operator for float with negative precision does not raise RANGE_ERROR.");
      okay := FALSE;
    end if;

    if  (          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(" ***** Sci operator for float does not work correct.");
      okay := FALSE;
    end if;

    if (          1.0  sci  0)         <> "1e+0" or
       (          1.0  sci  1)         <> "1.0e+0" or
       (          1.0  sci  2)         <> "1.00e+0" or
       (          1.0  sci  3)         <> "1.000e+0" or
       (          1.0  sci  4)         <> "1.0000e+0" or
       (          1.0  sci  5)         <> "1.00000e+0" or
       (          1.0  sci  6)         <> "1.000000e+0" or
       (          1.0  sci  7)         <> "1.0000000e+0" or
       (          1.0  sci  8)         <> "1.00000000e+0" or
       (          1.0  sci  9)         <> "1.000000000e+0" or
       (          1.0  sci 10)         <> "1.0000000000e+0" or
       (          1.0  sci 11)         <> "1.00000000000e+0" or
       (          1.0  sci 12)         <> "1.000000000000e+0" or
       (          1.0  sci 13)         <> "1.0000000000000e+0" or
       (          1.0  sci 14)         <> "1.00000000000000e+0" or
       (          1.0  sci 15)         <> "1.000000000000000e+0" or
       (          1.0  sci 16)         <> "1.0000000000000000e+0" or
       (          1.0  sci 17)         <> "1.00000000000000000e+0" or
       (          1.0  sci 18)         <> "1.000000000000000000e+0" or
       (          1.0  sci 19)         <> "1.0000000000000000000e+0" or
       (          1.0  sci 20)         <> "1.00000000000000000000e+0" or
       (          1.0  sci 21)         <> "1.000000000000000000000e+0" or
       (          1.0  sci 22)         <> "1.0000000000000000000000e+0" or
       (          1.0  sci 23)         <> "1.00000000000000000000000e+0" or
       (          1.0  sci 24)         <> "1.000000000000000000000000e+0" or
       (          1.0  sci 25)         <> "1.0000000000000000000000000e+0" or
       (          1.0  sci 26)         <> "1.00000000000000000000000000e+0" or
       (          1.0  sci 27)         <> "1.000000000000000000000000000e+0" or
       (          1.0  sci 28)         <> "1.0000000000000000000000000000e+0" or
       (          1.0  sci 29)         <> "1.00000000000000000000000000000e+0" or
       (          1.0  sci 30)         <> "1.000000000000000000000000000000e+0" or
       (          1.0  sci 100)        <> "1." & "0" mult 100 & "e+0" or
       (          1.0  sci 1000)       <> "1." & "0" mult 1000 & "e+0" or
       (          1.0  sci 10000)      <> "1." & "0" mult 10000 & "e+0" or
       (          1.0  sci 100000)     <> "1." & "0" mult 100000 & "e+0" or
       (          1.0  sci 1000000)    <> "1." & "0" mult 1000000 & "e+0" or
       (floatExpr(1.0) sci  0)         <> "1e+0" or
       (floatExpr(1.0) sci  1)         <> "1.0e+0" or
       (floatExpr(1.0) sci  2)         <> "1.00e+0" or
       (floatExpr(1.0) sci  3)         <> "1.000e+0" or
       (floatExpr(1.0) sci  4)         <> "1.0000e+0" or
       (floatExpr(1.0) sci  5)         <> "1.00000e+0" or
       (floatExpr(1.0) sci  6)         <> "1.000000e+0" or
       (floatExpr(1.0) sci  7)         <> "1.0000000e+0" or
       (floatExpr(1.0) sci  8)         <> "1.00000000e+0" or
       (floatExpr(1.0) sci  9)         <> "1.000000000e+0" or
       (floatExpr(1.0) sci 10)         <> "1.0000000000e+0" or
       (floatExpr(1.0) sci 11)         <> "1.00000000000e+0" or
       (floatExpr(1.0) sci 12)         <> "1.000000000000e+0" or
       (floatExpr(1.0) sci 13)         <> "1.0000000000000e+0" or
       (floatExpr(1.0) sci 14)         <> "1.00000000000000e+0" or
       (floatExpr(1.0) sci 15)         <> "1.000000000000000e+0" or
       (floatExpr(1.0) sci 16)         <> "1.0000000000000000e+0" or
       (floatExpr(1.0) sci 17)         <> "1.00000000000000000e+0" or
       (floatExpr(1.0) sci 18)         <> "1.000000000000000000e+0" or
       (floatExpr(1.0) sci 19)         <> "1.0000000000000000000e+0" or
       (floatExpr(1.0) sci 20)         <> "1.00000000000000000000e+0" or
       (floatExpr(1.0) sci 21)         <> "1.000000000000000000000e+0" or
       (floatExpr(1.0) sci 22)         <> "1.0000000000000000000000e+0" or
       (floatExpr(1.0) sci 23)         <> "1.00000000000000000000000e+0" or
       (floatExpr(1.0) sci 24)         <> "1.000000000000000000000000e+0" or
       (floatExpr(1.0) sci 25)         <> "1.0000000000000000000000000e+0" or
       (floatExpr(1.0) sci 26)         <> "1.00000000000000000000000000e+0" or
       (floatExpr(1.0) sci 27)         <> "1.000000000000000000000000000e+0" or
       (floatExpr(1.0) sci 28)         <> "1.0000000000000000000000000000e+0" or
       (floatExpr(1.0) sci 29)         <> "1.00000000000000000000000000000e+0" or
       (floatExpr(1.0) sci 30)         <> "1.000000000000000000000000000000e+0" or
       (floatExpr(1.0) sci 100)        <> "1." & "0" mult 100 & "e+0" or
       (floatExpr(1.0) sci 1000)       <> "1." & "0" mult 1000 & "e+0" or
       (floatExpr(1.0) sci 10000)      <> "1." & "0" mult 10000 & "e+0" or
       (floatExpr(1.0) sci 100000)     <> "1." & "0" mult 100000 & "e+0" or
       (floatExpr(1.0) sci 1000000)    <> "1." & "0" mult 1000000 & "e+0" then
      writeln(" ***** Sci operator for float with many digits does not work correct.");
      okay := FALSE;
    end if;

    if (          1.0e-308  sci 1) <> "1.0e-308" or
       (          1.0e-307  sci 1) <> "1.0e-307" or
       (          1.0e-300  sci 1) <> "1.0e-300" or
       (          1.0e-275  sci 1) <> "1.0e-275" or
       (          1.0e-250  sci 1) <> "1.0e-250" or
       (          1.0e-225  sci 1) <> "1.0e-225" or
       (          1.0e-200  sci 1) <> "1.0e-200" or
       (          1.0e-175  sci 1) <> "1.0e-175" or
       (          1.0e-150  sci 1) <> "1.0e-150" or
       (          1.0e-125  sci 1) <> "1.0e-125" or
       (          1.0e-101  sci 1) <> "1.0e-101" or
       (          1.0e-100  sci 1) <> "1.0e-100" or
       (          1.0e-99   sci 1) <> "1.0e-99"  or
       (          1.0e-75   sci 1) <> "1.0e-75"  or
       (          1.0e-25   sci 1) <> "1.0e-25"  or
       (          1.0e-11   sci 1) <> "1.0e-11"  or
       (          1.0e-10   sci 1) <> "1.0e-10"  or
       (          1.0e-9    sci 1) <> "1.0e-9"   or
       (          1.0e-2    sci 1) <> "1.0e-2"   or
       (          1.0e-1    sci 1) <> "1.0e-1"   or
       (          1.0e0     sci 1) <> "1.0e+0"   or
       (          1.0e1     sci 1) <> "1.0e+1"   or
       (          1.0e2     sci 1) <> "1.0e+2"   or
       (          1.0e9     sci 1) <> "1.0e+9"   or
       (          1.0e10    sci 1) <> "1.0e+10"  or
       (          1.0e11    sci 1) <> "1.0e+11"  or
       (          1.0e25    sci 1) <> "1.0e+25"  or
       (          1.0e50    sci 1) <> "1.0e+50"  or
       (          1.0e75    sci 1) <> "1.0e+75"  or
       (          1.0e99    sci 1) <> "1.0e+99"  or
       (          1.0e100   sci 1) <> "1.0e+100" or
       (          1.0e101   sci 1) <> "1.0e+101" or
       (          1.0e125   sci 1) <> "1.0e+125" or
       (          1.0e150   sci 1) <> "1.0e+150" or
       (          1.0e175   sci 1) <> "1.0e+175" or
       (          1.0e200   sci 1) <> "1.0e+200" or
       (          1.0e225   sci 1) <> "1.0e+225" or
       (          1.0e250   sci 1) <> "1.0e+250" or
       (          1.0e275   sci 1) <> "1.0e+275" or
       (          1.0e300   sci 1) <> "1.0e+300" or
       (          1.0e307   sci 1) <> "1.0e+307" or
       (          1.0e308   sci 1) <> "1.0e+308" or
       (floatExpr(1.0e-308) sci 1) <> "1.0e-308" or
       (floatExpr(1.0e-307) sci 1) <> "1.0e-307" or
       (floatExpr(1.0e-300) sci 1) <> "1.0e-300" or
       (floatExpr(1.0e-275) sci 1) <> "1.0e-275" or
       (floatExpr(1.0e-250) sci 1) <> "1.0e-250" or
       (floatExpr(1.0e-225) sci 1) <> "1.0e-225" or
       (floatExpr(1.0e-200) sci 1) <> "1.0e-200" or
       (floatExpr(1.0e-175) sci 1) <> "1.0e-175" or
       (floatExpr(1.0e-150) sci 1) <> "1.0e-150" or
       (floatExpr(1.0e-125) sci 1) <> "1.0e-125" or
       (floatExpr(1.0e-101) sci 1) <> "1.0e-101" or
       (floatExpr(1.0e-100) sci 1) <> "1.0e-100" or
       (floatExpr(1.0e-99 ) sci 1) <> "1.0e-99"  or
       (floatExpr(1.0e-75 ) sci 1) <> "1.0e-75"  or
       (floatExpr(1.0e-25 ) sci 1) <> "1.0e-25"  or
       (floatExpr(1.0e-11 ) sci 1) <> "1.0e-11"  or
       (floatExpr(1.0e-10 ) sci 1) <> "1.0e-10"  or
       (floatExpr(1.0e-9  ) sci 1) <> "1.0e-9"   or
       (floatExpr(1.0e-2  ) sci 1) <> "1.0e-2"   or
       (floatExpr(1.0e-1  ) sci 1) <> "1.0e-1"   or
       (floatExpr(1.0e0   ) sci 1) <> "1.0e+0"   or
       (floatExpr(1.0e1   ) sci 1) <> "1.0e+1"   or
       (floatExpr(1.0e2   ) sci 1) <> "1.0e+2"   or
       (floatExpr(1.0e9   ) sci 1) <> "1.0e+9"   or
       (floatExpr(1.0e10  ) sci 1) <> "1.0e+10"  or
       (floatExpr(1.0e11  ) sci 1) <> "1.0e+11"  or
       (floatExpr(1.0e25  ) sci 1) <> "1.0e+25"  or
       (floatExpr(1.0e50  ) sci 1) <> "1.0e+50"  or
       (floatExpr(1.0e75  ) sci 1) <> "1.0e+75"  or
       (floatExpr(1.0e99  ) sci 1) <> "1.0e+99"  or
       (floatExpr(1.0e100 ) sci 1) <> "1.0e+100" or
       (floatExpr(1.0e101 ) sci 1) <> "1.0e+101" or
       (floatExpr(1.0e125 ) sci 1) <> "1.0e+125" or
       (floatExpr(1.0e150 ) sci 1) <> "1.0e+150" or
       (floatExpr(1.0e175 ) sci 1) <> "1.0e+175" or
       (floatExpr(1.0e200 ) sci 1) <> "1.0e+200" or
       (floatExpr(1.0e225 ) sci 1) <> "1.0e+225" or
       (floatExpr(1.0e250 ) sci 1) <> "1.0e+250" or
       (floatExpr(1.0e275 ) sci 1) <> "1.0e+275" or
       (floatExpr(1.0e300 ) sci 1) <> "1.0e+300" or
       (floatExpr(1.0e307 ) sci 1) <> "1.0e+307" or
       (floatExpr(1.0e308 ) sci 1) <> "1.0e+308" then
      writeln(" ***** Sci operator for float with higher exponent does not work correct.");
      okay := FALSE;
    end if;

    if  not raisesRangeError(          3.1415     sci            -1 ) or
        not raisesRangeError(floatExpr(3.1415   ) sci            -1 ) or
        not raisesRangeError(          3.1415     sci    intExpr(-1)) or
        not raisesRangeError(floatExpr(3.1415   ) sci    intExpr(-1)) then
      writeln(" ***** Sci operator for float with negative precision does not raise RANGE_ERROR.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Decimal conversion of float works correct.");
    else
      writeln(" ***** Decimal conversion of float does not work correct.");
    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.");
    end if;
  end func;


const proc: check_trunc is func
  local
    var boolean: okay is TRUE;
  begin
    if  not raisesRangeError(trunc(           -Infinity  )) or
        not raisesRangeError(trunc(          -FLOAT_MAX  )) or
        not raisesRangeError(trunc(             -1.0e37  )) or
        not raisesRangeError(trunc(-9223372036854777000.0)) or
        trunc(-9223372036854775808.0) <>        integer.first or
        trunc(-4611686018427387904.0) <> -4611686018427387904 or
        trunc(-2305843009213693952.0) <> -2305843009213693952 or
        trunc(-1152921504606846976.0) <> -1152921504606846976 or
        trunc( -576460752303423488.0) <>  -576460752303423488 or
        trunc(   -9007199254740992.0) <>    -9007199254740992 or
        trunc(   -9007199254740991.0) <>    -9007199254740991 or
        trunc(   -9007199254740990.0) <>    -9007199254740990 or
        trunc(     -10000000000000.9) <>      -10000000000000 or
        trunc(     -10000000000000.0) <>      -10000000000000 or
        trunc(      -1000000000000.99) <>      -1000000000000 or
        trunc(      -1000000000000.0) <>       -1000000000000 or
        trunc(       -100000000000.999) <>      -100000000000 or
        trunc(       -100000000000.0) <>        -100000000000 or
        trunc(        -10000000000.9999) <>      -10000000000 or
        trunc(        -10000000000.0) <>         -10000000000 or
        trunc(         -1000000000.99999) <>      -1000000000 or
        trunc(         -1000000000.0) <>          -1000000000 or
        trunc(          -100000000.999999) <>      -100000000 or
        trunc(          -100000000.0) <>           -100000000 or
        trunc(           -10000000.9999999) <>      -10000000 or
        trunc(           -10000000.0) <>            -10000000 or
        trunc(            -1000000.99999999) <>      -1000000 or
        trunc(            -1000000.0) <>             -1000000 or
        trunc(             -100000.999999999) <>      -100000 or
        trunc(             -100000.0) <>              -100000 or
        trunc(              -10000.9999999999) <>      -10000 or
        trunc(              -10000.0) <>               -10000 or
        trunc(               -1000.99999999999) <>      -1000 or
        trunc(               -1000.0) <>                -1000 or
        trunc(                -100.999999999999) <>      -100 or
        trunc(                -100.0) <>                 -100 or
        trunc(                 -10.9999999999999) <>      -10 or
        trunc(                 -10.0) <>                  -10 or
        trunc(                  -1.99999999999999) <>      -1 or
        trunc(                  -1.0) <>                   -1 or
        trunc(                  -0.999999999999999) <>      0 or
        trunc(                   0.0) <>                    0 or
        trunc(                   0.999999999999999) <>      0 or
        trunc(                   1.0) <>                    1 or
        trunc(                   1.99999999999999) <>       1 or
        trunc(                  10.0) <>                   10 or
        trunc(                  10.9999999999999) <>       10 or
        trunc(                 100.0) <>                  100 or
        trunc(                 100.999999999999) <>       100 or
        trunc(                1000.0) <>                 1000 or
        trunc(                1000.99999999999) <>       1000 or
        trunc(               10000.0) <>                10000 or
        trunc(               10000.9999999999) <>       10000 or
        trunc(              100000.0) <>               100000 or
        trunc(              100000.999999999) <>       100000 or
        trunc(             1000000.0) <>              1000000 or
        trunc(             1000000.99999999) <>       1000000 or
        trunc(            10000000.0) <>             10000000 or
        trunc(            10000000.9999999) <>       10000000 or
        trunc(           100000000.0) <>            100000000 or
        trunc(           100000000.999999) <>       100000000 or
        trunc(          1000000000.0) <>           1000000000 or
        trunc(          1000000000.99999) <>       1000000000 or
        trunc(         10000000000.0) <>          10000000000 or
        trunc(         10000000000.9999) <>       10000000000 or
        trunc(        100000000000.0) <>         100000000000 or
        trunc(        100000000000.999) <>       100000000000 or
        trunc(       1000000000000.0) <>        1000000000000 or
        trunc(       1000000000000.99) <>       1000000000000 or
        trunc(      10000000000000.0) <>       10000000000000 or
        trunc(      10000000000000.9) <>       10000000000000 or
        trunc(    9007199254740990.0) <>     9007199254740990 or
        trunc(    9007199254740991.0) <>     9007199254740991 or
        trunc(    9007199254740992.0) <>     9007199254740992 or
        trunc(  576460752303423488.0) <>   576460752303423488 or
        trunc( 1152921504606846976.0) <>  1152921504606846976 or
        trunc( 2305843009213693952.0) <>  2305843009213693952 or
        trunc( 4611686018427387904.0) <>  4611686018427387904 or
        not raisesRangeError(trunc( 9223372036854777000.0)) or
        not raisesRangeError(trunc(              1.0e37  )) or
        not raisesRangeError(trunc(           FLOAT_MAX  )) or
        not raisesRangeError(trunc(            Infinity  )) or
        not raisesRangeError(trunc(                 NaN  )) or
        not raisesRangeError(trunc(floatExpr(           -Infinity  ))) or
        not raisesRangeError(trunc(floatExpr(          -FLOAT_MAX  ))) or
        not raisesRangeError(trunc(floatExpr(             -1.0e37  ))) or
        not raisesRangeError(trunc(floatExpr(-9223372036854777000.0))) or
        trunc(floatExpr(-9223372036854775808.0)) <>        integer.first or
        trunc(floatExpr(-4611686018427387904.0)) <> -4611686018427387904 or
        trunc(floatExpr(-2305843009213693952.0)) <> -2305843009213693952 or
        trunc(floatExpr(-1152921504606846976.0)) <> -1152921504606846976 or
        trunc(floatExpr( -576460752303423488.0)) <>  -576460752303423488 or
        trunc(floatExpr(   -9007199254740992.0)) <>    -9007199254740992 or
        trunc(floatExpr(   -9007199254740991.0)) <>    -9007199254740991 or
        trunc(floatExpr(   -9007199254740990.0)) <>    -9007199254740990 or
        trunc(floatExpr(     -10000000000000.9)) <>      -10000000000000 or
        trunc(floatExpr(     -10000000000000.0)) <>      -10000000000000 or
        trunc(floatExpr(      -1000000000000.99)) <>      -1000000000000 or
        trunc(floatExpr(      -1000000000000.0)) <>       -1000000000000 or
        trunc(floatExpr(       -100000000000.999)) <>      -100000000000 or
        trunc(floatExpr(       -100000000000.0)) <>        -100000000000 or
        trunc(floatExpr(        -10000000000.9999)) <>      -10000000000 or
        trunc(floatExpr(        -10000000000.0)) <>         -10000000000 or
        trunc(floatExpr(         -1000000000.99999)) <>      -1000000000 or
        trunc(floatExpr(         -1000000000.0)) <>          -1000000000 or
        trunc(floatExpr(          -100000000.999999)) <>      -100000000 or
        trunc(floatExpr(          -100000000.0)) <>           -100000000 or
        trunc(floatExpr(           -10000000.9999999)) <>      -10000000 or
        trunc(floatExpr(           -10000000.0)) <>            -10000000 or
        trunc(floatExpr(            -1000000.99999999)) <>      -1000000 or
        trunc(floatExpr(            -1000000.0)) <>             -1000000 or
        trunc(floatExpr(             -100000.999999999)) <>      -100000 or
        trunc(floatExpr(             -100000.0)) <>              -100000 or
        trunc(floatExpr(              -10000.9999999999)) <>      -10000 or
        trunc(floatExpr(              -10000.0)) <>               -10000 or
        trunc(floatExpr(               -1000.99999999999)) <>      -1000 or
        trunc(floatExpr(               -1000.0)) <>                -1000 or
        trunc(floatExpr(                -100.999999999999)) <>      -100 or
        trunc(floatExpr(                -100.0)) <>                 -100 or
        trunc(floatExpr(                 -10.9999999999999)) <>      -10 or
        trunc(floatExpr(                 -10.0)) <>                  -10 or
        trunc(floatExpr(                  -1.99999999999999)) <>      -1 or
        trunc(floatExpr(                  -1.0)) <>                   -1 or
        trunc(floatExpr(                  -0.999999999999999)) <>      0 or
        trunc(floatExpr(                   0.0)) <>                    0 or
        trunc(floatExpr(                   0.999999999999999)) <>      0 or
        trunc(floatExpr(                   1.0)) <>                    1 or
        trunc(floatExpr(                   1.99999999999999)) <>       1 or
        trunc(floatExpr(                  10.0)) <>                   10 or
        trunc(floatExpr(                  10.9999999999999)) <>       10 or
        trunc(floatExpr(                 100.0)) <>                  100 or
        trunc(floatExpr(                 100.999999999999)) <>       100 or
        trunc(floatExpr(                1000.0)) <>                 1000 or
        trunc(floatExpr(                1000.99999999999)) <>       1000 or
        trunc(floatExpr(               10000.0)) <>                10000 or
        trunc(floatExpr(               10000.9999999999)) <>       10000 or
        trunc(floatExpr(              100000.0)) <>               100000 or
        trunc(floatExpr(              100000.999999999)) <>       100000 or
        trunc(floatExpr(             1000000.0)) <>              1000000 or
        trunc(floatExpr(             1000000.99999999)) <>       1000000 or
        trunc(floatExpr(            10000000.0)) <>             10000000 or
        trunc(floatExpr(            10000000.9999999)) <>       10000000 or
        trunc(floatExpr(           100000000.0)) <>            100000000 or
        trunc(floatExpr(           100000000.999999)) <>       100000000 or
        trunc(floatExpr(          1000000000.0)) <>           1000000000 or
        trunc(floatExpr(          1000000000.99999)) <>       1000000000 or
        trunc(floatExpr(         10000000000.0)) <>          10000000000 or
        trunc(floatExpr(         10000000000.9999)) <>       10000000000 or
        trunc(floatExpr(        100000000000.0)) <>         100000000000 or
        trunc(floatExpr(        100000000000.999)) <>       100000000000 or
        trunc(floatExpr(       1000000000000.0)) <>        1000000000000 or
        trunc(floatExpr(       1000000000000.99)) <>       1000000000000 or
        trunc(floatExpr(      10000000000000.0)) <>       10000000000000 or
        trunc(floatExpr(      10000000000000.9)) <>       10000000000000 or
        trunc(floatExpr(    9007199254740990.0)) <>     9007199254740990 or
        trunc(floatExpr(    9007199254740991.0)) <>     9007199254740991 or
        trunc(floatExpr(    9007199254740992.0)) <>     9007199254740992 or
        trunc(floatExpr(  576460752303423488.0)) <>   576460752303423488 or
        trunc(floatExpr( 1152921504606846976.0)) <>  1152921504606846976 or
        trunc(floatExpr( 2305843009213693952.0)) <>  2305843009213693952 or
        trunc(floatExpr( 4611686018427387904.0)) <>  4611686018427387904 or
        not raisesRangeError(trunc(floatExpr( 9223372036854777000.0))) or
        not raisesRangeError(trunc(floatExpr(              1.0e37  ))) or
        not raisesRangeError(trunc(floatExpr(           FLOAT_MAX  ))) or
        not raisesRangeError(trunc(floatExpr(            Infinity  ))) or
        not raisesRangeError(trunc(floatExpr(                 NaN  ))) then
      writeln(" ***** Truncation of float does not work correct.");
      okay := FALSE;
    end if;

    if  not raisesRangeError(round(           -Infinity  )) or
        not raisesRangeError(round(          -FLOAT_MAX  )) or
        not raisesRangeError(round(             -1.0e37  )) or
        not raisesRangeError(round(-9223372036854777000.0)) or
        round(-9223372036854775808.0) <>        integer.first or
        round(-4611686018427387904.0) <> -4611686018427387904 or
        round(-2305843009213693952.0) <> -2305843009213693952 or
        round(-1152921504606846976.0) <> -1152921504606846976 or
        round( -576460752303423488.0) <>  -576460752303423488 or
        round(   -9007199254740990.0) <>    -9007199254740990 or
        round(      -1000000000000.5) <>       -1000000000001 or
        round(      -1000000000000.49) <>      -1000000000000 or
        round(      -1000000000000.0) <>       -1000000000000 or
        round(       -999999999999.5) <>       -1000000000000 or
        round(       -999999999999.49) <>       -999999999999 or
        round(       -100000000000.5) <>        -100000000001 or
        round(       -100000000000.499) <>      -100000000000 or
        round(       -100000000000.0) <>        -100000000000 or
        round(        -99999999999.5) <>        -100000000000 or
        round(        -99999999999.499) <>       -99999999999 or
        round(        -10000000000.5) <>         -10000000001 or
        round(        -10000000000.4999) <>      -10000000000 or
        round(        -10000000000.0) <>         -10000000000 or
        round(         -9999999999.5) <>         -10000000000 or
        round(         -9999999999.4999) <>       -9999999999 or
        round(         -1000000000.5) <>          -1000000001 or
        round(         -1000000000.49999) <>      -1000000000 or
        round(         -1000000000.0) <>          -1000000000 or
        round(          -999999999.5) <>          -1000000000 or
        round(          -999999999.49999) <>       -999999999 or
        round(          -100000000.5) <>           -100000001 or
        round(          -100000000.499999) <>      -100000000 or
        round(          -100000000.0) <>           -100000000 or
        round(           -99999999.5) <>           -100000000 or
        round(           -99999999.499999) <>       -99999999 or
        round(           -10000000.5) <>            -10000001 or
        round(           -10000000.4999999) <>      -10000000 or
        round(           -10000000.0) <>            -10000000 or
        round(            -9999999.5) <>            -10000000 or
        round(            -9999999.4999999) <>       -9999999 or
        round(            -1000000.5) <>             -1000001 or
        round(            -1000000.49999999) <>      -1000000 or
        round(            -1000000.0) <>             -1000000 or
        round(             -999999.5) <>             -1000000 or
        round(             -999999.49999999) <>       -999999 or
        round(              100000.5) <>               100001 or
        round(              100000.499999999) <>       100000 or
        round(              100000.0) <>               100000 or
        round(               99999.5) <>               100000 or
        round(               99999.499999999) <>        99999 or
        round(               10000.5) <>                10001 or
        round(               10000.4999999999) <>       10000 or
        round(               10000.0) <>                10000 or
        round(                9999.5) <>                10000 or
        round(                9999.4999999999) <>        9999 or
        round(                1000.5) <>                 1001 or
        round(                1000.49999999999) <>       1000 or
        round(                1000.0) <>                 1000 or
        round(                 999.5) <>                 1000 or
        round(                 999.49999999999) <>        999 or
        round(                 100.5) <>                  101 or
        round(                 100.499999999999) <>       100 or
        round(                 100.0) <>                  100 or
        round(                  99.5) <>                  100 or
        round(                  99.499999999999) <>        99 or
        round(                 -10.5) <>                  -11 or
        round(                 -10.4999999999999) <>      -10 or
        round(                 -10.0) <>                  -10 or
        round(                  -9.5) <>                  -10 or
        round(                  -9.4999999999999) <>       -9 or
        round(                  -1.5) <>                   -2 or
        round(                  -1.49999999999999) <>      -1 or
        round(                  -1.0) <>                   -1 or
        round(                  -0.5) <>                   -1 or
        round(                  -0.499999999999999) <>      0 or
        round(                   0.0) <>                    0 or
        round(                   0.499999999999999) <>      0 or
        round(                   0.5) <>                    1 or
        round(                   1.0) <>                    1 or
        round(                   1.49999999999999) <>       1 or
        round(                   1.5) <>                    2 or
        round(                   9.4999999999999) <>        9 or
        round(                   9.5) <>                   10 or
        round(                  10.0) <>                   10 or
        round(                  10.4999999999999) <>       10 or
        round(                  10.5) <>                   11 or
        round(                  99.499999999999) <>        99 or
        round(                  99.5) <>                  100 or
        round(                 100.0) <>                  100 or
        round(                 100.499999999999) <>       100 or
        round(                 100.5) <>                  101 or
        round(                 999.49999999999) <>        999 or
        round(                 999.5) <>                 1000 or
        round(                1000.0) <>                 1000 or
        round(                1000.49999999999) <>       1000 or
        round(                1000.5) <>                 1001 or
        round(                9999.4999999999) <>        9999 or
        round(                9999.5) <>                10000 or
        round(               10000.0) <>                10000 or
        round(               10000.4999999999) <>       10000 or
        round(               10000.5) <>                10001 or
        round(               99999.499999999) <>        99999 or
        round(               99999.5) <>               100000 or
        round(              100000.0) <>               100000 or
        round(              100000.499999999) <>       100000 or
        round(              100000.5) <>               100001 or
        round(              999999.49999999) <>        999999 or
        round(              999999.5) <>              1000000 or
        round(             1000000.0) <>              1000000 or
        round(             1000000.49999999) <>       1000000 or
        round(             1000000.5) <>              1000001 or
        round(             9999999.4999999) <>        9999999 or
        round(             9999999.5) <>             10000000 or
        round(            10000000.0) <>             10000000 or
        round(            10000000.4999999) <>       10000000 or
        round(            10000000.5) <>             10000001 or
        round(            99999999.499999) <>        99999999 or
        round(            99999999.5) <>            100000000 or
        round(           100000000.0) <>            100000000 or
        round(           100000000.499999) <>       100000000 or
        round(           100000000.5) <>            100000001 or
        round(           999999999.49999) <>        999999999 or
        round(           999999999.5) <>           1000000000 or
        round(          1000000000.0) <>           1000000000 or
        round(          1000000000.49999) <>       1000000000 or
        round(          1000000000.5) <>           1000000001 or
        round(          9999999999.4999) <>        9999999999 or
        round(          9999999999.5) <>          10000000000 or
        round(         10000000000.0) <>          10000000000 or
        round(         10000000000.4999) <>       10000000000 or
        round(         10000000000.5) <>          10000000001 or
        round(         99999999999.499) <>        99999999999 or
        round(         99999999999.5) <>         100000000000 or
        round(        100000000000.0) <>         100000000000 or
        round(        100000000000.499) <>       100000000000 or
        round(        100000000000.5) <>         100000000001 or
        round(        999999999999.49) <>        999999999999 or
        round(        999999999999.5) <>        1000000000000 or
        round(       1000000000000.0) <>        1000000000000 or
        round(       1000000000000.49) <>       1000000000000 or
        round(       1000000000000.5) <>        1000000000001 or
        round(    9007199254740990.0) <>     9007199254740990 or
        round(  576460752303423488.0) <>   576460752303423488 or
        round( 1152921504606846976.0) <>  1152921504606846976 or
        round( 2305843009213693952.0) <>  2305843009213693952 or
        round( 4611686018427387904.0) <>  4611686018427387904 or
        not raisesRangeError(round( 9223372036854777000.0)) or
        not raisesRangeError(round(              1.0e37  )) or
        not raisesRangeError(round(           FLOAT_MAX  )) or
        not raisesRangeError(round(            Infinity  )) or
        not raisesRangeError(round(                 NaN  )) or
        not raisesRangeError(round(floatExpr(           -Infinity  ))) or
        not raisesRangeError(round(floatExpr(          -FLOAT_MAX  ))) or
        not raisesRangeError(round(floatExpr(             -1.0e37  ))) or
        not raisesRangeError(round(floatExpr(-9223372036854777000.0))) or
        round(floatExpr(-9223372036854775808.0)) <>        integer.first or
        round(floatExpr(-4611686018427387904.0)) <> -4611686018427387904 or
        round(floatExpr(-2305843009213693952.0)) <> -2305843009213693952 or
        round(floatExpr(-1152921504606846976.0)) <> -1152921504606846976 or
        round(floatExpr( -576460752303423488.0)) <>  -576460752303423488 or
        round(floatExpr(   -9007199254740990.0)) <>    -9007199254740990 or
        round(floatExpr(      -1000000000000.5)) <>       -1000000000001 or
        round(floatExpr(      -1000000000000.49)) <>      -1000000000000 or
        round(floatExpr(      -1000000000000.0)) <>       -1000000000000 or
        round(floatExpr(       -999999999999.5)) <>       -1000000000000 or
        round(floatExpr(       -999999999999.49)) <>       -999999999999 or
        round(floatExpr(       -100000000000.5)) <>        -100000000001 or
        round(floatExpr(       -100000000000.499)) <>      -100000000000 or
        round(floatExpr(       -100000000000.0)) <>        -100000000000 or
        round(floatExpr(        -99999999999.5)) <>        -100000000000 or
        round(floatExpr(        -99999999999.499)) <>       -99999999999 or
        round(floatExpr(        -10000000000.5)) <>         -10000000001 or
        round(floatExpr(        -10000000000.4999)) <>      -10000000000 or
        round(floatExpr(        -10000000000.0)) <>         -10000000000 or
        round(floatExpr(         -9999999999.5)) <>         -10000000000 or
        round(floatExpr(         -9999999999.4999)) <>       -9999999999 or
        round(floatExpr(         -1000000000.5)) <>          -1000000001 or
        round(floatExpr(         -1000000000.49999)) <>      -1000000000 or
        round(floatExpr(         -1000000000.0)) <>          -1000000000 or
        round(floatExpr(          -999999999.5)) <>          -1000000000 or
        round(floatExpr(          -999999999.49999)) <>       -999999999 or
        round(floatExpr(          -100000000.5)) <>           -100000001 or
        round(floatExpr(          -100000000.499999)) <>      -100000000 or
        round(floatExpr(          -100000000.0)) <>           -100000000 or
        round(floatExpr(           -99999999.5)) <>           -100000000 or
        round(floatExpr(           -99999999.499999)) <>       -99999999 or
        round(floatExpr(           -10000000.5)) <>            -10000001 or
        round(floatExpr(           -10000000.4999999)) <>      -10000000 or
        round(floatExpr(           -10000000.0)) <>            -10000000 or
        round(floatExpr(            -9999999.5)) <>            -10000000 or
        round(floatExpr(            -9999999.4999999)) <>       -9999999 or
        round(floatExpr(            -1000000.5)) <>             -1000001 or
        round(floatExpr(            -1000000.49999999)) <>      -1000000 or
        round(floatExpr(            -1000000.0)) <>             -1000000 or
        round(floatExpr(             -999999.5)) <>             -1000000 or
        round(floatExpr(             -999999.49999999)) <>       -999999 or
        round(floatExpr(              100000.5)) <>               100001 or
        round(floatExpr(              100000.499999999)) <>       100000 or
        round(floatExpr(              100000.0)) <>               100000 or
        round(floatExpr(               99999.5)) <>               100000 or
        round(floatExpr(               99999.499999999)) <>        99999 or
        round(floatExpr(               10000.5)) <>                10001 or
        round(floatExpr(               10000.4999999999)) <>       10000 or
        round(floatExpr(               10000.0)) <>                10000 or
        round(floatExpr(                9999.5)) <>                10000 or
        round(floatExpr(                9999.4999999999)) <>        9999 or
        round(floatExpr(                1000.5)) <>                 1001 or
        round(floatExpr(                1000.49999999999)) <>       1000 or
        round(floatExpr(                1000.0)) <>                 1000 or
        round(floatExpr(                 999.5)) <>                 1000 or
        round(floatExpr(                 999.49999999999)) <>        999 or
        round(floatExpr(                 100.5)) <>                  101 or
        round(floatExpr(                 100.499999999999)) <>       100 or
        round(floatExpr(                 100.0)) <>                  100 or
        round(floatExpr(                  99.5)) <>                  100 or
        round(floatExpr(                  99.499999999999)) <>        99 or
        round(floatExpr(                 -10.5)) <>                  -11 or
        round(floatExpr(                 -10.4999999999999)) <>      -10 or
        round(floatExpr(                 -10.0)) <>                  -10 or
        round(floatExpr(                  -9.5)) <>                  -10 or
        round(floatExpr(                  -9.4999999999999)) <>       -9 or
        round(floatExpr(                  -1.5)) <>                   -2 or
        round(floatExpr(                  -1.49999999999999)) <>      -1 or
        round(floatExpr(                  -1.0)) <>                   -1 or
        round(floatExpr(                  -0.5)) <>                   -1 or
        round(floatExpr(                  -0.499999999999999)) <>      0 or
        round(floatExpr(                   0.0)) <>                    0 or
        round(floatExpr(                   0.499999999999999)) <>      0 or
        round(floatExpr(                   0.5)) <>                    1 or
        round(floatExpr(                   1.0)) <>                    1 or
        round(floatExpr(                   1.49999999999999)) <>       1 or
        round(floatExpr(                   1.5)) <>                    2 or
        round(floatExpr(                   9.4999999999999)) <>        9 or
        round(floatExpr(                   9.5)) <>                   10 or
        round(floatExpr(                  10.0)) <>                   10 or
        round(floatExpr(                  10.4999999999999)) <>       10 or
        round(floatExpr(                  10.5)) <>                   11 or
        round(floatExpr(                  99.499999999999)) <>        99 or
        round(floatExpr(                  99.5)) <>                  100 or
        round(floatExpr(                 100.0)) <>                  100 or
        round(floatExpr(                 100.499999999999)) <>       100 or
        round(floatExpr(                 100.5)) <>                  101 or
        round(floatExpr(                 999.49999999999)) <>        999 or
        round(floatExpr(                 999.5)) <>                 1000 or
        round(floatExpr(                1000.0)) <>                 1000 or
        round(floatExpr(                1000.49999999999)) <>       1000 or
        round(floatExpr(                1000.5)) <>                 1001 or
        round(floatExpr(                9999.4999999999)) <>        9999 or
        round(floatExpr(                9999.5)) <>                10000 or
        round(floatExpr(               10000.0)) <>                10000 or
        round(floatExpr(               10000.4999999999)) <>       10000 or
        round(floatExpr(               10000.5)) <>                10001 or
        round(floatExpr(               99999.499999999)) <>        99999 or
        round(floatExpr(               99999.5)) <>               100000 or
        round(floatExpr(              100000.0)) <>               100000 or
        round(floatExpr(              100000.499999999)) <>       100000 or
        round(floatExpr(              100000.5)) <>               100001 or
        round(floatExpr(              999999.49999999)) <>        999999 or
        round(floatExpr(              999999.5)) <>              1000000 or
        round(floatExpr(             1000000.0)) <>              1000000 or
        round(floatExpr(             1000000.49999999)) <>       1000000 or
        round(floatExpr(             1000000.5)) <>              1000001 or
        round(floatExpr(             9999999.4999999)) <>        9999999 or
        round(floatExpr(             9999999.5)) <>             10000000 or
        round(floatExpr(            10000000.0)) <>             10000000 or
        round(floatExpr(            10000000.4999999)) <>       10000000 or
        round(floatExpr(            10000000.5)) <>             10000001 or
        round(floatExpr(            99999999.499999)) <>        99999999 or
        round(floatExpr(            99999999.5)) <>            100000000 or
        round(floatExpr(           100000000.0)) <>            100000000 or
        round(floatExpr(           100000000.499999)) <>       100000000 or
        round(floatExpr(           100000000.5)) <>            100000001 or
        round(floatExpr(           999999999.49999)) <>        999999999 or
        round(floatExpr(           999999999.5)) <>           1000000000 or
        round(floatExpr(          1000000000.0)) <>           1000000000 or
        round(floatExpr(          1000000000.49999)) <>       1000000000 or
        round(floatExpr(          1000000000.5)) <>           1000000001 or
        round(floatExpr(          9999999999.4999)) <>        9999999999 or
        round(floatExpr(          9999999999.5)) <>          10000000000 or
        round(floatExpr(         10000000000.0)) <>          10000000000 or
        round(floatExpr(         10000000000.4999)) <>       10000000000 or
        round(floatExpr(         10000000000.5)) <>          10000000001 or
        round(floatExpr(         99999999999.499)) <>        99999999999 or
        round(floatExpr(         99999999999.5)) <>         100000000000 or
        round(floatExpr(        100000000000.0)) <>         100000000000 or
        round(floatExpr(        100000000000.499)) <>       100000000000 or
        round(floatExpr(        100000000000.5)) <>         100000000001 or
        round(floatExpr(        999999999999.49)) <>        999999999999 or
        round(floatExpr(        999999999999.5)) <>        1000000000000 or
        round(floatExpr(       1000000000000.0)) <>        1000000000000 or
        round(floatExpr(       1000000000000.49)) <>       1000000000000 or
        round(floatExpr(       1000000000000.5)) <>        1000000000001 or
        round(floatExpr(    9007199254740990.0)) <>     9007199254740990 or
        round(floatExpr(  576460752303423488.0)) <>   576460752303423488 or
        round(floatExpr( 1152921504606846976.0)) <>  1152921504606846976 or
        round(floatExpr( 2305843009213693952.0)) <>  2305843009213693952 or
        round(floatExpr( 4611686018427387904.0)) <>  4611686018427387904 or
        not raisesRangeError(round(floatExpr( 9223372036854777000.0))) or
        not raisesRangeError(round(floatExpr(              1.0e37  ))) or
        not raisesRangeError(round(floatExpr(           FLOAT_MAX  ))) or
        not raisesRangeError(round(floatExpr(            Infinity  ))) or
        not raisesRangeError(round(floatExpr(                 NaN  ))) then
      writeln(" ***** Rounding 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.");
    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
  local
    const float: minusZero is -0.0;
    const float: minusOne is -1.0;
    const float: minusTwo is -2.0;
    var boolean: okay is TRUE;
  begin
    if            (-2.0) ** (-2.0) <>  0.25 or
        not isNaN((-2.0) ** (-1.5))         or
                  (-2.0) ** (-1.0) <> -0.5  or
        not isNaN((-2.0) ** (-0.5))         or
                  (-2.0) **   0.0  <>  1.0  or
        not isNaN((-2.0) **   0.5 )         or
                  (-2.0) **   1.0  <> -2.0  or
        not isNaN((-2.0) **   1.5 )         or
                  (-2.0) **   2.0  <>  4.0  or
        #         (-1.5) ** (-2.0) <>  0.444444 or
        not isNaN((-1.5) ** (-1.5))         or
        #         (-1.5) ** (-1.0) <> -0.666667 or
        not isNaN((-1.5) ** (-0.5))         or
                  (-1.5) **   0.0  <>  1.0  or
        not isNaN((-1.5) **   0.5 )         or
                  (-1.5) **   1.0  <> -1.5  or
        not isNaN((-1.5) **   1.5 )         or
                  (-1.5) **   2.0  <>  2.25 or
                  (-1.0) ** (-2.0) <>  1.0  or
        not isNaN((-1.0) ** (-1.5))         or
                  (-1.0) ** (-1.0) <> -1.0  or
        not isNaN((-1.0) ** (-0.5))         or
                  (-1.0) **   0.0  <>  1.0  or
        not isNaN((-1.0) **   0.5 )         or
                  (-1.0) **   1.0  <> -1.0  or
        not isNaN((-1.0) **   1.5 )         or
                  (-1.0) **   2.0  <>  1.0  or
                  (-0.5) ** (-2.0) <>  4.0  or
        not isNaN((-0.5) ** (-1.5))         or
                  (-0.5) ** (-1.0) <> -2.0  or
        not isNaN((-0.5) ** (-0.5))         or
                  (-0.5) **   0.0  <>  1.0  or
        not isNaN((-0.5) **   0.5 )         or
                  (-0.5) **   1.0  <> -0.5  or
        not isNaN((-0.5) **   1.5 )         or
                  (-0.5) **   2.0  <> 0.25  or
                  (-0.0) ** (-2.5) <> Infinity or
                  (-0.0) ** (-1.5) <> Infinity or
                  (-0.0) ** (-0.5) <> Infinity or
                  (-0.0) **   0.5  <> 0.0 or
                  (-0.0) **   1.5  <> 0.0 or
                  (-0.0) **   2.5  <> 0.0 or
                    0.0  ** (-2.5) <> Infinity or
                    0.0  ** (-1.5) <> Infinity or
                    0.0  ** (-0.5) <> Infinity or
                    0.0  **   0.5  <> 0.0 or
                    0.0  **   1.5  <> 0.0 or
                    0.0  **   2.5  <> 0.0 or
                    0.5  ** (-2.0) <> 4.0 or
        #           0.5  ** (-1.5) <> 2.828427 or
                    0.5  ** (-1.0) <> 2.0 or
        #           0.5  ** (-0.5) <> 1.414214 or
                    0.5  **   0.0  <> 1.0 or
        #           0.5  **   0.5  <> 0.707107 or
                    0.5  **   1.0  <> 0.5 or
        #           0.5  **   1.5  <> 0.353553 or
                    0.5  **   2.0  <> 0.25 or
                    1.0  ** (-2.0) <> 1.0 or
                    1.0  ** (-1.5) <> 1.0 or
                    1.0  ** (-1.0) <> 1.0 or
                    1.0  ** (-0.5) <> 1.0 or
                    1.0  **   0.0  <> 1.0 or
                    1.0  **   0.5  <> 1.0 or
                    1.0  **   1.0  <> 1.0 or
                    1.0  **   1.5  <> 1.0 or
                    1.0  **   2.0  <> 1.0 or
        #           1.5  ** (-2.0) <> 0.444444 or
        #           1.5  ** (-1.5) <> 0.544331 or
        #           1.5  ** (-1.0) <> 0.666667 or
        #           1.5  ** (-0.5) <> 0.816497 or
                    1.5  **   0.0  <> 1.0 or
        #           1.5  **   0.5  <> 1.224745 or
                    1.5  **   1.0  <> 1.5 or
        #           1.5  **   1.5  <> 1.837117 or
                    1.5  **   2.0  <> 2.25 then
      writeln(" ***** A ** B does not work correct for selected values.");
      okay := FALSE;
    end if;

    if  (-0.0) **           (-Infinity) <>  Infinity or
        (-0.0) ** (-9007199254740994.0) <>  Infinity or # Not exactly represented
        (-0.0) ** (-9007199254740993.0) <>  Infinity or # Not exactly represented
        (-0.0) ** (-9007199254740992.0) <>  Infinity or
        (-0.0) ** (-9007199254740991.0) <> -Infinity or
        (-0.0) **       (-4294967297.0) <> -Infinity or
        (-0.0) **       (-4294967296.0) <>  Infinity or
        (-0.0) **       (-4294967295.0) <> -Infinity or
        (-0.0) **       (-2147483649.0) <> -Infinity or
        (-0.0) **       (-2147483648.0) <>  Infinity or
        (-0.0) **       (-2147483647.0) <> -Infinity or
        (-0.0) **               (-30.0) <>  Infinity or
        (-0.0) **               (-29.0) <> -Infinity or
        (-0.0) **               (-28.0) <>  Infinity or
        (-0.0) **               (-27.0) <> -Infinity or
        (-0.0) **               (-26.0) <>  Infinity or
        (-0.0) **               (-25.0) <> -Infinity or
        (-0.0) **               (-24.0) <>  Infinity or
        (-0.0) **               (-23.0) <> -Infinity or
        (-0.0) **               (-22.0) <>  Infinity or
        (-0.0) **               (-21.0) <> -Infinity or
        (-0.0) **               (-20.0) <>  Infinity or
        (-0.0) **               (-19.0) <> -Infinity or
        (-0.0) **               (-18.0) <>  Infinity or
        (-0.0) **               (-17.0) <> -Infinity or
        (-0.0) **               (-16.0) <>  Infinity or
        (-0.0) **               (-15.0) <> -Infinity or
        (-0.0) **               (-14.0) <>  Infinity or
        (-0.0) **               (-13.0) <> -Infinity or
        (-0.0) **               (-12.0) <>  Infinity or
        (-0.0) **               (-11.0) <> -Infinity or
        (-0.0) **               (-10.0) <>  Infinity or
        (-0.0) **                (-9.0) <> -Infinity or
        (-0.0) **                (-8.0) <>  Infinity or
        (-0.0) **                (-7.0) <> -Infinity or
        (-0.0) **                (-6.0) <>  Infinity or
        (-0.0) **                (-5.0) <> -Infinity or
        (-0.0) **                (-4.0) <>  Infinity or
        (-0.0) **                (-3.0) <> -Infinity or
        (-0.0) **                (-2.0) <>  Infinity or
        (-0.0) **                (-1.0) <> -Infinity or
        floatExpr(-0.0) **           (-Infinity) <>  Infinity or
        floatExpr(-0.0) ** (-9007199254740994.0) <>  Infinity or # Not exactly represented
        floatExpr(-0.0) ** (-9007199254740993.0) <>  Infinity or # Not exactly represented
        floatExpr(-0.0) ** (-9007199254740992.0) <>  Infinity or
        floatExpr(-0.0) ** (-9007199254740991.0) <> -Infinity or
        floatExpr(-0.0) **       (-4294967297.0) <> -Infinity or
        floatExpr(-0.0) **       (-4294967296.0) <>  Infinity or
        floatExpr(-0.0) **       (-4294967295.0) <> -Infinity or
        floatExpr(-0.0) **       (-2147483649.0) <> -Infinity or
        floatExpr(-0.0) **       (-2147483648.0) <>  Infinity or
        floatExpr(-0.0) **       (-2147483647.0) <> -Infinity or
        floatExpr(-0.0) **               (-30.0) <>  Infinity or
        floatExpr(-0.0) **               (-29.0) <> -Infinity or
        floatExpr(-0.0) **               (-28.0) <>  Infinity or
        floatExpr(-0.0) **               (-27.0) <> -Infinity or
        floatExpr(-0.0) **               (-26.0) <>  Infinity or
        floatExpr(-0.0) **               (-25.0) <> -Infinity or
        floatExpr(-0.0) **               (-24.0) <>  Infinity or
        floatExpr(-0.0) **               (-23.0) <> -Infinity or
        floatExpr(-0.0) **               (-22.0) <>  Infinity or
        floatExpr(-0.0) **               (-21.0) <> -Infinity or
        floatExpr(-0.0) **               (-20.0) <>  Infinity or
        floatExpr(-0.0) **               (-19.0) <> -Infinity or
        floatExpr(-0.0) **               (-18.0) <>  Infinity or
        floatExpr(-0.0) **               (-17.0) <> -Infinity or
        floatExpr(-0.0) **               (-16.0) <>  Infinity or
        floatExpr(-0.0) **               (-15.0) <> -Infinity or
        floatExpr(-0.0) **               (-14.0) <>  Infinity or
        floatExpr(-0.0) **               (-13.0) <> -Infinity or
        floatExpr(-0.0) **               (-12.0) <>  Infinity or
        floatExpr(-0.0) **               (-11.0) <> -Infinity or
        floatExpr(-0.0) **               (-10.0) <>  Infinity or
        floatExpr(-0.0) **                (-9.0) <> -Infinity or
        floatExpr(-0.0) **                (-8.0) <>  Infinity or
        floatExpr(-0.0) **                (-7.0) <> -Infinity or
        floatExpr(-0.0) **                (-6.0) <>  Infinity or
        floatExpr(-0.0) **                (-5.0) <> -Infinity or
        floatExpr(-0.0) **                (-4.0) <>  Infinity or
        floatExpr(-0.0) **                (-3.0) <> -Infinity or
        floatExpr(-0.0) **                (-2.0) <>  Infinity or
        floatExpr(-0.0) **                (-1.0) <> -Infinity or
        (-0.0) ** floatExpr(          -Infinity) <>  Infinity or
        (-0.0) ** floatExpr(-9007199254740994.0) <>  Infinity or # Not exactly represented
        (-0.0) ** floatExpr(-9007199254740993.0) <>  Infinity or # Not exactly represented
        (-0.0) ** floatExpr(-9007199254740992.0) <>  Infinity or
        (-0.0) ** floatExpr(-9007199254740991.0) <> -Infinity or
        (-0.0) ** floatExpr(      -4294967297.0) <> -Infinity or
        (-0.0) ** floatExpr(      -4294967296.0) <>  Infinity or
        (-0.0) ** floatExpr(      -4294967295.0) <> -Infinity or
        (-0.0) ** floatExpr(      -2147483649.0) <> -Infinity or
        (-0.0) ** floatExpr(      -2147483648.0) <>  Infinity or
        (-0.0) ** floatExpr(      -2147483647.0) <> -Infinity or
        (-0.0) ** floatExpr(              -30.0) <>  Infinity or
        (-0.0) ** floatExpr(              -29.0) <> -Infinity or
        (-0.0) ** floatExpr(              -28.0) <>  Infinity or
        (-0.0) ** floatExpr(              -27.0) <> -Infinity or
        (-0.0) ** floatExpr(              -26.0) <>  Infinity or
        (-0.0) ** floatExpr(              -25.0) <> -Infinity or
        (-0.0) ** floatExpr(              -24.0) <>  Infinity or
        (-0.0) ** floatExpr(              -23.0) <> -Infinity or
        (-0.0) ** floatExpr(              -22.0) <>  Infinity or
        (-0.0) ** floatExpr(              -21.0) <> -Infinity or
        (-0.0) ** floatExpr(              -20.0) <>  Infinity or
        (-0.0) ** floatExpr(              -19.0) <> -Infinity or
        (-0.0) ** floatExpr(              -18.0) <>  Infinity or
        (-0.0) ** floatExpr(              -17.0) <> -Infinity or
        (-0.0) ** floatExpr(              -16.0) <>  Infinity or
        (-0.0) ** floatExpr(              -15.0) <> -Infinity or
        (-0.0) ** floatExpr(              -14.0) <>  Infinity or
        (-0.0) ** floatExpr(              -13.0) <> -Infinity or
        (-0.0) ** floatExpr(              -12.0) <>  Infinity or
        (-0.0) ** floatExpr(              -11.0) <> -Infinity or
        (-0.0) ** floatExpr(              -10.0) <>  Infinity or
        (-0.0) ** floatExpr(               -9.0) <> -Infinity or
        (-0.0) ** floatExpr(               -8.0) <>  Infinity or
        (-0.0) ** floatExpr(               -7.0) <> -Infinity or
        (-0.0) ** floatExpr(               -6.0) <>  Infinity or
        (-0.0) ** floatExpr(               -5.0) <> -Infinity or
        (-0.0) ** floatExpr(               -4.0) <>  Infinity or
        (-0.0) ** floatExpr(               -3.0) <> -Infinity or
        (-0.0) ** floatExpr(               -2.0) <>  Infinity or
        (-0.0) ** floatExpr(               -1.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(          -Infinity) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(-9007199254740994.0) <>  Infinity or # Not exactly represented
        floatExpr(-0.0) ** floatExpr(-9007199254740993.0) <>  Infinity or # Not exactly represented
        floatExpr(-0.0) ** floatExpr(-9007199254740992.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(-9007199254740991.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(      -4294967297.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(      -4294967296.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(      -4294967295.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(      -2147483649.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(      -2147483648.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(      -2147483647.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(              -30.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(              -29.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(              -28.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(              -27.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(              -26.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(              -25.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(              -24.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(              -23.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(              -22.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(              -21.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(              -20.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(              -19.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(              -18.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(              -17.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(              -16.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(              -15.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(              -14.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(              -13.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(              -12.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(              -11.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(              -10.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(               -9.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(               -8.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(               -7.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(               -6.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(               -5.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(               -4.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(               -3.0) <> -Infinity or
        floatExpr(-0.0) ** floatExpr(               -2.0) <>  Infinity or
        floatExpr(-0.0) ** floatExpr(               -1.0) <> -Infinity then
      writeln(" ***** (-0.0) ** B with negative B does not return Infinity respectively -Infinity.");
      okay := FALSE;
    end if;

   if                      (-0.0) **                0.0 <> 1.0 or
        not isNegativeZero((-0.0) **                1.0) or
        not isPositiveZero((-0.0) **                2.0) or
        not isNegativeZero((-0.0) **                3.0) or
        not isPositiveZero((-0.0) **                4.0) or
        not isNegativeZero((-0.0) **                5.0) or
        not isPositiveZero((-0.0) **                6.0) or
        not isNegativeZero((-0.0) **                7.0) or
        not isPositiveZero((-0.0) **                8.0) or
        not isNegativeZero((-0.0) **                9.0) or
        not isPositiveZero((-0.0) **               10.0) or
        not isNegativeZero((-0.0) **               11.0) or
        not isPositiveZero((-0.0) **               12.0) or
        not isNegativeZero((-0.0) **               13.0) or
        not isPositiveZero((-0.0) **               14.0) or
        not isNegativeZero((-0.0) **               15.0) or
        not isPositiveZero((-0.0) **               16.0) or
        not isNegativeZero((-0.0) **               17.0) or
        not isPositiveZero((-0.0) **               18.0) or
        not isNegativeZero((-0.0) **               19.0) or
        not isPositiveZero((-0.0) **               20.0) or
        not isNegativeZero((-0.0) **               21.0) or
        not isPositiveZero((-0.0) **               22.0) or
        not isNegativeZero((-0.0) **               23.0) or
        not isPositiveZero((-0.0) **               24.0) or
        not isNegativeZero((-0.0) **               25.0) or
        not isPositiveZero((-0.0) **               26.0) or
        not isNegativeZero((-0.0) **               27.0) or
        not isPositiveZero((-0.0) **               28.0) or
        not isNegativeZero((-0.0) **               29.0) or
        not isPositiveZero((-0.0) **               30.0) or
        not isNegativeZero((-0.0) **       2147483647.0) or
        not isPositiveZero((-0.0) **       2147483648.0) or
        not isNegativeZero((-0.0) **       2147483649.0) or
        not isNegativeZero((-0.0) **       4294967295.0) or
        not isPositiveZero((-0.0) **       4294967296.0) or
        not isNegativeZero((-0.0) **       4294967297.0) or
        not isNegativeZero((-0.0) ** 9007199254740991.0) or
        not isPositiveZero((-0.0) ** 9007199254740992.0) or
        not isPositiveZero((-0.0) ** 9007199254740993.0) or # Not exactly represented
        not isPositiveZero((-0.0) ** 9007199254740994.0) or # Not exactly represented
        not isPositiveZero((-0.0) **           Infinity) or
                           floatExpr(-0.0) **                0.0 <> 1.0 or
        not isNegativeZero(floatExpr(-0.0) **                1.0) or
        not isPositiveZero(floatExpr(-0.0) **                2.0) or
        not isNegativeZero(floatExpr(-0.0) **                3.0) or
        not isPositiveZero(floatExpr(-0.0) **                4.0) or
        not isNegativeZero(floatExpr(-0.0) **                5.0) or
        not isPositiveZero(floatExpr(-0.0) **                6.0) or
        not isNegativeZero(floatExpr(-0.0) **                7.0) or
        not isPositiveZero(floatExpr(-0.0) **                8.0) or
        not isNegativeZero(floatExpr(-0.0) **                9.0) or
        not isPositiveZero(floatExpr(-0.0) **               10.0) or
        not isNegativeZero(floatExpr(-0.0) **               11.0) or
        not isPositiveZero(floatExpr(-0.0) **               12.0) or
        not isNegativeZero(floatExpr(-0.0) **               13.0) or
        not isPositiveZero(floatExpr(-0.0) **               14.0) or
        not isNegativeZero(floatExpr(-0.0) **               15.0) or
        not isPositiveZero(floatExpr(-0.0) **               16.0) or
        not isNegativeZero(floatExpr(-0.0) **               17.0) or
        not isPositiveZero(floatExpr(-0.0) **               18.0) or
        not isNegativeZero(floatExpr(-0.0) **               19.0) or
        not isPositiveZero(floatExpr(-0.0) **               20.0) or
        not isNegativeZero(floatExpr(-0.0) **               21.0) or
        not isPositiveZero(floatExpr(-0.0) **               22.0) or
        not isNegativeZero(floatExpr(-0.0) **               23.0) or
        not isPositiveZero(floatExpr(-0.0) **               24.0) or
        not isNegativeZero(floatExpr(-0.0) **               25.0) or
        not isPositiveZero(floatExpr(-0.0) **               26.0) or
        not isNegativeZero(floatExpr(-0.0) **               27.0) or
        not isPositiveZero(floatExpr(-0.0) **               28.0) or
        not isNegativeZero(floatExpr(-0.0) **               29.0) or
        not isPositiveZero(floatExpr(-0.0) **               30.0) or
        not isNegativeZero(floatExpr(-0.0) **       2147483647.0) or
        not isPositiveZero(floatExpr(-0.0) **       2147483648.0) or
        not isNegativeZero(floatExpr(-0.0) **       2147483649.0) or
        not isNegativeZero(floatExpr(-0.0) **       4294967295.0) or
        not isPositiveZero(floatExpr(-0.0) **       4294967296.0) or
        not isNegativeZero(floatExpr(-0.0) **       4294967297.0) or
        not isNegativeZero(floatExpr(-0.0) ** 9007199254740991.0) or
        not isPositiveZero(floatExpr(-0.0) ** 9007199254740992.0) or
        not isPositiveZero(floatExpr(-0.0) ** 9007199254740993.0) or # Not exactly represented
        not isPositiveZero(floatExpr(-0.0) ** 9007199254740994.0) or # Not exactly represented
        not isPositiveZero(floatExpr(-0.0) **           Infinity) or
                           (-0.0) ** floatExpr(               0.0) <> 1.0 or
        not isNegativeZero((-0.0) ** floatExpr(               1.0)) or
        not isPositiveZero((-0.0) ** floatExpr(               2.0)) or
        not isNegativeZero((-0.0) ** floatExpr(               3.0)) or
        not isPositiveZero((-0.0) ** floatExpr(               4.0)) or
        not isNegativeZero((-0.0) ** floatExpr(               5.0)) or
        not isPositiveZero((-0.0) ** floatExpr(               6.0)) or
        not isNegativeZero((-0.0) ** floatExpr(               7.0)) or
        not isPositiveZero((-0.0) ** floatExpr(               8.0)) or
        not isNegativeZero((-0.0) ** floatExpr(               9.0)) or
        not isPositiveZero((-0.0) ** floatExpr(              10.0)) or
        not isNegativeZero((-0.0) ** floatExpr(              11.0)) or
        not isPositiveZero((-0.0) ** floatExpr(              12.0)) or
        not isNegativeZero((-0.0) ** floatExpr(              13.0)) or
        not isPositiveZero((-0.0) ** floatExpr(              14.0)) or
        not isNegativeZero((-0.0) ** floatExpr(              15.0)) or
        not isPositiveZero((-0.0) ** floatExpr(              16.0)) or
        not isNegativeZero((-0.0) ** floatExpr(              17.0)) or
        not isPositiveZero((-0.0) ** floatExpr(              18.0)) or
        not isNegativeZero((-0.0) ** floatExpr(              19.0)) or
        not isPositiveZero((-0.0) ** floatExpr(              20.0)) or
        not isNegativeZero((-0.0) ** floatExpr(              21.0)) or
        not isPositiveZero((-0.0) ** floatExpr(              22.0)) or
        not isNegativeZero((-0.0) ** floatExpr(              23.0)) or
        not isPositiveZero((-0.0) ** floatExpr(              24.0)) or
        not isNegativeZero((-0.0) ** floatExpr(              25.0)) or
        not isPositiveZero((-0.0) ** floatExpr(              26.0)) or
        not isNegativeZero((-0.0) ** floatExpr(              27.0)) or
        not isPositiveZero((-0.0) ** floatExpr(              28.0)) or
        not isNegativeZero((-0.0) ** floatExpr(              29.0)) or
        not isPositiveZero((-0.0) ** floatExpr(              30.0)) or
        not isNegativeZero((-0.0) ** floatExpr(      2147483647.0)) or
        not isPositiveZero((-0.0) ** floatExpr(      2147483648.0)) or
        not isNegativeZero((-0.0) ** floatExpr(      2147483649.0)) or
        not isNegativeZero((-0.0) ** floatExpr(      4294967295.0)) or
        not isPositiveZero((-0.0) ** floatExpr(      4294967296.0)) or
        not isNegativeZero((-0.0) ** floatExpr(      4294967297.0)) or
        not isNegativeZero((-0.0) ** floatExpr(9007199254740991.0)) or
        not isPositiveZero((-0.0) ** floatExpr(9007199254740992.0)) or
        not isPositiveZero((-0.0) ** floatExpr(9007199254740993.0)) or # Not exactly represented
        not isPositiveZero((-0.0) ** floatExpr(9007199254740994.0)) or # Not exactly represented
        not isPositiveZero((-0.0) ** floatExpr(          Infinity)) or
                           floatExpr(-0.0) ** floatExpr(               0.0) <> 1.0 or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(               1.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(               2.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(               3.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(               4.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(               5.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(               6.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(               7.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(               8.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(               9.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              10.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              11.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              12.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              13.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              14.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              15.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              16.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              17.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              18.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              19.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              20.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              21.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              22.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              23.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              24.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              25.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              26.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              27.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              28.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              29.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              30.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(      2147483647.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(      2147483648.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(      2147483649.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(      4294967295.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(      4294967296.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(      4294967297.0)) or
        not isNegativeZero(floatExpr(-0.0) ** floatExpr(9007199254740991.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(9007199254740992.0)) or
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(9007199254740993.0)) or # Not exactly represented
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(9007199254740994.0)) or # Not exactly represented
        not isPositiveZero(floatExpr(-0.0) ** floatExpr(          Infinity)) then
      writeln(" ***** (-0.0) ** B with positive B does not return 0.0 respectively -0.0.");
      okay := FALSE;
    end if;

    if  0.0 **           (-Infinity) <> Infinity or
        0.0 ** (-9007199254740994.0) <> Infinity or # Not exactly represented
        0.0 ** (-9007199254740993.0) <> Infinity or # Not exactly represented
        0.0 ** (-9007199254740992.0) <> Infinity or
        0.0 ** (-9007199254740991.0) <> Infinity or
        0.0 **       (-4294967297.0) <> Infinity or
        0.0 **       (-4294967296.0) <> Infinity or
        0.0 **       (-4294967295.0) <> Infinity or
        0.0 **       (-2147483649.0) <> Infinity or
        0.0 **       (-2147483648.0) <> Infinity or
        0.0 **       (-2147483647.0) <> Infinity or
        0.0 **               (-30.0) <> Infinity or
        0.0 **               (-29.0) <> Infinity or
        0.0 **               (-28.0) <> Infinity or
        0.0 **               (-27.0) <> Infinity or
        0.0 **               (-26.0) <> Infinity or
        0.0 **               (-25.0) <> Infinity or
        0.0 **               (-24.0) <> Infinity or
        0.0 **               (-23.0) <> Infinity or
        0.0 **               (-22.0) <> Infinity or
        0.0 **               (-21.0) <> Infinity or
        0.0 **               (-20.0) <> Infinity or
        0.0 **               (-19.0) <> Infinity or
        0.0 **               (-18.0) <> Infinity or
        0.0 **               (-17.0) <> Infinity or
        0.0 **               (-16.0) <> Infinity or
        0.0 **               (-15.0) <> Infinity or
        0.0 **               (-14.0) <> Infinity or
        0.0 **               (-13.0) <> Infinity or
        0.0 **               (-12.0) <> Infinity or
        0.0 **               (-11.0) <> Infinity or
        0.0 **               (-10.0) <> Infinity or
        0.0 **                (-9.0) <> Infinity or
        0.0 **                (-8.0) <> Infinity or
        0.0 **                (-7.0) <> Infinity or
        0.0 **                (-6.0) <> Infinity or
        0.0 **                (-5.0) <> Infinity or
        0.0 **                (-4.0) <> Infinity or
        0.0 **                (-3.0) <> Infinity or
        0.0 **                (-2.0) <> Infinity or
        0.0 **                (-1.0) <> Infinity or
        floatExpr(0.0) **           (-Infinity) <> Infinity or
        floatExpr(0.0) ** (-9007199254740994.0) <> Infinity or # Not exactly represented
        floatExpr(0.0) ** (-9007199254740993.0) <> Infinity or # Not exactly represented
        floatExpr(0.0) ** (-9007199254740992.0) <> Infinity or
        floatExpr(0.0) ** (-9007199254740991.0) <> Infinity or
        floatExpr(0.0) **       (-4294967297.0) <> Infinity or
        floatExpr(0.0) **       (-4294967296.0) <> Infinity or
        floatExpr(0.0) **       (-4294967295.0) <> Infinity or
        floatExpr(0.0) **       (-2147483649.0) <> Infinity or
        floatExpr(0.0) **       (-2147483648.0) <> Infinity or
        floatExpr(0.0) **       (-2147483647.0) <> Infinity or
        floatExpr(0.0) **               (-30.0) <> Infinity or
        floatExpr(0.0) **               (-29.0) <> Infinity or
        floatExpr(0.0) **               (-28.0) <> Infinity or
        floatExpr(0.0) **               (-27.0) <> Infinity or
        floatExpr(0.0) **               (-26.0) <> Infinity or
        floatExpr(0.0) **               (-25.0) <> Infinity or
        floatExpr(0.0) **               (-24.0) <> Infinity or
        floatExpr(0.0) **               (-23.0) <> Infinity or
        floatExpr(0.0) **               (-22.0) <> Infinity or
        floatExpr(0.0) **               (-21.0) <> Infinity or
        floatExpr(0.0) **               (-20.0) <> Infinity or
        floatExpr(0.0) **               (-19.0) <> Infinity or
        floatExpr(0.0) **               (-18.0) <> Infinity or
        floatExpr(0.0) **               (-17.0) <> Infinity or
        floatExpr(0.0) **               (-16.0) <> Infinity or
        floatExpr(0.0) **               (-15.0) <> Infinity or
        floatExpr(0.0) **               (-14.0) <> Infinity or
        floatExpr(0.0) **               (-13.0) <> Infinity or
        floatExpr(0.0) **               (-12.0) <> Infinity or
        floatExpr(0.0) **               (-11.0) <> Infinity or
        floatExpr(0.0) **               (-10.0) <> Infinity or
        floatExpr(0.0) **                (-9.0) <> Infinity or
        floatExpr(0.0) **                (-8.0) <> Infinity or
        floatExpr(0.0) **                (-7.0) <> Infinity or
        floatExpr(0.0) **                (-6.0) <> Infinity or
        floatExpr(0.0) **                (-5.0) <> Infinity or
        floatExpr(0.0) **                (-4.0) <> Infinity or
        floatExpr(0.0) **                (-3.0) <> Infinity or
        floatExpr(0.0) **                (-2.0) <> Infinity or
        floatExpr(0.0) **                (-1.0) <> Infinity or
        0.0 ** floatExpr(          -Infinity) <> Infinity or
        0.0 ** floatExpr(-9007199254740994.0) <> Infinity or # Not exactly represented
        0.0 ** floatExpr(-9007199254740993.0) <> Infinity or # Not exactly represented
        0.0 ** floatExpr(-9007199254740992.0) <> Infinity or
        0.0 ** floatExpr(-9007199254740991.0) <> Infinity or
        0.0 ** floatExpr(      -4294967297.0) <> Infinity or
        0.0 ** floatExpr(      -4294967296.0) <> Infinity or
        0.0 ** floatExpr(      -4294967295.0) <> Infinity or
        0.0 ** floatExpr(      -2147483649.0) <> Infinity or
        0.0 ** floatExpr(      -2147483648.0) <> Infinity or
        0.0 ** floatExpr(      -2147483647.0) <> Infinity or
        0.0 ** floatExpr(              -30.0) <> Infinity or
        0.0 ** floatExpr(              -29.0) <> Infinity or
        0.0 ** floatExpr(              -28.0) <> Infinity or
        0.0 ** floatExpr(              -27.0) <> Infinity or
        0.0 ** floatExpr(              -26.0) <> Infinity or
        0.0 ** floatExpr(              -25.0) <> Infinity or
        0.0 ** floatExpr(              -24.0) <> Infinity or
        0.0 ** floatExpr(              -23.0) <> Infinity or
        0.0 ** floatExpr(              -22.0) <> Infinity or
        0.0 ** floatExpr(              -21.0) <> Infinity or
        0.0 ** floatExpr(              -20.0) <> Infinity or
        0.0 ** floatExpr(              -19.0) <> Infinity or
        0.0 ** floatExpr(              -18.0) <> Infinity or
        0.0 ** floatExpr(              -17.0) <> Infinity or
        0.0 ** floatExpr(              -16.0) <> Infinity or
        0.0 ** floatExpr(              -15.0) <> Infinity or
        0.0 ** floatExpr(              -14.0) <> Infinity or
        0.0 ** floatExpr(              -13.0) <> Infinity or
        0.0 ** floatExpr(              -12.0) <> Infinity or
        0.0 ** floatExpr(              -11.0) <> Infinity or
        0.0 ** floatExpr(              -10.0) <> Infinity or
        0.0 ** floatExpr(               -9.0) <> Infinity or
        0.0 ** floatExpr(               -8.0) <> Infinity or
        0.0 ** floatExpr(               -7.0) <> Infinity or
        0.0 ** floatExpr(               -6.0) <> Infinity or
        0.0 ** floatExpr(               -5.0) <> Infinity or
        0.0 ** floatExpr(               -4.0) <> Infinity or
        0.0 ** floatExpr(               -3.0) <> Infinity or
        0.0 ** floatExpr(               -2.0) <> Infinity or
        0.0 ** floatExpr(               -1.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(          -Infinity) <> Infinity or
        floatExpr(0.0) ** floatExpr(-9007199254740994.0) <> Infinity or # Not exactly represented
        floatExpr(0.0) ** floatExpr(-9007199254740993.0) <> Infinity or # Not exactly represented
        floatExpr(0.0) ** floatExpr(-9007199254740992.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(-9007199254740991.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(      -4294967297.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(      -4294967296.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(      -4294967295.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(      -2147483649.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(      -2147483648.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(      -2147483647.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -30.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -29.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -28.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -27.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -26.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -25.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -24.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -23.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -22.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -21.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -20.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -19.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -18.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -17.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -16.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -15.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -14.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -13.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -12.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -11.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(              -10.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(               -9.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(               -8.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(               -7.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(               -6.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(               -5.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(               -4.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(               -3.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(               -2.0) <> Infinity or
        floatExpr(0.0) ** floatExpr(               -1.0) <> Infinity then
      writeln(" ***** 0.0 ** B with negative B does not return Infinity.");
      okay := FALSE;
    end if;

   if                      0.0 **                0.0 <> 1.0 or
        not isPositiveZero(0.0 **                1.0) or
        not isPositiveZero(0.0 **                2.0) or
        not isPositiveZero(0.0 **                3.0) or
        not isPositiveZero(0.0 **                4.0) or
        not isPositiveZero(0.0 **                5.0) or
        not isPositiveZero(0.0 **                6.0) or
        not isPositiveZero(0.0 **                7.0) or
        not isPositiveZero(0.0 **                8.0) or
        not isPositiveZero(0.0 **                9.0) or
        not isPositiveZero(0.0 **               10.0) or
        not isPositiveZero(0.0 **               11.0) or
        not isPositiveZero(0.0 **               12.0) or
        not isPositiveZero(0.0 **               13.0) or
        not isPositiveZero(0.0 **               14.0) or
        not isPositiveZero(0.0 **               15.0) or
        not isPositiveZero(0.0 **               16.0) or
        not isPositiveZero(0.0 **               17.0) or
        not isPositiveZero(0.0 **               18.0) or
        not isPositiveZero(0.0 **               19.0) or
        not isPositiveZero(0.0 **               20.0) or
        not isPositiveZero(0.0 **               21.0) or
        not isPositiveZero(0.0 **               22.0) or
        not isPositiveZero(0.0 **               23.0) or
        not isPositiveZero(0.0 **               24.0) or
        not isPositiveZero(0.0 **               25.0) or
        not isPositiveZero(0.0 **               26.0) or
        not isPositiveZero(0.0 **               27.0) or
        not isPositiveZero(0.0 **               28.0) or
        not isPositiveZero(0.0 **               29.0) or
        not isPositiveZero(0.0 **               30.0) or
        not isPositiveZero(0.0 **       2147483647.0) or
        not isPositiveZero(0.0 **       2147483648.0) or
        not isPositiveZero(0.0 **       2147483649.0) or
        not isPositiveZero(0.0 **       4294967295.0) or
        not isPositiveZero(0.0 **       4294967296.0) or
        not isPositiveZero(0.0 **       4294967297.0) or
        not isPositiveZero(0.0 ** 9007199254740991.0) or
        not isPositiveZero(0.0 ** 9007199254740992.0) or
        not isPositiveZero(0.0 ** 9007199254740993.0) or # Not exactly represented
        not isPositiveZero(0.0 ** 9007199254740994.0) or # Not exactly represented
        not isPositiveZero(0.0 **           Infinity) or
                           floatExpr(0.0) **                0.0 <> 1.0 or
        not isPositiveZero(floatExpr(0.0) **                1.0) or
        not isPositiveZero(floatExpr(0.0) **                2.0) or
        not isPositiveZero(floatExpr(0.0) **                3.0) or
        not isPositiveZero(floatExpr(0.0) **                4.0) or
        not isPositiveZero(floatExpr(0.0) **                5.0) or
        not isPositiveZero(floatExpr(0.0) **                6.0) or
        not isPositiveZero(floatExpr(0.0) **                7.0) or
        not isPositiveZero(floatExpr(0.0) **                8.0) or
        not isPositiveZero(floatExpr(0.0) **                9.0) or
        not isPositiveZero(floatExpr(0.0) **               10.0) or
        not isPositiveZero(floatExpr(0.0) **               11.0) or
        not isPositiveZero(floatExpr(0.0) **               12.0) or
        not isPositiveZero(floatExpr(0.0) **               13.0) or
        not isPositiveZero(floatExpr(0.0) **               14.0) or
        not isPositiveZero(floatExpr(0.0) **               15.0) or
        not isPositiveZero(floatExpr(0.0) **               16.0) or
        not isPositiveZero(floatExpr(0.0) **               17.0) or
        not isPositiveZero(floatExpr(0.0) **               18.0) or
        not isPositiveZero(floatExpr(0.0) **               19.0) or
        not isPositiveZero(floatExpr(0.0) **               20.0) or
        not isPositiveZero(floatExpr(0.0) **               21.0) or
        not isPositiveZero(floatExpr(0.0) **               22.0) or
        not isPositiveZero(floatExpr(0.0) **               23.0) or
        not isPositiveZero(floatExpr(0.0) **               24.0) or
        not isPositiveZero(floatExpr(0.0) **               25.0) or
        not isPositiveZero(floatExpr(0.0) **               26.0) or
        not isPositiveZero(floatExpr(0.0) **               27.0) or
        not isPositiveZero(floatExpr(0.0) **               28.0) or
        not isPositiveZero(floatExpr(0.0) **               29.0) or
        not isPositiveZero(floatExpr(0.0) **               30.0) or
        not isPositiveZero(floatExpr(0.0) **       2147483647.0) or
        not isPositiveZero(floatExpr(0.0) **       2147483648.0) or
        not isPositiveZero(floatExpr(0.0) **       2147483649.0) or
        not isPositiveZero(floatExpr(0.0) **       4294967295.0) or
        not isPositiveZero(floatExpr(0.0) **       4294967296.0) or
        not isPositiveZero(floatExpr(0.0) **       4294967297.0) or
        not isPositiveZero(floatExpr(0.0) ** 9007199254740991.0) or
        not isPositiveZero(floatExpr(0.0) ** 9007199254740992.0) or
        not isPositiveZero(floatExpr(0.0) ** 9007199254740993.0) or # Not exactly represented
        not isPositiveZero(floatExpr(0.0) ** 9007199254740994.0) or # Not exactly represented
        not isPositiveZero(floatExpr(0.0) **           Infinity) or
                           0.0 ** floatExpr(               0.0) <> 1.0 or
        not isPositiveZero(0.0 ** floatExpr(               1.0)) or
        not isPositiveZero(0.0 ** floatExpr(               2.0)) or
        not isPositiveZero(0.0 ** floatExpr(               3.0)) or
        not isPositiveZero(0.0 ** floatExpr(               4.0)) or
        not isPositiveZero(0.0 ** floatExpr(               5.0)) or
        not isPositiveZero(0.0 ** floatExpr(               6.0)) or
        not isPositiveZero(0.0 ** floatExpr(               7.0)) or
        not isPositiveZero(0.0 ** floatExpr(               8.0)) or
        not isPositiveZero(0.0 ** floatExpr(               9.0)) or
        not isPositiveZero(0.0 ** floatExpr(              10.0)) or
        not isPositiveZero(0.0 ** floatExpr(              11.0)) or
        not isPositiveZero(0.0 ** floatExpr(              12.0)) or
        not isPositiveZero(0.0 ** floatExpr(              13.0)) or
        not isPositiveZero(0.0 ** floatExpr(              14.0)) or
        not isPositiveZero(0.0 ** floatExpr(              15.0)) or
        not isPositiveZero(0.0 ** floatExpr(              16.0)) or
        not isPositiveZero(0.0 ** floatExpr(              17.0)) or
        not isPositiveZero(0.0 ** floatExpr(              18.0)) or
        not isPositiveZero(0.0 ** floatExpr(              19.0)) or
        not isPositiveZero(0.0 ** floatExpr(              20.0)) or
        not isPositiveZero(0.0 ** floatExpr(              21.0)) or
        not isPositiveZero(0.0 ** floatExpr(              22.0)) or
        not isPositiveZero(0.0 ** floatExpr(              23.0)) or
        not isPositiveZero(0.0 ** floatExpr(              24.0)) or
        not isPositiveZero(0.0 ** floatExpr(              25.0)) or
        not isPositiveZero(0.0 ** floatExpr(              26.0)) or
        not isPositiveZero(0.0 ** floatExpr(              27.0)) or
        not isPositiveZero(0.0 ** floatExpr(              28.0)) or
        not isPositiveZero(0.0 ** floatExpr(              29.0)) or
        not isPositiveZero(0.0 ** floatExpr(              30.0)) or
        not isPositiveZero(0.0 ** floatExpr(      2147483647.0)) or
        not isPositiveZero(0.0 ** floatExpr(      2147483648.0)) or
        not isPositiveZero(0.0 ** floatExpr(      2147483649.0)) or
        not isPositiveZero(0.0 ** floatExpr(      4294967295.0)) or
        not isPositiveZero(0.0 ** floatExpr(      4294967296.0)) or
        not isPositiveZero(0.0 ** floatExpr(      4294967297.0)) or
        not isPositiveZero(0.0 ** floatExpr(9007199254740991.0)) or
        not isPositiveZero(0.0 ** floatExpr(9007199254740992.0)) or
        not isPositiveZero(0.0 ** floatExpr(9007199254740993.0)) or # Not exactly represented
        not isPositiveZero(0.0 ** floatExpr(9007199254740994.0)) or # Not exactly represented
        not isPositiveZero(0.0 ** floatExpr(          Infinity)) or
                           floatExpr(0.0) ** floatExpr(               0.0) <> 1.0 or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(               1.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(               2.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(               3.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(               4.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(               5.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(               6.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(               7.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(               8.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(               9.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              10.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              11.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              12.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              13.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              14.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              15.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              16.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              17.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              18.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              19.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              20.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              21.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              22.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              23.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              24.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              25.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              26.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              27.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              28.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              29.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(              30.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(      2147483647.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(      2147483648.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(      2147483649.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(      4294967295.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(      4294967296.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(      4294967297.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(9007199254740991.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(9007199254740992.0)) or
        not isPositiveZero(floatExpr(0.0) ** floatExpr(9007199254740993.0)) or # Not exactly represented
        not isPositiveZero(floatExpr(0.0) ** floatExpr(9007199254740994.0)) or # Not exactly represented
        not isPositiveZero(floatExpr(0.0) ** floatExpr(          Infinity)) then
      writeln(" ***** 0.0 ** B with positive B does not return 0.0.");
      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 selected negative exponents does not return Infinity.");
      okay := FALSE;
    end if;

    if    0.0    ** 0.5 <>  0.0  or
          0.0625 ** 0.5 <>  0.25 or
          0.25   ** 0.5 <>  0.5  or
          1.0    ** 0.5 <>  1.0  or
          4.0    ** 0.5 <>  2.0  or
          9.0    ** 0.5 <>  3.0  or
         16.0    ** 0.5 <>  4.0  or
        100.0    ** 0.5 <> 10.0  or
        floatExpr(  0.0   ) ** 0.5 <>  0.0  or
        floatExpr(  0.0625) ** 0.5 <>  0.25 or
        floatExpr(  0.25  ) ** 0.5 <>  0.5  or
        floatExpr(  1.0   ) ** 0.5 <>  1.0  or
        floatExpr(  4.0   ) ** 0.5 <>  2.0  or
        floatExpr(  9.0   ) ** 0.5 <>  3.0  or
        floatExpr( 16.0   ) ** 0.5 <>  4.0  or
        floatExpr(100.0   ) ** 0.5 <> 10.0  or
          0.0    ** floatExpr(0.5) <>  0.0  or
          0.0625 ** floatExpr(0.5) <>  0.25 or
          0.25   ** floatExpr(0.5) <>  0.5  or
          1.0    ** floatExpr(0.5) <>  1.0  or
          4.0    ** floatExpr(0.5) <>  2.0  or
          9.0    ** floatExpr(0.5) <>  3.0  or
         16.0    ** floatExpr(0.5) <>  4.0  or
        100.0    ** floatExpr(0.5) <> 10.0  or
        floatExpr(  0.0   ) ** floatExpr(0.5) <>  0.0  or
        floatExpr(  0.0625) ** floatExpr(0.5) <>  0.25 or
        floatExpr(  0.25  ) ** floatExpr(0.5) <>  0.5  or
        floatExpr(  1.0   ) ** floatExpr(0.5) <>  1.0  or
        floatExpr(  4.0   ) ** floatExpr(0.5) <>  2.0  or
        floatExpr(  9.0   ) ** floatExpr(0.5) <>  3.0  or
        floatExpr( 16.0   ) ** floatExpr(0.5) <>  4.0  or
        floatExpr(100.0   ) ** floatExpr(0.5) <> 10.0  then
      writeln(" ***** A ** 0.5 does not work correct.");
      okay := FALSE;
    end if;

    if  1.0 **           (-Infinity) <> 1.0 or
        1.0 ** (-9007199254740994.0) <> 1.0 or
        1.0 ** (-9007199254740993.0) <> 1.0 or
        1.0 ** (-9007199254740992.0) <> 1.0 or
        1.0 ** (-9007199254740991.0) <> 1.0 or
        1.0 **       (-2147483649.0) <> 1.0 or
        1.0 **       (-2147483648.0) <> 1.0 or
        1.0 **                (-2.0) <> 1.0 or
        1.0 **                (-1.0) <> 1.0 or
        1.0 **                  0.0  <> 1.0 or
        1.0 **                  1.0  <> 1.0 or
        1.0 **                  2.0  <> 1.0 or
        1.0 **         2147483647.0  <> 1.0 or
        1.0 **         2147483648.0  <> 1.0 or
        1.0 **   9007199254740991.0  <> 1.0 or
        1.0 **   9007199254740992.0  <> 1.0 or
        1.0 **   9007199254740993.0  <> 1.0 or
        1.0 **   9007199254740994.0  <> 1.0 or
        1.0 **             Infinity  <> 1.0 or
        floatExpr(1.0) **           (-Infinity) <> 1.0 or
        floatExpr(1.0) ** (-9007199254740994.0) <> 1.0 or
        floatExpr(1.0) ** (-9007199254740993.0) <> 1.0 or
        floatExpr(1.0) ** (-9007199254740992.0) <> 1.0 or
        floatExpr(1.0) ** (-9007199254740991.0) <> 1.0 or
        floatExpr(1.0) **       (-2147483649.0) <> 1.0 or
        floatExpr(1.0) **       (-2147483648.0) <> 1.0 or
        floatExpr(1.0) **                (-2.0) <> 1.0 or
        floatExpr(1.0) **                (-1.0) <> 1.0 or
        floatExpr(1.0) **                  0.0  <> 1.0 or
        floatExpr(1.0) **                  1.0  <> 1.0 or
        floatExpr(1.0) **                  2.0  <> 1.0 or
        floatExpr(1.0) **         2147483647.0  <> 1.0 or
        floatExpr(1.0) **         2147483648.0  <> 1.0 or
        floatExpr(1.0) **   9007199254740991.0  <> 1.0 or
        floatExpr(1.0) **   9007199254740992.0  <> 1.0 or
        floatExpr(1.0) **   9007199254740993.0  <> 1.0 or
        floatExpr(1.0) **   9007199254740994.0  <> 1.0 or
        floatExpr(1.0) **             Infinity  <> 1.0 or
        1.0 ** floatExpr(          -Infinity) <> 1.0 or
        1.0 ** floatExpr(-9007199254740994.0) <> 1.0 or
        1.0 ** floatExpr(-9007199254740993.0) <> 1.0 or
        1.0 ** floatExpr(-9007199254740992.0) <> 1.0 or
        1.0 ** floatExpr(-9007199254740991.0) <> 1.0 or
        1.0 ** floatExpr(      -2147483649.0) <> 1.0 or
        1.0 ** floatExpr(      -2147483648.0) <> 1.0 or
        1.0 ** floatExpr(               -2.0) <> 1.0 or
        1.0 ** floatExpr(               -1.0) <> 1.0 or
        1.0 ** floatExpr(                0.0) <> 1.0 or
        1.0 ** floatExpr(                1.0) <> 1.0 or
        1.0 ** floatExpr(                2.0) <> 1.0 or
        1.0 ** floatExpr(       2147483647.0) <> 1.0 or
        1.0 ** floatExpr(       2147483648.0) <> 1.0 or
        1.0 ** floatExpr( 9007199254740991.0) <> 1.0 or
        1.0 ** floatExpr( 9007199254740992.0) <> 1.0 or
        1.0 ** floatExpr( 9007199254740993.0) <> 1.0 or
        1.0 ** floatExpr( 9007199254740994.0) <> 1.0 or
        1.0 ** floatExpr(           Infinity) <> 1.0 or
        floatExpr(1.0) ** floatExpr(          -Infinity) <> 1.0 or
        floatExpr(1.0) ** floatExpr(-9007199254740994.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr(-9007199254740993.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr(-9007199254740992.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr(-9007199254740991.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr(      -2147483649.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr(      -2147483648.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr(               -2.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr(               -1.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr(                0.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr(                1.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr(                2.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr(       2147483647.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr(       2147483648.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr( 9007199254740991.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr( 9007199254740992.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr( 9007199254740993.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr( 9007199254740994.0) <> 1.0 or
        floatExpr(1.0) ** floatExpr(           Infinity) <> 1.0 then
      writeln(" ***** 1.0 ** B does not return 1.0.");
      okay := FALSE;
    end if;

    if  2.0 **           (-Infinity) <> 0.0 or
        2.0 ** (-9007199254740994.0) <> 0.0 or
        2.0 ** (-9007199254740993.0) <> 0.0 or
        2.0 ** (-9007199254740992.0) <> 0.0 or
        2.0 ** (-9007199254740991.0) <> 0.0 or
        2.0 **       (-2147483649.0) <> 0.0 or
        2.0 **       (-2147483648.0) <> 0.0 or
        2.0 ** (-1000.0) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        2.0 ** ( -500.0) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
        2.0 ** ( -200.0) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
        2.0 ** ( -100.0) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        2.0 ** (  -50.0) <> 8.8817841970012523233890533447265625e-16 or
        2.0 ** (  -20.0) <> 9.5367431640625e-7 or
        2.0 ** (  -10.0) <> 9.765625e-4 or
        2.0 ** (   -5.0) <> 3.125e-2 or
        2.0 ** (   -2.0) <> 0.25 or
        2.0 ** (   -1.0) <> 0.5 or
        2.0 **      0.0  <> 1.0 or
        2.0 **      1.0  <> 2.0 or
        2.0 **      2.0  <> 4.0 or
        2.0 **      5.0  <> 3.2e1 or
        2.0 **     10.0  <> 1.024e3 or
        2.0 **     20.0  <> 1.048576e6 or
        2.0 **     50.0  <> 1.125899906842624e15 or
        2.0 **    100.0  <> 1.267650600228229401496703205376e30 or
        2.0 **    200.0  <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
        2.0 **    500.0  <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
        2.0 **   1000.0  <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        2.0 **       2147483647.0 <> Infinity or
        2.0 **       2147483648.0 <> Infinity or
        2.0 ** 9007199254740991.0 <> Infinity or
        2.0 ** 9007199254740992.0 <> Infinity or
        2.0 ** 9007199254740993.0 <> Infinity or
        2.0 ** 9007199254740994.0 <> Infinity or
        2.0 **           Infinity <> Infinity or
        floatExpr(2.0) **           (-Infinity) <> 0.0 or
        floatExpr(2.0) ** (-9007199254740994.0) <> 0.0 or
        floatExpr(2.0) ** (-9007199254740993.0) <> 0.0 or
        floatExpr(2.0) ** (-9007199254740992.0) <> 0.0 or
        floatExpr(2.0) ** (-9007199254740991.0) <> 0.0 or
        floatExpr(2.0) **       (-2147483649.0) <> 0.0 or
        floatExpr(2.0) **       (-2147483648.0) <> 0.0 or
        floatExpr(2.0) ** (-1000.0) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        floatExpr(2.0) ** ( -500.0) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
        floatExpr(2.0) ** ( -200.0) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
        floatExpr(2.0) ** ( -100.0) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        floatExpr(2.0) ** (  -50.0) <> 8.8817841970012523233890533447265625e-16 or
        floatExpr(2.0) ** (  -20.0) <> 9.5367431640625e-7 or
        floatExpr(2.0) ** (  -10.0) <> 9.765625e-4 or
        floatExpr(2.0) ** (   -5.0) <> 3.125e-2 or
        floatExpr(2.0) ** (   -2.0) <> 0.25 or
        floatExpr(2.0) ** (   -1.0) <> 0.5 or
        floatExpr(2.0) **      0.0  <> 1.0 or
        floatExpr(2.0) **      1.0  <> 2.0 or
        floatExpr(2.0) **      2.0  <> 4.0 or
        floatExpr(2.0) **      5.0  <> 3.2e1 or
        floatExpr(2.0) **     10.0  <> 1.024e3 or
        floatExpr(2.0) **     20.0  <> 1.048576e6 or
        floatExpr(2.0) **     50.0  <> 1.125899906842624e15 or
        floatExpr(2.0) **    100.0  <> 1.267650600228229401496703205376e30 or
        floatExpr(2.0) **    200.0  <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
        floatExpr(2.0) **    500.0  <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
        floatExpr(2.0) **   1000.0  <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        floatExpr(2.0) **       2147483647.0 <> Infinity or
        floatExpr(2.0) **       2147483648.0 <> Infinity or
        floatExpr(2.0) ** 9007199254740991.0 <> Infinity or
        floatExpr(2.0) ** 9007199254740992.0 <> Infinity or
        floatExpr(2.0) ** 9007199254740993.0 <> Infinity or
        floatExpr(2.0) ** 9007199254740994.0 <> Infinity or
        floatExpr(2.0) **           Infinity <> Infinity or
        2.0 ** floatExpr(          -Infinity) <> 0.0 or
        2.0 ** floatExpr(-9007199254740994.0) <> 0.0 or
        2.0 ** floatExpr(-9007199254740993.0) <> 0.0 or
        2.0 ** floatExpr(-9007199254740992.0) <> 0.0 or
        2.0 ** floatExpr(-9007199254740991.0) <> 0.0 or
        2.0 ** floatExpr(      -2147483649.0) <> 0.0 or
        2.0 ** floatExpr(      -2147483648.0) <> 0.0 or
        2.0 ** floatExpr(-1000.0) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        2.0 ** floatExpr( -500.0) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
        2.0 ** floatExpr( -200.0) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
        2.0 ** floatExpr( -100.0) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        2.0 ** floatExpr(  -50.0) <> 8.8817841970012523233890533447265625e-16 or
        2.0 ** floatExpr(  -20.0) <> 9.5367431640625e-7 or
        2.0 ** floatExpr(  -10.0) <> 9.765625e-4 or
        2.0 ** floatExpr(   -5.0) <> 3.125e-2 or
        2.0 ** floatExpr(   -2.0) <> 0.25 or
        2.0 ** floatExpr(   -1.0) <> 0.5 or
        2.0 ** floatExpr(    0.0) <> 1.0 or
        2.0 ** floatExpr(    1.0) <> 2.0 or
        2.0 ** floatExpr(    2.0) <> 4.0 or
        2.0 ** floatExpr(    5.0) <> 3.2e1 or
        2.0 ** floatExpr(   10.0) <> 1.024e3 or
        2.0 ** floatExpr(   20.0) <> 1.048576e6 or
        2.0 ** floatExpr(   50.0) <> 1.125899906842624e15 or
        2.0 ** floatExpr(  100.0) <> 1.267650600228229401496703205376e30 or
        2.0 ** floatExpr(  200.0) <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
        2.0 ** floatExpr(  500.0) <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
        2.0 ** floatExpr( 1000.0) <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        2.0 ** floatExpr(       2147483647.0) <> Infinity or
        2.0 ** floatExpr(       2147483648.0) <> Infinity or
        2.0 ** floatExpr( 9007199254740991.0) <> Infinity or
        2.0 ** floatExpr( 9007199254740992.0) <> Infinity or
        2.0 ** floatExpr( 9007199254740993.0) <> Infinity or
        2.0 ** floatExpr( 9007199254740994.0) <> Infinity or
        2.0 ** floatExpr(           Infinity) <> Infinity or
        floatExpr(2.0) ** floatExpr(          -Infinity) <> 0.0 or
        floatExpr(2.0) ** floatExpr(-9007199254740994.0) <> 0.0 or
        floatExpr(2.0) ** floatExpr(-9007199254740993.0) <> 0.0 or
        floatExpr(2.0) ** floatExpr(-9007199254740992.0) <> 0.0 or
        floatExpr(2.0) ** floatExpr(-9007199254740991.0) <> 0.0 or
        floatExpr(2.0) ** floatExpr(      -2147483649.0) <> 0.0 or
        floatExpr(2.0) ** floatExpr(      -2147483648.0) <> 0.0 or
        floatExpr(2.0) ** floatExpr(-1000.0) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        floatExpr(2.0) ** floatExpr( -500.0) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
        floatExpr(2.0) ** floatExpr( -200.0) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
        floatExpr(2.0) ** floatExpr( -100.0) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        floatExpr(2.0) ** floatExpr(  -50.0) <> 8.8817841970012523233890533447265625e-16 or
        floatExpr(2.0) ** floatExpr(  -20.0) <> 9.5367431640625e-7 or
        floatExpr(2.0) ** floatExpr(  -10.0) <> 9.765625e-4 or
        floatExpr(2.0) ** floatExpr(   -5.0) <> 3.125e-2 or
        floatExpr(2.0) ** floatExpr(   -2.0) <> 0.25 or
        floatExpr(2.0) ** floatExpr(   -1.0) <> 0.5 or
        floatExpr(2.0) ** floatExpr(    0.0) <> 1.0 or
        floatExpr(2.0) ** floatExpr(    1.0) <> 2.0 or
        floatExpr(2.0) ** floatExpr(    2.0) <> 4.0 or
        floatExpr(2.0) ** floatExpr(    5.0) <> 3.2e1 or
        floatExpr(2.0) ** floatExpr(   10.0) <> 1.024e3 or
        floatExpr(2.0) ** floatExpr(   20.0) <> 1.048576e6 or
        floatExpr(2.0) ** floatExpr(   50.0) <> 1.125899906842624e15 or
        floatExpr(2.0) ** floatExpr(  100.0) <> 1.267650600228229401496703205376e30 or
        floatExpr(2.0) ** floatExpr(  200.0) <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
        floatExpr(2.0) ** floatExpr(  500.0) <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
        floatExpr(2.0) ** floatExpr( 1000.0) <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        floatExpr(2.0) ** floatExpr(      2147483647.0) <> Infinity or
        floatExpr(2.0) ** floatExpr(      2147483648.0) <> Infinity or
        floatExpr(2.0) ** floatExpr(9007199254740991.0) <> Infinity or
        floatExpr(2.0) ** floatExpr(9007199254740992.0) <> Infinity or
        floatExpr(2.0) ** floatExpr(9007199254740993.0) <> Infinity or
        floatExpr(2.0) ** floatExpr(9007199254740994.0) <> Infinity or
        floatExpr(2.0) ** floatExpr(          Infinity) <> Infinity then
      writeln(" ***** 2.0 ** B does not work correct.");
      okay := FALSE;
    end if;

    if            E  **          (-Infinity) <>      0.0 or
                  E  **                 0.0  <>      1.0 or
                  E  **            Infinity  <> Infinity or
        floatExpr(E) **          (-Infinity) <>      0.0 or
        floatExpr(E) **                 0.0  <>      1.0 or
        floatExpr(E) **            Infinity  <> Infinity or
                  E  ** floatExpr(-Infinity) <>      0.0 or
                  E  ** floatExpr(      0.0) <>      1.0 or
                  E  ** floatExpr( Infinity) <> Infinity or
        floatExpr(E) ** floatExpr(-Infinity) <>      0.0 or
        floatExpr(E) ** floatExpr(      0.0) <>      1.0 or
        floatExpr(E) ** floatExpr( Infinity) <> Infinity then
      writeln(" ***** E ** B does not work correct.");
      okay := FALSE;
    end if;

    if            10.0  **          (-Infinity) <>      0.0 or
                  10.0  **                 0.0  <>      1.0 or
                  10.0  **            Infinity  <> Infinity or
        floatExpr(10.0) **          (-Infinity) <>      0.0 or
        floatExpr(10.0) **                 0.0  <>      1.0 or
        floatExpr(10.0) **            Infinity  <> Infinity or
                  10.0  ** floatExpr(-Infinity) <>      0.0 or
                  10.0  ** floatExpr(      0.0) <>      1.0 or
                  10.0  ** floatExpr( Infinity) <> Infinity or
        floatExpr(10.0) ** floatExpr(-Infinity) <>      0.0 or
        floatExpr(10.0) ** floatExpr(      0.0) <>      1.0 or
        floatExpr(10.0) ** floatExpr( Infinity) <> Infinity then
      writeln(" ***** 10.0 ** B does not work correct.");
      okay := FALSE;
    end if;

    if  not isNaN(NaN ** (          -Infinity)) or
        not isNaN(NaN ** (-9007199254740994.0)) or # Not exactly represented
        not isNaN(NaN ** (-9007199254740993.0)) or # Not exactly represented
        not isNaN(NaN ** (-9007199254740992.0)) or
        not isNaN(NaN ** (-9007199254740991.0)) or
        not isNaN(NaN **       (-4294967297.0)) or
        not isNaN(NaN **       (-4294967296.0)) or
        not isNaN(NaN **       (-4294967295.0)) or
        not isNaN(NaN **       (-2147483649.0)) or
        not isNaN(NaN **       (-2147483648.0)) or
        not isNaN(NaN **       (-2147483647.0)) or
        not isNaN(NaN **                (-3.0)) or
        not isNaN(NaN **                (-2.5)) or
        not isNaN(NaN **                (-2.0)) or
        not isNaN(NaN **                (-1.5)) or
        not isNaN(NaN **                (-1.0)) or
        not isNaN(NaN **                (-0.5)) or
        not isNaN(NaN **                  0.5 ) or
        not isNaN(NaN **                  1.0 ) or
        not isNaN(NaN **                  1.5 ) or
        not isNaN(NaN **                  2.0 ) or
        not isNaN(NaN **                  2.5 ) or
        not isNaN(NaN **                  3.0 ) or
        not isNaN(NaN **         2147483647.0 ) or
        not isNaN(NaN **         2147483648.0 ) or
        not isNaN(NaN **         2147483649.0 ) or
        not isNaN(NaN **         4294967295.0 ) or
        not isNaN(NaN **         4294967296.0 ) or
        not isNaN(NaN **         4294967297.0 ) or
        not isNaN(NaN **   9007199254740991.0 ) or
        not isNaN(NaN **   9007199254740992.0 ) or
        not isNaN(NaN **   9007199254740993.0 ) or # Not exactly represented
        not isNaN(NaN **   9007199254740994.0 ) or # Not exactly represented
        not isNaN(NaN **             Infinity ) or
        not isNaN(floatExpr(NaN) ** (          -Infinity)) or
        not isNaN(floatExpr(NaN) ** (-9007199254740994.0)) or # Not exactly represented
        not isNaN(floatExpr(NaN) ** (-9007199254740993.0)) or # Not exactly represented
        not isNaN(floatExpr(NaN) ** (-9007199254740992.0)) or
        not isNaN(floatExpr(NaN) ** (-9007199254740991.0)) or
        not isNaN(floatExpr(NaN) **       (-4294967297.0)) or
        not isNaN(floatExpr(NaN) **       (-4294967296.0)) or
        not isNaN(floatExpr(NaN) **       (-4294967295.0)) or
        not isNaN(floatExpr(NaN) **       (-2147483649.0)) or
        not isNaN(floatExpr(NaN) **       (-2147483648.0)) or
        not isNaN(floatExpr(NaN) **       (-2147483647.0)) or
        not isNaN(floatExpr(NaN) **                (-3.0)) or
        not isNaN(floatExpr(NaN) **                (-2.5)) or
        not isNaN(floatExpr(NaN) **                (-2.0)) or
        not isNaN(floatExpr(NaN) **                (-1.5)) or
        not isNaN(floatExpr(NaN) **                (-1.0)) or
        not isNaN(floatExpr(NaN) **                (-0.5)) or
        not isNaN(floatExpr(NaN) **                  0.5 ) or
        not isNaN(floatExpr(NaN) **                  1.0 ) or
        not isNaN(floatExpr(NaN) **                  1.5 ) or
        not isNaN(floatExpr(NaN) **                  2.0 ) or
        not isNaN(floatExpr(NaN) **                  2.5 ) or
        not isNaN(floatExpr(NaN) **                  3.0 ) or
        not isNaN(floatExpr(NaN) **         2147483647.0 ) or
        not isNaN(floatExpr(NaN) **         2147483648.0 ) or
        not isNaN(floatExpr(NaN) **         2147483649.0 ) or
        not isNaN(floatExpr(NaN) **         4294967295.0 ) or
        not isNaN(floatExpr(NaN) **         4294967296.0 ) or
        not isNaN(floatExpr(NaN) **         4294967297.0 ) or
        not isNaN(floatExpr(NaN) **   9007199254740991.0 ) or
        not isNaN(floatExpr(NaN) **   9007199254740992.0 ) or
        not isNaN(floatExpr(NaN) **   9007199254740993.0 ) or # Not exactly represented
        not isNaN(floatExpr(NaN) **   9007199254740994.0 ) or # Not exactly represented
        not isNaN(floatExpr(NaN) **             Infinity ) or
        not isNaN(NaN ** floatExpr(          -Infinity)) or
        not isNaN(NaN ** floatExpr(-9007199254740994.0)) or # Not exactly represented
        not isNaN(NaN ** floatExpr(-9007199254740993.0)) or # Not exactly represented
        not isNaN(NaN ** floatExpr(-9007199254740992.0)) or
        not isNaN(NaN ** floatExpr(-9007199254740991.0)) or
        not isNaN(NaN ** floatExpr(      -4294967297.0)) or
        not isNaN(NaN ** floatExpr(      -4294967296.0)) or
        not isNaN(NaN ** floatExpr(      -4294967295.0)) or
        not isNaN(NaN ** floatExpr(      -2147483649.0)) or
        not isNaN(NaN ** floatExpr(      -2147483648.0)) or
        not isNaN(NaN ** floatExpr(      -2147483647.0)) or
        not isNaN(NaN ** floatExpr(               -3.0)) or
        not isNaN(NaN ** floatExpr(               -2.5)) or
        not isNaN(NaN ** floatExpr(               -2.0)) or
        not isNaN(NaN ** floatExpr(               -1.5)) or
        not isNaN(NaN ** floatExpr(               -1.0)) or
        not isNaN(NaN ** floatExpr(               -0.5)) or
        not isNaN(NaN ** floatExpr(                0.5)) or
        not isNaN(NaN ** floatExpr(                1.0)) or
        not isNaN(NaN ** floatExpr(                1.5)) or
        not isNaN(NaN ** floatExpr(                2.0)) or
        not isNaN(NaN ** floatExpr(                2.5)) or
        not isNaN(NaN ** floatExpr(                3.0)) or
        not isNaN(NaN ** floatExpr(       2147483647.0)) or
        not isNaN(NaN ** floatExpr(       2147483648.0)) or
        not isNaN(NaN ** floatExpr(       2147483649.0)) or
        not isNaN(NaN ** floatExpr(       4294967295.0)) or
        not isNaN(NaN ** floatExpr(       4294967296.0)) or
        not isNaN(NaN ** floatExpr(       4294967297.0)) or
        not isNaN(NaN ** floatExpr( 9007199254740991.0)) or
        not isNaN(NaN ** floatExpr( 9007199254740992.0)) or
        not isNaN(NaN ** floatExpr( 9007199254740993.0)) or # Not exactly represented
        not isNaN(NaN ** floatExpr( 9007199254740994.0)) or # Not exactly represented
        not isNaN(NaN ** floatExpr(           Infinity)) or
        not isNaN(floatExpr(NaN) ** floatExpr(          -Infinity)) or
        not isNaN(floatExpr(NaN) ** floatExpr(-9007199254740994.0)) or # Not exactly represented
        not isNaN(floatExpr(NaN) ** floatExpr(-9007199254740993.0)) or # Not exactly represented
        not isNaN(floatExpr(NaN) ** floatExpr(-9007199254740992.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(-9007199254740991.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(      -4294967297.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(      -4294967296.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(      -4294967295.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(      -2147483649.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(      -2147483648.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(      -2147483647.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(               -3.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(               -2.5)) or
        not isNaN(floatExpr(NaN) ** floatExpr(               -2.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(               -1.5)) or
        not isNaN(floatExpr(NaN) ** floatExpr(               -1.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(               -0.5)) or
        not isNaN(floatExpr(NaN) ** floatExpr(                0.5)) or
        not isNaN(floatExpr(NaN) ** floatExpr(                1.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(                1.5)) or
        not isNaN(floatExpr(NaN) ** floatExpr(                2.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(                2.5)) or
        not isNaN(floatExpr(NaN) ** floatExpr(                3.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(       2147483647.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(       2147483648.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(       2147483649.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(       4294967295.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(       4294967296.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr(       4294967297.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr( 9007199254740991.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr( 9007199254740992.0)) or
        not isNaN(floatExpr(NaN) ** floatExpr( 9007199254740993.0)) or # Not exactly represented
        not isNaN(floatExpr(NaN) ** floatExpr( 9007199254740994.0)) or # Not exactly represented
        not isNaN(floatExpr(NaN) ** floatExpr(           Infinity)) then
      writeln(" ***** NaN ** B for B <> 0.0 does not return NaN.");
      okay := FALSE;
    end if;

    if  not isNaN( 2.0 ** NaN) or
        not isNaN(10.0 ** NaN) or
        not isNaN(   E ** NaN) or
        not isNaN(floatExpr( 2.0) ** NaN) or
        not isNaN(floatExpr(10.0) ** NaN) or
        not isNaN(floatExpr(   E) ** NaN) or
        not isNaN( 2.0 ** floatExpr(NaN)) or
        not isNaN(10.0 ** floatExpr(NaN)) or
        not isNaN(   E ** floatExpr(NaN)) or
        not isNaN(floatExpr( 2.0) ** floatExpr(NaN)) or
        not isNaN(floatExpr(10.0) ** floatExpr(NaN)) or
        not isNaN(floatExpr(   E) ** floatExpr(NaN)) then
      writeln(" ***** A ** NaN for A <> 1.0 does not return NaN.");
      okay := FALSE;
    end if;

    if            NaN  **          (-0.0) <> 1.0 or
                  NaN  **            0.0  <> 1.0 or
        floatExpr(NaN) **          (-0.0) <> 1.0 or
        floatExpr(NaN) **            0.0  <> 1.0 or
                  NaN  ** floatExpr(-0.0) <> 1.0 or
                  NaN  ** floatExpr( 0.0) <> 1.0 or
        floatExpr(NaN) ** floatExpr(-0.0) <> 1.0 or
        floatExpr(NaN) ** floatExpr( 0.0) <> 1.0 then
      writeln(" ***** NaN ** 0.0 does not return 1.0.");
      okay := FALSE;
    end if;

    if            1.0  **           NaN  <> 1.0 or
        floatExpr(1.0) **           NaN  <> 1.0 or
                  1.0  ** floatExpr(NaN) <> 1.0 or
        floatExpr(1.0) ** floatExpr(NaN) <> 1.0 then
      writeln(" ***** 1.0 ** NaN does not return 1.0.");
      okay := FALSE;
    end if;

    if okay 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
  local
    var boolean: okay is TRUE;
  begin
    if  (-2.0) ** (-2) <>  0.25 or
        (-2.0) ** (-1) <> -0.5  or
        (-2.0) **   0  <>  1.0  or
        (-2.0) **   1  <> -2.0  or
        (-2.0) **   2  <>  4.0  or
        #(-1.5) ** (-2) <> 0.444444 or
        #(-1.5) ** (-1) <> -0.666667 or
        (-1.5) **   0  <>  1.0  or
        (-1.5) **   1  <> -1.5  or
        (-1.5) **   2  <>  2.25 or
        (-0.5) ** (-2) <>  4.0  or
        (-0.5) ** (-1) <> -2.0  or
        (-0.5) **   0  <>  1.0  or
        (-0.5) **   1  <> -0.5  or
        (-0.5) **   2  <>  0.25 or
          0.5  ** (-2) <>  4.0  or
          0.5  ** (-1) <>  2.0  or
          0.5  **   0  <>  1.0  or
          0.5  **   1  <>  0.5  or
          0.5  **   2  <>  0.25 or
         #1.5  ** (-2) <>  0.444444 or
         #1.5  ** (-1) <>  0.666667 or
          1.5  **   0  <>  1.0  or
          1.5  **   1  <>  1.5  or
          1.5  **   2  <>  2.25 or
        (-1.1) ** integer.first <> 0.0 or
        (-0.9) ** integer.first <> Infinity or
          0.9  ** integer.first <> Infinity or
          1.1  ** integer.first <> 0.0 or
        floatExpr(-2.0) ** (-2) <>  0.25 or
        floatExpr(-2.0) ** (-1) <> -0.5  or
        floatExpr(-2.0) **   0  <>  1.0  or
        floatExpr(-2.0) **   1  <> -2.0  or
        floatExpr(-2.0) **   2  <>  4.0  or
        #floatExpr(-1.5) ** (-2) <> 0.444444 or
        #floatExpr(-1.5) ** (-1) <> -0.666667 or
        floatExpr(-1.5) **   0  <>  1.0  or
        floatExpr(-1.5) **   1  <> -1.5  or
        floatExpr(-1.5) **   2  <>  2.25 or
        floatExpr(-0.5) ** (-2) <>  4.0  or
        floatExpr(-0.5) ** (-1) <> -2.0  or
        floatExpr(-0.5) **   0  <>  1.0  or
        floatExpr(-0.5) **   1  <> -0.5  or
        floatExpr(-0.5) **   2  <>  0.25 or
        floatExpr( 0.5) ** (-2) <>  4.0  or
        floatExpr( 0.5) ** (-1) <>  2.0  or
        floatExpr( 0.5) **   0  <>  1.0  or
        floatExpr( 0.5) **   1  <>  0.5  or
        floatExpr( 0.5) **   2  <>  0.25 or
        #floatExpr( 1.5) ** (-2) <>  0.444444 or
        #floatExpr( 1.5) ** (-1) <>  0.666667 or
        floatExpr( 1.5) **   0  <>  1.0  or
        floatExpr( 1.5) **   1  <>  1.5  or
        floatExpr( 1.5) **   2  <>  2.25 or
        floatExpr(-1.1) ** integer.first <> 0.0 or
        floatExpr(-0.9) ** integer.first <> Infinity or
        floatExpr( 0.9) ** integer.first <> Infinity or
        floatExpr( 1.1) ** integer.first <> 0.0 or
        (-2.0) ** intExpr(-2) <>  0.25 or
        (-2.0) ** intExpr(-1) <> -0.5  or
        (-2.0) ** intExpr( 0) <>  1.0  or
        (-2.0) ** intExpr( 1) <> -2.0  or
        (-2.0) ** intExpr( 2) <>  4.0  or
        #(-1.5) ** intExpr(-2) <> 0.444444 or
        #(-1.5) ** intExpr(-1) <> -0.666667 or
        (-1.5) ** intExpr( 0) <>  1.0  or
        (-1.5) ** intExpr( 1) <> -1.5  or
        (-1.5) ** intExpr( 2) <>  2.25 or
        (-0.5) ** intExpr(-2) <>  4.0  or
        (-0.5) ** intExpr(-1) <> -2.0  or
        (-0.5) ** intExpr( 0) <>  1.0  or
        (-0.5) ** intExpr( 1) <> -0.5  or
        (-0.5) ** intExpr( 2) <>  0.25 or
          0.5  ** intExpr(-2) <>  4.0  or
          0.5  ** intExpr(-1) <>  2.0  or
          0.5  ** intExpr( 0) <>  1.0  or
          0.5  ** intExpr( 1) <>  0.5  or
          0.5  ** intExpr( 2) <>  0.25 or
         #1.5  ** intExpr(-2) <>  0.444444 or
         #1.5  ** intExpr(-1) <>  0.666667 or
          1.5  ** intExpr( 0) <>  1.0  or
          1.5  ** intExpr( 1) <>  1.5  or
          1.5  ** intExpr( 2) <>  2.25 or
        (-1.1) ** intExpr(integer.first) <> 0.0 or
        (-0.9) ** intExpr(integer.first) <> Infinity or
          0.9  ** intExpr(integer.first) <> Infinity or
          1.1  ** intExpr(integer.first) <> 0.0 or
        floatExpr(-2.0) ** intExpr(-2) <>  0.25 or
        floatExpr(-2.0) ** intExpr(-1) <> -0.5  or
        floatExpr(-2.0) ** intExpr( 0) <>  1.0  or
        floatExpr(-2.0) ** intExpr( 1) <> -2.0  or
        floatExpr(-2.0) ** intExpr( 2) <>  4.0  or
        #floatExpr(-1.5) ** intExpr(-2) <> 0.444444 or
        #floatExpr(-1.5) ** intExpr(-1) <> -0.666667 or
        floatExpr(-1.5) ** intExpr( 0) <>  1.0  or
        floatExpr(-1.5) ** intExpr( 1) <> -1.5  or
        floatExpr(-1.5) ** intExpr( 2) <>  2.25 or
        floatExpr(-0.5) ** intExpr(-2) <>  4.0  or
        floatExpr(-0.5) ** intExpr(-1) <> -2.0  or
        floatExpr(-0.5) ** intExpr( 0) <>  1.0  or
        floatExpr(-0.5) ** intExpr( 1) <> -0.5  or
        floatExpr(-0.5) ** intExpr( 2) <>  0.25 or
        floatExpr( 0.5) ** intExpr(-2) <>  4.0  or
        floatExpr( 0.5) ** intExpr(-1) <>  2.0  or
        floatExpr( 0.5) ** intExpr( 0) <>  1.0  or
        floatExpr( 0.5) ** intExpr( 1) <>  0.5  or
        floatExpr( 0.5) ** intExpr( 2) <>  0.25 or
        #floatExpr( 1.5) ** intExpr(-2) <>  0.444444 or
        #floatExpr( 1.5) ** intExpr(-1) <>  0.666667 or
        floatExpr( 1.5) ** intExpr( 0) <>  1.0  or
        floatExpr( 1.5) ** intExpr( 1) <>  1.5  or
        floatExpr( 1.5) ** intExpr( 2) <>  2.25 or
        floatExpr(-1.1) ** intExpr(integer.first) <> 0.0 or
        floatExpr(-0.9) ** intExpr(integer.first) <> Infinity or
        floatExpr( 0.9) ** intExpr(integer.first) <> Infinity or
        floatExpr( 1.1) ** intExpr(integer.first) <> 0.0 then
      writeln(" ***** A ** B with integer B does not work correct for selected values.");
      okay := FALSE;
    end if;

    if  (-2.0) **      integer.first  <> 0.0 or
        (-2.0) ** (-9007199254740993) <> 0.0 or
        (-2.0) ** (-9007199254740992) <> 0.0 or
        (-2.0) **       (-2147483649) <> 0.0 or
        (-2.0) **       (-2147483648) <> 0.0 or
        (-2.0) ** (-1000) <>  9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        (-2.0) ** ( -777) <> -1.2580368690619400992630930670642290049228151004764953780943507245961510227088530391346965409619581274622438598009470989592763178178106372216104950371976994872158846753107043068125962477943865430246765239659515132500679733253773573442968156387862374544517729158500345225740840261937808914008531993591772366677435357882365926301734357710322786821188184892761835546430141790729736468138408856571932694214448299272577968593520269378135768742338158247517956391472854386669993697244754908216006714126797830970508340620028775447281077504158020019531250000000e-234 or
        (-2.0) ** ( -500) <>  3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
        (-2.0) ** ( -333) <> -5.714936956411374911078917741526704797259549974113993306075629216138163179533690978377240109300860148245915271766870141161102706811419593755630211467050206209827570086880426305042279198514760130828138429137652565259486436843872070312500000000e-101 or
        (-2.0) ** ( -150) <>  7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625e-46 or
        (-2.0) ** ( -100) <>  7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        (-2.0) ** (  -50) <>  8.8817841970012523233890533447265625e-16 or
        (-2.0) ** (  -25) <> -2.98023223876953125e-8 or
        (-2.0) ** (  -10) <>  9.765625e-4 or
        (-2.0) ** (   -5) <> -3.125e-2 or
        (-2.0) ** (   -2) <>  0.25 or
        (-2.0) ** (   -1) <> -0.5 or
        (-2.0) **      0  <>  1.0 or
        (-2.0) **      1  <> -2.0 or
        (-2.0) **      2  <>  4.0 or
        (-2.0) **      5  <> -3.2e1 or
        (-2.0) **     10  <>  1.024e3 or
        (-2.0) **     25  <> -3.3554432e+7 or
        (-2.0) **     50  <>  1.125899906842624e15 or
        (-2.0) **    100  <>  1.267650600228229401496703205376e30 or
        (-2.0) **    150  <>  1.427247692705959881058285969449495136382746624e+45 or
        (-2.0) **    333  <> -1.74980057982640953949800178169409709228253554471456994914061648512796239935950073857881054161844305920000000000e+100 or
        (-2.0) **    500  <>  3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
        (-2.0) **    777  <> -7.948892632579629747962774980928013082915256407637486649031946434693380877754249658014097453202669967106497181169311094815598489825867849684194750848210847432726809477226751516417358262433784037505346555871828320004571375891538216222720000000e+233 or
        (-2.0) **   1000  <>  1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        (-2.0) **       2147483647 <> -Infinity or
        (-2.0) **       2147483648 <>  Infinity or
        (-2.0) ** 9007199254740992 <>  Infinity or
        (-2.0) ** 9007199254740993 <> -Infinity or
        (-2.0) **     integer.last <> -Infinity or
        floatExpr(-2.0) **      integer.first  <> 0.0 or
        floatExpr(-2.0) ** (-9007199254740993) <> 0.0 or
        floatExpr(-2.0) ** (-9007199254740992) <> 0.0 or
        floatExpr(-2.0) **       (-2147483649) <> 0.0 or
        floatExpr(-2.0) **       (-2147483648) <> 0.0 or
        floatExpr(-2.0) ** (-1000) <>  9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        floatExpr(-2.0) ** ( -777) <> -1.2580368690619400992630930670642290049228151004764953780943507245961510227088530391346965409619581274622438598009470989592763178178106372216104950371976994872158846753107043068125962477943865430246765239659515132500679733253773573442968156387862374544517729158500345225740840261937808914008531993591772366677435357882365926301734357710322786821188184892761835546430141790729736468138408856571932694214448299272577968593520269378135768742338158247517956391472854386669993697244754908216006714126797830970508340620028775447281077504158020019531250000000e-234 or
        floatExpr(-2.0) ** ( -500) <>  3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
        floatExpr(-2.0) ** ( -333) <> -5.714936956411374911078917741526704797259549974113993306075629216138163179533690978377240109300860148245915271766870141161102706811419593755630211467050206209827570086880426305042279198514760130828138429137652565259486436843872070312500000000e-101 or
        floatExpr(-2.0) ** ( -150) <>  7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625e-46 or
        floatExpr(-2.0) ** ( -100) <>  7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        floatExpr(-2.0) ** (  -50) <>  8.8817841970012523233890533447265625e-16 or
        floatExpr(-2.0) ** (  -25) <> -2.98023223876953125e-8 or
        floatExpr(-2.0) ** (  -10) <>  9.765625e-4 or
        floatExpr(-2.0) ** (   -5) <> -3.125e-2 or
        floatExpr(-2.0) ** (   -2) <>  0.25 or
        floatExpr(-2.0) ** (   -1) <> -0.5 or
        floatExpr(-2.0) **      0  <>  1.0 or
        floatExpr(-2.0) **      1  <> -2.0 or
        floatExpr(-2.0) **      2  <>  4.0 or
        floatExpr(-2.0) **      5  <> -3.2e1 or
        floatExpr(-2.0) **     10  <>  1.024e3 or
        floatExpr(-2.0) **     25  <> -3.3554432e+7 or
        floatExpr(-2.0) **     50  <>  1.125899906842624e15 or
        floatExpr(-2.0) **    100  <>  1.267650600228229401496703205376e30 or
        floatExpr(-2.0) **    150  <>  1.427247692705959881058285969449495136382746624e+45 or
        floatExpr(-2.0) **    333  <> -1.74980057982640953949800178169409709228253554471456994914061648512796239935950073857881054161844305920000000000e+100 or
        floatExpr(-2.0) **    500  <>  3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
        floatExpr(-2.0) **    777  <> -7.948892632579629747962774980928013082915256407637486649031946434693380877754249658014097453202669967106497181169311094815598489825867849684194750848210847432726809477226751516417358262433784037505346555871828320004571375891538216222720000000e+233 or
        floatExpr(-2.0) **   1000  <>  1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        floatExpr(-2.0) **       2147483647 <> -Infinity or
        floatExpr(-2.0) **       2147483648 <>  Infinity or
        floatExpr(-2.0) ** 9007199254740992 <>  Infinity or
        floatExpr(-2.0) ** 9007199254740993 <> -Infinity or
        floatExpr(-2.0) **     integer.last <> -Infinity or
        (-2.0) ** intExpr(    integer.first) <> 0.0 or
        (-2.0) ** intExpr(-9007199254740993) <> 0.0 or
        (-2.0) ** intExpr(-9007199254740992) <> 0.0 or
        (-2.0) ** intExpr(      -2147483649) <> 0.0 or
        (-2.0) ** intExpr(      -2147483648) <> 0.0 or
        (-2.0) ** intExpr(-1000) <>  9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        (-2.0) ** intExpr( -777) <> -1.2580368690619400992630930670642290049228151004764953780943507245961510227088530391346965409619581274622438598009470989592763178178106372216104950371976994872158846753107043068125962477943865430246765239659515132500679733253773573442968156387862374544517729158500345225740840261937808914008531993591772366677435357882365926301734357710322786821188184892761835546430141790729736468138408856571932694214448299272577968593520269378135768742338158247517956391472854386669993697244754908216006714126797830970508340620028775447281077504158020019531250000000e-234 or
        (-2.0) ** intExpr( -500) <>  3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
        (-2.0) ** intExpr( -333) <> -5.714936956411374911078917741526704797259549974113993306075629216138163179533690978377240109300860148245915271766870141161102706811419593755630211467050206209827570086880426305042279198514760130828138429137652565259486436843872070312500000000e-101 or
        (-2.0) ** intExpr( -150) <>  7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625e-46 or
        (-2.0) ** intExpr( -100) <>  7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        (-2.0) ** intExpr(  -50) <>  8.8817841970012523233890533447265625e-16 or
        (-2.0) ** intExpr(  -25) <> -2.98023223876953125e-8 or
        (-2.0) ** intExpr(  -10) <>  9.765625e-4 or
        (-2.0) ** intExpr(   -5) <> -3.125e-2 or
        (-2.0) ** intExpr(   -2) <>  0.25 or
        (-2.0) ** intExpr(   -1) <> -0.5 or
        (-2.0) ** intExpr(    0) <>  1.0 or
        (-2.0) ** intExpr(    1) <> -2.0 or
        (-2.0) ** intExpr(    2) <>  4.0 or
        (-2.0) ** intExpr(    5) <> -3.2e1 or
        (-2.0) ** intExpr(   10) <>  1.024e3 or
        (-2.0) ** intExpr(   25) <> -3.3554432e+7 or
        (-2.0) ** intExpr(   50) <>  1.125899906842624e15 or
        (-2.0) ** intExpr(  100) <>  1.267650600228229401496703205376e30 or
        (-2.0) ** intExpr(  150) <>  1.427247692705959881058285969449495136382746624e+45 or
        (-2.0) ** intExpr(  333) <> -1.74980057982640953949800178169409709228253554471456994914061648512796239935950073857881054161844305920000000000e+100 or
        (-2.0) ** intExpr(  500) <>  3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
        (-2.0) ** intExpr(  777) <> -7.948892632579629747962774980928013082915256407637486649031946434693380877754249658014097453202669967106497181169311094815598489825867849684194750848210847432726809477226751516417358262433784037505346555871828320004571375891538216222720000000e+233 or
        (-2.0) ** intExpr( 1000) <>  1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        (-2.0) ** intExpr(       2147483647) <> -Infinity or
        (-2.0) ** intExpr(       2147483648) <>  Infinity or
        (-2.0) ** intExpr( 9007199254740992) <>  Infinity or
        (-2.0) ** intExpr( 9007199254740993) <> -Infinity or
        (-2.0) ** intExpr(     integer.last) <> -Infinity or
        floatExpr(-2.0) ** intExpr(    integer.first) <> 0.0 or
        floatExpr(-2.0) ** intExpr(-9007199254740993) <> 0.0 or
        floatExpr(-2.0) ** intExpr(-9007199254740992) <> 0.0 or
        floatExpr(-2.0) ** intExpr(      -2147483649) <> 0.0 or
        floatExpr(-2.0) ** intExpr(      -2147483648) <> 0.0 or
        floatExpr(-2.0) ** intExpr(-1000) <>  9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        floatExpr(-2.0) ** intExpr( -777) <> -1.2580368690619400992630930670642290049228151004764953780943507245961510227088530391346965409619581274622438598009470989592763178178106372216104950371976994872158846753107043068125962477943865430246765239659515132500679733253773573442968156387862374544517729158500345225740840261937808914008531993591772366677435357882365926301734357710322786821188184892761835546430141790729736468138408856571932694214448299272577968593520269378135768742338158247517956391472854386669993697244754908216006714126797830970508340620028775447281077504158020019531250000000e-234 or
        floatExpr(-2.0) ** intExpr( -500) <>  3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
        floatExpr(-2.0) ** intExpr( -333) <> -5.714936956411374911078917741526704797259549974113993306075629216138163179533690978377240109300860148245915271766870141161102706811419593755630211467050206209827570086880426305042279198514760130828138429137652565259486436843872070312500000000e-101 or
        floatExpr(-2.0) ** intExpr( -150) <>  7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625e-46 or
        floatExpr(-2.0) ** intExpr( -100) <>  7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        floatExpr(-2.0) ** intExpr(  -50) <>  8.8817841970012523233890533447265625e-16 or
        floatExpr(-2.0) ** intExpr(  -25) <> -2.98023223876953125e-8 or
        floatExpr(-2.0) ** intExpr(  -10) <>  9.765625e-4 or
        floatExpr(-2.0) ** intExpr(   -5) <> -3.125e-2 or
        floatExpr(-2.0) ** intExpr(   -2) <>  0.25 or
        floatExpr(-2.0) ** intExpr(   -1) <> -0.5 or
        floatExpr(-2.0) ** intExpr(    0) <>  1.0 or
        floatExpr(-2.0) ** intExpr(    1) <> -2.0 or
        floatExpr(-2.0) ** intExpr(    2) <>  4.0 or
        floatExpr(-2.0) ** intExpr(    5) <> -3.2e1 or
        floatExpr(-2.0) ** intExpr(   10) <>  1.024e3 or
        floatExpr(-2.0) ** intExpr(   25) <> -3.3554432e+7 or
        floatExpr(-2.0) ** intExpr(   50) <>  1.125899906842624e15 or
        floatExpr(-2.0) ** intExpr(  100) <>  1.267650600228229401496703205376e30 or
        floatExpr(-2.0) ** intExpr(  150) <>  1.427247692705959881058285969449495136382746624e+45 or
        floatExpr(-2.0) ** intExpr(  333) <> -1.74980057982640953949800178169409709228253554471456994914061648512796239935950073857881054161844305920000000000e+100 or
        floatExpr(-2.0) ** intExpr(  500) <>  3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
        floatExpr(-2.0) ** intExpr(  777) <> -7.948892632579629747962774980928013082915256407637486649031946434693380877754249658014097453202669967106497181169311094815598489825867849684194750848210847432726809477226751516417358262433784037505346555871828320004571375891538216222720000000e+233 or
        floatExpr(-2.0) ** intExpr( 1000) <>  1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        floatExpr(-2.0) ** intExpr(       2147483647) <> -Infinity or
        floatExpr(-2.0) ** intExpr(       2147483648) <>  Infinity or
        floatExpr(-2.0) ** intExpr( 9007199254740992) <>  Infinity or
        floatExpr(-2.0) ** intExpr( 9007199254740993) <> -Infinity or
        floatExpr(-2.0) ** intExpr(     integer.last) <> -Infinity then
      writeln(" ***** (-2.0) ** B with integer B does not work correct.");
      okay := FALSE;
    end if;

    if  (-1.0) **      integer.first  <>  1.0 or
        (-1.0) ** (-9007199254740993) <> -1.0 or
        (-1.0) ** (-9007199254740992) <>  1.0 or
        (-1.0) **       (-2147483649) <> -1.0 or
        (-1.0) **       (-2147483648) <>  1.0 or
        (-1.0) **                (-2) <>  1.0 or
        (-1.0) **                (-1) <> -1.0 or
        (-1.0) **                  0  <>  1.0 or
        (-1.0) **                  1  <> -1.0 or
        (-1.0) **                  2  <>  1.0 or
        (-1.0) **         2147483647  <> -1.0 or
        (-1.0) **         2147483648  <>  1.0 or
        (-1.0) **   9007199254740992  <>  1.0 or
        (-1.0) **   9007199254740993  <> -1.0 or
        (-1.0) **       integer.last  <> -1.0 or
        floatExpr(-1.0) **      integer.first  <>  1.0 or
        floatExpr(-1.0) ** (-9007199254740993) <> -1.0 or
        floatExpr(-1.0) ** (-9007199254740992) <>  1.0 or
        floatExpr(-1.0) **       (-2147483649) <> -1.0 or
        floatExpr(-1.0) **       (-2147483648) <>  1.0 or
        floatExpr(-1.0) **                (-2) <>  1.0 or
        floatExpr(-1.0) **                (-1) <> -1.0 or
        floatExpr(-1.0) **                  0  <>  1.0 or
        floatExpr(-1.0) **                  1  <> -1.0 or
        floatExpr(-1.0) **                  2  <>  1.0 or
        floatExpr(-1.0) **         2147483647  <> -1.0 or
        floatExpr(-1.0) **         2147483648  <>  1.0 or
        floatExpr(-1.0) **   9007199254740992  <>  1.0 or
        floatExpr(-1.0) **   9007199254740993  <> -1.0 or
        floatExpr(-1.0) **       integer.last  <> -1.0 or
        (-1.0) ** intExpr(    integer.first) <>  1.0 or
        (-1.0) ** intExpr(-9007199254740993) <> -1.0 or
        (-1.0) ** intExpr(-9007199254740992) <>  1.0 or
        (-1.0) ** intExpr(      -2147483649) <> -1.0 or
        (-1.0) ** intExpr(      -2147483648) <>  1.0 or
        (-1.0) ** intExpr(               -2) <>  1.0 or
        (-1.0) ** intExpr(               -1) <> -1.0 or
        (-1.0) ** intExpr(                0) <>  1.0 or
        (-1.0) ** intExpr(                1) <> -1.0 or
        (-1.0) ** intExpr(                2) <>  1.0 or
        (-1.0) ** intExpr(       2147483647) <> -1.0 or
        (-1.0) ** intExpr(       2147483648) <>  1.0 or
        (-1.0) ** intExpr( 9007199254740992) <>  1.0 or
        (-1.0) ** intExpr( 9007199254740993) <> -1.0 or
        (-1.0) ** intExpr(     integer.last) <> -1.0 or
        floatExpr(-1.0) ** intExpr(    integer.first) <>  1.0 or
        floatExpr(-1.0) ** intExpr(-9007199254740993) <> -1.0 or
        floatExpr(-1.0) ** intExpr(-9007199254740992) <>  1.0 or
        floatExpr(-1.0) ** intExpr(      -2147483649) <> -1.0 or
        floatExpr(-1.0) ** intExpr(      -2147483648) <>  1.0 or
        floatExpr(-1.0) ** intExpr(               -2) <>  1.0 or
        floatExpr(-1.0) ** intExpr(               -1) <> -1.0 or
        floatExpr(-1.0) ** intExpr(                0) <>  1.0 or
        floatExpr(-1.0) ** intExpr(                1) <> -1.0 or
        floatExpr(-1.0) ** intExpr(                2) <>  1.0 or
        floatExpr(-1.0) ** intExpr(       2147483647) <> -1.0 or
        floatExpr(-1.0) ** intExpr(       2147483648) <>  1.0 or
        floatExpr(-1.0) ** intExpr( 9007199254740992) <>  1.0 or
        floatExpr(-1.0) ** intExpr( 9007199254740993) <> -1.0 or
        floatExpr(-1.0) ** intExpr(     integer.last) <> -1.0 then
      writeln(" ***** (-1.0) ** B with integer B does not return 1.0 respectively -1.0.");
      okay := FALSE;
    end if;

    if  (-0.0) **      integer.first  <>  Infinity or
        (-0.0) ** (-9007199254740993) <> -Infinity or
        (-0.0) ** (-9007199254740992) <>  Infinity or
        (-0.0) **       (-4294967297) <> -Infinity or
        (-0.0) **       (-4294967296) <>  Infinity or
        (-0.0) **       (-4294967295) <> -Infinity or
        (-0.0) **       (-2147483649) <> -Infinity or
        (-0.0) **       (-2147483648) <>  Infinity or
        (-0.0) **       (-2147483647) <> -Infinity or
        (-0.0) **               (-30) <>  Infinity or
        (-0.0) **               (-29) <> -Infinity or
        (-0.0) **               (-28) <>  Infinity or
        (-0.0) **               (-27) <> -Infinity or
        (-0.0) **               (-26) <>  Infinity or
        (-0.0) **               (-25) <> -Infinity or
        (-0.0) **               (-24) <>  Infinity or
        (-0.0) **               (-23) <> -Infinity or
        (-0.0) **               (-22) <>  Infinity or
        (-0.0) **               (-21) <> -Infinity or
        (-0.0) **               (-20) <>  Infinity or
        (-0.0) **               (-19) <> -Infinity or
        (-0.0) **               (-18) <>  Infinity or
        (-0.0) **               (-17) <> -Infinity or
        (-0.0) **               (-16) <>  Infinity or
        (-0.0) **               (-15) <> -Infinity or
        (-0.0) **               (-14) <>  Infinity or
        (-0.0) **               (-13) <> -Infinity or
        (-0.0) **               (-12) <>  Infinity or
        (-0.0) **               (-11) <> -Infinity or
        (-0.0) **               (-10) <>  Infinity or
        (-0.0) **                (-9) <> -Infinity or
        (-0.0) **                (-8) <>  Infinity or
        (-0.0) **                (-7) <> -Infinity or
        (-0.0) **                (-6) <>  Infinity or
        (-0.0) **                (-5) <> -Infinity or
        (-0.0) **                (-4) <>  Infinity or
        (-0.0) **                (-3) <> -Infinity or
        (-0.0) **                (-2) <>  Infinity or
        (-0.0) **                (-1) <> -Infinity or
        floatExpr(-0.0) **      integer.first  <>  Infinity or
        floatExpr(-0.0) ** (-9007199254740993) <> -Infinity or
        floatExpr(-0.0) ** (-9007199254740992) <>  Infinity or
        floatExpr(-0.0) **       (-4294967297) <> -Infinity or
        floatExpr(-0.0) **       (-4294967296) <>  Infinity or
        floatExpr(-0.0) **       (-4294967295) <> -Infinity or
        floatExpr(-0.0) **       (-2147483649) <> -Infinity or
        floatExpr(-0.0) **       (-2147483648) <>  Infinity or
        floatExpr(-0.0) **       (-2147483647) <> -Infinity or
        floatExpr(-0.0) **               (-30) <>  Infinity or
        floatExpr(-0.0) **               (-29) <> -Infinity or
        floatExpr(-0.0) **               (-28) <>  Infinity or
        floatExpr(-0.0) **               (-27) <> -Infinity or
        floatExpr(-0.0) **               (-26) <>  Infinity or
        floatExpr(-0.0) **               (-25) <> -Infinity or
        floatExpr(-0.0) **               (-24) <>  Infinity or
        floatExpr(-0.0) **               (-23) <> -Infinity or
        floatExpr(-0.0) **               (-22) <>  Infinity or
        floatExpr(-0.0) **               (-21) <> -Infinity or
        floatExpr(-0.0) **               (-20) <>  Infinity or
        floatExpr(-0.0) **               (-19) <> -Infinity or
        floatExpr(-0.0) **               (-18) <>  Infinity or
        floatExpr(-0.0) **               (-17) <> -Infinity or
        floatExpr(-0.0) **               (-16) <>  Infinity or
        floatExpr(-0.0) **               (-15) <> -Infinity or
        floatExpr(-0.0) **               (-14) <>  Infinity or
        floatExpr(-0.0) **               (-13) <> -Infinity or
        floatExpr(-0.0) **               (-12) <>  Infinity or
        floatExpr(-0.0) **               (-11) <> -Infinity or
        floatExpr(-0.0) **               (-10) <>  Infinity or
        floatExpr(-0.0) **                (-9) <> -Infinity or
        floatExpr(-0.0) **                (-8) <>  Infinity or
        floatExpr(-0.0) **                (-7) <> -Infinity or
        floatExpr(-0.0) **                (-6) <>  Infinity or
        floatExpr(-0.0) **                (-5) <> -Infinity or
        floatExpr(-0.0) **                (-4) <>  Infinity or
        floatExpr(-0.0) **                (-3) <> -Infinity or
        floatExpr(-0.0) **                (-2) <>  Infinity or
        floatExpr(-0.0) **                (-1) <> -Infinity or
        (-0.0) ** intExpr(    integer.first) <>  Infinity or
        (-0.0) ** intExpr(-9007199254740993) <> -Infinity or
        (-0.0) ** intExpr(-9007199254740992) <>  Infinity or
        (-0.0) ** intExpr(      -4294967297) <> -Infinity or
        (-0.0) ** intExpr(      -4294967296) <>  Infinity or
        (-0.0) ** intExpr(      -4294967295) <> -Infinity or
        (-0.0) ** intExpr(      -2147483649) <> -Infinity or
        (-0.0) ** intExpr(      -2147483648) <>  Infinity or
        (-0.0) ** intExpr(      -2147483647) <> -Infinity or
        (-0.0) ** intExpr(              -30) <>  Infinity or
        (-0.0) ** intExpr(              -29) <> -Infinity or
        (-0.0) ** intExpr(              -28) <>  Infinity or
        (-0.0) ** intExpr(              -27) <> -Infinity or
        (-0.0) ** intExpr(              -26) <>  Infinity or
        (-0.0) ** intExpr(              -25) <> -Infinity or
        (-0.0) ** intExpr(              -24) <>  Infinity or
        (-0.0) ** intExpr(              -23) <> -Infinity or
        (-0.0) ** intExpr(              -22) <>  Infinity or
        (-0.0) ** intExpr(              -21) <> -Infinity or
        (-0.0) ** intExpr(              -20) <>  Infinity or
        (-0.0) ** intExpr(              -19) <> -Infinity or
        (-0.0) ** intExpr(              -18) <>  Infinity or
        (-0.0) ** intExpr(              -17) <> -Infinity or
        (-0.0) ** intExpr(              -16) <>  Infinity or
        (-0.0) ** intExpr(              -15) <> -Infinity or
        (-0.0) ** intExpr(              -14) <>  Infinity or
        (-0.0) ** intExpr(              -13) <> -Infinity or
        (-0.0) ** intExpr(              -12) <>  Infinity or
        (-0.0) ** intExpr(              -11) <> -Infinity or
        (-0.0) ** intExpr(              -10) <>  Infinity or
        (-0.0) ** intExpr(               -9) <> -Infinity or
        (-0.0) ** intExpr(               -8) <>  Infinity or
        (-0.0) ** intExpr(               -7) <> -Infinity or
        (-0.0) ** intExpr(               -6) <>  Infinity or
        (-0.0) ** intExpr(               -5) <> -Infinity or
        (-0.0) ** intExpr(               -4) <>  Infinity or
        (-0.0) ** intExpr(               -3) <> -Infinity or
        (-0.0) ** intExpr(               -2) <>  Infinity or
        (-0.0) ** intExpr(               -1) <> -Infinity or
        floatExpr(-0.0) ** intExpr(    integer.first) <>  Infinity or
        floatExpr(-0.0) ** intExpr(-9007199254740993) <> -Infinity or
        floatExpr(-0.0) ** intExpr(-9007199254740992) <>  Infinity or
        floatExpr(-0.0) ** intExpr(      -4294967297) <> -Infinity or
        floatExpr(-0.0) ** intExpr(      -4294967296) <>  Infinity or
        floatExpr(-0.0) ** intExpr(      -4294967295) <> -Infinity or
        floatExpr(-0.0) ** intExpr(      -2147483649) <> -Infinity or
        floatExpr(-0.0) ** intExpr(      -2147483648) <>  Infinity or
        floatExpr(-0.0) ** intExpr(      -2147483647) <> -Infinity or
        floatExpr(-0.0) ** intExpr(              -30) <>  Infinity or
        floatExpr(-0.0) ** intExpr(              -29) <> -Infinity or
        floatExpr(-0.0) ** intExpr(              -28) <>  Infinity or
        floatExpr(-0.0) ** intExpr(              -27) <> -Infinity or
        floatExpr(-0.0) ** intExpr(              -26) <>  Infinity or
        floatExpr(-0.0) ** intExpr(              -25) <> -Infinity or
        floatExpr(-0.0) ** intExpr(              -24) <>  Infinity or
        floatExpr(-0.0) ** intExpr(              -23) <> -Infinity or
        floatExpr(-0.0) ** intExpr(              -22) <>  Infinity or
        floatExpr(-0.0) ** intExpr(              -21) <> -Infinity or
        floatExpr(-0.0) ** intExpr(              -20) <>  Infinity or
        floatExpr(-0.0) ** intExpr(              -19) <> -Infinity or
        floatExpr(-0.0) ** intExpr(              -18) <>  Infinity or
        floatExpr(-0.0) ** intExpr(              -17) <> -Infinity or
        floatExpr(-0.0) ** intExpr(              -16) <>  Infinity or
        floatExpr(-0.0) ** intExpr(              -15) <> -Infinity or
        floatExpr(-0.0) ** intExpr(              -14) <>  Infinity or
        floatExpr(-0.0) ** intExpr(              -13) <> -Infinity or
        floatExpr(-0.0) ** intExpr(              -12) <>  Infinity or
        floatExpr(-0.0) ** intExpr(              -11) <> -Infinity or
        floatExpr(-0.0) ** intExpr(              -10) <>  Infinity or
        floatExpr(-0.0) ** intExpr(               -9) <> -Infinity or
        floatExpr(-0.0) ** intExpr(               -8) <>  Infinity or
        floatExpr(-0.0) ** intExpr(               -7) <> -Infinity or
        floatExpr(-0.0) ** intExpr(               -6) <>  Infinity or
        floatExpr(-0.0) ** intExpr(               -5) <> -Infinity or
        floatExpr(-0.0) ** intExpr(               -4) <>  Infinity or
        floatExpr(-0.0) ** intExpr(               -3) <> -Infinity or
        floatExpr(-0.0) ** intExpr(               -2) <>  Infinity or
        floatExpr(-0.0) ** intExpr(               -1) <> -Infinity then
      writeln(" ***** (-0.0) ** B with negative integer B does not return Infinity respectively -Infinity.");
      okay := FALSE;
    end if;

   if                      (-0.0) **                0 <> 1.0 or
        not isNegativeZero((-0.0) **                1) or
        not isPositiveZero((-0.0) **                2) or
        not isNegativeZero((-0.0) **                3) or
        not isPositiveZero((-0.0) **                4) or
        not isNegativeZero((-0.0) **                5) or
        not isPositiveZero((-0.0) **                6) or
        not isNegativeZero((-0.0) **                7) or
        not isPositiveZero((-0.0) **                8) or
        not isNegativeZero((-0.0) **                9) or
        not isPositiveZero((-0.0) **               10) or
        not isNegativeZero((-0.0) **               11) or
        not isPositiveZero((-0.0) **               12) or
        not isNegativeZero((-0.0) **               13) or
        not isPositiveZero((-0.0) **               14) or
        not isNegativeZero((-0.0) **               15) or
        not isPositiveZero((-0.0) **               16) or
        not isNegativeZero((-0.0) **               17) or
        not isPositiveZero((-0.0) **               18) or
        not isNegativeZero((-0.0) **               19) or
        not isPositiveZero((-0.0) **               20) or
        not isNegativeZero((-0.0) **               21) or
        not isPositiveZero((-0.0) **               22) or
        not isNegativeZero((-0.0) **               23) or
        not isPositiveZero((-0.0) **               24) or
        not isNegativeZero((-0.0) **               25) or
        not isPositiveZero((-0.0) **               26) or
        not isNegativeZero((-0.0) **               27) or
        not isPositiveZero((-0.0) **               28) or
        not isNegativeZero((-0.0) **               29) or
        not isPositiveZero((-0.0) **               30) or
        not isNegativeZero((-0.0) **       2147483647) or
        not isPositiveZero((-0.0) **       2147483648) or
        not isNegativeZero((-0.0) **       2147483649) or
        not isNegativeZero((-0.0) **       4294967295) or
        not isPositiveZero((-0.0) **       4294967296) or
        not isNegativeZero((-0.0) **       4294967297) or
        not isPositiveZero((-0.0) ** 9007199254740992) or
        not isNegativeZero((-0.0) ** 9007199254740993) or
        not isNegativeZero((-0.0) **     integer.last) or
                           floatExpr(-0.0) **                0 <> 1.0 or
        not isNegativeZero(floatExpr(-0.0) **                1) or
        not isPositiveZero(floatExpr(-0.0) **                2) or
        not isNegativeZero(floatExpr(-0.0) **                3) or
        not isPositiveZero(floatExpr(-0.0) **                4) or
        not isNegativeZero(floatExpr(-0.0) **                5) or
        not isPositiveZero(floatExpr(-0.0) **                6) or
        not isNegativeZero(floatExpr(-0.0) **                7) or
        not isPositiveZero(floatExpr(-0.0) **                8) or
        not isNegativeZero(floatExpr(-0.0) **                9) or
        not isPositiveZero(floatExpr(-0.0) **               10) or
        not isNegativeZero(floatExpr(-0.0) **               11) or
        not isPositiveZero(floatExpr(-0.0) **               12) or
        not isNegativeZero(floatExpr(-0.0) **               13) or
        not isPositiveZero(floatExpr(-0.0) **               14) or
        not isNegativeZero(floatExpr(-0.0) **               15) or
        not isPositiveZero(floatExpr(-0.0) **               16) or
        not isNegativeZero(floatExpr(-0.0) **               17) or
        not isPositiveZero(floatExpr(-0.0) **               18) or
        not isNegativeZero(floatExpr(-0.0) **               19) or
        not isPositiveZero(floatExpr(-0.0) **               20) or
        not isNegativeZero(floatExpr(-0.0) **               21) or
        not isPositiveZero(floatExpr(-0.0) **               22) or
        not isNegativeZero(floatExpr(-0.0) **               23) or
        not isPositiveZero(floatExpr(-0.0) **               24) or
        not isNegativeZero(floatExpr(-0.0) **               25) or
        not isPositiveZero(floatExpr(-0.0) **               26) or
        not isNegativeZero(floatExpr(-0.0) **               27) or
        not isPositiveZero(floatExpr(-0.0) **               28) or
        not isNegativeZero(floatExpr(-0.0) **               29) or
        not isPositiveZero(floatExpr(-0.0) **               30) or
        not isNegativeZero(floatExpr(-0.0) **       2147483647) or
        not isPositiveZero(floatExpr(-0.0) **       2147483648) or
        not isNegativeZero(floatExpr(-0.0) **       2147483649) or
        not isNegativeZero(floatExpr(-0.0) **       4294967295) or
        not isPositiveZero(floatExpr(-0.0) **       4294967296) or
        not isNegativeZero(floatExpr(-0.0) **       4294967297) or
        not isPositiveZero(floatExpr(-0.0) ** 9007199254740992) or
        not isNegativeZero(floatExpr(-0.0) ** 9007199254740993) or
        not isNegativeZero(floatExpr(-0.0) **     integer.last) or
                           (-0.0) ** intExpr(               0) <> 1.0 or
        not isNegativeZero((-0.0) ** intExpr(               1)) or
        not isPositiveZero((-0.0) ** intExpr(               2)) or
        not isNegativeZero((-0.0) ** intExpr(               3)) or
        not isPositiveZero((-0.0) ** intExpr(               4)) or
        not isNegativeZero((-0.0) ** intExpr(               5)) or
        not isPositiveZero((-0.0) ** intExpr(               6)) or
        not isNegativeZero((-0.0) ** intExpr(               7)) or
        not isPositiveZero((-0.0) ** intExpr(               8)) or
        not isNegativeZero((-0.0) ** intExpr(               9)) or
        not isPositiveZero((-0.0) ** intExpr(              10)) or
        not isNegativeZero((-0.0) ** intExpr(              11)) or
        not isPositiveZero((-0.0) ** intExpr(              12)) or
        not isNegativeZero((-0.0) ** intExpr(              13)) or
        not isPositiveZero((-0.0) ** intExpr(              14)) or
        not isNegativeZero((-0.0) ** intExpr(              15)) or
        not isPositiveZero((-0.0) ** intExpr(              16)) or
        not isNegativeZero((-0.0) ** intExpr(              17)) or
        not isPositiveZero((-0.0) ** intExpr(              18)) or
        not isNegativeZero((-0.0) ** intExpr(              19)) or
        not isPositiveZero((-0.0) ** intExpr(              20)) or
        not isNegativeZero((-0.0) ** intExpr(              21)) or
        not isPositiveZero((-0.0) ** intExpr(              22)) or
        not isNegativeZero((-0.0) ** intExpr(              23)) or
        not isPositiveZero((-0.0) ** intExpr(              24)) or
        not isNegativeZero((-0.0) ** intExpr(              25)) or
        not isPositiveZero((-0.0) ** intExpr(              26)) or
        not isNegativeZero((-0.0) ** intExpr(              27)) or
        not isPositiveZero((-0.0) ** intExpr(              28)) or
        not isNegativeZero((-0.0) ** intExpr(              29)) or
        not isPositiveZero((-0.0) ** intExpr(              30)) or
        not isNegativeZero((-0.0) ** intExpr(      2147483647)) or
        not isPositiveZero((-0.0) ** intExpr(      2147483648)) or
        not isNegativeZero((-0.0) ** intExpr(      2147483649)) or
        not isNegativeZero((-0.0) ** intExpr(      4294967295)) or
        not isPositiveZero((-0.0) ** intExpr(      4294967296)) or
        not isNegativeZero((-0.0) ** intExpr(      4294967297)) or
        not isPositiveZero((-0.0) ** intExpr(9007199254740992)) or
        not isNegativeZero((-0.0) ** intExpr(9007199254740993)) or
        not isNegativeZero((-0.0) ** intExpr(    integer.last)) or
                           floatExpr(-0.0) ** intExpr(               0) <> 1.0 or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(               1)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(               2)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(               3)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(               4)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(               5)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(               6)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(               7)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(               8)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(               9)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(              10)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(              11)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(              12)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(              13)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(              14)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(              15)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(              16)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(              17)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(              18)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(              19)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(              20)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(              21)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(              22)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(              23)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(              24)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(              25)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(              26)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(              27)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(              28)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(              29)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(              30)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(      2147483647)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(      2147483648)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(      2147483649)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(      4294967295)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(      4294967296)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(      4294967297)) or
        not isPositiveZero(floatExpr(-0.0) ** intExpr(9007199254740992)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(9007199254740993)) or
        not isNegativeZero(floatExpr(-0.0) ** intExpr(    integer.last)) then
      writeln(" ***** (-0.0) ** B with positive integer B does not return 0.0 respectively -0.0.");
      okay := FALSE;
    end if;

    if  0.0 **      integer.first  <>  Infinity or
        0.0 ** (-9007199254740993) <>  Infinity or
        0.0 ** (-9007199254740992) <>  Infinity or
        0.0 **       (-4294967297) <>  Infinity or
        0.0 **       (-4294967296) <>  Infinity or
        0.0 **       (-4294967295) <>  Infinity or
        0.0 **       (-2147483649) <>  Infinity or
        0.0 **       (-2147483648) <>  Infinity or
        0.0 **       (-2147483647) <>  Infinity or
        0.0 **               (-30) <>  Infinity or
        0.0 **               (-29) <>  Infinity or
        0.0 **               (-28) <>  Infinity or
        0.0 **               (-27) <>  Infinity or
        0.0 **               (-26) <>  Infinity or
        0.0 **               (-25) <>  Infinity or
        0.0 **               (-24) <>  Infinity or
        0.0 **               (-23) <>  Infinity or
        0.0 **               (-22) <>  Infinity or
        0.0 **               (-21) <>  Infinity or
        0.0 **               (-20) <>  Infinity or
        0.0 **               (-19) <>  Infinity or
        0.0 **               (-18) <>  Infinity or
        0.0 **               (-17) <>  Infinity or
        0.0 **               (-16) <>  Infinity or
        0.0 **               (-15) <>  Infinity or
        0.0 **               (-14) <>  Infinity or
        0.0 **               (-13) <>  Infinity or
        0.0 **               (-12) <>  Infinity or
        0.0 **               (-11) <>  Infinity or
        0.0 **               (-10) <>  Infinity or
        0.0 **                (-9) <>  Infinity or
        0.0 **                (-8) <>  Infinity or
        0.0 **                (-7) <>  Infinity or
        0.0 **                (-6) <>  Infinity or
        0.0 **                (-5) <>  Infinity or
        0.0 **                (-4) <>  Infinity or
        0.0 **                (-3) <>  Infinity or
        0.0 **                (-2) <>  Infinity or
        0.0 **                (-1) <>  Infinity or
        floatExpr(0.0) **      integer.first  <>  Infinity or
        floatExpr(0.0) ** (-9007199254740993) <>  Infinity or
        floatExpr(0.0) ** (-9007199254740992) <>  Infinity or
        floatExpr(0.0) **       (-4294967297) <>  Infinity or
        floatExpr(0.0) **       (-4294967296) <>  Infinity or
        floatExpr(0.0) **       (-4294967295) <>  Infinity or
        floatExpr(0.0) **       (-2147483649) <>  Infinity or
        floatExpr(0.0) **       (-2147483648) <>  Infinity or
        floatExpr(0.0) **       (-2147483647) <>  Infinity or
        floatExpr(0.0) **               (-30) <>  Infinity or
        floatExpr(0.0) **               (-29) <>  Infinity or
        floatExpr(0.0) **               (-28) <>  Infinity or
        floatExpr(0.0) **               (-27) <>  Infinity or
        floatExpr(0.0) **               (-26) <>  Infinity or
        floatExpr(0.0) **               (-25) <>  Infinity or
        floatExpr(0.0) **               (-24) <>  Infinity or
        floatExpr(0.0) **               (-23) <>  Infinity or
        floatExpr(0.0) **               (-22) <>  Infinity or
        floatExpr(0.0) **               (-21) <>  Infinity or
        floatExpr(0.0) **               (-20) <>  Infinity or
        floatExpr(0.0) **               (-19) <>  Infinity or
        floatExpr(0.0) **               (-18) <>  Infinity or
        floatExpr(0.0) **               (-17) <>  Infinity or
        floatExpr(0.0) **               (-16) <>  Infinity or
        floatExpr(0.0) **               (-15) <>  Infinity or
        floatExpr(0.0) **               (-14) <>  Infinity or
        floatExpr(0.0) **               (-13) <>  Infinity or
        floatExpr(0.0) **               (-12) <>  Infinity or
        floatExpr(0.0) **               (-11) <>  Infinity or
        floatExpr(0.0) **               (-10) <>  Infinity or
        floatExpr(0.0) **                (-9) <>  Infinity or
        floatExpr(0.0) **                (-8) <>  Infinity or
        floatExpr(0.0) **                (-7) <>  Infinity or
        floatExpr(0.0) **                (-6) <>  Infinity or
        floatExpr(0.0) **                (-5) <>  Infinity or
        floatExpr(0.0) **                (-4) <>  Infinity or
        floatExpr(0.0) **                (-3) <>  Infinity or
        floatExpr(0.0) **                (-2) <>  Infinity or
        floatExpr(0.0) **                (-1) <>  Infinity or
        0.0 ** intExpr(    integer.first) <>  Infinity or
        0.0 ** intExpr(-9007199254740993) <>  Infinity or
        0.0 ** intExpr(-9007199254740992) <>  Infinity or
        0.0 ** intExpr(      -4294967297) <>  Infinity or
        0.0 ** intExpr(      -4294967296) <>  Infinity or
        0.0 ** intExpr(      -4294967295) <>  Infinity or
        0.0 ** intExpr(      -2147483649) <>  Infinity or
        0.0 ** intExpr(      -2147483648) <>  Infinity or
        0.0 ** intExpr(      -2147483647) <>  Infinity or
        0.0 ** intExpr(              -30) <>  Infinity or
        0.0 ** intExpr(              -29) <>  Infinity or
        0.0 ** intExpr(              -28) <>  Infinity or
        0.0 ** intExpr(              -27) <>  Infinity or
        0.0 ** intExpr(              -26) <>  Infinity or
        0.0 ** intExpr(              -25) <>  Infinity or
        0.0 ** intExpr(              -24) <>  Infinity or
        0.0 ** intExpr(              -23) <>  Infinity or
        0.0 ** intExpr(              -22) <>  Infinity or
        0.0 ** intExpr(              -21) <>  Infinity or
        0.0 ** intExpr(              -20) <>  Infinity or
        0.0 ** intExpr(              -19) <>  Infinity or
        0.0 ** intExpr(              -18) <>  Infinity or
        0.0 ** intExpr(              -17) <>  Infinity or
        0.0 ** intExpr(              -16) <>  Infinity or
        0.0 ** intExpr(              -15) <>  Infinity or
        0.0 ** intExpr(              -14) <>  Infinity or
        0.0 ** intExpr(              -13) <>  Infinity or
        0.0 ** intExpr(              -12) <>  Infinity or
        0.0 ** intExpr(              -11) <>  Infinity or
        0.0 ** intExpr(              -10) <>  Infinity or
        0.0 ** intExpr(               -9) <>  Infinity or
        0.0 ** intExpr(               -8) <>  Infinity or
        0.0 ** intExpr(               -7) <>  Infinity or
        0.0 ** intExpr(               -6) <>  Infinity or
        0.0 ** intExpr(               -5) <>  Infinity or
        0.0 ** intExpr(               -4) <>  Infinity or
        0.0 ** intExpr(               -3) <>  Infinity or
        0.0 ** intExpr(               -2) <>  Infinity or
        0.0 ** intExpr(               -1) <>  Infinity or
        floatExpr(0.0) ** intExpr(    integer.first) <>  Infinity or
        floatExpr(0.0) ** intExpr(-9007199254740993) <>  Infinity or
        floatExpr(0.0) ** intExpr(-9007199254740992) <>  Infinity or
        floatExpr(0.0) ** intExpr(      -4294967297) <>  Infinity or
        floatExpr(0.0) ** intExpr(      -4294967296) <>  Infinity or
        floatExpr(0.0) ** intExpr(      -4294967295) <>  Infinity or
        floatExpr(0.0) ** intExpr(      -2147483649) <>  Infinity or
        floatExpr(0.0) ** intExpr(      -2147483648) <>  Infinity or
        floatExpr(0.0) ** intExpr(      -2147483647) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -30) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -29) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -28) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -27) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -26) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -25) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -24) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -23) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -22) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -21) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -20) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -19) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -18) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -17) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -16) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -15) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -14) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -13) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -12) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -11) <>  Infinity or
        floatExpr(0.0) ** intExpr(              -10) <>  Infinity or
        floatExpr(0.0) ** intExpr(               -9) <>  Infinity or
        floatExpr(0.0) ** intExpr(               -8) <>  Infinity or
        floatExpr(0.0) ** intExpr(               -7) <>  Infinity or
        floatExpr(0.0) ** intExpr(               -6) <>  Infinity or
        floatExpr(0.0) ** intExpr(               -5) <>  Infinity or
        floatExpr(0.0) ** intExpr(               -4) <>  Infinity or
        floatExpr(0.0) ** intExpr(               -3) <>  Infinity or
        floatExpr(0.0) ** intExpr(               -2) <>  Infinity or
        floatExpr(0.0) ** intExpr(               -1) <>  Infinity then
      writeln(" ***** 0.0 ** B with negative integer B does not return Infinity.");
      okay := FALSE;
    end if;

   if                      0.0 **                0 <> 1.0 or
        not isPositiveZero(0.0 **                1) or
        not isPositiveZero(0.0 **                2) or
        not isPositiveZero(0.0 **                3) or
        not isPositiveZero(0.0 **                4) or
        not isPositiveZero(0.0 **                5) or
        not isPositiveZero(0.0 **                6) or
        not isPositiveZero(0.0 **                7) or
        not isPositiveZero(0.0 **                8) or
        not isPositiveZero(0.0 **                9) or
        not isPositiveZero(0.0 **               10) or
        not isPositiveZero(0.0 **               11) or
        not isPositiveZero(0.0 **               12) or
        not isPositiveZero(0.0 **               13) or
        not isPositiveZero(0.0 **               14) or
        not isPositiveZero(0.0 **               15) or
        not isPositiveZero(0.0 **               16) or
        not isPositiveZero(0.0 **               17) or
        not isPositiveZero(0.0 **               18) or
        not isPositiveZero(0.0 **               19) or
        not isPositiveZero(0.0 **               20) or
        not isPositiveZero(0.0 **               21) or
        not isPositiveZero(0.0 **               22) or
        not isPositiveZero(0.0 **               23) or
        not isPositiveZero(0.0 **               24) or
        not isPositiveZero(0.0 **               25) or
        not isPositiveZero(0.0 **               26) or
        not isPositiveZero(0.0 **               27) or
        not isPositiveZero(0.0 **               28) or
        not isPositiveZero(0.0 **               29) or
        not isPositiveZero(0.0 **               30) or
        not isPositiveZero(0.0 **       2147483647) or
        not isPositiveZero(0.0 **       2147483648) or
        not isPositiveZero(0.0 **       2147483649) or
        not isPositiveZero(0.0 **       4294967295) or
        not isPositiveZero(0.0 **       4294967296) or
        not isPositiveZero(0.0 **       4294967297) or
        not isPositiveZero(0.0 ** 9007199254740992) or
        not isPositiveZero(0.0 ** 9007199254740993) or
        not isPositiveZero(0.0 **     integer.last) or
                           floatExpr(0.0) **                0 <> 1.0 or
        not isPositiveZero(floatExpr(0.0) **                1) or
        not isPositiveZero(floatExpr(0.0) **                2) or
        not isPositiveZero(floatExpr(0.0) **                3) or
        not isPositiveZero(floatExpr(0.0) **                4) or
        not isPositiveZero(floatExpr(0.0) **                5) or
        not isPositiveZero(floatExpr(0.0) **                6) or
        not isPositiveZero(floatExpr(0.0) **                7) or
        not isPositiveZero(floatExpr(0.0) **                8) or
        not isPositiveZero(floatExpr(0.0) **                9) or
        not isPositiveZero(floatExpr(0.0) **               10) or
        not isPositiveZero(floatExpr(0.0) **               11) or
        not isPositiveZero(floatExpr(0.0) **               12) or
        not isPositiveZero(floatExpr(0.0) **               13) or
        not isPositiveZero(floatExpr(0.0) **               14) or
        not isPositiveZero(floatExpr(0.0) **               15) or
        not isPositiveZero(floatExpr(0.0) **               16) or
        not isPositiveZero(floatExpr(0.0) **               17) or
        not isPositiveZero(floatExpr(0.0) **               18) or
        not isPositiveZero(floatExpr(0.0) **               19) or
        not isPositiveZero(floatExpr(0.0) **               20) or
        not isPositiveZero(floatExpr(0.0) **               21) or
        not isPositiveZero(floatExpr(0.0) **               22) or
        not isPositiveZero(floatExpr(0.0) **               23) or
        not isPositiveZero(floatExpr(0.0) **               24) or
        not isPositiveZero(floatExpr(0.0) **               25) or
        not isPositiveZero(floatExpr(0.0) **               26) or
        not isPositiveZero(floatExpr(0.0) **               27) or
        not isPositiveZero(floatExpr(0.0) **               28) or
        not isPositiveZero(floatExpr(0.0) **               29) or
        not isPositiveZero(floatExpr(0.0) **               30) or
        not isPositiveZero(floatExpr(0.0) **       2147483647) or
        not isPositiveZero(floatExpr(0.0) **       2147483648) or
        not isPositiveZero(floatExpr(0.0) **       2147483649) or
        not isPositiveZero(floatExpr(0.0) **       4294967295) or
        not isPositiveZero(floatExpr(0.0) **       4294967296) or
        not isPositiveZero(floatExpr(0.0) **       4294967297) or
        not isPositiveZero(floatExpr(0.0) ** 9007199254740992) or
        not isPositiveZero(floatExpr(0.0) ** 9007199254740993) or
        not isPositiveZero(floatExpr(0.0) **     integer.last) or
                           0.0 ** intExpr(               0) <> 1.0 or
        not isPositiveZero(0.0 ** intExpr(               1)) or
        not isPositiveZero(0.0 ** intExpr(               2)) or
        not isPositiveZero(0.0 ** intExpr(               3)) or
        not isPositiveZero(0.0 ** intExpr(               4)) or
        not isPositiveZero(0.0 ** intExpr(               5)) or
        not isPositiveZero(0.0 ** intExpr(               6)) or
        not isPositiveZero(0.0 ** intExpr(               7)) or
        not isPositiveZero(0.0 ** intExpr(               8)) or
        not isPositiveZero(0.0 ** intExpr(               9)) or
        not isPositiveZero(0.0 ** intExpr(              10)) or
        not isPositiveZero(0.0 ** intExpr(              11)) or
        not isPositiveZero(0.0 ** intExpr(              12)) or
        not isPositiveZero(0.0 ** intExpr(              13)) or
        not isPositiveZero(0.0 ** intExpr(              14)) or
        not isPositiveZero(0.0 ** intExpr(              15)) or
        not isPositiveZero(0.0 ** intExpr(              16)) or
        not isPositiveZero(0.0 ** intExpr(              17)) or
        not isPositiveZero(0.0 ** intExpr(              18)) or
        not isPositiveZero(0.0 ** intExpr(              19)) or
        not isPositiveZero(0.0 ** intExpr(              20)) or
        not isPositiveZero(0.0 ** intExpr(              21)) or
        not isPositiveZero(0.0 ** intExpr(              22)) or
        not isPositiveZero(0.0 ** intExpr(              23)) or
        not isPositiveZero(0.0 ** intExpr(              24)) or
        not isPositiveZero(0.0 ** intExpr(              25)) or
        not isPositiveZero(0.0 ** intExpr(              26)) or
        not isPositiveZero(0.0 ** intExpr(              27)) or
        not isPositiveZero(0.0 ** intExpr(              28)) or
        not isPositiveZero(0.0 ** intExpr(              29)) or
        not isPositiveZero(0.0 ** intExpr(              30)) or
        not isPositiveZero(0.0 ** intExpr(      2147483647)) or
        not isPositiveZero(0.0 ** intExpr(      2147483648)) or
        not isPositiveZero(0.0 ** intExpr(      2147483649)) or
        not isPositiveZero(0.0 ** intExpr(      4294967295)) or
        not isPositiveZero(0.0 ** intExpr(      4294967296)) or
        not isPositiveZero(0.0 ** intExpr(      4294967297)) or
        not isPositiveZero(0.0 ** intExpr(9007199254740992)) or
        not isPositiveZero(0.0 ** intExpr(9007199254740993)) or
        not isPositiveZero(0.0 ** intExpr(    integer.last)) or
                           floatExpr(0.0) ** intExpr(               0) <> 1.0 or
        not isPositiveZero(floatExpr(0.0) ** intExpr(               1)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(               2)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(               3)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(               4)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(               5)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(               6)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(               7)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(               8)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(               9)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              10)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              11)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              12)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              13)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              14)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              15)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              16)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              17)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              18)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              19)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              20)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              21)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              22)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              23)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              24)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              25)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              26)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              27)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              28)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              29)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(              30)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(      2147483647)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(      2147483648)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(      2147483649)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(      4294967295)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(      4294967296)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(      4294967297)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(9007199254740992)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(9007199254740993)) or
        not isPositiveZero(floatExpr(0.0) ** intExpr(    integer.last)) then
      writeln(" ***** 0.0 ** B with integer B does not return 0.0.");
      okay := FALSE;
    end if;

    if  1.0 **      integer.first  <> 1.0 or
        1.0 ** (-9007199254740993) <> 1.0 or
        1.0 ** (-9007199254740992) <> 1.0 or
        1.0 **       (-2147483649) <> 1.0 or
        1.0 **       (-2147483648) <> 1.0 or
        1.0 **                (-2) <> 1.0 or
        1.0 **                (-1) <> 1.0 or
        1.0 **                  0  <> 1.0 or
        1.0 **                  1  <> 1.0 or
        1.0 **                  2  <> 1.0 or
        1.0 **         2147483647  <> 1.0 or
        1.0 **         2147483648  <> 1.0 or
        1.0 **   9007199254740992  <> 1.0 or
        1.0 **   9007199254740993  <> 1.0 or
        1.0 **       integer.last  <> 1.0 or
        floatExpr(1.0) **      integer.first  <> 1.0 or
        floatExpr(1.0) ** (-9007199254740993) <> 1.0 or
        floatExpr(1.0) ** (-9007199254740992) <> 1.0 or
        floatExpr(1.0) **       (-2147483649) <> 1.0 or
        floatExpr(1.0) **       (-2147483648) <> 1.0 or
        floatExpr(1.0) **                (-2) <> 1.0 or
        floatExpr(1.0) **                (-1) <> 1.0 or
        floatExpr(1.0) **                  0  <> 1.0 or
        floatExpr(1.0) **                  1  <> 1.0 or
        floatExpr(1.0) **                  2  <> 1.0 or
        floatExpr(1.0) **         2147483647  <> 1.0 or
        floatExpr(1.0) **         2147483648  <> 1.0 or
        floatExpr(1.0) **   9007199254740992  <> 1.0 or
        floatExpr(1.0) **   9007199254740993  <> 1.0 or
        floatExpr(1.0) **       integer.last  <> 1.0 or
        1.0 ** intExpr(    integer.first) <> 1.0 or
        1.0 ** intExpr(-9007199254740993) <> 1.0 or
        1.0 ** intExpr(-9007199254740992) <> 1.0 or
        1.0 ** intExpr(      -2147483649) <> 1.0 or
        1.0 ** intExpr(      -2147483648) <> 1.0 or
        1.0 ** intExpr(               -2) <> 1.0 or
        1.0 ** intExpr(               -1) <> 1.0 or
        1.0 ** intExpr(                0) <> 1.0 or
        1.0 ** intExpr(                1) <> 1.0 or
        1.0 ** intExpr(                2) <> 1.0 or
        1.0 ** intExpr(       2147483647) <> 1.0 or
        1.0 ** intExpr(       2147483648) <> 1.0 or
        1.0 ** intExpr( 9007199254740992) <> 1.0 or
        1.0 ** intExpr( 9007199254740993) <> 1.0 or
        1.0 ** intExpr(     integer.last) <> 1.0 or
        floatExpr(1.0) ** intExpr(    integer.first) <> 1.0 or
        floatExpr(1.0) ** intExpr(-9007199254740993) <> 1.0 or
        floatExpr(1.0) ** intExpr(-9007199254740992) <> 1.0 or
        floatExpr(1.0) ** intExpr(      -2147483649) <> 1.0 or
        floatExpr(1.0) ** intExpr(      -2147483648) <> 1.0 or
        floatExpr(1.0) ** intExpr(               -2) <> 1.0 or
        floatExpr(1.0) ** intExpr(               -1) <> 1.0 or
        floatExpr(1.0) ** intExpr(                0) <> 1.0 or
        floatExpr(1.0) ** intExpr(                1) <> 1.0 or
        floatExpr(1.0) ** intExpr(                2) <> 1.0 or
        floatExpr(1.0) ** intExpr(       2147483647) <> 1.0 or
        floatExpr(1.0) ** intExpr(       2147483648) <> 1.0 or
        floatExpr(1.0) ** intExpr( 9007199254740992) <> 1.0 or
        floatExpr(1.0) ** intExpr( 9007199254740993) <> 1.0 or
        floatExpr(1.0) ** intExpr(     integer.last) <> 1.0 then
      writeln(" ***** 1.0 ** B with integer B does not return 1.0.");
      okay := FALSE;
    end if;

    if  2.0 **      integer.first  <> 0.0 or
        2.0 ** (-9007199254740993) <> 0.0 or
        2.0 ** (-9007199254740992) <> 0.0 or
        2.0 **       (-2147483649) <> 0.0 or
        2.0 **       (-2147483648) <> 0.0 or
        2.0 ** (-1000) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        2.0 ** ( -500) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
        2.0 ** ( -200) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
        2.0 ** ( -100) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        2.0 ** (  -50) <> 8.8817841970012523233890533447265625e-16 or
        2.0 ** (  -20) <> 9.5367431640625e-7 or
        2.0 ** (  -10) <> 9.765625e-4 or
        2.0 ** (   -5) <> 3.125e-2 or
        2.0 ** (   -2) <> 0.25 or
        2.0 ** (   -1) <> 0.5 or
        2.0 **      0  <> 1.0 or
        2.0 **      1  <> 2.0 or
        2.0 **      2  <> 4.0 or
        2.0 **      5  <> 3.2e1 or
        2.0 **     10  <> 1.024e3 or
        2.0 **     20  <> 1.048576e6 or
        2.0 **     50  <> 1.125899906842624e15 or
        2.0 **    100  <> 1.267650600228229401496703205376e30 or
        2.0 **    200  <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
        2.0 **    500  <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
        2.0 **   1000  <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        2.0 **       2147483647 <> Infinity or
        2.0 **       2147483648 <> Infinity or
        2.0 ** 9007199254740992 <> Infinity or
        2.0 ** 9007199254740993 <> Infinity or
        2.0 **     integer.last <> Infinity or
        floatExpr(2.0) **      integer.first  <> 0.0 or
        floatExpr(2.0) ** (-9007199254740993) <> 0.0 or
        floatExpr(2.0) ** (-9007199254740992) <> 0.0 or
        floatExpr(2.0) **       (-2147483649) <> 0.0 or
        floatExpr(2.0) **       (-2147483648) <> 0.0 or
        floatExpr(2.0) ** (-1000) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        floatExpr(2.0) ** ( -500) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
        floatExpr(2.0) ** ( -200) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
        floatExpr(2.0) ** ( -100) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        floatExpr(2.0) ** (  -50) <> 8.8817841970012523233890533447265625e-16 or
        floatExpr(2.0) ** (  -20) <> 9.5367431640625e-7 or
        floatExpr(2.0) ** (  -10) <> 9.765625e-4 or
        floatExpr(2.0) ** (   -5) <> 3.125e-2 or
        floatExpr(2.0) ** (   -2) <> 0.25 or
        floatExpr(2.0) ** (   -1) <> 0.5 or
        floatExpr(2.0) **      0  <> 1.0 or
        floatExpr(2.0) **      1  <> 2.0 or
        floatExpr(2.0) **      2  <> 4.0 or
        floatExpr(2.0) **      5  <> 3.2e1 or
        floatExpr(2.0) **     10  <> 1.024e3 or
        floatExpr(2.0) **     20  <> 1.048576e6 or
        floatExpr(2.0) **     50  <> 1.125899906842624e15 or
        floatExpr(2.0) **    100  <> 1.267650600228229401496703205376e30 or
        floatExpr(2.0) **    200  <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
        floatExpr(2.0) **    500  <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
        floatExpr(2.0) **   1000  <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        floatExpr(2.0) **       2147483647 <> Infinity or
        floatExpr(2.0) **       2147483648 <> Infinity or
        floatExpr(2.0) ** 9007199254740992 <> Infinity or
        floatExpr(2.0) ** 9007199254740993 <> Infinity or
        floatExpr(2.0) **     integer.last <> Infinity or
        2.0 ** intExpr(    integer.first) <> 0.0 or
        2.0 ** intExpr(-9007199254740993) <> 0.0 or
        2.0 ** intExpr(-9007199254740992) <> 0.0 or
        2.0 ** intExpr(      -2147483649) <> 0.0 or
        2.0 ** intExpr(      -2147483648) <> 0.0 or
        2.0 ** intExpr(-1000) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        2.0 ** intExpr( -500) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
        2.0 ** intExpr( -200) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
        2.0 ** intExpr( -100) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        2.0 ** intExpr(  -50) <> 8.8817841970012523233890533447265625e-16 or
        2.0 ** intExpr(  -20) <> 9.5367431640625e-7 or
        2.0 ** intExpr(  -10) <> 9.765625e-4 or
        2.0 ** intExpr(   -5) <> 3.125e-2 or
        2.0 ** intExpr(   -2) <> 0.25 or
        2.0 ** intExpr(   -1) <> 0.5 or
        2.0 ** intExpr(    0) <> 1.0 or
        2.0 ** intExpr(    1) <> 2.0 or
        2.0 ** intExpr(    2) <> 4.0 or
        2.0 ** intExpr(    5) <> 3.2e1 or
        2.0 ** intExpr(   10) <> 1.024e3 or
        2.0 ** intExpr(   20) <> 1.048576e6 or
        2.0 ** intExpr(   50) <> 1.125899906842624e15 or
        2.0 ** intExpr(  100) <> 1.267650600228229401496703205376e30 or
        2.0 ** intExpr(  200) <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
        2.0 ** intExpr(  500) <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
        2.0 ** intExpr( 1000) <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        2.0 ** intExpr(      2147483647) <> Infinity or
        2.0 ** intExpr(      2147483648) <> Infinity or
        2.0 ** intExpr(9007199254740992) <> Infinity or
        2.0 ** intExpr(9007199254740993) <> Infinity or
        2.0 ** intExpr(    integer.last) <> Infinity or
        floatExpr(2.0) ** intExpr(    integer.first) <> 0.0 or
        floatExpr(2.0) ** intExpr(-9007199254740993) <> 0.0 or
        floatExpr(2.0) ** intExpr(-9007199254740992) <> 0.0 or
        floatExpr(2.0) ** intExpr(      -2147483649) <> 0.0 or
        floatExpr(2.0) ** intExpr(      -2147483648) <> 0.0 or
        floatExpr(2.0) ** intExpr(-1000) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        floatExpr(2.0) ** intExpr( -500) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
        floatExpr(2.0) ** intExpr( -200) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
        floatExpr(2.0) ** intExpr( -100) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        floatExpr(2.0) ** intExpr(  -50) <> 8.8817841970012523233890533447265625e-16 or
        floatExpr(2.0) ** intExpr(  -20) <> 9.5367431640625e-7 or
        floatExpr(2.0) ** intExpr(  -10) <> 9.765625e-4 or
        floatExpr(2.0) ** intExpr(   -5) <> 3.125e-2 or
        floatExpr(2.0) ** intExpr(   -2) <> 0.25 or
        floatExpr(2.0) ** intExpr(   -1) <> 0.5 or
        floatExpr(2.0) ** intExpr(    0) <> 1.0 or
        floatExpr(2.0) ** intExpr(    1) <> 2.0 or
        floatExpr(2.0) ** intExpr(    2) <> 4.0 or
        floatExpr(2.0) ** intExpr(    5) <> 3.2e1 or
        floatExpr(2.0) ** intExpr(   10) <> 1.024e3 or
        floatExpr(2.0) ** intExpr(   20) <> 1.048576e6 or
        floatExpr(2.0) ** intExpr(   50) <> 1.125899906842624e15 or
        floatExpr(2.0) ** intExpr(  100) <> 1.267650600228229401496703205376e30 or
        floatExpr(2.0) ** intExpr(  200) <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
        floatExpr(2.0) ** intExpr(  500) <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
        floatExpr(2.0) ** intExpr( 1000) <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        floatExpr(2.0) ** intExpr(      2147483647) <> Infinity or
        floatExpr(2.0) ** intExpr(      2147483648) <> Infinity or
        floatExpr(2.0) ** intExpr(9007199254740992) <> Infinity or
        floatExpr(2.0) ** intExpr(9007199254740993) <> Infinity or
        floatExpr(2.0) ** intExpr(    integer.last) <> Infinity then
      writeln(" ***** 2.0 ** B with integer B does not work correct.");
      okay := FALSE;
    end if;

    if  4.0 **      integer.first  <> 0.0 or
        4.0 ** (-9007199254740993) <> 0.0 or
        4.0 ** (-9007199254740992) <> 0.0 or
        4.0 **       (-2147483649) <> 0.0 or
        4.0 **       (-2147483648) <> 0.0 or
        4.0 ** (-500) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        4.0 ** (-200) <> 3.872591914849318272818030633286351847570219192048790865487762941344416348097685964862682234277014596908057542507554467539370836398992350315522318050653350492002436065270530802738432038373174754090809367646454942400181270162578968846816261130394654088604511343874037265777587890625e-121 or
        4.0 ** (-100) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
        4.0 ** ( -50) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        4.0 ** ( -20) <> 9.094947017729282379150390625e-13 or
        4.0 ** ( -10) <> 9.5367431640625e-7 or
        4.0 ** (  -5) <> 9.765625e-4 or
        4.0 ** (  -2) <> 6.25e-2 or
        4.0 ** (  -1) <> 0.25 or
        4.0 **     0  <> 1.0 or
        4.0 **     1  <> 4.0 or
        4.0 **     2  <> 1.6e1 or
        4.0 **     5  <> 1.024e3 or
        4.0 **    10  <> 1.048576e6 or
        4.0 **    20  <> 1.099511627776e12 or
        4.0 **    50  <> 1.267650600228229401496703205376e30 or
        4.0 **   100  <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
        4.0 **   200  <> 2.582249878086908589655919172003011874329705792829223512830659356540647622016841194629645353280137831435903171972747493376e+120 or
        4.0 **   500  <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        4.0 **       2147483647 <> Infinity or
        4.0 **       2147483648 <> Infinity or
        4.0 ** 9007199254740992 <> Infinity or
        4.0 ** 9007199254740993 <> Infinity or
        4.0 **     integer.last <> Infinity or
        floatExpr(4.0) **      integer.first  <> 0.0 or
        floatExpr(4.0) ** (-9007199254740993) <> 0.0 or
        floatExpr(4.0) ** (-9007199254740992) <> 0.0 or
        floatExpr(4.0) **       (-2147483649) <> 0.0 or
        floatExpr(4.0) **       (-2147483648) <> 0.0 or
        floatExpr(4.0) ** (-500) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        floatExpr(4.0) ** (-200) <> 3.872591914849318272818030633286351847570219192048790865487762941344416348097685964862682234277014596908057542507554467539370836398992350315522318050653350492002436065270530802738432038373174754090809367646454942400181270162578968846816261130394654088604511343874037265777587890625e-121 or
        floatExpr(4.0) ** (-100) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
        floatExpr(4.0) ** ( -50) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        floatExpr(4.0) ** ( -20) <> 9.094947017729282379150390625e-13 or
        floatExpr(4.0) ** ( -10) <> 9.5367431640625e-7 or
        floatExpr(4.0) ** (  -5) <> 9.765625e-4 or
        floatExpr(4.0) ** (  -2) <> 6.25e-2 or
        floatExpr(4.0) ** (  -1) <> 0.25 or
        floatExpr(4.0) **     0  <> 1.0 or
        floatExpr(4.0) **     1  <> 4.0 or
        floatExpr(4.0) **     2  <> 1.6e1 or
        floatExpr(4.0) **     5  <> 1.024e3 or
        floatExpr(4.0) **    10  <> 1.048576e6 or
        floatExpr(4.0) **    20  <> 1.099511627776e12 or
        floatExpr(4.0) **    50  <> 1.267650600228229401496703205376e30 or
        floatExpr(4.0) **   100  <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
        floatExpr(4.0) **   200  <> 2.582249878086908589655919172003011874329705792829223512830659356540647622016841194629645353280137831435903171972747493376e+120 or
        floatExpr(4.0) **   500  <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        floatExpr(4.0) **       2147483647 <> Infinity or
        floatExpr(4.0) **       2147483648 <> Infinity or
        floatExpr(4.0) ** 9007199254740992 <> Infinity or
        floatExpr(4.0) ** 9007199254740993 <> Infinity or
        floatExpr(4.0) **     integer.last <> Infinity or
        4.0 ** intExpr(    integer.first) <> 0.0 or
        4.0 ** intExpr(-9007199254740993) <> 0.0 or
        4.0 ** intExpr(-9007199254740992) <> 0.0 or
        4.0 ** intExpr(      -2147483649) <> 0.0 or
        4.0 ** intExpr(      -2147483648) <> 0.0 or
        4.0 ** intExpr(-500) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        4.0 ** intExpr(-200) <> 3.872591914849318272818030633286351847570219192048790865487762941344416348097685964862682234277014596908057542507554467539370836398992350315522318050653350492002436065270530802738432038373174754090809367646454942400181270162578968846816261130394654088604511343874037265777587890625e-121 or
        4.0 ** intExpr(-100) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
        4.0 ** intExpr( -50) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        4.0 ** intExpr( -20) <> 9.094947017729282379150390625e-13 or
        4.0 ** intExpr( -10) <> 9.5367431640625e-7 or
        4.0 ** intExpr(  -5) <> 9.765625e-4 or
        4.0 ** intExpr(  -2) <> 6.25e-2 or
        4.0 ** intExpr(  -1) <> 0.25 or
        4.0 ** intExpr(   0) <> 1.0 or
        4.0 ** intExpr(   1) <> 4.0 or
        4.0 ** intExpr(   2) <> 1.6e1 or
        4.0 ** intExpr(   5) <> 1.024e3 or
        4.0 ** intExpr(  10) <> 1.048576e6 or
        4.0 ** intExpr(  20) <> 1.099511627776e12 or
        4.0 ** intExpr(  50) <> 1.267650600228229401496703205376e30 or
        4.0 ** intExpr( 100) <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
        4.0 ** intExpr( 200) <> 2.582249878086908589655919172003011874329705792829223512830659356540647622016841194629645353280137831435903171972747493376e+120 or
        4.0 ** intExpr( 500) <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        4.0 ** intExpr(      2147483647) <> Infinity or
        4.0 ** intExpr(      2147483648) <> Infinity or
        4.0 ** intExpr(9007199254740992) <> Infinity or
        4.0 ** intExpr(9007199254740993) <> Infinity or
        4.0 ** intExpr(    integer.last) <> Infinity or
        floatExpr(4.0) ** intExpr(    integer.first) <> 0.0 or
        floatExpr(4.0) ** intExpr(-9007199254740993) <> 0.0 or
        floatExpr(4.0) ** intExpr(-9007199254740992) <> 0.0 or
        floatExpr(4.0) ** intExpr(      -2147483649) <> 0.0 or
        floatExpr(4.0) ** intExpr(      -2147483648) <> 0.0 or
        floatExpr(4.0) ** intExpr(-500) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
        floatExpr(4.0) ** intExpr(-200) <> 3.872591914849318272818030633286351847570219192048790865487762941344416348097685964862682234277014596908057542507554467539370836398992350315522318050653350492002436065270530802738432038373174754090809367646454942400181270162578968846816261130394654088604511343874037265777587890625e-121 or
        floatExpr(4.0) ** intExpr(-100) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
        floatExpr(4.0) ** intExpr( -50) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
        floatExpr(4.0) ** intExpr( -20) <> 9.094947017729282379150390625e-13 or
        floatExpr(4.0) ** intExpr( -10) <> 9.5367431640625e-7 or
        floatExpr(4.0) ** intExpr(  -5) <> 9.765625e-4 or
        floatExpr(4.0) ** intExpr(  -2) <> 6.25e-2 or
        floatExpr(4.0) ** intExpr(  -1) <> 0.25 or
        floatExpr(4.0) ** intExpr(   0) <> 1.0 or
        floatExpr(4.0) ** intExpr(   1) <> 4.0 or
        floatExpr(4.0) ** intExpr(   2) <> 1.6e1 or
        floatExpr(4.0) ** intExpr(   5) <> 1.024e3 or
        floatExpr(4.0) ** intExpr(  10) <> 1.048576e6 or
        floatExpr(4.0) ** intExpr(  20) <> 1.099511627776e12 or
        floatExpr(4.0) ** intExpr(  50) <> 1.267650600228229401496703205376e30 or
        floatExpr(4.0) ** intExpr( 100) <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
        floatExpr(4.0) ** intExpr( 200) <> 2.582249878086908589655919172003011874329705792829223512830659356540647622016841194629645353280137831435903171972747493376e+120 or
        floatExpr(4.0) ** intExpr( 500) <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
        floatExpr(4.0) ** intExpr(      2147483647) <> Infinity or
        floatExpr(4.0) ** intExpr(      2147483648) <> Infinity or
        floatExpr(4.0) ** intExpr(9007199254740992) <> Infinity or
        floatExpr(4.0) ** intExpr(9007199254740993) <> Infinity or
        floatExpr(4.0) ** intExpr(    integer.last) <> Infinity then
      writeln(" ***** 4.0 ** B with integer B does not work correct.");
      okay := FALSE;
    end if;

    if  not isNaN(NaN **      integer.first ) or
        not isNaN(NaN ** (-9007199254740993)) or
        not isNaN(NaN ** (-9007199254740992)) or
        not isNaN(NaN **       (-4294967297)) or
        not isNaN(NaN **       (-4294967296)) or
        not isNaN(NaN **       (-4294967295)) or
        not isNaN(NaN **       (-2147483649)) or
        not isNaN(NaN **       (-2147483648)) or
        not isNaN(NaN **       (-2147483647)) or
        not isNaN(NaN **               (-30)) or
        not isNaN(NaN **               (-29)) or
        not isNaN(NaN **               (-28)) or
        not isNaN(NaN **               (-27)) or
        not isNaN(NaN **               (-26)) or
        not isNaN(NaN **               (-25)) or
        not isNaN(NaN **               (-24)) or
        not isNaN(NaN **               (-23)) or
        not isNaN(NaN **               (-22)) or
        not isNaN(NaN **               (-21)) or
        not isNaN(NaN **               (-20)) or
        not isNaN(NaN **               (-19)) or
        not isNaN(NaN **               (-18)) or
        not isNaN(NaN **               (-17)) or
        not isNaN(NaN **               (-16)) or
        not isNaN(NaN **               (-15)) or
        not isNaN(NaN **               (-14)) or
        not isNaN(NaN **               (-13)) or
        not isNaN(NaN **               (-12)) or
        not isNaN(NaN **               (-11)) or
        not isNaN(NaN **               (-10)) or
        not isNaN(NaN **                (-9)) or
        not isNaN(NaN **                (-8)) or
        not isNaN(NaN **                (-7)) or
        not isNaN(NaN **                (-6)) or
        not isNaN(NaN **                (-5)) or
        not isNaN(NaN **                (-4)) or
        not isNaN(NaN **                (-3)) or
        not isNaN(NaN **                (-2)) or
        not isNaN(NaN **                (-1)) or
        not isNaN(NaN **                  1 ) or
        not isNaN(NaN **                  2 ) or
        not isNaN(NaN **                  3 ) or
        not isNaN(NaN **                  4 ) or
        not isNaN(NaN **                  5 ) or
        not isNaN(NaN **                  6 ) or
        not isNaN(NaN **                  7 ) or
        not isNaN(NaN **                  8 ) or
        not isNaN(NaN **                  9 ) or
        not isNaN(NaN **                 10 ) or
        not isNaN(NaN **                 11 ) or
        not isNaN(NaN **                 12 ) or
        not isNaN(NaN **                 13 ) or
        not isNaN(NaN **                 14 ) or
        not isNaN(NaN **                 15 ) or
        not isNaN(NaN **                 16 ) or
        not isNaN(NaN **                 17 ) or
        not isNaN(NaN **                 18 ) or
        not isNaN(NaN **                 19 ) or
        not isNaN(NaN **                 20 ) or
        not isNaN(NaN **                 21 ) or
        not isNaN(NaN **                 22 ) or
        not isNaN(NaN **                 23 ) or
        not isNaN(NaN **                 24 ) or
        not isNaN(NaN **                 25 ) or
        not isNaN(NaN **                 26 ) or
        not isNaN(NaN **                 27 ) or
        not isNaN(NaN **                 28 ) or
        not isNaN(NaN **                 29 ) or
        not isNaN(NaN **                 30 ) or
        not isNaN(NaN **         2147483647 ) or
        not isNaN(NaN **         2147483648 ) or
        not isNaN(NaN **         2147483649 ) or
        not isNaN(NaN **         4294967295 ) or
        not isNaN(NaN **         4294967296 ) or
        not isNaN(NaN **         4294967297 ) or
        not isNaN(NaN **   9007199254740992 ) or
        not isNaN(NaN **   9007199254740993 ) or
        not isNaN(NaN **       integer.last ) or
        not isNaN(floatExpr(NaN) **      integer.first ) or
        not isNaN(floatExpr(NaN) ** (-9007199254740993)) or
        not isNaN(floatExpr(NaN) ** (-9007199254740992)) or
        not isNaN(floatExpr(NaN) **       (-4294967297)) or
        not isNaN(floatExpr(NaN) **       (-4294967296)) or
        not isNaN(floatExpr(NaN) **       (-4294967295)) or
        not isNaN(floatExpr(NaN) **       (-2147483649)) or
        not isNaN(floatExpr(NaN) **       (-2147483648)) or
        not isNaN(floatExpr(NaN) **       (-2147483647)) or
        not isNaN(floatExpr(NaN) **               (-30)) or
        not isNaN(floatExpr(NaN) **               (-29)) or
        not isNaN(floatExpr(NaN) **               (-28)) or
        not isNaN(floatExpr(NaN) **               (-27)) or
        not isNaN(floatExpr(NaN) **               (-26)) or
        not isNaN(floatExpr(NaN) **               (-25)) or
        not isNaN(floatExpr(NaN) **               (-24)) or
        not isNaN(floatExpr(NaN) **               (-23)) or
        not isNaN(floatExpr(NaN) **               (-22)) or
        not isNaN(floatExpr(NaN) **               (-21)) or
        not isNaN(floatExpr(NaN) **               (-20)) or
        not isNaN(floatExpr(NaN) **               (-19)) or
        not isNaN(floatExpr(NaN) **               (-18)) or
        not isNaN(floatExpr(NaN) **               (-17)) or
        not isNaN(floatExpr(NaN) **               (-16)) or
        not isNaN(floatExpr(NaN) **               (-15)) or
        not isNaN(floatExpr(NaN) **               (-14)) or
        not isNaN(floatExpr(NaN) **               (-13)) or
        not isNaN(floatExpr(NaN) **               (-12)) or
        not isNaN(floatExpr(NaN) **               (-11)) or
        not isNaN(floatExpr(NaN) **               (-10)) or
        not isNaN(floatExpr(NaN) **                (-9)) or
        not isNaN(floatExpr(NaN) **                (-8)) or
        not isNaN(floatExpr(NaN) **                (-7)) or
        not isNaN(floatExpr(NaN) **                (-6)) or
        not isNaN(floatExpr(NaN) **                (-5)) or
        not isNaN(floatExpr(NaN) **                (-4)) or
        not isNaN(floatExpr(NaN) **                (-3)) or
        not isNaN(floatExpr(NaN) **                (-2)) or
        not isNaN(floatExpr(NaN) **                (-1)) or
        not isNaN(floatExpr(NaN) **                  1 ) or
        not isNaN(floatExpr(NaN) **                  2 ) or
        not isNaN(floatExpr(NaN) **                  3 ) or
        not isNaN(floatExpr(NaN) **                  4 ) or
        not isNaN(floatExpr(NaN) **                  5 ) or
        not isNaN(floatExpr(NaN) **                  6 ) or
        not isNaN(floatExpr(NaN) **                  7 ) or
        not isNaN(floatExpr(NaN) **                  8 ) or
        not isNaN(floatExpr(NaN) **                  9 ) or
        not isNaN(floatExpr(NaN) **                 10 ) or
        not isNaN(floatExpr(NaN) **                 11 ) or
        not isNaN(floatExpr(NaN) **                 12 ) or
        not isNaN(floatExpr(NaN) **                 13 ) or
        not isNaN(floatExpr(NaN) **                 14 ) or
        not isNaN(floatExpr(NaN) **                 15 ) or
        not isNaN(floatExpr(NaN) **                 16 ) or
        not isNaN(floatExpr(NaN) **                 17 ) or
        not isNaN(floatExpr(NaN) **                 18 ) or
        not isNaN(floatExpr(NaN) **                 19 ) or
        not isNaN(floatExpr(NaN) **                 20 ) or
        not isNaN(floatExpr(NaN) **                 21 ) or
        not isNaN(floatExpr(NaN) **                 22 ) or
        not isNaN(floatExpr(NaN) **                 23 ) or
        not isNaN(floatExpr(NaN) **                 24 ) or
        not isNaN(floatExpr(NaN) **                 25 ) or
        not isNaN(floatExpr(NaN) **                 26 ) or
        not isNaN(floatExpr(NaN) **                 27 ) or
        not isNaN(floatExpr(NaN) **                 28 ) or
        not isNaN(floatExpr(NaN) **                 29 ) or
        not isNaN(floatExpr(NaN) **                 30 ) or
        not isNaN(floatExpr(NaN) **         2147483647 ) or
        not isNaN(floatExpr(NaN) **         2147483648 ) or
        not isNaN(floatExpr(NaN) **         2147483649 ) or
        not isNaN(floatExpr(NaN) **         4294967295 ) or
        not isNaN(floatExpr(NaN) **         4294967296 ) or
        not isNaN(floatExpr(NaN) **         4294967297 ) or
        not isNaN(floatExpr(NaN) **   9007199254740992 ) or
        not isNaN(floatExpr(NaN) **   9007199254740993 ) or
        not isNaN(floatExpr(NaN) **       integer.last ) or
        not isNaN(NaN ** intExpr(    integer.first)) or
        not isNaN(NaN ** intExpr(-9007199254740993)) or
        not isNaN(NaN ** intExpr(-9007199254740992)) or
        not isNaN(NaN ** intExpr(      -4294967297)) or
        not isNaN(NaN ** intExpr(      -4294967296)) or
        not isNaN(NaN ** intExpr(      -4294967295)) or
        not isNaN(NaN ** intExpr(      -2147483649)) or
        not isNaN(NaN ** intExpr(      -2147483648)) or
        not isNaN(NaN ** intExpr(      -2147483647)) or
        not isNaN(NaN ** intExpr(              -30)) or
        not isNaN(NaN ** intExpr(              -29)) or
        not isNaN(NaN ** intExpr(              -28)) or
        not isNaN(NaN ** intExpr(              -27)) or
        not isNaN(NaN ** intExpr(              -26)) or
        not isNaN(NaN ** intExpr(              -25)) or
        not isNaN(NaN ** intExpr(              -24)) or
        not isNaN(NaN ** intExpr(              -23)) or
        not isNaN(NaN ** intExpr(              -22)) or
        not isNaN(NaN ** intExpr(              -21)) or
        not isNaN(NaN ** intExpr(              -20)) or
        not isNaN(NaN ** intExpr(              -19)) or
        not isNaN(NaN ** intExpr(              -18)) or
        not isNaN(NaN ** intExpr(              -17)) or
        not isNaN(NaN ** intExpr(              -16)) or
        not isNaN(NaN ** intExpr(              -15)) or
        not isNaN(NaN ** intExpr(              -14)) or
        not isNaN(NaN ** intExpr(              -13)) or
        not isNaN(NaN ** intExpr(              -12)) or
        not isNaN(NaN ** intExpr(              -11)) or
        not isNaN(NaN ** intExpr(              -10)) or
        not isNaN(NaN ** intExpr(               -9)) or
        not isNaN(NaN ** intExpr(               -8)) or
        not isNaN(NaN ** intExpr(               -7)) or
        not isNaN(NaN ** intExpr(               -6)) or
        not isNaN(NaN ** intExpr(               -5)) or
        not isNaN(NaN ** intExpr(               -4)) or
        not isNaN(NaN ** intExpr(               -3)) or
        not isNaN(NaN ** intExpr(               -2)) or
        not isNaN(NaN ** intExpr(               -1)) or
        not isNaN(NaN ** intExpr(                1)) or
        not isNaN(NaN ** intExpr(                2)) or
        not isNaN(NaN ** intExpr(                3)) or
        not isNaN(NaN ** intExpr(                4)) or
        not isNaN(NaN ** intExpr(                5)) or
        not isNaN(NaN ** intExpr(                6)) or
        not isNaN(NaN ** intExpr(                7)) or
        not isNaN(NaN ** intExpr(                8)) or
        not isNaN(NaN ** intExpr(                9)) or
        not isNaN(NaN ** intExpr(               10)) or
        not isNaN(NaN ** intExpr(               11)) or
        not isNaN(NaN ** intExpr(               12)) or
        not isNaN(NaN ** intExpr(               13)) or
        not isNaN(NaN ** intExpr(               14)) or
        not isNaN(NaN ** intExpr(               15)) or
        not isNaN(NaN ** intExpr(               16)) or
        not isNaN(NaN ** intExpr(               17)) or
        not isNaN(NaN ** intExpr(               18)) or
        not isNaN(NaN ** intExpr(               19)) or
        not isNaN(NaN ** intExpr(               20)) or
        not isNaN(NaN ** intExpr(               21)) or
        not isNaN(NaN ** intExpr(               22)) or
        not isNaN(NaN ** intExpr(               23)) or
        not isNaN(NaN ** intExpr(               24)) or
        not isNaN(NaN ** intExpr(               25)) or
        not isNaN(NaN ** intExpr(               26)) or
        not isNaN(NaN ** intExpr(               27)) or
        not isNaN(NaN ** intExpr(               28)) or
        not isNaN(NaN ** intExpr(               29)) or
        not isNaN(NaN ** intExpr(               30)) or
        not isNaN(NaN ** intExpr(       2147483647)) or
        not isNaN(NaN ** intExpr(       2147483648)) or
        not isNaN(NaN ** intExpr(       2147483649)) or
        not isNaN(NaN ** intExpr(       4294967295)) or
        not isNaN(NaN ** intExpr(       4294967296)) or
        not isNaN(NaN ** intExpr(       4294967297)) or
        not isNaN(NaN ** intExpr( 9007199254740992)) or
        not isNaN(NaN ** intExpr( 9007199254740993)) or
        not isNaN(NaN ** intExpr(     integer.last)) or
        not isNaN(floatExpr(NaN) ** intExpr(    integer.first)) or
        not isNaN(floatExpr(NaN) ** intExpr(-9007199254740993)) or
        not isNaN(floatExpr(NaN) ** intExpr(-9007199254740992)) or
        not isNaN(floatExpr(NaN) ** intExpr(      -4294967297)) or
        not isNaN(floatExpr(NaN) ** intExpr(      -4294967296)) or
        not isNaN(floatExpr(NaN) ** intExpr(      -4294967295)) or
        not isNaN(floatExpr(NaN) ** intExpr(      -2147483649)) or
        not isNaN(floatExpr(NaN) ** intExpr(      -2147483648)) or
        not isNaN(floatExpr(NaN) ** intExpr(      -2147483647)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -30)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -29)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -28)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -27)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -26)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -25)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -24)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -23)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -22)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -21)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -20)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -19)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -18)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -17)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -16)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -15)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -14)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -13)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -12)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -11)) or
        not isNaN(floatExpr(NaN) ** intExpr(              -10)) or
        not isNaN(floatExpr(NaN) ** intExpr(               -9)) or
        not isNaN(floatExpr(NaN) ** intExpr(               -8)) or
        not isNaN(floatExpr(NaN) ** intExpr(               -7)) or
        not isNaN(floatExpr(NaN) ** intExpr(               -6)) or
        not isNaN(floatExpr(NaN) ** intExpr(               -5)) or
        not isNaN(floatExpr(NaN) ** intExpr(               -4)) or
        not isNaN(floatExpr(NaN) ** intExpr(               -3)) or
        not isNaN(floatExpr(NaN) ** intExpr(               -2)) or
        not isNaN(floatExpr(NaN) ** intExpr(               -1)) or
        not isNaN(floatExpr(NaN) ** intExpr(                1)) or
        not isNaN(floatExpr(NaN) ** intExpr(                2)) or
        not isNaN(floatExpr(NaN) ** intExpr(                3)) or
        not isNaN(floatExpr(NaN) ** intExpr(                4)) or
        not isNaN(floatExpr(NaN) ** intExpr(                5)) or
        not isNaN(floatExpr(NaN) ** intExpr(                6)) or
        not isNaN(floatExpr(NaN) ** intExpr(                7)) or
        not isNaN(floatExpr(NaN) ** intExpr(                8)) or
        not isNaN(floatExpr(NaN) ** intExpr(                9)) or
        not isNaN(floatExpr(NaN) ** intExpr(               10)) or
        not isNaN(floatExpr(NaN) ** intExpr(               11)) or
        not isNaN(floatExpr(NaN) ** intExpr(               12)) or
        not isNaN(floatExpr(NaN) ** intExpr(               13)) or
        not isNaN(floatExpr(NaN) ** intExpr(               14)) or
        not isNaN(floatExpr(NaN) ** intExpr(               15)) or
        not isNaN(floatExpr(NaN) ** intExpr(               16)) or
        not isNaN(floatExpr(NaN) ** intExpr(               17)) or
        not isNaN(floatExpr(NaN) ** intExpr(               18)) or
        not isNaN(floatExpr(NaN) ** intExpr(               19)) or
        not isNaN(floatExpr(NaN) ** intExpr(               20)) or
        not isNaN(floatExpr(NaN) ** intExpr(               21)) or
        not isNaN(floatExpr(NaN) ** intExpr(               22)) or
        not isNaN(floatExpr(NaN) ** intExpr(               23)) or
        not isNaN(floatExpr(NaN) ** intExpr(               24)) or
        not isNaN(floatExpr(NaN) ** intExpr(               25)) or
        not isNaN(floatExpr(NaN) ** intExpr(               26)) or
        not isNaN(floatExpr(NaN) ** intExpr(               27)) or
        not isNaN(floatExpr(NaN) ** intExpr(               28)) or
        not isNaN(floatExpr(NaN) ** intExpr(               29)) or
        not isNaN(floatExpr(NaN) ** intExpr(               30)) or
        not isNaN(floatExpr(NaN) ** intExpr(       2147483647)) or
        not isNaN(floatExpr(NaN) ** intExpr(       2147483648)) or
        not isNaN(floatExpr(NaN) ** intExpr(       2147483649)) or
        not isNaN(floatExpr(NaN) ** intExpr(       4294967295)) or
        not isNaN(floatExpr(NaN) ** intExpr(       4294967296)) or
        not isNaN(floatExpr(NaN) ** intExpr(       4294967297)) or
        not isNaN(floatExpr(NaN) ** intExpr( 9007199254740992)) or
        not isNaN(floatExpr(NaN) ** intExpr( 9007199254740993)) or
        not isNaN(floatExpr(NaN) ** intExpr(     integer.last)) then
      writeln(" ***** NaN ** B for integer B with B <> 0 not return NaN.");
      okay := FALSE;
    end if;

    if            NaN  **         0  <> 1.0 or
        floatExpr(NaN) **         0  <> 1.0 or
                  NaN  ** intExpr(0) <> 1.0 or
        floatExpr(NaN) ** intExpr(0) <> 1.0 then
      writeln(" ***** NaN ** 0 does not return 1.0.");
      okay := FALSE;
    end if;

    if okay 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 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: divAssignOkay is TRUE;
    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;

    floatVar :=  -1.0E37; floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar :=  -1.0E37; floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar :=  -1.0E37; floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar := minusBig; floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar := minusBig; floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar := minusBig; floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar :=     -1.0; floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar :=     -1.0; floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar :=     -1.0; floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar := minusOne; floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar := minusOne; floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar := minusOne; floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar :=      1.0; floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar :=      1.0; floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar :=      1.0; floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar :=   1.0E37; floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar :=   1.0E37; floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar :=   1.0E37; floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar :=  -1.0E37; floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar :=  -1.0E37; floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar :=  -1.0E37; floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar := minusBig; floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar := minusBig; floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar := minusBig; floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar :=     -1.0; floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar :=     -1.0; floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar :=     -1.0; floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar := minusOne; floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar := minusOne; floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar := minusOne; floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar :=      1.0; floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar :=      1.0; floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar :=      1.0; floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and floatVar =  Infinity;
    floatVar :=   1.0E37; floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar :=   1.0E37; floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and floatVar = -Infinity;
    floatVar :=   1.0E37; floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and floatVar =  Infinity;
    if not divAssignOkay then
      writeln(" ***** Assignment division by 0.0 does not assign 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
        log2(                -0.0)  <> -Infinity or
        log2(           minusZero)  <> -Infinity or
        log2(                 0.0)  <> -Infinity or
        log2( floatExpr(     -0.0)) <> -Infinity or
        log2( floatExpr(minusZero)) <> -Infinity or
        log2( 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: divAssignOkay is TRUE;
    var boolean: okay is TRUE;
  begin
    if  not isNaN(NaN) or
        not isNaN(floatExpr(NaN)) then
      writeln(" ***** isNaN(NaN) does not work correct.");
      okay := FALSE;
    end if;

    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(log2(-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;

    floatVar :=           NaN;  floatVar /:=           -Infinity;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:=            minusInf;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:=             -1.0E37;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:=            minusBig;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:=             -1000.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:=              1000.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:=              1.0E37;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:=            Infinity;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:=                 NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:=           -Infinity;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:=            minusInf;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:=             -1.0E37;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:=            minusBig;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:=             -1000.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:=              1000.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:=              1.0E37;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:=            Infinity;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:=                 NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:= floatExpr(-Infinity); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:= floatExpr( minusInf); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:= floatExpr(  -1.0E37); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:= floatExpr( minusBig); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:= floatExpr(  -1000.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:= floatExpr(   1000.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:= floatExpr(   1.0E37); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:= floatExpr( Infinity); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           NaN;  floatVar /:= floatExpr(      NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:= floatExpr(-Infinity); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:= floatExpr( minusInf); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:= floatExpr(  -1.0E37); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:= floatExpr( minusBig); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:= floatExpr(  -1000.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:= floatExpr(   1000.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:= floatExpr(   1.0E37); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:= floatExpr( Infinity); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(NaN); floatVar /:= floatExpr(      NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           -Infinity;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=            minusInf;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=             -1.0E37;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=            minusBig;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=             -1000.0;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=                -0.0;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           minusZero;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=                 0.0;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=              1000.0;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=              1.0E37;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=            Infinity;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=                 NaN;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           -Infinity;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=            minusInf;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=             -1.0E37;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=            minusBig;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=             -1000.0;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=                -0.0;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=           minusZero;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=                 0.0;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=              1000.0;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=              1.0E37;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=            Infinity;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar :=                 NaN;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(-Infinity); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr( minusInf); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(  -1.0E37); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr( minusBig); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(  -1000.0); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(     -0.0); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(minusZero); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(      0.0); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(   1000.0); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(   1.0E37); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr( Infinity); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(      NaN); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(-Infinity); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr( minusInf); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(  -1.0E37); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr( minusBig); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(  -1000.0); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(     -0.0); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(minusZero); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(      0.0); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(   1000.0); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(   1.0E37); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr( Infinity); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    floatVar := floatExpr(      NaN); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
    if not divAssignOkay 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: check_rand is func

  local
    var float: floatNum is 0.0;
    var boolean: raised is FALSE;
    var boolean: continued is FALSE;
    var boolean: okay is TRUE;
  begin
    block
      floatNum := rand(1.0, 0.0);
      continued := TRUE;
    exception
      catch RANGE_ERROR:
        raised := TRUE;
    end block;
    if not raised or continued then
      writeln(" ***** rand(1.0, 0.0) did not raise RANGE_ERROR.");
      okay := FALSE;
    end if;

    if okay then
      writeln("Rand works correct for selected values.");
    else
      writeln(" ***** Rand 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;
