1
2(********************************************************************)
3(*                                                                  *)
4(*  chkflt.sd7    Checks float literals and operations              *)
5(*  Copyright (C) 2007, 2008, 2010 - 2017  Thomas Mertes            *)
6(*                                                                  *)
7(*  This program is free software; you can redistribute it and/or   *)
8(*  modify it under the terms of the GNU General Public License as  *)
9(*  published by the Free Software Foundation; either version 2 of  *)
10(*  the License, or (at your option) any later version.             *)
11(*                                                                  *)
12(*  This program is distributed in the hope that it will be useful, *)
13(*  but WITHOUT ANY WARRANTY; without even the implied warranty of  *)
14(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   *)
15(*  GNU General Public License for more details.                    *)
16(*                                                                  *)
17(*  You should have received a copy of the GNU General Public       *)
18(*  License along with this program; if not, write to the           *)
19(*  Free Software Foundation, Inc., 51 Franklin Street,             *)
20(*  Fifth Floor, Boston, MA  02110-1301, USA.                       *)
21(*                                                                  *)
22(********************************************************************)
23
24
25$ include "seed7_05.s7i";
26  include "stdio.s7i";
27  include "float.s7i";
28  include "math.s7i";
29  include "bin64.s7i";
30
31
32const float: FLOAT_MIN is 2.22507385850720138309e-308;
33const float: FLOAT_MAX is 1.79769313486231570815e+308;
34
35
36const func string: striExpr (in string: stri) is
37  return stri & str(rand(1, 9))[2 ..];
38
39
40const func float: floatExpr (in float: number) is
41  return number;
42
43
44const func integer: intExpr (in integer: number) is
45  return number + length(str(rand(1, 9))[2 ..]);
46
47
48const func boolean: boolExpr (in boolean: okay) is
49  return boolean(ord(okay) + length(str(rand(1, 9))[2 ..]));
50
51
52const func boolean: raisesRangeError (ref func string: expression) is func
53  result
54    var boolean: raisesRangeError is FALSE;
55  local
56    var string: exprResult is "";
57  begin
58    block
59      exprResult := expression;
60    exception
61      catch RANGE_ERROR:
62        raisesRangeError := TRUE;
63    end block;
64  end func;
65
66
67const func boolean: raisesRangeError (ref func float: expression) is func
68  result
69    var boolean: raisesRangeError is FALSE;
70  local
71    var float: exprResult is 0.0;
72  begin
73    block
74      exprResult := expression;
75    exception
76      catch RANGE_ERROR:
77        raisesRangeError := TRUE;
78    end block;
79  end func;
80
81
82const func boolean: raisesRangeError (ref func integer: expression) is func
83  result
84    var boolean: raisesRangeError is FALSE;
85  local
86    var integer: exprResult is 0;
87  begin
88    block
89      exprResult := expression;
90    exception
91      catch RANGE_ERROR:
92        raisesRangeError := TRUE;
93    end block;
94  end func;
95
96
97const proc: check_literal is func
98  local
99    var boolean: okay is TRUE;
100  begin
101    if  bin64(          0.0) <> bin64(16#0000000000000000) or
102        bin64(         -0.0) <> bin64(16#8000000000000000_) or
103        bin64(          1.0) <> bin64(16#3ff0000000000000) or
104        bin64(         -1.0) <> bin64(16#bff0000000000000_) or
105        bin64( 123.456000000000000000000000000000000) <> bin64(16#405edd2f1a9fbe77) or
106        bin64(+123.456000000000000000000000000000000) <> bin64(16#405edd2f1a9fbe77) or
107        bin64(-123.456000000000000000000000000000000) <> bin64(16#c05edd2f1a9fbe77_) or
108        bin64( 0.00000000000000000000000000000000001) <> bin64(16#38aa95a5b7f87a0f) or
109        bin64(+0.00000000000000000000000000000000001) <> bin64(16#38aa95a5b7f87a0f) or
110        bin64(-0.00000000000000000000000000000000001) <> bin64(16#b8aa95a5b7f87a0f_) or
111        bin64( 00000000000000000000000000000000000.5) <> bin64(16#3fe0000000000000) or
112        bin64(+00000000000000000000000000000000000.5) <> bin64(16#3fe0000000000000) or
113        bin64(-00000000000000000000000000000000000.5) <> bin64(16#bfe0000000000000_) or
114        bin64( 9007199254740991.0) <> bin64(16#433fffffffffffff) or
115        bin64(-9007199254740991.0) <> bin64(16#c33fffffffffffff_) or
116        bin64(-9223372036854777856.0) <> bin64(16#c3e0000000000001_) or
117        bin64(-9223372036854775808.0) <> bin64(16#c3e0000000000000_) or
118        bin64(-9223372036854775807.0) <> bin64(16#c3e0000000000000_) or
119        bin64(-9223372036854774784.0) <> bin64(16#c3dfffffffffffff_) or
120        bin64(-9223372036854773760.0) <> bin64(16#c3dffffffffffffe_) or
121        bin64( 9223372036854773760.0) <> bin64(16#43dffffffffffffe) or
122        bin64( 9223372036854774784.0) <> bin64(16#43dfffffffffffff) or
123        bin64( 9223372036854775807.0) <> bin64(16#43e0000000000000) or
124        bin64( 9223372036854775808.0) <> bin64(16#43e0000000000000) or
125        bin64( 9223372036854777856.0) <> bin64(16#43e0000000000001) then
126      writeln(" ***** Float literals do not work correct.");
127      okay := FALSE;
128    end if;
129
130    if  bin64(                              1.0) <> bin64(16#3ff0000000000000) or
131        bin64(                              2.0) <> bin64(16#4000000000000000) or
132        bin64(                              4.0) <> bin64(16#4010000000000000) or
133        bin64(                              8.0) <> bin64(16#4020000000000000) or
134        bin64(                             16.0) <> bin64(16#4030000000000000) or
135        bin64(                             32.0) <> bin64(16#4040000000000000) or
136        bin64(                             64.0) <> bin64(16#4050000000000000) or
137        bin64(                            128.0) <> bin64(16#4060000000000000) or
138        bin64(                            256.0) <> bin64(16#4070000000000000) or
139        bin64(                            512.0) <> bin64(16#4080000000000000) or
140        bin64(                           1024.0) <> bin64(16#4090000000000000) or
141        bin64(                           2048.0) <> bin64(16#40a0000000000000) or
142        bin64(                           4096.0) <> bin64(16#40b0000000000000) or
143        bin64(                           8192.0) <> bin64(16#40c0000000000000) or
144        bin64(                          16384.0) <> bin64(16#40d0000000000000) or
145        bin64(                          32768.0) <> bin64(16#40e0000000000000) or
146        bin64(                          65536.0) <> bin64(16#40f0000000000000) or
147        bin64(                         131072.0) <> bin64(16#4100000000000000) or
148        bin64(                         262144.0) <> bin64(16#4110000000000000) or
149        bin64(                         524288.0) <> bin64(16#4120000000000000) or
150        bin64(                        1048576.0) <> bin64(16#4130000000000000) or
151        bin64(                        2097152.0) <> bin64(16#4140000000000000) or
152        bin64(                        4194304.0) <> bin64(16#4150000000000000) or
153        bin64(                        8388608.0) <> bin64(16#4160000000000000) or
154        bin64(                       16777216.0) <> bin64(16#4170000000000000) or
155        bin64(                       33554432.0) <> bin64(16#4180000000000000) or
156        bin64(                       67108864.0) <> bin64(16#4190000000000000) or
157        bin64(                      134217728.0) <> bin64(16#41a0000000000000) or
158        bin64(                      268435456.0) <> bin64(16#41b0000000000000) or
159        bin64(                      536870912.0) <> bin64(16#41c0000000000000) or
160        bin64(                     1073741824.0) <> bin64(16#41d0000000000000) or
161        bin64(                     2147483648.0) <> bin64(16#41e0000000000000) or
162        bin64(                     4294967296.0) <> bin64(16#41f0000000000000) or
163        bin64(                     8589934592.0) <> bin64(16#4200000000000000) or
164        bin64(                    17179869184.0) <> bin64(16#4210000000000000) or
165        bin64(                    34359738368.0) <> bin64(16#4220000000000000) or
166        bin64(                    68719476736.0) <> bin64(16#4230000000000000) or
167        bin64(                   137438953472.0) <> bin64(16#4240000000000000) or
168        bin64(                   274877906944.0) <> bin64(16#4250000000000000) or
169        bin64(                   549755813888.0) <> bin64(16#4260000000000000) or
170        bin64(                  1099511627776.0) <> bin64(16#4270000000000000) or
171        bin64(                  2199023255552.0) <> bin64(16#4280000000000000) or
172        bin64(                  4398046511104.0) <> bin64(16#4290000000000000) or
173        bin64(                  8796093022208.0) <> bin64(16#42a0000000000000) or
174        bin64(                 17592186044416.0) <> bin64(16#42b0000000000000) or
175        bin64(                 35184372088832.0) <> bin64(16#42c0000000000000) or
176        bin64(                 70368744177664.0) <> bin64(16#42d0000000000000) or
177        bin64(                140737488355328.0) <> bin64(16#42e0000000000000) or
178        bin64(                281474976710656.0) <> bin64(16#42f0000000000000) or
179        bin64(                562949953421312.0) <> bin64(16#4300000000000000) or
180        bin64(               1125899906842624.0) <> bin64(16#4310000000000000) or
181        bin64(               2251799813685248.0) <> bin64(16#4320000000000000) or
182        bin64(               4503599627370496.0) <> bin64(16#4330000000000000) or
183        bin64(               9007199254740992.0) <> bin64(16#4340000000000000) or
184        bin64(              18014398509481984.0) <> bin64(16#4350000000000000) or
185        bin64(              36028797018963968.0) <> bin64(16#4360000000000000) or
186        bin64(              72057594037927936.0) <> bin64(16#4370000000000000) or
187        bin64(             144115188075855872.0) <> bin64(16#4380000000000000) or
188        bin64(             288230376151711744.0) <> bin64(16#4390000000000000) or
189        bin64(             576460752303423488.0) <> bin64(16#43a0000000000000) or
190        bin64(            1152921504606846976.0) <> bin64(16#43b0000000000000) or
191        bin64(            2305843009213693952.0) <> bin64(16#43c0000000000000) or
192        bin64(            4611686018427387904.0) <> bin64(16#43d0000000000000) or
193        bin64(            9223372036854775808.0) <> bin64(16#43e0000000000000) or
194        bin64(           18446744073709551616.0) <> bin64(16#43f0000000000000) or
195        bin64(           36893488147419103232.0) <> bin64(16#4400000000000000) or
196        bin64(           73786976294838206464.0) <> bin64(16#4410000000000000) or
197        bin64(          147573952589676412928.0) <> bin64(16#4420000000000000) or
198        bin64(          295147905179352825856.0) <> bin64(16#4430000000000000) or
199        bin64(          590295810358705651712.0) <> bin64(16#4440000000000000) or
200        bin64(         1180591620717411303424.0) <> bin64(16#4450000000000000) or
201        bin64(         2361183241434822606848.0) <> bin64(16#4460000000000000) or
202        bin64(         4722366482869645213696.0) <> bin64(16#4470000000000000) or
203        bin64(         9444732965739290427392.0) <> bin64(16#4480000000000000) or
204        bin64(        18889465931478580854784.0) <> bin64(16#4490000000000000) or
205        bin64(        37778931862957161709568.0) <> bin64(16#44a0000000000000) or
206        bin64(        75557863725914323419136.0) <> bin64(16#44b0000000000000) or
207        bin64(       151115727451828646838272.0) <> bin64(16#44c0000000000000) or
208        bin64(       302231454903657293676544.0) <> bin64(16#44d0000000000000) or
209        bin64(       604462909807314587353088.0) <> bin64(16#44e0000000000000) or
210        bin64(      1208925819614629174706176.0) <> bin64(16#44f0000000000000) or
211        bin64(      2417851639229258349412352.0) <> bin64(16#4500000000000000) or
212        bin64(      4835703278458516698824704.0) <> bin64(16#4510000000000000) or
213        bin64(      9671406556917033397649408.0) <> bin64(16#4520000000000000) or
214        bin64(     19342813113834066795298816.0) <> bin64(16#4530000000000000) or
215        bin64(     38685626227668133590597632.0) <> bin64(16#4540000000000000) or
216        bin64(     77371252455336267181195264.0) <> bin64(16#4550000000000000) or
217        bin64(     15474250491067253436239052.0) <> bin64(16#452999999999999a) or
218        bin64(     30948500982134506872478105.0) <> bin64(16#453999999999999a) or
219        bin64(    618970019642690137449562112.0) <> bin64(16#4580000000000000) or
220        bin64(   1237940039285380274899124224.0) <> bin64(16#4590000000000000) or
221        bin64(   2475880078570760549798248448.0) <> bin64(16#45a0000000000000) or
222        bin64(   4951760157141521099596496896.0) <> bin64(16#45b0000000000000) or
223        bin64(   9903520314283042199192993792.0) <> bin64(16#45c0000000000000) or
224        bin64(  19807040628566084398385987584.0) <> bin64(16#45d0000000000000) or
225        bin64(  39614081257132168796771975168.0) <> bin64(16#45e0000000000000) or
226        bin64(  79228162514264337593543950336.0) <> bin64(16#45f0000000000000) or
227        bin64( 158456325028528675187087900672.0) <> bin64(16#4600000000000000) or
228        bin64( 316912650057057350374175801344.0) <> bin64(16#4610000000000000) or
229        bin64( 633825300114114700748351602688.0) <> bin64(16#4620000000000000) or
230        bin64(1267650600228229401496703205376.0) <> bin64(16#4630000000000000) then
231      writeln(" ***** Float literals with power of two do not work correct. (1)");
232      okay := FALSE;
233    end if;
234
235    if  bin64(0.5)                               <> bin64(16#3fe0000000000000) or
236        bin64(0.25)                              <> bin64(16#3fd0000000000000) or
237        bin64(0.125)                             <> bin64(16#3fc0000000000000) or
238        bin64(0.0625)                            <> bin64(16#3fb0000000000000) or
239        bin64(0.03125)                           <> bin64(16#3fa0000000000000) or
240        bin64(0.015625)                          <> bin64(16#3f90000000000000) or
241        bin64(0.0078125)                         <> bin64(16#3f80000000000000) or
242        bin64(0.00390625)                        <> bin64(16#3f70000000000000) or
243        bin64(0.001953125)                       <> bin64(16#3f60000000000000) or
244        bin64(0.0009765625)                      <> bin64(16#3f50000000000000) or
245        bin64(0.00048828125)                     <> bin64(16#3f40000000000000) or
246        bin64(0.000244140625)                    <> bin64(16#3f30000000000000) or
247        bin64(0.0001220703125)                   <> bin64(16#3f20000000000000) or
248        bin64(0.00006103515625)                  <> bin64(16#3f10000000000000) or
249        bin64(0.000030517578125)                 <> bin64(16#3f00000000000000) or
250        bin64(0.0000152587890625)                <> bin64(16#3ef0000000000000) or
251        bin64(0.00000762939453125)               <> bin64(16#3ee0000000000000) or
252        bin64(0.000003814697265625)              <> bin64(16#3ed0000000000000) or
253        bin64(0.0000019073486328125)             <> bin64(16#3ec0000000000000) or
254        bin64(0.00000095367431640625)            <> bin64(16#3eb0000000000000) or
255        bin64(0.000000476837158203125)           <> bin64(16#3ea0000000000000) or
256        bin64(0.0000002384185791015625)          <> bin64(16#3e90000000000000) or
257        bin64(0.00000011920928955078125)         <> bin64(16#3e80000000000000) or
258        bin64(0.000000059604644775390625)        <> bin64(16#3e70000000000000) or
259        bin64(0.0000000298023223876953125)       <> bin64(16#3e60000000000000) or
260        bin64(0.00000001490116119384765625)      <> bin64(16#3e50000000000000) or
261        bin64(0.000000007450580596923828125)     <> bin64(16#3e40000000000000) or
262        bin64(0.0000000037252902984619140625)    <> bin64(16#3e30000000000000) or
263        bin64(0.00000000186264514923095703125)   <> bin64(16#3e20000000000000) or
264        bin64(0.000000000931322574615478515625)  <> bin64(16#3e10000000000000) or
265        bin64(0.0000000004656612873077392578125) <> bin64(16#3e00000000000000) or
266        bin64(0.00000000023283064365386962890625)                                            <> bin64(16#3df0000000000000) or
267        bin64(0.000000000116415321826934814453125)                                           <> bin64(16#3de0000000000000) or
268        bin64(0.0000000000582076609134674072265625)                                          <> bin64(16#3dd0000000000000) or
269        bin64(0.00000000002910383045673370361328125)                                         <> bin64(16#3dc0000000000000) or
270        bin64(0.000000000014551915228366851806640625)                                        <> bin64(16#3db0000000000000) or
271        bin64(0.0000000000072759576141834259033203125)                                       <> bin64(16#3da0000000000000) or
272        bin64(0.00000000000363797880709171295166015625)                                      <> bin64(16#3d90000000000000) or
273        bin64(0.000000000001818989403545856475830078125)                                     <> bin64(16#3d80000000000000) or
274        bin64(0.0000000000009094947017729282379150390625)                                    <> bin64(16#3d70000000000000) or
275        bin64(0.00000000000045474735088646411895751953125)                                   <> bin64(16#3d60000000000000) or
276        bin64(0.000000000000227373675443232059478759765625)                                  <> bin64(16#3d50000000000000) or
277        bin64(0.0000000000001136868377216160297393798828125)                                 <> bin64(16#3d40000000000000) or
278        bin64(0.00000000000005684341886080801486968994140625)                                <> bin64(16#3d30000000000000) or
279        bin64(0.000000000000028421709430404007434844970703125)                               <> bin64(16#3d20000000000000) or
280        bin64(0.0000000000000142108547152020037174224853515625)                              <> bin64(16#3d10000000000000) or
281        bin64(0.00000000000000710542735760100185871124267578125)                             <> bin64(16#3d00000000000000) or
282        bin64(0.000000000000003552713678800500929355621337890625)                            <> bin64(16#3cf0000000000000) or
283        bin64(0.0000000000000017763568394002504646778106689453125)                           <> bin64(16#3ce0000000000000) or
284        bin64(0.00000000000000088817841970012523233890533447265625)                          <> bin64(16#3cd0000000000000) or
285        bin64(0.000000000000000444089209850062616169452667236328125)                         <> bin64(16#3cc0000000000000) or
286        bin64(0.0000000000000002220446049250313080847263336181640625)                        <> bin64(16#3cb0000000000000) or
287        bin64(0.00000000000000011102230246251565404236316680908203125)                       <> bin64(16#3ca0000000000000) or
288        bin64(0.000000000000000055511151231257827021181583404541015625)                      <> bin64(16#3c90000000000000) or
289        bin64(0.0000000000000000277555756156289135105907917022705078125)                     <> bin64(16#3c80000000000000) or
290        bin64(0.00000000000000001387778780781445675529539585113525390625)                    <> bin64(16#3c70000000000000) or
291        bin64(0.000000000000000006938893903907228377647697925567626953125)                   <> bin64(16#3c60000000000000) or
292        bin64(0.0000000000000000034694469519536141888238489627838134765625)                  <> bin64(16#3c50000000000000) or
293        bin64(0.00000000000000000173472347597680709441192448139190673828125)                 <> bin64(16#3c40000000000000) or
294        bin64(0.000000000000000000867361737988403547205962240695953369140625)                <> bin64(16#3c30000000000000) or
295        bin64(0.0000000000000000004336808689942017736029811203479766845703125)               <> bin64(16#3c20000000000000) or
296        bin64(0.00000000000000000021684043449710088680149056017398834228515625)              <> bin64(16#3c10000000000000) or
297        bin64(0.000000000000000000108420217248550443400745280086994171142578125)             <> bin64(16#3c00000000000000) or
298        bin64(0.0000000000000000000542101086242752217003726400434970855712890625)            <> bin64(16#3bf0000000000000) or
299        bin64(0.00000000000000000002710505431213761085018632002174854278564453125)           <> bin64(16#3be0000000000000) or
300        bin64(0.000000000000000000013552527156068805425093160010874271392822265625)          <> bin64(16#3bd0000000000000) or
301        bin64(0.0000000000000000000067762635780344027125465800054371356964111328125)         <> bin64(16#3bc0000000000000) or
302        bin64(0.00000000000000000000338813178901720135627329000271856784820556640625)        <> bin64(16#3bb0000000000000) or
303        bin64(0.000000000000000000001694065894508600678136645001359283924102783203125)       <> bin64(16#3ba0000000000000) or
304        bin64(0.0000000000000000000008470329472543003390683225006796419620513916015625)      <> bin64(16#3b90000000000000) or
305        bin64(0.00000000000000000000042351647362715016953416125033982098102569580078125)     <> bin64(16#3b80000000000000) or
306        bin64(0.000000000000000000000211758236813575084767080625169910490512847900390625)    <> bin64(16#3b70000000000000) or
307        bin64(0.0000000000000000000001058791184067875423835403125849552452564239501953125)   <> bin64(16#3b60000000000000) or
308        bin64(0.00000000000000000000005293955920339377119177015629247762262821197509765625)  <> bin64(16#3b50000000000000) or
309        bin64(0.000000000000000000000026469779601696885595885078146238811314105987548828125) <> bin64(16#3b40000000000000) then
310      writeln(" ***** Float literals with power of two do not work correct. (2)");
311      okay := FALSE;
312    end if;
313
314    if  bin64(1.0e-324) <> bin64(16#0000000000000000) or
315        bin64(1.0e-323) <> bin64(16#0000000000000002) or
316        bin64(1.0e-322) <> bin64(16#0000000000000014) or
317        bin64(1.0e-321) <> bin64(16#00000000000000ca) or
318        bin64(1.0e-320) <> bin64(16#00000000000007e8) or
319        bin64(1.0e-315) <> bin64(16#000000000c1069cd) or
320        bin64(1.0e-310) <> bin64(16#000012688b70e62b) or
321      # bin64(1.0e-309) <> bin64(16#0000b8157268fdaf) or  # Problem with MSVC
322        bin64(1.0e-308) <> bin64(16#000730d67819e8d2) or
323        bin64(1.0e-307) <> bin64(16#0031fa182c40c60d) or
324        bin64(1.0e-300) <> bin64(16#01a56e1fc2f8f359) or
325        bin64(1.0e-275) <> bin64(16#06d62884f31e93ff) or
326        bin64(1.0e-250) <> bin64(16#0c06e93f5da2824c) or
327        bin64(1.0e-225) <> bin64(16#1137b08617a104ee) or
328        bin64(1.0e-200) <> bin64(16#16687e92154ef7ac) or
329        bin64(1.0e-175) <> bin64(16#1b99539e3a40dfb8) or
330        bin64(1.0e-150) <> bin64(16#20ca2fe76a3f9475) or
331        bin64(1.0e-125) <> bin64(16#25fb13ac9aaf4c0f) or
332        bin64(1.0e-101) <> bin64(16#2af665bf1d3e6a8d) or
333        bin64(1.0e-100) <> bin64(16#2b2bff2ee48e0530) or
334        bin64(1.0e-99 ) <> bin64(16#2b617f7d4ed8c33e) or
335        bin64(1.0e-75 ) <> bin64(16#305cf2b1970e7258) or
336        bin64(1.0e-50 ) <> bin64(16#358dee7a4ad4b81f) or
337        bin64(1.0e-25 ) <> bin64(16#3abef2d0f5da7dd9) or
338        bin64(1.0e-20 ) <> bin64(16#3bc79ca10c924223) or
339        bin64(1.0e-15 ) <> bin64(16#3cd203af9ee75616) or
340        bin64(1.0e-11 ) <> bin64(16#3da5fd7fe1796495) or
341        bin64(1.0e-10 ) <> bin64(16#3ddb7cdfd9d7bdbb) or
342        bin64(1.0e-9  ) <> bin64(16#3e112e0be826d695) or
343        bin64(1.0e-2  ) <> bin64(16#3f847ae147ae147b) or
344        bin64(1.0e-1  ) <> bin64(16#3fb999999999999a) or
345        bin64(1.0e0   ) <> bin64(16#3ff0000000000000) or
346        bin64(1.0e1   ) <> bin64(16#4024000000000000) or
347        bin64(1.0e2   ) <> bin64(16#4059000000000000) or
348        bin64(1.0e9   ) <> bin64(16#41cdcd6500000000) or
349        bin64(1.0e10  ) <> bin64(16#4202a05f20000000) or
350        bin64(1.0e11  ) <> bin64(16#42374876e8000000) or
351        bin64(1.0e15  ) <> bin64(16#430c6bf526340000) or
352        bin64(1.0e20  ) <> bin64(16#4415af1d78b58c40) or
353        bin64(1.0e25  ) <> bin64(16#45208b2a2c280291) or
354        bin64(1.0e50  ) <> bin64(16#4a511b0ec57e649a) or
355        bin64(1.0e75  ) <> bin64(16#4f81afd6ec0e1411) or
356        bin64(1.0e99  ) <> bin64(16#547d42aea2879f2e) or
357        bin64(1.0e100 ) <> bin64(16#54b249ad2594c37d) or
358        bin64(1.0e101 ) <> bin64(16#54e6dc186ef9f45c) or
359        bin64(1.0e125 ) <> bin64(16#59e2e8bd69aa19cc) or
360        bin64(1.0e150 ) <> bin64(16#5f138d352e5096af) or
361        bin64(1.0e175 ) <> bin64(16#6444374374f3c2c6) or
362        bin64(1.0e200 ) <> bin64(16#6974e718d7d7625a) or
363        bin64(1.0e225 ) <> bin64(16#6ea59ce797fb817f) or
364        bin64(1.0e250 ) <> bin64(16#73d658e3ab795204) or
365        bin64(1.0e275 ) <> bin64(16#79071b42cc5cf601) or
366        bin64(1.0e300 ) <> bin64(16#7e37e43c8800759c) or
367        bin64(1.0e307 ) <> bin64(16#7fac7b1f3cac7433) or
368      # bin64(1.0e308 ) <> bin64(16#7fe1ccf385ebc8a0) or  # Problem with BCC v5
369        bin64(1.0e309 ) <> bin64(16#7ff0000000000000) then
370      writeln(" ***** Float literals with exponent do not work correct.");
371      okay := FALSE;
372    end if;
373
374    if okay then
375      writeln("Float literals work correct.");
376    end if;
377  end func;
378
379
380const proc: check_comparison is func
381  local
382    var boolean: okay is TRUE;
383  begin
384    if  not           -Infinity  =           -Infinity  or
385                      -Infinity  =             -1.0E37  or
386                      -Infinity  =             -1000.0  or
387                      -Infinity  =                -0.0  or
388                      -Infinity  =                 0.0  or
389                      -Infinity  =              1000.0  or
390                      -Infinity  =              1.0E37  or
391                      -Infinity  =            Infinity  or
392                        -1.0E37  =           -Infinity  or
393        not             -1.0E37  =             -1.0E37  or
394                        -1.0E37  =             -1000.0  or
395                        -1.0E37  =                -0.0  or
396                        -1.0E37  =                 0.0  or
397                        -1.0E37  =              1000.0  or
398                        -1.0E37  =              1.0E37  or
399                        -1.0E37  =            Infinity  or
400                        -1000.0  =           -Infinity  or
401                        -1000.0  =             -1.0E37  or
402        not             -1000.0  =             -1000.0  or
403                        -1000.0  =                -0.0  or
404                        -1000.0  =                 0.0  or
405                        -1000.0  =              1000.0  or
406                        -1000.0  =              1.0E37  or
407                        -1000.0  =            Infinity  or
408                           -0.0  =           -Infinity  or
409                           -0.0  =             -1.0E37  or
410                           -0.0  =             -1000.0  or
411        not                -0.0  =                -0.0  or
412        not                -0.0  =                 0.0  or
413                           -0.0  =              1000.0  or
414                           -0.0  =              1.0E37  or
415                           -0.0  =            Infinity  or
416                            0.0  =           -Infinity  or
417                            0.0  =             -1.0E37  or
418                            0.0  =             -1000.0  or
419        not                 0.0  =                -0.0  or
420        not                 0.0  =                 0.0  or
421                            0.0  =              1000.0  or
422                            0.0  =              1.0E37  or
423                            0.0  =            Infinity  or
424                         1000.0  =           -Infinity  or
425                         1000.0  =             -1.0E37  or
426                         1000.0  =             -1000.0  or
427                         1000.0  =                -0.0  or
428                         1000.0  =                 0.0  or
429        not              1000.0  =              1000.0  or
430                         1000.0  =              1.0E37  or
431                         1000.0  =            Infinity  or
432                         1.0E37  =           -Infinity  or
433                         1.0E37  =             -1.0E37  or
434                         1.0E37  =             -1000.0  or
435                         1.0E37  =                -0.0  or
436                         1.0E37  =                 0.0  or
437                         1.0E37  =              1000.0  or
438        not              1.0E37  =              1.0E37  or
439                         1.0E37  =            Infinity  or
440                       Infinity  =           -Infinity  or
441                       Infinity  =             -1.0E37  or
442                       Infinity  =             -1000.0  or
443                       Infinity  =                -0.0  or
444                       Infinity  =                 0.0  or
445                       Infinity  =              1000.0  or
446                       Infinity  =              1.0E37  or
447        not            Infinity  =            Infinity  or
448        not floatExpr(-Infinity) =           -Infinity  or
449            floatExpr(-Infinity) =             -1.0E37  or
450            floatExpr(-Infinity) =             -1000.0  or
451            floatExpr(-Infinity) =                -0.0  or
452            floatExpr(-Infinity) =                 0.0  or
453            floatExpr(-Infinity) =              1000.0  or
454            floatExpr(-Infinity) =              1.0E37  or
455            floatExpr(-Infinity) =            Infinity  or
456            floatExpr(  -1.0E37) =           -Infinity  or
457        not floatExpr(  -1.0E37) =             -1.0E37  or
458            floatExpr(  -1.0E37) =             -1000.0  or
459            floatExpr(  -1.0E37) =                -0.0  or
460            floatExpr(  -1.0E37) =                 0.0  or
461            floatExpr(  -1.0E37) =              1000.0  or
462            floatExpr(  -1.0E37) =              1.0E37  or
463            floatExpr(  -1.0E37) =            Infinity  or
464            floatExpr(  -1000.0) =           -Infinity  or
465            floatExpr(  -1000.0) =             -1.0E37  or
466        not floatExpr(  -1000.0) =             -1000.0  or
467            floatExpr(  -1000.0) =                -0.0  or
468            floatExpr(  -1000.0) =                 0.0  or
469            floatExpr(  -1000.0) =              1000.0  or
470            floatExpr(  -1000.0) =              1.0E37  or
471            floatExpr(  -1000.0) =            Infinity  or
472            floatExpr(     -0.0) =           -Infinity  or
473            floatExpr(     -0.0) =             -1.0E37  or
474            floatExpr(     -0.0) =             -1000.0  or
475        not floatExpr(     -0.0) =                -0.0  or
476        not floatExpr(     -0.0) =                 0.0  or
477            floatExpr(     -0.0) =              1000.0  or
478            floatExpr(     -0.0) =              1.0E37  or
479            floatExpr(     -0.0) =            Infinity  or
480            floatExpr(      0.0) =           -Infinity  or
481            floatExpr(      0.0) =             -1.0E37  or
482            floatExpr(      0.0) =             -1000.0  or
483        not floatExpr(      0.0) =                -0.0  or
484        not floatExpr(      0.0) =                 0.0  or
485            floatExpr(      0.0) =              1000.0  or
486            floatExpr(      0.0) =              1.0E37  or
487            floatExpr(      0.0) =            Infinity  or
488            floatExpr(   1000.0) =           -Infinity  or
489            floatExpr(   1000.0) =             -1.0E37  or
490            floatExpr(   1000.0) =             -1000.0  or
491            floatExpr(   1000.0) =                -0.0  or
492            floatExpr(   1000.0) =                 0.0  or
493        not floatExpr(   1000.0) =              1000.0  or
494            floatExpr(   1000.0) =              1.0E37  or
495            floatExpr(   1000.0) =            Infinity  or
496            floatExpr(   1.0E37) =           -Infinity  or
497            floatExpr(   1.0E37) =             -1.0E37  or
498            floatExpr(   1.0E37) =             -1000.0  or
499            floatExpr(   1.0E37) =                -0.0  or
500            floatExpr(   1.0E37) =                 0.0  or
501            floatExpr(   1.0E37) =              1000.0  or
502        not floatExpr(   1.0E37) =              1.0E37  or
503            floatExpr(   1.0E37) =            Infinity  or
504            floatExpr( Infinity) =           -Infinity  or
505            floatExpr( Infinity) =             -1.0E37  or
506            floatExpr( Infinity) =             -1000.0  or
507            floatExpr( Infinity) =                -0.0  or
508            floatExpr( Infinity) =                 0.0  or
509            floatExpr( Infinity) =              1000.0  or
510            floatExpr( Infinity) =              1.0E37  or
511        not floatExpr( Infinity) =            Infinity  or
512        not           -Infinity  = floatExpr(-Infinity) or
513                      -Infinity  = floatExpr(  -1.0E37) or
514                      -Infinity  = floatExpr(  -1000.0) or
515                      -Infinity  = floatExpr(     -0.0) or
516                      -Infinity  = floatExpr(      0.0) or
517                      -Infinity  = floatExpr(   1000.0) or
518                      -Infinity  = floatExpr(   1.0E37) or
519                      -Infinity  = floatExpr( Infinity) or
520                        -1.0E37  = floatExpr(-Infinity) or
521        not             -1.0E37  = floatExpr(  -1.0E37) or
522                        -1.0E37  = floatExpr(  -1000.0) or
523                        -1.0E37  = floatExpr(     -0.0) or
524                        -1.0E37  = floatExpr(      0.0) or
525                        -1.0E37  = floatExpr(   1000.0) or
526                        -1.0E37  = floatExpr(   1.0E37) or
527                        -1.0E37  = floatExpr( Infinity) or
528                        -1000.0  = floatExpr(-Infinity) or
529                        -1000.0  = floatExpr(  -1.0E37) or
530        not             -1000.0  = floatExpr(  -1000.0) or
531                        -1000.0  = floatExpr(     -0.0) or
532                        -1000.0  = floatExpr(      0.0) or
533                        -1000.0  = floatExpr(   1000.0) or
534                        -1000.0  = floatExpr(   1.0E37) or
535                        -1000.0  = floatExpr( Infinity) or
536                           -0.0  = floatExpr(-Infinity) or
537                           -0.0  = floatExpr(  -1.0E37) or
538                           -0.0  = floatExpr(  -1000.0) or
539        not                -0.0  = floatExpr(     -0.0) or
540        not                -0.0  = floatExpr(      0.0) or
541                           -0.0  = floatExpr(   1000.0) or
542                           -0.0  = floatExpr(   1.0E37) or
543                           -0.0  = floatExpr( Infinity) or
544                            0.0  = floatExpr(-Infinity) or
545                            0.0  = floatExpr(  -1.0E37) or
546                            0.0  = floatExpr(  -1000.0) or
547        not                 0.0  = floatExpr(     -0.0) or
548        not                 0.0  = floatExpr(      0.0) or
549                            0.0  = floatExpr(   1000.0) or
550                            0.0  = floatExpr(   1.0E37) or
551                            0.0  = floatExpr( Infinity) or
552                         1000.0  = floatExpr(-Infinity) or
553                         1000.0  = floatExpr(  -1.0E37) or
554                         1000.0  = floatExpr(  -1000.0) or
555                         1000.0  = floatExpr(     -0.0) or
556                         1000.0  = floatExpr(      0.0) or
557        not              1000.0  = floatExpr(   1000.0) or
558                         1000.0  = floatExpr(   1.0E37) or
559                         1000.0  = floatExpr( Infinity) or
560                         1.0E37  = floatExpr(-Infinity) or
561                         1.0E37  = floatExpr(  -1.0E37) or
562                         1.0E37  = floatExpr(  -1000.0) or
563                         1.0E37  = floatExpr(     -0.0) or
564                         1.0E37  = floatExpr(      0.0) or
565                         1.0E37  = floatExpr(   1000.0) or
566        not              1.0E37  = floatExpr(   1.0E37) or
567                         1.0E37  = floatExpr( Infinity) or
568                       Infinity  = floatExpr(-Infinity) or
569                       Infinity  = floatExpr(  -1.0E37) or
570                       Infinity  = floatExpr(  -1000.0) or
571                       Infinity  = floatExpr(     -0.0) or
572                       Infinity  = floatExpr(      0.0) or
573                       Infinity  = floatExpr(   1000.0) or
574                       Infinity  = floatExpr(   1.0E37) or
575        not            Infinity  = floatExpr( Infinity) or
576        not floatExpr(-Infinity) = floatExpr(-Infinity) or
577            floatExpr(-Infinity) = floatExpr(  -1.0E37) or
578            floatExpr(-Infinity) = floatExpr(  -1000.0) or
579            floatExpr(-Infinity) = floatExpr(     -0.0) or
580            floatExpr(-Infinity) = floatExpr(      0.0) or
581            floatExpr(-Infinity) = floatExpr(   1000.0) or
582            floatExpr(-Infinity) = floatExpr(   1.0E37) or
583            floatExpr(-Infinity) = floatExpr( Infinity) or
584            floatExpr(  -1.0E37) = floatExpr(-Infinity) or
585        not floatExpr(  -1.0E37) = floatExpr(  -1.0E37) or
586            floatExpr(  -1.0E37) = floatExpr(  -1000.0) or
587            floatExpr(  -1.0E37) = floatExpr(     -0.0) or
588            floatExpr(  -1.0E37) = floatExpr(      0.0) or
589            floatExpr(  -1.0E37) = floatExpr(   1000.0) or
590            floatExpr(  -1.0E37) = floatExpr(   1.0E37) or
591            floatExpr(  -1.0E37) = floatExpr( Infinity) or
592            floatExpr(  -1000.0) = floatExpr(-Infinity) or
593            floatExpr(  -1000.0) = floatExpr(  -1.0E37) or
594        not floatExpr(  -1000.0) = floatExpr(  -1000.0) or
595            floatExpr(  -1000.0) = floatExpr(     -0.0) or
596            floatExpr(  -1000.0) = floatExpr(      0.0) or
597            floatExpr(  -1000.0) = floatExpr(   1000.0) or
598            floatExpr(  -1000.0) = floatExpr(   1.0E37) or
599            floatExpr(  -1000.0) = floatExpr( Infinity) or
600            floatExpr(     -0.0) = floatExpr(-Infinity) or
601            floatExpr(     -0.0) = floatExpr(  -1.0E37) or
602            floatExpr(     -0.0) = floatExpr(  -1000.0) or
603        not floatExpr(     -0.0) = floatExpr(     -0.0) or
604        not floatExpr(     -0.0) = floatExpr(      0.0) or
605            floatExpr(     -0.0) = floatExpr(   1000.0) or
606            floatExpr(     -0.0) = floatExpr(   1.0E37) or
607            floatExpr(     -0.0) = floatExpr( Infinity) or
608            floatExpr(      0.0) = floatExpr(-Infinity) or
609            floatExpr(      0.0) = floatExpr(  -1.0E37) or
610            floatExpr(      0.0) = floatExpr(  -1000.0) or
611        not floatExpr(      0.0) = floatExpr(     -0.0) or
612        not floatExpr(      0.0) = floatExpr(      0.0) or
613            floatExpr(      0.0) = floatExpr(   1000.0) or
614            floatExpr(      0.0) = floatExpr(   1.0E37) or
615            floatExpr(      0.0) = floatExpr( Infinity) or
616            floatExpr(   1000.0) = floatExpr(-Infinity) or
617            floatExpr(   1000.0) = floatExpr(  -1.0E37) or
618            floatExpr(   1000.0) = floatExpr(  -1000.0) or
619            floatExpr(   1000.0) = floatExpr(     -0.0) or
620            floatExpr(   1000.0) = floatExpr(      0.0) or
621        not floatExpr(   1000.0) = floatExpr(   1000.0) or
622            floatExpr(   1000.0) = floatExpr(   1.0E37) or
623            floatExpr(   1000.0) = floatExpr( Infinity) or
624            floatExpr(   1.0E37) = floatExpr(-Infinity) or
625            floatExpr(   1.0E37) = floatExpr(  -1.0E37) or
626            floatExpr(   1.0E37) = floatExpr(  -1000.0) or
627            floatExpr(   1.0E37) = floatExpr(     -0.0) or
628            floatExpr(   1.0E37) = floatExpr(      0.0) or
629            floatExpr(   1.0E37) = floatExpr(   1000.0) or
630        not floatExpr(   1.0E37) = floatExpr(   1.0E37) or
631            floatExpr(   1.0E37) = floatExpr( Infinity) or
632            floatExpr( Infinity) = floatExpr(-Infinity) or
633            floatExpr( Infinity) = floatExpr(  -1.0E37) or
634            floatExpr( Infinity) = floatExpr(  -1000.0) or
635            floatExpr( Infinity) = floatExpr(     -0.0) or
636            floatExpr( Infinity) = floatExpr(      0.0) or
637            floatExpr( Infinity) = floatExpr(   1000.0) or
638            floatExpr( Infinity) = floatExpr(   1.0E37) or
639        not floatExpr( Infinity) = floatExpr( Infinity) then
640      writeln(" ***** Equal for float values does not work correct.");
641      okay := FALSE;
642    end if;
643
644    if                -Infinity  <>           -Infinity  or
645        not           -Infinity  <>             -1.0E37  or
646        not           -Infinity  <>             -1000.0  or
647        not           -Infinity  <>                -0.0  or
648        not           -Infinity  <>                 0.0  or
649        not           -Infinity  <>              1000.0  or
650        not           -Infinity  <>              1.0E37  or
651        not           -Infinity  <>            Infinity  or
652        not             -1.0E37  <>           -Infinity  or
653                        -1.0E37  <>             -1.0E37  or
654        not             -1.0E37  <>             -1000.0  or
655        not             -1.0E37  <>                -0.0  or
656        not             -1.0E37  <>                 0.0  or
657        not             -1.0E37  <>              1000.0  or
658        not             -1.0E37  <>              1.0E37  or
659        not             -1.0E37  <>            Infinity  or
660        not             -1000.0  <>           -Infinity  or
661        not             -1000.0  <>             -1.0E37  or
662                        -1000.0  <>             -1000.0  or
663        not             -1000.0  <>                -0.0  or
664        not             -1000.0  <>                 0.0  or
665        not             -1000.0  <>              1000.0  or
666        not             -1000.0  <>              1.0E37  or
667        not             -1000.0  <>            Infinity  or
668        not                -0.0  <>           -Infinity  or
669        not                -0.0  <>             -1.0E37  or
670        not                -0.0  <>             -1000.0  or
671                           -0.0  <>                -0.0  or
672                           -0.0  <>                 0.0  or
673        not                -0.0  <>              1000.0  or
674        not                -0.0  <>              1.0E37  or
675        not                -0.0  <>            Infinity  or
676        not                 0.0  <>           -Infinity  or
677        not                 0.0  <>             -1.0E37  or
678        not                 0.0  <>             -1000.0  or
679                            0.0  <>                -0.0  or
680                            0.0  <>                 0.0  or
681        not                 0.0  <>              1000.0  or
682        not                 0.0  <>              1.0E37  or
683        not                 0.0  <>            Infinity  or
684        not              1000.0  <>           -Infinity  or
685        not              1000.0  <>             -1.0E37  or
686        not              1000.0  <>             -1000.0  or
687        not              1000.0  <>                -0.0  or
688        not              1000.0  <>                 0.0  or
689                         1000.0  <>              1000.0  or
690        not              1000.0  <>              1.0E37  or
691        not              1000.0  <>            Infinity  or
692        not              1.0E37  <>           -Infinity  or
693        not              1.0E37  <>             -1.0E37  or
694        not              1.0E37  <>             -1000.0  or
695        not              1.0E37  <>                -0.0  or
696        not              1.0E37  <>                 0.0  or
697        not              1.0E37  <>              1000.0  or
698                         1.0E37  <>              1.0E37  or
699        not              1.0E37  <>            Infinity  or
700        not            Infinity  <>           -Infinity  or
701        not            Infinity  <>             -1.0E37  or
702        not            Infinity  <>             -1000.0  or
703        not            Infinity  <>                -0.0  or
704        not            Infinity  <>                 0.0  or
705        not            Infinity  <>              1000.0  or
706        not            Infinity  <>              1.0E37  or
707                       Infinity  <>            Infinity  or
708            floatExpr(-Infinity) <>           -Infinity  or
709        not floatExpr(-Infinity) <>             -1.0E37  or
710        not floatExpr(-Infinity) <>             -1000.0  or
711        not floatExpr(-Infinity) <>                -0.0  or
712        not floatExpr(-Infinity) <>                 0.0  or
713        not floatExpr(-Infinity) <>              1000.0  or
714        not floatExpr(-Infinity) <>              1.0E37  or
715        not floatExpr(-Infinity) <>            Infinity  or
716        not floatExpr(  -1.0E37) <>           -Infinity  or
717            floatExpr(  -1.0E37) <>             -1.0E37  or
718        not floatExpr(  -1.0E37) <>             -1000.0  or
719        not floatExpr(  -1.0E37) <>                -0.0  or
720        not floatExpr(  -1.0E37) <>                 0.0  or
721        not floatExpr(  -1.0E37) <>              1000.0  or
722        not floatExpr(  -1.0E37) <>              1.0E37  or
723        not floatExpr(  -1.0E37) <>            Infinity  or
724        not floatExpr(  -1000.0) <>           -Infinity  or
725        not floatExpr(  -1000.0) <>             -1.0E37  or
726            floatExpr(  -1000.0) <>             -1000.0  or
727        not floatExpr(  -1000.0) <>                -0.0  or
728        not floatExpr(  -1000.0) <>                 0.0  or
729        not floatExpr(  -1000.0) <>              1000.0  or
730        not floatExpr(  -1000.0) <>              1.0E37  or
731        not floatExpr(  -1000.0) <>            Infinity  or
732        not floatExpr(     -0.0) <>           -Infinity  or
733        not floatExpr(     -0.0) <>             -1.0E37  or
734        not floatExpr(     -0.0) <>             -1000.0  or
735            floatExpr(     -0.0) <>                -0.0  or
736            floatExpr(     -0.0) <>                 0.0  or
737        not floatExpr(     -0.0) <>              1000.0  or
738        not floatExpr(     -0.0) <>              1.0E37  or
739        not floatExpr(     -0.0) <>            Infinity  or
740        not floatExpr(      0.0) <>           -Infinity  or
741        not floatExpr(      0.0) <>             -1.0E37  or
742        not floatExpr(      0.0) <>             -1000.0  or
743            floatExpr(      0.0) <>                -0.0  or
744            floatExpr(      0.0) <>                 0.0  or
745        not floatExpr(      0.0) <>              1000.0  or
746        not floatExpr(      0.0) <>              1.0E37  or
747        not floatExpr(      0.0) <>            Infinity  or
748        not floatExpr(   1000.0) <>           -Infinity  or
749        not floatExpr(   1000.0) <>             -1.0E37  or
750        not floatExpr(   1000.0) <>             -1000.0  or
751        not floatExpr(   1000.0) <>                -0.0  or
752        not floatExpr(   1000.0) <>                 0.0  or
753            floatExpr(   1000.0) <>              1000.0  or
754        not floatExpr(   1000.0) <>              1.0E37  or
755        not floatExpr(   1000.0) <>            Infinity  or
756        not floatExpr(   1.0E37) <>           -Infinity  or
757        not floatExpr(   1.0E37) <>             -1.0E37  or
758        not floatExpr(   1.0E37) <>             -1000.0  or
759        not floatExpr(   1.0E37) <>                -0.0  or
760        not floatExpr(   1.0E37) <>                 0.0  or
761        not floatExpr(   1.0E37) <>              1000.0  or
762            floatExpr(   1.0E37) <>              1.0E37  or
763        not floatExpr(   1.0E37) <>            Infinity  or
764        not floatExpr( Infinity) <>           -Infinity  or
765        not floatExpr( Infinity) <>             -1.0E37  or
766        not floatExpr( Infinity) <>             -1000.0  or
767        not floatExpr( Infinity) <>                -0.0  or
768        not floatExpr( Infinity) <>                 0.0  or
769        not floatExpr( Infinity) <>              1000.0  or
770        not floatExpr( Infinity) <>              1.0E37  or
771            floatExpr( Infinity) <>            Infinity  or
772                      -Infinity  <> floatExpr(-Infinity) or
773        not           -Infinity  <> floatExpr(  -1.0E37) or
774        not           -Infinity  <> floatExpr(  -1000.0) or
775        not           -Infinity  <> floatExpr(     -0.0) or
776        not           -Infinity  <> floatExpr(      0.0) or
777        not           -Infinity  <> floatExpr(   1000.0) or
778        not           -Infinity  <> floatExpr(   1.0E37) or
779        not           -Infinity  <> floatExpr( Infinity) or
780        not             -1.0E37  <> floatExpr(-Infinity) or
781                        -1.0E37  <> floatExpr(  -1.0E37) or
782        not             -1.0E37  <> floatExpr(  -1000.0) or
783        not             -1.0E37  <> floatExpr(     -0.0) or
784        not             -1.0E37  <> floatExpr(      0.0) or
785        not             -1.0E37  <> floatExpr(   1000.0) or
786        not             -1.0E37  <> floatExpr(   1.0E37) or
787        not             -1.0E37  <> floatExpr( Infinity) or
788        not             -1000.0  <> floatExpr(-Infinity) or
789        not             -1000.0  <> floatExpr(  -1.0E37) or
790                        -1000.0  <> floatExpr(  -1000.0) or
791        not             -1000.0  <> floatExpr(     -0.0) or
792        not             -1000.0  <> floatExpr(      0.0) or
793        not             -1000.0  <> floatExpr(   1000.0) or
794        not             -1000.0  <> floatExpr(   1.0E37) or
795        not             -1000.0  <> floatExpr( Infinity) or
796        not                -0.0  <> floatExpr(-Infinity) or
797        not                -0.0  <> floatExpr(  -1.0E37) or
798        not                -0.0  <> floatExpr(  -1000.0) or
799                           -0.0  <> floatExpr(     -0.0) or
800                           -0.0  <> floatExpr(      0.0) or
801        not                -0.0  <> floatExpr(   1000.0) or
802        not                -0.0  <> floatExpr(   1.0E37) or
803        not                -0.0  <> floatExpr( Infinity) or
804        not                 0.0  <> floatExpr(-Infinity) or
805        not                 0.0  <> floatExpr(  -1.0E37) or
806        not                 0.0  <> floatExpr(  -1000.0) or
807                            0.0  <> floatExpr(     -0.0) or
808                            0.0  <> floatExpr(      0.0) or
809        not                 0.0  <> floatExpr(   1000.0) or
810        not                 0.0  <> floatExpr(   1.0E37) or
811        not                 0.0  <> floatExpr( Infinity) or
812        not              1000.0  <> floatExpr(-Infinity) or
813        not              1000.0  <> floatExpr(  -1.0E37) or
814        not              1000.0  <> floatExpr(  -1000.0) or
815        not              1000.0  <> floatExpr(     -0.0) or
816        not              1000.0  <> floatExpr(      0.0) or
817                         1000.0  <> floatExpr(   1000.0) or
818        not              1000.0  <> floatExpr(   1.0E37) or
819        not              1000.0  <> floatExpr( Infinity) or
820        not              1.0E37  <> floatExpr(-Infinity) or
821        not              1.0E37  <> floatExpr(  -1.0E37) or
822        not              1.0E37  <> floatExpr(  -1000.0) or
823        not              1.0E37  <> floatExpr(     -0.0) or
824        not              1.0E37  <> floatExpr(      0.0) or
825        not              1.0E37  <> floatExpr(   1000.0) or
826                         1.0E37  <> floatExpr(   1.0E37) or
827        not              1.0E37  <> floatExpr( Infinity) or
828        not            Infinity  <> floatExpr(-Infinity) or
829        not            Infinity  <> floatExpr(  -1.0E37) or
830        not            Infinity  <> floatExpr(  -1000.0) or
831        not            Infinity  <> floatExpr(     -0.0) or
832        not            Infinity  <> floatExpr(      0.0) or
833        not            Infinity  <> floatExpr(   1000.0) or
834        not            Infinity  <> floatExpr(   1.0E37) or
835                       Infinity  <> floatExpr( Infinity) or
836            floatExpr(-Infinity) <> floatExpr(-Infinity) or
837        not floatExpr(-Infinity) <> floatExpr(  -1.0E37) or
838        not floatExpr(-Infinity) <> floatExpr(  -1000.0) or
839        not floatExpr(-Infinity) <> floatExpr(     -0.0) or
840        not floatExpr(-Infinity) <> floatExpr(      0.0) or
841        not floatExpr(-Infinity) <> floatExpr(   1000.0) or
842        not floatExpr(-Infinity) <> floatExpr(   1.0E37) or
843        not floatExpr(-Infinity) <> floatExpr( Infinity) or
844        not floatExpr(  -1.0E37) <> floatExpr(-Infinity) or
845            floatExpr(  -1.0E37) <> floatExpr(  -1.0E37) or
846        not floatExpr(  -1.0E37) <> floatExpr(  -1000.0) or
847        not floatExpr(  -1.0E37) <> floatExpr(     -0.0) or
848        not floatExpr(  -1.0E37) <> floatExpr(      0.0) or
849        not floatExpr(  -1.0E37) <> floatExpr(   1000.0) or
850        not floatExpr(  -1.0E37) <> floatExpr(   1.0E37) or
851        not floatExpr(  -1.0E37) <> floatExpr( Infinity) or
852        not floatExpr(  -1000.0) <> floatExpr(-Infinity) or
853        not floatExpr(  -1000.0) <> floatExpr(  -1.0E37) or
854            floatExpr(  -1000.0) <> floatExpr(  -1000.0) or
855        not floatExpr(  -1000.0) <> floatExpr(     -0.0) or
856        not floatExpr(  -1000.0) <> floatExpr(      0.0) or
857        not floatExpr(  -1000.0) <> floatExpr(   1000.0) or
858        not floatExpr(  -1000.0) <> floatExpr(   1.0E37) or
859        not floatExpr(  -1000.0) <> floatExpr( Infinity) or
860        not floatExpr(     -0.0) <> floatExpr(-Infinity) or
861        not floatExpr(     -0.0) <> floatExpr(  -1.0E37) or
862        not floatExpr(     -0.0) <> floatExpr(  -1000.0) or
863            floatExpr(     -0.0) <> floatExpr(     -0.0) or
864            floatExpr(     -0.0) <> floatExpr(      0.0) or
865        not floatExpr(     -0.0) <> floatExpr(   1000.0) or
866        not floatExpr(     -0.0) <> floatExpr(   1.0E37) or
867        not floatExpr(     -0.0) <> floatExpr( Infinity) or
868        not floatExpr(      0.0) <> floatExpr(-Infinity) or
869        not floatExpr(      0.0) <> floatExpr(  -1.0E37) or
870        not floatExpr(      0.0) <> floatExpr(  -1000.0) or
871            floatExpr(      0.0) <> floatExpr(     -0.0) or
872            floatExpr(      0.0) <> floatExpr(      0.0) or
873        not floatExpr(      0.0) <> floatExpr(   1000.0) or
874        not floatExpr(      0.0) <> floatExpr(   1.0E37) or
875        not floatExpr(      0.0) <> floatExpr( Infinity) or
876        not floatExpr(   1000.0) <> floatExpr(-Infinity) or
877        not floatExpr(   1000.0) <> floatExpr(  -1.0E37) or
878        not floatExpr(   1000.0) <> floatExpr(  -1000.0) or
879        not floatExpr(   1000.0) <> floatExpr(     -0.0) or
880        not floatExpr(   1000.0) <> floatExpr(      0.0) or
881            floatExpr(   1000.0) <> floatExpr(   1000.0) or
882        not floatExpr(   1000.0) <> floatExpr(   1.0E37) or
883        not floatExpr(   1000.0) <> floatExpr( Infinity) or
884        not floatExpr(   1.0E37) <> floatExpr(-Infinity) or
885        not floatExpr(   1.0E37) <> floatExpr(  -1.0E37) or
886        not floatExpr(   1.0E37) <> floatExpr(  -1000.0) or
887        not floatExpr(   1.0E37) <> floatExpr(     -0.0) or
888        not floatExpr(   1.0E37) <> floatExpr(      0.0) or
889        not floatExpr(   1.0E37) <> floatExpr(   1000.0) or
890            floatExpr(   1.0E37) <> floatExpr(   1.0E37) or
891        not floatExpr(   1.0E37) <> floatExpr( Infinity) or
892        not floatExpr( Infinity) <> floatExpr(-Infinity) or
893        not floatExpr( Infinity) <> floatExpr(  -1.0E37) or
894        not floatExpr( Infinity) <> floatExpr(  -1000.0) or
895        not floatExpr( Infinity) <> floatExpr(     -0.0) or
896        not floatExpr( Infinity) <> floatExpr(      0.0) or
897        not floatExpr( Infinity) <> floatExpr(   1000.0) or
898        not floatExpr( Infinity) <> floatExpr(   1.0E37) or
899            floatExpr( Infinity) <> floatExpr( Infinity) then
900      writeln(" ***** Not equal for float values does not work correct.");
901      okay := FALSE;
902    end if;
903
904    if                -Infinity  <           -Infinity  or
905        not           -Infinity  <             -1.0E37  or
906        not           -Infinity  <             -1000.0  or
907        not           -Infinity  <                -0.0  or
908        not           -Infinity  <                 0.0  or
909        not           -Infinity  <              1000.0  or
910        not           -Infinity  <              1.0E37  or
911        not           -Infinity  <            Infinity  or
912                        -1.0E37  <           -Infinity  or
913                        -1.0E37  <             -1.0E37  or
914        not             -1.0E37  <             -1000.0  or
915        not             -1.0E37  <                -0.0  or
916        not             -1.0E37  <                 0.0  or
917        not             -1.0E37  <              1000.0  or
918        not             -1.0E37  <              1.0E37  or
919        not             -1.0E37  <            Infinity  or
920                        -1000.0  <           -Infinity  or
921                        -1000.0  <             -1.0E37  or
922                        -1000.0  <             -1000.0  or
923        not             -1000.0  <                -0.0  or
924        not             -1000.0  <                 0.0  or
925        not             -1000.0  <              1000.0  or
926        not             -1000.0  <              1.0E37  or
927        not             -1000.0  <            Infinity  or
928                           -0.0  <           -Infinity  or
929                           -0.0  <             -1.0E37  or
930                           -0.0  <             -1000.0  or
931                           -0.0  <                -0.0  or
932                           -0.0  <                 0.0  or
933        not                -0.0  <              1000.0  or
934        not                -0.0  <              1.0E37  or
935        not                -0.0  <            Infinity  or
936                            0.0  <           -Infinity  or
937                            0.0  <             -1.0E37  or
938                            0.0  <             -1000.0  or
939                            0.0  <                -0.0  or
940                            0.0  <                 0.0  or
941        not                 0.0  <              1000.0  or
942        not                 0.0  <              1.0E37  or
943        not                 0.0  <            Infinity  or
944                         1000.0  <           -Infinity  or
945                         1000.0  <             -1.0E37  or
946                         1000.0  <             -1000.0  or
947                         1000.0  <                -0.0  or
948                         1000.0  <                 0.0  or
949                         1000.0  <              1000.0  or
950        not              1000.0  <              1.0E37  or
951        not              1000.0  <            Infinity  or
952                         1.0E37  <           -Infinity  or
953                         1.0E37  <             -1.0E37  or
954                         1.0E37  <             -1000.0  or
955                         1.0E37  <                -0.0  or
956                         1.0E37  <                 0.0  or
957                         1.0E37  <              1000.0  or
958                         1.0E37  <              1.0E37  or
959        not              1.0E37  <            Infinity  or
960                       Infinity  <           -Infinity  or
961                       Infinity  <             -1.0E37  or
962                       Infinity  <             -1000.0  or
963                       Infinity  <                -0.0  or
964                       Infinity  <                 0.0  or
965                       Infinity  <              1000.0  or
966                       Infinity  <              1.0E37  or
967                       Infinity  <            Infinity  or
968            floatExpr(-Infinity) <           -Infinity  or
969        not floatExpr(-Infinity) <             -1.0E37  or
970        not floatExpr(-Infinity) <             -1000.0  or
971        not floatExpr(-Infinity) <                -0.0  or
972        not floatExpr(-Infinity) <                 0.0  or
973        not floatExpr(-Infinity) <              1000.0  or
974        not floatExpr(-Infinity) <              1.0E37  or
975        not floatExpr(-Infinity) <            Infinity  or
976            floatExpr(  -1.0E37) <           -Infinity  or
977            floatExpr(  -1.0E37) <             -1.0E37  or
978        not floatExpr(  -1.0E37) <             -1000.0  or
979        not floatExpr(  -1.0E37) <                -0.0  or
980        not floatExpr(  -1.0E37) <                 0.0  or
981        not floatExpr(  -1.0E37) <              1000.0  or
982        not floatExpr(  -1.0E37) <              1.0E37  or
983        not floatExpr(  -1.0E37) <            Infinity  or
984            floatExpr(  -1000.0) <           -Infinity  or
985            floatExpr(  -1000.0) <             -1.0E37  or
986            floatExpr(  -1000.0) <             -1000.0  or
987        not floatExpr(  -1000.0) <                -0.0  or
988        not floatExpr(  -1000.0) <                 0.0  or
989        not floatExpr(  -1000.0) <              1000.0  or
990        not floatExpr(  -1000.0) <              1.0E37  or
991        not floatExpr(  -1000.0) <            Infinity  or
992            floatExpr(     -0.0) <           -Infinity  or
993            floatExpr(     -0.0) <             -1.0E37  or
994            floatExpr(     -0.0) <             -1000.0  or
995            floatExpr(     -0.0) <                -0.0  or
996            floatExpr(     -0.0) <                 0.0  or
997        not floatExpr(     -0.0) <              1000.0  or
998        not floatExpr(     -0.0) <              1.0E37  or
999        not floatExpr(     -0.0) <            Infinity  or
1000            floatExpr(      0.0) <           -Infinity  or
1001            floatExpr(      0.0) <             -1.0E37  or
1002            floatExpr(      0.0) <             -1000.0  or
1003            floatExpr(      0.0) <                -0.0  or
1004            floatExpr(      0.0) <                 0.0  or
1005        not floatExpr(      0.0) <              1000.0  or
1006        not floatExpr(      0.0) <              1.0E37  or
1007        not floatExpr(      0.0) <            Infinity  or
1008            floatExpr(   1000.0) <           -Infinity  or
1009            floatExpr(   1000.0) <             -1.0E37  or
1010            floatExpr(   1000.0) <             -1000.0  or
1011            floatExpr(   1000.0) <                -0.0  or
1012            floatExpr(   1000.0) <                 0.0  or
1013            floatExpr(   1000.0) <              1000.0  or
1014        not floatExpr(   1000.0) <              1.0E37  or
1015        not floatExpr(   1000.0) <            Infinity  or
1016            floatExpr(   1.0E37) <           -Infinity  or
1017            floatExpr(   1.0E37) <             -1.0E37  or
1018            floatExpr(   1.0E37) <             -1000.0  or
1019            floatExpr(   1.0E37) <                -0.0  or
1020            floatExpr(   1.0E37) <                 0.0  or
1021            floatExpr(   1.0E37) <              1000.0  or
1022            floatExpr(   1.0E37) <              1.0E37  or
1023        not floatExpr(   1.0E37) <            Infinity  or
1024            floatExpr( Infinity) <           -Infinity  or
1025            floatExpr( Infinity) <             -1.0E37  or
1026            floatExpr( Infinity) <             -1000.0  or
1027            floatExpr( Infinity) <                -0.0  or
1028            floatExpr( Infinity) <                 0.0  or
1029            floatExpr( Infinity) <              1000.0  or
1030            floatExpr( Infinity) <              1.0E37  or
1031            floatExpr( Infinity) <            Infinity  or
1032                      -Infinity  < floatExpr(-Infinity) or
1033        not           -Infinity  < floatExpr(  -1.0E37) or
1034        not           -Infinity  < floatExpr(  -1000.0) or
1035        not           -Infinity  < floatExpr(     -0.0) or
1036        not           -Infinity  < floatExpr(      0.0) or
1037        not           -Infinity  < floatExpr(   1000.0) or
1038        not           -Infinity  < floatExpr(   1.0E37) or
1039        not           -Infinity  < floatExpr( Infinity) or
1040                        -1.0E37  < floatExpr(-Infinity) or
1041                        -1.0E37  < floatExpr(  -1.0E37) or
1042        not             -1.0E37  < floatExpr(  -1000.0) or
1043        not             -1.0E37  < floatExpr(     -0.0) or
1044        not             -1.0E37  < floatExpr(      0.0) or
1045        not             -1.0E37  < floatExpr(   1000.0) or
1046        not             -1.0E37  < floatExpr(   1.0E37) or
1047        not             -1.0E37  < floatExpr( Infinity) or
1048                        -1000.0  < floatExpr(-Infinity) or
1049                        -1000.0  < floatExpr(  -1.0E37) or
1050                        -1000.0  < floatExpr(  -1000.0) or
1051        not             -1000.0  < floatExpr(     -0.0) or
1052        not             -1000.0  < floatExpr(      0.0) or
1053        not             -1000.0  < floatExpr(   1000.0) or
1054        not             -1000.0  < floatExpr(   1.0E37) or
1055        not             -1000.0  < floatExpr( Infinity) or
1056                           -0.0  < floatExpr(-Infinity) or
1057                           -0.0  < floatExpr(  -1.0E37) or
1058                           -0.0  < floatExpr(  -1000.0) or
1059                           -0.0  < floatExpr(     -0.0) or
1060                           -0.0  < floatExpr(      0.0) or
1061        not                -0.0  < floatExpr(   1000.0) or
1062        not                -0.0  < floatExpr(   1.0E37) or
1063        not                -0.0  < floatExpr( Infinity) or
1064                            0.0  < floatExpr(-Infinity) or
1065                            0.0  < floatExpr(  -1.0E37) or
1066                            0.0  < floatExpr(  -1000.0) or
1067                            0.0  < floatExpr(     -0.0) or
1068                            0.0  < floatExpr(      0.0) or
1069        not                 0.0  < floatExpr(   1000.0) or
1070        not                 0.0  < floatExpr(   1.0E37) or
1071        not                 0.0  < floatExpr( Infinity) or
1072                         1000.0  < floatExpr(-Infinity) or
1073                         1000.0  < floatExpr(  -1.0E37) or
1074                         1000.0  < floatExpr(  -1000.0) or
1075                         1000.0  < floatExpr(     -0.0) or
1076                         1000.0  < floatExpr(      0.0) or
1077                         1000.0  < floatExpr(   1000.0) or
1078        not              1000.0  < floatExpr(   1.0E37) or
1079        not              1000.0  < floatExpr( Infinity) or
1080                         1.0E37  < floatExpr(-Infinity) or
1081                         1.0E37  < floatExpr(  -1.0E37) or
1082                         1.0E37  < floatExpr(  -1000.0) or
1083                         1.0E37  < floatExpr(     -0.0) or
1084                         1.0E37  < floatExpr(      0.0) or
1085                         1.0E37  < floatExpr(   1000.0) or
1086                         1.0E37  < floatExpr(   1.0E37) or
1087        not              1.0E37  < floatExpr( Infinity) or
1088                       Infinity  < floatExpr(-Infinity) or
1089                       Infinity  < floatExpr(  -1.0E37) or
1090                       Infinity  < floatExpr(  -1000.0) or
1091                       Infinity  < floatExpr(     -0.0) or
1092                       Infinity  < floatExpr(      0.0) or
1093                       Infinity  < floatExpr(   1000.0) or
1094                       Infinity  < floatExpr(   1.0E37) or
1095                       Infinity  < floatExpr( Infinity) or
1096            floatExpr(-Infinity) < floatExpr(-Infinity) or
1097        not floatExpr(-Infinity) < floatExpr(  -1.0E37) or
1098        not floatExpr(-Infinity) < floatExpr(  -1000.0) or
1099        not floatExpr(-Infinity) < floatExpr(     -0.0) or
1100        not floatExpr(-Infinity) < floatExpr(      0.0) or
1101        not floatExpr(-Infinity) < floatExpr(   1000.0) or
1102        not floatExpr(-Infinity) < floatExpr(   1.0E37) or
1103        not floatExpr(-Infinity) < floatExpr( Infinity) or
1104            floatExpr(  -1.0E37) < floatExpr(-Infinity) or
1105            floatExpr(  -1.0E37) < floatExpr(  -1.0E37) or
1106        not floatExpr(  -1.0E37) < floatExpr(  -1000.0) or
1107        not floatExpr(  -1.0E37) < floatExpr(     -0.0) or
1108        not floatExpr(  -1.0E37) < floatExpr(      0.0) or
1109        not floatExpr(  -1.0E37) < floatExpr(   1000.0) or
1110        not floatExpr(  -1.0E37) < floatExpr(   1.0E37) or
1111        not floatExpr(  -1.0E37) < floatExpr( Infinity) or
1112            floatExpr(  -1000.0) < floatExpr(-Infinity) or
1113            floatExpr(  -1000.0) < floatExpr(  -1.0E37) or
1114            floatExpr(  -1000.0) < floatExpr(  -1000.0) or
1115        not floatExpr(  -1000.0) < floatExpr(     -0.0) or
1116        not floatExpr(  -1000.0) < floatExpr(      0.0) or
1117        not floatExpr(  -1000.0) < floatExpr(   1000.0) or
1118        not floatExpr(  -1000.0) < floatExpr(   1.0E37) or
1119        not floatExpr(  -1000.0) < floatExpr( Infinity) or
1120            floatExpr(     -0.0) < floatExpr(-Infinity) or
1121            floatExpr(     -0.0) < floatExpr(  -1.0E37) or
1122            floatExpr(     -0.0) < floatExpr(  -1000.0) or
1123            floatExpr(     -0.0) < floatExpr(     -0.0) or
1124            floatExpr(     -0.0) < floatExpr(      0.0) or
1125        not floatExpr(     -0.0) < floatExpr(   1000.0) or
1126        not floatExpr(     -0.0) < floatExpr(   1.0E37) or
1127        not floatExpr(     -0.0) < floatExpr( Infinity) or
1128            floatExpr(      0.0) < floatExpr(-Infinity) or
1129            floatExpr(      0.0) < floatExpr(  -1.0E37) or
1130            floatExpr(      0.0) < floatExpr(  -1000.0) or
1131            floatExpr(      0.0) < floatExpr(     -0.0) or
1132            floatExpr(      0.0) < floatExpr(      0.0) or
1133        not floatExpr(      0.0) < floatExpr(   1000.0) or
1134        not floatExpr(      0.0) < floatExpr(   1.0E37) or
1135        not floatExpr(      0.0) < floatExpr( Infinity) or
1136            floatExpr(   1000.0) < floatExpr(-Infinity) or
1137            floatExpr(   1000.0) < floatExpr(  -1.0E37) or
1138            floatExpr(   1000.0) < floatExpr(  -1000.0) or
1139            floatExpr(   1000.0) < floatExpr(     -0.0) or
1140            floatExpr(   1000.0) < floatExpr(      0.0) or
1141            floatExpr(   1000.0) < floatExpr(   1000.0) or
1142        not floatExpr(   1000.0) < floatExpr(   1.0E37) or
1143        not floatExpr(   1000.0) < floatExpr( Infinity) or
1144            floatExpr(   1.0E37) < floatExpr(-Infinity) or
1145            floatExpr(   1.0E37) < floatExpr(  -1.0E37) or
1146            floatExpr(   1.0E37) < floatExpr(  -1000.0) or
1147            floatExpr(   1.0E37) < floatExpr(     -0.0) or
1148            floatExpr(   1.0E37) < floatExpr(      0.0) or
1149            floatExpr(   1.0E37) < floatExpr(   1000.0) or
1150            floatExpr(   1.0E37) < floatExpr(   1.0E37) or
1151        not floatExpr(   1.0E37) < floatExpr( Infinity) or
1152            floatExpr( Infinity) < floatExpr(-Infinity) or
1153            floatExpr( Infinity) < floatExpr(  -1.0E37) or
1154            floatExpr( Infinity) < floatExpr(  -1000.0) or
1155            floatExpr( Infinity) < floatExpr(     -0.0) or
1156            floatExpr( Infinity) < floatExpr(      0.0) or
1157            floatExpr( Infinity) < floatExpr(   1000.0) or
1158            floatExpr( Infinity) < floatExpr(   1.0E37) or
1159            floatExpr( Infinity) < floatExpr( Infinity) then
1160      writeln(" ***** Less than for float values does not work correct.");
1161      okay := FALSE;
1162    end if;
1163
1164    if                -Infinity  >           -Infinity  or
1165                      -Infinity  >             -1.0E37  or
1166                      -Infinity  >             -1000.0  or
1167                      -Infinity  >                -0.0  or
1168                      -Infinity  >                 0.0  or
1169                      -Infinity  >              1000.0  or
1170                      -Infinity  >              1.0E37  or
1171                      -Infinity  >            Infinity  or
1172        not             -1.0E37  >           -Infinity  or
1173                        -1.0E37  >             -1.0E37  or
1174                        -1.0E37  >             -1000.0  or
1175                        -1.0E37  >                -0.0  or
1176                        -1.0E37  >                 0.0  or
1177                        -1.0E37  >              1000.0  or
1178                        -1.0E37  >              1.0E37  or
1179                        -1.0E37  >            Infinity  or
1180        not             -1000.0  >           -Infinity  or
1181        not             -1000.0  >             -1.0E37  or
1182                        -1000.0  >             -1000.0  or
1183                        -1000.0  >                -0.0  or
1184                        -1000.0  >                 0.0  or
1185                        -1000.0  >              1000.0  or
1186                        -1000.0  >              1.0E37  or
1187                        -1000.0  >            Infinity  or
1188        not                -0.0  >           -Infinity  or
1189        not                -0.0  >             -1.0E37  or
1190        not                -0.0  >             -1000.0  or
1191                           -0.0  >                -0.0  or
1192                           -0.0  >                 0.0  or
1193                           -0.0  >              1000.0  or
1194                           -0.0  >              1.0E37  or
1195                           -0.0  >            Infinity  or
1196        not                 0.0  >           -Infinity  or
1197        not                 0.0  >             -1.0E37  or
1198        not                 0.0  >             -1000.0  or
1199                            0.0  >                -0.0  or
1200                            0.0  >                 0.0  or
1201                            0.0  >              1000.0  or
1202                            0.0  >              1.0E37  or
1203                            0.0  >            Infinity  or
1204        not              1000.0  >           -Infinity  or
1205        not              1000.0  >             -1.0E37  or
1206        not              1000.0  >             -1000.0  or
1207        not              1000.0  >                -0.0  or
1208        not              1000.0  >                 0.0  or
1209                         1000.0  >              1000.0  or
1210                         1000.0  >              1.0E37  or
1211                         1000.0  >            Infinity  or
1212        not              1.0E37  >           -Infinity  or
1213        not              1.0E37  >             -1.0E37  or
1214        not              1.0E37  >             -1000.0  or
1215        not              1.0E37  >                -0.0  or
1216        not              1.0E37  >                 0.0  or
1217        not              1.0E37  >              1000.0  or
1218                         1.0E37  >              1.0E37  or
1219                         1.0E37  >            Infinity  or
1220        not            Infinity  >           -Infinity  or
1221        not            Infinity  >             -1.0E37  or
1222        not            Infinity  >             -1000.0  or
1223        not            Infinity  >                -0.0  or
1224        not            Infinity  >                 0.0  or
1225        not            Infinity  >              1000.0  or
1226        not            Infinity  >              1.0E37  or
1227                       Infinity  >            Infinity  or
1228            floatExpr(-Infinity) >           -Infinity  or
1229            floatExpr(-Infinity) >             -1.0E37  or
1230            floatExpr(-Infinity) >             -1000.0  or
1231            floatExpr(-Infinity) >                -0.0  or
1232            floatExpr(-Infinity) >                 0.0  or
1233            floatExpr(-Infinity) >              1000.0  or
1234            floatExpr(-Infinity) >              1.0E37  or
1235            floatExpr(-Infinity) >            Infinity  or
1236        not floatExpr(  -1.0E37) >           -Infinity  or
1237            floatExpr(  -1.0E37) >             -1.0E37  or
1238            floatExpr(  -1.0E37) >             -1000.0  or
1239            floatExpr(  -1.0E37) >                -0.0  or
1240            floatExpr(  -1.0E37) >                 0.0  or
1241            floatExpr(  -1.0E37) >              1000.0  or
1242            floatExpr(  -1.0E37) >              1.0E37  or
1243            floatExpr(  -1.0E37) >            Infinity  or
1244        not floatExpr(  -1000.0) >           -Infinity  or
1245        not floatExpr(  -1000.0) >             -1.0E37  or
1246            floatExpr(  -1000.0) >             -1000.0  or
1247            floatExpr(  -1000.0) >                -0.0  or
1248            floatExpr(  -1000.0) >                 0.0  or
1249            floatExpr(  -1000.0) >              1000.0  or
1250            floatExpr(  -1000.0) >              1.0E37  or
1251            floatExpr(  -1000.0) >            Infinity  or
1252        not floatExpr(     -0.0) >           -Infinity  or
1253        not floatExpr(     -0.0) >             -1.0E37  or
1254        not floatExpr(     -0.0) >             -1000.0  or
1255            floatExpr(     -0.0) >                -0.0  or
1256            floatExpr(     -0.0) >                 0.0  or
1257            floatExpr(     -0.0) >              1000.0  or
1258            floatExpr(     -0.0) >              1.0E37  or
1259            floatExpr(     -0.0) >            Infinity  or
1260        not floatExpr(      0.0) >           -Infinity  or
1261        not floatExpr(      0.0) >             -1.0E37  or
1262        not floatExpr(      0.0) >             -1000.0  or
1263            floatExpr(      0.0) >                -0.0  or
1264            floatExpr(      0.0) >                 0.0  or
1265            floatExpr(      0.0) >              1000.0  or
1266            floatExpr(      0.0) >              1.0E37  or
1267            floatExpr(      0.0) >            Infinity  or
1268        not floatExpr(   1000.0) >           -Infinity  or
1269        not floatExpr(   1000.0) >             -1.0E37  or
1270        not floatExpr(   1000.0) >             -1000.0  or
1271        not floatExpr(   1000.0) >                -0.0  or
1272        not floatExpr(   1000.0) >                 0.0  or
1273            floatExpr(   1000.0) >              1000.0  or
1274            floatExpr(   1000.0) >              1.0E37  or
1275            floatExpr(   1000.0) >            Infinity  or
1276        not floatExpr(   1.0E37) >           -Infinity  or
1277        not floatExpr(   1.0E37) >             -1.0E37  or
1278        not floatExpr(   1.0E37) >             -1000.0  or
1279        not floatExpr(   1.0E37) >                -0.0  or
1280        not floatExpr(   1.0E37) >                 0.0  or
1281        not floatExpr(   1.0E37) >              1000.0  or
1282            floatExpr(   1.0E37) >              1.0E37  or
1283            floatExpr(   1.0E37) >            Infinity  or
1284        not floatExpr( Infinity) >           -Infinity  or
1285        not floatExpr( Infinity) >             -1.0E37  or
1286        not floatExpr( Infinity) >             -1000.0  or
1287        not floatExpr( Infinity) >                -0.0  or
1288        not floatExpr( Infinity) >                 0.0  or
1289        not floatExpr( Infinity) >              1000.0  or
1290        not floatExpr( Infinity) >              1.0E37  or
1291            floatExpr( Infinity) >            Infinity  or
1292                      -Infinity  > floatExpr(-Infinity) or
1293                      -Infinity  > floatExpr(  -1.0E37) or
1294                      -Infinity  > floatExpr(  -1000.0) or
1295                      -Infinity  > floatExpr(     -0.0) or
1296                      -Infinity  > floatExpr(      0.0) or
1297                      -Infinity  > floatExpr(   1000.0) or
1298                      -Infinity  > floatExpr(   1.0E37) or
1299                      -Infinity  > floatExpr( Infinity) or
1300        not             -1.0E37  > floatExpr(-Infinity) or
1301                        -1.0E37  > floatExpr(  -1.0E37) or
1302                        -1.0E37  > floatExpr(  -1000.0) or
1303                        -1.0E37  > floatExpr(     -0.0) or
1304                        -1.0E37  > floatExpr(      0.0) or
1305                        -1.0E37  > floatExpr(   1000.0) or
1306                        -1.0E37  > floatExpr(   1.0E37) or
1307                        -1.0E37  > floatExpr( Infinity) or
1308        not             -1000.0  > floatExpr(-Infinity) or
1309        not             -1000.0  > floatExpr(  -1.0E37) or
1310                        -1000.0  > floatExpr(  -1000.0) or
1311                        -1000.0  > floatExpr(     -0.0) or
1312                        -1000.0  > floatExpr(      0.0) or
1313                        -1000.0  > floatExpr(   1000.0) or
1314                        -1000.0  > floatExpr(   1.0E37) or
1315                        -1000.0  > floatExpr( Infinity) or
1316        not                -0.0  > floatExpr(-Infinity) or
1317        not                -0.0  > floatExpr(  -1.0E37) or
1318        not                -0.0  > floatExpr(  -1000.0) or
1319                           -0.0  > floatExpr(     -0.0) or
1320                           -0.0  > floatExpr(      0.0) or
1321                           -0.0  > floatExpr(   1000.0) or
1322                           -0.0  > floatExpr(   1.0E37) or
1323                           -0.0  > floatExpr( Infinity) or
1324        not                 0.0  > floatExpr(-Infinity) or
1325        not                 0.0  > floatExpr(  -1.0E37) or
1326        not                 0.0  > floatExpr(  -1000.0) or
1327                            0.0  > floatExpr(     -0.0) or
1328                            0.0  > floatExpr(      0.0) or
1329                            0.0  > floatExpr(   1000.0) or
1330                            0.0  > floatExpr(   1.0E37) or
1331                            0.0  > floatExpr( Infinity) or
1332        not              1000.0  > floatExpr(-Infinity) or
1333        not              1000.0  > floatExpr(  -1.0E37) or
1334        not              1000.0  > floatExpr(  -1000.0) or
1335        not              1000.0  > floatExpr(     -0.0) or
1336        not              1000.0  > floatExpr(      0.0) or
1337                         1000.0  > floatExpr(   1000.0) or
1338                         1000.0  > floatExpr(   1.0E37) or
1339                         1000.0  > floatExpr( Infinity) or
1340        not              1.0E37  > floatExpr(-Infinity) or
1341        not              1.0E37  > floatExpr(  -1.0E37) or
1342        not              1.0E37  > floatExpr(  -1000.0) or
1343        not              1.0E37  > floatExpr(     -0.0) or
1344        not              1.0E37  > floatExpr(      0.0) or
1345        not              1.0E37  > floatExpr(   1000.0) or
1346                         1.0E37  > floatExpr(   1.0E37) or
1347                         1.0E37  > floatExpr( Infinity) or
1348        not            Infinity  > floatExpr(-Infinity) or
1349        not            Infinity  > floatExpr(  -1.0E37) or
1350        not            Infinity  > floatExpr(  -1000.0) or
1351        not            Infinity  > floatExpr(     -0.0) or
1352        not            Infinity  > floatExpr(      0.0) or
1353        not            Infinity  > floatExpr(   1000.0) or
1354        not            Infinity  > floatExpr(   1.0E37) or
1355                       Infinity  > floatExpr( Infinity) or
1356            floatExpr(-Infinity) > floatExpr(-Infinity) or
1357            floatExpr(-Infinity) > floatExpr(  -1.0E37) or
1358            floatExpr(-Infinity) > floatExpr(  -1000.0) or
1359            floatExpr(-Infinity) > floatExpr(     -0.0) or
1360            floatExpr(-Infinity) > floatExpr(      0.0) or
1361            floatExpr(-Infinity) > floatExpr(   1000.0) or
1362            floatExpr(-Infinity) > floatExpr(   1.0E37) or
1363            floatExpr(-Infinity) > floatExpr( Infinity) or
1364        not floatExpr(  -1.0E37) > floatExpr(-Infinity) or
1365            floatExpr(  -1.0E37) > floatExpr(  -1.0E37) or
1366            floatExpr(  -1.0E37) > floatExpr(  -1000.0) or
1367            floatExpr(  -1.0E37) > floatExpr(     -0.0) or
1368            floatExpr(  -1.0E37) > floatExpr(      0.0) or
1369            floatExpr(  -1.0E37) > floatExpr(   1000.0) or
1370            floatExpr(  -1.0E37) > floatExpr(   1.0E37) or
1371            floatExpr(  -1.0E37) > floatExpr( Infinity) or
1372        not floatExpr(  -1000.0) > floatExpr(-Infinity) or
1373        not floatExpr(  -1000.0) > floatExpr(  -1.0E37) or
1374            floatExpr(  -1000.0) > floatExpr(  -1000.0) or
1375            floatExpr(  -1000.0) > floatExpr(     -0.0) or
1376            floatExpr(  -1000.0) > floatExpr(      0.0) or
1377            floatExpr(  -1000.0) > floatExpr(   1000.0) or
1378            floatExpr(  -1000.0) > floatExpr(   1.0E37) or
1379            floatExpr(  -1000.0) > floatExpr( Infinity) or
1380        not floatExpr(     -0.0) > floatExpr(-Infinity) or
1381        not floatExpr(     -0.0) > floatExpr(  -1.0E37) or
1382        not floatExpr(     -0.0) > floatExpr(  -1000.0) or
1383            floatExpr(     -0.0) > floatExpr(     -0.0) or
1384            floatExpr(     -0.0) > floatExpr(      0.0) or
1385            floatExpr(     -0.0) > floatExpr(   1000.0) or
1386            floatExpr(     -0.0) > floatExpr(   1.0E37) or
1387            floatExpr(     -0.0) > floatExpr( Infinity) or
1388        not floatExpr(      0.0) > floatExpr(-Infinity) or
1389        not floatExpr(      0.0) > floatExpr(  -1.0E37) or
1390        not floatExpr(      0.0) > floatExpr(  -1000.0) or
1391            floatExpr(      0.0) > floatExpr(     -0.0) or
1392            floatExpr(      0.0) > floatExpr(      0.0) or
1393            floatExpr(      0.0) > floatExpr(   1000.0) or
1394            floatExpr(      0.0) > floatExpr(   1.0E37) or
1395            floatExpr(      0.0) > floatExpr( Infinity) or
1396        not floatExpr(   1000.0) > floatExpr(-Infinity) or
1397        not floatExpr(   1000.0) > floatExpr(  -1.0E37) or
1398        not floatExpr(   1000.0) > floatExpr(  -1000.0) or
1399        not floatExpr(   1000.0) > floatExpr(     -0.0) or
1400        not floatExpr(   1000.0) > floatExpr(      0.0) or
1401            floatExpr(   1000.0) > floatExpr(   1000.0) or
1402            floatExpr(   1000.0) > floatExpr(   1.0E37) or
1403            floatExpr(   1000.0) > floatExpr( Infinity) or
1404        not floatExpr(   1.0E37) > floatExpr(-Infinity) or
1405        not floatExpr(   1.0E37) > floatExpr(  -1.0E37) or
1406        not floatExpr(   1.0E37) > floatExpr(  -1000.0) or
1407        not floatExpr(   1.0E37) > floatExpr(     -0.0) or
1408        not floatExpr(   1.0E37) > floatExpr(      0.0) or
1409        not floatExpr(   1.0E37) > floatExpr(   1000.0) or
1410            floatExpr(   1.0E37) > floatExpr(   1.0E37) or
1411            floatExpr(   1.0E37) > floatExpr( Infinity) or
1412        not floatExpr( Infinity) > floatExpr(-Infinity) or
1413        not floatExpr( Infinity) > floatExpr(  -1.0E37) or
1414        not floatExpr( Infinity) > floatExpr(  -1000.0) or
1415        not floatExpr( Infinity) > floatExpr(     -0.0) or
1416        not floatExpr( Infinity) > floatExpr(      0.0) or
1417        not floatExpr( Infinity) > floatExpr(   1000.0) or
1418        not floatExpr( Infinity) > floatExpr(   1.0E37) or
1419            floatExpr( Infinity) > floatExpr( Infinity) then
1420      writeln(" ***** Greater than for float values does not work correct.");
1421      okay := FALSE;
1422    end if;
1423
1424    if  not           -Infinity  <=           -Infinity  or
1425        not           -Infinity  <=             -1.0E37  or
1426        not           -Infinity  <=             -1000.0  or
1427        not           -Infinity  <=                -0.0  or
1428        not           -Infinity  <=                 0.0  or
1429        not           -Infinity  <=              1000.0  or
1430        not           -Infinity  <=              1.0E37  or
1431        not           -Infinity  <=            Infinity  or
1432                        -1.0E37  <=           -Infinity  or
1433        not             -1.0E37  <=             -1.0E37  or
1434        not             -1.0E37  <=             -1000.0  or
1435        not             -1.0E37  <=                -0.0  or
1436        not             -1.0E37  <=                 0.0  or
1437        not             -1.0E37  <=              1000.0  or
1438        not             -1.0E37  <=              1.0E37  or
1439        not             -1.0E37  <=            Infinity  or
1440                        -1000.0  <=           -Infinity  or
1441                        -1000.0  <=             -1.0E37  or
1442        not             -1000.0  <=             -1000.0  or
1443        not             -1000.0  <=                -0.0  or
1444        not             -1000.0  <=                 0.0  or
1445        not             -1000.0  <=              1000.0  or
1446        not             -1000.0  <=              1.0E37  or
1447        not             -1000.0  <=            Infinity  or
1448                           -0.0  <=           -Infinity  or
1449                           -0.0  <=             -1.0E37  or
1450                           -0.0  <=             -1000.0  or
1451        not                -0.0  <=                -0.0  or
1452        not                -0.0  <=                 0.0  or
1453        not                -0.0  <=              1000.0  or
1454        not                -0.0  <=              1.0E37  or
1455        not                -0.0  <=            Infinity  or
1456                            0.0  <=           -Infinity  or
1457                            0.0  <=             -1.0E37  or
1458                            0.0  <=             -1000.0  or
1459        not                 0.0  <=                -0.0  or
1460        not                 0.0  <=                 0.0  or
1461        not                 0.0  <=              1000.0  or
1462        not                 0.0  <=              1.0E37  or
1463        not                 0.0  <=            Infinity  or
1464                         1000.0  <=           -Infinity  or
1465                         1000.0  <=             -1.0E37  or
1466                         1000.0  <=             -1000.0  or
1467                         1000.0  <=                -0.0  or
1468                         1000.0  <=                 0.0  or
1469        not              1000.0  <=              1000.0  or
1470        not              1000.0  <=              1.0E37  or
1471        not              1000.0  <=            Infinity  or
1472                         1.0E37  <=           -Infinity  or
1473                         1.0E37  <=             -1.0E37  or
1474                         1.0E37  <=             -1000.0  or
1475                         1.0E37  <=                -0.0  or
1476                         1.0E37  <=                 0.0  or
1477                         1.0E37  <=              1000.0  or
1478        not              1.0E37  <=              1.0E37  or
1479        not              1.0E37  <=            Infinity  or
1480                       Infinity  <=           -Infinity  or
1481                       Infinity  <=             -1.0E37  or
1482                       Infinity  <=             -1000.0  or
1483                       Infinity  <=                -0.0  or
1484                       Infinity  <=                 0.0  or
1485                       Infinity  <=              1000.0  or
1486                       Infinity  <=              1.0E37  or
1487        not            Infinity  <=            Infinity  or
1488        not floatExpr(-Infinity) <=           -Infinity  or
1489        not floatExpr(-Infinity) <=             -1.0E37  or
1490        not floatExpr(-Infinity) <=             -1000.0  or
1491        not floatExpr(-Infinity) <=                -0.0  or
1492        not floatExpr(-Infinity) <=                 0.0  or
1493        not floatExpr(-Infinity) <=              1000.0  or
1494        not floatExpr(-Infinity) <=              1.0E37  or
1495        not floatExpr(-Infinity) <=            Infinity  or
1496            floatExpr(  -1.0E37) <=           -Infinity  or
1497        not floatExpr(  -1.0E37) <=             -1.0E37  or
1498        not floatExpr(  -1.0E37) <=             -1000.0  or
1499        not floatExpr(  -1.0E37) <=                -0.0  or
1500        not floatExpr(  -1.0E37) <=                 0.0  or
1501        not floatExpr(  -1.0E37) <=              1000.0  or
1502        not floatExpr(  -1.0E37) <=              1.0E37  or
1503        not floatExpr(  -1.0E37) <=            Infinity  or
1504            floatExpr(  -1000.0) <=           -Infinity  or
1505            floatExpr(  -1000.0) <=             -1.0E37  or
1506        not floatExpr(  -1000.0) <=             -1000.0  or
1507        not floatExpr(  -1000.0) <=                -0.0  or
1508        not floatExpr(  -1000.0) <=                 0.0  or
1509        not floatExpr(  -1000.0) <=              1000.0  or
1510        not floatExpr(  -1000.0) <=              1.0E37  or
1511        not floatExpr(  -1000.0) <=            Infinity  or
1512            floatExpr(     -0.0) <=           -Infinity  or
1513            floatExpr(     -0.0) <=             -1.0E37  or
1514            floatExpr(     -0.0) <=             -1000.0  or
1515        not floatExpr(     -0.0) <=                -0.0  or
1516        not floatExpr(     -0.0) <=                 0.0  or
1517        not floatExpr(     -0.0) <=              1000.0  or
1518        not floatExpr(     -0.0) <=              1.0E37  or
1519        not floatExpr(     -0.0) <=            Infinity  or
1520            floatExpr(      0.0) <=           -Infinity  or
1521            floatExpr(      0.0) <=             -1.0E37  or
1522            floatExpr(      0.0) <=             -1000.0  or
1523        not floatExpr(      0.0) <=                -0.0  or
1524        not floatExpr(      0.0) <=                 0.0  or
1525        not floatExpr(      0.0) <=              1000.0  or
1526        not floatExpr(      0.0) <=              1.0E37  or
1527        not floatExpr(      0.0) <=            Infinity  or
1528            floatExpr(   1000.0) <=           -Infinity  or
1529            floatExpr(   1000.0) <=             -1.0E37  or
1530            floatExpr(   1000.0) <=             -1000.0  or
1531            floatExpr(   1000.0) <=                -0.0  or
1532            floatExpr(   1000.0) <=                 0.0  or
1533        not floatExpr(   1000.0) <=              1000.0  or
1534        not floatExpr(   1000.0) <=              1.0E37  or
1535        not floatExpr(   1000.0) <=            Infinity  or
1536            floatExpr(   1.0E37) <=           -Infinity  or
1537            floatExpr(   1.0E37) <=             -1.0E37  or
1538            floatExpr(   1.0E37) <=             -1000.0  or
1539            floatExpr(   1.0E37) <=                -0.0  or
1540            floatExpr(   1.0E37) <=                 0.0  or
1541            floatExpr(   1.0E37) <=              1000.0  or
1542        not floatExpr(   1.0E37) <=              1.0E37  or
1543        not floatExpr(   1.0E37) <=            Infinity  or
1544            floatExpr( Infinity) <=           -Infinity  or
1545            floatExpr( Infinity) <=             -1.0E37  or
1546            floatExpr( Infinity) <=             -1000.0  or
1547            floatExpr( Infinity) <=                -0.0  or
1548            floatExpr( Infinity) <=                 0.0  or
1549            floatExpr( Infinity) <=              1000.0  or
1550            floatExpr( Infinity) <=              1.0E37  or
1551        not floatExpr( Infinity) <=            Infinity  or
1552        not           -Infinity  <= floatExpr(-Infinity) or
1553        not           -Infinity  <= floatExpr(  -1.0E37) or
1554        not           -Infinity  <= floatExpr(  -1000.0) or
1555        not           -Infinity  <= floatExpr(     -0.0) or
1556        not           -Infinity  <= floatExpr(      0.0) or
1557        not           -Infinity  <= floatExpr(   1000.0) or
1558        not           -Infinity  <= floatExpr(   1.0E37) or
1559        not           -Infinity  <= floatExpr( Infinity) or
1560                        -1.0E37  <= floatExpr(-Infinity) or
1561        not             -1.0E37  <= floatExpr(  -1.0E37) or
1562        not             -1.0E37  <= floatExpr(  -1000.0) or
1563        not             -1.0E37  <= floatExpr(     -0.0) or
1564        not             -1.0E37  <= floatExpr(      0.0) or
1565        not             -1.0E37  <= floatExpr(   1000.0) or
1566        not             -1.0E37  <= floatExpr(   1.0E37) or
1567        not             -1.0E37  <= floatExpr( Infinity) or
1568                        -1000.0  <= floatExpr(-Infinity) or
1569                        -1000.0  <= floatExpr(  -1.0E37) or
1570        not             -1000.0  <= floatExpr(  -1000.0) or
1571        not             -1000.0  <= floatExpr(     -0.0) or
1572        not             -1000.0  <= floatExpr(      0.0) or
1573        not             -1000.0  <= floatExpr(   1000.0) or
1574        not             -1000.0  <= floatExpr(   1.0E37) or
1575        not             -1000.0  <= floatExpr( Infinity) or
1576                           -0.0  <= floatExpr(-Infinity) or
1577                           -0.0  <= floatExpr(  -1.0E37) or
1578                           -0.0  <= floatExpr(  -1000.0) or
1579        not                -0.0  <= floatExpr(     -0.0) or
1580        not                -0.0  <= floatExpr(      0.0) or
1581        not                -0.0  <= floatExpr(   1000.0) or
1582        not                -0.0  <= floatExpr(   1.0E37) or
1583        not                -0.0  <= floatExpr( Infinity) or
1584                            0.0  <= floatExpr(-Infinity) or
1585                            0.0  <= floatExpr(  -1.0E37) or
1586                            0.0  <= floatExpr(  -1000.0) or
1587        not                 0.0  <= floatExpr(     -0.0) or
1588        not                 0.0  <= floatExpr(      0.0) or
1589        not                 0.0  <= floatExpr(   1000.0) or
1590        not                 0.0  <= floatExpr(   1.0E37) or
1591        not                 0.0  <= floatExpr( Infinity) or
1592                         1000.0  <= floatExpr(-Infinity) or
1593                         1000.0  <= floatExpr(  -1.0E37) or
1594                         1000.0  <= floatExpr(  -1000.0) or
1595                         1000.0  <= floatExpr(     -0.0) or
1596                         1000.0  <= floatExpr(      0.0) or
1597        not              1000.0  <= floatExpr(   1000.0) or
1598        not              1000.0  <= floatExpr(   1.0E37) or
1599        not              1000.0  <= floatExpr( Infinity) or
1600                         1.0E37  <= floatExpr(-Infinity) or
1601                         1.0E37  <= floatExpr(  -1.0E37) or
1602                         1.0E37  <= floatExpr(  -1000.0) or
1603                         1.0E37  <= floatExpr(     -0.0) or
1604                         1.0E37  <= floatExpr(      0.0) or
1605                         1.0E37  <= floatExpr(   1000.0) or
1606        not              1.0E37  <= floatExpr(   1.0E37) or
1607        not              1.0E37  <= floatExpr( Infinity) or
1608                       Infinity  <= floatExpr(-Infinity) or
1609                       Infinity  <= floatExpr(  -1.0E37) or
1610                       Infinity  <= floatExpr(  -1000.0) or
1611                       Infinity  <= floatExpr(     -0.0) or
1612                       Infinity  <= floatExpr(      0.0) or
1613                       Infinity  <= floatExpr(   1000.0) or
1614                       Infinity  <= floatExpr(   1.0E37) or
1615        not            Infinity  <= floatExpr( Infinity) or
1616        not floatExpr(-Infinity) <= floatExpr(-Infinity) or
1617        not floatExpr(-Infinity) <= floatExpr(  -1.0E37) or
1618        not floatExpr(-Infinity) <= floatExpr(  -1000.0) or
1619        not floatExpr(-Infinity) <= floatExpr(     -0.0) or
1620        not floatExpr(-Infinity) <= floatExpr(      0.0) or
1621        not floatExpr(-Infinity) <= floatExpr(   1000.0) or
1622        not floatExpr(-Infinity) <= floatExpr(   1.0E37) or
1623        not floatExpr(-Infinity) <= floatExpr( Infinity) or
1624            floatExpr(  -1.0E37) <= floatExpr(-Infinity) or
1625        not floatExpr(  -1.0E37) <= floatExpr(  -1.0E37) or
1626        not floatExpr(  -1.0E37) <= floatExpr(  -1000.0) or
1627        not floatExpr(  -1.0E37) <= floatExpr(     -0.0) or
1628        not floatExpr(  -1.0E37) <= floatExpr(      0.0) or
1629        not floatExpr(  -1.0E37) <= floatExpr(   1000.0) or
1630        not floatExpr(  -1.0E37) <= floatExpr(   1.0E37) or
1631        not floatExpr(  -1.0E37) <= floatExpr( Infinity) or
1632            floatExpr(  -1000.0) <= floatExpr(-Infinity) or
1633            floatExpr(  -1000.0) <= floatExpr(  -1.0E37) or
1634        not floatExpr(  -1000.0) <= floatExpr(  -1000.0) or
1635        not floatExpr(  -1000.0) <= floatExpr(     -0.0) or
1636        not floatExpr(  -1000.0) <= floatExpr(      0.0) or
1637        not floatExpr(  -1000.0) <= floatExpr(   1000.0) or
1638        not floatExpr(  -1000.0) <= floatExpr(   1.0E37) or
1639        not floatExpr(  -1000.0) <= floatExpr( Infinity) or
1640            floatExpr(     -0.0) <= floatExpr(-Infinity) or
1641            floatExpr(     -0.0) <= floatExpr(  -1.0E37) or
1642            floatExpr(     -0.0) <= floatExpr(  -1000.0) or
1643        not floatExpr(     -0.0) <= floatExpr(     -0.0) or
1644        not floatExpr(     -0.0) <= floatExpr(      0.0) or
1645        not floatExpr(     -0.0) <= floatExpr(   1000.0) or
1646        not floatExpr(     -0.0) <= floatExpr(   1.0E37) or
1647        not floatExpr(     -0.0) <= floatExpr( Infinity) or
1648            floatExpr(      0.0) <= floatExpr(-Infinity) or
1649            floatExpr(      0.0) <= floatExpr(  -1.0E37) or
1650            floatExpr(      0.0) <= floatExpr(  -1000.0) or
1651        not floatExpr(      0.0) <= floatExpr(     -0.0) or
1652        not floatExpr(      0.0) <= floatExpr(      0.0) or
1653        not floatExpr(      0.0) <= floatExpr(   1000.0) or
1654        not floatExpr(      0.0) <= floatExpr(   1.0E37) or
1655        not floatExpr(      0.0) <= floatExpr( Infinity) or
1656            floatExpr(   1000.0) <= floatExpr(-Infinity) or
1657            floatExpr(   1000.0) <= floatExpr(  -1.0E37) or
1658            floatExpr(   1000.0) <= floatExpr(  -1000.0) or
1659            floatExpr(   1000.0) <= floatExpr(     -0.0) or
1660            floatExpr(   1000.0) <= floatExpr(      0.0) or
1661        not floatExpr(   1000.0) <= floatExpr(   1000.0) or
1662        not floatExpr(   1000.0) <= floatExpr(   1.0E37) or
1663        not floatExpr(   1000.0) <= floatExpr( Infinity) or
1664            floatExpr(   1.0E37) <= floatExpr(-Infinity) or
1665            floatExpr(   1.0E37) <= floatExpr(  -1.0E37) or
1666            floatExpr(   1.0E37) <= floatExpr(  -1000.0) or
1667            floatExpr(   1.0E37) <= floatExpr(     -0.0) or
1668            floatExpr(   1.0E37) <= floatExpr(      0.0) or
1669            floatExpr(   1.0E37) <= floatExpr(   1000.0) or
1670        not floatExpr(   1.0E37) <= floatExpr(   1.0E37) or
1671        not floatExpr(   1.0E37) <= floatExpr( Infinity) or
1672            floatExpr( Infinity) <= floatExpr(-Infinity) or
1673            floatExpr( Infinity) <= floatExpr(  -1.0E37) or
1674            floatExpr( Infinity) <= floatExpr(  -1000.0) or
1675            floatExpr( Infinity) <= floatExpr(     -0.0) or
1676            floatExpr( Infinity) <= floatExpr(      0.0) or
1677            floatExpr( Infinity) <= floatExpr(   1000.0) or
1678            floatExpr( Infinity) <= floatExpr(   1.0E37) or
1679        not floatExpr( Infinity) <= floatExpr( Infinity) then
1680      writeln(" ***** Less equal for float values does not work correct.");
1681      okay := FALSE;
1682    end if;
1683
1684    if  not           -Infinity  >=           -Infinity  or
1685                      -Infinity  >=             -1.0E37  or
1686                      -Infinity  >=             -1000.0  or
1687                      -Infinity  >=                -0.0  or
1688                      -Infinity  >=                 0.0  or
1689                      -Infinity  >=              1000.0  or
1690                      -Infinity  >=              1.0E37  or
1691                      -Infinity  >=            Infinity  or
1692        not             -1.0E37  >=           -Infinity  or
1693        not             -1.0E37  >=             -1.0E37  or
1694                        -1.0E37  >=             -1000.0  or
1695                        -1.0E37  >=                -0.0  or
1696                        -1.0E37  >=                 0.0  or
1697                        -1.0E37  >=              1000.0  or
1698                        -1.0E37  >=              1.0E37  or
1699                        -1.0E37  >=            Infinity  or
1700        not             -1000.0  >=           -Infinity  or
1701        not             -1000.0  >=             -1.0E37  or
1702        not             -1000.0  >=             -1000.0  or
1703                        -1000.0  >=                -0.0  or
1704                        -1000.0  >=                 0.0  or
1705                        -1000.0  >=              1000.0  or
1706                        -1000.0  >=              1.0E37  or
1707                        -1000.0  >=            Infinity  or
1708        not                -0.0  >=           -Infinity  or
1709        not                -0.0  >=             -1.0E37  or
1710        not                -0.0  >=             -1000.0  or
1711        not                -0.0  >=                -0.0  or
1712        not                -0.0  >=                 0.0  or
1713                           -0.0  >=              1000.0  or
1714                           -0.0  >=              1.0E37  or
1715                           -0.0  >=            Infinity  or
1716        not                 0.0  >=           -Infinity  or
1717        not                 0.0  >=             -1.0E37  or
1718        not                 0.0  >=             -1000.0  or
1719        not                 0.0  >=                -0.0  or
1720        not                 0.0  >=                 0.0  or
1721                            0.0  >=              1000.0  or
1722                            0.0  >=              1.0E37  or
1723                            0.0  >=            Infinity  or
1724        not              1000.0  >=           -Infinity  or
1725        not              1000.0  >=             -1.0E37  or
1726        not              1000.0  >=             -1000.0  or
1727        not              1000.0  >=                -0.0  or
1728        not              1000.0  >=                 0.0  or
1729        not              1000.0  >=              1000.0  or
1730                         1000.0  >=              1.0E37  or
1731                         1000.0  >=            Infinity  or
1732        not              1.0E37  >=           -Infinity  or
1733        not              1.0E37  >=             -1.0E37  or
1734        not              1.0E37  >=             -1000.0  or
1735        not              1.0E37  >=                -0.0  or
1736        not              1.0E37  >=                 0.0  or
1737        not              1.0E37  >=              1000.0  or
1738        not              1.0E37  >=              1.0E37  or
1739                         1.0E37  >=            Infinity  or
1740        not            Infinity  >=           -Infinity  or
1741        not            Infinity  >=             -1.0E37  or
1742        not            Infinity  >=             -1000.0  or
1743        not            Infinity  >=                -0.0  or
1744        not            Infinity  >=                 0.0  or
1745        not            Infinity  >=              1000.0  or
1746        not            Infinity  >=              1.0E37  or
1747        not            Infinity  >=            Infinity  or
1748        not floatExpr(-Infinity) >=           -Infinity  or
1749            floatExpr(-Infinity) >=             -1.0E37  or
1750            floatExpr(-Infinity) >=             -1000.0  or
1751            floatExpr(-Infinity) >=                -0.0  or
1752            floatExpr(-Infinity) >=                 0.0  or
1753            floatExpr(-Infinity) >=              1000.0  or
1754            floatExpr(-Infinity) >=              1.0E37  or
1755            floatExpr(-Infinity) >=            Infinity  or
1756        not floatExpr(  -1.0E37) >=           -Infinity  or
1757        not floatExpr(  -1.0E37) >=             -1.0E37  or
1758            floatExpr(  -1.0E37) >=             -1000.0  or
1759            floatExpr(  -1.0E37) >=                -0.0  or
1760            floatExpr(  -1.0E37) >=                 0.0  or
1761            floatExpr(  -1.0E37) >=              1000.0  or
1762            floatExpr(  -1.0E37) >=              1.0E37  or
1763            floatExpr(  -1.0E37) >=            Infinity  or
1764        not floatExpr(  -1000.0) >=           -Infinity  or
1765        not floatExpr(  -1000.0) >=             -1.0E37  or
1766        not floatExpr(  -1000.0) >=             -1000.0  or
1767            floatExpr(  -1000.0) >=                -0.0  or
1768            floatExpr(  -1000.0) >=                 0.0  or
1769            floatExpr(  -1000.0) >=              1000.0  or
1770            floatExpr(  -1000.0) >=              1.0E37  or
1771            floatExpr(  -1000.0) >=            Infinity  or
1772        not floatExpr(     -0.0) >=           -Infinity  or
1773        not floatExpr(     -0.0) >=             -1.0E37  or
1774        not floatExpr(     -0.0) >=             -1000.0  or
1775        not floatExpr(     -0.0) >=                -0.0  or
1776        not floatExpr(     -0.0) >=                 0.0  or
1777            floatExpr(     -0.0) >=              1000.0  or
1778            floatExpr(     -0.0) >=              1.0E37  or
1779            floatExpr(     -0.0) >=            Infinity  or
1780        not floatExpr(      0.0) >=           -Infinity  or
1781        not floatExpr(      0.0) >=             -1.0E37  or
1782        not floatExpr(      0.0) >=             -1000.0  or
1783        not floatExpr(      0.0) >=                -0.0  or
1784        not floatExpr(      0.0) >=                 0.0  or
1785            floatExpr(      0.0) >=              1000.0  or
1786            floatExpr(      0.0) >=              1.0E37  or
1787            floatExpr(      0.0) >=            Infinity  or
1788        not floatExpr(   1000.0) >=           -Infinity  or
1789        not floatExpr(   1000.0) >=             -1.0E37  or
1790        not floatExpr(   1000.0) >=             -1000.0  or
1791        not floatExpr(   1000.0) >=                -0.0  or
1792        not floatExpr(   1000.0) >=                 0.0  or
1793        not floatExpr(   1000.0) >=              1000.0  or
1794            floatExpr(   1000.0) >=              1.0E37  or
1795            floatExpr(   1000.0) >=            Infinity  or
1796        not floatExpr(   1.0E37) >=           -Infinity  or
1797        not floatExpr(   1.0E37) >=             -1.0E37  or
1798        not floatExpr(   1.0E37) >=             -1000.0  or
1799        not floatExpr(   1.0E37) >=                -0.0  or
1800        not floatExpr(   1.0E37) >=                 0.0  or
1801        not floatExpr(   1.0E37) >=              1000.0  or
1802        not floatExpr(   1.0E37) >=              1.0E37  or
1803            floatExpr(   1.0E37) >=            Infinity  or
1804        not floatExpr( Infinity) >=           -Infinity  or
1805        not floatExpr( Infinity) >=             -1.0E37  or
1806        not floatExpr( Infinity) >=             -1000.0  or
1807        not floatExpr( Infinity) >=                -0.0  or
1808        not floatExpr( Infinity) >=                 0.0  or
1809        not floatExpr( Infinity) >=              1000.0  or
1810        not floatExpr( Infinity) >=              1.0E37  or
1811        not floatExpr( Infinity) >=            Infinity  or
1812        not           -Infinity  >= floatExpr(-Infinity) or
1813                      -Infinity  >= floatExpr(  -1.0E37) or
1814                      -Infinity  >= floatExpr(  -1000.0) or
1815                      -Infinity  >= floatExpr(     -0.0) or
1816                      -Infinity  >= floatExpr(      0.0) or
1817                      -Infinity  >= floatExpr(   1000.0) or
1818                      -Infinity  >= floatExpr(   1.0E37) or
1819                      -Infinity  >= floatExpr( Infinity) or
1820        not             -1.0E37  >= floatExpr(-Infinity) or
1821        not             -1.0E37  >= floatExpr(  -1.0E37) or
1822                        -1.0E37  >= floatExpr(  -1000.0) or
1823                        -1.0E37  >= floatExpr(     -0.0) or
1824                        -1.0E37  >= floatExpr(      0.0) or
1825                        -1.0E37  >= floatExpr(   1000.0) or
1826                        -1.0E37  >= floatExpr(   1.0E37) or
1827                        -1.0E37  >= floatExpr( Infinity) or
1828        not             -1000.0  >= floatExpr(-Infinity) or
1829        not             -1000.0  >= floatExpr(  -1.0E37) or
1830        not             -1000.0  >= floatExpr(  -1000.0) or
1831                        -1000.0  >= floatExpr(     -0.0) or
1832                        -1000.0  >= floatExpr(      0.0) or
1833                        -1000.0  >= floatExpr(   1000.0) or
1834                        -1000.0  >= floatExpr(   1.0E37) or
1835                        -1000.0  >= floatExpr( Infinity) or
1836        not                -0.0  >= floatExpr(-Infinity) or
1837        not                -0.0  >= floatExpr(  -1.0E37) or
1838        not                -0.0  >= floatExpr(  -1000.0) or
1839        not                -0.0  >= floatExpr(     -0.0) or
1840        not                -0.0  >= floatExpr(      0.0) or
1841                           -0.0  >= floatExpr(   1000.0) or
1842                           -0.0  >= floatExpr(   1.0E37) or
1843                           -0.0  >= floatExpr( Infinity) or
1844        not                 0.0  >= floatExpr(-Infinity) or
1845        not                 0.0  >= floatExpr(  -1.0E37) or
1846        not                 0.0  >= floatExpr(  -1000.0) or
1847        not                 0.0  >= floatExpr(     -0.0) or
1848        not                 0.0  >= floatExpr(      0.0) or
1849                            0.0  >= floatExpr(   1000.0) or
1850                            0.0  >= floatExpr(   1.0E37) or
1851                            0.0  >= floatExpr( Infinity) or
1852        not              1000.0  >= floatExpr(-Infinity) or
1853        not              1000.0  >= floatExpr(  -1.0E37) or
1854        not              1000.0  >= floatExpr(  -1000.0) or
1855        not              1000.0  >= floatExpr(     -0.0) or
1856        not              1000.0  >= floatExpr(      0.0) or
1857        not              1000.0  >= floatExpr(   1000.0) or
1858                         1000.0  >= floatExpr(   1.0E37) or
1859                         1000.0  >= floatExpr( Infinity) or
1860        not              1.0E37  >= floatExpr(-Infinity) or
1861        not              1.0E37  >= floatExpr(  -1.0E37) or
1862        not              1.0E37  >= floatExpr(  -1000.0) or
1863        not              1.0E37  >= floatExpr(     -0.0) or
1864        not              1.0E37  >= floatExpr(      0.0) or
1865        not              1.0E37  >= floatExpr(   1000.0) or
1866        not              1.0E37  >= floatExpr(   1.0E37) or
1867                         1.0E37  >= floatExpr( Infinity) or
1868        not            Infinity  >= floatExpr(-Infinity) or
1869        not            Infinity  >= floatExpr(  -1.0E37) or
1870        not            Infinity  >= floatExpr(  -1000.0) or
1871        not            Infinity  >= floatExpr(     -0.0) or
1872        not            Infinity  >= floatExpr(      0.0) or
1873        not            Infinity  >= floatExpr(   1000.0) or
1874        not            Infinity  >= floatExpr(   1.0E37) or
1875        not            Infinity  >= floatExpr( Infinity) or
1876        not floatExpr(-Infinity) >= floatExpr(-Infinity) or
1877            floatExpr(-Infinity) >= floatExpr(  -1.0E37) or
1878            floatExpr(-Infinity) >= floatExpr(  -1000.0) or
1879            floatExpr(-Infinity) >= floatExpr(     -0.0) or
1880            floatExpr(-Infinity) >= floatExpr(      0.0) or
1881            floatExpr(-Infinity) >= floatExpr(   1000.0) or
1882            floatExpr(-Infinity) >= floatExpr(   1.0E37) or
1883            floatExpr(-Infinity) >= floatExpr( Infinity) or
1884        not floatExpr(  -1.0E37) >= floatExpr(-Infinity) or
1885        not floatExpr(  -1.0E37) >= floatExpr(  -1.0E37) or
1886            floatExpr(  -1.0E37) >= floatExpr(  -1000.0) or
1887            floatExpr(  -1.0E37) >= floatExpr(     -0.0) or
1888            floatExpr(  -1.0E37) >= floatExpr(      0.0) or
1889            floatExpr(  -1.0E37) >= floatExpr(   1000.0) or
1890            floatExpr(  -1.0E37) >= floatExpr(   1.0E37) or
1891            floatExpr(  -1.0E37) >= floatExpr( Infinity) or
1892        not floatExpr(  -1000.0) >= floatExpr(-Infinity) or
1893        not floatExpr(  -1000.0) >= floatExpr(  -1.0E37) or
1894        not floatExpr(  -1000.0) >= floatExpr(  -1000.0) or
1895            floatExpr(  -1000.0) >= floatExpr(     -0.0) or
1896            floatExpr(  -1000.0) >= floatExpr(      0.0) or
1897            floatExpr(  -1000.0) >= floatExpr(   1000.0) or
1898            floatExpr(  -1000.0) >= floatExpr(   1.0E37) or
1899            floatExpr(  -1000.0) >= floatExpr( Infinity) or
1900        not floatExpr(     -0.0) >= floatExpr(-Infinity) or
1901        not floatExpr(     -0.0) >= floatExpr(  -1.0E37) or
1902        not floatExpr(     -0.0) >= floatExpr(  -1000.0) or
1903        not floatExpr(     -0.0) >= floatExpr(     -0.0) or
1904        not floatExpr(     -0.0) >= floatExpr(      0.0) or
1905            floatExpr(     -0.0) >= floatExpr(   1000.0) or
1906            floatExpr(     -0.0) >= floatExpr(   1.0E37) or
1907            floatExpr(     -0.0) >= floatExpr( Infinity) or
1908        not floatExpr(      0.0) >= floatExpr(-Infinity) or
1909        not floatExpr(      0.0) >= floatExpr(  -1.0E37) or
1910        not floatExpr(      0.0) >= floatExpr(  -1000.0) or
1911        not floatExpr(      0.0) >= floatExpr(     -0.0) or
1912        not floatExpr(      0.0) >= floatExpr(      0.0) or
1913            floatExpr(      0.0) >= floatExpr(   1000.0) or
1914            floatExpr(      0.0) >= floatExpr(   1.0E37) or
1915            floatExpr(      0.0) >= floatExpr( Infinity) or
1916        not floatExpr(   1000.0) >= floatExpr(-Infinity) or
1917        not floatExpr(   1000.0) >= floatExpr(  -1.0E37) or
1918        not floatExpr(   1000.0) >= floatExpr(  -1000.0) or
1919        not floatExpr(   1000.0) >= floatExpr(     -0.0) or
1920        not floatExpr(   1000.0) >= floatExpr(      0.0) or
1921        not floatExpr(   1000.0) >= floatExpr(   1000.0) or
1922            floatExpr(   1000.0) >= floatExpr(   1.0E37) or
1923            floatExpr(   1000.0) >= floatExpr( Infinity) or
1924        not floatExpr(   1.0E37) >= floatExpr(-Infinity) or
1925        not floatExpr(   1.0E37) >= floatExpr(  -1.0E37) or
1926        not floatExpr(   1.0E37) >= floatExpr(  -1000.0) or
1927        not floatExpr(   1.0E37) >= floatExpr(     -0.0) or
1928        not floatExpr(   1.0E37) >= floatExpr(      0.0) or
1929        not floatExpr(   1.0E37) >= floatExpr(   1000.0) or
1930        not floatExpr(   1.0E37) >= floatExpr(   1.0E37) or
1931            floatExpr(   1.0E37) >= floatExpr( Infinity) or
1932        not floatExpr( Infinity) >= floatExpr(-Infinity) or
1933        not floatExpr( Infinity) >= floatExpr(  -1.0E37) or
1934        not floatExpr( Infinity) >= floatExpr(  -1000.0) or
1935        not floatExpr( Infinity) >= floatExpr(     -0.0) or
1936        not floatExpr( Infinity) >= floatExpr(      0.0) or
1937        not floatExpr( Infinity) >= floatExpr(   1000.0) or
1938        not floatExpr( Infinity) >= floatExpr(   1.0E37) or
1939        not floatExpr( Infinity) >= floatExpr( Infinity) then
1940      writeln(" ***** Greater equal for float values does not work correct.");
1941      okay := FALSE;
1942    end if;
1943
1944    if okay then
1945      writeln("Comparison of float values works correct.");
1946    else
1947      writeln(" ***** Comparison of float values does not work correct.");
1948    end if;
1949  end func;
1950
1951
1952const proc: check_compare is func
1953  local
1954    var boolean: okay is TRUE;
1955  begin
1956    if  compare(-Infinity, -Infinity) <>  0 or
1957        compare(-Infinity,   -1.0E37) <> -1 or
1958        compare(-Infinity,   -1000.0) <> -1 or
1959        compare(-Infinity,      -0.0) <> -1 or
1960        compare(-Infinity,       0.0) <> -1 or
1961        compare(-Infinity,    1000.0) <> -1 or
1962        compare(-Infinity,    1.0E37) <> -1 or
1963        compare(-Infinity,  Infinity) <> -1 or
1964        compare(-Infinity,       NaN) <> -1 or
1965        compare(  -1.0E37, -Infinity) <>  1 or
1966        compare(  -1.0E37,   -1.0E37) <>  0 or
1967        compare(  -1.0E37,   -1000.0) <> -1 or
1968        compare(  -1.0E37,      -0.0) <> -1 or
1969        compare(  -1.0E37,       0.0) <> -1 or
1970        compare(  -1.0E37,    1000.0) <> -1 or
1971        compare(  -1.0E37,    1.0E37) <> -1 or
1972        compare(  -1.0E37,  Infinity) <> -1 or
1973        compare(  -1.0E37,       NaN) <> -1 or
1974        compare(  -1000.0, -Infinity) <>  1 or
1975        compare(  -1000.0,   -1.0E37) <>  1 or
1976        compare(  -1000.0,   -1000.0) <>  0 or
1977        compare(  -1000.0,      -0.0) <> -1 or
1978        compare(  -1000.0,       0.0) <> -1 or
1979        compare(  -1000.0,    1000.0) <> -1 or
1980        compare(  -1000.0,    1.0E37) <> -1 or
1981        compare(  -1000.0,  Infinity) <> -1 or
1982        compare(  -1000.0,       NaN) <> -1 or
1983        compare(     -0.0, -Infinity) <>  1 or
1984        compare(     -0.0,   -1.0E37) <>  1 or
1985        compare(     -0.0,   -1000.0) <>  1 or
1986        compare(     -0.0,      -0.0) <>  0 or
1987        compare(     -0.0,       0.0) <>  0 or
1988        compare(     -0.0,    1000.0) <> -1 or
1989        compare(     -0.0,    1.0E37) <> -1 or
1990        compare(     -0.0,  Infinity) <> -1 or
1991        compare(     -0.0,       NaN) <> -1 or
1992        compare(      0.0, -Infinity) <>  1 or
1993        compare(      0.0,   -1.0E37) <>  1 or
1994        compare(      0.0,   -1000.0) <>  1 or
1995        compare(      0.0,      -0.0) <>  0 or
1996        compare(      0.0,       0.0) <>  0 or
1997        compare(      0.0,    1000.0) <> -1 or
1998        compare(      0.0,    1.0E37) <> -1 or
1999        compare(      0.0,  Infinity) <> -1 or
2000        compare(      0.0,       NaN) <> -1 or
2001        compare(   1000.0, -Infinity) <>  1 or
2002        compare(   1000.0,   -1.0E37) <>  1 or
2003        compare(   1000.0,   -1000.0) <>  1 or
2004        compare(   1000.0,      -0.0) <>  1 or
2005        compare(   1000.0,       0.0) <>  1 or
2006        compare(   1000.0,    1000.0) <>  0 or
2007        compare(   1000.0,    1.0E37) <> -1 or
2008        compare(   1000.0,  Infinity) <> -1 or
2009        compare(   1000.0,       NaN) <> -1 or
2010        compare(   1.0E37, -Infinity) <>  1 or
2011        compare(   1.0E37,   -1.0E37) <>  1 or
2012        compare(   1.0E37,   -1000.0) <>  1 or
2013        compare(   1.0E37,      -0.0) <>  1 or
2014        compare(   1.0E37,       0.0) <>  1 or
2015        compare(   1.0E37,    1000.0) <>  1 or
2016        compare(   1.0E37,    1.0E37) <>  0 or
2017        compare(   1.0E37,  Infinity) <> -1 or
2018        compare(   1.0E37,       NaN) <> -1 or
2019        compare( Infinity, -Infinity) <>  1 or
2020        compare( Infinity,   -1.0E37) <>  1 or
2021        compare( Infinity,   -1000.0) <>  1 or
2022        compare( Infinity,      -0.0) <>  1 or
2023        compare( Infinity,       0.0) <>  1 or
2024        compare( Infinity,    1000.0) <>  1 or
2025        compare( Infinity,    1.0E37) <>  1 or
2026        compare( Infinity,  Infinity) <>  0 or
2027        compare( Infinity,       NaN) <> -1 or
2028        compare(      NaN, -Infinity) <>  1 or
2029        compare(      NaN,   -1.0E37) <>  1 or
2030        compare(      NaN,   -1000.0) <>  1 or
2031        compare(      NaN,      -0.0) <>  1 or
2032        compare(      NaN,       0.0) <>  1 or
2033        compare(      NaN,    1000.0) <>  1 or
2034        compare(      NaN,    1.0E37) <>  1 or
2035        compare(      NaN,  Infinity) <>  1 or
2036        compare(      NaN,       NaN) <>  0 then
2037      writeln(" ***** Compare of float values does not work correct. (1)");
2038      okay := FALSE;
2039    end if;
2040
2041    if  compare(floatExpr(-Infinity), -Infinity) <>  0 or
2042        compare(floatExpr(-Infinity),   -1.0E37) <> -1 or
2043        compare(floatExpr(-Infinity),   -1000.0) <> -1 or
2044        compare(floatExpr(-Infinity),      -0.0) <> -1 or
2045        compare(floatExpr(-Infinity),       0.0) <> -1 or
2046        compare(floatExpr(-Infinity),    1000.0) <> -1 or
2047        compare(floatExpr(-Infinity),    1.0E37) <> -1 or
2048        compare(floatExpr(-Infinity),  Infinity) <> -1 or
2049        compare(floatExpr(-Infinity),       NaN) <> -1 or
2050        compare(floatExpr(  -1.0E37), -Infinity) <>  1 or
2051        compare(floatExpr(  -1.0E37),   -1.0E37) <>  0 or
2052        compare(floatExpr(  -1.0E37),   -1000.0) <> -1 or
2053        compare(floatExpr(  -1.0E37),      -0.0) <> -1 or
2054        compare(floatExpr(  -1.0E37),       0.0) <> -1 or
2055        compare(floatExpr(  -1.0E37),    1000.0) <> -1 or
2056        compare(floatExpr(  -1.0E37),    1.0E37) <> -1 or
2057        compare(floatExpr(  -1.0E37),  Infinity) <> -1 or
2058        compare(floatExpr(  -1.0E37),       NaN) <> -1 or
2059        compare(floatExpr(  -1000.0), -Infinity) <>  1 or
2060        compare(floatExpr(  -1000.0),   -1.0E37) <>  1 or
2061        compare(floatExpr(  -1000.0),   -1000.0) <>  0 or
2062        compare(floatExpr(  -1000.0),      -0.0) <> -1 or
2063        compare(floatExpr(  -1000.0),       0.0) <> -1 or
2064        compare(floatExpr(  -1000.0),    1000.0) <> -1 or
2065        compare(floatExpr(  -1000.0),    1.0E37) <> -1 or
2066        compare(floatExpr(  -1000.0),  Infinity) <> -1 or
2067        compare(floatExpr(  -1000.0),       NaN) <> -1 or
2068        compare(floatExpr(     -0.0), -Infinity) <>  1 or
2069        compare(floatExpr(     -0.0),   -1.0E37) <>  1 or
2070        compare(floatExpr(     -0.0),   -1000.0) <>  1 or
2071        compare(floatExpr(     -0.0),      -0.0) <>  0 or
2072        compare(floatExpr(     -0.0),       0.0) <>  0 or
2073        compare(floatExpr(     -0.0),    1000.0) <> -1 or
2074        compare(floatExpr(     -0.0),    1.0E37) <> -1 or
2075        compare(floatExpr(     -0.0),  Infinity) <> -1 or
2076        compare(floatExpr(     -0.0),       NaN) <> -1 or
2077        compare(floatExpr(      0.0), -Infinity) <>  1 or
2078        compare(floatExpr(      0.0),   -1.0E37) <>  1 or
2079        compare(floatExpr(      0.0),   -1000.0) <>  1 or
2080        compare(floatExpr(      0.0),      -0.0) <>  0 or
2081        compare(floatExpr(      0.0),       0.0) <>  0 or
2082        compare(floatExpr(      0.0),    1000.0) <> -1 or
2083        compare(floatExpr(      0.0),    1.0E37) <> -1 or
2084        compare(floatExpr(      0.0),  Infinity) <> -1 or
2085        compare(floatExpr(      0.0),       NaN) <> -1 or
2086        compare(floatExpr(   1000.0), -Infinity) <>  1 or
2087        compare(floatExpr(   1000.0),   -1.0E37) <>  1 or
2088        compare(floatExpr(   1000.0),   -1000.0) <>  1 or
2089        compare(floatExpr(   1000.0),      -0.0) <>  1 or
2090        compare(floatExpr(   1000.0),       0.0) <>  1 or
2091        compare(floatExpr(   1000.0),    1000.0) <>  0 or
2092        compare(floatExpr(   1000.0),    1.0E37) <> -1 or
2093        compare(floatExpr(   1000.0),  Infinity) <> -1 or
2094        compare(floatExpr(   1000.0),       NaN) <> -1 or
2095        compare(floatExpr(   1.0E37), -Infinity) <>  1 or
2096        compare(floatExpr(   1.0E37),   -1.0E37) <>  1 or
2097        compare(floatExpr(   1.0E37),   -1000.0) <>  1 or
2098        compare(floatExpr(   1.0E37),      -0.0) <>  1 or
2099        compare(floatExpr(   1.0E37),       0.0) <>  1 or
2100        compare(floatExpr(   1.0E37),    1000.0) <>  1 or
2101        compare(floatExpr(   1.0E37),    1.0E37) <>  0 or
2102        compare(floatExpr(   1.0E37),  Infinity) <> -1 or
2103        compare(floatExpr(   1.0E37),       NaN) <> -1 or
2104        compare(floatExpr( Infinity), -Infinity) <>  1 or
2105        compare(floatExpr( Infinity),   -1.0E37) <>  1 or
2106        compare(floatExpr( Infinity),   -1000.0) <>  1 or
2107        compare(floatExpr( Infinity),      -0.0) <>  1 or
2108        compare(floatExpr( Infinity),       0.0) <>  1 or
2109        compare(floatExpr( Infinity),    1000.0) <>  1 or
2110        compare(floatExpr( Infinity),    1.0E37) <>  1 or
2111        compare(floatExpr( Infinity),  Infinity) <>  0 or
2112        compare(floatExpr( Infinity),       NaN) <> -1 or
2113        compare(floatExpr(      NaN), -Infinity) <>  1 or
2114        compare(floatExpr(      NaN),   -1.0E37) <>  1 or
2115        compare(floatExpr(      NaN),   -1000.0) <>  1 or
2116        compare(floatExpr(      NaN),      -0.0) <>  1 or
2117        compare(floatExpr(      NaN),       0.0) <>  1 or
2118        compare(floatExpr(      NaN),    1000.0) <>  1 or
2119        compare(floatExpr(      NaN),    1.0E37) <>  1 or
2120        compare(floatExpr(      NaN),  Infinity) <>  1 or
2121        compare(floatExpr(      NaN),       NaN) <>  0 then
2122      writeln(" ***** Compare of float values does not work correct. (2)");
2123      okay := FALSE;
2124    end if;
2125
2126    if  compare(-Infinity, floatExpr(-Infinity)) <>  0 or
2127        compare(-Infinity, floatExpr(  -1.0E37)) <> -1 or
2128        compare(-Infinity, floatExpr(  -1000.0)) <> -1 or
2129        compare(-Infinity, floatExpr(     -0.0)) <> -1 or
2130        compare(-Infinity, floatExpr(      0.0)) <> -1 or
2131        compare(-Infinity, floatExpr(   1000.0)) <> -1 or
2132        compare(-Infinity, floatExpr(   1.0E37)) <> -1 or
2133        compare(-Infinity, floatExpr( Infinity)) <> -1 or
2134        compare(-Infinity, floatExpr(      NaN)) <> -1 or
2135        compare(  -1.0E37, floatExpr(-Infinity)) <>  1 or
2136        compare(  -1.0E37, floatExpr(  -1.0E37)) <>  0 or
2137        compare(  -1.0E37, floatExpr(  -1000.0)) <> -1 or
2138        compare(  -1.0E37, floatExpr(     -0.0)) <> -1 or
2139        compare(  -1.0E37, floatExpr(      0.0)) <> -1 or
2140        compare(  -1.0E37, floatExpr(   1000.0)) <> -1 or
2141        compare(  -1.0E37, floatExpr(   1.0E37)) <> -1 or
2142        compare(  -1.0E37, floatExpr( Infinity)) <> -1 or
2143        compare(  -1.0E37, floatExpr(      NaN)) <> -1 or
2144        compare(  -1000.0, floatExpr(-Infinity)) <>  1 or
2145        compare(  -1000.0, floatExpr(  -1.0E37)) <>  1 or
2146        compare(  -1000.0, floatExpr(  -1000.0)) <>  0 or
2147        compare(  -1000.0, floatExpr(     -0.0)) <> -1 or
2148        compare(  -1000.0, floatExpr(      0.0)) <> -1 or
2149        compare(  -1000.0, floatExpr(   1000.0)) <> -1 or
2150        compare(  -1000.0, floatExpr(   1.0E37)) <> -1 or
2151        compare(  -1000.0, floatExpr( Infinity)) <> -1 or
2152        compare(  -1000.0, floatExpr(      NaN)) <> -1 or
2153        compare(     -0.0, floatExpr(-Infinity)) <>  1 or
2154        compare(     -0.0, floatExpr(  -1.0E37)) <>  1 or
2155        compare(     -0.0, floatExpr(  -1000.0)) <>  1 or
2156        compare(     -0.0, floatExpr(     -0.0)) <>  0 or
2157        compare(     -0.0, floatExpr(      0.0)) <>  0 or
2158        compare(     -0.0, floatExpr(   1000.0)) <> -1 or
2159        compare(     -0.0, floatExpr(   1.0E37)) <> -1 or
2160        compare(     -0.0, floatExpr( Infinity)) <> -1 or
2161        compare(     -0.0, floatExpr(      NaN)) <> -1 or
2162        compare(      0.0, floatExpr(-Infinity)) <>  1 or
2163        compare(      0.0, floatExpr(  -1.0E37)) <>  1 or
2164        compare(      0.0, floatExpr(  -1000.0)) <>  1 or
2165        compare(      0.0, floatExpr(     -0.0)) <>  0 or
2166        compare(      0.0, floatExpr(      0.0)) <>  0 or
2167        compare(      0.0, floatExpr(   1000.0)) <> -1 or
2168        compare(      0.0, floatExpr(   1.0E37)) <> -1 or
2169        compare(      0.0, floatExpr( Infinity)) <> -1 or
2170        compare(      0.0, floatExpr(      NaN)) <> -1 or
2171        compare(   1000.0, floatExpr(-Infinity)) <>  1 or
2172        compare(   1000.0, floatExpr(  -1.0E37)) <>  1 or
2173        compare(   1000.0, floatExpr(  -1000.0)) <>  1 or
2174        compare(   1000.0, floatExpr(     -0.0)) <>  1 or
2175        compare(   1000.0, floatExpr(      0.0)) <>  1 or
2176        compare(   1000.0, floatExpr(   1000.0)) <>  0 or
2177        compare(   1000.0, floatExpr(   1.0E37)) <> -1 or
2178        compare(   1000.0, floatExpr( Infinity)) <> -1 or
2179        compare(   1000.0, floatExpr(      NaN)) <> -1 or
2180        compare(   1.0E37, floatExpr(-Infinity)) <>  1 or
2181        compare(   1.0E37, floatExpr(  -1.0E37)) <>  1 or
2182        compare(   1.0E37, floatExpr(  -1000.0)) <>  1 or
2183        compare(   1.0E37, floatExpr(     -0.0)) <>  1 or
2184        compare(   1.0E37, floatExpr(      0.0)) <>  1 or
2185        compare(   1.0E37, floatExpr(   1000.0)) <>  1 or
2186        compare(   1.0E37, floatExpr(   1.0E37)) <>  0 or
2187        compare(   1.0E37, floatExpr( Infinity)) <> -1 or
2188        compare(   1.0E37, floatExpr(      NaN)) <> -1 or
2189        compare( Infinity, floatExpr(-Infinity)) <>  1 or
2190        compare( Infinity, floatExpr(  -1.0E37)) <>  1 or
2191        compare( Infinity, floatExpr(  -1000.0)) <>  1 or
2192        compare( Infinity, floatExpr(     -0.0)) <>  1 or
2193        compare( Infinity, floatExpr(      0.0)) <>  1 or
2194        compare( Infinity, floatExpr(   1000.0)) <>  1 or
2195        compare( Infinity, floatExpr(   1.0E37)) <>  1 or
2196        compare( Infinity, floatExpr( Infinity)) <>  0 or
2197        compare( Infinity, floatExpr(      NaN)) <> -1 or
2198        compare(      NaN, floatExpr(-Infinity)) <>  1 or
2199        compare(      NaN, floatExpr(  -1.0E37)) <>  1 or
2200        compare(      NaN, floatExpr(  -1000.0)) <>  1 or
2201        compare(      NaN, floatExpr(     -0.0)) <>  1 or
2202        compare(      NaN, floatExpr(      0.0)) <>  1 or
2203        compare(      NaN, floatExpr(   1000.0)) <>  1 or
2204        compare(      NaN, floatExpr(   1.0E37)) <>  1 or
2205        compare(      NaN, floatExpr( Infinity)) <>  1 or
2206        compare(      NaN, floatExpr(      NaN)) <>  0 then
2207      writeln(" ***** Compare of float values does not work correct. (3)");
2208      okay := FALSE;
2209    end if;
2210
2211    if  compare(floatExpr(-Infinity), floatExpr(-Infinity)) <>  0 or
2212        compare(floatExpr(-Infinity), floatExpr(  -1.0E37)) <> -1 or
2213        compare(floatExpr(-Infinity), floatExpr(  -1000.0)) <> -1 or
2214        compare(floatExpr(-Infinity), floatExpr(     -0.0)) <> -1 or
2215        compare(floatExpr(-Infinity), floatExpr(      0.0)) <> -1 or
2216        compare(floatExpr(-Infinity), floatExpr(   1000.0)) <> -1 or
2217        compare(floatExpr(-Infinity), floatExpr(   1.0E37)) <> -1 or
2218        compare(floatExpr(-Infinity), floatExpr( Infinity)) <> -1 or
2219        compare(floatExpr(-Infinity), floatExpr(      NaN)) <> -1 or
2220        compare(floatExpr(  -1.0E37), floatExpr(-Infinity)) <>  1 or
2221        compare(floatExpr(  -1.0E37), floatExpr(  -1.0E37)) <>  0 or
2222        compare(floatExpr(  -1.0E37), floatExpr(  -1000.0)) <> -1 or
2223        compare(floatExpr(  -1.0E37), floatExpr(     -0.0)) <> -1 or
2224        compare(floatExpr(  -1.0E37), floatExpr(      0.0)) <> -1 or
2225        compare(floatExpr(  -1.0E37), floatExpr(   1000.0)) <> -1 or
2226        compare(floatExpr(  -1.0E37), floatExpr(   1.0E37)) <> -1 or
2227        compare(floatExpr(  -1.0E37), floatExpr( Infinity)) <> -1 or
2228        compare(floatExpr(  -1.0E37), floatExpr(      NaN)) <> -1 or
2229        compare(floatExpr(  -1000.0), floatExpr(-Infinity)) <>  1 or
2230        compare(floatExpr(  -1000.0), floatExpr(  -1.0E37)) <>  1 or
2231        compare(floatExpr(  -1000.0), floatExpr(  -1000.0)) <>  0 or
2232        compare(floatExpr(  -1000.0), floatExpr(     -0.0)) <> -1 or
2233        compare(floatExpr(  -1000.0), floatExpr(      0.0)) <> -1 or
2234        compare(floatExpr(  -1000.0), floatExpr(   1000.0)) <> -1 or
2235        compare(floatExpr(  -1000.0), floatExpr(   1.0E37)) <> -1 or
2236        compare(floatExpr(  -1000.0), floatExpr( Infinity)) <> -1 or
2237        compare(floatExpr(  -1000.0), floatExpr(      NaN)) <> -1 or
2238        compare(floatExpr(     -0.0), floatExpr(-Infinity)) <>  1 or
2239        compare(floatExpr(     -0.0), floatExpr(  -1.0E37)) <>  1 or
2240        compare(floatExpr(     -0.0), floatExpr(  -1000.0)) <>  1 or
2241        compare(floatExpr(     -0.0), floatExpr(     -0.0)) <>  0 or
2242        compare(floatExpr(     -0.0), floatExpr(      0.0)) <>  0 or
2243        compare(floatExpr(     -0.0), floatExpr(   1000.0)) <> -1 or
2244        compare(floatExpr(     -0.0), floatExpr(   1.0E37)) <> -1 or
2245        compare(floatExpr(     -0.0), floatExpr( Infinity)) <> -1 or
2246        compare(floatExpr(     -0.0), floatExpr(      NaN)) <> -1 or
2247        compare(floatExpr(      0.0), floatExpr(-Infinity)) <>  1 or
2248        compare(floatExpr(      0.0), floatExpr(  -1.0E37)) <>  1 or
2249        compare(floatExpr(      0.0), floatExpr(  -1000.0)) <>  1 or
2250        compare(floatExpr(      0.0), floatExpr(     -0.0)) <>  0 or
2251        compare(floatExpr(      0.0), floatExpr(      0.0)) <>  0 or
2252        compare(floatExpr(      0.0), floatExpr(   1000.0)) <> -1 or
2253        compare(floatExpr(      0.0), floatExpr(   1.0E37)) <> -1 or
2254        compare(floatExpr(      0.0), floatExpr( Infinity)) <> -1 or
2255        compare(floatExpr(      0.0), floatExpr(      NaN)) <> -1 or
2256        compare(floatExpr(   1000.0), floatExpr(-Infinity)) <>  1 or
2257        compare(floatExpr(   1000.0), floatExpr(  -1.0E37)) <>  1 or
2258        compare(floatExpr(   1000.0), floatExpr(  -1000.0)) <>  1 or
2259        compare(floatExpr(   1000.0), floatExpr(     -0.0)) <>  1 or
2260        compare(floatExpr(   1000.0), floatExpr(      0.0)) <>  1 or
2261        compare(floatExpr(   1000.0), floatExpr(   1000.0)) <>  0 or
2262        compare(floatExpr(   1000.0), floatExpr(   1.0E37)) <> -1 or
2263        compare(floatExpr(   1000.0), floatExpr( Infinity)) <> -1 or
2264        compare(floatExpr(   1000.0), floatExpr(      NaN)) <> -1 or
2265        compare(floatExpr(   1.0E37), floatExpr(-Infinity)) <>  1 or
2266        compare(floatExpr(   1.0E37), floatExpr(  -1.0E37)) <>  1 or
2267        compare(floatExpr(   1.0E37), floatExpr(  -1000.0)) <>  1 or
2268        compare(floatExpr(   1.0E37), floatExpr(     -0.0)) <>  1 or
2269        compare(floatExpr(   1.0E37), floatExpr(      0.0)) <>  1 or
2270        compare(floatExpr(   1.0E37), floatExpr(   1000.0)) <>  1 or
2271        compare(floatExpr(   1.0E37), floatExpr(   1.0E37)) <>  0 or
2272        compare(floatExpr(   1.0E37), floatExpr( Infinity)) <> -1 or
2273        compare(floatExpr(   1.0E37), floatExpr(      NaN)) <> -1 or
2274        compare(floatExpr( Infinity), floatExpr(-Infinity)) <>  1 or
2275        compare(floatExpr( Infinity), floatExpr(  -1.0E37)) <>  1 or
2276        compare(floatExpr( Infinity), floatExpr(  -1000.0)) <>  1 or
2277        compare(floatExpr( Infinity), floatExpr(     -0.0)) <>  1 or
2278        compare(floatExpr( Infinity), floatExpr(      0.0)) <>  1 or
2279        compare(floatExpr( Infinity), floatExpr(   1000.0)) <>  1 or
2280        compare(floatExpr( Infinity), floatExpr(   1.0E37)) <>  1 or
2281        compare(floatExpr( Infinity), floatExpr( Infinity)) <>  0 or
2282        compare(floatExpr( Infinity), floatExpr(      NaN)) <> -1 or
2283        compare(floatExpr(      NaN), floatExpr(-Infinity)) <>  1 or
2284        compare(floatExpr(      NaN), floatExpr(  -1.0E37)) <>  1 or
2285        compare(floatExpr(      NaN), floatExpr(  -1000.0)) <>  1 or
2286        compare(floatExpr(      NaN), floatExpr(     -0.0)) <>  1 or
2287        compare(floatExpr(      NaN), floatExpr(      0.0)) <>  1 or
2288        compare(floatExpr(      NaN), floatExpr(   1000.0)) <>  1 or
2289        compare(floatExpr(      NaN), floatExpr(   1.0E37)) <>  1 or
2290        compare(floatExpr(      NaN), floatExpr( Infinity)) <>  1 or
2291        compare(floatExpr(      NaN), floatExpr(      NaN)) <>  0 then
2292      writeln(" ***** Compare of float values does not work correct. (4)");
2293      okay := FALSE;
2294    end if;
2295
2296    if okay then
2297      writeln("Compare of float values works correct.");
2298    else
2299      writeln(" ***** Compare of float values does not work correct.");
2300    end if;
2301  end func;
2302
2303
2304const proc: check_parse is func
2305  local
2306    var boolean: okay is TRUE;
2307  begin
2308    if  float parse                    "0.0"  <>       0.0 or
2309        float parse                   "-0.0"  <>       0.0 or
2310        float parse                    "1.0"  <>       1.0 or
2311        float parse                   "-1.0"  <>      -1.0 or
2312        float parse               "Infinity"  <>  Infinity or
2313        float parse              "-Infinity"  <> -Infinity or
2314        not isNaN(float parse          "NaN")              or
2315        float parse striExpr(          "0.0") <>       0.0 or
2316        float parse striExpr(         "-0.0") <>       0.0 or
2317        float parse striExpr(          "1.0") <>       1.0 or
2318        float parse striExpr(         "-1.0") <>      -1.0 or
2319        float parse striExpr(     "Infinity") <>  Infinity or
2320        float parse striExpr(    "-Infinity") <> -Infinity or
2321        not isNaN(float parse striExpr("NaN"))             or
2322        float parse           "123.456000000000000000000000000000000"  <>  123.456   or
2323        float parse          "+123.456000000000000000000000000000000"  <>  123.456   or
2324        float parse          "-123.456000000000000000000000000000000"  <> -123.456   or
2325        float parse           "0.00000000000000000000000000000000001"  <>    1.0e-35 or
2326        float parse          "+0.00000000000000000000000000000000001"  <>    1.0e-35 or
2327        float parse          "-0.00000000000000000000000000000000001"  <>   -1.0e-35 or
2328        float parse           "00000000000000000000000000000000000.5"  <>    0.5     or
2329        float parse          "+00000000000000000000000000000000000.5"  <>    0.5     or
2330        float parse          "-00000000000000000000000000000000000.5"  <>   -0.5     or
2331        float parse striExpr( "123.456000000000000000000000000000000") <>  123.456   or
2332        float parse striExpr("+123.456000000000000000000000000000000") <>  123.456   or
2333        float parse striExpr("-123.456000000000000000000000000000000") <> -123.456   or
2334        float parse striExpr( "0.00000000000000000000000000000000001") <>    1.0e-35 or
2335        float parse striExpr("+0.00000000000000000000000000000000001") <>    1.0e-35 or
2336        float parse striExpr("-0.00000000000000000000000000000000001") <>   -1.0e-35 or
2337        float parse striExpr( "00000000000000000000000000000000000.5") <>    0.5     or
2338        float parse striExpr("+00000000000000000000000000000000000.5") <>    0.5     or
2339        float parse striExpr("-00000000000000000000000000000000000.5") <>   -0.5     or
2340        float parse                               "1.0" <>                               1.0 or
2341        float parse                               "2.0" <>                               2.0 or
2342        float parse                               "4.0" <>                               4.0 or
2343        float parse                               "8.0" <>                               8.0 or
2344        float parse                              "16.0" <>                              16.0 or
2345        float parse                              "32.0" <>                              32.0 or
2346        float parse                              "64.0" <>                              64.0 or
2347        float parse                             "128.0" <>                             128.0 or
2348        float parse                             "256.0" <>                             256.0 or
2349        float parse                             "512.0" <>                             512.0 or
2350        float parse                            "1024.0" <>                            1024.0 or
2351        float parse                            "2048.0" <>                            2048.0 or
2352        float parse                            "4096.0" <>                            4096.0 or
2353        float parse                            "8192.0" <>                            8192.0 or
2354        float parse                           "16384.0" <>                           16384.0 or
2355        float parse                           "32768.0" <>                           32768.0 or
2356        float parse                           "65536.0" <>                           65536.0 or
2357        float parse                          "131072.0" <>                          131072.0 or
2358        float parse                          "262144.0" <>                          262144.0 or
2359        float parse                          "524288.0" <>                          524288.0 or
2360        float parse                         "1048576.0" <>                         1048576.0 or
2361        float parse                         "2097152.0" <>                         2097152.0 or
2362        float parse                         "4194304.0" <>                         4194304.0 or
2363        float parse                         "8388608.0" <>                         8388608.0 or
2364        float parse                        "16777216.0" <>                        16777216.0 or
2365        float parse                        "33554432.0" <>                        33554432.0 or
2366        float parse                        "67108864.0" <>                        67108864.0 or
2367        float parse                       "134217728.0" <>                       134217728.0 or
2368        float parse                       "268435456.0" <>                       268435456.0 or
2369        float parse                       "536870912.0" <>                       536870912.0 or
2370        float parse                      "1073741824.0" <>                      1073741824.0 or
2371        float parse                      "2147483648.0" <>                      2147483648.0 or
2372        float parse                      "4294967296.0" <>                      4294967296.0 or
2373        float parse                      "8589934592.0" <>                      8589934592.0 or
2374        float parse                     "17179869184.0" <>                     17179869184.0 or
2375        float parse                     "34359738368.0" <>                     34359738368.0 or
2376        float parse                     "68719476736.0" <>                     68719476736.0 or
2377        float parse                    "137438953472.0" <>                    137438953472.0 or
2378        float parse                    "274877906944.0" <>                    274877906944.0 or
2379        float parse                    "549755813888.0" <>                    549755813888.0 or
2380        float parse                   "1099511627776.0" <>                   1099511627776.0 or
2381        float parse                   "2199023255552.0" <>                   2199023255552.0 or
2382        float parse                   "4398046511104.0" <>                   4398046511104.0 or
2383        float parse                   "8796093022208.0" <>                   8796093022208.0 or
2384        float parse                  "17592186044416.0" <>                  17592186044416.0 or
2385        float parse                  "35184372088832.0" <>                  35184372088832.0 or
2386        float parse                  "70368744177664.0" <>                  70368744177664.0 or
2387        float parse                 "140737488355328.0" <>                 140737488355328.0 or
2388        float parse                 "281474976710656.0" <>                 281474976710656.0 or
2389        float parse                 "562949953421312.0" <>                 562949953421312.0 or
2390        float parse                "1125899906842624.0" <>                1125899906842624.0 or
2391        float parse                "2251799813685248.0" <>                2251799813685248.0 or
2392        float parse                "4503599627370496.0" <>                4503599627370496.0 or
2393        float parse                "9007199254740992.0" <>                9007199254740992.0 or
2394        float parse               "18014398509481984.0" <>               18014398509481984.0 or
2395        float parse               "36028797018963968.0" <>               36028797018963968.0 or
2396        float parse               "72057594037927936.0" <>               72057594037927936.0 or
2397        float parse              "144115188075855872.0" <>              144115188075855872.0 or
2398        float parse              "288230376151711744.0" <>              288230376151711744.0 or
2399        float parse              "576460752303423488.0" <>              576460752303423488.0 or
2400        float parse             "1152921504606846976.0" <>             1152921504606846976.0 or
2401        float parse             "2305843009213693952.0" <>             2305843009213693952.0 or
2402        float parse             "4611686018427387904.0" <>             4611686018427387904.0 or
2403        float parse             "9223372036854775808.0" <>             9223372036854775808.0 or
2404        float parse            "18446744073709551616.0" <>            18446744073709551616.0 or
2405        float parse            "36893488147419103232.0" <>            36893488147419103232.0 or
2406        float parse            "73786976294838206464.0" <>            73786976294838206464.0 or
2407        float parse           "147573952589676412928.0" <>           147573952589676412928.0 or
2408        float parse           "295147905179352825856.0" <>           295147905179352825856.0 or
2409        float parse           "590295810358705651712.0" <>           590295810358705651712.0 or
2410        float parse          "1180591620717411303424.0" <>          1180591620717411303424.0 or
2411        float parse          "2361183241434822606848.0" <>          2361183241434822606848.0 or
2412        float parse          "4722366482869645213696.0" <>          4722366482869645213696.0 or
2413        float parse          "9444732965739290427392.0" <>          9444732965739290427392.0 or
2414        float parse         "18889465931478580854784.0" <>         18889465931478580854784.0 or
2415        float parse         "37778931862957161709568.0" <>         37778931862957161709568.0 or
2416        float parse         "75557863725914323419136.0" <>         75557863725914323419136.0 or
2417        float parse        "151115727451828646838272.0" <>        151115727451828646838272.0 or
2418        float parse        "302231454903657293676544.0" <>        302231454903657293676544.0 or
2419        float parse        "604462909807314587353088.0" <>        604462909807314587353088.0 or
2420        float parse       "1208925819614629174706176.0" <>       1208925819614629174706176.0 or
2421        float parse       "2417851639229258349412352.0" <>       2417851639229258349412352.0 or
2422        float parse       "4835703278458516698824704.0" <>       4835703278458516698824704.0 or
2423        float parse       "9671406556917033397649408.0" <>       9671406556917033397649408.0 or
2424        float parse      "19342813113834066795298816.0" <>      19342813113834066795298816.0 or
2425        float parse      "38685626227668133590597632.0" <>      38685626227668133590597632.0 or
2426        float parse      "77371252455336267181195264.0" <>      77371252455336267181195264.0 or
2427        float parse      "15474250491067253436239052.0" <>      15474250491067253436239052.0 or
2428        float parse      "30948500982134506872478105.0" <>      30948500982134506872478105.0 or
2429        float parse     "618970019642690137449562112.0" <>     618970019642690137449562112.0 or
2430        float parse    "1237940039285380274899124224.0" <>    1237940039285380274899124224.0 or
2431        float parse    "2475880078570760549798248448.0" <>    2475880078570760549798248448.0 or
2432        float parse    "4951760157141521099596496896.0" <>    4951760157141521099596496896.0 or
2433        float parse    "9903520314283042199192993792.0" <>    9903520314283042199192993792.0 or
2434        float parse   "19807040628566084398385987584.0" <>   19807040628566084398385987584.0 or
2435        float parse   "39614081257132168796771975168.0" <>   39614081257132168796771975168.0 or
2436        float parse   "79228162514264337593543950336.0" <>   79228162514264337593543950336.0 or
2437        float parse  "158456325028528675187087900672.0" <>  158456325028528675187087900672.0 or
2438        float parse  "316912650057057350374175801344.0" <>  316912650057057350374175801344.0 or
2439        float parse  "633825300114114700748351602688.0" <>  633825300114114700748351602688.0 or
2440        float parse "1267650600228229401496703205376.0" <> 1267650600228229401496703205376.0 or
2441        float parse "0.5"                                <> 0.5 or
2442        float parse "0.25"                               <> 0.25 or
2443        float parse "0.125"                              <> 0.125 or
2444        float parse "0.0625"                             <> 0.0625 or
2445        float parse "0.03125"                            <> 0.03125 or
2446        float parse "0.015625"                           <> 0.015625 or
2447        float parse "0.0078125"                          <> 0.0078125 or
2448        float parse "0.00390625"                         <> 0.00390625 or
2449        float parse "0.001953125"                        <> 0.001953125 or
2450        float parse "0.0009765625"                       <> 0.0009765625 or
2451        float parse "0.00048828125"                      <> 0.00048828125 or
2452        float parse "0.000244140625"                     <> 0.000244140625 or
2453        float parse "0.0001220703125"                    <> 0.0001220703125 or
2454        float parse "0.00006103515625"                   <> 0.00006103515625 or
2455        float parse "0.000030517578125"                  <> 0.000030517578125 or
2456        float parse "0.0000152587890625"                 <> 0.0000152587890625 or
2457        float parse "0.00000762939453125"                <> 0.00000762939453125 or
2458        float parse "0.000003814697265625"               <> 0.000003814697265625 or
2459        float parse "0.0000019073486328125"              <> 0.0000019073486328125 or
2460        float parse "0.00000095367431640625"             <> 0.00000095367431640625 or
2461        float parse "0.000000476837158203125"            <> 0.000000476837158203125 or
2462        float parse "0.0000002384185791015625"           <> 0.0000002384185791015625 or
2463        float parse "0.00000011920928955078125"          <> 0.00000011920928955078125 or
2464        float parse "0.000000059604644775390625"         <> 0.000000059604644775390625 or
2465        float parse "0.0000000298023223876953125"        <> 0.0000000298023223876953125 or
2466        float parse "0.00000001490116119384765625"       <> 0.00000001490116119384765625 or
2467        float parse "0.000000007450580596923828125"      <> 0.000000007450580596923828125 or
2468        float parse "0.0000000037252902984619140625"     <> 0.0000000037252902984619140625 or
2469        float parse "0.00000000186264514923095703125"    <> 0.00000000186264514923095703125 or
2470        float parse "0.000000000931322574615478515625"   <> 0.000000000931322574615478515625 or
2471        float parse "0.0000000004656612873077392578125"  <> 0.0000000004656612873077392578125 or
2472        float parse "0.00000000023283064365386962890625" <> 0.00000000023283064365386962890625 or
2473        float parse "0.000000000116415321826934814453125" <>
2474                     0.000000000116415321826934814453125 or
2475        float parse "0.0000000000582076609134674072265625" <>
2476                     0.0000000000582076609134674072265625 or
2477        float parse "0.00000000002910383045673370361328125" <>
2478                     0.00000000002910383045673370361328125 or
2479        float parse "0.000000000014551915228366851806640625" <>
2480                     0.000000000014551915228366851806640625 or
2481        float parse "0.0000000000072759576141834259033203125" <>
2482                     0.0000000000072759576141834259033203125 or
2483        float parse "0.00000000000363797880709171295166015625" <>
2484                     0.00000000000363797880709171295166015625 or
2485        float parse "0.000000000001818989403545856475830078125" <>
2486                     0.000000000001818989403545856475830078125 or
2487        float parse "0.0000000000009094947017729282379150390625" <>
2488                     0.0000000000009094947017729282379150390625 or
2489        float parse "0.00000000000045474735088646411895751953125" <>
2490                     0.00000000000045474735088646411895751953125 or
2491        float parse "0.000000000000227373675443232059478759765625" <>
2492                     0.000000000000227373675443232059478759765625 or
2493        float parse "0.0000000000001136868377216160297393798828125" <>
2494                     0.0000000000001136868377216160297393798828125 or
2495        float parse "0.00000000000005684341886080801486968994140625" <>
2496                     0.00000000000005684341886080801486968994140625 or
2497        float parse "0.000000000000028421709430404007434844970703125" <>
2498                     0.000000000000028421709430404007434844970703125 or
2499        float parse "0.0000000000000142108547152020037174224853515625" <>
2500                     0.0000000000000142108547152020037174224853515625 or
2501        float parse "0.00000000000000710542735760100185871124267578125" <>
2502                     0.00000000000000710542735760100185871124267578125 or
2503        float parse "0.000000000000003552713678800500929355621337890625" <>
2504                     0.000000000000003552713678800500929355621337890625 or
2505        float parse "0.0000000000000017763568394002504646778106689453125" <>
2506                     0.0000000000000017763568394002504646778106689453125 or
2507        float parse "0.00000000000000088817841970012523233890533447265625" <>
2508                     0.00000000000000088817841970012523233890533447265625 or
2509        float parse "0.000000000000000444089209850062616169452667236328125" <>
2510                     0.000000000000000444089209850062616169452667236328125 or
2511        float parse "0.0000000000000002220446049250313080847263336181640625" <>
2512                     0.0000000000000002220446049250313080847263336181640625 or
2513        float parse "0.00000000000000011102230246251565404236316680908203125" <>
2514                     0.00000000000000011102230246251565404236316680908203125 or
2515        float parse "0.000000000000000055511151231257827021181583404541015625" <>
2516                     0.000000000000000055511151231257827021181583404541015625 or
2517        float parse "0.0000000000000000277555756156289135105907917022705078125" <>
2518                     0.0000000000000000277555756156289135105907917022705078125 or
2519        float parse "0.00000000000000001387778780781445675529539585113525390625" <>
2520                     0.00000000000000001387778780781445675529539585113525390625 or
2521        float parse "0.000000000000000006938893903907228377647697925567626953125" <>
2522                     0.000000000000000006938893903907228377647697925567626953125 or
2523        float parse "0.0000000000000000034694469519536141888238489627838134765625" <>
2524                     0.0000000000000000034694469519536141888238489627838134765625 or
2525        float parse "0.00000000000000000173472347597680709441192448139190673828125" <>
2526                     0.00000000000000000173472347597680709441192448139190673828125 or
2527        float parse "0.000000000000000000867361737988403547205962240695953369140625" <>
2528                     0.000000000000000000867361737988403547205962240695953369140625 or
2529        float parse "0.0000000000000000004336808689942017736029811203479766845703125" <>
2530                     0.0000000000000000004336808689942017736029811203479766845703125 or
2531        float parse "0.00000000000000000021684043449710088680149056017398834228515625" <>
2532                     0.00000000000000000021684043449710088680149056017398834228515625 or
2533        float parse "0.000000000000000000108420217248550443400745280086994171142578125" <>
2534                     0.000000000000000000108420217248550443400745280086994171142578125 or
2535        float parse "0.0000000000000000000542101086242752217003726400434970855712890625" <>
2536                     0.0000000000000000000542101086242752217003726400434970855712890625 or
2537        float parse "0.00000000000000000002710505431213761085018632002174854278564453125" <>
2538                     0.00000000000000000002710505431213761085018632002174854278564453125 or
2539        float parse "0.000000000000000000013552527156068805425093160010874271392822265625" <>
2540                     0.000000000000000000013552527156068805425093160010874271392822265625 or
2541        float parse "0.0000000000000000000067762635780344027125465800054371356964111328125" <>
2542                     0.0000000000000000000067762635780344027125465800054371356964111328125 or
2543        float parse "0.00000000000000000000338813178901720135627329000271856784820556640625" <>
2544                     0.00000000000000000000338813178901720135627329000271856784820556640625 or
2545        float parse "0.000000000000000000001694065894508600678136645001359283924102783203125" <>
2546                     0.000000000000000000001694065894508600678136645001359283924102783203125 or
2547        float parse "0.0000000000000000000008470329472543003390683225006796419620513916015625" <>
2548                     0.0000000000000000000008470329472543003390683225006796419620513916015625 or
2549        float parse "0.00000000000000000000042351647362715016953416125033982098102569580078125" <>
2550                     0.00000000000000000000042351647362715016953416125033982098102569580078125 or
2551        float parse "0.000000000000000000000211758236813575084767080625169910490512847900390625" <>
2552                     0.000000000000000000000211758236813575084767080625169910490512847900390625 or
2553        float parse "0.0000000000000000000001058791184067875423835403125849552452564239501953125" <>
2554                     0.0000000000000000000001058791184067875423835403125849552452564239501953125 or
2555        float parse "0.00000000000000000000005293955920339377119177015629247762262821197509765625" <>
2556                     0.00000000000000000000005293955920339377119177015629247762262821197509765625 or
2557        float parse "0.000000000000000000000026469779601696885595885078146238811314105987548828125" <>
2558                     0.000000000000000000000026469779601696885595885078146238811314105987548828125 then
2559      writeln(" ***** Parse operator for float does not work correct.");
2560      okay := FALSE;
2561    end if;
2562
2563    if  float parse  "9007199254740991.0" <>  9007199254740991.0 or
2564        float parse "-9007199254740991.0" <> -9007199254740991.0 or
2565        float parse  "9007199254740991.0" <>  9007199254740990.0 + 1.0 or
2566        float parse "-9007199254740991.0" <> -9007199254740990.0 - 1.0 or
2567        float parse striExpr( "9007199254740991.0") <>  9007199254740991.0 or
2568        float parse striExpr("-9007199254740991.0") <> -9007199254740991.0 or
2569        float parse striExpr( "9007199254740991.0") <>  9007199254740990.0 + 1.0 or
2570        float parse striExpr("-9007199254740991.0") <> -9007199254740990.0 - 1.0 then
2571      writeln(" ***** Parse operator for maximum or minimum odd value does not work correct.");
2572      okay := FALSE;
2573    end if;
2574
2575    if  float parse "1.0e-308" <> 1.0e-308 or
2576        float parse "1.0e-307" <> 1.0e-307 or
2577        float parse "1.0e-300" <> 1.0e-300 or
2578        float parse "1.0e-275" <> 1.0e-275 or
2579        float parse "1.0e-250" <> 1.0e-250 or
2580        float parse "1.0e-225" <> 1.0e-225 or
2581        float parse "1.0e-200" <> 1.0e-200 or
2582        float parse "1.0e-175" <> 1.0e-175 or
2583        float parse "1.0e-150" <> 1.0e-150 or
2584        float parse "1.0e-125" <> 1.0e-125 or
2585        float parse "1.0e-101" <> 1.0e-101 or
2586        float parse "1.0e-100" <> 1.0e-100 or
2587        float parse "1.0e-99"  <> 1.0e-99  or
2588        float parse "1.0e-75"  <> 1.0e-75  or
2589        float parse "1.0e-50"  <> 1.0e-50  or
2590        float parse "1.0e-25"  <> 1.0e-25  or
2591        float parse "1.0e-20"  <> 1.0e-20  or
2592        float parse "1.0e-15"  <> 1.0e-15  or
2593        float parse "1.0e-11"  <> 1.0e-11  or
2594        float parse "1.0e-10"  <> 1.0e-10  or
2595        float parse "1.0e-9"   <> 1.0e-9   or
2596        float parse "1.0e-2"   <> 1.0e-2   or
2597        float parse "1.0e-1"   <> 1.0e-1   or
2598        float parse "1.0e0"    <> 1.0e0    or
2599        float parse "1.0e1"    <> 1.0e1    or
2600        float parse "1.0e2"    <> 1.0e2    or
2601        float parse "1.0e9"    <> 1.0e9    or
2602        float parse "1.0e10"   <> 1.0e10   or
2603        float parse "1.0e11"   <> 1.0e11   or
2604        float parse "1.0e15"   <> 1.0e15   or
2605        float parse "1.0e20"   <> 1.0e20   or
2606        float parse "1.0e25"   <> 1.0e25   or
2607        float parse "1.0e50"   <> 1.0e50   or
2608        float parse "1.0e75"   <> 1.0e75   or
2609        float parse "1.0e99"   <> 1.0e99   or
2610        float parse "1.0e100"  <> 1.0e100  or
2611        float parse "1.0e101"  <> 1.0e101  or
2612        float parse "1.0e125"  <> 1.0e125  or
2613        float parse "1.0e150"  <> 1.0e150  or
2614        float parse "1.0e175"  <> 1.0e175  or
2615        float parse "1.0e200"  <> 1.0e200  or
2616        float parse "1.0e225"  <> 1.0e225  or
2617        float parse "1.0e250"  <> 1.0e250  or
2618        float parse "1.0e275"  <> 1.0e275  or
2619        float parse "1.0e300"  <> 1.0e300  or
2620        float parse "1.0e307"  <> 1.0e307  or
2621        float parse "1.0e308"  <> 1.0e308  or
2622        float parse striExpr("1.0e-308") <> 1.0e-308 or
2623        float parse striExpr("1.0e-307") <> 1.0e-307 or
2624        float parse striExpr("1.0e-300") <> 1.0e-300 or
2625        float parse striExpr("1.0e-275") <> 1.0e-275 or
2626        float parse striExpr("1.0e-250") <> 1.0e-250 or
2627        float parse striExpr("1.0e-225") <> 1.0e-225 or
2628        float parse striExpr("1.0e-200") <> 1.0e-200 or
2629        float parse striExpr("1.0e-175") <> 1.0e-175 or
2630        float parse striExpr("1.0e-150") <> 1.0e-150 or
2631        float parse striExpr("1.0e-125") <> 1.0e-125 or
2632        float parse striExpr("1.0e-101") <> 1.0e-101 or
2633        float parse striExpr("1.0e-100") <> 1.0e-100 or
2634        float parse striExpr("1.0e-99")  <> 1.0e-99  or
2635        float parse striExpr("1.0e-75")  <> 1.0e-75  or
2636        float parse striExpr("1.0e-50")  <> 1.0e-50  or
2637        float parse striExpr("1.0e-25")  <> 1.0e-25  or
2638        float parse striExpr("1.0e-20")  <> 1.0e-20  or
2639        float parse striExpr("1.0e-15")  <> 1.0e-15  or
2640        float parse striExpr("1.0e-11")  <> 1.0e-11  or
2641        float parse striExpr("1.0e-10")  <> 1.0e-10  or
2642        float parse striExpr("1.0e-9")   <> 1.0e-9   or
2643        float parse striExpr("1.0e-2")   <> 1.0e-2   or
2644        float parse striExpr("1.0e-1")   <> 1.0e-1   or
2645        float parse striExpr("1.0e0")    <> 1.0e0    or
2646        float parse striExpr("1.0e1")    <> 1.0e1    or
2647        float parse striExpr("1.0e2")    <> 1.0e2    or
2648        float parse striExpr("1.0e9")    <> 1.0e9    or
2649        float parse striExpr("1.0e10")   <> 1.0e10   or
2650        float parse striExpr("1.0e11")   <> 1.0e11   or
2651        float parse striExpr("1.0e15")   <> 1.0e15   or
2652        float parse striExpr("1.0e20")   <> 1.0e20   or
2653        float parse striExpr("1.0e25")   <> 1.0e25   or
2654        float parse striExpr("1.0e50")   <> 1.0e50   or
2655        float parse striExpr("1.0e75")   <> 1.0e75   or
2656        float parse striExpr("1.0e99")   <> 1.0e99   or
2657        float parse striExpr("1.0e100")  <> 1.0e100  or
2658        float parse striExpr("1.0e101")  <> 1.0e101  or
2659        float parse striExpr("1.0e125")  <> 1.0e125  or
2660        float parse striExpr("1.0e150")  <> 1.0e150  or
2661        float parse striExpr("1.0e175")  <> 1.0e175  or
2662        float parse striExpr("1.0e200")  <> 1.0e200  or
2663        float parse striExpr("1.0e225")  <> 1.0e225  or
2664        float parse striExpr("1.0e250")  <> 1.0e250  or
2665        float parse striExpr("1.0e275")  <> 1.0e275  or
2666        float parse striExpr("1.0e300")  <> 1.0e300  or
2667        float parse striExpr("1.0e307")  <> 1.0e307  or
2668        float parse striExpr("1.0e308")  <> 1.0e308  then
2669      writeln(" ***** Parse operator for float with exponent does not work correct.");
2670      okay := FALSE;
2671    end if;
2672
2673    if  float parse str(1.0e-308) <> 1.0e-308 or
2674        float parse str(1.0e-307) <> 1.0e-307 or
2675        float parse str(1.0e-300) <> 1.0e-300 or
2676        float parse str(1.0e-275) <> 1.0e-275 or
2677        float parse str(1.0e-250) <> 1.0e-250 or
2678        float parse str(1.0e-225) <> 1.0e-225 or
2679        float parse str(1.0e-200) <> 1.0e-200 or
2680        float parse str(1.0e-175) <> 1.0e-175 or
2681        float parse str(1.0e-150) <> 1.0e-150 or
2682        float parse str(1.0e-125) <> 1.0e-125 or
2683        float parse str(1.0e-101) <> 1.0e-101 or
2684        float parse str(1.0e-100) <> 1.0e-100 or
2685        float parse str(1.0e-99)  <> 1.0e-99  or
2686        float parse str(1.0e-75)  <> 1.0e-75  or
2687        float parse str(1.0e-50)  <> 1.0e-50  or
2688        float parse str(1.0e-25)  <> 1.0e-25  or
2689        float parse str(1.0e-20)  <> 1.0e-20  or
2690        float parse str(1.0e-15)  <> 1.0e-15  or
2691        float parse str(1.0e-11)  <> 1.0e-11  or
2692        float parse str(1.0e-10)  <> 1.0e-10  or
2693        float parse str(1.0e-9)   <> 1.0e-9   or
2694        float parse str(1.0e-2)   <> 1.0e-2   or
2695        float parse str(1.0e-1)   <> 1.0e-1   or
2696        float parse str(1.0e0)    <> 1.0e0    or
2697        float parse str(1.0e1)    <> 1.0e1    or
2698        float parse str(1.0e2)    <> 1.0e2    or
2699        float parse str(1.0e9)    <> 1.0e9    or
2700        float parse str(1.0e10)   <> 1.0e10   or
2701        float parse str(1.0e11)   <> 1.0e11   or
2702        float parse str(1.0e15)   <> 1.0e15   or
2703        float parse str(1.0e20)   <> 1.0e20   or
2704        float parse str(1.0e25)   <> 1.0e25   or
2705        float parse str(1.0e50)   <> 1.0e50   or
2706        float parse str(1.0e75)   <> 1.0e75   or
2707        float parse str(1.0e99)   <> 1.0e99   or
2708        float parse str(1.0e100)  <> 1.0e100  or
2709        float parse str(1.0e101)  <> 1.0e101  or
2710        float parse str(1.0e125)  <> 1.0e125  or
2711        float parse str(1.0e150)  <> 1.0e150  or
2712        float parse str(1.0e175)  <> 1.0e175  or
2713        float parse str(1.0e200)  <> 1.0e200  or
2714        float parse str(1.0e225)  <> 1.0e225  or
2715        float parse str(1.0e250)  <> 1.0e250  or
2716        float parse str(1.0e275)  <> 1.0e275  or
2717        float parse str(1.0e300)  <> 1.0e300  or
2718        float parse str(1.0e307)  <> 1.0e307  or
2719        float parse str(1.0e308)  <> 1.0e308  or
2720        float parse str(floatExpr(1.0e-308)) <> 1.0e-308 or
2721        float parse str(floatExpr(1.0e-307)) <> 1.0e-307 or
2722        float parse str(floatExpr(1.0e-300)) <> 1.0e-300 or
2723        float parse str(floatExpr(1.0e-275)) <> 1.0e-275 or
2724        float parse str(floatExpr(1.0e-250)) <> 1.0e-250 or
2725        float parse str(floatExpr(1.0e-225)) <> 1.0e-225 or
2726        float parse str(floatExpr(1.0e-200)) <> 1.0e-200 or
2727        float parse str(floatExpr(1.0e-175)) <> 1.0e-175 or
2728        float parse str(floatExpr(1.0e-150)) <> 1.0e-150 or
2729        float parse str(floatExpr(1.0e-125)) <> 1.0e-125 or
2730        float parse str(floatExpr(1.0e-101)) <> 1.0e-101 or
2731        float parse str(floatExpr(1.0e-100)) <> 1.0e-100 or
2732        float parse str(floatExpr(1.0e-99))  <> 1.0e-99  or
2733        float parse str(floatExpr(1.0e-75))  <> 1.0e-75  or
2734        float parse str(floatExpr(1.0e-50))  <> 1.0e-50  or
2735        float parse str(floatExpr(1.0e-25))  <> 1.0e-25  or
2736        float parse str(floatExpr(1.0e-20))  <> 1.0e-20  or
2737        float parse str(floatExpr(1.0e-15))  <> 1.0e-15  or
2738        float parse str(floatExpr(1.0e-11))  <> 1.0e-11  or
2739        float parse str(floatExpr(1.0e-10))  <> 1.0e-10  or
2740        float parse str(floatExpr(1.0e-9))   <> 1.0e-9   or
2741        float parse str(floatExpr(1.0e-2))   <> 1.0e-2   or
2742        float parse str(floatExpr(1.0e-1))   <> 1.0e-1   or
2743        float parse str(floatExpr(1.0e0))    <> 1.0e0    or
2744        float parse str(floatExpr(1.0e1))    <> 1.0e1    or
2745        float parse str(floatExpr(1.0e2))    <> 1.0e2    or
2746        float parse str(floatExpr(1.0e9))    <> 1.0e9    or
2747        float parse str(floatExpr(1.0e10))   <> 1.0e10   or
2748        float parse str(floatExpr(1.0e11))   <> 1.0e11   or
2749        float parse str(floatExpr(1.0e15))   <> 1.0e15   or
2750        float parse str(floatExpr(1.0e20))   <> 1.0e20   or
2751        float parse str(floatExpr(1.0e25))   <> 1.0e25   or
2752        float parse str(floatExpr(1.0e50))   <> 1.0e50   or
2753        float parse str(floatExpr(1.0e75))   <> 1.0e75   or
2754        float parse str(floatExpr(1.0e99))   <> 1.0e99   or
2755        float parse str(floatExpr(1.0e100))  <> 1.0e100  or
2756        float parse str(floatExpr(1.0e101))  <> 1.0e101  or
2757        float parse str(floatExpr(1.0e125))  <> 1.0e125  or
2758        float parse str(floatExpr(1.0e150))  <> 1.0e150  or
2759        float parse str(floatExpr(1.0e175))  <> 1.0e175  or
2760        float parse str(floatExpr(1.0e200))  <> 1.0e200  or
2761        float parse str(floatExpr(1.0e225))  <> 1.0e225  or
2762        float parse str(floatExpr(1.0e250))  <> 1.0e250  or
2763        float parse str(floatExpr(1.0e275))  <> 1.0e275  or
2764        float parse str(floatExpr(1.0e300))  <> 1.0e300  or
2765        float parse str(floatExpr(1.0e307))  <> 1.0e307  or
2766        float parse str(floatExpr(1.0e308))  <> 1.0e308  then
2767      writeln(" ***** Convert float to string and parse back to float does not work correct.");
2768      okay := FALSE;
2769    end if;
2770
2771    if  not raisesRangeError(float parse           " 0.0" ) or
2772        not raisesRangeError(float parse           "asdf" ) or
2773        not raisesRangeError(float parse           "0.0a" ) or
2774        not raisesRangeError(float parse            "1,2" ) or
2775        not raisesRangeError(float parse            "0x1" ) or
2776        not raisesRangeError(float parse            "0X1" ) or
2777        not raisesRangeError(float parse          "0x1.2" ) or
2778        not raisesRangeError(float parse          "0X1.3" ) or
2779        not raisesRangeError(float parse              "€" ) or
2780        not raisesRangeError(float parse striExpr( " 0.0")) or
2781        not raisesRangeError(float parse striExpr( "asdf")) or
2782        not raisesRangeError(float parse striExpr( "0.0a")) or
2783        not raisesRangeError(float parse striExpr(  "1,2")) or
2784        not raisesRangeError(float parse striExpr(  "0x1")) or
2785        not raisesRangeError(float parse striExpr(  "0X1")) or
2786        not raisesRangeError(float parse striExpr("0x1.2")) or
2787        not raisesRangeError(float parse striExpr("0X1.3")) or
2788        not raisesRangeError(float parse striExpr(    "€")) then
2789      writeln(" ***** Parse operator for float with illegal literal does not raise RANGE_ERROR.");
2790      okay := FALSE;
2791    end if;
2792
2793    if  float(                   "0.0" ) <>       0.0 or
2794        float(                  "-0.0" ) <>       0.0 or
2795        float(                   "1.0" ) <>       1.0 or
2796        float(                  "-1.0" ) <>      -1.0 or
2797        float(              "Infinity" ) <>  Infinity or
2798        float(             "-Infinity" ) <> -Infinity or
2799        not isNaN(float(         "NaN"))              or
2800        float(striExpr(          "0.0")) <>       0.0 or
2801        float(striExpr(         "-0.0")) <>       0.0 or
2802        float(striExpr(          "1.0")) <>       1.0 or
2803        float(striExpr(         "-1.0")) <>      -1.0 or
2804        float(striExpr(     "Infinity")) <>  Infinity or
2805        float(striExpr(    "-Infinity")) <> -Infinity or
2806        not isNaN(float(striExpr("NaN")))             or
2807        float(          "123.456000000000000000000000000000000" ) <>  123.456   or
2808        float(         "+123.456000000000000000000000000000000" ) <>  123.456   or
2809        float(         "-123.456000000000000000000000000000000" ) <> -123.456   or
2810        float(          "0.00000000000000000000000000000000001" ) <>    1.0e-35 or
2811        float(         "+0.00000000000000000000000000000000001" ) <>    1.0e-35 or
2812        float(         "-0.00000000000000000000000000000000001" ) <>   -1.0e-35 or
2813        float(          "00000000000000000000000000000000000.5" ) <>    0.5     or
2814        float(         "+00000000000000000000000000000000000.5" ) <>    0.5     or
2815        float(         "-00000000000000000000000000000000000.5" ) <>   -0.5     or
2816        float(striExpr( "123.456000000000000000000000000000000")) <>  123.456   or
2817        float(striExpr("+123.456000000000000000000000000000000")) <>  123.456   or
2818        float(striExpr("-123.456000000000000000000000000000000")) <> -123.456   or
2819        float(striExpr( "0.00000000000000000000000000000000001")) <>    1.0e-35 or
2820        float(striExpr("+0.00000000000000000000000000000000001")) <>    1.0e-35 or
2821        float(striExpr("-0.00000000000000000000000000000000001")) <>   -1.0e-35 or
2822        float(striExpr( "00000000000000000000000000000000000.5")) <>    0.5     or
2823        float(striExpr("+00000000000000000000000000000000000.5")) <>    0.5     or
2824        float(striExpr("-00000000000000000000000000000000000.5")) <>   -0.5     or
2825        float(                              "1.0") <>                               1.0 or
2826        float(                              "2.0") <>                               2.0 or
2827        float(                              "4.0") <>                               4.0 or
2828        float(                              "8.0") <>                               8.0 or
2829        float(                             "16.0") <>                              16.0 or
2830        float(                             "32.0") <>                              32.0 or
2831        float(                             "64.0") <>                              64.0 or
2832        float(                            "128.0") <>                             128.0 or
2833        float(                            "256.0") <>                             256.0 or
2834        float(                            "512.0") <>                             512.0 or
2835        float(                           "1024.0") <>                            1024.0 or
2836        float(                           "2048.0") <>                            2048.0 or
2837        float(                           "4096.0") <>                            4096.0 or
2838        float(                           "8192.0") <>                            8192.0 or
2839        float(                          "16384.0") <>                           16384.0 or
2840        float(                          "32768.0") <>                           32768.0 or
2841        float(                          "65536.0") <>                           65536.0 or
2842        float(                         "131072.0") <>                          131072.0 or
2843        float(                         "262144.0") <>                          262144.0 or
2844        float(                         "524288.0") <>                          524288.0 or
2845        float(                        "1048576.0") <>                         1048576.0 or
2846        float(                        "2097152.0") <>                         2097152.0 or
2847        float(                        "4194304.0") <>                         4194304.0 or
2848        float(                        "8388608.0") <>                         8388608.0 or
2849        float(                       "16777216.0") <>                        16777216.0 or
2850        float(                       "33554432.0") <>                        33554432.0 or
2851        float(                       "67108864.0") <>                        67108864.0 or
2852        float(                      "134217728.0") <>                       134217728.0 or
2853        float(                      "268435456.0") <>                       268435456.0 or
2854        float(                      "536870912.0") <>                       536870912.0 or
2855        float(                     "1073741824.0") <>                      1073741824.0 or
2856        float(                     "2147483648.0") <>                      2147483648.0 or
2857        float(                     "4294967296.0") <>                      4294967296.0 or
2858        float(                     "8589934592.0") <>                      8589934592.0 or
2859        float(                    "17179869184.0") <>                     17179869184.0 or
2860        float(                    "34359738368.0") <>                     34359738368.0 or
2861        float(                    "68719476736.0") <>                     68719476736.0 or
2862        float(                   "137438953472.0") <>                    137438953472.0 or
2863        float(                   "274877906944.0") <>                    274877906944.0 or
2864        float(                   "549755813888.0") <>                    549755813888.0 or
2865        float(                  "1099511627776.0") <>                   1099511627776.0 or
2866        float(                  "2199023255552.0") <>                   2199023255552.0 or
2867        float(                  "4398046511104.0") <>                   4398046511104.0 or
2868        float(                  "8796093022208.0") <>                   8796093022208.0 or
2869        float(                 "17592186044416.0") <>                  17592186044416.0 or
2870        float(                 "35184372088832.0") <>                  35184372088832.0 or
2871        float(                 "70368744177664.0") <>                  70368744177664.0 or
2872        float(                "140737488355328.0") <>                 140737488355328.0 or
2873        float(                "281474976710656.0") <>                 281474976710656.0 or
2874        float(                "562949953421312.0") <>                 562949953421312.0 or
2875        float(               "1125899906842624.0") <>                1125899906842624.0 or
2876        float(               "2251799813685248.0") <>                2251799813685248.0 or
2877        float(               "4503599627370496.0") <>                4503599627370496.0 or
2878        float(               "9007199254740992.0") <>                9007199254740992.0 or
2879        float(              "18014398509481984.0") <>               18014398509481984.0 or
2880        float(              "36028797018963968.0") <>               36028797018963968.0 or
2881        float(              "72057594037927936.0") <>               72057594037927936.0 or
2882        float(             "144115188075855872.0") <>              144115188075855872.0 or
2883        float(             "288230376151711744.0") <>              288230376151711744.0 or
2884        float(             "576460752303423488.0") <>              576460752303423488.0 or
2885        float(            "1152921504606846976.0") <>             1152921504606846976.0 or
2886        float(            "2305843009213693952.0") <>             2305843009213693952.0 or
2887        float(            "4611686018427387904.0") <>             4611686018427387904.0 or
2888        float(            "9223372036854775808.0") <>             9223372036854775808.0 or
2889        float(           "18446744073709551616.0") <>            18446744073709551616.0 or
2890        float(           "36893488147419103232.0") <>            36893488147419103232.0 or
2891        float(           "73786976294838206464.0") <>            73786976294838206464.0 or
2892        float(          "147573952589676412928.0") <>           147573952589676412928.0 or
2893        float(          "295147905179352825856.0") <>           295147905179352825856.0 or
2894        float(          "590295810358705651712.0") <>           590295810358705651712.0 or
2895        float(         "1180591620717411303424.0") <>          1180591620717411303424.0 or
2896        float(         "2361183241434822606848.0") <>          2361183241434822606848.0 or
2897        float(         "4722366482869645213696.0") <>          4722366482869645213696.0 or
2898        float(         "9444732965739290427392.0") <>          9444732965739290427392.0 or
2899        float(        "18889465931478580854784.0") <>         18889465931478580854784.0 or
2900        float(        "37778931862957161709568.0") <>         37778931862957161709568.0 or
2901        float(        "75557863725914323419136.0") <>         75557863725914323419136.0 or
2902        float(       "151115727451828646838272.0") <>        151115727451828646838272.0 or
2903        float(       "302231454903657293676544.0") <>        302231454903657293676544.0 or
2904        float(       "604462909807314587353088.0") <>        604462909807314587353088.0 or
2905        float(      "1208925819614629174706176.0") <>       1208925819614629174706176.0 or
2906        float(      "2417851639229258349412352.0") <>       2417851639229258349412352.0 or
2907        float(      "4835703278458516698824704.0") <>       4835703278458516698824704.0 or
2908        float(      "9671406556917033397649408.0") <>       9671406556917033397649408.0 or
2909        float(     "19342813113834066795298816.0") <>      19342813113834066795298816.0 or
2910        float(     "38685626227668133590597632.0") <>      38685626227668133590597632.0 or
2911        float(     "77371252455336267181195264.0") <>      77371252455336267181195264.0 or
2912        float(     "15474250491067253436239052.0") <>      15474250491067253436239052.0 or
2913        float(     "30948500982134506872478105.0") <>      30948500982134506872478105.0 or
2914        float(    "618970019642690137449562112.0") <>     618970019642690137449562112.0 or
2915        float(   "1237940039285380274899124224.0") <>    1237940039285380274899124224.0 or
2916        float(   "2475880078570760549798248448.0") <>    2475880078570760549798248448.0 or
2917        float(   "4951760157141521099596496896.0") <>    4951760157141521099596496896.0 or
2918        float(   "9903520314283042199192993792.0") <>    9903520314283042199192993792.0 or
2919        float(  "19807040628566084398385987584.0") <>   19807040628566084398385987584.0 or
2920        float(  "39614081257132168796771975168.0") <>   39614081257132168796771975168.0 or
2921        float(  "79228162514264337593543950336.0") <>   79228162514264337593543950336.0 or
2922        float( "158456325028528675187087900672.0") <>  158456325028528675187087900672.0 or
2923        float( "316912650057057350374175801344.0") <>  316912650057057350374175801344.0 or
2924        float( "633825300114114700748351602688.0") <>  633825300114114700748351602688.0 or
2925        float("1267650600228229401496703205376.0") <> 1267650600228229401496703205376.0 or
2926        float("0.5")                               <> 0.5 or
2927        float("0.25")                              <> 0.25 or
2928        float("0.125")                             <> 0.125 or
2929        float("0.0625")                            <> 0.0625 or
2930        float("0.03125")                           <> 0.03125 or
2931        float("0.015625")                          <> 0.015625 or
2932        float("0.0078125")                         <> 0.0078125 or
2933        float("0.00390625")                        <> 0.00390625 or
2934        float("0.001953125")                       <> 0.001953125 or
2935        float("0.0009765625")                      <> 0.0009765625 or
2936        float("0.00048828125")                     <> 0.00048828125 or
2937        float("0.000244140625")                    <> 0.000244140625 or
2938        float("0.0001220703125")                   <> 0.0001220703125 or
2939        float("0.00006103515625")                  <> 0.00006103515625 or
2940        float("0.000030517578125")                 <> 0.000030517578125 or
2941        float("0.0000152587890625")                <> 0.0000152587890625 or
2942        float("0.00000762939453125")               <> 0.00000762939453125 or
2943        float("0.000003814697265625")              <> 0.000003814697265625 or
2944        float("0.0000019073486328125")             <> 0.0000019073486328125 or
2945        float("0.00000095367431640625")            <> 0.00000095367431640625 or
2946        float("0.000000476837158203125")           <> 0.000000476837158203125 or
2947        float("0.0000002384185791015625")          <> 0.0000002384185791015625 or
2948        float("0.00000011920928955078125")         <> 0.00000011920928955078125 or
2949        float("0.000000059604644775390625")        <> 0.000000059604644775390625 or
2950        float("0.0000000298023223876953125")       <> 0.0000000298023223876953125 or
2951        float("0.00000001490116119384765625")      <> 0.00000001490116119384765625 or
2952        float("0.000000007450580596923828125")     <> 0.000000007450580596923828125 or
2953        float("0.0000000037252902984619140625")    <> 0.0000000037252902984619140625 or
2954        float("0.00000000186264514923095703125")   <> 0.00000000186264514923095703125 or
2955        float("0.000000000931322574615478515625")  <> 0.000000000931322574615478515625 or
2956        float("0.0000000004656612873077392578125") <> 0.0000000004656612873077392578125 or
2957        float("0.00000000023283064365386962890625")<> 0.00000000023283064365386962890625 or
2958        float("0.000000000116415321826934814453125") <>
2959                     0.000000000116415321826934814453125 or
2960        float("0.0000000000582076609134674072265625") <>
2961                     0.0000000000582076609134674072265625 or
2962        float("0.00000000002910383045673370361328125") <>
2963                     0.00000000002910383045673370361328125 or
2964        float("0.000000000014551915228366851806640625") <>
2965                     0.000000000014551915228366851806640625 or
2966        float("0.0000000000072759576141834259033203125") <>
2967                     0.0000000000072759576141834259033203125 or
2968        float("0.00000000000363797880709171295166015625") <>
2969                     0.00000000000363797880709171295166015625 or
2970        float("0.000000000001818989403545856475830078125") <>
2971                     0.000000000001818989403545856475830078125 or
2972        float("0.0000000000009094947017729282379150390625") <>
2973                     0.0000000000009094947017729282379150390625 or
2974        float("0.00000000000045474735088646411895751953125") <>
2975                     0.00000000000045474735088646411895751953125 or
2976        float("0.000000000000227373675443232059478759765625") <>
2977                     0.000000000000227373675443232059478759765625 or
2978        float("0.0000000000001136868377216160297393798828125") <>
2979                     0.0000000000001136868377216160297393798828125 or
2980        float("0.00000000000005684341886080801486968994140625") <>
2981                     0.00000000000005684341886080801486968994140625 or
2982        float("0.000000000000028421709430404007434844970703125") <>
2983                     0.000000000000028421709430404007434844970703125 or
2984        float("0.0000000000000142108547152020037174224853515625") <>
2985                     0.0000000000000142108547152020037174224853515625 or
2986        float("0.00000000000000710542735760100185871124267578125") <>
2987                     0.00000000000000710542735760100185871124267578125 or
2988        float("0.000000000000003552713678800500929355621337890625") <>
2989                     0.000000000000003552713678800500929355621337890625 or
2990        float("0.0000000000000017763568394002504646778106689453125") <>
2991                     0.0000000000000017763568394002504646778106689453125 or
2992        float("0.00000000000000088817841970012523233890533447265625") <>
2993                     0.00000000000000088817841970012523233890533447265625 or
2994        float("0.000000000000000444089209850062616169452667236328125") <>
2995                     0.000000000000000444089209850062616169452667236328125 or
2996        float("0.0000000000000002220446049250313080847263336181640625") <>
2997                     0.0000000000000002220446049250313080847263336181640625 or
2998        float("0.00000000000000011102230246251565404236316680908203125") <>
2999                     0.00000000000000011102230246251565404236316680908203125 or
3000        float("0.000000000000000055511151231257827021181583404541015625") <>
3001                     0.000000000000000055511151231257827021181583404541015625 or
3002        float("0.0000000000000000277555756156289135105907917022705078125") <>
3003                     0.0000000000000000277555756156289135105907917022705078125 or
3004        float("0.00000000000000001387778780781445675529539585113525390625") <>
3005                     0.00000000000000001387778780781445675529539585113525390625 or
3006        float("0.000000000000000006938893903907228377647697925567626953125") <>
3007                     0.000000000000000006938893903907228377647697925567626953125 or
3008        float("0.0000000000000000034694469519536141888238489627838134765625") <>
3009                     0.0000000000000000034694469519536141888238489627838134765625 or
3010        float("0.00000000000000000173472347597680709441192448139190673828125") <>
3011                     0.00000000000000000173472347597680709441192448139190673828125 or
3012        float("0.000000000000000000867361737988403547205962240695953369140625") <>
3013                     0.000000000000000000867361737988403547205962240695953369140625 or
3014        float("0.0000000000000000004336808689942017736029811203479766845703125") <>
3015                     0.0000000000000000004336808689942017736029811203479766845703125 or
3016        float("0.00000000000000000021684043449710088680149056017398834228515625") <>
3017                     0.00000000000000000021684043449710088680149056017398834228515625 or
3018        float("0.000000000000000000108420217248550443400745280086994171142578125") <>
3019                     0.000000000000000000108420217248550443400745280086994171142578125 or
3020        float("0.0000000000000000000542101086242752217003726400434970855712890625") <>
3021                     0.0000000000000000000542101086242752217003726400434970855712890625 or
3022        float("0.00000000000000000002710505431213761085018632002174854278564453125") <>
3023                     0.00000000000000000002710505431213761085018632002174854278564453125 or
3024        float("0.000000000000000000013552527156068805425093160010874271392822265625") <>
3025                     0.000000000000000000013552527156068805425093160010874271392822265625 or
3026        float("0.0000000000000000000067762635780344027125465800054371356964111328125") <>
3027                     0.0000000000000000000067762635780344027125465800054371356964111328125 or
3028        float("0.00000000000000000000338813178901720135627329000271856784820556640625") <>
3029                     0.00000000000000000000338813178901720135627329000271856784820556640625 or
3030        float("0.000000000000000000001694065894508600678136645001359283924102783203125") <>
3031                     0.000000000000000000001694065894508600678136645001359283924102783203125 or
3032        float("0.0000000000000000000008470329472543003390683225006796419620513916015625") <>
3033                     0.0000000000000000000008470329472543003390683225006796419620513916015625 or
3034        float("0.00000000000000000000042351647362715016953416125033982098102569580078125") <>
3035                     0.00000000000000000000042351647362715016953416125033982098102569580078125 or
3036        float("0.000000000000000000000211758236813575084767080625169910490512847900390625") <>
3037                     0.000000000000000000000211758236813575084767080625169910490512847900390625 or
3038        float("0.0000000000000000000001058791184067875423835403125849552452564239501953125") <>
3039                     0.0000000000000000000001058791184067875423835403125849552452564239501953125 or
3040        float("0.00000000000000000000005293955920339377119177015629247762262821197509765625") <>
3041                     0.00000000000000000000005293955920339377119177015629247762262821197509765625 or
3042        float("0.000000000000000000000026469779601696885595885078146238811314105987548828125") <>
3043                     0.000000000000000000000026469779601696885595885078146238811314105987548828125 then
3044      writeln(" ***** Parse operator for float does not work correct.");
3045      okay := FALSE;
3046    end if;
3047
3048    if  float( "9007199254740991.0") <>  9007199254740991.0 or
3049        float("-9007199254740991.0") <> -9007199254740991.0 or
3050        float( "9007199254740991.0") <>  9007199254740990.0 + 1.0 or
3051        float("-9007199254740991.0") <> -9007199254740990.0 - 1.0 or
3052        float(striExpr( "9007199254740991.0")) <>  9007199254740991.0 or
3053        float(striExpr("-9007199254740991.0")) <> -9007199254740991.0 or
3054        float(striExpr( "9007199254740991.0")) <>  9007199254740990.0 + 1.0 or
3055        float(striExpr("-9007199254740991.0")) <> -9007199254740990.0 - 1.0 then
3056      writeln(" ***** Parse operator for maximum or minimum odd value does not work correct.");
3057      okay := FALSE;
3058    end if;
3059
3060    if  float("1.0e-308") <> 1.0e-308 or
3061        float("1.0e-307") <> 1.0e-307 or
3062        float("1.0e-300") <> 1.0e-300 or
3063        float("1.0e-275") <> 1.0e-275 or
3064        float("1.0e-250") <> 1.0e-250 or
3065        float("1.0e-225") <> 1.0e-225 or
3066        float("1.0e-200") <> 1.0e-200 or
3067        float("1.0e-175") <> 1.0e-175 or
3068        float("1.0e-150") <> 1.0e-150 or
3069        float("1.0e-125") <> 1.0e-125 or
3070        float("1.0e-101") <> 1.0e-101 or
3071        float("1.0e-100") <> 1.0e-100 or
3072        float("1.0e-99" ) <> 1.0e-99  or
3073        float("1.0e-75" ) <> 1.0e-75  or
3074        float("1.0e-50" ) <> 1.0e-50  or
3075        float("1.0e-25" ) <> 1.0e-25  or
3076        float("1.0e-20" ) <> 1.0e-20  or
3077        float("1.0e-15" ) <> 1.0e-15  or
3078        float("1.0e-11" ) <> 1.0e-11  or
3079        float("1.0e-10" ) <> 1.0e-10  or
3080        float("1.0e-9"  ) <> 1.0e-9   or
3081        float("1.0e-2"  ) <> 1.0e-2   or
3082        float("1.0e-1"  ) <> 1.0e-1   or
3083        float("1.0e0"   ) <> 1.0e0    or
3084        float("1.0e1"   ) <> 1.0e1    or
3085        float("1.0e2"   ) <> 1.0e2    or
3086        float("1.0e9"   ) <> 1.0e9    or
3087        float("1.0e10"  ) <> 1.0e10   or
3088        float("1.0e11"  ) <> 1.0e11   or
3089        float("1.0e15"  ) <> 1.0e15   or
3090        float("1.0e20"  ) <> 1.0e20   or
3091        float("1.0e25"  ) <> 1.0e25   or
3092        float("1.0e50"  ) <> 1.0e50   or
3093        float("1.0e75"  ) <> 1.0e75   or
3094        float("1.0e99"  ) <> 1.0e99   or
3095        float("1.0e100" ) <> 1.0e100  or
3096        float("1.0e101" ) <> 1.0e101  or
3097        float("1.0e125" ) <> 1.0e125  or
3098        float("1.0e150" ) <> 1.0e150  or
3099        float("1.0e175" ) <> 1.0e175  or
3100        float("1.0e200" ) <> 1.0e200  or
3101        float("1.0e225" ) <> 1.0e225  or
3102        float("1.0e250" ) <> 1.0e250  or
3103        float("1.0e275" ) <> 1.0e275  or
3104        float("1.0e300" ) <> 1.0e300  or
3105        float("1.0e307" ) <> 1.0e307  or
3106        float("1.0e308" ) <> 1.0e308  or
3107        float(striExpr("1.0e-308")) <> 1.0e-308 or
3108        float(striExpr("1.0e-307")) <> 1.0e-307 or
3109        float(striExpr("1.0e-300")) <> 1.0e-300 or
3110        float(striExpr("1.0e-275")) <> 1.0e-275 or
3111        float(striExpr("1.0e-250")) <> 1.0e-250 or
3112        float(striExpr("1.0e-225")) <> 1.0e-225 or
3113        float(striExpr("1.0e-200")) <> 1.0e-200 or
3114        float(striExpr("1.0e-175")) <> 1.0e-175 or
3115        float(striExpr("1.0e-150")) <> 1.0e-150 or
3116        float(striExpr("1.0e-125")) <> 1.0e-125 or
3117        float(striExpr("1.0e-101")) <> 1.0e-101 or
3118        float(striExpr("1.0e-100")) <> 1.0e-100 or
3119        float(striExpr("1.0e-99" )) <> 1.0e-99  or
3120        float(striExpr("1.0e-75" )) <> 1.0e-75  or
3121        float(striExpr("1.0e-50" )) <> 1.0e-50  or
3122        float(striExpr("1.0e-25" )) <> 1.0e-25  or
3123        float(striExpr("1.0e-20" )) <> 1.0e-20  or
3124        float(striExpr("1.0e-15" )) <> 1.0e-15  or
3125        float(striExpr("1.0e-11" )) <> 1.0e-11  or
3126        float(striExpr("1.0e-10" )) <> 1.0e-10  or
3127        float(striExpr("1.0e-9"  )) <> 1.0e-9   or
3128        float(striExpr("1.0e-2"  )) <> 1.0e-2   or
3129        float(striExpr("1.0e-1"  )) <> 1.0e-1   or
3130        float(striExpr("1.0e0"   )) <> 1.0e0    or
3131        float(striExpr("1.0e1"   )) <> 1.0e1    or
3132        float(striExpr("1.0e2"   )) <> 1.0e2    or
3133        float(striExpr("1.0e9"   )) <> 1.0e9    or
3134        float(striExpr("1.0e10"  )) <> 1.0e10   or
3135        float(striExpr("1.0e11"  )) <> 1.0e11   or
3136        float(striExpr("1.0e15"  )) <> 1.0e15   or
3137        float(striExpr("1.0e20"  )) <> 1.0e20   or
3138        float(striExpr("1.0e25"  )) <> 1.0e25   or
3139        float(striExpr("1.0e50"  )) <> 1.0e50   or
3140        float(striExpr("1.0e75"  )) <> 1.0e75   or
3141        float(striExpr("1.0e99"  )) <> 1.0e99   or
3142        float(striExpr("1.0e100" )) <> 1.0e100  or
3143        float(striExpr("1.0e101" )) <> 1.0e101  or
3144        float(striExpr("1.0e125" )) <> 1.0e125  or
3145        float(striExpr("1.0e150" )) <> 1.0e150  or
3146        float(striExpr("1.0e175" )) <> 1.0e175  or
3147        float(striExpr("1.0e200" )) <> 1.0e200  or
3148        float(striExpr("1.0e225" )) <> 1.0e225  or
3149        float(striExpr("1.0e250" )) <> 1.0e250  or
3150        float(striExpr("1.0e275" )) <> 1.0e275  or
3151        float(striExpr("1.0e300" )) <> 1.0e300  or
3152        float(striExpr("1.0e307" )) <> 1.0e307  or
3153        float(striExpr("1.0e308" )) <> 1.0e308  then
3154      writeln(" ***** Parse operator for float with exponent does not work correct.");
3155      okay := FALSE;
3156    end if;
3157
3158    if  float(str(1.0e-308)) <> 1.0e-308 or
3159        float(str(1.0e-307)) <> 1.0e-307 or
3160        float(str(1.0e-300)) <> 1.0e-300 or
3161        float(str(1.0e-275)) <> 1.0e-275 or
3162        float(str(1.0e-250)) <> 1.0e-250 or
3163        float(str(1.0e-225)) <> 1.0e-225 or
3164        float(str(1.0e-200)) <> 1.0e-200 or
3165        float(str(1.0e-175)) <> 1.0e-175 or
3166        float(str(1.0e-150)) <> 1.0e-150 or
3167        float(str(1.0e-125)) <> 1.0e-125 or
3168        float(str(1.0e-101)) <> 1.0e-101 or
3169        float(str(1.0e-100)) <> 1.0e-100 or
3170        float(str(1.0e-99 )) <> 1.0e-99  or
3171        float(str(1.0e-75 )) <> 1.0e-75  or
3172        float(str(1.0e-50 )) <> 1.0e-50  or
3173        float(str(1.0e-25 )) <> 1.0e-25  or
3174        float(str(1.0e-20 )) <> 1.0e-20  or
3175        float(str(1.0e-15 )) <> 1.0e-15  or
3176        float(str(1.0e-11 )) <> 1.0e-11  or
3177        float(str(1.0e-10 )) <> 1.0e-10  or
3178        float(str(1.0e-9  )) <> 1.0e-9   or
3179        float(str(1.0e-2  )) <> 1.0e-2   or
3180        float(str(1.0e-1  )) <> 1.0e-1   or
3181        float(str(1.0e0   )) <> 1.0e0    or
3182        float(str(1.0e1   )) <> 1.0e1    or
3183        float(str(1.0e2   )) <> 1.0e2    or
3184        float(str(1.0e9   )) <> 1.0e9    or
3185        float(str(1.0e10  )) <> 1.0e10   or
3186        float(str(1.0e11  )) <> 1.0e11   or
3187        float(str(1.0e15  )) <> 1.0e15   or
3188        float(str(1.0e20  )) <> 1.0e20   or
3189        float(str(1.0e25  )) <> 1.0e25   or
3190        float(str(1.0e50  )) <> 1.0e50   or
3191        float(str(1.0e75  )) <> 1.0e75   or
3192        float(str(1.0e99  )) <> 1.0e99   or
3193        float(str(1.0e100 )) <> 1.0e100  or
3194        float(str(1.0e101 )) <> 1.0e101  or
3195        float(str(1.0e125 )) <> 1.0e125  or
3196        float(str(1.0e150 )) <> 1.0e150  or
3197        float(str(1.0e175 )) <> 1.0e175  or
3198        float(str(1.0e200 )) <> 1.0e200  or
3199        float(str(1.0e225 )) <> 1.0e225  or
3200        float(str(1.0e250 )) <> 1.0e250  or
3201        float(str(1.0e275 )) <> 1.0e275  or
3202        float(str(1.0e300 )) <> 1.0e300  or
3203        float(str(1.0e307 )) <> 1.0e307  or
3204        float(str(1.0e308 )) <> 1.0e308  or
3205        float(str(floatExpr(1.0e-308))) <> 1.0e-308 or
3206        float(str(floatExpr(1.0e-307))) <> 1.0e-307 or
3207        float(str(floatExpr(1.0e-300))) <> 1.0e-300 or
3208        float(str(floatExpr(1.0e-275))) <> 1.0e-275 or
3209        float(str(floatExpr(1.0e-250))) <> 1.0e-250 or
3210        float(str(floatExpr(1.0e-225))) <> 1.0e-225 or
3211        float(str(floatExpr(1.0e-200))) <> 1.0e-200 or
3212        float(str(floatExpr(1.0e-175))) <> 1.0e-175 or
3213        float(str(floatExpr(1.0e-150))) <> 1.0e-150 or
3214        float(str(floatExpr(1.0e-125))) <> 1.0e-125 or
3215        float(str(floatExpr(1.0e-101))) <> 1.0e-101 or
3216        float(str(floatExpr(1.0e-100))) <> 1.0e-100 or
3217        float(str(floatExpr(1.0e-99 ))) <> 1.0e-99  or
3218        float(str(floatExpr(1.0e-75 ))) <> 1.0e-75  or
3219        float(str(floatExpr(1.0e-50 ))) <> 1.0e-50  or
3220        float(str(floatExpr(1.0e-25 ))) <> 1.0e-25  or
3221        float(str(floatExpr(1.0e-20 ))) <> 1.0e-20  or
3222        float(str(floatExpr(1.0e-15 ))) <> 1.0e-15  or
3223        float(str(floatExpr(1.0e-11 ))) <> 1.0e-11  or
3224        float(str(floatExpr(1.0e-10 ))) <> 1.0e-10  or
3225        float(str(floatExpr(1.0e-9  ))) <> 1.0e-9   or
3226        float(str(floatExpr(1.0e-2  ))) <> 1.0e-2   or
3227        float(str(floatExpr(1.0e-1  ))) <> 1.0e-1   or
3228        float(str(floatExpr(1.0e0   ))) <> 1.0e0    or
3229        float(str(floatExpr(1.0e1   ))) <> 1.0e1    or
3230        float(str(floatExpr(1.0e2   ))) <> 1.0e2    or
3231        float(str(floatExpr(1.0e9   ))) <> 1.0e9    or
3232        float(str(floatExpr(1.0e10  ))) <> 1.0e10   or
3233        float(str(floatExpr(1.0e11  ))) <> 1.0e11   or
3234        float(str(floatExpr(1.0e15  ))) <> 1.0e15   or
3235        float(str(floatExpr(1.0e20  ))) <> 1.0e20   or
3236        float(str(floatExpr(1.0e25  ))) <> 1.0e25   or
3237        float(str(floatExpr(1.0e50  ))) <> 1.0e50   or
3238        float(str(floatExpr(1.0e75  ))) <> 1.0e75   or
3239        float(str(floatExpr(1.0e99  ))) <> 1.0e99   or
3240        float(str(floatExpr(1.0e100 ))) <> 1.0e100  or
3241        float(str(floatExpr(1.0e101 ))) <> 1.0e101  or
3242        float(str(floatExpr(1.0e125 ))) <> 1.0e125  or
3243        float(str(floatExpr(1.0e150 ))) <> 1.0e150  or
3244        float(str(floatExpr(1.0e175 ))) <> 1.0e175  or
3245        float(str(floatExpr(1.0e200 ))) <> 1.0e200  or
3246        float(str(floatExpr(1.0e225 ))) <> 1.0e225  or
3247        float(str(floatExpr(1.0e250 ))) <> 1.0e250  or
3248        float(str(floatExpr(1.0e275 ))) <> 1.0e275  or
3249        float(str(floatExpr(1.0e300 ))) <> 1.0e300  or
3250        float(str(floatExpr(1.0e307 ))) <> 1.0e307  or
3251        float(str(floatExpr(1.0e308 ))) <> 1.0e308  then
3252      writeln(" ***** Convert float to string and parse back to float does not work correct.");
3253      okay := FALSE;
3254    end if;
3255
3256    if  not raisesRangeError(float(          " 0.0" )) or
3257        not raisesRangeError(float(          "asdf" )) or
3258        not raisesRangeError(float(          "0.0a" )) or
3259        not raisesRangeError(float(           "1,2" )) or
3260        not raisesRangeError(float(           "0x1" )) or
3261        not raisesRangeError(float(           "0X1" )) or
3262        not raisesRangeError(float(         "0x1.2" )) or
3263        not raisesRangeError(float(         "0X1.3" )) or
3264        not raisesRangeError(float(             "€" )) or
3265        not raisesRangeError(float(striExpr( " 0.0"))) or
3266        not raisesRangeError(float(striExpr( "asdf"))) or
3267        not raisesRangeError(float(striExpr( "0.0a"))) or
3268        not raisesRangeError(float(striExpr(  "1,2"))) or
3269        not raisesRangeError(float(striExpr(  "0x1"))) or
3270        not raisesRangeError(float(striExpr(  "0X1"))) or
3271        not raisesRangeError(float(striExpr("0x1.2"))) or
3272        not raisesRangeError(float(striExpr("0X1.3"))) or
3273        not raisesRangeError(float(striExpr(    "€"))) then
3274      writeln(" ***** Parse operator for float with illegal literal does not raise RANGE_ERROR.");
3275      okay := FALSE;
3276    end if;
3277
3278    if okay then
3279      writeln("Parsing of strings with float literals works correct.");
3280    else
3281      writeln(" ***** Parsing of strings with float literals does not work correct.");
3282    end if;
3283  end func;
3284
3285
3286const proc: check_str is func
3287  local
3288    var boolean: okay is TRUE;
3289  begin
3290    if  str(-10000000000000000.0)  <> "-10000000000000000.0" or
3291        str( -9007199254740992.0)  <>  "-9007199254740992.0" or
3292        str( -4503599627370496.0)  <>  "-4503599627370496.0" or
3293        str( -2251799813685248.0)  <>  "-2251799813685248.0" or
3294        str( -1125899906842624.0)  <>  "-1125899906842624.0" or
3295        str( -1000000000000000.0)  <>  "-1000000000000000.0" or
3296        str(  -999999999999999.0)  <>   "-999999999999999.0" or
3297        str(  -234567891234567.0)  <>   "-234567891234567.0" or
3298        str(  -100000000000000.0)  <>   "-100000000000000.0" or
3299        str(   -99999999999999.0)  <>    "-99999999999999.0" or
3300        str(   -34567891234567.0)  <>    "-34567891234567.0" or
3301        str(   -10000000000000.0)  <>    "-10000000000000.0" or
3302        str(    -9999999999999.0)  <>     "-9999999999999.0" or
3303        str(    -4567891234567.0)  <>     "-4567891234567.0" or
3304        str(    -1000000000000.0)  <>     "-1000000000000.0" or
3305        str(     -999999999999.0)  <>      "-999999999999.0" or
3306        str(     -567891234567.0)  <>      "-567891234567.0" or
3307        str(     -100000000000.0)  <>      "-100000000000.0" or
3308        str(      -99999999999.0)  <>       "-99999999999.0" or
3309        str(      -67891234567.0)  <>       "-67891234567.0" or
3310        str(      -10000000000.0)  <>       "-10000000000.0" or
3311        str(       -9999999999.0)  <>        "-9999999999.0" or
3312        str(       -7891234567.0)  <>        "-7891234567.0" or
3313        str(       -1000000000.0)  <>        "-1000000000.0" or
3314        str(        -999999999.0)  <>         "-999999999.0" or
3315        str(        -891234567.0)  <>         "-891234567.0" or
3316        str(        -100000000.0)  <>         "-100000000.0" or
3317        str(         -99999999.0)  <>          "-99999999.0" or
3318        str(         -91234567.0)  <>          "-91234567.0" or
3319        str(         -10000000.0)  <>          "-10000000.0" or
3320        str(          -9999999.0)  <>           "-9999999.0" or
3321        str(          -1234567.0)  <>           "-1234567.0" or
3322        str(          -1000000.0)  <>           "-1000000.0" or
3323        str(           -999999.0)  <>            "-999999.0" or
3324        str(           -234567.0)  <>            "-234567.0" or
3325        str(           -100000.0)  <>            "-100000.0" or
3326        str(            -99999.0)  <>             "-99999.0" or
3327        str(            -34567.0)  <>             "-34567.0" or
3328        str(            -10000.0)  <>             "-10000.0" or
3329        str(             -9999.0)  <>              "-9999.0" or
3330        str(             -4567.0)  <>              "-4567.0" or
3331        str(             -1000.0)  <>              "-1000.0" or
3332        str(              -999.0)  <>               "-999.0" or
3333        str(              -567.0)  <>               "-567.0" or
3334        str(              -100.0)  <>               "-100.0" or
3335        str(               -99.0)  <>                "-99.0" or
3336        str(               -67.0)  <>                "-67.0" or
3337        str(               -10.0)  <>                "-10.0" or
3338        str(                -9.0)  <>                 "-9.0" or
3339        str(                -7.0)  <>                 "-7.0" or
3340        str(                -1.0)  <>                 "-1.0" or
3341        str(                 0.0)  <>                  "0.0" or
3342        str(                 1.0)  <>                  "1.0" or
3343        str(                 7.0)  <>                  "7.0" or
3344        str(                 9.0)  <>                  "9.0" or
3345        str(                10.0)  <>                 "10.0" or
3346        str(                67.0)  <>                 "67.0" or
3347        str(                99.0)  <>                 "99.0" or
3348        str(               100.0)  <>                "100.0" or
3349        str(               567.0)  <>                "567.0" or
3350        str(               999.0)  <>                "999.0" or
3351        str(              1000.0)  <>               "1000.0" or
3352        str(              4567.0)  <>               "4567.0" or
3353        str(              9999.0)  <>               "9999.0" or
3354        str(             10000.0)  <>              "10000.0" or
3355        str(             34567.0)  <>              "34567.0" or
3356        str(             99999.0)  <>              "99999.0" or
3357        str(            100000.0)  <>             "100000.0" or
3358        str(            234567.0)  <>             "234567.0" or
3359        str(            999999.0)  <>             "999999.0" or
3360        str(           1000000.0)  <>            "1000000.0" or
3361        str(           1234567.0)  <>            "1234567.0" or
3362        str(           9999999.0)  <>            "9999999.0" or
3363        str(          10000000.0)  <>           "10000000.0" or
3364        str(          91234567.0)  <>           "91234567.0" or
3365        str(          99999999.0)  <>           "99999999.0" or
3366        str(         100000000.0)  <>          "100000000.0" or
3367        str(         891234567.0)  <>          "891234567.0" or
3368        str(         999999999.0)  <>          "999999999.0" or
3369        str(        1000000000.0)  <>         "1000000000.0" or
3370        str(        7891234567.0)  <>         "7891234567.0" or
3371        str(        9999999999.0)  <>         "9999999999.0" or
3372        str(       10000000000.0)  <>        "10000000000.0" or
3373        str(       67891234567.0)  <>        "67891234567.0" or
3374        str(       99999999999.0)  <>        "99999999999.0" or
3375        str(      100000000000.0)  <>       "100000000000.0" or
3376        str(      567891234567.0)  <>       "567891234567.0" or
3377        str(      999999999999.0)  <>       "999999999999.0" or
3378        str(     1000000000000.0)  <>      "1000000000000.0" or
3379        str(     4567891234567.0)  <>      "4567891234567.0" or
3380        str(     9999999999999.0)  <>      "9999999999999.0" or
3381        str(    10000000000000.0)  <>     "10000000000000.0" or
3382        str(    34567891234567.0)  <>     "34567891234567.0" or
3383        str(    99999999999999.0)  <>     "99999999999999.0" or
3384        str(   100000000000000.0)  <>    "100000000000000.0" or
3385        str(   234567891234567.0)  <>    "234567891234567.0" or
3386        str(   999999999999999.0)  <>    "999999999999999.0" or
3387        str(  1000000000000000.0)  <>   "1000000000000000.0" or
3388        str(  1125899906842624.0)  <>   "1125899906842624.0" or
3389        str(  2251799813685248.0)  <>   "2251799813685248.0" or
3390        str(  4503599627370496.0)  <>   "4503599627370496.0" or
3391        str(  9007199254740992.0)  <>   "9007199254740992.0" or
3392        str( 10000000000000000.0)  <>  "10000000000000000.0" or
3393        str( -4503599627370495.5)  <>  "-4503599627370495.5" or
3394        str( -4000000000000000.5)  <>  "-4000000000000000.5" or
3395        str( -3000000000000000.5)  <>  "-3000000000000000.5" or
3396        str( -2251799813685248.5)  <>  "-2251799813685248.5" or
3397        str(  2251799813685248.5)  <>   "2251799813685248.5" or
3398        str(  3000000000000000.5)  <>   "3000000000000000.5" or
3399        str(  4000000000000000.5)  <>   "4000000000000000.5" or
3400        str(  4503599627370495.5)  <>   "4503599627370495.5" or
3401        str( 0.999999999999999)      <>  "0.999999999999999" or
3402        str( 0.1)                    <>  "0.1" or
3403        str( 0.0999999999999999)     <>  "0.0999999999999999" or
3404        str( 0.01)                   <>  "0.01" or
3405        str( 0.00999999999999999)    <>  "0.00999999999999999" or
3406        str( 0.001)                  <>  "0.001" or
3407        str( 0.000999999999999999)   <>  "0.000999999999999999" or
3408        str( 0.0001)                 <>  "0.0001" or
3409        str( 0.0000999999999999999)  <>  "0.0000999999999999999" or
3410        str( 0.00001)                <>  "0.00001" or
3411        str( 0.00000999999999999999) <>  "0.00000999999999999999" or
3412        str( 0.000001)               <>  "0.000001" or
3413        str( 9.99999999999999e-7)    <>  "0.000000999999999999999" or
3414        str( 1.00000000000000e-7)    <>  "0.0000001" or
3415        str( 9.99999999999999e-10)   <>  "0.000000000999999999999999" or
3416        str( 1.00000000000000e-10)   <>  "0.0000000001" or
3417        str( 9.99999999999999e-15)   <>  "0.00000000000000999999999999999" or
3418        str( 1.00000000000000e-15)   <>  "0.000000000000001" or
3419        str( 9.99999999999999e-20)   <>  "0.0000000000000000000999999999999999" or
3420        str( 1.00000000000000e-20)   <>  "0.00000000000000000001" or
3421        str( 9.99999999999999e-25)   <>  "0.000000000000000000000000999999999999999" or
3422        str( 1.00000000000000e-25)   <>  "0.0000000000000000000000001" or
3423        str( 9.99999999999999e-30)   <>  "0.00000000000000000000000000000999999999999999" or
3424        str( 1.00000000000000e-30)   <>  "0.000000000000000000000000000001" or
3425        str( 9.99999999999999e-35)   <>  "0.0000000000000000000000000000000000999999999999999" or
3426        str( 1.00000000000000e-35)   <>  "0.00000000000000000000000000000000001" or
3427        str(-0.999999999999999)      <> "-0.999999999999999" or
3428        str(-0.1)                    <> "-0.1" or
3429        str(-0.0999999999999999)     <> "-0.0999999999999999" or
3430        str(-0.01)                   <> "-0.01" or
3431        str(-0.00999999999999999)    <> "-0.00999999999999999" or
3432        str(-0.001)                  <> "-0.001" or
3433        str(-0.000999999999999999)   <> "-0.000999999999999999" or
3434        str(-0.0001)                 <> "-0.0001" or
3435        str(-0.0000999999999999999)  <> "-0.0000999999999999999" or
3436        str(-0.00001)                <> "-0.00001" or
3437        str(-0.00000999999999999999) <> "-0.00000999999999999999" or
3438        str(-0.000001)               <> "-0.000001" or
3439        str(-9.99999999999999e-7)    <> "-0.000000999999999999999" or
3440        str(-1.00000000000000e-7)    <> "-0.0000001" or
3441        str(-9.99999999999999e-10)   <> "-0.000000000999999999999999" or
3442        str(-1.00000000000000e-10)   <> "-0.0000000001" or
3443        str(-9.99999999999999e-15)   <> "-0.00000000000000999999999999999" or
3444        str(-1.00000000000000e-15)   <> "-0.000000000000001" or
3445        str(-9.99999999999999e-20)   <> "-0.0000000000000000000999999999999999" or
3446        str(-1.00000000000000e-20)   <> "-0.00000000000000000001" or
3447        str(-9.99999999999999e-25)   <> "-0.000000000000000000000000999999999999999" or
3448        str(-1.00000000000000e-25)   <> "-0.0000000000000000000000001" or
3449        str(-9.99999999999999e-30)   <> "-0.00000000000000000000000000000999999999999999" or
3450        str(-1.00000000000000e-30)   <> "-0.000000000000000000000000000001" or
3451        str(-9.99999999999999e-35)   <> "-0.0000000000000000000000000000000000999999999999999" or
3452        str(-1.00000000000000e-35)   <> "-0.00000000000000000000000000000000001" or
3453        str( 12345.0e15) <>  "12345000000000000000.0" or
3454        str( 12345.0e14) <>   "1234500000000000000.0" or
3455        str( 12345.0e13) <>    "123450000000000000.0" or
3456        str( 12345.0e12) <>     "12345000000000000.0" or
3457        str( 12345.0e10) <>       "123450000000000.0" or
3458        str( 12345.0e8)  <>         "1234500000000.0" or
3459        str( 12345.0e6)  <>           "12345000000.0" or
3460        str( 12345.0e4)  <>             "123450000.0" or
3461        str( 12345.0e2)  <>               "1234500.0" or
3462        str( 12345.0e1)  <>                "123450.0" or
3463        str( 12345.0e0)  <>                 "12345.0" or
3464        str( 12345.0e-1)  <>                 "1234.5" or
3465        str( 12345.0e-2)  <>                  "123.45" or
3466        str( 12345.0e-3)  <>                   "12.345" or
3467        str( 12345.0e-4)  <>                    "1.2345" or
3468        str( 12345.0e-5)  <>                    "0.12345" or
3469        str( 12345.0e-6)  <>                    "0.012345" or
3470        str( 12345.0e-7)  <>                    "0.0012345" or
3471        str( 12345.0e-8)  <>                    "0.00012345" or
3472        str( 12345.0e-10)  <>                   "0.0000012345" or
3473        str( 12345.0e-12)  <>                   "0.000000012345" or
3474        str( 12345.0e-14)  <>                   "0.00000000012345" or
3475        str( 12345.0e-16)  <>                   "0.0000000000012345" or
3476        str( 12345.0e-18)  <>                   "0.000000000000012345" or
3477        str( 12345.0e-20)  <>                   "0.00000000000000012345" or
3478        str( 12345.0e-25)  <>                   "0.0000000000000000000012345" or
3479        str( 12345.0e-30)  <>                   "0.000000000000000000000000012345" or
3480        str( 12345.0e-35)  <>                   "0.00000000000000000000000000000012345" or
3481        str( 12345.0e-40)  <>                   "0.0000000000000000000000000000000000012345" or
3482        str( 12345.0e-45)  <>                   "0.000000000000000000000000000000000000000012345" or
3483        str(-12345.0e15) <> "-12345000000000000000.0" or
3484        str(-12345.0e14) <>  "-1234500000000000000.0" or
3485        str(-12345.0e13) <>   "-123450000000000000.0" or
3486        str(-12345.0e12) <>    "-12345000000000000.0" or
3487        str(-12345.0e10) <>      "-123450000000000.0" or
3488        str(-12345.0e8)  <>        "-1234500000000.0" or
3489        str(-12345.0e6)  <>          "-12345000000.0" or
3490        str(-12345.0e4)  <>            "-123450000.0" or
3491        str(-12345.0e2)  <>              "-1234500.0" or
3492        str(-12345.0e1)  <>               "-123450.0" or
3493        str(-12345.0e0)  <>                "-12345.0" or
3494        str(-12345.0e-1)  <>                "-1234.5" or
3495        str(-12345.0e-2)  <>                 "-123.45" or
3496        str(-12345.0e-3)  <>                  "-12.345" or
3497        str(-12345.0e-4)  <>                   "-1.2345" or
3498        str(-12345.0e-5)  <>                   "-0.12345" or
3499        str(-12345.0e-6)  <>                   "-0.012345" or
3500        str(-12345.0e-7)  <>                   "-0.0012345" or
3501        str(-12345.0e-8)  <>                   "-0.00012345" or
3502        str(-12345.0e-10)  <>                  "-0.0000012345" or
3503        str(-12345.0e-12)  <>                  "-0.000000012345" or
3504        str(-12345.0e-14)  <>                  "-0.00000000012345" or
3505        str(-12345.0e-16)  <>                  "-0.0000000000012345" or
3506        str(-12345.0e-18)  <>                  "-0.000000000000012345" or
3507        str(-12345.0e-20)  <>                  "-0.00000000000000012345" or
3508        str(-12345.0e-25)  <>                  "-0.0000000000000000000012345" or
3509        str(-12345.0e-30)  <>                  "-0.000000000000000000000000012345" or
3510        str(-12345.0e-35)  <>                  "-0.00000000000000000000000000000012345" or
3511        str(-12345.0e-40)  <>                  "-0.0000000000000000000000000000000000012345" or
3512        str(-12345.0e-45)  <>                  "-0.000000000000000000000000000000000000000012345" or
3513        str(                 0.00000123456789012345) <>                  "0.00000123456789012345" or
3514        str(                 0.0000123456789012345)  <>                  "0.0000123456789012345" or
3515        str(                 0.000123456789012345)   <>                  "0.000123456789012345" or
3516        str(                 0.00123456789012345)    <>                  "0.00123456789012345" or
3517        str(                 0.0123456789012345)     <>                  "0.0123456789012345" or
3518        str(                 0.123456789012345)      <>                  "0.123456789012345" or
3519        str(                 1.23456789012345)       <>                  "1.23456789012345" or
3520        str(                12.3456789012345)        <>                 "12.3456789012345" or
3521        str(               123.456789012345)         <>                "123.456789012345" or
3522        str(              1234.56789012345)          <>               "1234.56789012345" or
3523        str(             12345.6789012345)           <>              "12345.6789012345" or
3524        str(            123456.789012345)            <>             "123456.789012345" or
3525        str(           1234567.89012345)             <>            "1234567.89012345" or
3526        str(          12345678.9012345)              <>           "12345678.9012345" or
3527        str(         123456789.012345)               <>          "123456789.012345" or
3528        str(        1234567890.12345)                <>         "1234567890.12345" or
3529        str(       12345678901.2345)                 <>        "12345678901.2345" or
3530        str(      123456789012.345)                  <>       "123456789012.345" or
3531        str(     1234567890123.45)                   <>      "1234567890123.45" or
3532        str(    12345678901234.5)                    <>     "12345678901234.5" or
3533        str(   123456789012345.0)                    <>    "123456789012345.0" or
3534        str(  1234567890123450.0)                    <>   "1234567890123450.0" or
3535        str( 12345678901234500.0)                    <>  "12345678901234500.0" or
3536        str(                -0.00000123456789012345) <>                 "-0.00000123456789012345" or
3537        str(                -0.0000123456789012345)  <>                 "-0.0000123456789012345" or
3538        str(                -0.000123456789012345)   <>                 "-0.000123456789012345" or
3539        str(                -0.00123456789012345)    <>                 "-0.00123456789012345" or
3540        str(                -0.0123456789012345)     <>                 "-0.0123456789012345" or
3541        str(                -0.123456789012345)      <>                 "-0.123456789012345" or
3542        str(                -1.23456789012345)       <>                 "-1.23456789012345" or
3543        str(               -12.3456789012345)        <>                "-12.3456789012345" or
3544        str(              -123.456789012345)         <>               "-123.456789012345" or
3545        str(             -1234.56789012345)          <>              "-1234.56789012345" or
3546        str(            -12345.6789012345)           <>             "-12345.6789012345" or
3547        str(           -123456.789012345)            <>            "-123456.789012345" or
3548        str(          -1234567.89012345)             <>           "-1234567.89012345" or
3549        str(         -12345678.9012345)              <>          "-12345678.9012345" or
3550        str(        -123456789.012345)               <>         "-123456789.012345" or
3551        str(       -1234567890.12345)                <>        "-1234567890.12345" or
3552        str(      -12345678901.2345)                 <>       "-12345678901.2345" or
3553        str(     -123456789012.345)                  <>      "-123456789012.345" or
3554        str(    -1234567890123.45)                   <>     "-1234567890123.45" or
3555        str(   -12345678901234.5)                    <>    "-12345678901234.5" or
3556        str(  -123456789012345.0)                    <>   "-123456789012345.0" or
3557        str( -1234567890123450.0)                    <>  "-1234567890123450.0" or
3558        str(-12345678901234500.0)                    <> "-12345678901234500.0" or
3559        str(1.0e-308) <> "0." & "0" mult 307 & "1" or
3560        str(1.0e-307) <> "0." & "0" mult 306 & "1" or
3561        str(1.0e-300) <> "0." & "0" mult 299 & "1" or
3562        str(1.0e-275) <> "0." & "0" mult 274 & "1" or
3563        str(1.0e-250) <> "0." & "0" mult 249 & "1" or
3564        str(1.0e-225) <> "0." & "0" mult 224 & "1" or
3565        str(1.0e-200) <> "0." & "0" mult 199 & "1" or
3566        str(1.0e-175) <> "0." & "0" mult 174 & "1" or
3567        str(1.0e-150) <> "0." & "0" mult 149 & "1" or
3568        str(1.0e-125) <> "0." & "0" mult 124 & "1" or
3569        str(1.0e-101) <> "0." & "0" mult 100 & "1" or
3570        str(1.0e-100) <> "0." & "0" mult  99 & "1" or
3571        str(1.0e-99)  <> "0." & "0" mult  98 & "1" or
3572        str(1.0e-75)  <> "0." & "0" mult  74 & "1" or
3573        str(1.0e-50)  <> "0." & "0" mult  49 & "1" or
3574        str(1.0e-25)  <> "0." & "0" mult  24 & "1" or
3575        str(1.0e-20)  <> "0.00000000000000000001" or
3576        str(1.0e-15)  <> "0.000000000000001" or
3577        str(1.0e-11)  <> "0.00000000001" or
3578        str(1.0e-10)  <> "0.0000000001"  or
3579        str(1.0e-9)   <> "0.000000001"   or
3580        str(1.0e-2)   <> "0.01"   or
3581        str(1.0e-1)   <> "0.1"    or
3582        str(1.0e0)    <> "1.0"    or
3583        str(1.0e1)    <> "10.0"   or
3584        str(1.0e2)    <> "100.0"  or
3585        str(1.0e9)    <> "1000000000.0"  or
3586        str(1.0e10)   <> "10000000000.0"  or
3587        str(1.0e11)   <> "100000000000.0"  or
3588        str(1.0e15)   <> "1000000000000000.0"  or
3589        str(1.0e20)   <> "100000000000000000000.0" or
3590        str(                0.0)  <>       "0.0" or
3591        str(               -0.0)  <>       "0.0" or
3592        str(                1.0)  <>       "1.0" or
3593        str(               -1.0)  <>      "-1.0" or
3594        str(           Infinity)  <>  "Infinity" or
3595        str(          -Infinity)  <> "-Infinity" or
3596        str(                NaN)  <>       "NaN" or
3597        str(floatExpr(  123.456)) <>   "123.456" or
3598        str(floatExpr( -123.456)) <>  "-123.456" or
3599        str(floatExpr(      0.0)) <>       "0.0" or
3600        str(floatExpr(     -0.0)) <>       "0.0" or
3601        str(floatExpr(      1.0)) <>       "1.0" or
3602        str(floatExpr(     -1.0)) <>      "-1.0" or
3603        str(floatExpr( Infinity)) <>  "Infinity" or
3604        str(floatExpr(-Infinity)) <> "-Infinity" or
3605        str(floatExpr(      NaN)) <>       "NaN" then
3606      writeln(" ***** Str function for float does not work correct.");
3607      okay := FALSE;
3608    end if;
3609
3610    if  (          0.012345   digits 4)      <> "0.0123"     or
3611        (          1.2468     digits 2)      <> "1.25"       or
3612        (          3.1415     digits 0)      <> "3"          or
3613      # (          0.125      digits 2)      <> "0.12"       or
3614        (          0.375      digits 2)      <> "0.38"       or
3615        (          Infinity   digits 5)      <> "Infinity"   or
3616        (          -Infinity  digits 6)      <> "-Infinity"  or
3617        (          NaN        digits 7)      <> "NaN"        or
3618        (          -0.004     digits 2)      <> "0.00"       or
3619        (          -0.0       digits 0)      <> "0"          or
3620        (floatExpr(0.012345 ) digits 4)      <> "0.0123"     or
3621        (floatExpr(1.2468   ) digits 2)      <> "1.25"       or
3622        (floatExpr(3.1415   ) digits 0)      <> "3"          or
3623      # (floatExpr(0.125    ) digits 2)      <> "0.12"       or
3624        (floatExpr(0.375    ) digits 2)      <> "0.38"       or
3625        (floatExpr(Infinity ) digits 5)      <> "Infinity"   or
3626        (floatExpr(-Infinity) digits 6)      <> "-Infinity"  or
3627        (floatExpr(NaN      ) digits 7)      <> "NaN"        or
3628        (floatExpr(-0.004   ) digits 2)      <> "0.00"       or
3629        (floatExpr(-0.0     ) digits 0)      <> "0"          then
3630      writeln(" ***** Digits operator for float does not work correct.");
3631      okay := FALSE;
3632    end if;
3633
3634    if (          1.0  digits  0)      <> "1" or
3635       (          1.0  digits  1)      <> "1.0" or
3636       (          1.0  digits  2)      <> "1.00" or
3637       (          1.0  digits  3)      <> "1.000" or
3638       (          1.0  digits  4)      <> "1.0000" or
3639       (          1.0  digits  5)      <> "1.00000" or
3640       (          1.0  digits  6)      <> "1.000000" or
3641       (          1.0  digits  7)      <> "1.0000000" or
3642       (          1.0  digits  8)      <> "1.00000000" or
3643       (          1.0  digits  9)      <> "1.000000000" or
3644       (          1.0  digits 10)      <> "1.0000000000" or
3645       (          1.0  digits 11)      <> "1.00000000000" or
3646       (          1.0  digits 12)      <> "1.000000000000" or
3647       (          1.0  digits 13)      <> "1.0000000000000" or
3648       (          1.0  digits 14)      <> "1.00000000000000" or
3649       (          1.0  digits 15)      <> "1.000000000000000" or
3650       (          1.0  digits 16)      <> "1.0000000000000000" or
3651       (          1.0  digits 17)      <> "1.00000000000000000" or
3652       (          1.0  digits 18)      <> "1.000000000000000000" or
3653       (          1.0  digits 19)      <> "1.0000000000000000000" or
3654       (          1.0  digits 20)      <> "1.00000000000000000000" or
3655       (          1.0  digits 21)      <> "1.000000000000000000000" or
3656       (          1.0  digits 22)      <> "1.0000000000000000000000" or
3657       (          1.0  digits 23)      <> "1.00000000000000000000000" or
3658       (          1.0  digits 24)      <> "1.000000000000000000000000" or
3659       (          1.0  digits 25)      <> "1.0000000000000000000000000" or
3660       (          1.0  digits 26)      <> "1.00000000000000000000000000" or
3661       (          1.0  digits 27)      <> "1.000000000000000000000000000" or
3662       (          1.0  digits 28)      <> "1.0000000000000000000000000000" or
3663       (          1.0  digits 29)      <> "1.00000000000000000000000000000" or
3664       (          1.0  digits 30)      <> "1.000000000000000000000000000000" or
3665       (          1.0  digits 100)     <> "1." & "0" mult 100 or
3666       (          1.0  digits 1000)    <> "1." & "0" mult 1000 or
3667       (          1.0  digits 10000)   <> "1." & "0" mult 10000 or
3668       (          1.0  digits 100000)  <> "1." & "0" mult 100000 or
3669       (          1.0  digits 1000000) <> "1." & "0" mult 1000000 or
3670       (floatExpr(1.0) digits  0)      <> "1" or
3671       (floatExpr(1.0) digits  1)      <> "1.0" or
3672       (floatExpr(1.0) digits  2)      <> "1.00" or
3673       (floatExpr(1.0) digits  3)      <> "1.000" or
3674       (floatExpr(1.0) digits  4)      <> "1.0000" or
3675       (floatExpr(1.0) digits  5)      <> "1.00000" or
3676       (floatExpr(1.0) digits  6)      <> "1.000000" or
3677       (floatExpr(1.0) digits  7)      <> "1.0000000" or
3678       (floatExpr(1.0) digits  8)      <> "1.00000000" or
3679       (floatExpr(1.0) digits  9)      <> "1.000000000" or
3680       (floatExpr(1.0) digits 10)      <> "1.0000000000" or
3681       (floatExpr(1.0) digits 11)      <> "1.00000000000" or
3682       (floatExpr(1.0) digits 12)      <> "1.000000000000" or
3683       (floatExpr(1.0) digits 13)      <> "1.0000000000000" or
3684       (floatExpr(1.0) digits 14)      <> "1.00000000000000" or
3685       (floatExpr(1.0) digits 15)      <> "1.000000000000000" or
3686       (floatExpr(1.0) digits 16)      <> "1.0000000000000000" or
3687       (floatExpr(1.0) digits 17)      <> "1.00000000000000000" or
3688       (floatExpr(1.0) digits 18)      <> "1.000000000000000000" or
3689       (floatExpr(1.0) digits 19)      <> "1.0000000000000000000" or
3690       (floatExpr(1.0) digits 20)      <> "1.00000000000000000000" or
3691       (floatExpr(1.0) digits 21)      <> "1.000000000000000000000" or
3692       (floatExpr(1.0) digits 22)      <> "1.0000000000000000000000" or
3693       (floatExpr(1.0) digits 23)      <> "1.00000000000000000000000" or
3694       (floatExpr(1.0) digits 24)      <> "1.000000000000000000000000" or
3695       (floatExpr(1.0) digits 25)      <> "1.0000000000000000000000000" or
3696       (floatExpr(1.0) digits 26)      <> "1.00000000000000000000000000" or
3697       (floatExpr(1.0) digits 27)      <> "1.000000000000000000000000000" or
3698       (floatExpr(1.0) digits 28)      <> "1.0000000000000000000000000000" or
3699       (floatExpr(1.0) digits 29)      <> "1.00000000000000000000000000000" or
3700       (floatExpr(1.0) digits 30)      <> "1.000000000000000000000000000000" or
3701       (floatExpr(1.0) digits 100)     <> "1." & "0" mult 100 or
3702       (floatExpr(1.0) digits 1000)    <> "1." & "0" mult 1000 or
3703       (floatExpr(1.0) digits 10000)   <> "1." & "0" mult 10000 or
3704       (floatExpr(1.0) digits 100000)  <> "1." & "0" mult 100000 or
3705       (floatExpr(1.0) digits 1000000) <> "1." & "0" mult 1000000 then
3706      writeln(" ***** Digits operator for float with many digits does not work correct.");
3707      okay := FALSE;
3708    end if;
3709
3710    if  not raisesRangeError(          3.1415     digits         -1 ) or
3711        not raisesRangeError(floatExpr(3.1415   ) digits         -1 ) or
3712        not raisesRangeError(          3.1415     digits intExpr(-1)) or
3713        not raisesRangeError(floatExpr(3.1415   ) digits intExpr(-1)) then
3714      writeln(" ***** Digits operator for float with negative precision does not raise RANGE_ERROR.");
3715      okay := FALSE;
3716    end if;
3717
3718    if  (          0.012345   sci 4)         <> "1.2345e-2"  or
3719        (          1.2468     sci 2)         <> "1.25e+0"    or
3720        (          3.1415     sci 0)         <> "3e+0"       or
3721      # (          0.125      sci 1)         <> "1.2e-1"     or
3722        (          0.375      sci 1)         <> "3.8e-1"     or
3723        (          Infinity   sci 5)         <> "Infinity"   or
3724        (          -Infinity  sci 6)         <> "-Infinity"  or
3725        (          NaN        sci 7)         <> "NaN"        or
3726        (          -0.004     sci 2)         <> "-4.00e-3"   or
3727        (          -0.0       sci 2)         <> "0.00e+0"    or
3728        (          -0.0       sci 0)         <> "0e+0"       or
3729        (floatExpr(0.012345 ) sci 4)         <> "1.2345e-2"  or
3730        (floatExpr(1.2468   ) sci 2)         <> "1.25e+0"    or
3731        (floatExpr(3.1415   ) sci 0)         <> "3e+0"       or
3732      # (floatExpr(0.125    ) sci 1)         <> "1.2e-1"     or
3733        (floatExpr(0.375    ) sci 1)         <> "3.8e-1"     or
3734        (floatExpr(Infinity ) sci 5)         <> "Infinity"   or
3735        (floatExpr(-Infinity) sci 6)         <> "-Infinity"  or
3736        (floatExpr(NaN      ) sci 7)         <> "NaN"        or
3737        (floatExpr(-0.004   ) sci 2)         <> "-4.00e-3"   or
3738        (floatExpr(-0.0     ) sci 2)         <> "0.00e+0"    or
3739        (floatExpr(-0.0     ) sci 0)         <> "0e+0"       or
3740        (          0.012345   sci 4 exp 2)   <> "1.2345e-02" or
3741        (          1.2468e15  sci 2 exp 1)   <> "1.25e+15"   or
3742        (          3.1415     sci 0 exp 3)   <> "3e+000"     or
3743      # (          0.125      sci 1 exp 2)   <> "1.2e-01"    or
3744        (          0.375      sci 1 exp 2)   <> "3.8e-01"    or
3745        (          Infinity   sci 5 exp 2)   <> "Infinity"   or
3746        (          -Infinity  sci 6 exp 2)   <> "-Infinity"  or
3747        (          NaN        sci 7 exp 2)   <> "NaN"        or
3748        (          -0.004     sci 2 exp 2)   <> "-4.00e-03"  or
3749        (          -0.0       sci 2 exp 2)   <> "0.00e+00"   or
3750        (          -0.0       sci 0 exp 2)   <> "0e+00"      or
3751        (floatExpr(0.012345 ) sci 4 exp 2)   <> "1.2345e-02" or
3752        (floatExpr(1.2468e15) sci 2 exp 1)   <> "1.25e+15"   or
3753        (floatExpr(3.1415   ) sci 0 exp 3)   <> "3e+000"     or
3754      # (floatExpr(0.125    ) sci 1 exp 2)   <> "1.2e-01"    or
3755        (floatExpr(0.375    ) sci 1 exp 2)   <> "3.8e-01"    or
3756        (floatExpr(Infinity ) sci 5 exp 2)   <> "Infinity"   or
3757        (floatExpr(-Infinity) sci 6 exp 2)   <> "-Infinity"  or
3758        (floatExpr(NaN      ) sci 7 exp 2)   <> "NaN"        or
3759        (floatExpr(-0.004   ) sci 2 exp 2)   <> "-4.00e-03"  or
3760        (floatExpr(-0.0     ) sci 2 exp 2)   <> "0.00e+00"   or
3761        (floatExpr(-0.0     ) sci 0 exp 2)   <> "0e+00"      then
3762      writeln(" ***** Sci operator for float does not work correct.");
3763      okay := FALSE;
3764    end if;
3765
3766    if (          1.0  sci  0)         <> "1e+0" or
3767       (          1.0  sci  1)         <> "1.0e+0" or
3768       (          1.0  sci  2)         <> "1.00e+0" or
3769       (          1.0  sci  3)         <> "1.000e+0" or
3770       (          1.0  sci  4)         <> "1.0000e+0" or
3771       (          1.0  sci  5)         <> "1.00000e+0" or
3772       (          1.0  sci  6)         <> "1.000000e+0" or
3773       (          1.0  sci  7)         <> "1.0000000e+0" or
3774       (          1.0  sci  8)         <> "1.00000000e+0" or
3775       (          1.0  sci  9)         <> "1.000000000e+0" or
3776       (          1.0  sci 10)         <> "1.0000000000e+0" or
3777       (          1.0  sci 11)         <> "1.00000000000e+0" or
3778       (          1.0  sci 12)         <> "1.000000000000e+0" or
3779       (          1.0  sci 13)         <> "1.0000000000000e+0" or
3780       (          1.0  sci 14)         <> "1.00000000000000e+0" or
3781       (          1.0  sci 15)         <> "1.000000000000000e+0" or
3782       (          1.0  sci 16)         <> "1.0000000000000000e+0" or
3783       (          1.0  sci 17)         <> "1.00000000000000000e+0" or
3784       (          1.0  sci 18)         <> "1.000000000000000000e+0" or
3785       (          1.0  sci 19)         <> "1.0000000000000000000e+0" or
3786       (          1.0  sci 20)         <> "1.00000000000000000000e+0" or
3787       (          1.0  sci 21)         <> "1.000000000000000000000e+0" or
3788       (          1.0  sci 22)         <> "1.0000000000000000000000e+0" or
3789       (          1.0  sci 23)         <> "1.00000000000000000000000e+0" or
3790       (          1.0  sci 24)         <> "1.000000000000000000000000e+0" or
3791       (          1.0  sci 25)         <> "1.0000000000000000000000000e+0" or
3792       (          1.0  sci 26)         <> "1.00000000000000000000000000e+0" or
3793       (          1.0  sci 27)         <> "1.000000000000000000000000000e+0" or
3794       (          1.0  sci 28)         <> "1.0000000000000000000000000000e+0" or
3795       (          1.0  sci 29)         <> "1.00000000000000000000000000000e+0" or
3796       (          1.0  sci 30)         <> "1.000000000000000000000000000000e+0" or
3797       (          1.0  sci 100)        <> "1." & "0" mult 100 & "e+0" or
3798       (          1.0  sci 1000)       <> "1." & "0" mult 1000 & "e+0" or
3799       (          1.0  sci 10000)      <> "1." & "0" mult 10000 & "e+0" or
3800       (          1.0  sci 100000)     <> "1." & "0" mult 100000 & "e+0" or
3801       (          1.0  sci 1000000)    <> "1." & "0" mult 1000000 & "e+0" or
3802       (floatExpr(1.0) sci  0)         <> "1e+0" or
3803       (floatExpr(1.0) sci  1)         <> "1.0e+0" or
3804       (floatExpr(1.0) sci  2)         <> "1.00e+0" or
3805       (floatExpr(1.0) sci  3)         <> "1.000e+0" or
3806       (floatExpr(1.0) sci  4)         <> "1.0000e+0" or
3807       (floatExpr(1.0) sci  5)         <> "1.00000e+0" or
3808       (floatExpr(1.0) sci  6)         <> "1.000000e+0" or
3809       (floatExpr(1.0) sci  7)         <> "1.0000000e+0" or
3810       (floatExpr(1.0) sci  8)         <> "1.00000000e+0" or
3811       (floatExpr(1.0) sci  9)         <> "1.000000000e+0" or
3812       (floatExpr(1.0) sci 10)         <> "1.0000000000e+0" or
3813       (floatExpr(1.0) sci 11)         <> "1.00000000000e+0" or
3814       (floatExpr(1.0) sci 12)         <> "1.000000000000e+0" or
3815       (floatExpr(1.0) sci 13)         <> "1.0000000000000e+0" or
3816       (floatExpr(1.0) sci 14)         <> "1.00000000000000e+0" or
3817       (floatExpr(1.0) sci 15)         <> "1.000000000000000e+0" or
3818       (floatExpr(1.0) sci 16)         <> "1.0000000000000000e+0" or
3819       (floatExpr(1.0) sci 17)         <> "1.00000000000000000e+0" or
3820       (floatExpr(1.0) sci 18)         <> "1.000000000000000000e+0" or
3821       (floatExpr(1.0) sci 19)         <> "1.0000000000000000000e+0" or
3822       (floatExpr(1.0) sci 20)         <> "1.00000000000000000000e+0" or
3823       (floatExpr(1.0) sci 21)         <> "1.000000000000000000000e+0" or
3824       (floatExpr(1.0) sci 22)         <> "1.0000000000000000000000e+0" or
3825       (floatExpr(1.0) sci 23)         <> "1.00000000000000000000000e+0" or
3826       (floatExpr(1.0) sci 24)         <> "1.000000000000000000000000e+0" or
3827       (floatExpr(1.0) sci 25)         <> "1.0000000000000000000000000e+0" or
3828       (floatExpr(1.0) sci 26)         <> "1.00000000000000000000000000e+0" or
3829       (floatExpr(1.0) sci 27)         <> "1.000000000000000000000000000e+0" or
3830       (floatExpr(1.0) sci 28)         <> "1.0000000000000000000000000000e+0" or
3831       (floatExpr(1.0) sci 29)         <> "1.00000000000000000000000000000e+0" or
3832       (floatExpr(1.0) sci 30)         <> "1.000000000000000000000000000000e+0" or
3833       (floatExpr(1.0) sci 100)        <> "1." & "0" mult 100 & "e+0" or
3834       (floatExpr(1.0) sci 1000)       <> "1." & "0" mult 1000 & "e+0" or
3835       (floatExpr(1.0) sci 10000)      <> "1." & "0" mult 10000 & "e+0" or
3836       (floatExpr(1.0) sci 100000)     <> "1." & "0" mult 100000 & "e+0" or
3837       (floatExpr(1.0) sci 1000000)    <> "1." & "0" mult 1000000 & "e+0" then
3838      writeln(" ***** Sci operator for float with many digits does not work correct.");
3839      okay := FALSE;
3840    end if;
3841
3842    if (          1.0e-308  sci 1) <> "1.0e-308" or
3843       (          1.0e-307  sci 1) <> "1.0e-307" or
3844       (          1.0e-300  sci 1) <> "1.0e-300" or
3845       (          1.0e-275  sci 1) <> "1.0e-275" or
3846       (          1.0e-250  sci 1) <> "1.0e-250" or
3847       (          1.0e-225  sci 1) <> "1.0e-225" or
3848       (          1.0e-200  sci 1) <> "1.0e-200" or
3849       (          1.0e-175  sci 1) <> "1.0e-175" or
3850       (          1.0e-150  sci 1) <> "1.0e-150" or
3851       (          1.0e-125  sci 1) <> "1.0e-125" or
3852       (          1.0e-101  sci 1) <> "1.0e-101" or
3853       (          1.0e-100  sci 1) <> "1.0e-100" or
3854       (          1.0e-99   sci 1) <> "1.0e-99"  or
3855       (          1.0e-75   sci 1) <> "1.0e-75"  or
3856       (          1.0e-50   sci 1) <> "1.0e-50"  or
3857       (          1.0e-25   sci 1) <> "1.0e-25"  or
3858       (          1.0e-20   sci 1) <> "1.0e-20"  or
3859       (          1.0e-15   sci 1) <> "1.0e-15"  or
3860       (          1.0e-11   sci 1) <> "1.0e-11"  or
3861       (          1.0e-10   sci 1) <> "1.0e-10"  or
3862       (          1.0e-9    sci 1) <> "1.0e-9"   or
3863       (          1.0e-2    sci 1) <> "1.0e-2"   or
3864       (          1.0e-1    sci 1) <> "1.0e-1"   or
3865       (          1.0e0     sci 1) <> "1.0e+0"   or
3866       (          1.0e1     sci 1) <> "1.0e+1"   or
3867       (          1.0e2     sci 1) <> "1.0e+2"   or
3868       (          1.0e9     sci 1) <> "1.0e+9"   or
3869       (          1.0e10    sci 1) <> "1.0e+10"  or
3870       (          1.0e11    sci 1) <> "1.0e+11"  or
3871       (          1.0e15    sci 1) <> "1.0e+15"  or
3872       (          1.0e20    sci 1) <> "1.0e+20"  or
3873       (          1.0e25    sci 1) <> "1.0e+25"  or
3874       (          1.0e50    sci 1) <> "1.0e+50"  or
3875       (          1.0e75    sci 1) <> "1.0e+75"  or
3876       (          1.0e99    sci 1) <> "1.0e+99"  or
3877       (          1.0e100   sci 1) <> "1.0e+100" or
3878       (          1.0e101   sci 1) <> "1.0e+101" or
3879       (          1.0e125   sci 1) <> "1.0e+125" or
3880       (          1.0e150   sci 1) <> "1.0e+150" or
3881       (          1.0e175   sci 1) <> "1.0e+175" or
3882       (          1.0e200   sci 1) <> "1.0e+200" or
3883       (          1.0e225   sci 1) <> "1.0e+225" or
3884       (          1.0e250   sci 1) <> "1.0e+250" or
3885       (          1.0e275   sci 1) <> "1.0e+275" or
3886       (          1.0e300   sci 1) <> "1.0e+300" or
3887       (          1.0e307   sci 1) <> "1.0e+307" or
3888       (          1.0e308   sci 1) <> "1.0e+308" or
3889       (floatExpr(1.0e-308) sci 1) <> "1.0e-308" or
3890       (floatExpr(1.0e-307) sci 1) <> "1.0e-307" or
3891       (floatExpr(1.0e-300) sci 1) <> "1.0e-300" or
3892       (floatExpr(1.0e-275) sci 1) <> "1.0e-275" or
3893       (floatExpr(1.0e-250) sci 1) <> "1.0e-250" or
3894       (floatExpr(1.0e-225) sci 1) <> "1.0e-225" or
3895       (floatExpr(1.0e-200) sci 1) <> "1.0e-200" or
3896       (floatExpr(1.0e-175) sci 1) <> "1.0e-175" or
3897       (floatExpr(1.0e-150) sci 1) <> "1.0e-150" or
3898       (floatExpr(1.0e-125) sci 1) <> "1.0e-125" or
3899       (floatExpr(1.0e-101) sci 1) <> "1.0e-101" or
3900       (floatExpr(1.0e-100) sci 1) <> "1.0e-100" or
3901       (floatExpr(1.0e-99 ) sci 1) <> "1.0e-99"  or
3902       (floatExpr(1.0e-75 ) sci 1) <> "1.0e-75"  or
3903       (floatExpr(1.0e-50 ) sci 1) <> "1.0e-50"  or
3904       (floatExpr(1.0e-25 ) sci 1) <> "1.0e-25"  or
3905       (floatExpr(1.0e-20 ) sci 1) <> "1.0e-20"  or
3906       (floatExpr(1.0e-15 ) sci 1) <> "1.0e-15"  or
3907       (floatExpr(1.0e-11 ) sci 1) <> "1.0e-11"  or
3908       (floatExpr(1.0e-10 ) sci 1) <> "1.0e-10"  or
3909       (floatExpr(1.0e-9  ) sci 1) <> "1.0e-9"   or
3910       (floatExpr(1.0e-2  ) sci 1) <> "1.0e-2"   or
3911       (floatExpr(1.0e-1  ) sci 1) <> "1.0e-1"   or
3912       (floatExpr(1.0e0   ) sci 1) <> "1.0e+0"   or
3913       (floatExpr(1.0e1   ) sci 1) <> "1.0e+1"   or
3914       (floatExpr(1.0e2   ) sci 1) <> "1.0e+2"   or
3915       (floatExpr(1.0e9   ) sci 1) <> "1.0e+9"   or
3916       (floatExpr(1.0e10  ) sci 1) <> "1.0e+10"  or
3917       (floatExpr(1.0e11  ) sci 1) <> "1.0e+11"  or
3918       (floatExpr(1.0e15  ) sci 1) <> "1.0e+15"  or
3919       (floatExpr(1.0e20  ) sci 1) <> "1.0e+20"  or
3920       (floatExpr(1.0e25  ) sci 1) <> "1.0e+25"  or
3921       (floatExpr(1.0e50  ) sci 1) <> "1.0e+50"  or
3922       (floatExpr(1.0e75  ) sci 1) <> "1.0e+75"  or
3923       (floatExpr(1.0e99  ) sci 1) <> "1.0e+99"  or
3924       (floatExpr(1.0e100 ) sci 1) <> "1.0e+100" or
3925       (floatExpr(1.0e101 ) sci 1) <> "1.0e+101" or
3926       (floatExpr(1.0e125 ) sci 1) <> "1.0e+125" or
3927       (floatExpr(1.0e150 ) sci 1) <> "1.0e+150" or
3928       (floatExpr(1.0e175 ) sci 1) <> "1.0e+175" or
3929       (floatExpr(1.0e200 ) sci 1) <> "1.0e+200" or
3930       (floatExpr(1.0e225 ) sci 1) <> "1.0e+225" or
3931       (floatExpr(1.0e250 ) sci 1) <> "1.0e+250" or
3932       (floatExpr(1.0e275 ) sci 1) <> "1.0e+275" or
3933       (floatExpr(1.0e300 ) sci 1) <> "1.0e+300" or
3934       (floatExpr(1.0e307 ) sci 1) <> "1.0e+307" or
3935       (floatExpr(1.0e308 ) sci 1) <> "1.0e+308" then
3936      writeln(" ***** Sci operator for float with higher exponent does not work correct.");
3937      okay := FALSE;
3938    end if;
3939
3940    if  not raisesRangeError(          3.1415     sci            -1 ) or
3941        not raisesRangeError(floatExpr(3.1415   ) sci            -1 ) or
3942        not raisesRangeError(          3.1415     sci    intExpr(-1)) or
3943        not raisesRangeError(floatExpr(3.1415   ) sci    intExpr(-1)) then
3944      writeln(" ***** Sci operator for float with negative precision does not raise RANGE_ERROR.");
3945      okay := FALSE;
3946    end if;
3947
3948    if okay then
3949      writeln("Decimal conversion of float works correct.");
3950    else
3951      writeln(" ***** Decimal conversion of float does not work correct.");
3952    end if;
3953  end func;
3954
3955
3956const proc: check_conversion is func
3957  local
3958    var boolean: okay is TRUE;
3959  begin
3960    if  float conv        (integer.first) <> -9223372036854775808.0 or
3961        float conv (-9223372036854774784) <> -9223372036854774784.0 or
3962        float conv (-1000000000000000000) <> -1000000000000000000.0 or
3963        float conv  (-100000000000000000) <>  -100000000000000000.0 or
3964        float conv   (-10000000000000000) <>   -10000000000000000.0 or
3965        float conv    (-9007199254740992) <>    -9007199254740992.0 or
3966        float conv    (-4503599627370496) <>    -4503599627370496.0 or
3967        float conv    (-2251799813685248) <>    -2251799813685248.0 or
3968        float conv    (-1125899906842624) <>    -1125899906842624.0 or
3969        float conv    (-1000000000000000) <>    -1000000000000000.0 or
3970        float conv     (-999999999999999) <>     -999999999999999.0 or
3971        float conv     (-234567891234567) <>     -234567891234567.0 or
3972        float conv     (-100000000000000) <>     -100000000000000.0 or
3973        float conv      (-99999999999999) <>      -99999999999999.0 or
3974        float conv      (-34567891234567) <>      -34567891234567.0 or
3975        float conv      (-10000000000000) <>      -10000000000000.0 or
3976        float conv       (-9999999999999) <>       -9999999999999.0 or
3977        float conv       (-4567891234567) <>       -4567891234567.0 or
3978        float conv       (-1000000000000) <>       -1000000000000.0 or
3979        float conv        (-999999999999) <>        -999999999999.0 or
3980        float conv        (-567891234567) <>        -567891234567.0 or
3981        float conv        (-100000000000) <>        -100000000000.0 or
3982        float conv         (-99999999999) <>         -99999999999.0 or
3983        float conv         (-10000000000) <>         -10000000000.0 or
3984        float conv          (-9999999999) <>          -9999999999.0 or
3985        float conv          (-7891234567) <>          -7891234567.0 or
3986        float conv          (-1000000000) <>          -1000000000.0 or
3987        float conv           (-999999999) <>           -999999999.0 or
3988        float conv           (-891234567) <>           -891234567.0 or
3989        float conv           (-100000000) <>           -100000000.0 or
3990        float conv            (-99999999) <>            -99999999.0 or
3991        float conv            (-91234567) <>            -91234567.0 or
3992        float conv            (-10000000) <>            -10000000.0 or
3993        float conv             (-9999999) <>             -9999999.0 or
3994        float conv             (-1234567) <>             -1234567.0 or
3995        float conv             (-1000000) <>             -1000000.0 or
3996        float conv              (-999999) <>              -999999.0 or
3997        float conv              (-234567) <>              -234567.0 or
3998        float conv              (-100000) <>              -100000.0 or
3999        float conv               (-99999) <>               -99999.0 or
4000        float conv               (-34567) <>               -34567.0 or
4001        float conv               (-10000) <>               -10000.0 or
4002        float conv                (-9999) <>                -9999.0 or
4003        float conv                (-4567) <>                -4567.0 or
4004        float conv                (-1000) <>                -1000.0 or
4005        float conv                 (-999) <>                 -999.0 or
4006        float conv                 (-567) <>                 -567.0 or
4007        float conv                 (-100) <>                 -100.0 or
4008        float conv                  (-99) <>                  -99.0 or
4009        float conv                  (-67) <>                  -67.0 or
4010        float conv                  (-10) <>                  -10.0 or
4011        float conv                   (-9) <>                   -9.0 or
4012        float conv                   (-7) <>                   -7.0 or
4013        float conv                   (-1) <>                   -1.0 or
4014        float conv                     0  <>                    0.0 or
4015        float conv                     1  <>                    1.0 or
4016        float conv                     7  <>                    7.0 or
4017        float conv                     9  <>                    9.0 or
4018        float conv                    10  <>                   10.0 or
4019        float conv                    67  <>                   67.0 or
4020        float conv                    99  <>                   99.0 or
4021        float conv                   100  <>                  100.0 or
4022        float conv                   567  <>                  567.0 or
4023        float conv                   999  <>                  999.0 or
4024        float conv                  1000  <>                 1000.0 or
4025        float conv                  4567  <>                 4567.0 or
4026        float conv                  9999  <>                 9999.0 or
4027        float conv                 10000  <>                10000.0 or
4028        float conv                 34567  <>                34567.0 or
4029        float conv                 99999  <>                99999.0 or
4030        float conv                100000  <>               100000.0 or
4031        float conv                234567  <>               234567.0 or
4032        float conv                999999  <>               999999.0 or
4033        float conv               1000000  <>              1000000.0 or
4034        float conv               1234567  <>              1234567.0 or
4035        float conv               9999999  <>              9999999.0 or
4036        float conv              10000000  <>             10000000.0 or
4037        float conv              91234567  <>             91234567.0 or
4038        float conv              99999999  <>             99999999.0 or
4039        float conv             100000000  <>            100000000.0 or
4040        float conv             891234567  <>            891234567.0 or
4041        float conv             999999999  <>            999999999.0 or
4042        float conv            1000000000  <>           1000000000.0 or
4043        float conv            7891234567  <>           7891234567.0 or
4044        float conv            9999999999  <>           9999999999.0 or
4045        float conv           10000000000  <>          10000000000.0 or
4046        float conv           67891234567  <>          67891234567.0 or
4047        float conv           99999999999  <>          99999999999.0 or
4048        float conv          100000000000  <>         100000000000.0 or
4049        float conv          567891234567  <>         567891234567.0 or
4050        float conv          999999999999  <>         999999999999.0 or
4051        float conv         1000000000000  <>        1000000000000.0 or
4052        float conv         4567891234567  <>        4567891234567.0 or
4053        float conv         9999999999999  <>        9999999999999.0 or
4054        float conv        10000000000000  <>       10000000000000.0 or
4055        float conv        34567891234567  <>       34567891234567.0 or
4056        float conv        99999999999999  <>       99999999999999.0 or
4057        float conv       100000000000000  <>      100000000000000.0 or
4058        float conv       234567891234567  <>      234567891234567.0 or
4059        float conv       999999999999999  <>      999999999999999.0 or
4060        float conv      1000000000000000  <>     1000000000000000.0 or
4061        float conv      1125899906842624  <>     1125899906842624.0 or
4062        float conv      2251799813685248  <>     2251799813685248.0 or
4063        float conv      4503599627370496  <>     4503599627370496.0 or
4064        float conv      9007199254740992  <>     9007199254740992.0 or
4065        float conv     10000000000000000  <>    10000000000000000.0 or
4066        float conv    100000000000000000  <>   100000000000000000.0 or
4067        float conv   1000000000000000000  <>  1000000000000000000.0 or
4068        float conv   9223372036854774784  <>  9223372036854774784.0 then
4069      writeln(" ***** Conversion from integer to float does not work correct. (1)");
4070      okay := FALSE;
4071    end if;
4072
4073    if  float conv intExpr(       integer.first) <> -9223372036854775808.0 or
4074        float conv intExpr(-9223372036854774784) <> -9223372036854774784.0 or
4075        float conv intExpr(-1000000000000000000) <> -1000000000000000000.0 or
4076        float conv intExpr( -100000000000000000) <>  -100000000000000000.0 or
4077        float conv intExpr(  -10000000000000000) <>   -10000000000000000.0 or
4078        float conv intExpr(   -9007199254740992) <>    -9007199254740992.0 or
4079        float conv intExpr(   -4503599627370496) <>    -4503599627370496.0 or
4080        float conv intExpr(   -2251799813685248) <>    -2251799813685248.0 or
4081        float conv intExpr(   -1125899906842624) <>    -1125899906842624.0 or
4082        float conv intExpr(   -1000000000000000) <>    -1000000000000000.0 or
4083        float conv intExpr(    -999999999999999) <>     -999999999999999.0 or
4084        float conv intExpr(    -234567891234567) <>     -234567891234567.0 or
4085        float conv intExpr(    -100000000000000) <>     -100000000000000.0 or
4086        float conv intExpr(     -99999999999999) <>      -99999999999999.0 or
4087        float conv intExpr(     -34567891234567) <>      -34567891234567.0 or
4088        float conv intExpr(     -10000000000000) <>      -10000000000000.0 or
4089        float conv intExpr(      -9999999999999) <>       -9999999999999.0 or
4090        float conv intExpr(      -4567891234567) <>       -4567891234567.0 or
4091        float conv intExpr(      -1000000000000) <>       -1000000000000.0 or
4092        float conv intExpr(       -999999999999) <>        -999999999999.0 or
4093        float conv intExpr(       -567891234567) <>        -567891234567.0 or
4094        float conv intExpr(       -100000000000) <>        -100000000000.0 or
4095        float conv intExpr(        -99999999999) <>         -99999999999.0 or
4096        float conv intExpr(        -10000000000) <>         -10000000000.0 or
4097        float conv intExpr(         -9999999999) <>          -9999999999.0 or
4098        float conv intExpr(         -7891234567) <>          -7891234567.0 or
4099        float conv intExpr(         -1000000000) <>          -1000000000.0 or
4100        float conv intExpr(          -999999999) <>           -999999999.0 or
4101        float conv intExpr(          -891234567) <>           -891234567.0 or
4102        float conv intExpr(          -100000000) <>           -100000000.0 or
4103        float conv intExpr(           -99999999) <>            -99999999.0 or
4104        float conv intExpr(           -91234567) <>            -91234567.0 or
4105        float conv intExpr(           -10000000) <>            -10000000.0 or
4106        float conv intExpr(            -9999999) <>             -9999999.0 or
4107        float conv intExpr(            -1234567) <>             -1234567.0 or
4108        float conv intExpr(            -1000000) <>             -1000000.0 or
4109        float conv intExpr(             -999999) <>              -999999.0 or
4110        float conv intExpr(             -234567) <>              -234567.0 or
4111        float conv intExpr(             -100000) <>              -100000.0 or
4112        float conv intExpr(              -99999) <>               -99999.0 or
4113        float conv intExpr(              -34567) <>               -34567.0 or
4114        float conv intExpr(              -10000) <>               -10000.0 or
4115        float conv intExpr(               -9999) <>                -9999.0 or
4116        float conv intExpr(               -4567) <>                -4567.0 or
4117        float conv intExpr(               -1000) <>                -1000.0 or
4118        float conv intExpr(                -999) <>                 -999.0 or
4119        float conv intExpr(                -567) <>                 -567.0 or
4120        float conv intExpr(                -100) <>                 -100.0 or
4121        float conv intExpr(                 -99) <>                  -99.0 or
4122        float conv intExpr(                 -67) <>                  -67.0 or
4123        float conv intExpr(                 -10) <>                  -10.0 or
4124        float conv intExpr(                  -9) <>                   -9.0 or
4125        float conv intExpr(                  -7) <>                   -7.0 or
4126        float conv intExpr(                  -1) <>                   -1.0 or
4127        float conv intExpr(                   0) <>                    0.0 or
4128        float conv intExpr(                   1) <>                    1.0 or
4129        float conv intExpr(                   7) <>                    7.0 or
4130        float conv intExpr(                   9) <>                    9.0 or
4131        float conv intExpr(                  10) <>                   10.0 or
4132        float conv intExpr(                  67) <>                   67.0 or
4133        float conv intExpr(                  99) <>                   99.0 or
4134        float conv intExpr(                 100) <>                  100.0 or
4135        float conv intExpr(                 567) <>                  567.0 or
4136        float conv intExpr(                 999) <>                  999.0 or
4137        float conv intExpr(                1000) <>                 1000.0 or
4138        float conv intExpr(                4567) <>                 4567.0 or
4139        float conv intExpr(                9999) <>                 9999.0 or
4140        float conv intExpr(               10000) <>                10000.0 or
4141        float conv intExpr(               34567) <>                34567.0 or
4142        float conv intExpr(               99999) <>                99999.0 or
4143        float conv intExpr(              100000) <>               100000.0 or
4144        float conv intExpr(              234567) <>               234567.0 or
4145        float conv intExpr(              999999) <>               999999.0 or
4146        float conv intExpr(             1000000) <>              1000000.0 or
4147        float conv intExpr(             1234567) <>              1234567.0 or
4148        float conv intExpr(             9999999) <>              9999999.0 or
4149        float conv intExpr(            10000000) <>             10000000.0 or
4150        float conv intExpr(            91234567) <>             91234567.0 or
4151        float conv intExpr(            99999999) <>             99999999.0 or
4152        float conv intExpr(           100000000) <>            100000000.0 or
4153        float conv intExpr(           891234567) <>            891234567.0 or
4154        float conv intExpr(           999999999) <>            999999999.0 or
4155        float conv intExpr(          1000000000) <>           1000000000.0 or
4156        float conv intExpr(          7891234567) <>           7891234567.0 or
4157        float conv intExpr(          9999999999) <>           9999999999.0 or
4158        float conv intExpr(         10000000000) <>          10000000000.0 or
4159        float conv intExpr(         67891234567) <>          67891234567.0 or
4160        float conv intExpr(         99999999999) <>          99999999999.0 or
4161        float conv intExpr(        100000000000) <>         100000000000.0 or
4162        float conv intExpr(        567891234567) <>         567891234567.0 or
4163        float conv intExpr(        999999999999) <>         999999999999.0 or
4164        float conv intExpr(       1000000000000) <>        1000000000000.0 or
4165        float conv intExpr(       4567891234567) <>        4567891234567.0 or
4166        float conv intExpr(       9999999999999) <>        9999999999999.0 or
4167        float conv intExpr(      10000000000000) <>       10000000000000.0 or
4168        float conv intExpr(      34567891234567) <>       34567891234567.0 or
4169        float conv intExpr(      99999999999999) <>       99999999999999.0 or
4170        float conv intExpr(     100000000000000) <>      100000000000000.0 or
4171        float conv intExpr(     234567891234567) <>      234567891234567.0 or
4172        float conv intExpr(     999999999999999) <>      999999999999999.0 or
4173        float conv intExpr(    1000000000000000) <>     1000000000000000.0 or
4174        float conv intExpr(    1125899906842624) <>     1125899906842624.0 or
4175        float conv intExpr(    2251799813685248) <>     2251799813685248.0 or
4176        float conv intExpr(    4503599627370496) <>     4503599627370496.0 or
4177        float conv intExpr(    9007199254740992) <>     9007199254740992.0 or
4178        float conv intExpr(   10000000000000000) <>    10000000000000000.0 or
4179        float conv intExpr(  100000000000000000) <>   100000000000000000.0 or
4180        float conv intExpr( 1000000000000000000) <>  1000000000000000000.0 or
4181        float conv intExpr( 9223372036854774784) <>  9223372036854774784.0 then
4182      writeln(" ***** Conversion from integer to float does not work correct. (2)");
4183      okay := FALSE;
4184    end if;
4185
4186    if  float(       integer.first) <> -9223372036854775808.0 or
4187        float(-9223372036854774784) <> -9223372036854774784.0 or
4188        float(-1000000000000000000) <> -1000000000000000000.0 or
4189        float( -100000000000000000) <>  -100000000000000000.0 or
4190        float(  -10000000000000000) <>   -10000000000000000.0 or
4191        float(   -9007199254740992) <>    -9007199254740992.0 or
4192        float(   -4503599627370496) <>    -4503599627370496.0 or
4193        float(   -2251799813685248) <>    -2251799813685248.0 or
4194        float(   -1125899906842624) <>    -1125899906842624.0 or
4195        float(   -1000000000000000) <>    -1000000000000000.0 or
4196        float(    -999999999999999) <>     -999999999999999.0 or
4197        float(    -234567891234567) <>     -234567891234567.0 or
4198        float(    -100000000000000) <>     -100000000000000.0 or
4199        float(     -99999999999999) <>      -99999999999999.0 or
4200        float(     -34567891234567) <>      -34567891234567.0 or
4201        float(     -10000000000000) <>      -10000000000000.0 or
4202        float(      -9999999999999) <>       -9999999999999.0 or
4203        float(      -4567891234567) <>       -4567891234567.0 or
4204        float(      -1000000000000) <>       -1000000000000.0 or
4205        float(       -999999999999) <>        -999999999999.0 or
4206        float(       -567891234567) <>        -567891234567.0 or
4207        float(       -100000000000) <>        -100000000000.0 or
4208        float(        -99999999999) <>         -99999999999.0 or
4209        float(        -10000000000) <>         -10000000000.0 or
4210        float(         -9999999999) <>          -9999999999.0 or
4211        float(         -7891234567) <>          -7891234567.0 or
4212        float(         -1000000000) <>          -1000000000.0 or
4213        float(          -999999999) <>           -999999999.0 or
4214        float(          -891234567) <>           -891234567.0 or
4215        float(          -100000000) <>           -100000000.0 or
4216        float(           -99999999) <>            -99999999.0 or
4217        float(           -91234567) <>            -91234567.0 or
4218        float(           -10000000) <>            -10000000.0 or
4219        float(            -9999999) <>             -9999999.0 or
4220        float(            -1234567) <>             -1234567.0 or
4221        float(            -1000000) <>             -1000000.0 or
4222        float(             -999999) <>              -999999.0 or
4223        float(             -234567) <>              -234567.0 or
4224        float(             -100000) <>              -100000.0 or
4225        float(              -99999) <>               -99999.0 or
4226        float(              -34567) <>               -34567.0 or
4227        float(              -10000) <>               -10000.0 or
4228        float(               -9999) <>                -9999.0 or
4229        float(               -4567) <>                -4567.0 or
4230        float(               -1000) <>                -1000.0 or
4231        float(                -999) <>                 -999.0 or
4232        float(                -567) <>                 -567.0 or
4233        float(                -100) <>                 -100.0 or
4234        float(                 -99) <>                  -99.0 or
4235        float(                 -67) <>                  -67.0 or
4236        float(                 -10) <>                  -10.0 or
4237        float(                  -9) <>                   -9.0 or
4238        float(                  -7) <>                   -7.0 or
4239        float(                  -1) <>                   -1.0 or
4240        float(                   0) <>                    0.0 or
4241        float(                   1) <>                    1.0 or
4242        float(                   7) <>                    7.0 or
4243        float(                   9) <>                    9.0 or
4244        float(                  10) <>                   10.0 or
4245        float(                  67) <>                   67.0 or
4246        float(                  99) <>                   99.0 or
4247        float(                 100) <>                  100.0 or
4248        float(                 567) <>                  567.0 or
4249        float(                 999) <>                  999.0 or
4250        float(                1000) <>                 1000.0 or
4251        float(                4567) <>                 4567.0 or
4252        float(                9999) <>                 9999.0 or
4253        float(               10000) <>                10000.0 or
4254        float(               34567) <>                34567.0 or
4255        float(               99999) <>                99999.0 or
4256        float(              100000) <>               100000.0 or
4257        float(              234567) <>               234567.0 or
4258        float(              999999) <>               999999.0 or
4259        float(             1000000) <>              1000000.0 or
4260        float(             1234567) <>              1234567.0 or
4261        float(             9999999) <>              9999999.0 or
4262        float(            10000000) <>             10000000.0 or
4263        float(            91234567) <>             91234567.0 or
4264        float(            99999999) <>             99999999.0 or
4265        float(           100000000) <>            100000000.0 or
4266        float(           891234567) <>            891234567.0 or
4267        float(           999999999) <>            999999999.0 or
4268        float(          1000000000) <>           1000000000.0 or
4269        float(          7891234567) <>           7891234567.0 or
4270        float(          9999999999) <>           9999999999.0 or
4271        float(         10000000000) <>          10000000000.0 or
4272        float(         67891234567) <>          67891234567.0 or
4273        float(         99999999999) <>          99999999999.0 or
4274        float(        100000000000) <>         100000000000.0 or
4275        float(        567891234567) <>         567891234567.0 or
4276        float(        999999999999) <>         999999999999.0 or
4277        float(       1000000000000) <>        1000000000000.0 or
4278        float(       4567891234567) <>        4567891234567.0 or
4279        float(       9999999999999) <>        9999999999999.0 or
4280        float(      10000000000000) <>       10000000000000.0 or
4281        float(      34567891234567) <>       34567891234567.0 or
4282        float(      99999999999999) <>       99999999999999.0 or
4283        float(     100000000000000) <>      100000000000000.0 or
4284        float(     234567891234567) <>      234567891234567.0 or
4285        float(     999999999999999) <>      999999999999999.0 or
4286        float(    1000000000000000) <>     1000000000000000.0 or
4287        float(    1125899906842624) <>     1125899906842624.0 or
4288        float(    2251799813685248) <>     2251799813685248.0 or
4289        float(    4503599627370496) <>     4503599627370496.0 or
4290        float(    9007199254740992) <>     9007199254740992.0 or
4291        float(   10000000000000000) <>    10000000000000000.0 or
4292        float(  100000000000000000) <>   100000000000000000.0 or
4293        float( 1000000000000000000) <>  1000000000000000000.0 or
4294        float( 9223372036854774784) <>  9223372036854774784.0 then
4295      writeln(" ***** Conversion from integer to float does not work correct. (3)");
4296      okay := FALSE;
4297    end if;
4298
4299    if  float(intExpr(       integer.first)) <> -9223372036854775808.0 or
4300        float(intExpr(-9223372036854774784)) <> -9223372036854774784.0 or
4301        float(intExpr(-1000000000000000000)) <> -1000000000000000000.0 or
4302        float(intExpr( -100000000000000000)) <>  -100000000000000000.0 or
4303        float(intExpr(  -10000000000000000)) <>   -10000000000000000.0 or
4304        float(intExpr(   -9007199254740992)) <>    -9007199254740992.0 or
4305        float(intExpr(   -4503599627370496)) <>    -4503599627370496.0 or
4306        float(intExpr(   -2251799813685248)) <>    -2251799813685248.0 or
4307        float(intExpr(   -1125899906842624)) <>    -1125899906842624.0 or
4308        float(intExpr(   -1000000000000000)) <>    -1000000000000000.0 or
4309        float(intExpr(    -999999999999999)) <>     -999999999999999.0 or
4310        float(intExpr(    -234567891234567)) <>     -234567891234567.0 or
4311        float(intExpr(    -100000000000000)) <>     -100000000000000.0 or
4312        float(intExpr(     -99999999999999)) <>      -99999999999999.0 or
4313        float(intExpr(     -34567891234567)) <>      -34567891234567.0 or
4314        float(intExpr(     -10000000000000)) <>      -10000000000000.0 or
4315        float(intExpr(      -9999999999999)) <>       -9999999999999.0 or
4316        float(intExpr(      -4567891234567)) <>       -4567891234567.0 or
4317        float(intExpr(      -1000000000000)) <>       -1000000000000.0 or
4318        float(intExpr(       -999999999999)) <>        -999999999999.0 or
4319        float(intExpr(       -567891234567)) <>        -567891234567.0 or
4320        float(intExpr(       -100000000000)) <>        -100000000000.0 or
4321        float(intExpr(        -99999999999)) <>         -99999999999.0 or
4322        float(intExpr(        -10000000000)) <>         -10000000000.0 or
4323        float(intExpr(         -9999999999)) <>          -9999999999.0 or
4324        float(intExpr(         -7891234567)) <>          -7891234567.0 or
4325        float(intExpr(         -1000000000)) <>          -1000000000.0 or
4326        float(intExpr(          -999999999)) <>           -999999999.0 or
4327        float(intExpr(          -891234567)) <>           -891234567.0 or
4328        float(intExpr(          -100000000)) <>           -100000000.0 or
4329        float(intExpr(           -99999999)) <>            -99999999.0 or
4330        float(intExpr(           -91234567)) <>            -91234567.0 or
4331        float(intExpr(           -10000000)) <>            -10000000.0 or
4332        float(intExpr(            -9999999)) <>             -9999999.0 or
4333        float(intExpr(            -1234567)) <>             -1234567.0 or
4334        float(intExpr(            -1000000)) <>             -1000000.0 or
4335        float(intExpr(             -999999)) <>              -999999.0 or
4336        float(intExpr(             -234567)) <>              -234567.0 or
4337        float(intExpr(             -100000)) <>              -100000.0 or
4338        float(intExpr(              -99999)) <>               -99999.0 or
4339        float(intExpr(              -34567)) <>               -34567.0 or
4340        float(intExpr(              -10000)) <>               -10000.0 or
4341        float(intExpr(               -9999)) <>                -9999.0 or
4342        float(intExpr(               -4567)) <>                -4567.0 or
4343        float(intExpr(               -1000)) <>                -1000.0 or
4344        float(intExpr(                -999)) <>                 -999.0 or
4345        float(intExpr(                -567)) <>                 -567.0 or
4346        float(intExpr(                -100)) <>                 -100.0 or
4347        float(intExpr(                 -99)) <>                  -99.0 or
4348        float(intExpr(                 -67)) <>                  -67.0 or
4349        float(intExpr(                 -10)) <>                  -10.0 or
4350        float(intExpr(                  -9)) <>                   -9.0 or
4351        float(intExpr(                  -7)) <>                   -7.0 or
4352        float(intExpr(                  -1)) <>                   -1.0 or
4353        float(intExpr(                   0)) <>                    0.0 or
4354        float(intExpr(                   1)) <>                    1.0 or
4355        float(intExpr(                   7)) <>                    7.0 or
4356        float(intExpr(                   9)) <>                    9.0 or
4357        float(intExpr(                  10)) <>                   10.0 or
4358        float(intExpr(                  67)) <>                   67.0 or
4359        float(intExpr(                  99)) <>                   99.0 or
4360        float(intExpr(                 100)) <>                  100.0 or
4361        float(intExpr(                 567)) <>                  567.0 or
4362        float(intExpr(                 999)) <>                  999.0 or
4363        float(intExpr(                1000)) <>                 1000.0 or
4364        float(intExpr(                4567)) <>                 4567.0 or
4365        float(intExpr(                9999)) <>                 9999.0 or
4366        float(intExpr(               10000)) <>                10000.0 or
4367        float(intExpr(               34567)) <>                34567.0 or
4368        float(intExpr(               99999)) <>                99999.0 or
4369        float(intExpr(              100000)) <>               100000.0 or
4370        float(intExpr(              234567)) <>               234567.0 or
4371        float(intExpr(              999999)) <>               999999.0 or
4372        float(intExpr(             1000000)) <>              1000000.0 or
4373        float(intExpr(             1234567)) <>              1234567.0 or
4374        float(intExpr(             9999999)) <>              9999999.0 or
4375        float(intExpr(            10000000)) <>             10000000.0 or
4376        float(intExpr(            91234567)) <>             91234567.0 or
4377        float(intExpr(            99999999)) <>             99999999.0 or
4378        float(intExpr(           100000000)) <>            100000000.0 or
4379        float(intExpr(           891234567)) <>            891234567.0 or
4380        float(intExpr(           999999999)) <>            999999999.0 or
4381        float(intExpr(          1000000000)) <>           1000000000.0 or
4382        float(intExpr(          7891234567)) <>           7891234567.0 or
4383        float(intExpr(          9999999999)) <>           9999999999.0 or
4384        float(intExpr(         10000000000)) <>          10000000000.0 or
4385        float(intExpr(         67891234567)) <>          67891234567.0 or
4386        float(intExpr(         99999999999)) <>          99999999999.0 or
4387        float(intExpr(        100000000000)) <>         100000000000.0 or
4388        float(intExpr(        567891234567)) <>         567891234567.0 or
4389        float(intExpr(        999999999999)) <>         999999999999.0 or
4390        float(intExpr(       1000000000000)) <>        1000000000000.0 or
4391        float(intExpr(       4567891234567)) <>        4567891234567.0 or
4392        float(intExpr(       9999999999999)) <>        9999999999999.0 or
4393        float(intExpr(      10000000000000)) <>       10000000000000.0 or
4394        float(intExpr(      34567891234567)) <>       34567891234567.0 or
4395        float(intExpr(      99999999999999)) <>       99999999999999.0 or
4396        float(intExpr(     100000000000000)) <>      100000000000000.0 or
4397        float(intExpr(     234567891234567)) <>      234567891234567.0 or
4398        float(intExpr(     999999999999999)) <>      999999999999999.0 or
4399        float(intExpr(    1000000000000000)) <>     1000000000000000.0 or
4400        float(intExpr(    1125899906842624)) <>     1125899906842624.0 or
4401        float(intExpr(    2251799813685248)) <>     2251799813685248.0 or
4402        float(intExpr(    4503599627370496)) <>     4503599627370496.0 or
4403        float(intExpr(    9007199254740992)) <>     9007199254740992.0 or
4404        float(intExpr(   10000000000000000)) <>    10000000000000000.0 or
4405        float(intExpr(  100000000000000000)) <>   100000000000000000.0 or
4406        float(intExpr( 1000000000000000000)) <>  1000000000000000000.0 or
4407        float(intExpr( 9223372036854774784)) <>  9223372036854774784.0 then
4408      writeln(" ***** Conversion from integer to float does not work correct. (4)");
4409      okay := FALSE;
4410    end if;
4411
4412    if okay then
4413      writeln("Conversion from integer to float works correct.");
4414    else
4415      writeln(" ***** Conversion from integer to float does not work correct.");
4416    end if;
4417  end func;
4418
4419
4420const proc: check_trunc is func
4421  local
4422    var boolean: okay is TRUE;
4423  begin
4424    if  not raisesRangeError(trunc(           -Infinity  )) or
4425        not raisesRangeError(trunc(          -FLOAT_MAX  )) or
4426        not raisesRangeError(trunc(             -1.0e37  )) or
4427        not raisesRangeError(trunc(-9223372036854777856.0)) or
4428        trunc(-9223372036854775808.0) <>        integer.first or
4429        trunc(-4611686018427387904.0) <> -4611686018427387904 or
4430        trunc(-2305843009213693952.0) <> -2305843009213693952 or
4431        trunc(-1152921504606846976.0) <> -1152921504606846976 or
4432        trunc( -576460752303423488.0) <>  -576460752303423488 or
4433        trunc(   -9007199254740992.0) <>    -9007199254740992 or
4434        trunc(   -9007199254740991.0) <>    -9007199254740991 or
4435        trunc(   -9007199254740990.0) <>    -9007199254740990 or
4436        trunc(     -10000000000000.9) <>      -10000000000000 or
4437        trunc(     -10000000000000.0) <>      -10000000000000 or
4438        trunc(      -1000000000000.99) <>      -1000000000000 or
4439        trunc(      -1000000000000.0) <>       -1000000000000 or
4440        trunc(       -100000000000.999) <>      -100000000000 or
4441        trunc(       -100000000000.0) <>        -100000000000 or
4442        trunc(        -10000000000.9999) <>      -10000000000 or
4443        trunc(        -10000000000.0) <>         -10000000000 or
4444        trunc(         -1000000000.99999) <>      -1000000000 or
4445        trunc(         -1000000000.0) <>          -1000000000 or
4446        trunc(          -100000000.999999) <>      -100000000 or
4447        trunc(          -100000000.0) <>           -100000000 or
4448        trunc(           -10000000.9999999) <>      -10000000 or
4449        trunc(           -10000000.0) <>            -10000000 or
4450        trunc(            -1000000.99999999) <>      -1000000 or
4451        trunc(            -1000000.0) <>             -1000000 or
4452        trunc(             -100000.999999999) <>      -100000 or
4453        trunc(             -100000.0) <>              -100000 or
4454        trunc(              -10000.9999999999) <>      -10000 or
4455        trunc(              -10000.0) <>               -10000 or
4456        trunc(               -1000.99999999999) <>      -1000 or
4457        trunc(               -1000.0) <>                -1000 or
4458        trunc(                -100.999999999999) <>      -100 or
4459        trunc(                -100.0) <>                 -100 or
4460        trunc(                 -10.9999999999999) <>      -10 or
4461        trunc(                 -10.0) <>                  -10 or
4462        trunc(                  -1.99999999999999) <>      -1 or
4463        trunc(                  -1.0) <>                   -1 or
4464        trunc(                  -0.999999999999999) <>      0 or
4465        trunc(                   0.0) <>                    0 or
4466        trunc(                   0.999999999999999) <>      0 or
4467        trunc(                   1.0) <>                    1 or
4468        trunc(                   1.99999999999999) <>       1 or
4469        trunc(                  10.0) <>                   10 or
4470        trunc(                  10.9999999999999) <>       10 or
4471        trunc(                 100.0) <>                  100 or
4472        trunc(                 100.999999999999) <>       100 or
4473        trunc(                1000.0) <>                 1000 or
4474        trunc(                1000.99999999999) <>       1000 or
4475        trunc(               10000.0) <>                10000 or
4476        trunc(               10000.9999999999) <>       10000 or
4477        trunc(              100000.0) <>               100000 or
4478        trunc(              100000.999999999) <>       100000 or
4479        trunc(             1000000.0) <>              1000000 or
4480        trunc(             1000000.99999999) <>       1000000 or
4481        trunc(            10000000.0) <>             10000000 or
4482        trunc(            10000000.9999999) <>       10000000 or
4483        trunc(           100000000.0) <>            100000000 or
4484        trunc(           100000000.999999) <>       100000000 or
4485        trunc(          1000000000.0) <>           1000000000 or
4486        trunc(          1000000000.99999) <>       1000000000 or
4487        trunc(         10000000000.0) <>          10000000000 or
4488        trunc(         10000000000.9999) <>       10000000000 or
4489        trunc(        100000000000.0) <>         100000000000 or
4490        trunc(        100000000000.999) <>       100000000000 or
4491        trunc(       1000000000000.0) <>        1000000000000 or
4492        trunc(       1000000000000.99) <>       1000000000000 or
4493        trunc(      10000000000000.0) <>       10000000000000 or
4494        trunc(      10000000000000.9) <>       10000000000000 or
4495        trunc(    9007199254740990.0) <>     9007199254740990 or
4496        trunc(    9007199254740991.0) <>     9007199254740991 or
4497        trunc(    9007199254740992.0) <>     9007199254740992 or
4498        trunc(  576460752303423488.0) <>   576460752303423488 or
4499        trunc( 1152921504606846976.0) <>  1152921504606846976 or
4500        trunc( 2305843009213693952.0) <>  2305843009213693952 or
4501        trunc( 4611686018427387904.0) <>  4611686018427387904 or
4502        trunc( 9223372036854773760.0) <>  9223372036854773760 or
4503        trunc( 9223372036854774784.0) <>  9223372036854774784 or
4504        not raisesRangeError(trunc( 9223372036854775807.0)) and
4505                             trunc( 9223372036854775807.0) <> 9223372036854775807 or
4506        not raisesRangeError(trunc( 9223372036854777856.0)) or
4507        not raisesRangeError(trunc(              1.0e37  )) or
4508        not raisesRangeError(trunc(           FLOAT_MAX  )) or
4509        not raisesRangeError(trunc(            Infinity  )) or
4510        not raisesRangeError(trunc(                 NaN  )) then
4511      writeln(" ***** Truncation of float does not work correct. (1)");
4512      okay := FALSE;
4513    end if;
4514
4515    if  not raisesRangeError(trunc(floatExpr(           -Infinity  ))) or
4516        not raisesRangeError(trunc(floatExpr(          -FLOAT_MAX  ))) or
4517        not raisesRangeError(trunc(floatExpr(             -1.0e37  ))) or
4518        not raisesRangeError(trunc(floatExpr(-9223372036854777856.0))) or
4519        trunc(floatExpr(-9223372036854775808.0)) <>        integer.first or
4520        trunc(floatExpr(-4611686018427387904.0)) <> -4611686018427387904 or
4521        trunc(floatExpr(-2305843009213693952.0)) <> -2305843009213693952 or
4522        trunc(floatExpr(-1152921504606846976.0)) <> -1152921504606846976 or
4523        trunc(floatExpr( -576460752303423488.0)) <>  -576460752303423488 or
4524        trunc(floatExpr(   -9007199254740992.0)) <>    -9007199254740992 or
4525        trunc(floatExpr(   -9007199254740991.0)) <>    -9007199254740991 or
4526        trunc(floatExpr(   -9007199254740990.0)) <>    -9007199254740990 or
4527        trunc(floatExpr(     -10000000000000.9)) <>      -10000000000000 or
4528        trunc(floatExpr(     -10000000000000.0)) <>      -10000000000000 or
4529        trunc(floatExpr(      -1000000000000.99)) <>      -1000000000000 or
4530        trunc(floatExpr(      -1000000000000.0)) <>       -1000000000000 or
4531        trunc(floatExpr(       -100000000000.999)) <>      -100000000000 or
4532        trunc(floatExpr(       -100000000000.0)) <>        -100000000000 or
4533        trunc(floatExpr(        -10000000000.9999)) <>      -10000000000 or
4534        trunc(floatExpr(        -10000000000.0)) <>         -10000000000 or
4535        trunc(floatExpr(         -1000000000.99999)) <>      -1000000000 or
4536        trunc(floatExpr(         -1000000000.0)) <>          -1000000000 or
4537        trunc(floatExpr(          -100000000.999999)) <>      -100000000 or
4538        trunc(floatExpr(          -100000000.0)) <>           -100000000 or
4539        trunc(floatExpr(           -10000000.9999999)) <>      -10000000 or
4540        trunc(floatExpr(           -10000000.0)) <>            -10000000 or
4541        trunc(floatExpr(            -1000000.99999999)) <>      -1000000 or
4542        trunc(floatExpr(            -1000000.0)) <>             -1000000 or
4543        trunc(floatExpr(             -100000.999999999)) <>      -100000 or
4544        trunc(floatExpr(             -100000.0)) <>              -100000 or
4545        trunc(floatExpr(              -10000.9999999999)) <>      -10000 or
4546        trunc(floatExpr(              -10000.0)) <>               -10000 or
4547        trunc(floatExpr(               -1000.99999999999)) <>      -1000 or
4548        trunc(floatExpr(               -1000.0)) <>                -1000 or
4549        trunc(floatExpr(                -100.999999999999)) <>      -100 or
4550        trunc(floatExpr(                -100.0)) <>                 -100 or
4551        trunc(floatExpr(                 -10.9999999999999)) <>      -10 or
4552        trunc(floatExpr(                 -10.0)) <>                  -10 or
4553        trunc(floatExpr(                  -1.99999999999999)) <>      -1 or
4554        trunc(floatExpr(                  -1.0)) <>                   -1 or
4555        trunc(floatExpr(                  -0.999999999999999)) <>      0 or
4556        trunc(floatExpr(                   0.0)) <>                    0 or
4557        trunc(floatExpr(                   0.999999999999999)) <>      0 or
4558        trunc(floatExpr(                   1.0)) <>                    1 or
4559        trunc(floatExpr(                   1.99999999999999)) <>       1 or
4560        trunc(floatExpr(                  10.0)) <>                   10 or
4561        trunc(floatExpr(                  10.9999999999999)) <>       10 or
4562        trunc(floatExpr(                 100.0)) <>                  100 or
4563        trunc(floatExpr(                 100.999999999999)) <>       100 or
4564        trunc(floatExpr(                1000.0)) <>                 1000 or
4565        trunc(floatExpr(                1000.99999999999)) <>       1000 or
4566        trunc(floatExpr(               10000.0)) <>                10000 or
4567        trunc(floatExpr(               10000.9999999999)) <>       10000 or
4568        trunc(floatExpr(              100000.0)) <>               100000 or
4569        trunc(floatExpr(              100000.999999999)) <>       100000 or
4570        trunc(floatExpr(             1000000.0)) <>              1000000 or
4571        trunc(floatExpr(             1000000.99999999)) <>       1000000 or
4572        trunc(floatExpr(            10000000.0)) <>             10000000 or
4573        trunc(floatExpr(            10000000.9999999)) <>       10000000 or
4574        trunc(floatExpr(           100000000.0)) <>            100000000 or
4575        trunc(floatExpr(           100000000.999999)) <>       100000000 or
4576        trunc(floatExpr(          1000000000.0)) <>           1000000000 or
4577        trunc(floatExpr(          1000000000.99999)) <>       1000000000 or
4578        trunc(floatExpr(         10000000000.0)) <>          10000000000 or
4579        trunc(floatExpr(         10000000000.9999)) <>       10000000000 or
4580        trunc(floatExpr(        100000000000.0)) <>         100000000000 or
4581        trunc(floatExpr(        100000000000.999)) <>       100000000000 or
4582        trunc(floatExpr(       1000000000000.0)) <>        1000000000000 or
4583        trunc(floatExpr(       1000000000000.99)) <>       1000000000000 or
4584        trunc(floatExpr(      10000000000000.0)) <>       10000000000000 or
4585        trunc(floatExpr(      10000000000000.9)) <>       10000000000000 or
4586        trunc(floatExpr(    9007199254740990.0)) <>     9007199254740990 or
4587        trunc(floatExpr(    9007199254740991.0)) <>     9007199254740991 or
4588        trunc(floatExpr(    9007199254740992.0)) <>     9007199254740992 or
4589        trunc(floatExpr(  576460752303423488.0)) <>   576460752303423488 or
4590        trunc(floatExpr( 1152921504606846976.0)) <>  1152921504606846976 or
4591        trunc(floatExpr( 2305843009213693952.0)) <>  2305843009213693952 or
4592        trunc(floatExpr( 4611686018427387904.0)) <>  4611686018427387904 or
4593        trunc(floatExpr( 9223372036854773760.0)) <>  9223372036854773760 or
4594        trunc(floatExpr( 9223372036854774784.0)) <>  9223372036854774784 or
4595        not raisesRangeError(trunc(floatExpr( 9223372036854775807.0))) and
4596                             trunc(floatExpr( 9223372036854775807.0)) <> 9223372036854775807 or
4597        not raisesRangeError(trunc(floatExpr( 9223372036854777856.0))) or
4598        not raisesRangeError(trunc(floatExpr(              1.0e37  ))) or
4599        not raisesRangeError(trunc(floatExpr(           FLOAT_MAX  ))) or
4600        not raisesRangeError(trunc(floatExpr(            Infinity  ))) or
4601        not raisesRangeError(trunc(floatExpr(                 NaN  ))) then
4602      writeln(" ***** Truncation of float does not work correct. (2)");
4603      okay := FALSE;
4604    end if;
4605
4606    if okay then
4607      writeln("Truncation of float works correct.");
4608    else
4609      writeln(" ***** Truncation of float does not work correct.");
4610    end if;
4611  end func;
4612
4613
4614const proc: check_round is func
4615  local
4616    var boolean: okay is TRUE;
4617  begin
4618    if  not raisesRangeError(round(           -Infinity  )) or
4619        not raisesRangeError(round(          -FLOAT_MAX  )) or
4620        not raisesRangeError(round(             -1.0e37  )) or
4621        not raisesRangeError(round(-9223372036854777856.0)) or
4622        round(-9223372036854775808.0) <>        integer.first or
4623        round(-4611686018427387904.0) <> -4611686018427387904 or
4624        round(-2305843009213693952.0) <> -2305843009213693952 or
4625        round(-1152921504606846976.0) <> -1152921504606846976 or
4626        round( -576460752303423488.0) <>  -576460752303423488 or
4627        round(   -9007199254740990.0) <>    -9007199254740990 or
4628        round(      -1000000000000.5) <>       -1000000000001 or
4629        round(      -1000000000000.49) <>      -1000000000000 or
4630        round(      -1000000000000.0) <>       -1000000000000 or
4631        round(       -999999999999.5) <>       -1000000000000 or
4632        round(       -999999999999.49) <>       -999999999999 or
4633        round(       -100000000000.5) <>        -100000000001 or
4634        round(       -100000000000.499) <>      -100000000000 or
4635        round(       -100000000000.0) <>        -100000000000 or
4636        round(        -99999999999.5) <>        -100000000000 or
4637        round(        -99999999999.499) <>       -99999999999 or
4638        round(        -10000000000.5) <>         -10000000001 or
4639        round(        -10000000000.4999) <>      -10000000000 or
4640        round(        -10000000000.0) <>         -10000000000 or
4641        round(         -9999999999.5) <>         -10000000000 or
4642        round(         -9999999999.4999) <>       -9999999999 or
4643        round(         -1000000000.5) <>          -1000000001 or
4644        round(         -1000000000.49999) <>      -1000000000 or
4645        round(         -1000000000.0) <>          -1000000000 or
4646        round(          -999999999.5) <>          -1000000000 or
4647        round(          -999999999.49999) <>       -999999999 or
4648        round(          -100000000.5) <>           -100000001 or
4649        round(          -100000000.499999) <>      -100000000 or
4650        round(          -100000000.0) <>           -100000000 or
4651        round(           -99999999.5) <>           -100000000 or
4652        round(           -99999999.499999) <>       -99999999 or
4653        round(           -10000000.5) <>            -10000001 or
4654        round(           -10000000.4999999) <>      -10000000 or
4655        round(           -10000000.0) <>            -10000000 or
4656        round(            -9999999.5) <>            -10000000 or
4657        round(            -9999999.4999999) <>       -9999999 or
4658        round(            -1000000.5) <>             -1000001 or
4659        round(            -1000000.49999999) <>      -1000000 or
4660        round(            -1000000.0) <>             -1000000 or
4661        round(             -999999.5) <>             -1000000 or
4662        round(             -999999.49999999) <>       -999999 or
4663        round(             -100000.5) <>              -100001 or
4664        round(             -100000.499999999) <>      -100000 or
4665        round(             -100000.0) <>              -100000 or
4666        round(              -99999.5) <>              -100000 or
4667        round(              -99999.499999999) <>       -99999 or
4668        round(              -10000.5) <>               -10001 or
4669        round(              -10000.4999999999) <>      -10000 or
4670        round(              -10000.0) <>               -10000 or
4671        round(               -9999.5) <>               -10000 or
4672        round(               -9999.4999999999) <>       -9999 or
4673        round(               -1000.5) <>                -1001 or
4674        round(               -1000.49999999999) <>      -1000 or
4675        round(               -1000.0) <>                -1000 or
4676        round(                -999.5) <>                -1000 or
4677        round(                -999.49999999999) <>       -999 or
4678        round(                -100.5) <>                 -101 or
4679        round(                -100.499999999999) <>      -100 or
4680        round(                -100.0) <>                 -100 or
4681        round(                 -99.5) <>                 -100 or
4682        round(                 -99.499999999999) <>       -99 or
4683        round(                 -10.5) <>                  -11 or
4684        round(                 -10.4999999999999) <>      -10 or
4685        round(                 -10.0) <>                  -10 or
4686        round(                  -9.5) <>                  -10 or
4687        round(                  -9.4999999999999) <>       -9 or
4688        round(                  -1.5) <>                   -2 or
4689        round(                  -1.49999999999999) <>      -1 or
4690        round(                  -1.0) <>                   -1 or
4691        round(                  -0.5) <>                   -1 or
4692        round(                  -0.499999999999999) <>      0 or
4693        round(                   0.0) <>                    0 or
4694        round(                   0.499999999999999) <>      0 or
4695        round(                   0.5) <>                    1 or
4696        round(                   1.0) <>                    1 or
4697        round(                   1.49999999999999) <>       1 or
4698        round(                   1.5) <>                    2 or
4699        round(                   9.4999999999999) <>        9 or
4700        round(                   9.5) <>                   10 or
4701        round(                  10.0) <>                   10 or
4702        round(                  10.4999999999999) <>       10 or
4703        round(                  10.5) <>                   11 or
4704        round(                  99.499999999999) <>        99 or
4705        round(                  99.5) <>                  100 or
4706        round(                 100.0) <>                  100 or
4707        round(                 100.499999999999) <>       100 or
4708        round(                 100.5) <>                  101 or
4709        round(                 999.49999999999) <>        999 or
4710        round(                 999.5) <>                 1000 or
4711        round(                1000.0) <>                 1000 or
4712        round(                1000.49999999999) <>       1000 or
4713        round(                1000.5) <>                 1001 or
4714        round(                9999.4999999999) <>        9999 or
4715        round(                9999.5) <>                10000 or
4716        round(               10000.0) <>                10000 or
4717        round(               10000.4999999999) <>       10000 or
4718        round(               10000.5) <>                10001 or
4719        round(               99999.499999999) <>        99999 or
4720        round(               99999.5) <>               100000 or
4721        round(              100000.0) <>               100000 or
4722        round(              100000.499999999) <>       100000 or
4723        round(              100000.5) <>               100001 or
4724        round(              999999.49999999) <>        999999 or
4725        round(              999999.5) <>              1000000 or
4726        round(             1000000.0) <>              1000000 or
4727        round(             1000000.49999999) <>       1000000 or
4728        round(             1000000.5) <>              1000001 or
4729        round(             9999999.4999999) <>        9999999 or
4730        round(             9999999.5) <>             10000000 or
4731        round(            10000000.0) <>             10000000 or
4732        round(            10000000.4999999) <>       10000000 or
4733        round(            10000000.5) <>             10000001 or
4734        round(            99999999.499999) <>        99999999 or
4735        round(            99999999.5) <>            100000000 or
4736        round(           100000000.0) <>            100000000 or
4737        round(           100000000.499999) <>       100000000 or
4738        round(           100000000.5) <>            100000001 or
4739        round(           999999999.49999) <>        999999999 or
4740        round(           999999999.5) <>           1000000000 or
4741        round(          1000000000.0) <>           1000000000 or
4742        round(          1000000000.49999) <>       1000000000 or
4743        round(          1000000000.5) <>           1000000001 or
4744        round(          9999999999.4999) <>        9999999999 or
4745        round(          9999999999.5) <>          10000000000 or
4746        round(         10000000000.0) <>          10000000000 or
4747        round(         10000000000.4999) <>       10000000000 or
4748        round(         10000000000.5) <>          10000000001 or
4749        round(         99999999999.499) <>        99999999999 or
4750        round(         99999999999.5) <>         100000000000 or
4751        round(        100000000000.0) <>         100000000000 or
4752        round(        100000000000.499) <>       100000000000 or
4753        round(        100000000000.5) <>         100000000001 or
4754        round(        999999999999.49) <>        999999999999 or
4755        round(        999999999999.5) <>        1000000000000 or
4756        round(       1000000000000.0) <>        1000000000000 or
4757        round(       1000000000000.49) <>       1000000000000 or
4758        round(       1000000000000.5) <>        1000000000001 or
4759        round(    9007199254740990.0) <>     9007199254740990 or
4760        round(  576460752303423488.0) <>   576460752303423488 or
4761        round( 1152921504606846976.0) <>  1152921504606846976 or
4762        round( 2305843009213693952.0) <>  2305843009213693952 or
4763        round( 4611686018427387904.0) <>  4611686018427387904 or
4764        round( 9223372036854773760.0) <>  9223372036854773760 or
4765        round( 9223372036854774784.0) <>  9223372036854774784 or
4766        not raisesRangeError(round( 9223372036854775807.0)) and
4767                             round( 9223372036854775807.0) <> 9223372036854775807 or
4768        not raisesRangeError(round( 9223372036854777856.0)) or
4769        not raisesRangeError(round(              1.0e37  )) or
4770        not raisesRangeError(round(           FLOAT_MAX  )) or
4771        not raisesRangeError(round(            Infinity  )) or
4772        not raisesRangeError(round(                 NaN  )) then
4773      writeln(" ***** Rounding of float does not work correct. (1)");
4774      okay := FALSE;
4775    end if;
4776
4777    if  not raisesRangeError(round(floatExpr(           -Infinity  ))) or
4778        not raisesRangeError(round(floatExpr(          -FLOAT_MAX  ))) or
4779        not raisesRangeError(round(floatExpr(             -1.0e37  ))) or
4780        not raisesRangeError(round(floatExpr(-9223372036854777856.0))) or
4781        round(floatExpr(-9223372036854775808.0)) <>        integer.first or
4782        round(floatExpr(-4611686018427387904.0)) <> -4611686018427387904 or
4783        round(floatExpr(-2305843009213693952.0)) <> -2305843009213693952 or
4784        round(floatExpr(-1152921504606846976.0)) <> -1152921504606846976 or
4785        round(floatExpr( -576460752303423488.0)) <>  -576460752303423488 or
4786        round(floatExpr(   -9007199254740990.0)) <>    -9007199254740990 or
4787        round(floatExpr(      -1000000000000.5)) <>       -1000000000001 or
4788        round(floatExpr(      -1000000000000.49)) <>      -1000000000000 or
4789        round(floatExpr(      -1000000000000.0)) <>       -1000000000000 or
4790        round(floatExpr(       -999999999999.5)) <>       -1000000000000 or
4791        round(floatExpr(       -999999999999.49)) <>       -999999999999 or
4792        round(floatExpr(       -100000000000.5)) <>        -100000000001 or
4793        round(floatExpr(       -100000000000.499)) <>      -100000000000 or
4794        round(floatExpr(       -100000000000.0)) <>        -100000000000 or
4795        round(floatExpr(        -99999999999.5)) <>        -100000000000 or
4796        round(floatExpr(        -99999999999.499)) <>       -99999999999 or
4797        round(floatExpr(        -10000000000.5)) <>         -10000000001 or
4798        round(floatExpr(        -10000000000.4999)) <>      -10000000000 or
4799        round(floatExpr(        -10000000000.0)) <>         -10000000000 or
4800        round(floatExpr(         -9999999999.5)) <>         -10000000000 or
4801        round(floatExpr(         -9999999999.4999)) <>       -9999999999 or
4802        round(floatExpr(         -1000000000.5)) <>          -1000000001 or
4803        round(floatExpr(         -1000000000.49999)) <>      -1000000000 or
4804        round(floatExpr(         -1000000000.0)) <>          -1000000000 or
4805        round(floatExpr(          -999999999.5)) <>          -1000000000 or
4806        round(floatExpr(          -999999999.49999)) <>       -999999999 or
4807        round(floatExpr(          -100000000.5)) <>           -100000001 or
4808        round(floatExpr(          -100000000.499999)) <>      -100000000 or
4809        round(floatExpr(          -100000000.0)) <>           -100000000 or
4810        round(floatExpr(           -99999999.5)) <>           -100000000 or
4811        round(floatExpr(           -99999999.499999)) <>       -99999999 or
4812        round(floatExpr(           -10000000.5)) <>            -10000001 or
4813        round(floatExpr(           -10000000.4999999)) <>      -10000000 or
4814        round(floatExpr(           -10000000.0)) <>            -10000000 or
4815        round(floatExpr(            -9999999.5)) <>            -10000000 or
4816        round(floatExpr(            -9999999.4999999)) <>       -9999999 or
4817        round(floatExpr(            -1000000.5)) <>             -1000001 or
4818        round(floatExpr(            -1000000.49999999)) <>      -1000000 or
4819        round(floatExpr(            -1000000.0)) <>             -1000000 or
4820        round(floatExpr(             -999999.5)) <>             -1000000 or
4821        round(floatExpr(             -999999.49999999)) <>       -999999 or
4822        round(floatExpr(             -100000.5)) <>              -100001 or
4823        round(floatExpr(             -100000.499999999)) <>      -100000 or
4824        round(floatExpr(             -100000.0)) <>              -100000 or
4825        round(floatExpr(              -99999.5)) <>              -100000 or
4826        round(floatExpr(              -99999.499999999)) <>       -99999 or
4827        round(floatExpr(              -10000.5)) <>               -10001 or
4828        round(floatExpr(              -10000.4999999999)) <>      -10000 or
4829        round(floatExpr(              -10000.0)) <>               -10000 or
4830        round(floatExpr(               -9999.5)) <>               -10000 or
4831        round(floatExpr(               -9999.4999999999)) <>       -9999 or
4832        round(floatExpr(               -1000.5)) <>                -1001 or
4833        round(floatExpr(               -1000.49999999999)) <>      -1000 or
4834        round(floatExpr(               -1000.0)) <>                -1000 or
4835        round(floatExpr(                -999.5)) <>                -1000 or
4836        round(floatExpr(                -999.49999999999)) <>       -999 or
4837        round(floatExpr(                -100.5)) <>                 -101 or
4838        round(floatExpr(                -100.499999999999)) <>      -100 or
4839        round(floatExpr(                -100.0)) <>                 -100 or
4840        round(floatExpr(                 -99.5)) <>                 -100 or
4841        round(floatExpr(                 -99.499999999999)) <>       -99 or
4842        round(floatExpr(                 -10.5)) <>                  -11 or
4843        round(floatExpr(                 -10.4999999999999)) <>      -10 or
4844        round(floatExpr(                 -10.0)) <>                  -10 or
4845        round(floatExpr(                  -9.5)) <>                  -10 or
4846        round(floatExpr(                  -9.4999999999999)) <>       -9 or
4847        round(floatExpr(                  -1.5)) <>                   -2 or
4848        round(floatExpr(                  -1.49999999999999)) <>      -1 or
4849        round(floatExpr(                  -1.0)) <>                   -1 or
4850        round(floatExpr(                  -0.5)) <>                   -1 or
4851        round(floatExpr(                  -0.499999999999999)) <>      0 or
4852        round(floatExpr(                   0.0)) <>                    0 or
4853        round(floatExpr(                   0.499999999999999)) <>      0 or
4854        round(floatExpr(                   0.5)) <>                    1 or
4855        round(floatExpr(                   1.0)) <>                    1 or
4856        round(floatExpr(                   1.49999999999999)) <>       1 or
4857        round(floatExpr(                   1.5)) <>                    2 or
4858        round(floatExpr(                   9.4999999999999)) <>        9 or
4859        round(floatExpr(                   9.5)) <>                   10 or
4860        round(floatExpr(                  10.0)) <>                   10 or
4861        round(floatExpr(                  10.4999999999999)) <>       10 or
4862        round(floatExpr(                  10.5)) <>                   11 or
4863        round(floatExpr(                  99.499999999999)) <>        99 or
4864        round(floatExpr(                  99.5)) <>                  100 or
4865        round(floatExpr(                 100.0)) <>                  100 or
4866        round(floatExpr(                 100.499999999999)) <>       100 or
4867        round(floatExpr(                 100.5)) <>                  101 or
4868        round(floatExpr(                 999.49999999999)) <>        999 or
4869        round(floatExpr(                 999.5)) <>                 1000 or
4870        round(floatExpr(                1000.0)) <>                 1000 or
4871        round(floatExpr(                1000.49999999999)) <>       1000 or
4872        round(floatExpr(                1000.5)) <>                 1001 or
4873        round(floatExpr(                9999.4999999999)) <>        9999 or
4874        round(floatExpr(                9999.5)) <>                10000 or
4875        round(floatExpr(               10000.0)) <>                10000 or
4876        round(floatExpr(               10000.4999999999)) <>       10000 or
4877        round(floatExpr(               10000.5)) <>                10001 or
4878        round(floatExpr(               99999.499999999)) <>        99999 or
4879        round(floatExpr(               99999.5)) <>               100000 or
4880        round(floatExpr(              100000.0)) <>               100000 or
4881        round(floatExpr(              100000.499999999)) <>       100000 or
4882        round(floatExpr(              100000.5)) <>               100001 or
4883        round(floatExpr(              999999.49999999)) <>        999999 or
4884        round(floatExpr(              999999.5)) <>              1000000 or
4885        round(floatExpr(             1000000.0)) <>              1000000 or
4886        round(floatExpr(             1000000.49999999)) <>       1000000 or
4887        round(floatExpr(             1000000.5)) <>              1000001 or
4888        round(floatExpr(             9999999.4999999)) <>        9999999 or
4889        round(floatExpr(             9999999.5)) <>             10000000 or
4890        round(floatExpr(            10000000.0)) <>             10000000 or
4891        round(floatExpr(            10000000.4999999)) <>       10000000 or
4892        round(floatExpr(            10000000.5)) <>             10000001 or
4893        round(floatExpr(            99999999.499999)) <>        99999999 or
4894        round(floatExpr(            99999999.5)) <>            100000000 or
4895        round(floatExpr(           100000000.0)) <>            100000000 or
4896        round(floatExpr(           100000000.499999)) <>       100000000 or
4897        round(floatExpr(           100000000.5)) <>            100000001 or
4898        round(floatExpr(           999999999.49999)) <>        999999999 or
4899        round(floatExpr(           999999999.5)) <>           1000000000 or
4900        round(floatExpr(          1000000000.0)) <>           1000000000 or
4901        round(floatExpr(          1000000000.49999)) <>       1000000000 or
4902        round(floatExpr(          1000000000.5)) <>           1000000001 or
4903        round(floatExpr(          9999999999.4999)) <>        9999999999 or
4904        round(floatExpr(          9999999999.5)) <>          10000000000 or
4905        round(floatExpr(         10000000000.0)) <>          10000000000 or
4906        round(floatExpr(         10000000000.4999)) <>       10000000000 or
4907        round(floatExpr(         10000000000.5)) <>          10000000001 or
4908        round(floatExpr(         99999999999.499)) <>        99999999999 or
4909        round(floatExpr(         99999999999.5)) <>         100000000000 or
4910        round(floatExpr(        100000000000.0)) <>         100000000000 or
4911        round(floatExpr(        100000000000.499)) <>       100000000000 or
4912        round(floatExpr(        100000000000.5)) <>         100000000001 or
4913        round(floatExpr(        999999999999.49)) <>        999999999999 or
4914        round(floatExpr(        999999999999.5)) <>        1000000000000 or
4915        round(floatExpr(       1000000000000.0)) <>        1000000000000 or
4916        round(floatExpr(       1000000000000.49)) <>       1000000000000 or
4917        round(floatExpr(       1000000000000.5)) <>        1000000000001 or
4918        round(floatExpr(    9007199254740990.0)) <>     9007199254740990 or
4919        round(floatExpr(  576460752303423488.0)) <>   576460752303423488 or
4920        round(floatExpr( 1152921504606846976.0)) <>  1152921504606846976 or
4921        round(floatExpr( 2305843009213693952.0)) <>  2305843009213693952 or
4922        round(floatExpr( 4611686018427387904.0)) <>  4611686018427387904 or
4923        round(floatExpr( 9223372036854773760.0)) <>  9223372036854773760 or
4924        round(floatExpr( 9223372036854774784.0)) <>  9223372036854774784 or
4925        not raisesRangeError(round(floatExpr( 9223372036854775807.0))) and
4926                             round(floatExpr( 9223372036854775807.0)) <> 9223372036854775807 or
4927        not raisesRangeError(round(floatExpr( 9223372036854777856.0))) or
4928        not raisesRangeError(round(floatExpr(              1.0e37  ))) or
4929        not raisesRangeError(round(floatExpr(           FLOAT_MAX  ))) or
4930        not raisesRangeError(round(floatExpr(            Infinity  ))) or
4931        not raisesRangeError(round(floatExpr(                 NaN  ))) then
4932      writeln(" ***** Rounding of float does not work correct. (2)");
4933      okay := FALSE;
4934    end if;
4935
4936    if okay then
4937      writeln("Rounding of float works correct.");
4938    else
4939      writeln(" ***** Rounding of float does not work correct.");
4940    end if;
4941  end func;
4942
4943
4944const proc: check_add is func
4945  local
4946    var boolean: okay is TRUE;
4947    var boolean: ok is TRUE;
4948    var float: num is 0.0;
4949  begin
4950    if           0.0 +          0.0 <>          0.0 or
4951                 2.0 +          3.0 <>          5.0 or
4952               127.0 +        127.0 <>        254.0 or
4953               255.0 +        255.0 <>        510.0 or
4954             18341.0 +      26783.0 <>      45124.0 or
4955             32767.0 +      32767.0 <>      65534.0 or
4956             35759.0 +      58537.0 <>      94296.0 or
4957             65535.0 +      65535.0 <>     131070.0 or
4958             73819.0 +     124303.0 <>     198122.0 or
4959        2147483647.0 +          0.0 <> 2147483647.0 or
4960                 0.0 + 2147483647.0 <> 2147483647.0 or
4961                 0.1 +          0.0 <>          0.1 or
4962                 0.0 +          0.1 <>          0.1 or
4963                 2.3 +          3.2 <>          5.5 or
4964             390.625 +     195.3125 <>     585.9375 or
4965             0.78125 +      0.15625 <>       0.9375 then
4966      writeln(" ***** Addition with selected values does not work correct.");
4967      okay := FALSE;
4968    end if;
4969
4970    num :=          0.0; num +:=          0.0; ok := ok and num =          0.0;
4971    num :=          2.0; num +:=          3.0; ok := ok and num =          5.0;
4972    num :=        127.0; num +:=        127.0; ok := ok and num =        254.0;
4973    num :=        255.0; num +:=        255.0; ok := ok and num =        510.0;
4974    num :=      18341.0; num +:=      26783.0; ok := ok and num =      45124.0;
4975    num :=      32767.0; num +:=      32767.0; ok := ok and num =      65534.0;
4976    num :=      35759.0; num +:=      58537.0; ok := ok and num =      94296.0;
4977    num :=      65535.0; num +:=      65535.0; ok := ok and num =     131070.0;
4978    num :=      73819.0; num +:=     124303.0; ok := ok and num =     198122.0;
4979    num := 2147483647.0; num +:=          0.0; ok := ok and num = 2147483647.0;
4980    num :=          0.0; num +:= 2147483647.0; ok := ok and num = 2147483647.0;
4981    num :=          0.1; num +:=          0.0; ok := ok and num =          0.1;
4982    num :=          0.0; num +:=          0.1; ok := ok and num =          0.1;
4983    num :=          2.3; num +:=          3.2; ok := ok and num =          5.5;
4984    num :=      390.625; num +:=     195.3125; ok := ok and num =     585.9375;
4985    num :=      0.78125; num +:=      0.15625; ok := ok and num =       0.9375;
4986    if not ok then
4987      writeln(" ***** Addition assignment with selected values does not work correct.");
4988      okay := FALSE;
4989    end if;
4990
4991    if okay then
4992      writeln("Addition works correct for selected values.");
4993    else
4994      writeln(" ***** Addition does not work correct.");
4995    end if;
4996  end func;
4997
4998
4999const proc: check_mult is func
5000  local
5001    var boolean: okay is TRUE;
5002  begin
5003    if 123.0 * 0.0 **       integer.first  <> Infinity or
5004       123.0 * 0.0 **        (-2147483649) <> Infinity or
5005       123.0 * 0.0 **        (-2147483648) <> Infinity or
5006       123.0 * 0.0 **             (-32769) <> Infinity or
5007       123.0 * 0.0 **             (-32768) <> Infinity or
5008       123.0 * 0.0 **               (-100) <> Infinity or
5009       123.0 * 0.0 **                 (-4) <> Infinity or
5010       123.0 * 0.0 **                 (-3) <> Infinity or
5011       123.0 * 0.0 **                 (-2) <> Infinity or
5012       123.0 * 0.0 **                 (-1) <> Infinity or
5013       123.0 * 0.0 **                   0  <>    123.0 or
5014       123.0 * 0.0 **                   1  <>      0.0 or
5015       123.0 * 0.0 **                   2  <>      0.0 or
5016       123.0 * 0.0 **                   3  <>      0.0 or
5017       123.0 * 0.0 **                   4  <>      0.0 or
5018       123.0 * 0.0 **                 100  <>      0.0 or
5019       123.0 * 0.0 **               32767  <>      0.0 or
5020       123.0 * 0.0 **               32768  <>      0.0 or
5021       123.0 * 0.0 **          2147483647  <>      0.0 or
5022       123.0 * 0.0 **          2147483648  <>      0.0 or
5023       123.0 * 0.0 ** 9223372036854775807  <>      0.0 or
5024       123.0 * 1.0 **       integer.first  <>    123.0 or
5025       123.0 * 1.0 **        (-2147483649) <>    123.0 or
5026       123.0 * 1.0 **        (-2147483648) <>    123.0 or
5027       123.0 * 1.0 **             (-32769) <>    123.0 or
5028       123.0 * 1.0 **             (-32768) <>    123.0 or
5029       123.0 * 1.0 **               (-100) <>    123.0 or
5030       123.0 * 1.0 **                 (-4) <>    123.0 or
5031       123.0 * 1.0 **                 (-3) <>    123.0 or
5032       123.0 * 1.0 **                 (-2) <>    123.0 or
5033       123.0 * 1.0 **                 (-1) <>    123.0 or
5034       123.0 * 1.0 **                   0  <>    123.0 or
5035       123.0 * 1.0 **                   1  <>    123.0 or
5036       123.0 * 1.0 **                   2  <>    123.0 or
5037       123.0 * 1.0 **                   3  <>    123.0 or
5038       123.0 * 1.0 **                   4  <>    123.0 or
5039       123.0 * 1.0 **                 100  <>    123.0 or
5040       123.0 * 1.0 **               32767  <>    123.0 or
5041       123.0 * 1.0 **               32768  <>    123.0 or
5042       123.0 * 1.0 **          2147483647  <>    123.0 or
5043       123.0 * 1.0 **          2147483648  <>    123.0 or
5044       123.0 * 1.0 ** 9223372036854775807  <>    123.0 or
5045       123.0 * 2.0 **       integer.first  <>                  0.0 or
5046       123.0 * 2.0 **        (-2147483649) <>                  0.0 or
5047       123.0 * 2.0 **        (-2147483648) <>                  0.0 or
5048       123.0 * 2.0 **             (-32769) <>                  0.0 or
5049       123.0 * 2.0 **             (-32768) <>                  0.0 or
5050       123.0 * 2.0 **               (-150) <>                  8.6179855555976250e-44 or
5051       123.0 * 2.0 **               (-100) <>                  9.7029891342184452e-29 or
5052       123.0 * 2.0 **                (-50) <>                  1.0924594562311540e-13 or
5053       123.0 * 2.0 **                (-40) <>                  1.1186784831807017e-10 or
5054       123.0 * 2.0 **                (-30) <>                  1.1455267667770386e-07 or
5055       123.0 * 2.0 **                (-20) <>                  1.1730194091796875e-04 or
5056       123.0 * 2.0 **                (-10) <>                  0.1201171875 or
5057       123.0 * 2.0 **                 (-4) <>                  7.6875 or
5058       123.0 * 2.0 **                 (-3) <>                 15.375 or
5059       123.0 * 2.0 **                 (-2) <>                 30.75 or
5060       123.0 * 2.0 **                 (-1) <>                 61.5 or
5061       123.0 * 2.0 **                   0  <>                123.0 or
5062       123.0 * 2.0 **                   1  <>                246.0 or
5063       123.0 * 2.0 **                   2  <>                492.0 or
5064       123.0 * 2.0 **                   3  <>                984.0 or
5065       123.0 * 2.0 **                   4  <>               1968.0 or
5066       123.0 * 2.0 **                  10  <>             125952.0 or
5067       123.0 * 2.0 **                  20  <>          128974848.0 or
5068       123.0 * 2.0 **                  30  <>       132070244352.0 or
5069       123.0 * 2.0 **                  40  <>    135239930216448.0 or
5070       123.0 * 2.0 **                  50  <> 138485688541642752.0 or
5071       123.0 * 2.0 **                 100  <>                  1.5592102382807222e+32 or
5072       123.0 * 2.0 **                 150  <>                  1.7555146620283307e+47 or
5073       123.0 * 2.0 **               32767  <>             Infinity or
5074       123.0 * 2.0 **               32768  <>             Infinity or
5075       123.0 * 2.0 **          2147483647  <>             Infinity or
5076       123.0 * 2.0 **          2147483648  <>             Infinity or
5077       123.0 * 2.0 ** 9223372036854775807  <>             Infinity or
5078       123.0 * 4.0 **       integer.first  <>                  0.0 or
5079       123.0 * 4.0 **        (-2147483649) <>                  0.0 or
5080       123.0 * 4.0 **        (-2147483648) <>                  0.0 or
5081       123.0 * 4.0 **             (-32769) <>                  0.0 or
5082       123.0 * 4.0 **             (-32768) <>                  0.0 or
5083       123.0 * 4.0 **               (-150) <>                  6.0381849623162037e-89 or
5084       123.0 * 4.0 **               (-100) <>                  7.6543087917692043e-59 or
5085       123.0 * 4.0 **                (-50) <>                  9.7029891342184452e-29 or
5086       123.0 * 4.0 **                (-40) <>                  1.0174321534402240e-22 or
5087       123.0 * 4.0 **                (-30) <>                  1.0668549377257364e-16 or
5088       123.0 * 4.0 **                (-20) <>                  1.1186784831807017e-10 or
5089       123.0 * 4.0 **                (-10) <>                  1.1730194091796875e-04 or
5090       123.0 * 4.0 **                 (-4) <>                  0.48046875 or
5091       123.0 * 4.0 **                 (-3) <>                  1.921875 or
5092       123.0 * 4.0 **                 (-2) <>                  7.6875 or
5093       123.0 * 4.0 **                 (-1) <>                 30.75 or
5094       123.0 * 4.0 **                   0  <>                123.0 or
5095       123.0 * 4.0 **                   1  <>                492.0 or
5096       123.0 * 4.0 **                   2  <>               1968.0 or
5097       123.0 * 4.0 **                   3  <>               7872.0 or
5098       123.0 * 4.0 **                   4  <>              31488.0 or
5099       123.0 * 4.0 **                  10  <>          128974848.0 or
5100       123.0 * 4.0 **                  20  <>    135239930216448.0 or
5101       123.0 * 4.0 **                  30  <>                  1.4180934506664218e+20 or
5102       123.0 * 4.0 **                  40  <>                  1.4869787581259939e+26 or
5103       123.0 * 4.0 **                  50  <>                  1.5592102382807222e+32 or
5104       123.0 * 4.0 **                 100  <>                  1.9765337944385580e+62 or
5105       123.0 * 4.0 **                 150  <>                  2.5055542508914179e+92 or
5106       123.0 * 4.0 **               32767  <>             Infinity or
5107       123.0 * 4.0 **               32768  <>             Infinity or
5108       123.0 * 4.0 **          2147483647  <>             Infinity or
5109       123.0 * 4.0 **          2147483648  <>             Infinity or
5110       123.0 * 4.0 ** 9223372036854775807  <>             Infinity then
5111      writeln(" ***** Multiplication A * B ** C does not work correct. (1)");
5112      okay := FALSE;
5113    end if;
5114
5115    if 123.0 * 0.0 ** intExpr(      integer.first) <> Infinity or
5116       123.0 * 0.0 ** intExpr(        -2147483649) <> Infinity or
5117       123.0 * 0.0 ** intExpr(        -2147483648) <> Infinity or
5118       123.0 * 0.0 ** intExpr(             -32769) <> Infinity or
5119       123.0 * 0.0 ** intExpr(             -32768) <> Infinity or
5120       123.0 * 0.0 ** intExpr(               -100) <> Infinity or
5121       123.0 * 0.0 ** intExpr(                 -4) <> Infinity or
5122       123.0 * 0.0 ** intExpr(                 -3) <> Infinity or
5123       123.0 * 0.0 ** intExpr(                 -2) <> Infinity or
5124       123.0 * 0.0 ** intExpr(                 -1) <> Infinity or
5125       123.0 * 0.0 ** intExpr(                  0) <>    123.0 or
5126       123.0 * 0.0 ** intExpr(                  1) <>      0.0 or
5127       123.0 * 0.0 ** intExpr(                  2) <>      0.0 or
5128       123.0 * 0.0 ** intExpr(                  3) <>      0.0 or
5129       123.0 * 0.0 ** intExpr(                  4) <>      0.0 or
5130       123.0 * 0.0 ** intExpr(                100) <>      0.0 or
5131       123.0 * 0.0 ** intExpr(              32767) <>      0.0 or
5132       123.0 * 0.0 ** intExpr(              32768) <>      0.0 or
5133       123.0 * 0.0 ** intExpr(         2147483647) <>      0.0 or
5134       123.0 * 0.0 ** intExpr(         2147483648) <>      0.0 or
5135       123.0 * 0.0 ** intExpr(9223372036854775807) <>      0.0 or
5136       123.0 * 1.0 ** intExpr(      integer.first) <>    123.0 or
5137       123.0 * 1.0 ** intExpr(        -2147483649) <>    123.0 or
5138       123.0 * 1.0 ** intExpr(        -2147483648) <>    123.0 or
5139       123.0 * 1.0 ** intExpr(             -32769) <>    123.0 or
5140       123.0 * 1.0 ** intExpr(             -32768) <>    123.0 or
5141       123.0 * 1.0 ** intExpr(               -100) <>    123.0 or
5142       123.0 * 1.0 ** intExpr(                 -4) <>    123.0 or
5143       123.0 * 1.0 ** intExpr(                 -3) <>    123.0 or
5144       123.0 * 1.0 ** intExpr(                 -2) <>    123.0 or
5145       123.0 * 1.0 ** intExpr(                 -1) <>    123.0 or
5146       123.0 * 1.0 ** intExpr(                  0) <>    123.0 or
5147       123.0 * 1.0 ** intExpr(                  1) <>    123.0 or
5148       123.0 * 1.0 ** intExpr(                  2) <>    123.0 or
5149       123.0 * 1.0 ** intExpr(                  3) <>    123.0 or
5150       123.0 * 1.0 ** intExpr(                  4) <>    123.0 or
5151       123.0 * 1.0 ** intExpr(                100) <>    123.0 or
5152       123.0 * 1.0 ** intExpr(              32767) <>    123.0 or
5153       123.0 * 1.0 ** intExpr(              32768) <>    123.0 or
5154       123.0 * 1.0 ** intExpr(         2147483647) <>    123.0 or
5155       123.0 * 1.0 ** intExpr(         2147483648) <>    123.0 or
5156       123.0 * 1.0 ** intExpr(9223372036854775807) <>    123.0 or
5157       123.0 * 2.0 ** intExpr(      integer.first) <>                  0.0 or
5158       123.0 * 2.0 ** intExpr(        -2147483649) <>                  0.0 or
5159       123.0 * 2.0 ** intExpr(        -2147483648) <>                  0.0 or
5160       123.0 * 2.0 ** intExpr(             -32769) <>                  0.0 or
5161       123.0 * 2.0 ** intExpr(             -32768) <>                  0.0 or
5162       123.0 * 2.0 ** intExpr(               -150) <>                  8.6179855555976250e-44 or
5163       123.0 * 2.0 ** intExpr(               -100) <>                  9.7029891342184452e-29 or
5164       123.0 * 2.0 ** intExpr(                -50) <>                  1.0924594562311540e-13 or
5165       123.0 * 2.0 ** intExpr(                -40) <>                  1.1186784831807017e-10 or
5166       123.0 * 2.0 ** intExpr(                -30) <>                  1.1455267667770386e-07 or
5167       123.0 * 2.0 ** intExpr(                -20) <>                  1.1730194091796875e-04 or
5168       123.0 * 2.0 ** intExpr(                -10) <>                  0.1201171875 or
5169       123.0 * 2.0 ** intExpr(                 -4) <>                  7.6875 or
5170       123.0 * 2.0 ** intExpr(                 -3) <>                 15.375 or
5171       123.0 * 2.0 ** intExpr(                 -2) <>                 30.75 or
5172       123.0 * 2.0 ** intExpr(                 -1) <>                 61.5 or
5173       123.0 * 2.0 ** intExpr(                  0) <>                123.0 or
5174       123.0 * 2.0 ** intExpr(                  1) <>                246.0 or
5175       123.0 * 2.0 ** intExpr(                  2) <>                492.0 or
5176       123.0 * 2.0 ** intExpr(                  3) <>                984.0 or
5177       123.0 * 2.0 ** intExpr(                  4) <>               1968.0 or
5178       123.0 * 2.0 ** intExpr(                 10) <>             125952.0 or
5179       123.0 * 2.0 ** intExpr(                 20) <>          128974848.0 or
5180       123.0 * 2.0 ** intExpr(                 30) <>       132070244352.0 or
5181       123.0 * 2.0 ** intExpr(                 40) <>    135239930216448.0 or
5182       123.0 * 2.0 ** intExpr(                 50) <> 138485688541642752.0 or
5183       123.0 * 2.0 ** intExpr(                100) <>                  1.5592102382807222e+32 or
5184       123.0 * 2.0 ** intExpr(                150) <>                  1.7555146620283307e+47 or
5185       123.0 * 2.0 ** intExpr(              32767) <>             Infinity or
5186       123.0 * 2.0 ** intExpr(              32768) <>             Infinity or
5187       123.0 * 2.0 ** intExpr(         2147483647) <>             Infinity or
5188       123.0 * 2.0 ** intExpr(         2147483648) <>             Infinity or
5189       123.0 * 2.0 ** intExpr(9223372036854775807) <>             Infinity or
5190       123.0 * 4.0 ** intExpr(      integer.first) <>                  0.0 or
5191       123.0 * 4.0 ** intExpr(        -2147483649) <>                  0.0 or
5192       123.0 * 4.0 ** intExpr(        -2147483648) <>                  0.0 or
5193       123.0 * 4.0 ** intExpr(             -32769) <>                  0.0 or
5194       123.0 * 4.0 ** intExpr(             -32768) <>                  0.0 or
5195       123.0 * 4.0 ** intExpr(               -150) <>                  6.0381849623162037e-89 or
5196       123.0 * 4.0 ** intExpr(               -100) <>                  7.6543087917692043e-59 or
5197       123.0 * 4.0 ** intExpr(                -50) <>                  9.7029891342184452e-29 or
5198       123.0 * 4.0 ** intExpr(                -40) <>                  1.0174321534402240e-22 or
5199       123.0 * 4.0 ** intExpr(                -30) <>                  1.0668549377257364e-16 or
5200       123.0 * 4.0 ** intExpr(                -20) <>                  1.1186784831807017e-10 or
5201       123.0 * 4.0 ** intExpr(                -10) <>                  1.1730194091796875e-04 or
5202       123.0 * 4.0 ** intExpr(                 -4) <>                  0.48046875 or
5203       123.0 * 4.0 ** intExpr(                 -3) <>                  1.921875 or
5204       123.0 * 4.0 ** intExpr(                 -2) <>                  7.6875 or
5205       123.0 * 4.0 ** intExpr(                 -1) <>                 30.75 or
5206       123.0 * 4.0 ** intExpr(                  0) <>                123.0 or
5207       123.0 * 4.0 ** intExpr(                  1) <>                492.0 or
5208       123.0 * 4.0 ** intExpr(                  2) <>               1968.0 or
5209       123.0 * 4.0 ** intExpr(                  3) <>               7872.0 or
5210       123.0 * 4.0 ** intExpr(                  4) <>              31488.0 or
5211       123.0 * 4.0 ** intExpr(                 10) <>          128974848.0 or
5212       123.0 * 4.0 ** intExpr(                 20) <>    135239930216448.0 or
5213       123.0 * 4.0 ** intExpr(                 30) <>                  1.4180934506664218e+20 or
5214       123.0 * 4.0 ** intExpr(                 40) <>                  1.4869787581259939e+26 or
5215       123.0 * 4.0 ** intExpr(                 50) <>                  1.5592102382807222e+32 or
5216       123.0 * 4.0 ** intExpr(                100) <>                  1.9765337944385580e+62 or
5217       123.0 * 4.0 ** intExpr(                150) <>                  2.5055542508914179e+92 or
5218       123.0 * 4.0 ** intExpr(              32767) <>             Infinity or
5219       123.0 * 4.0 ** intExpr(              32768) <>             Infinity or
5220       123.0 * 4.0 ** intExpr(         2147483647) <>             Infinity or
5221       123.0 * 4.0 ** intExpr(         2147483648) <>             Infinity or
5222       123.0 * 4.0 ** intExpr(9223372036854775807) <>             Infinity then
5223      writeln(" ***** Multiplication A * B ** C does not work correct. (2)");
5224      okay := FALSE;
5225    end if;
5226
5227    if floatExpr(123.0) * 0.0 **       integer.first  <> Infinity or
5228       floatExpr(123.0) * 0.0 **        (-2147483649) <> Infinity or
5229       floatExpr(123.0) * 0.0 **        (-2147483648) <> Infinity or
5230       floatExpr(123.0) * 0.0 **             (-32769) <> Infinity or
5231       floatExpr(123.0) * 0.0 **             (-32768) <> Infinity or
5232       floatExpr(123.0) * 0.0 **               (-100) <> Infinity or
5233       floatExpr(123.0) * 0.0 **                 (-4) <> Infinity or
5234       floatExpr(123.0) * 0.0 **                 (-3) <> Infinity or
5235       floatExpr(123.0) * 0.0 **                 (-2) <> Infinity or
5236       floatExpr(123.0) * 0.0 **                 (-1) <> Infinity or
5237       floatExpr(123.0) * 0.0 **                   0  <>    123.0 or
5238       floatExpr(123.0) * 0.0 **                   1  <>      0.0 or
5239       floatExpr(123.0) * 0.0 **                   2  <>      0.0 or
5240       floatExpr(123.0) * 0.0 **                   3  <>      0.0 or
5241       floatExpr(123.0) * 0.0 **                   4  <>      0.0 or
5242       floatExpr(123.0) * 0.0 **                 100  <>      0.0 or
5243       floatExpr(123.0) * 0.0 **               32767  <>      0.0 or
5244       floatExpr(123.0) * 0.0 **               32768  <>      0.0 or
5245       floatExpr(123.0) * 0.0 **          2147483647  <>      0.0 or
5246       floatExpr(123.0) * 0.0 **          2147483648  <>      0.0 or
5247       floatExpr(123.0) * 0.0 ** 9223372036854775807  <>      0.0 or
5248       floatExpr(123.0) * 1.0 **       integer.first  <>    123.0 or
5249       floatExpr(123.0) * 1.0 **        (-2147483649) <>    123.0 or
5250       floatExpr(123.0) * 1.0 **        (-2147483648) <>    123.0 or
5251       floatExpr(123.0) * 1.0 **             (-32769) <>    123.0 or
5252       floatExpr(123.0) * 1.0 **             (-32768) <>    123.0 or
5253       floatExpr(123.0) * 1.0 **               (-100) <>    123.0 or
5254       floatExpr(123.0) * 1.0 **                 (-4) <>    123.0 or
5255       floatExpr(123.0) * 1.0 **                 (-3) <>    123.0 or
5256       floatExpr(123.0) * 1.0 **                 (-2) <>    123.0 or
5257       floatExpr(123.0) * 1.0 **                 (-1) <>    123.0 or
5258       floatExpr(123.0) * 1.0 **                   0  <>    123.0 or
5259       floatExpr(123.0) * 1.0 **                   1  <>    123.0 or
5260       floatExpr(123.0) * 1.0 **                   2  <>    123.0 or
5261       floatExpr(123.0) * 1.0 **                   3  <>    123.0 or
5262       floatExpr(123.0) * 1.0 **                   4  <>    123.0 or
5263       floatExpr(123.0) * 1.0 **                 100  <>    123.0 or
5264       floatExpr(123.0) * 1.0 **               32767  <>    123.0 or
5265       floatExpr(123.0) * 1.0 **               32768  <>    123.0 or
5266       floatExpr(123.0) * 1.0 **          2147483647  <>    123.0 or
5267       floatExpr(123.0) * 1.0 **          2147483648  <>    123.0 or
5268       floatExpr(123.0) * 1.0 ** 9223372036854775807  <>    123.0 or
5269       floatExpr(123.0) * 2.0 **       integer.first  <>                  0.0 or
5270       floatExpr(123.0) * 2.0 **        (-2147483649) <>                  0.0 or
5271       floatExpr(123.0) * 2.0 **        (-2147483648) <>                  0.0 or
5272       floatExpr(123.0) * 2.0 **             (-32769) <>                  0.0 or
5273       floatExpr(123.0) * 2.0 **             (-32768) <>                  0.0 or
5274       floatExpr(123.0) * 2.0 **               (-150) <>                  8.6179855555976250e-44 or
5275       floatExpr(123.0) * 2.0 **               (-100) <>                  9.7029891342184452e-29 or
5276       floatExpr(123.0) * 2.0 **                (-50) <>                  1.0924594562311540e-13 or
5277       floatExpr(123.0) * 2.0 **                (-40) <>                  1.1186784831807017e-10 or
5278       floatExpr(123.0) * 2.0 **                (-30) <>                  1.1455267667770386e-07 or
5279       floatExpr(123.0) * 2.0 **                (-20) <>                  1.1730194091796875e-04 or
5280       floatExpr(123.0) * 2.0 **                (-10) <>                  0.1201171875 or
5281       floatExpr(123.0) * 2.0 **                 (-4) <>                  7.6875 or
5282       floatExpr(123.0) * 2.0 **                 (-3) <>                 15.375 or
5283       floatExpr(123.0) * 2.0 **                 (-2) <>                 30.75 or
5284       floatExpr(123.0) * 2.0 **                 (-1) <>                 61.5 or
5285       floatExpr(123.0) * 2.0 **                   0  <>                123.0 or
5286       floatExpr(123.0) * 2.0 **                   1  <>                246.0 or
5287       floatExpr(123.0) * 2.0 **                   2  <>                492.0 or
5288       floatExpr(123.0) * 2.0 **                   3  <>                984.0 or
5289       floatExpr(123.0) * 2.0 **                   4  <>               1968.0 or
5290       floatExpr(123.0) * 2.0 **                  10  <>             125952.0 or
5291       floatExpr(123.0) * 2.0 **                  20  <>          128974848.0 or
5292       floatExpr(123.0) * 2.0 **                  30  <>       132070244352.0 or
5293       floatExpr(123.0) * 2.0 **                  40  <>    135239930216448.0 or
5294       floatExpr(123.0) * 2.0 **                  50  <> 138485688541642752.0 or
5295       floatExpr(123.0) * 2.0 **                 100  <>                  1.5592102382807222e+32 or
5296       floatExpr(123.0) * 2.0 **                 150  <>                  1.7555146620283307e+47 or
5297       floatExpr(123.0) * 2.0 **               32767  <>             Infinity or
5298       floatExpr(123.0) * 2.0 **               32768  <>             Infinity or
5299       floatExpr(123.0) * 2.0 **          2147483647  <>             Infinity or
5300       floatExpr(123.0) * 2.0 **          2147483648  <>             Infinity or
5301       floatExpr(123.0) * 2.0 ** 9223372036854775807  <>             Infinity or
5302       floatExpr(123.0) * 4.0 **       integer.first  <>                  0.0 or
5303       floatExpr(123.0) * 4.0 **        (-2147483649) <>                  0.0 or
5304       floatExpr(123.0) * 4.0 **        (-2147483648) <>                  0.0 or
5305       floatExpr(123.0) * 4.0 **             (-32769) <>                  0.0 or
5306       floatExpr(123.0) * 4.0 **             (-32768) <>                  0.0 or
5307       floatExpr(123.0) * 4.0 **               (-150) <>                  6.0381849623162037e-89 or
5308       floatExpr(123.0) * 4.0 **               (-100) <>                  7.6543087917692043e-59 or
5309       floatExpr(123.0) * 4.0 **                (-50) <>                  9.7029891342184452e-29 or
5310       floatExpr(123.0) * 4.0 **                (-40) <>                  1.0174321534402240e-22 or
5311       floatExpr(123.0) * 4.0 **                (-30) <>                  1.0668549377257364e-16 or
5312       floatExpr(123.0) * 4.0 **                (-20) <>                  1.1186784831807017e-10 or
5313       floatExpr(123.0) * 4.0 **                (-10) <>                  1.1730194091796875e-04 or
5314       floatExpr(123.0) * 4.0 **                 (-4) <>                  0.48046875 or
5315       floatExpr(123.0) * 4.0 **                 (-3) <>                  1.921875 or
5316       floatExpr(123.0) * 4.0 **                 (-2) <>                  7.6875 or
5317       floatExpr(123.0) * 4.0 **                 (-1) <>                 30.75 or
5318       floatExpr(123.0) * 4.0 **                   0  <>                123.0 or
5319       floatExpr(123.0) * 4.0 **                   1  <>                492.0 or
5320       floatExpr(123.0) * 4.0 **                   2  <>               1968.0 or
5321       floatExpr(123.0) * 4.0 **                   3  <>               7872.0 or
5322       floatExpr(123.0) * 4.0 **                   4  <>              31488.0 or
5323       floatExpr(123.0) * 4.0 **                  10  <>          128974848.0 or
5324       floatExpr(123.0) * 4.0 **                  20  <>    135239930216448.0 or
5325       floatExpr(123.0) * 4.0 **                  30  <>                  1.4180934506664218e+20 or
5326       floatExpr(123.0) * 4.0 **                  40  <>                  1.4869787581259939e+26 or
5327       floatExpr(123.0) * 4.0 **                  50  <>                  1.5592102382807222e+32 or
5328       floatExpr(123.0) * 4.0 **                 100  <>                  1.9765337944385580e+62 or
5329       floatExpr(123.0) * 4.0 **                 150  <>                  2.5055542508914179e+92 or
5330       floatExpr(123.0) * 4.0 **               32767  <>             Infinity or
5331       floatExpr(123.0) * 4.0 **               32768  <>             Infinity or
5332       floatExpr(123.0) * 4.0 **          2147483647  <>             Infinity or
5333       floatExpr(123.0) * 4.0 **          2147483648  <>             Infinity or
5334       floatExpr(123.0) * 4.0 ** 9223372036854775807  <>             Infinity then
5335      writeln(" ***** Multiplication A * B ** C does not work correct. (3)");
5336      okay := FALSE;
5337    end if;
5338
5339    if floatExpr(123.0) * 0.0 ** intExpr(      integer.first) <> Infinity or
5340       floatExpr(123.0) * 0.0 ** intExpr(        -2147483649) <> Infinity or
5341       floatExpr(123.0) * 0.0 ** intExpr(        -2147483648) <> Infinity or
5342       floatExpr(123.0) * 0.0 ** intExpr(             -32769) <> Infinity or
5343       floatExpr(123.0) * 0.0 ** intExpr(             -32768) <> Infinity or
5344       floatExpr(123.0) * 0.0 ** intExpr(               -100) <> Infinity or
5345       floatExpr(123.0) * 0.0 ** intExpr(                 -4) <> Infinity or
5346       floatExpr(123.0) * 0.0 ** intExpr(                 -3) <> Infinity or
5347       floatExpr(123.0) * 0.0 ** intExpr(                 -2) <> Infinity or
5348       floatExpr(123.0) * 0.0 ** intExpr(                 -1) <> Infinity or
5349       floatExpr(123.0) * 0.0 ** intExpr(                  0) <>    123.0 or
5350       floatExpr(123.0) * 0.0 ** intExpr(                  1) <>      0.0 or
5351       floatExpr(123.0) * 0.0 ** intExpr(                  2) <>      0.0 or
5352       floatExpr(123.0) * 0.0 ** intExpr(                  3) <>      0.0 or
5353       floatExpr(123.0) * 0.0 ** intExpr(                  4) <>      0.0 or
5354       floatExpr(123.0) * 0.0 ** intExpr(                100) <>      0.0 or
5355       floatExpr(123.0) * 0.0 ** intExpr(              32767) <>      0.0 or
5356       floatExpr(123.0) * 0.0 ** intExpr(              32768) <>      0.0 or
5357       floatExpr(123.0) * 0.0 ** intExpr(         2147483647) <>      0.0 or
5358       floatExpr(123.0) * 0.0 ** intExpr(         2147483648) <>      0.0 or
5359       floatExpr(123.0) * 0.0 ** intExpr(9223372036854775807) <>      0.0 or
5360       floatExpr(123.0) * 1.0 ** intExpr(      integer.first) <>    123.0 or
5361       floatExpr(123.0) * 1.0 ** intExpr(        -2147483649) <>    123.0 or
5362       floatExpr(123.0) * 1.0 ** intExpr(        -2147483648) <>    123.0 or
5363       floatExpr(123.0) * 1.0 ** intExpr(             -32769) <>    123.0 or
5364       floatExpr(123.0) * 1.0 ** intExpr(             -32768) <>    123.0 or
5365       floatExpr(123.0) * 1.0 ** intExpr(               -100) <>    123.0 or
5366       floatExpr(123.0) * 1.0 ** intExpr(                 -4) <>    123.0 or
5367       floatExpr(123.0) * 1.0 ** intExpr(                 -3) <>    123.0 or
5368       floatExpr(123.0) * 1.0 ** intExpr(                 -2) <>    123.0 or
5369       floatExpr(123.0) * 1.0 ** intExpr(                 -1) <>    123.0 or
5370       floatExpr(123.0) * 1.0 ** intExpr(                  0) <>    123.0 or
5371       floatExpr(123.0) * 1.0 ** intExpr(                  1) <>    123.0 or
5372       floatExpr(123.0) * 1.0 ** intExpr(                  2) <>    123.0 or
5373       floatExpr(123.0) * 1.0 ** intExpr(                  3) <>    123.0 or
5374       floatExpr(123.0) * 1.0 ** intExpr(                  4) <>    123.0 or
5375       floatExpr(123.0) * 1.0 ** intExpr(                100) <>    123.0 or
5376       floatExpr(123.0) * 1.0 ** intExpr(              32767) <>    123.0 or
5377       floatExpr(123.0) * 1.0 ** intExpr(              32768) <>    123.0 or
5378       floatExpr(123.0) * 1.0 ** intExpr(         2147483647) <>    123.0 or
5379       floatExpr(123.0) * 1.0 ** intExpr(         2147483648) <>    123.0 or
5380       floatExpr(123.0) * 1.0 ** intExpr(9223372036854775807) <>    123.0 or
5381       floatExpr(123.0) * 2.0 ** intExpr(      integer.first) <>                  0.0 or
5382       floatExpr(123.0) * 2.0 ** intExpr(        -2147483649) <>                  0.0 or
5383       floatExpr(123.0) * 2.0 ** intExpr(        -2147483648) <>                  0.0 or
5384       floatExpr(123.0) * 2.0 ** intExpr(             -32769) <>                  0.0 or
5385       floatExpr(123.0) * 2.0 ** intExpr(             -32768) <>                  0.0 or
5386       floatExpr(123.0) * 2.0 ** intExpr(               -150) <>                  8.6179855555976250e-44 or
5387       floatExpr(123.0) * 2.0 ** intExpr(               -100) <>                  9.7029891342184452e-29 or
5388       floatExpr(123.0) * 2.0 ** intExpr(                -50) <>                  1.0924594562311540e-13 or
5389       floatExpr(123.0) * 2.0 ** intExpr(                -40) <>                  1.1186784831807017e-10 or
5390       floatExpr(123.0) * 2.0 ** intExpr(                -30) <>                  1.1455267667770386e-07 or
5391       floatExpr(123.0) * 2.0 ** intExpr(                -20) <>                  1.1730194091796875e-04 or
5392       floatExpr(123.0) * 2.0 ** intExpr(                -10) <>                  0.1201171875 or
5393       floatExpr(123.0) * 2.0 ** intExpr(                 -4) <>                  7.6875 or
5394       floatExpr(123.0) * 2.0 ** intExpr(                 -3) <>                 15.375 or
5395       floatExpr(123.0) * 2.0 ** intExpr(                 -2) <>                 30.75 or
5396       floatExpr(123.0) * 2.0 ** intExpr(                 -1) <>                 61.5 or
5397       floatExpr(123.0) * 2.0 ** intExpr(                  0) <>                123.0 or
5398       floatExpr(123.0) * 2.0 ** intExpr(                  1) <>                246.0 or
5399       floatExpr(123.0) * 2.0 ** intExpr(                  2) <>                492.0 or
5400       floatExpr(123.0) * 2.0 ** intExpr(                  3) <>                984.0 or
5401       floatExpr(123.0) * 2.0 ** intExpr(                  4) <>               1968.0 or
5402       floatExpr(123.0) * 2.0 ** intExpr(                 10) <>             125952.0 or
5403       floatExpr(123.0) * 2.0 ** intExpr(                 20) <>          128974848.0 or
5404       floatExpr(123.0) * 2.0 ** intExpr(                 30) <>       132070244352.0 or
5405       floatExpr(123.0) * 2.0 ** intExpr(                 40) <>    135239930216448.0 or
5406       floatExpr(123.0) * 2.0 ** intExpr(                 50) <> 138485688541642752.0 or
5407       floatExpr(123.0) * 2.0 ** intExpr(                100) <>                  1.5592102382807222e+32 or
5408       floatExpr(123.0) * 2.0 ** intExpr(                150) <>                  1.7555146620283307e+47 or
5409       floatExpr(123.0) * 2.0 ** intExpr(              32767) <>             Infinity or
5410       floatExpr(123.0) * 2.0 ** intExpr(              32768) <>             Infinity or
5411       floatExpr(123.0) * 2.0 ** intExpr(         2147483647) <>             Infinity or
5412       floatExpr(123.0) * 2.0 ** intExpr(         2147483648) <>             Infinity or
5413       floatExpr(123.0) * 2.0 ** intExpr(9223372036854775807) <>             Infinity or
5414       floatExpr(123.0) * 4.0 ** intExpr(      integer.first) <>                  0.0 or
5415       floatExpr(123.0) * 4.0 ** intExpr(        -2147483649) <>                  0.0 or
5416       floatExpr(123.0) * 4.0 ** intExpr(        -2147483648) <>                  0.0 or
5417       floatExpr(123.0) * 4.0 ** intExpr(             -32769) <>                  0.0 or
5418       floatExpr(123.0) * 4.0 ** intExpr(             -32768) <>                  0.0 or
5419       floatExpr(123.0) * 4.0 ** intExpr(               -150) <>                  6.0381849623162037e-89 or
5420       floatExpr(123.0) * 4.0 ** intExpr(               -100) <>                  7.6543087917692043e-59 or
5421       floatExpr(123.0) * 4.0 ** intExpr(                -50) <>                  9.7029891342184452e-29 or
5422       floatExpr(123.0) * 4.0 ** intExpr(                -40) <>                  1.0174321534402240e-22 or
5423       floatExpr(123.0) * 4.0 ** intExpr(                -30) <>                  1.0668549377257364e-16 or
5424       floatExpr(123.0) * 4.0 ** intExpr(                -20) <>                  1.1186784831807017e-10 or
5425       floatExpr(123.0) * 4.0 ** intExpr(                -10) <>                  1.1730194091796875e-04 or
5426       floatExpr(123.0) * 4.0 ** intExpr(                 -4) <>                  0.48046875 or
5427       floatExpr(123.0) * 4.0 ** intExpr(                 -3) <>                  1.921875 or
5428       floatExpr(123.0) * 4.0 ** intExpr(                 -2) <>                  7.6875 or
5429       floatExpr(123.0) * 4.0 ** intExpr(                 -1) <>                 30.75 or
5430       floatExpr(123.0) * 4.0 ** intExpr(                  0) <>                123.0 or
5431       floatExpr(123.0) * 4.0 ** intExpr(                  1) <>                492.0 or
5432       floatExpr(123.0) * 4.0 ** intExpr(                  2) <>               1968.0 or
5433       floatExpr(123.0) * 4.0 ** intExpr(                  3) <>               7872.0 or
5434       floatExpr(123.0) * 4.0 ** intExpr(                  4) <>              31488.0 or
5435       floatExpr(123.0) * 4.0 ** intExpr(                 10) <>          128974848.0 or
5436       floatExpr(123.0) * 4.0 ** intExpr(                 20) <>    135239930216448.0 or
5437       floatExpr(123.0) * 4.0 ** intExpr(                 30) <>                  1.4180934506664218e+20 or
5438       floatExpr(123.0) * 4.0 ** intExpr(                 40) <>                  1.4869787581259939e+26 or
5439       floatExpr(123.0) * 4.0 ** intExpr(                 50) <>                  1.5592102382807222e+32 or
5440       floatExpr(123.0) * 4.0 ** intExpr(                100) <>                  1.9765337944385580e+62 or
5441       floatExpr(123.0) * 4.0 ** intExpr(                150) <>                  2.5055542508914179e+92 or
5442       floatExpr(123.0) * 4.0 ** intExpr(              32767) <>             Infinity or
5443       floatExpr(123.0) * 4.0 ** intExpr(              32768) <>             Infinity or
5444       floatExpr(123.0) * 4.0 ** intExpr(         2147483647) <>             Infinity or
5445       floatExpr(123.0) * 4.0 ** intExpr(         2147483648) <>             Infinity or
5446       floatExpr(123.0) * 4.0 ** intExpr(9223372036854775807) <>             Infinity then
5447      writeln(" ***** Multiplication A * B ** C does not work correct. (4)");
5448      okay := FALSE;
5449    end if;
5450
5451    if 123.0 * floatExpr(0.0) **       integer.first  <> Infinity or
5452       123.0 * floatExpr(0.0) **        (-2147483649) <> Infinity or
5453       123.0 * floatExpr(0.0) **        (-2147483648) <> Infinity or
5454       123.0 * floatExpr(0.0) **             (-32769) <> Infinity or
5455       123.0 * floatExpr(0.0) **             (-32768) <> Infinity or
5456       123.0 * floatExpr(0.0) **               (-100) <> Infinity or
5457       123.0 * floatExpr(0.0) **                 (-4) <> Infinity or
5458       123.0 * floatExpr(0.0) **                 (-3) <> Infinity or
5459       123.0 * floatExpr(0.0) **                 (-2) <> Infinity or
5460       123.0 * floatExpr(0.0) **                 (-1) <> Infinity or
5461       123.0 * floatExpr(0.0) **                   0  <>    123.0 or
5462       123.0 * floatExpr(0.0) **                   1  <>      0.0 or
5463       123.0 * floatExpr(0.0) **                   2  <>      0.0 or
5464       123.0 * floatExpr(0.0) **                   3  <>      0.0 or
5465       123.0 * floatExpr(0.0) **                   4  <>      0.0 or
5466       123.0 * floatExpr(0.0) **                 100  <>      0.0 or
5467       123.0 * floatExpr(0.0) **               32767  <>      0.0 or
5468       123.0 * floatExpr(0.0) **               32768  <>      0.0 or
5469       123.0 * floatExpr(0.0) **          2147483647  <>      0.0 or
5470       123.0 * floatExpr(0.0) **          2147483648  <>      0.0 or
5471       123.0 * floatExpr(0.0) ** 9223372036854775807  <>      0.0 or
5472       123.0 * floatExpr(1.0) **       integer.first  <>    123.0 or
5473       123.0 * floatExpr(1.0) **        (-2147483649) <>    123.0 or
5474       123.0 * floatExpr(1.0) **        (-2147483648) <>    123.0 or
5475       123.0 * floatExpr(1.0) **             (-32769) <>    123.0 or
5476       123.0 * floatExpr(1.0) **             (-32768) <>    123.0 or
5477       123.0 * floatExpr(1.0) **               (-100) <>    123.0 or
5478       123.0 * floatExpr(1.0) **                 (-4) <>    123.0 or
5479       123.0 * floatExpr(1.0) **                 (-3) <>    123.0 or
5480       123.0 * floatExpr(1.0) **                 (-2) <>    123.0 or
5481       123.0 * floatExpr(1.0) **                 (-1) <>    123.0 or
5482       123.0 * floatExpr(1.0) **                   0  <>    123.0 or
5483       123.0 * floatExpr(1.0) **                   1  <>    123.0 or
5484       123.0 * floatExpr(1.0) **                   2  <>    123.0 or
5485       123.0 * floatExpr(1.0) **                   3  <>    123.0 or
5486       123.0 * floatExpr(1.0) **                   4  <>    123.0 or
5487       123.0 * floatExpr(1.0) **                 100  <>    123.0 or
5488       123.0 * floatExpr(1.0) **               32767  <>    123.0 or
5489       123.0 * floatExpr(1.0) **               32768  <>    123.0 or
5490       123.0 * floatExpr(1.0) **          2147483647  <>    123.0 or
5491       123.0 * floatExpr(1.0) **          2147483648  <>    123.0 or
5492       123.0 * floatExpr(1.0) ** 9223372036854775807  <>    123.0 or
5493       123.0 * floatExpr(2.0) **       integer.first  <>                  0.0 or
5494       123.0 * floatExpr(2.0) **        (-2147483649) <>                  0.0 or
5495       123.0 * floatExpr(2.0) **        (-2147483648) <>                  0.0 or
5496       123.0 * floatExpr(2.0) **             (-32769) <>                  0.0 or
5497       123.0 * floatExpr(2.0) **             (-32768) <>                  0.0 or
5498       123.0 * floatExpr(2.0) **               (-150) <>                  8.6179855555976250e-44 or
5499       123.0 * floatExpr(2.0) **               (-100) <>                  9.7029891342184452e-29 or
5500       123.0 * floatExpr(2.0) **                (-50) <>                  1.0924594562311540e-13 or
5501       123.0 * floatExpr(2.0) **                (-40) <>                  1.1186784831807017e-10 or
5502       123.0 * floatExpr(2.0) **                (-30) <>                  1.1455267667770386e-07 or
5503       123.0 * floatExpr(2.0) **                (-20) <>                  1.1730194091796875e-04 or
5504       123.0 * floatExpr(2.0) **                (-10) <>                  0.1201171875 or
5505       123.0 * floatExpr(2.0) **                 (-4) <>                  7.6875 or
5506       123.0 * floatExpr(2.0) **                 (-3) <>                 15.375 or
5507       123.0 * floatExpr(2.0) **                 (-2) <>                 30.75 or
5508       123.0 * floatExpr(2.0) **                 (-1) <>                 61.5 or
5509       123.0 * floatExpr(2.0) **                   0  <>                123.0 or
5510       123.0 * floatExpr(2.0) **                   1  <>                246.0 or
5511       123.0 * floatExpr(2.0) **                   2  <>                492.0 or
5512       123.0 * floatExpr(2.0) **                   3  <>                984.0 or
5513       123.0 * floatExpr(2.0) **                   4  <>               1968.0 or
5514       123.0 * floatExpr(2.0) **                  10  <>             125952.0 or
5515       123.0 * floatExpr(2.0) **                  20  <>          128974848.0 or
5516       123.0 * floatExpr(2.0) **                  30  <>       132070244352.0 or
5517       123.0 * floatExpr(2.0) **                  40  <>    135239930216448.0 or
5518       123.0 * floatExpr(2.0) **                  50  <> 138485688541642752.0 or
5519       123.0 * floatExpr(2.0) **                 100  <>                  1.5592102382807222e+32 or
5520       123.0 * floatExpr(2.0) **                 150  <>                  1.7555146620283307e+47 or
5521       123.0 * floatExpr(2.0) **               32767  <>             Infinity or
5522       123.0 * floatExpr(2.0) **               32768  <>             Infinity or
5523       123.0 * floatExpr(2.0) **          2147483647  <>             Infinity or
5524       123.0 * floatExpr(2.0) **          2147483648  <>             Infinity or
5525       123.0 * floatExpr(2.0) ** 9223372036854775807  <>             Infinity or
5526       123.0 * floatExpr(4.0) **       integer.first  <>                  0.0 or
5527       123.0 * floatExpr(4.0) **        (-2147483649) <>                  0.0 or
5528       123.0 * floatExpr(4.0) **        (-2147483648) <>                  0.0 or
5529       123.0 * floatExpr(4.0) **             (-32769) <>                  0.0 or
5530       123.0 * floatExpr(4.0) **             (-32768) <>                  0.0 or
5531       123.0 * floatExpr(4.0) **               (-150) <>                  6.0381849623162037e-89 or
5532       123.0 * floatExpr(4.0) **               (-100) <>                  7.6543087917692043e-59 or
5533       123.0 * floatExpr(4.0) **                (-50) <>                  9.7029891342184452e-29 or
5534       123.0 * floatExpr(4.0) **                (-40) <>                  1.0174321534402240e-22 or
5535       123.0 * floatExpr(4.0) **                (-30) <>                  1.0668549377257364e-16 or
5536       123.0 * floatExpr(4.0) **                (-20) <>                  1.1186784831807017e-10 or
5537       123.0 * floatExpr(4.0) **                (-10) <>                  1.1730194091796875e-04 or
5538       123.0 * floatExpr(4.0) **                 (-4) <>                  0.48046875 or
5539       123.0 * floatExpr(4.0) **                 (-3) <>                  1.921875 or
5540       123.0 * floatExpr(4.0) **                 (-2) <>                  7.6875 or
5541       123.0 * floatExpr(4.0) **                 (-1) <>                 30.75 or
5542       123.0 * floatExpr(4.0) **                   0  <>                123.0 or
5543       123.0 * floatExpr(4.0) **                   1  <>                492.0 or
5544       123.0 * floatExpr(4.0) **                   2  <>               1968.0 or
5545       123.0 * floatExpr(4.0) **                   3  <>               7872.0 or
5546       123.0 * floatExpr(4.0) **                   4  <>              31488.0 or
5547       123.0 * floatExpr(4.0) **                  10  <>          128974848.0 or
5548       123.0 * floatExpr(4.0) **                  20  <>    135239930216448.0 or
5549       123.0 * floatExpr(4.0) **                  30  <>                  1.4180934506664218e+20 or
5550       123.0 * floatExpr(4.0) **                  40  <>                  1.4869787581259939e+26 or
5551       123.0 * floatExpr(4.0) **                  50  <>                  1.5592102382807222e+32 or
5552       123.0 * floatExpr(4.0) **                 100  <>                  1.9765337944385580e+62 or
5553       123.0 * floatExpr(4.0) **                 150  <>                  2.5055542508914179e+92 or
5554       123.0 * floatExpr(4.0) **               32767  <>             Infinity or
5555       123.0 * floatExpr(4.0) **               32768  <>             Infinity or
5556       123.0 * floatExpr(4.0) **          2147483647  <>             Infinity or
5557       123.0 * floatExpr(4.0) **          2147483648  <>             Infinity or
5558       123.0 * floatExpr(4.0) ** 9223372036854775807  <>             Infinity then
5559      writeln(" ***** Multiplication A * B ** C does not work correct. (5)");
5560      okay := FALSE;
5561    end if;
5562
5563    if 0.0 **       integer.first  * 123.0 <> Infinity or
5564       0.0 **        (-2147483649) * 123.0 <> Infinity or
5565       0.0 **        (-2147483648) * 123.0 <> Infinity or
5566       0.0 **             (-32769) * 123.0 <> Infinity or
5567       0.0 **             (-32768) * 123.0 <> Infinity or
5568       0.0 **               (-100) * 123.0 <> Infinity or
5569       0.0 **                 (-4) * 123.0 <> Infinity or
5570       0.0 **                 (-3) * 123.0 <> Infinity or
5571       0.0 **                 (-2) * 123.0 <> Infinity or
5572       0.0 **                 (-1) * 123.0 <> Infinity or
5573       0.0 **                   0  * 123.0 <>    123.0 or
5574       0.0 **                   1  * 123.0 <>      0.0 or
5575       0.0 **                   2  * 123.0 <>      0.0 or
5576       0.0 **                   3  * 123.0 <>      0.0 or
5577       0.0 **                   4  * 123.0 <>      0.0 or
5578       0.0 **                 100  * 123.0 <>      0.0 or
5579       0.0 **               32767  * 123.0 <>      0.0 or
5580       0.0 **               32768  * 123.0 <>      0.0 or
5581       0.0 **          2147483647  * 123.0 <>      0.0 or
5582       0.0 **          2147483648  * 123.0 <>      0.0 or
5583       0.0 ** 9223372036854775807  * 123.0 <>      0.0 or
5584       1.0 **       integer.first  * 123.0 <>    123.0 or
5585       1.0 **        (-2147483649) * 123.0 <>    123.0 or
5586       1.0 **        (-2147483648) * 123.0 <>    123.0 or
5587       1.0 **             (-32769) * 123.0 <>    123.0 or
5588       1.0 **             (-32768) * 123.0 <>    123.0 or
5589       1.0 **               (-100) * 123.0 <>    123.0 or
5590       1.0 **                 (-4) * 123.0 <>    123.0 or
5591       1.0 **                 (-3) * 123.0 <>    123.0 or
5592       1.0 **                 (-2) * 123.0 <>    123.0 or
5593       1.0 **                 (-1) * 123.0 <>    123.0 or
5594       1.0 **                   0  * 123.0 <>    123.0 or
5595       1.0 **                   1  * 123.0 <>    123.0 or
5596       1.0 **                   2  * 123.0 <>    123.0 or
5597       1.0 **                   3  * 123.0 <>    123.0 or
5598       1.0 **                   4  * 123.0 <>    123.0 or
5599       1.0 **                 100  * 123.0 <>    123.0 or
5600       1.0 **               32767  * 123.0 <>    123.0 or
5601       1.0 **               32768  * 123.0 <>    123.0 or
5602       1.0 **          2147483647  * 123.0 <>    123.0 or
5603       1.0 **          2147483648  * 123.0 <>    123.0 or
5604       1.0 ** 9223372036854775807  * 123.0 <>    123.0 or
5605       2.0 **       integer.first  * 123.0 <>                  0.0 or
5606       2.0 **        (-2147483649) * 123.0 <>                  0.0 or
5607       2.0 **        (-2147483648) * 123.0 <>                  0.0 or
5608       2.0 **             (-32769) * 123.0 <>                  0.0 or
5609       2.0 **             (-32768) * 123.0 <>                  0.0 or
5610       2.0 **               (-150) * 123.0 <>                  8.6179855555976250e-44 or
5611       2.0 **               (-100) * 123.0 <>                  9.7029891342184452e-29 or
5612       2.0 **                (-50) * 123.0 <>                  1.0924594562311540e-13 or
5613       2.0 **                (-40) * 123.0 <>                  1.1186784831807017e-10 or
5614       2.0 **                (-30) * 123.0 <>                  1.1455267667770386e-07 or
5615       2.0 **                (-20) * 123.0 <>                  1.1730194091796875e-04 or
5616       2.0 **                (-10) * 123.0 <>                  0.1201171875 or
5617       2.0 **                 (-4) * 123.0 <>                  7.6875 or
5618       2.0 **                 (-3) * 123.0 <>                 15.375 or
5619       2.0 **                 (-2) * 123.0 <>                 30.75 or
5620       2.0 **                 (-1) * 123.0 <>                 61.5 or
5621       2.0 **                   0  * 123.0 <>                123.0 or
5622       2.0 **                   1  * 123.0 <>                246.0 or
5623       2.0 **                   2  * 123.0 <>                492.0 or
5624       2.0 **                   3  * 123.0 <>                984.0 or
5625       2.0 **                   4  * 123.0 <>               1968.0 or
5626       2.0 **                  10  * 123.0 <>             125952.0 or
5627       2.0 **                  20  * 123.0 <>          128974848.0 or
5628       2.0 **                  30  * 123.0 <>       132070244352.0 or
5629       2.0 **                  40  * 123.0 <>    135239930216448.0 or
5630       2.0 **                  50  * 123.0 <> 138485688541642752.0 or
5631       2.0 **                 100  * 123.0 <>                  1.5592102382807222e+32 or
5632       2.0 **                 150  * 123.0 <>                  1.7555146620283307e+47 or
5633       2.0 **               32767  * 123.0 <>             Infinity or
5634       2.0 **               32768  * 123.0 <>             Infinity or
5635       2.0 **          2147483647  * 123.0 <>             Infinity or
5636       2.0 **          2147483648  * 123.0 <>             Infinity or
5637       2.0 ** 9223372036854775807  * 123.0 <>             Infinity or
5638       4.0 **       integer.first  * 123.0 <>                  0.0 or
5639       4.0 **        (-2147483649) * 123.0 <>                  0.0 or
5640       4.0 **        (-2147483648) * 123.0 <>                  0.0 or
5641       4.0 **             (-32769) * 123.0 <>                  0.0 or
5642       4.0 **             (-32768) * 123.0 <>                  0.0 or
5643       4.0 **               (-150) * 123.0 <>                  6.0381849623162037e-89 or
5644       4.0 **               (-100) * 123.0 <>                  7.6543087917692043e-59 or
5645       4.0 **                (-50) * 123.0 <>                  9.7029891342184452e-29 or
5646       4.0 **                (-40) * 123.0 <>                  1.0174321534402240e-22 or
5647       4.0 **                (-30) * 123.0 <>                  1.0668549377257364e-16 or
5648       4.0 **                (-20) * 123.0 <>                  1.1186784831807017e-10 or
5649       4.0 **                (-10) * 123.0 <>                  1.1730194091796875e-04 or
5650       4.0 **                 (-4) * 123.0 <>                  0.48046875 or
5651       4.0 **                 (-3) * 123.0 <>                  1.921875 or
5652       4.0 **                 (-2) * 123.0 <>                  7.6875 or
5653       4.0 **                 (-1) * 123.0 <>                 30.75 or
5654       4.0 **                   0  * 123.0 <>                123.0 or
5655       4.0 **                   1  * 123.0 <>                492.0 or
5656       4.0 **                   2  * 123.0 <>               1968.0 or
5657       4.0 **                   3  * 123.0 <>               7872.0 or
5658       4.0 **                   4  * 123.0 <>              31488.0 or
5659       4.0 **                  10  * 123.0 <>          128974848.0 or
5660       4.0 **                  20  * 123.0 <>    135239930216448.0 or
5661       4.0 **                  30  * 123.0 <>                  1.4180934506664218e+20 or
5662       4.0 **                  40  * 123.0 <>                  1.4869787581259939e+26 or
5663       4.0 **                  50  * 123.0 <>                  1.5592102382807222e+32 or
5664       4.0 **                 100  * 123.0 <>                  1.9765337944385580e+62 or
5665       4.0 **                 150  * 123.0 <>                  2.5055542508914179e+92 or
5666       4.0 **               32767  * 123.0 <>             Infinity or
5667       4.0 **               32768  * 123.0 <>             Infinity or
5668       4.0 **          2147483647  * 123.0 <>             Infinity or
5669       4.0 **          2147483648  * 123.0 <>             Infinity or
5670       4.0 ** 9223372036854775807  * 123.0 <>             Infinity then
5671      writeln(" ***** Multiplication A ** B * C does not work correct. (1)");
5672      okay := FALSE;
5673    end if;
5674
5675    if 0.0 ** intExpr(      integer.first) * 123.0 <> Infinity or
5676       0.0 ** intExpr(        -2147483649) * 123.0 <> Infinity or
5677       0.0 ** intExpr(        -2147483648) * 123.0 <> Infinity or
5678       0.0 ** intExpr(             -32769) * 123.0 <> Infinity or
5679       0.0 ** intExpr(             -32768) * 123.0 <> Infinity or
5680       0.0 ** intExpr(               -100) * 123.0 <> Infinity or
5681       0.0 ** intExpr(                 -4) * 123.0 <> Infinity or
5682       0.0 ** intExpr(                 -3) * 123.0 <> Infinity or
5683       0.0 ** intExpr(                 -2) * 123.0 <> Infinity or
5684       0.0 ** intExpr(                 -1) * 123.0 <> Infinity or
5685       0.0 ** intExpr(                  0) * 123.0 <>    123.0 or
5686       0.0 ** intExpr(                  1) * 123.0 <>      0.0 or
5687       0.0 ** intExpr(                  2) * 123.0 <>      0.0 or
5688       0.0 ** intExpr(                  3) * 123.0 <>      0.0 or
5689       0.0 ** intExpr(                  4) * 123.0 <>      0.0 or
5690       0.0 ** intExpr(                100) * 123.0 <>      0.0 or
5691       0.0 ** intExpr(              32767) * 123.0 <>      0.0 or
5692       0.0 ** intExpr(              32768) * 123.0 <>      0.0 or
5693       0.0 ** intExpr(         2147483647) * 123.0 <>      0.0 or
5694       0.0 ** intExpr(         2147483648) * 123.0 <>      0.0 or
5695       0.0 ** intExpr(9223372036854775807) * 123.0 <>      0.0 or
5696       1.0 ** intExpr(      integer.first) * 123.0 <>    123.0 or
5697       1.0 ** intExpr(        -2147483649) * 123.0 <>    123.0 or
5698       1.0 ** intExpr(        -2147483648) * 123.0 <>    123.0 or
5699       1.0 ** intExpr(             -32769) * 123.0 <>    123.0 or
5700       1.0 ** intExpr(             -32768) * 123.0 <>    123.0 or
5701       1.0 ** intExpr(               -100) * 123.0 <>    123.0 or
5702       1.0 ** intExpr(                 -4) * 123.0 <>    123.0 or
5703       1.0 ** intExpr(                 -3) * 123.0 <>    123.0 or
5704       1.0 ** intExpr(                 -2) * 123.0 <>    123.0 or
5705       1.0 ** intExpr(                 -1) * 123.0 <>    123.0 or
5706       1.0 ** intExpr(                  0) * 123.0 <>    123.0 or
5707       1.0 ** intExpr(                  1) * 123.0 <>    123.0 or
5708       1.0 ** intExpr(                  2) * 123.0 <>    123.0 or
5709       1.0 ** intExpr(                  3) * 123.0 <>    123.0 or
5710       1.0 ** intExpr(                  4) * 123.0 <>    123.0 or
5711       1.0 ** intExpr(                100) * 123.0 <>    123.0 or
5712       1.0 ** intExpr(              32767) * 123.0 <>    123.0 or
5713       1.0 ** intExpr(              32768) * 123.0 <>    123.0 or
5714       1.0 ** intExpr(         2147483647) * 123.0 <>    123.0 or
5715       1.0 ** intExpr(         2147483648) * 123.0 <>    123.0 or
5716       1.0 ** intExpr(9223372036854775807) * 123.0 <>    123.0 or
5717       2.0 ** intExpr(      integer.first) * 123.0 <>                  0.0 or
5718       2.0 ** intExpr(        -2147483649) * 123.0 <>                  0.0 or
5719       2.0 ** intExpr(        -2147483648) * 123.0 <>                  0.0 or
5720       2.0 ** intExpr(             -32769) * 123.0 <>                  0.0 or
5721       2.0 ** intExpr(             -32768) * 123.0 <>                  0.0 or
5722       2.0 ** intExpr(               -150) * 123.0 <>                  8.6179855555976250e-44 or
5723       2.0 ** intExpr(               -100) * 123.0 <>                  9.7029891342184452e-29 or
5724       2.0 ** intExpr(                -50) * 123.0 <>                  1.0924594562311540e-13 or
5725       2.0 ** intExpr(                -40) * 123.0 <>                  1.1186784831807017e-10 or
5726       2.0 ** intExpr(                -30) * 123.0 <>                  1.1455267667770386e-07 or
5727       2.0 ** intExpr(                -20) * 123.0 <>                  1.1730194091796875e-04 or
5728       2.0 ** intExpr(                -10) * 123.0 <>                  0.1201171875 or
5729       2.0 ** intExpr(                 -4) * 123.0 <>                  7.6875 or
5730       2.0 ** intExpr(                 -3) * 123.0 <>                 15.375 or
5731       2.0 ** intExpr(                 -2) * 123.0 <>                 30.75 or
5732       2.0 ** intExpr(                 -1) * 123.0 <>                 61.5 or
5733       2.0 ** intExpr(                  0) * 123.0 <>                123.0 or
5734       2.0 ** intExpr(                  1) * 123.0 <>                246.0 or
5735       2.0 ** intExpr(                  2) * 123.0 <>                492.0 or
5736       2.0 ** intExpr(                  3) * 123.0 <>                984.0 or
5737       2.0 ** intExpr(                  4) * 123.0 <>               1968.0 or
5738       2.0 ** intExpr(                 10) * 123.0 <>             125952.0 or
5739       2.0 ** intExpr(                 20) * 123.0 <>          128974848.0 or
5740       2.0 ** intExpr(                 30) * 123.0 <>       132070244352.0 or
5741       2.0 ** intExpr(                 40) * 123.0 <>    135239930216448.0 or
5742       2.0 ** intExpr(                 50) * 123.0 <> 138485688541642752.0 or
5743       2.0 ** intExpr(                100) * 123.0 <>                  1.5592102382807222e+32 or
5744       2.0 ** intExpr(                150) * 123.0 <>                  1.7555146620283307e+47 or
5745       2.0 ** intExpr(              32767) * 123.0 <>             Infinity or
5746       2.0 ** intExpr(              32768) * 123.0 <>             Infinity or
5747       2.0 ** intExpr(         2147483647) * 123.0 <>             Infinity or
5748       2.0 ** intExpr(         2147483648) * 123.0 <>             Infinity or
5749       2.0 ** intExpr(9223372036854775807) * 123.0 <>             Infinity or
5750       4.0 ** intExpr(      integer.first) * 123.0 <>                  0.0 or
5751       4.0 ** intExpr(        -2147483649) * 123.0 <>                  0.0 or
5752       4.0 ** intExpr(        -2147483648) * 123.0 <>                  0.0 or
5753       4.0 ** intExpr(             -32769) * 123.0 <>                  0.0 or
5754       4.0 ** intExpr(             -32768) * 123.0 <>                  0.0 or
5755       4.0 ** intExpr(               -150) * 123.0 <>                  6.0381849623162037e-89 or
5756       4.0 ** intExpr(               -100) * 123.0 <>                  7.6543087917692043e-59 or
5757       4.0 ** intExpr(                -50) * 123.0 <>                  9.7029891342184452e-29 or
5758       4.0 ** intExpr(                -40) * 123.0 <>                  1.0174321534402240e-22 or
5759       4.0 ** intExpr(                -30) * 123.0 <>                  1.0668549377257364e-16 or
5760       4.0 ** intExpr(                -20) * 123.0 <>                  1.1186784831807017e-10 or
5761       4.0 ** intExpr(                -10) * 123.0 <>                  1.1730194091796875e-04 or
5762       4.0 ** intExpr(                 -4) * 123.0 <>                  0.48046875 or
5763       4.0 ** intExpr(                 -3) * 123.0 <>                  1.921875 or
5764       4.0 ** intExpr(                 -2) * 123.0 <>                  7.6875 or
5765       4.0 ** intExpr(                 -1) * 123.0 <>                 30.75 or
5766       4.0 ** intExpr(                  0) * 123.0 <>                123.0 or
5767       4.0 ** intExpr(                  1) * 123.0 <>                492.0 or
5768       4.0 ** intExpr(                  2) * 123.0 <>               1968.0 or
5769       4.0 ** intExpr(                  3) * 123.0 <>               7872.0 or
5770       4.0 ** intExpr(                  4) * 123.0 <>              31488.0 or
5771       4.0 ** intExpr(                 10) * 123.0 <>          128974848.0 or
5772       4.0 ** intExpr(                 20) * 123.0 <>    135239930216448.0 or
5773       4.0 ** intExpr(                 30) * 123.0 <>                  1.4180934506664218e+20 or
5774       4.0 ** intExpr(                 40) * 123.0 <>                  1.4869787581259939e+26 or
5775       4.0 ** intExpr(                 50) * 123.0 <>                  1.5592102382807222e+32 or
5776       4.0 ** intExpr(                100) * 123.0 <>                  1.9765337944385580e+62 or
5777       4.0 ** intExpr(                150) * 123.0 <>                  2.5055542508914179e+92 or
5778       4.0 ** intExpr(              32767) * 123.0 <>             Infinity or
5779       4.0 ** intExpr(              32768) * 123.0 <>             Infinity or
5780       4.0 ** intExpr(         2147483647) * 123.0 <>             Infinity or
5781       4.0 ** intExpr(         2147483648) * 123.0 <>             Infinity or
5782       4.0 ** intExpr(9223372036854775807) * 123.0 <>             Infinity then
5783      writeln(" ***** Multiplication A ** B * C does not work correct. (2)");
5784      okay := FALSE;
5785    end if;
5786
5787    if 0.0 **       integer.first  * floatExpr(123.0) <> Infinity or
5788       0.0 **        (-2147483649) * floatExpr(123.0) <> Infinity or
5789       0.0 **        (-2147483648) * floatExpr(123.0) <> Infinity or
5790       0.0 **             (-32769) * floatExpr(123.0) <> Infinity or
5791       0.0 **             (-32768) * floatExpr(123.0) <> Infinity or
5792       0.0 **               (-100) * floatExpr(123.0) <> Infinity or
5793       0.0 **                 (-4) * floatExpr(123.0) <> Infinity or
5794       0.0 **                 (-3) * floatExpr(123.0) <> Infinity or
5795       0.0 **                 (-2) * floatExpr(123.0) <> Infinity or
5796       0.0 **                 (-1) * floatExpr(123.0) <> Infinity or
5797       0.0 **                   0  * floatExpr(123.0) <>    123.0 or
5798       0.0 **                   1  * floatExpr(123.0) <>      0.0 or
5799       0.0 **                   2  * floatExpr(123.0) <>      0.0 or
5800       0.0 **                   3  * floatExpr(123.0) <>      0.0 or
5801       0.0 **                   4  * floatExpr(123.0) <>      0.0 or
5802       0.0 **                 100  * floatExpr(123.0) <>      0.0 or
5803       0.0 **               32767  * floatExpr(123.0) <>      0.0 or
5804       0.0 **               32768  * floatExpr(123.0) <>      0.0 or
5805       0.0 **          2147483647  * floatExpr(123.0) <>      0.0 or
5806       0.0 **          2147483648  * floatExpr(123.0) <>      0.0 or
5807       0.0 ** 9223372036854775807  * floatExpr(123.0) <>      0.0 or
5808       1.0 **       integer.first  * floatExpr(123.0) <>    123.0 or
5809       1.0 **        (-2147483649) * floatExpr(123.0) <>    123.0 or
5810       1.0 **        (-2147483648) * floatExpr(123.0) <>    123.0 or
5811       1.0 **             (-32769) * floatExpr(123.0) <>    123.0 or
5812       1.0 **             (-32768) * floatExpr(123.0) <>    123.0 or
5813       1.0 **               (-100) * floatExpr(123.0) <>    123.0 or
5814       1.0 **                 (-4) * floatExpr(123.0) <>    123.0 or
5815       1.0 **                 (-3) * floatExpr(123.0) <>    123.0 or
5816       1.0 **                 (-2) * floatExpr(123.0) <>    123.0 or
5817       1.0 **                 (-1) * floatExpr(123.0) <>    123.0 or
5818       1.0 **                   0  * floatExpr(123.0) <>    123.0 or
5819       1.0 **                   1  * floatExpr(123.0) <>    123.0 or
5820       1.0 **                   2  * floatExpr(123.0) <>    123.0 or
5821       1.0 **                   3  * floatExpr(123.0) <>    123.0 or
5822       1.0 **                   4  * floatExpr(123.0) <>    123.0 or
5823       1.0 **                 100  * floatExpr(123.0) <>    123.0 or
5824       1.0 **               32767  * floatExpr(123.0) <>    123.0 or
5825       1.0 **               32768  * floatExpr(123.0) <>    123.0 or
5826       1.0 **          2147483647  * floatExpr(123.0) <>    123.0 or
5827       1.0 **          2147483648  * floatExpr(123.0) <>    123.0 or
5828       1.0 ** 9223372036854775807  * floatExpr(123.0) <>    123.0 or
5829       2.0 **       integer.first  * floatExpr(123.0) <>                  0.0 or
5830       2.0 **        (-2147483649) * floatExpr(123.0) <>                  0.0 or
5831       2.0 **        (-2147483648) * floatExpr(123.0) <>                  0.0 or
5832       2.0 **             (-32769) * floatExpr(123.0) <>                  0.0 or
5833       2.0 **             (-32768) * floatExpr(123.0) <>                  0.0 or
5834       2.0 **               (-150) * floatExpr(123.0) <>                  8.6179855555976250e-44 or
5835       2.0 **               (-100) * floatExpr(123.0) <>                  9.7029891342184452e-29 or
5836       2.0 **                (-50) * floatExpr(123.0) <>                  1.0924594562311540e-13 or
5837       2.0 **                (-40) * floatExpr(123.0) <>                  1.1186784831807017e-10 or
5838       2.0 **                (-30) * floatExpr(123.0) <>                  1.1455267667770386e-07 or
5839       2.0 **                (-20) * floatExpr(123.0) <>                  1.1730194091796875e-04 or
5840       2.0 **                (-10) * floatExpr(123.0) <>                  0.1201171875 or
5841       2.0 **                 (-4) * floatExpr(123.0) <>                  7.6875 or
5842       2.0 **                 (-3) * floatExpr(123.0) <>                 15.375 or
5843       2.0 **                 (-2) * floatExpr(123.0) <>                 30.75 or
5844       2.0 **                 (-1) * floatExpr(123.0) <>                 61.5 or
5845       2.0 **                   0  * floatExpr(123.0) <>                123.0 or
5846       2.0 **                   1  * floatExpr(123.0) <>                246.0 or
5847       2.0 **                   2  * floatExpr(123.0) <>                492.0 or
5848       2.0 **                   3  * floatExpr(123.0) <>                984.0 or
5849       2.0 **                   4  * floatExpr(123.0) <>               1968.0 or
5850       2.0 **                  10  * floatExpr(123.0) <>             125952.0 or
5851       2.0 **                  20  * floatExpr(123.0) <>          128974848.0 or
5852       2.0 **                  30  * floatExpr(123.0) <>       132070244352.0 or
5853       2.0 **                  40  * floatExpr(123.0) <>    135239930216448.0 or
5854       2.0 **                  50  * floatExpr(123.0) <> 138485688541642752.0 or
5855       2.0 **                 100  * floatExpr(123.0) <>                  1.5592102382807222e+32 or
5856       2.0 **                 150  * floatExpr(123.0) <>                  1.7555146620283307e+47 or
5857       2.0 **               32767  * floatExpr(123.0) <>             Infinity or
5858       2.0 **               32768  * floatExpr(123.0) <>             Infinity or
5859       2.0 **          2147483647  * floatExpr(123.0) <>             Infinity or
5860       2.0 **          2147483648  * floatExpr(123.0) <>             Infinity or
5861       2.0 ** 9223372036854775807  * floatExpr(123.0) <>             Infinity or
5862       4.0 **       integer.first  * floatExpr(123.0) <>                  0.0 or
5863       4.0 **        (-2147483649) * floatExpr(123.0) <>                  0.0 or
5864       4.0 **        (-2147483648) * floatExpr(123.0) <>                  0.0 or
5865       4.0 **             (-32769) * floatExpr(123.0) <>                  0.0 or
5866       4.0 **             (-32768) * floatExpr(123.0) <>                  0.0 or
5867       4.0 **               (-150) * floatExpr(123.0) <>                  6.0381849623162037e-89 or
5868       4.0 **               (-100) * floatExpr(123.0) <>                  7.6543087917692043e-59 or
5869       4.0 **                (-50) * floatExpr(123.0) <>                  9.7029891342184452e-29 or
5870       4.0 **                (-40) * floatExpr(123.0) <>                  1.0174321534402240e-22 or
5871       4.0 **                (-30) * floatExpr(123.0) <>                  1.0668549377257364e-16 or
5872       4.0 **                (-20) * floatExpr(123.0) <>                  1.1186784831807017e-10 or
5873       4.0 **                (-10) * floatExpr(123.0) <>                  1.1730194091796875e-04 or
5874       4.0 **                 (-4) * floatExpr(123.0) <>                  0.48046875 or
5875       4.0 **                 (-3) * floatExpr(123.0) <>                  1.921875 or
5876       4.0 **                 (-2) * floatExpr(123.0) <>                  7.6875 or
5877       4.0 **                 (-1) * floatExpr(123.0) <>                 30.75 or
5878       4.0 **                   0  * floatExpr(123.0) <>                123.0 or
5879       4.0 **                   1  * floatExpr(123.0) <>                492.0 or
5880       4.0 **                   2  * floatExpr(123.0) <>               1968.0 or
5881       4.0 **                   3  * floatExpr(123.0) <>               7872.0 or
5882       4.0 **                   4  * floatExpr(123.0) <>              31488.0 or
5883       4.0 **                  10  * floatExpr(123.0) <>          128974848.0 or
5884       4.0 **                  20  * floatExpr(123.0) <>    135239930216448.0 or
5885       4.0 **                  30  * floatExpr(123.0) <>                  1.4180934506664218e+20 or
5886       4.0 **                  40  * floatExpr(123.0) <>                  1.4869787581259939e+26 or
5887       4.0 **                  50  * floatExpr(123.0) <>                  1.5592102382807222e+32 or
5888       4.0 **                 100  * floatExpr(123.0) <>                  1.9765337944385580e+62 or
5889       4.0 **                 150  * floatExpr(123.0) <>                  2.5055542508914179e+92 or
5890       4.0 **               32767  * floatExpr(123.0) <>             Infinity or
5891       4.0 **               32768  * floatExpr(123.0) <>             Infinity or
5892       4.0 **          2147483647  * floatExpr(123.0) <>             Infinity or
5893       4.0 **          2147483648  * floatExpr(123.0) <>             Infinity or
5894       4.0 ** 9223372036854775807  * floatExpr(123.0) <>             Infinity then
5895      writeln(" ***** Multiplication A ** B * C does not work correct. (3)");
5896      okay := FALSE;
5897    end if;
5898
5899    if 0.0 ** intExpr(      integer.first) * floatExpr(123.0) <> Infinity or
5900       0.0 ** intExpr(        -2147483649) * floatExpr(123.0) <> Infinity or
5901       0.0 ** intExpr(        -2147483648) * floatExpr(123.0) <> Infinity or
5902       0.0 ** intExpr(             -32769) * floatExpr(123.0) <> Infinity or
5903       0.0 ** intExpr(             -32768) * floatExpr(123.0) <> Infinity or
5904       0.0 ** intExpr(               -100) * floatExpr(123.0) <> Infinity or
5905       0.0 ** intExpr(                 -4) * floatExpr(123.0) <> Infinity or
5906       0.0 ** intExpr(                 -3) * floatExpr(123.0) <> Infinity or
5907       0.0 ** intExpr(                 -2) * floatExpr(123.0) <> Infinity or
5908       0.0 ** intExpr(                 -1) * floatExpr(123.0) <> Infinity or
5909       0.0 ** intExpr(                  0) * floatExpr(123.0) <>    123.0 or
5910       0.0 ** intExpr(                  1) * floatExpr(123.0) <>      0.0 or
5911       0.0 ** intExpr(                  2) * floatExpr(123.0) <>      0.0 or
5912       0.0 ** intExpr(                  3) * floatExpr(123.0) <>      0.0 or
5913       0.0 ** intExpr(                  4) * floatExpr(123.0) <>      0.0 or
5914       0.0 ** intExpr(                100) * floatExpr(123.0) <>      0.0 or
5915       0.0 ** intExpr(              32767) * floatExpr(123.0) <>      0.0 or
5916       0.0 ** intExpr(              32768) * floatExpr(123.0) <>      0.0 or
5917       0.0 ** intExpr(         2147483647) * floatExpr(123.0) <>      0.0 or
5918       0.0 ** intExpr(         2147483648) * floatExpr(123.0) <>      0.0 or
5919       0.0 ** intExpr(9223372036854775807) * floatExpr(123.0) <>      0.0 or
5920       1.0 ** intExpr(      integer.first) * floatExpr(123.0) <>    123.0 or
5921       1.0 ** intExpr(        -2147483649) * floatExpr(123.0) <>    123.0 or
5922       1.0 ** intExpr(        -2147483648) * floatExpr(123.0) <>    123.0 or
5923       1.0 ** intExpr(             -32769) * floatExpr(123.0) <>    123.0 or
5924       1.0 ** intExpr(             -32768) * floatExpr(123.0) <>    123.0 or
5925       1.0 ** intExpr(               -100) * floatExpr(123.0) <>    123.0 or
5926       1.0 ** intExpr(                 -4) * floatExpr(123.0) <>    123.0 or
5927       1.0 ** intExpr(                 -3) * floatExpr(123.0) <>    123.0 or
5928       1.0 ** intExpr(                 -2) * floatExpr(123.0) <>    123.0 or
5929       1.0 ** intExpr(                 -1) * floatExpr(123.0) <>    123.0 or
5930       1.0 ** intExpr(                  0) * floatExpr(123.0) <>    123.0 or
5931       1.0 ** intExpr(                  1) * floatExpr(123.0) <>    123.0 or
5932       1.0 ** intExpr(                  2) * floatExpr(123.0) <>    123.0 or
5933       1.0 ** intExpr(                  3) * floatExpr(123.0) <>    123.0 or
5934       1.0 ** intExpr(                  4) * floatExpr(123.0) <>    123.0 or
5935       1.0 ** intExpr(                100) * floatExpr(123.0) <>    123.0 or
5936       1.0 ** intExpr(              32767) * floatExpr(123.0) <>    123.0 or
5937       1.0 ** intExpr(              32768) * floatExpr(123.0) <>    123.0 or
5938       1.0 ** intExpr(         2147483647) * floatExpr(123.0) <>    123.0 or
5939       1.0 ** intExpr(         2147483648) * floatExpr(123.0) <>    123.0 or
5940       1.0 ** intExpr(9223372036854775807) * floatExpr(123.0) <>    123.0 or
5941       2.0 ** intExpr(      integer.first) * floatExpr(123.0) <>                  0.0 or
5942       2.0 ** intExpr(        -2147483649) * floatExpr(123.0) <>                  0.0 or
5943       2.0 ** intExpr(        -2147483648) * floatExpr(123.0) <>                  0.0 or
5944       2.0 ** intExpr(             -32769) * floatExpr(123.0) <>                  0.0 or
5945       2.0 ** intExpr(             -32768) * floatExpr(123.0) <>                  0.0 or
5946       2.0 ** intExpr(               -150) * floatExpr(123.0) <>                  8.6179855555976250e-44 or
5947       2.0 ** intExpr(               -100) * floatExpr(123.0) <>                  9.7029891342184452e-29 or
5948       2.0 ** intExpr(                -50) * floatExpr(123.0) <>                  1.0924594562311540e-13 or
5949       2.0 ** intExpr(                -40) * floatExpr(123.0) <>                  1.1186784831807017e-10 or
5950       2.0 ** intExpr(                -30) * floatExpr(123.0) <>                  1.1455267667770386e-07 or
5951       2.0 ** intExpr(                -20) * floatExpr(123.0) <>                  1.1730194091796875e-04 or
5952       2.0 ** intExpr(                -10) * floatExpr(123.0) <>                  0.1201171875 or
5953       2.0 ** intExpr(                 -4) * floatExpr(123.0) <>                  7.6875 or
5954       2.0 ** intExpr(                 -3) * floatExpr(123.0) <>                 15.375 or
5955       2.0 ** intExpr(                 -2) * floatExpr(123.0) <>                 30.75 or
5956       2.0 ** intExpr(                 -1) * floatExpr(123.0) <>                 61.5 or
5957       2.0 ** intExpr(                  0) * floatExpr(123.0) <>                123.0 or
5958       2.0 ** intExpr(                  1) * floatExpr(123.0) <>                246.0 or
5959       2.0 ** intExpr(                  2) * floatExpr(123.0) <>                492.0 or
5960       2.0 ** intExpr(                  3) * floatExpr(123.0) <>                984.0 or
5961       2.0 ** intExpr(                  4) * floatExpr(123.0) <>               1968.0 or
5962       2.0 ** intExpr(                 10) * floatExpr(123.0) <>             125952.0 or
5963       2.0 ** intExpr(                 20) * floatExpr(123.0) <>          128974848.0 or
5964       2.0 ** intExpr(                 30) * floatExpr(123.0) <>       132070244352.0 or
5965       2.0 ** intExpr(                 40) * floatExpr(123.0) <>    135239930216448.0 or
5966       2.0 ** intExpr(                 50) * floatExpr(123.0) <> 138485688541642752.0 or
5967       2.0 ** intExpr(                100) * floatExpr(123.0) <>                  1.5592102382807222e+32 or
5968       2.0 ** intExpr(                150) * floatExpr(123.0) <>                  1.7555146620283307e+47 or
5969       2.0 ** intExpr(              32767) * floatExpr(123.0) <>             Infinity or
5970       2.0 ** intExpr(              32768) * floatExpr(123.0) <>             Infinity or
5971       2.0 ** intExpr(         2147483647) * floatExpr(123.0) <>             Infinity or
5972       2.0 ** intExpr(         2147483648) * floatExpr(123.0) <>             Infinity or
5973       2.0 ** intExpr(9223372036854775807) * floatExpr(123.0) <>             Infinity or
5974       4.0 ** intExpr(      integer.first) * floatExpr(123.0) <>                  0.0 or
5975       4.0 ** intExpr(        -2147483649) * floatExpr(123.0) <>                  0.0 or
5976       4.0 ** intExpr(        -2147483648) * floatExpr(123.0) <>                  0.0 or
5977       4.0 ** intExpr(             -32769) * floatExpr(123.0) <>                  0.0 or
5978       4.0 ** intExpr(             -32768) * floatExpr(123.0) <>                  0.0 or
5979       4.0 ** intExpr(               -150) * floatExpr(123.0) <>                  6.0381849623162037e-89 or
5980       4.0 ** intExpr(               -100) * floatExpr(123.0) <>                  7.6543087917692043e-59 or
5981       4.0 ** intExpr(                -50) * floatExpr(123.0) <>                  9.7029891342184452e-29 or
5982       4.0 ** intExpr(                -40) * floatExpr(123.0) <>                  1.0174321534402240e-22 or
5983       4.0 ** intExpr(                -30) * floatExpr(123.0) <>                  1.0668549377257364e-16 or
5984       4.0 ** intExpr(                -20) * floatExpr(123.0) <>                  1.1186784831807017e-10 or
5985       4.0 ** intExpr(                -10) * floatExpr(123.0) <>                  1.1730194091796875e-04 or
5986       4.0 ** intExpr(                 -4) * floatExpr(123.0) <>                  0.48046875 or
5987       4.0 ** intExpr(                 -3) * floatExpr(123.0) <>                  1.921875 or
5988       4.0 ** intExpr(                 -2) * floatExpr(123.0) <>                  7.6875 or
5989       4.0 ** intExpr(                 -1) * floatExpr(123.0) <>                 30.75 or
5990       4.0 ** intExpr(                  0) * floatExpr(123.0) <>                123.0 or
5991       4.0 ** intExpr(                  1) * floatExpr(123.0) <>                492.0 or
5992       4.0 ** intExpr(                  2) * floatExpr(123.0) <>               1968.0 or
5993       4.0 ** intExpr(                  3) * floatExpr(123.0) <>               7872.0 or
5994       4.0 ** intExpr(                  4) * floatExpr(123.0) <>              31488.0 or
5995       4.0 ** intExpr(                 10) * floatExpr(123.0) <>          128974848.0 or
5996       4.0 ** intExpr(                 20) * floatExpr(123.0) <>    135239930216448.0 or
5997       4.0 ** intExpr(                 30) * floatExpr(123.0) <>                  1.4180934506664218e+20 or
5998       4.0 ** intExpr(                 40) * floatExpr(123.0) <>                  1.4869787581259939e+26 or
5999       4.0 ** intExpr(                 50) * floatExpr(123.0) <>                  1.5592102382807222e+32 or
6000       4.0 ** intExpr(                100) * floatExpr(123.0) <>                  1.9765337944385580e+62 or
6001       4.0 ** intExpr(                150) * floatExpr(123.0) <>                  2.5055542508914179e+92 or
6002       4.0 ** intExpr(              32767) * floatExpr(123.0) <>             Infinity or
6003       4.0 ** intExpr(              32768) * floatExpr(123.0) <>             Infinity or
6004       4.0 ** intExpr(         2147483647) * floatExpr(123.0) <>             Infinity or
6005       4.0 ** intExpr(         2147483648) * floatExpr(123.0) <>             Infinity or
6006       4.0 ** intExpr(9223372036854775807) * floatExpr(123.0) <>             Infinity then
6007      writeln(" ***** Multiplication A ** B * C does not work correct. (4)");
6008      okay := FALSE;
6009    end if;
6010
6011    if floatExpr(0.0) **       integer.first  * 123.0 <> Infinity or
6012       floatExpr(0.0) **        (-2147483649) * 123.0 <> Infinity or
6013       floatExpr(0.0) **        (-2147483648) * 123.0 <> Infinity or
6014       floatExpr(0.0) **             (-32769) * 123.0 <> Infinity or
6015       floatExpr(0.0) **             (-32768) * 123.0 <> Infinity or
6016       floatExpr(0.0) **               (-100) * 123.0 <> Infinity or
6017       floatExpr(0.0) **                 (-4) * 123.0 <> Infinity or
6018       floatExpr(0.0) **                 (-3) * 123.0 <> Infinity or
6019       floatExpr(0.0) **                 (-2) * 123.0 <> Infinity or
6020       floatExpr(0.0) **                 (-1) * 123.0 <> Infinity or
6021       floatExpr(0.0) **                   0  * 123.0 <>    123.0 or
6022       floatExpr(0.0) **                   1  * 123.0 <>      0.0 or
6023       floatExpr(0.0) **                   2  * 123.0 <>      0.0 or
6024       floatExpr(0.0) **                   3  * 123.0 <>      0.0 or
6025       floatExpr(0.0) **                   4  * 123.0 <>      0.0 or
6026       floatExpr(0.0) **                 100  * 123.0 <>      0.0 or
6027       floatExpr(0.0) **               32767  * 123.0 <>      0.0 or
6028       floatExpr(0.0) **               32768  * 123.0 <>      0.0 or
6029       floatExpr(0.0) **          2147483647  * 123.0 <>      0.0 or
6030       floatExpr(0.0) **          2147483648  * 123.0 <>      0.0 or
6031       floatExpr(0.0) ** 9223372036854775807  * 123.0 <>      0.0 or
6032       floatExpr(1.0) **       integer.first  * 123.0 <>    123.0 or
6033       floatExpr(1.0) **        (-2147483649) * 123.0 <>    123.0 or
6034       floatExpr(1.0) **        (-2147483648) * 123.0 <>    123.0 or
6035       floatExpr(1.0) **             (-32769) * 123.0 <>    123.0 or
6036       floatExpr(1.0) **             (-32768) * 123.0 <>    123.0 or
6037       floatExpr(1.0) **               (-100) * 123.0 <>    123.0 or
6038       floatExpr(1.0) **                 (-4) * 123.0 <>    123.0 or
6039       floatExpr(1.0) **                 (-3) * 123.0 <>    123.0 or
6040       floatExpr(1.0) **                 (-2) * 123.0 <>    123.0 or
6041       floatExpr(1.0) **                 (-1) * 123.0 <>    123.0 or
6042       floatExpr(1.0) **                   0  * 123.0 <>    123.0 or
6043       floatExpr(1.0) **                   1  * 123.0 <>    123.0 or
6044       floatExpr(1.0) **                   2  * 123.0 <>    123.0 or
6045       floatExpr(1.0) **                   3  * 123.0 <>    123.0 or
6046       floatExpr(1.0) **                   4  * 123.0 <>    123.0 or
6047       floatExpr(1.0) **                 100  * 123.0 <>    123.0 or
6048       floatExpr(1.0) **               32767  * 123.0 <>    123.0 or
6049       floatExpr(1.0) **               32768  * 123.0 <>    123.0 or
6050       floatExpr(1.0) **          2147483647  * 123.0 <>    123.0 or
6051       floatExpr(1.0) **          2147483648  * 123.0 <>    123.0 or
6052       floatExpr(1.0) ** 9223372036854775807  * 123.0 <>    123.0 or
6053       floatExpr(2.0) **       integer.first  * 123.0 <>                  0.0 or
6054       floatExpr(2.0) **        (-2147483649) * 123.0 <>                  0.0 or
6055       floatExpr(2.0) **        (-2147483648) * 123.0 <>                  0.0 or
6056       floatExpr(2.0) **             (-32769) * 123.0 <>                  0.0 or
6057       floatExpr(2.0) **             (-32768) * 123.0 <>                  0.0 or
6058       floatExpr(2.0) **               (-150) * 123.0 <>                  8.6179855555976250e-44 or
6059       floatExpr(2.0) **               (-100) * 123.0 <>                  9.7029891342184452e-29 or
6060       floatExpr(2.0) **                (-50) * 123.0 <>                  1.0924594562311540e-13 or
6061       floatExpr(2.0) **                (-40) * 123.0 <>                  1.1186784831807017e-10 or
6062       floatExpr(2.0) **                (-30) * 123.0 <>                  1.1455267667770386e-07 or
6063       floatExpr(2.0) **                (-20) * 123.0 <>                  1.1730194091796875e-04 or
6064       floatExpr(2.0) **                (-10) * 123.0 <>                  0.1201171875 or
6065       floatExpr(2.0) **                 (-4) * 123.0 <>                  7.6875 or
6066       floatExpr(2.0) **                 (-3) * 123.0 <>                 15.375 or
6067       floatExpr(2.0) **                 (-2) * 123.0 <>                 30.75 or
6068       floatExpr(2.0) **                 (-1) * 123.0 <>                 61.5 or
6069       floatExpr(2.0) **                   0  * 123.0 <>                123.0 or
6070       floatExpr(2.0) **                   1  * 123.0 <>                246.0 or
6071       floatExpr(2.0) **                   2  * 123.0 <>                492.0 or
6072       floatExpr(2.0) **                   3  * 123.0 <>                984.0 or
6073       floatExpr(2.0) **                   4  * 123.0 <>               1968.0 or
6074       floatExpr(2.0) **                  10  * 123.0 <>             125952.0 or
6075       floatExpr(2.0) **                  20  * 123.0 <>          128974848.0 or
6076       floatExpr(2.0) **                  30  * 123.0 <>       132070244352.0 or
6077       floatExpr(2.0) **                  40  * 123.0 <>    135239930216448.0 or
6078       floatExpr(2.0) **                  50  * 123.0 <> 138485688541642752.0 or
6079       floatExpr(2.0) **                 100  * 123.0 <>                  1.5592102382807222e+32 or
6080       floatExpr(2.0) **                 150  * 123.0 <>                  1.7555146620283307e+47 or
6081       floatExpr(2.0) **               32767  * 123.0 <>             Infinity or
6082       floatExpr(2.0) **               32768  * 123.0 <>             Infinity or
6083       floatExpr(2.0) **          2147483647  * 123.0 <>             Infinity or
6084       floatExpr(2.0) **          2147483648  * 123.0 <>             Infinity or
6085       floatExpr(2.0) ** 9223372036854775807  * 123.0 <>             Infinity or
6086       floatExpr(4.0) **       integer.first  * 123.0 <>                  0.0 or
6087       floatExpr(4.0) **        (-2147483649) * 123.0 <>                  0.0 or
6088       floatExpr(4.0) **        (-2147483648) * 123.0 <>                  0.0 or
6089       floatExpr(4.0) **             (-32769) * 123.0 <>                  0.0 or
6090       floatExpr(4.0) **             (-32768) * 123.0 <>                  0.0 or
6091       floatExpr(4.0) **               (-150) * 123.0 <>                  6.0381849623162037e-89 or
6092       floatExpr(4.0) **               (-100) * 123.0 <>                  7.6543087917692043e-59 or
6093       floatExpr(4.0) **                (-50) * 123.0 <>                  9.7029891342184452e-29 or
6094       floatExpr(4.0) **                (-40) * 123.0 <>                  1.0174321534402240e-22 or
6095       floatExpr(4.0) **                (-30) * 123.0 <>                  1.0668549377257364e-16 or
6096       floatExpr(4.0) **                (-20) * 123.0 <>                  1.1186784831807017e-10 or
6097       floatExpr(4.0) **                (-10) * 123.0 <>                  1.1730194091796875e-04 or
6098       floatExpr(4.0) **                 (-4) * 123.0 <>                  0.48046875 or
6099       floatExpr(4.0) **                 (-3) * 123.0 <>                  1.921875 or
6100       floatExpr(4.0) **                 (-2) * 123.0 <>                  7.6875 or
6101       floatExpr(4.0) **                 (-1) * 123.0 <>                 30.75 or
6102       floatExpr(4.0) **                   0  * 123.0 <>                123.0 or
6103       floatExpr(4.0) **                   1  * 123.0 <>                492.0 or
6104       floatExpr(4.0) **                   2  * 123.0 <>               1968.0 or
6105       floatExpr(4.0) **                   3  * 123.0 <>               7872.0 or
6106       floatExpr(4.0) **                   4  * 123.0 <>              31488.0 or
6107       floatExpr(4.0) **                  10  * 123.0 <>          128974848.0 or
6108       floatExpr(4.0) **                  20  * 123.0 <>    135239930216448.0 or
6109       floatExpr(4.0) **                  30  * 123.0 <>                  1.4180934506664218e+20 or
6110       floatExpr(4.0) **                  40  * 123.0 <>                  1.4869787581259939e+26 or
6111       floatExpr(4.0) **                  50  * 123.0 <>                  1.5592102382807222e+32 or
6112       floatExpr(4.0) **                 100  * 123.0 <>                  1.9765337944385580e+62 or
6113       floatExpr(4.0) **                 150  * 123.0 <>                  2.5055542508914179e+92 or
6114       floatExpr(4.0) **               32767  * 123.0 <>             Infinity or
6115       floatExpr(4.0) **               32768  * 123.0 <>             Infinity or
6116       floatExpr(4.0) **          2147483647  * 123.0 <>             Infinity or
6117       floatExpr(4.0) **          2147483648  * 123.0 <>             Infinity or
6118       floatExpr(4.0) ** 9223372036854775807  * 123.0 <>             Infinity then
6119      writeln(" ***** Multiplication A ** B * C does not work correct. (5)");
6120      okay := FALSE;
6121    end if;
6122
6123    if okay then
6124      writeln("Multiplication works correct for selected values.");
6125    else
6126      writeln(" ***** Multiplication does not work correct.");
6127    end if;
6128  end func;
6129
6130
6131const proc: check_division is func
6132  begin
6133    if             0.0  /             1.0  =  0.0  and
6134                   0.0  /            12.0  =  0.0  and
6135                   1.0  /             2.0  =  0.5  and
6136                   1.0  /             4.0  =  0.25 and
6137        floatExpr( 0.0) /             1.0  =  0.0  and
6138        floatExpr( 0.0) /            12.0  =  0.0  and
6139        floatExpr( 1.0) /             2.0  =  0.5  and
6140        floatExpr( 1.0) /             4.0  =  0.25 and
6141                   0.0  / floatExpr(  1.0) =  0.0  and
6142                   0.0  / floatExpr( 12.0) =  0.0  and
6143                   1.0  / floatExpr(  2.0) =  0.5  and
6144                   1.0  / floatExpr(  4.0) =  0.25 and
6145        floatExpr( 0.0) / floatExpr(  1.0) =  0.0  and
6146        floatExpr( 0.0) / floatExpr( 12.0) =  0.0  and
6147        floatExpr( 1.0) / floatExpr(  2.0) =  0.5  and
6148        floatExpr( 1.0) / floatExpr(  4.0) =  0.25 then
6149      writeln("Division works correct for selected values.");
6150    else
6151      writeln(" ***** Division does not work correct.");
6152    end if;
6153  end func;
6154
6155
6156const proc: check_remainder is func
6157  local
6158    var boolean: okay is TRUE;
6159  begin
6160    if  not isNaN(      NaN rem       NaN)           or
6161        not isNaN(      NaN rem -Infinity)           or
6162        not isNaN(      NaN rem    -13.25)           or
6163        not isNaN(      NaN rem     -1.0 )           or
6164        not isNaN(      NaN rem     -0.75)           or
6165        not isNaN(      NaN rem     -0.0 )           or
6166        not isNaN(      NaN rem      0.0 )           or
6167        not isNaN(      NaN rem      0.75)           or
6168        not isNaN(      NaN rem      1.0 )           or
6169        not isNaN(      NaN rem     13.25)           or
6170        not isNaN(      NaN rem  Infinity)           or
6171        not isNaN(-Infinity rem       NaN)           or
6172        not isNaN(-Infinity rem -Infinity)           or
6173        not isNaN(-Infinity rem    -13.25)           or
6174        not isNaN(-Infinity rem     -1.0 )           or
6175        not isNaN(-Infinity rem     -0.75)           or
6176        not isNaN(-Infinity rem     -0.0 )           or
6177        not isNaN(-Infinity rem      0.0 )           or
6178        not isNaN(-Infinity rem      0.75)           or
6179        not isNaN(-Infinity rem      1.0 )           or
6180        not isNaN(-Infinity rem     13.25)           or
6181        not isNaN(-Infinity rem  Infinity)           or
6182        not isNaN(  -31.125 rem       NaN)           or
6183                    -31.125 rem -Infinity <> -31.125 or
6184                    -31.125 rem    -13.25 <>  -4.625 or
6185                    -31.125 rem     -1.0  <>  -0.125 or
6186                    -31.125 rem     -0.75 <>  -0.375 or
6187        not isNaN(  -31.125 rem     -0.0 )           or
6188        not isNaN(  -31.125 rem      0.0 )           or
6189                    -31.125 rem      0.75 <>  -0.375 or
6190                    -31.125 rem      1.0  <>  -0.125 or
6191                    -31.125 rem     13.25 <>  -4.625 or
6192                    -31.125 rem  Infinity <> -31.125 or
6193        not isNaN(   -1.0   rem       NaN)           or
6194                     -1.0   rem -Infinity <>  -1.0   or
6195                     -1.0   rem    -13.25 <>  -1.0   or
6196                     -1.0   rem     -1.0  <>   0.0   or
6197                     -1.0   rem     -0.75 <>  -0.25  or
6198        not isNaN(   -1.0   rem     -0.0 )           or
6199        not isNaN(   -1.0   rem      0.0 )           or
6200                     -1.0   rem      0.75 <>  -0.25  or
6201                     -1.0   rem      1.0  <>   0.0   or
6202                     -1.0   rem     13.25 <>  -1.0   or
6203                     -1.0   rem  Infinity <>  -1.0   or
6204        not isNaN(   -0.0   rem       NaN)           or
6205                     -0.0   rem -Infinity <>   0.0   or
6206                     -0.0   rem    -13.25 <>   0.0   or
6207                     -0.0   rem     -1.0  <>   0.0   or
6208                     -0.0   rem     -0.75 <>   0.0   or
6209        not isNaN(   -0.0   rem     -0.0 )           or
6210        not isNaN(   -0.0   rem      0.0 )           or
6211                     -0.0   rem      0.75 <>   0.0   or
6212                     -0.0   rem      1.0  <>   0.0   or
6213                     -0.0   rem     13.25 <>   0.0   or
6214                     -0.0   rem  Infinity <>   0.0   or
6215        not isNaN(    0.0   rem       NaN)           or
6216                      0.0   rem -Infinity <>   0.0   or
6217                      0.0   rem    -13.25 <>   0.0   or
6218                      0.0   rem     -1.0  <>   0.0   or
6219                      0.0   rem     -0.75 <>   0.0   or
6220        not isNaN(    0.0   rem     -0.0 )           or
6221        not isNaN(    0.0   rem      0.0 )           or
6222                      0.0   rem      0.75 <>   0.0   or
6223                      0.0   rem      1.0  <>   0.0   or
6224                      0.0   rem     13.25 <>   0.0   or
6225                      0.0   rem  Infinity <>   0.0   or
6226        not isNaN(    1.0   rem       NaN)           or
6227                      1.0   rem -Infinity <>   1.0   or
6228                      1.0   rem    -13.25 <>   1.0   or
6229                      1.0   rem     -1.0  <>   0.0   or
6230                      1.0   rem     -0.75 <>   0.25  or
6231        not isNaN(    1.0   rem     -0.0 )           or
6232        not isNaN(    1.0   rem      0.0 )           or
6233                      1.0   rem      0.75 <>   0.25  or
6234                      1.0   rem      1.0  <>   0.0   or
6235                      1.0   rem     13.25 <>   1.0   or
6236                      1.0   rem  Infinity <>   1.0   or
6237        not isNaN(   31.125 rem       NaN)           or
6238                     31.125 rem -Infinity <>  31.125 or
6239                     31.125 rem    -13.25 <>   4.625 or
6240                     31.125 rem     -1.0  <>   0.125 or
6241                     31.125 rem     -0.75 <>   0.375 or
6242        not isNaN(   31.125 rem     -0.0 )           or
6243        not isNaN(   31.125 rem      0.0 )           or
6244                     31.125 rem      0.75 <>   0.375 or
6245                     31.125 rem      1.0  <>   0.125 or
6246                     31.125 rem     13.25 <>   4.625 or
6247                     31.125 rem  Infinity <>  31.125 or
6248        not isNaN( Infinity rem       NaN)           or
6249        not isNaN( Infinity rem -Infinity)           or
6250        not isNaN( Infinity rem    -13.25)           or
6251        not isNaN( Infinity rem     -1.0 )           or
6252        not isNaN( Infinity rem     -0.75)           or
6253        not isNaN( Infinity rem     -0.0 )           or
6254        not isNaN( Infinity rem      0.0 )           or
6255        not isNaN( Infinity rem      0.75)           or
6256        not isNaN( Infinity rem      1.0 )           or
6257        not isNaN( Infinity rem     13.25)           or
6258        not isNaN( Infinity rem  Infinity)           then
6259      writeln(" ***** Remainder does not work correct. (1)");
6260      okay := FALSE;
6261    end if;
6262
6263    if  not isNaN(floatExpr(      NaN) rem       NaN)           or
6264        not isNaN(floatExpr(      NaN) rem -Infinity)           or
6265        not isNaN(floatExpr(      NaN) rem    -13.25)           or
6266        not isNaN(floatExpr(      NaN) rem     -1.0 )           or
6267        not isNaN(floatExpr(      NaN) rem     -0.75)           or
6268        not isNaN(floatExpr(      NaN) rem     -0.0 )           or
6269        not isNaN(floatExpr(      NaN) rem      0.0 )           or
6270        not isNaN(floatExpr(      NaN) rem      0.75)           or
6271        not isNaN(floatExpr(      NaN) rem      1.0 )           or
6272        not isNaN(floatExpr(      NaN) rem     13.25)           or
6273        not isNaN(floatExpr(      NaN) rem  Infinity)           or
6274        not isNaN(floatExpr(-Infinity) rem       NaN)           or
6275        not isNaN(floatExpr(-Infinity) rem -Infinity)           or
6276        not isNaN(floatExpr(-Infinity) rem    -13.25)           or
6277        not isNaN(floatExpr(-Infinity) rem     -1.0 )           or
6278        not isNaN(floatExpr(-Infinity) rem     -0.75)           or
6279        not isNaN(floatExpr(-Infinity) rem     -0.0 )           or
6280        not isNaN(floatExpr(-Infinity) rem      0.0 )           or
6281        not isNaN(floatExpr(-Infinity) rem      0.75)           or
6282        not isNaN(floatExpr(-Infinity) rem      1.0 )           or
6283        not isNaN(floatExpr(-Infinity) rem     13.25)           or
6284        not isNaN(floatExpr(-Infinity) rem  Infinity)           or
6285        not isNaN(floatExpr(  -31.125) rem       NaN)           or
6286                  floatExpr(  -31.125) rem -Infinity <> -31.125 or
6287                  floatExpr(  -31.125) rem    -13.25 <>  -4.625 or
6288                  floatExpr(  -31.125) rem     -1.0  <>  -0.125 or
6289                  floatExpr(  -31.125) rem     -0.75 <>  -0.375 or
6290        not isNaN(floatExpr(  -31.125) rem     -0.0 )           or
6291        not isNaN(floatExpr(  -31.125) rem      0.0 )           or
6292                  floatExpr(  -31.125) rem      0.75 <>  -0.375 or
6293                  floatExpr(  -31.125) rem      1.0  <>  -0.125 or
6294                  floatExpr(  -31.125) rem     13.25 <>  -4.625 or
6295                  floatExpr(  -31.125) rem  Infinity <> -31.125 or
6296        not isNaN(floatExpr(   -1.0  ) rem       NaN)           or
6297                  floatExpr(   -1.0  ) rem -Infinity <>  -1.0   or
6298                  floatExpr(   -1.0  ) rem    -13.25 <>  -1.0   or
6299                  floatExpr(   -1.0  ) rem     -1.0  <>   0.0   or
6300                  floatExpr(   -1.0  ) rem     -0.75 <>  -0.25  or
6301        not isNaN(floatExpr(   -1.0  ) rem     -0.0 )           or
6302        not isNaN(floatExpr(   -1.0  ) rem      0.0 )           or
6303                  floatExpr(   -1.0  ) rem      0.75 <>  -0.25  or
6304                  floatExpr(   -1.0  ) rem      1.0  <>   0.0   or
6305                  floatExpr(   -1.0  ) rem     13.25 <>  -1.0   or
6306                  floatExpr(   -1.0  ) rem  Infinity <>  -1.0   or
6307        not isNaN(floatExpr(   -0.0  ) rem       NaN)           or
6308                  floatExpr(   -0.0  ) rem -Infinity <>   0.0   or
6309                  floatExpr(   -0.0  ) rem    -13.25 <>   0.0   or
6310                  floatExpr(   -0.0  ) rem     -1.0  <>   0.0   or
6311                  floatExpr(   -0.0  ) rem     -0.75 <>   0.0   or
6312        not isNaN(floatExpr(   -0.0  ) rem     -0.0 )           or
6313        not isNaN(floatExpr(   -0.0  ) rem      0.0 )           or
6314                  floatExpr(   -0.0  ) rem      0.75 <>   0.0   or
6315                  floatExpr(   -0.0  ) rem      1.0  <>   0.0   or
6316                  floatExpr(   -0.0  ) rem     13.25 <>   0.0   or
6317                  floatExpr(   -0.0  ) rem  Infinity <>   0.0   or
6318        not isNaN(floatExpr(    0.0  ) rem       NaN)           or
6319                  floatExpr(    0.0  ) rem -Infinity <>   0.0   or
6320                  floatExpr(    0.0  ) rem    -13.25 <>   0.0   or
6321                  floatExpr(    0.0  ) rem     -1.0  <>   0.0   or
6322                  floatExpr(    0.0  ) rem     -0.75 <>   0.0   or
6323        not isNaN(floatExpr(    0.0  ) rem     -0.0 )           or
6324        not isNaN(floatExpr(    0.0  ) rem      0.0 )           or
6325                  floatExpr(    0.0  ) rem      0.75 <>   0.0   or
6326                  floatExpr(    0.0  ) rem      1.0  <>   0.0   or
6327                  floatExpr(    0.0  ) rem     13.25 <>   0.0   or
6328                  floatExpr(    0.0  ) rem  Infinity <>   0.0   or
6329        not isNaN(floatExpr(    1.0  ) rem       NaN)           or
6330                  floatExpr(    1.0  ) rem -Infinity <>   1.0   or
6331                  floatExpr(    1.0  ) rem    -13.25 <>   1.0   or
6332                  floatExpr(    1.0  ) rem     -1.0  <>   0.0   or
6333                  floatExpr(    1.0  ) rem     -0.75 <>   0.25  or
6334        not isNaN(floatExpr(    1.0  ) rem     -0.0 )           or
6335        not isNaN(floatExpr(    1.0  ) rem      0.0 )           or
6336                  floatExpr(    1.0  ) rem      0.75 <>   0.25  or
6337                  floatExpr(    1.0  ) rem      1.0  <>   0.0   or
6338                  floatExpr(    1.0  ) rem     13.25 <>   1.0   or
6339                  floatExpr(    1.0  ) rem  Infinity <>   1.0   or
6340        not isNaN(floatExpr(   31.125) rem       NaN)           or
6341                  floatExpr(   31.125) rem -Infinity <>  31.125 or
6342                  floatExpr(   31.125) rem    -13.25 <>   4.625 or
6343                  floatExpr(   31.125) rem     -1.0  <>   0.125 or
6344                  floatExpr(   31.125) rem     -0.75 <>   0.375 or
6345        not isNaN(floatExpr(   31.125) rem     -0.0 )           or
6346        not isNaN(floatExpr(   31.125) rem      0.0 )           or
6347                  floatExpr(   31.125) rem      0.75 <>   0.375 or
6348                  floatExpr(   31.125) rem      1.0  <>   0.125 or
6349                  floatExpr(   31.125) rem     13.25 <>   4.625 or
6350                  floatExpr(   31.125) rem  Infinity <>  31.125 or
6351        not isNaN(floatExpr( Infinity) rem       NaN)           or
6352        not isNaN(floatExpr( Infinity) rem -Infinity)           or
6353        not isNaN(floatExpr( Infinity) rem    -13.25)           or
6354        not isNaN(floatExpr( Infinity) rem     -1.0 )           or
6355        not isNaN(floatExpr( Infinity) rem     -0.75)           or
6356        not isNaN(floatExpr( Infinity) rem     -0.0 )           or
6357        not isNaN(floatExpr( Infinity) rem      0.0 )           or
6358        not isNaN(floatExpr( Infinity) rem      0.75)           or
6359        not isNaN(floatExpr( Infinity) rem      1.0 )           or
6360        not isNaN(floatExpr( Infinity) rem     13.25)           or
6361        not isNaN(floatExpr( Infinity) rem  Infinity)           then
6362      writeln(" ***** Remainder does not work correct. (2)");
6363      okay := FALSE;
6364    end if;
6365
6366    if  not isNaN(      NaN rem floatExpr(      NaN))           or
6367        not isNaN(      NaN rem floatExpr(-Infinity))           or
6368        not isNaN(      NaN rem floatExpr(   -13.25))           or
6369        not isNaN(      NaN rem floatExpr(    -1.0 ))           or
6370        not isNaN(      NaN rem floatExpr(    -0.75))           or
6371        not isNaN(      NaN rem floatExpr(    -0.0 ))           or
6372        not isNaN(      NaN rem floatExpr(     0.0 ))           or
6373        not isNaN(      NaN rem floatExpr(     0.75))           or
6374        not isNaN(      NaN rem floatExpr(     1.0 ))           or
6375        not isNaN(      NaN rem floatExpr(    13.25))           or
6376        not isNaN(      NaN rem floatExpr( Infinity))           or
6377        not isNaN(-Infinity rem floatExpr(      NaN))           or
6378        not isNaN(-Infinity rem floatExpr(-Infinity))           or
6379        not isNaN(-Infinity rem floatExpr(   -13.25))           or
6380        not isNaN(-Infinity rem floatExpr(    -1.0 ))           or
6381        not isNaN(-Infinity rem floatExpr(    -0.75))           or
6382        not isNaN(-Infinity rem floatExpr(    -0.0 ))           or
6383        not isNaN(-Infinity rem floatExpr(     0.0 ))           or
6384        not isNaN(-Infinity rem floatExpr(     0.75))           or
6385        not isNaN(-Infinity rem floatExpr(     1.0 ))           or
6386        not isNaN(-Infinity rem floatExpr(    13.25))           or
6387        not isNaN(-Infinity rem floatExpr( Infinity))           or
6388        not isNaN(  -31.125 rem floatExpr(      NaN))           or
6389                    -31.125 rem floatExpr(-Infinity) <> -31.125 or
6390                    -31.125 rem floatExpr(   -13.25) <>  -4.625 or
6391                    -31.125 rem floatExpr(    -1.0 ) <>  -0.125 or
6392                    -31.125 rem floatExpr(    -0.75) <>  -0.375 or
6393        not isNaN(  -31.125 rem floatExpr(    -0.0 ))           or
6394        not isNaN(  -31.125 rem floatExpr(     0.0 ))           or
6395                    -31.125 rem floatExpr(     0.75) <>  -0.375 or
6396                    -31.125 rem floatExpr(     1.0 ) <>  -0.125 or
6397                    -31.125 rem floatExpr(    13.25) <>  -4.625 or
6398                    -31.125 rem floatExpr( Infinity) <> -31.125 or
6399        not isNaN(   -1.0   rem floatExpr(      NaN))           or
6400                     -1.0   rem floatExpr(-Infinity) <>  -1.0   or
6401                     -1.0   rem floatExpr(   -13.25) <>  -1.0   or
6402                     -1.0   rem floatExpr(    -1.0 ) <>   0.0   or
6403                     -1.0   rem floatExpr(    -0.75) <>  -0.25  or
6404        not isNaN(   -1.0   rem floatExpr(    -0.0 ))           or
6405        not isNaN(   -1.0   rem floatExpr(     0.0 ))           or
6406                     -1.0   rem floatExpr(     0.75) <>  -0.25  or
6407                     -1.0   rem floatExpr(     1.0 ) <>   0.0   or
6408                     -1.0   rem floatExpr(    13.25) <>  -1.0   or
6409                     -1.0   rem floatExpr( Infinity) <>  -1.0   or
6410        not isNaN(   -0.0   rem floatExpr(      NaN))           or
6411                     -0.0   rem floatExpr(-Infinity) <>   0.0   or
6412                     -0.0   rem floatExpr(   -13.25) <>   0.0   or
6413                     -0.0   rem floatExpr(    -1.0 ) <>   0.0   or
6414                     -0.0   rem floatExpr(    -0.75) <>   0.0   or
6415        not isNaN(   -0.0   rem floatExpr(    -0.0 ))           or
6416        not isNaN(   -0.0   rem floatExpr(     0.0 ))           or
6417                     -0.0   rem floatExpr(     0.75) <>   0.0   or
6418                     -0.0   rem floatExpr(     1.0 ) <>   0.0   or
6419                     -0.0   rem floatExpr(    13.25) <>   0.0   or
6420                     -0.0   rem floatExpr( Infinity) <>   0.0   or
6421        not isNaN(    0.0   rem floatExpr(      NaN))           or
6422                      0.0   rem floatExpr(-Infinity) <>   0.0   or
6423                      0.0   rem floatExpr(   -13.25) <>   0.0   or
6424                      0.0   rem floatExpr(    -1.0 ) <>   0.0   or
6425                      0.0   rem floatExpr(    -0.75) <>   0.0   or
6426        not isNaN(    0.0   rem floatExpr(    -0.0 ))           or
6427        not isNaN(    0.0   rem floatExpr(     0.0 ))           or
6428                      0.0   rem floatExpr(     0.75) <>   0.0   or
6429                      0.0   rem floatExpr(     1.0 ) <>   0.0   or
6430                      0.0   rem floatExpr(    13.25) <>   0.0   or
6431                      0.0   rem floatExpr( Infinity) <>   0.0   or
6432        not isNaN(    1.0   rem floatExpr(      NaN))           or
6433                      1.0   rem floatExpr(-Infinity) <>   1.0   or
6434                      1.0   rem floatExpr(   -13.25) <>   1.0   or
6435                      1.0   rem floatExpr(    -1.0 ) <>   0.0   or
6436                      1.0   rem floatExpr(    -0.75) <>   0.25  or
6437        not isNaN(    1.0   rem floatExpr(    -0.0 ))           or
6438        not isNaN(    1.0   rem floatExpr(     0.0 ))           or
6439                      1.0   rem floatExpr(     0.75) <>   0.25  or
6440                      1.0   rem floatExpr(     1.0 ) <>   0.0   or
6441                      1.0   rem floatExpr(    13.25) <>   1.0   or
6442                      1.0   rem floatExpr( Infinity) <>   1.0   or
6443        not isNaN(   31.125 rem floatExpr(      NaN))           or
6444                     31.125 rem floatExpr(-Infinity) <>  31.125 or
6445                     31.125 rem floatExpr(   -13.25) <>   4.625 or
6446                     31.125 rem floatExpr(    -1.0 ) <>   0.125 or
6447                     31.125 rem floatExpr(    -0.75) <>   0.375 or
6448        not isNaN(   31.125 rem floatExpr(    -0.0 ))           or
6449        not isNaN(   31.125 rem floatExpr(     0.0 ))           or
6450                     31.125 rem floatExpr(     0.75) <>   0.375 or
6451                     31.125 rem floatExpr(     1.0 ) <>   0.125 or
6452                     31.125 rem floatExpr(    13.25) <>   4.625 or
6453                     31.125 rem floatExpr( Infinity) <>  31.125 or
6454        not isNaN( Infinity rem floatExpr(      NaN))           or
6455        not isNaN( Infinity rem floatExpr(-Infinity))           or
6456        not isNaN( Infinity rem floatExpr(   -13.25))           or
6457        not isNaN( Infinity rem floatExpr(    -1.0 ))           or
6458        not isNaN( Infinity rem floatExpr(    -0.75))           or
6459        not isNaN( Infinity rem floatExpr(    -0.0 ))           or
6460        not isNaN( Infinity rem floatExpr(     0.0 ))           or
6461        not isNaN( Infinity rem floatExpr(     0.75))           or
6462        not isNaN( Infinity rem floatExpr(     1.0 ))           or
6463        not isNaN( Infinity rem floatExpr(    13.25))           or
6464        not isNaN( Infinity rem floatExpr( Infinity))           then
6465      writeln(" ***** Remainder does not work correct. (3)");
6466      okay := FALSE;
6467    end if;
6468
6469    if  not isNaN(floatExpr(      NaN) rem floatExpr(      NaN))           or
6470        not isNaN(floatExpr(      NaN) rem floatExpr(-Infinity))           or
6471        not isNaN(floatExpr(      NaN) rem floatExpr(   -13.25))           or
6472        not isNaN(floatExpr(      NaN) rem floatExpr(    -1.0 ))           or
6473        not isNaN(floatExpr(      NaN) rem floatExpr(    -0.75))           or
6474        not isNaN(floatExpr(      NaN) rem floatExpr(    -0.0 ))           or
6475        not isNaN(floatExpr(      NaN) rem floatExpr(     0.0 ))           or
6476        not isNaN(floatExpr(      NaN) rem floatExpr(     0.75))           or
6477        not isNaN(floatExpr(      NaN) rem floatExpr(     1.0 ))           or
6478        not isNaN(floatExpr(      NaN) rem floatExpr(    13.25))           or
6479        not isNaN(floatExpr(      NaN) rem floatExpr( Infinity))           or
6480        not isNaN(floatExpr(-Infinity) rem floatExpr(      NaN))           or
6481        not isNaN(floatExpr(-Infinity) rem floatExpr(-Infinity))           or
6482        not isNaN(floatExpr(-Infinity) rem floatExpr(   -13.25))           or
6483        not isNaN(floatExpr(-Infinity) rem floatExpr(    -1.0 ))           or
6484        not isNaN(floatExpr(-Infinity) rem floatExpr(    -0.75))           or
6485        not isNaN(floatExpr(-Infinity) rem floatExpr(    -0.0 ))           or
6486        not isNaN(floatExpr(-Infinity) rem floatExpr(     0.0 ))           or
6487        not isNaN(floatExpr(-Infinity) rem floatExpr(     0.75))           or
6488        not isNaN(floatExpr(-Infinity) rem floatExpr(     1.0 ))           or
6489        not isNaN(floatExpr(-Infinity) rem floatExpr(    13.25))           or
6490        not isNaN(floatExpr(-Infinity) rem floatExpr( Infinity))           or
6491        not isNaN(floatExpr(  -31.125) rem floatExpr(      NaN))           or
6492                  floatExpr(  -31.125) rem floatExpr(-Infinity) <> -31.125 or
6493                  floatExpr(  -31.125) rem floatExpr(   -13.25) <>  -4.625 or
6494                  floatExpr(  -31.125) rem floatExpr(    -1.0 ) <>  -0.125 or
6495                  floatExpr(  -31.125) rem floatExpr(    -0.75) <>  -0.375 or
6496        not isNaN(floatExpr(  -31.125) rem floatExpr(    -0.0 ))           or
6497        not isNaN(floatExpr(  -31.125) rem floatExpr(     0.0 ))           or
6498                  floatExpr(  -31.125) rem floatExpr(     0.75) <>  -0.375 or
6499                  floatExpr(  -31.125) rem floatExpr(     1.0 ) <>  -0.125 or
6500                  floatExpr(  -31.125) rem floatExpr(    13.25) <>  -4.625 or
6501                  floatExpr(  -31.125) rem floatExpr( Infinity) <> -31.125 or
6502        not isNaN(floatExpr(   -1.0  ) rem floatExpr(      NaN))           or
6503                  floatExpr(   -1.0  ) rem floatExpr(-Infinity) <>  -1.0   or
6504                  floatExpr(   -1.0  ) rem floatExpr(   -13.25) <>  -1.0   or
6505                  floatExpr(   -1.0  ) rem floatExpr(    -1.0 ) <>   0.0   or
6506                  floatExpr(   -1.0  ) rem floatExpr(    -0.75) <>  -0.25  or
6507        not isNaN(floatExpr(   -1.0  ) rem floatExpr(    -0.0 ))           or
6508        not isNaN(floatExpr(   -1.0  ) rem floatExpr(     0.0 ))           or
6509                  floatExpr(   -1.0  ) rem floatExpr(     0.75) <>  -0.25  or
6510                  floatExpr(   -1.0  ) rem floatExpr(     1.0 ) <>   0.0   or
6511                  floatExpr(   -1.0  ) rem floatExpr(    13.25) <>  -1.0   or
6512                  floatExpr(   -1.0  ) rem floatExpr( Infinity) <>  -1.0   or
6513        not isNaN(floatExpr(   -0.0  ) rem floatExpr(      NaN))           or
6514                  floatExpr(   -0.0  ) rem floatExpr(-Infinity) <>   0.0   or
6515                  floatExpr(   -0.0  ) rem floatExpr(   -13.25) <>   0.0   or
6516                  floatExpr(   -0.0  ) rem floatExpr(    -1.0 ) <>   0.0   or
6517                  floatExpr(   -0.0  ) rem floatExpr(    -0.75) <>   0.0   or
6518        not isNaN(floatExpr(   -0.0  ) rem floatExpr(    -0.0 ))           or
6519        not isNaN(floatExpr(   -0.0  ) rem floatExpr(     0.0 ))           or
6520                  floatExpr(   -0.0  ) rem floatExpr(     0.75) <>   0.0   or
6521                  floatExpr(   -0.0  ) rem floatExpr(     1.0 ) <>   0.0   or
6522                  floatExpr(   -0.0  ) rem floatExpr(    13.25) <>   0.0   or
6523                  floatExpr(   -0.0  ) rem floatExpr( Infinity) <>   0.0   or
6524        not isNaN(floatExpr(    0.0  ) rem floatExpr(      NaN))           or
6525                  floatExpr(    0.0  ) rem floatExpr(-Infinity) <>   0.0   or
6526                  floatExpr(    0.0  ) rem floatExpr(   -13.25) <>   0.0   or
6527                  floatExpr(    0.0  ) rem floatExpr(    -1.0 ) <>   0.0   or
6528                  floatExpr(    0.0  ) rem floatExpr(    -0.75) <>   0.0   or
6529        not isNaN(floatExpr(    0.0  ) rem floatExpr(    -0.0 ))           or
6530        not isNaN(floatExpr(    0.0  ) rem floatExpr(     0.0 ))           or
6531                  floatExpr(    0.0  ) rem floatExpr(     0.75) <>   0.0   or
6532                  floatExpr(    0.0  ) rem floatExpr(     1.0 ) <>   0.0   or
6533                  floatExpr(    0.0  ) rem floatExpr(    13.25) <>   0.0   or
6534                  floatExpr(    0.0  ) rem floatExpr( Infinity) <>   0.0   or
6535        not isNaN(floatExpr(    1.0  ) rem floatExpr(      NaN))           or
6536                  floatExpr(    1.0  ) rem floatExpr(-Infinity) <>   1.0   or
6537                  floatExpr(    1.0  ) rem floatExpr(   -13.25) <>   1.0   or
6538                  floatExpr(    1.0  ) rem floatExpr(    -1.0 ) <>   0.0   or
6539                  floatExpr(    1.0  ) rem floatExpr(    -0.75) <>   0.25  or
6540        not isNaN(floatExpr(    1.0  ) rem floatExpr(    -0.0 ))           or
6541        not isNaN(floatExpr(    1.0  ) rem floatExpr(     0.0 ))           or
6542                  floatExpr(    1.0  ) rem floatExpr(     0.75) <>   0.25  or
6543                  floatExpr(    1.0  ) rem floatExpr(     1.0 ) <>   0.0   or
6544                  floatExpr(    1.0  ) rem floatExpr(    13.25) <>   1.0   or
6545                  floatExpr(    1.0  ) rem floatExpr( Infinity) <>   1.0   or
6546        not isNaN(floatExpr(   31.125) rem floatExpr(      NaN))           or
6547                  floatExpr(   31.125) rem floatExpr(-Infinity) <>  31.125 or
6548                  floatExpr(   31.125) rem floatExpr(   -13.25) <>   4.625 or
6549                  floatExpr(   31.125) rem floatExpr(    -1.0 ) <>   0.125 or
6550                  floatExpr(   31.125) rem floatExpr(    -0.75) <>   0.375 or
6551        not isNaN(floatExpr(   31.125) rem floatExpr(    -0.0 ))           or
6552        not isNaN(floatExpr(   31.125) rem floatExpr(     0.0 ))           or
6553                  floatExpr(   31.125) rem floatExpr(     0.75) <>   0.375 or
6554                  floatExpr(   31.125) rem floatExpr(     1.0 ) <>   0.125 or
6555                  floatExpr(   31.125) rem floatExpr(    13.25) <>   4.625 or
6556                  floatExpr(   31.125) rem floatExpr( Infinity) <>  31.125 or
6557        not isNaN(floatExpr( Infinity) rem floatExpr(      NaN))           or
6558        not isNaN(floatExpr( Infinity) rem floatExpr(-Infinity))           or
6559        not isNaN(floatExpr( Infinity) rem floatExpr(   -13.25))           or
6560        not isNaN(floatExpr( Infinity) rem floatExpr(    -1.0 ))           or
6561        not isNaN(floatExpr( Infinity) rem floatExpr(    -0.75))           or
6562        not isNaN(floatExpr( Infinity) rem floatExpr(    -0.0 ))           or
6563        not isNaN(floatExpr( Infinity) rem floatExpr(     0.0 ))           or
6564        not isNaN(floatExpr( Infinity) rem floatExpr(     0.75))           or
6565        not isNaN(floatExpr( Infinity) rem floatExpr(     1.0 ))           or
6566        not isNaN(floatExpr( Infinity) rem floatExpr(    13.25))           or
6567        not isNaN(floatExpr( Infinity) rem floatExpr( Infinity))           then
6568      writeln(" ***** Remainder does not work correct. (4)");
6569      okay := FALSE;
6570    end if;
6571
6572    if okay then
6573      writeln("Remainder works correct for selected values.");
6574    else
6575      writeln(" ***** Remainder does not work correct.");
6576    end if;
6577  end func;
6578
6579
6580const proc: check_modulo is func
6581  local
6582    var boolean: okay is TRUE;
6583  begin
6584    if  not isNaN(      NaN mod       NaN)             or
6585        not isNaN(      NaN mod -Infinity)             or
6586        not isNaN(      NaN mod    -13.25)             or
6587        not isNaN(      NaN mod     -1.0 )             or
6588        not isNaN(      NaN mod     -0.75)             or
6589        not isNaN(      NaN mod     -0.0 )             or
6590        not isNaN(      NaN mod      0.0 )             or
6591        not isNaN(      NaN mod      0.75)             or
6592        not isNaN(      NaN mod      1.0 )             or
6593        not isNaN(      NaN mod     13.25)             or
6594        not isNaN(      NaN mod  Infinity)             or
6595        not isNaN(-Infinity mod       NaN)             or
6596        not isNaN(-Infinity mod -Infinity)             or
6597        not isNaN(-Infinity mod    -13.25)             or
6598        not isNaN(-Infinity mod     -1.0 )             or
6599        not isNaN(-Infinity mod     -0.75)             or
6600        not isNaN(-Infinity mod     -0.0 )             or
6601        not isNaN(-Infinity mod      0.0 )             or
6602        not isNaN(-Infinity mod      0.75)             or
6603        not isNaN(-Infinity mod      1.0 )             or
6604        not isNaN(-Infinity mod     13.25)             or
6605        not isNaN(-Infinity mod  Infinity)             or
6606        not isNaN(  -31.125 mod       NaN)             or
6607                    -31.125 mod -Infinity <>   -31.125 or
6608                    -31.125 mod    -13.25 <>    -4.625 or
6609                    -31.125 mod     -1.0  <>    -0.125 or
6610                    -31.125 mod     -0.75 <>    -0.375 or
6611        not isNaN(  -31.125 mod     -0.0 )             or
6612        not isNaN(  -31.125 mod      0.0 )             or
6613                    -31.125 mod      0.75 <>     0.375 or
6614                    -31.125 mod      1.0  <>     0.875 or
6615                    -31.125 mod     13.25 <>     8.625 or
6616                    -31.125 mod  Infinity <>  Infinity or
6617        not isNaN(   -1.0   mod       NaN)             or
6618                     -1.0   mod -Infinity <>    -1.0   or
6619                     -1.0   mod    -13.25 <>    -1.0   or
6620                     -1.0   mod     -1.0  <>     0.0   or
6621                     -1.0   mod     -0.75 <>    -0.25  or
6622        not isNaN(   -1.0   mod     -0.0 )             or
6623        not isNaN(   -1.0   mod      0.0 )             or
6624                     -1.0   mod      0.75 <>     0.5   or
6625                     -1.0   mod      1.0  <>     0.0   or
6626                     -1.0   mod     13.25 <>    12.25  or
6627                     -1.0   mod  Infinity <>  Infinity or
6628        not isNaN(   -0.0   mod       NaN)             or
6629                     -0.0   mod -Infinity <>     0.0   or
6630                     -0.0   mod    -13.25 <>     0.0   or
6631                     -0.0   mod     -1.0  <>     0.0   or
6632                     -0.0   mod     -0.75 <>     0.0   or
6633        not isNaN(   -0.0   mod     -0.0 )             or
6634        not isNaN(   -0.0   mod      0.0 )             or
6635                     -0.0   mod      0.75 <>     0.0   or
6636                     -0.0   mod      1.0  <>     0.0   or
6637                     -0.0   mod     13.25 <>     0.0   or
6638                     -0.0   mod  Infinity <>     0.0   or
6639        not isNaN(    0.0   mod       NaN)             or
6640                      0.0   mod -Infinity <>     0.0   or
6641                      0.0   mod    -13.25 <>     0.0   or
6642                      0.0   mod     -1.0  <>     0.0   or
6643                      0.0   mod     -0.75 <>     0.0   or
6644        not isNaN(    0.0   mod     -0.0 )             or
6645        not isNaN(    0.0   mod      0.0 )             or
6646                      0.0   mod      0.75 <>     0.0   or
6647                      0.0   mod      1.0  <>     0.0   or
6648                      0.0   mod     13.25 <>     0.0   or
6649                      0.0   mod  Infinity <>     0.0   or
6650        not isNaN(    1.0   mod       NaN)             or
6651                      1.0   mod -Infinity <> -Infinity or
6652                      1.0   mod    -13.25 <>   -12.25  or
6653                      1.0   mod     -1.0  <>     0.0   or
6654                      1.0   mod     -0.75 <>    -0.5   or
6655        not isNaN(    1.0   mod     -0.0 )             or
6656        not isNaN(    1.0   mod      0.0 )             or
6657                      1.0   mod      0.75 <>     0.25  or
6658                      1.0   mod      1.0  <>     0.0   or
6659                      1.0   mod     13.25 <>     1.0   or
6660                      1.0   mod  Infinity <>     1.0   or
6661        not isNaN(   31.125 mod       NaN)             or
6662                     31.125 mod -Infinity <> -Infinity or
6663                     31.125 mod    -13.25 <>    -8.625 or
6664                     31.125 mod     -1.0  <>    -0.875 or
6665                     31.125 mod     -0.75 <>    -0.375 or
6666        not isNaN(   31.125 mod     -0.0 )             or
6667        not isNaN(   31.125 mod      0.0 )             or
6668                     31.125 mod      0.75 <>     0.375 or
6669                     31.125 mod      1.0  <>     0.125 or
6670                     31.125 mod     13.25 <>     4.625 or
6671                     31.125 mod  Infinity <>    31.125 or
6672        not isNaN( Infinity mod       NaN)             or
6673        not isNaN( Infinity mod -Infinity)             or
6674        not isNaN( Infinity mod    -13.25)             or
6675        not isNaN( Infinity mod     -1.0 )             or
6676        not isNaN( Infinity mod     -0.75)             or
6677        not isNaN( Infinity mod     -0.0 )             or
6678        not isNaN( Infinity mod      0.0 )             or
6679        not isNaN( Infinity mod      0.75)             or
6680        not isNaN( Infinity mod      1.0 )             or
6681        not isNaN( Infinity mod     13.25)             or
6682        not isNaN( Infinity mod  Infinity)             then
6683      writeln(" ***** Modulo does not work correct. (1)");
6684      okay := FALSE;
6685    end if;
6686
6687    if  not isNaN(floatExpr(      NaN) mod       NaN)             or
6688        not isNaN(floatExpr(      NaN) mod -Infinity)             or
6689        not isNaN(floatExpr(      NaN) mod    -13.25)             or
6690        not isNaN(floatExpr(      NaN) mod     -1.0 )             or
6691        not isNaN(floatExpr(      NaN) mod     -0.75)             or
6692        not isNaN(floatExpr(      NaN) mod     -0.0 )             or
6693        not isNaN(floatExpr(      NaN) mod      0.0 )             or
6694        not isNaN(floatExpr(      NaN) mod      0.75)             or
6695        not isNaN(floatExpr(      NaN) mod      1.0 )             or
6696        not isNaN(floatExpr(      NaN) mod     13.25)             or
6697        not isNaN(floatExpr(      NaN) mod  Infinity)             or
6698        not isNaN(floatExpr(-Infinity) mod       NaN)             or
6699        not isNaN(floatExpr(-Infinity) mod -Infinity)             or
6700        not isNaN(floatExpr(-Infinity) mod    -13.25)             or
6701        not isNaN(floatExpr(-Infinity) mod     -1.0 )             or
6702        not isNaN(floatExpr(-Infinity) mod     -0.75)             or
6703        not isNaN(floatExpr(-Infinity) mod     -0.0 )             or
6704        not isNaN(floatExpr(-Infinity) mod      0.0 )             or
6705        not isNaN(floatExpr(-Infinity) mod      0.75)             or
6706        not isNaN(floatExpr(-Infinity) mod      1.0 )             or
6707        not isNaN(floatExpr(-Infinity) mod     13.25)             or
6708        not isNaN(floatExpr(-Infinity) mod  Infinity)             or
6709        not isNaN(floatExpr(  -31.125) mod       NaN)             or
6710                  floatExpr(  -31.125) mod -Infinity <>   -31.125 or
6711                  floatExpr(  -31.125) mod    -13.25 <>    -4.625 or
6712                  floatExpr(  -31.125) mod     -1.0  <>    -0.125 or
6713                  floatExpr(  -31.125) mod     -0.75 <>    -0.375 or
6714        not isNaN(floatExpr(  -31.125) mod     -0.0 )             or
6715        not isNaN(floatExpr(  -31.125) mod      0.0 )             or
6716                  floatExpr(  -31.125) mod      0.75 <>     0.375 or
6717                  floatExpr(  -31.125) mod      1.0  <>     0.875 or
6718                  floatExpr(  -31.125) mod     13.25 <>     8.625 or
6719                  floatExpr(  -31.125) mod  Infinity <>  Infinity or
6720        not isNaN(floatExpr(   -1.0  ) mod       NaN)             or
6721                  floatExpr(   -1.0  ) mod -Infinity <>    -1.0   or
6722                  floatExpr(   -1.0  ) mod    -13.25 <>    -1.0   or
6723                  floatExpr(   -1.0  ) mod     -1.0  <>     0.0   or
6724                  floatExpr(   -1.0  ) mod     -0.75 <>    -0.25  or
6725        not isNaN(floatExpr(   -1.0  ) mod     -0.0 )             or
6726        not isNaN(floatExpr(   -1.0  ) mod      0.0 )             or
6727                  floatExpr(   -1.0  ) mod      0.75 <>     0.5   or
6728                  floatExpr(   -1.0  ) mod      1.0  <>     0.0   or
6729                  floatExpr(   -1.0  ) mod     13.25 <>    12.25  or
6730                  floatExpr(   -1.0  ) mod  Infinity <>  Infinity or
6731        not isNaN(floatExpr(   -0.0  ) mod       NaN)             or
6732                  floatExpr(   -0.0  ) mod -Infinity <>     0.0   or
6733                  floatExpr(   -0.0  ) mod    -13.25 <>     0.0   or
6734                  floatExpr(   -0.0  ) mod     -1.0  <>     0.0   or
6735                  floatExpr(   -0.0  ) mod     -0.75 <>     0.0   or
6736        not isNaN(floatExpr(   -0.0  ) mod     -0.0 )             or
6737        not isNaN(floatExpr(   -0.0  ) mod      0.0 )             or
6738                  floatExpr(   -0.0  ) mod      0.75 <>     0.0   or
6739                  floatExpr(   -0.0  ) mod      1.0  <>     0.0   or
6740                  floatExpr(   -0.0  ) mod     13.25 <>     0.0   or
6741                  floatExpr(   -0.0  ) mod  Infinity <>     0.0   or
6742        not isNaN(floatExpr(    0.0  ) mod       NaN)             or
6743                  floatExpr(    0.0  ) mod -Infinity <>     0.0   or
6744                  floatExpr(    0.0  ) mod    -13.25 <>     0.0   or
6745                  floatExpr(    0.0  ) mod     -1.0  <>     0.0   or
6746                  floatExpr(    0.0  ) mod     -0.75 <>     0.0   or
6747        not isNaN(floatExpr(    0.0  ) mod     -0.0 )             or
6748        not isNaN(floatExpr(    0.0  ) mod      0.0 )             or
6749                  floatExpr(    0.0  ) mod      0.75 <>     0.0   or
6750                  floatExpr(    0.0  ) mod      1.0  <>     0.0   or
6751                  floatExpr(    0.0  ) mod     13.25 <>     0.0   or
6752                  floatExpr(    0.0  ) mod  Infinity <>     0.0   or
6753        not isNaN(floatExpr(    1.0  ) mod       NaN)             or
6754                  floatExpr(    1.0  ) mod -Infinity <> -Infinity or
6755                  floatExpr(    1.0  ) mod    -13.25 <>   -12.25  or
6756                  floatExpr(    1.0  ) mod     -1.0  <>     0.0   or
6757                  floatExpr(    1.0  ) mod     -0.75 <>    -0.5   or
6758        not isNaN(floatExpr(    1.0  ) mod     -0.0 )             or
6759        not isNaN(floatExpr(    1.0  ) mod      0.0 )             or
6760                  floatExpr(    1.0  ) mod      0.75 <>     0.25  or
6761                  floatExpr(    1.0  ) mod      1.0  <>     0.0   or
6762                  floatExpr(    1.0  ) mod     13.25 <>     1.0   or
6763                  floatExpr(    1.0  ) mod  Infinity <>     1.0   or
6764        not isNaN(floatExpr(   31.125) mod       NaN)             or
6765                  floatExpr(   31.125) mod -Infinity <> -Infinity or
6766                  floatExpr(   31.125) mod    -13.25 <>    -8.625 or
6767                  floatExpr(   31.125) mod     -1.0  <>    -0.875 or
6768                  floatExpr(   31.125) mod     -0.75 <>    -0.375 or
6769        not isNaN(floatExpr(   31.125) mod     -0.0 )             or
6770        not isNaN(floatExpr(   31.125) mod      0.0 )             or
6771                  floatExpr(   31.125) mod      0.75 <>     0.375 or
6772                  floatExpr(   31.125) mod      1.0  <>     0.125 or
6773                  floatExpr(   31.125) mod     13.25 <>     4.625 or
6774                  floatExpr(   31.125) mod  Infinity <>    31.125 or
6775        not isNaN(floatExpr( Infinity) mod       NaN)             or
6776        not isNaN(floatExpr( Infinity) mod -Infinity)             or
6777        not isNaN(floatExpr( Infinity) mod    -13.25)             or
6778        not isNaN(floatExpr( Infinity) mod     -1.0 )             or
6779        not isNaN(floatExpr( Infinity) mod     -0.75)             or
6780        not isNaN(floatExpr( Infinity) mod     -0.0 )             or
6781        not isNaN(floatExpr( Infinity) mod      0.0 )             or
6782        not isNaN(floatExpr( Infinity) mod      0.75)             or
6783        not isNaN(floatExpr( Infinity) mod      1.0 )             or
6784        not isNaN(floatExpr( Infinity) mod     13.25)             or
6785        not isNaN(floatExpr( Infinity) mod  Infinity)             then
6786      writeln(" ***** Modulo does not work correct. (2)");
6787      okay := FALSE;
6788    end if;
6789
6790    if  not isNaN(      NaN mod floatExpr(      NaN))             or
6791        not isNaN(      NaN mod floatExpr(-Infinity))             or
6792        not isNaN(      NaN mod floatExpr(   -13.25))             or
6793        not isNaN(      NaN mod floatExpr(    -1.0 ))             or
6794        not isNaN(      NaN mod floatExpr(    -0.75))             or
6795        not isNaN(      NaN mod floatExpr(    -0.0 ))             or
6796        not isNaN(      NaN mod floatExpr(     0.0 ))             or
6797        not isNaN(      NaN mod floatExpr(     0.75))             or
6798        not isNaN(      NaN mod floatExpr(     1.0 ))             or
6799        not isNaN(      NaN mod floatExpr(    13.25))             or
6800        not isNaN(      NaN mod floatExpr( Infinity))             or
6801        not isNaN(-Infinity mod floatExpr(      NaN))             or
6802        not isNaN(-Infinity mod floatExpr(-Infinity))             or
6803        not isNaN(-Infinity mod floatExpr(   -13.25))             or
6804        not isNaN(-Infinity mod floatExpr(    -1.0 ))             or
6805        not isNaN(-Infinity mod floatExpr(    -0.75))             or
6806        not isNaN(-Infinity mod floatExpr(    -0.0 ))             or
6807        not isNaN(-Infinity mod floatExpr(     0.0 ))             or
6808        not isNaN(-Infinity mod floatExpr(     0.75))             or
6809        not isNaN(-Infinity mod floatExpr(     1.0 ))             or
6810        not isNaN(-Infinity mod floatExpr(    13.25))             or
6811        not isNaN(-Infinity mod floatExpr( Infinity))             or
6812        not isNaN(  -31.125 mod floatExpr(      NaN))             or
6813                    -31.125 mod floatExpr(-Infinity) <>   -31.125 or
6814                    -31.125 mod floatExpr(   -13.25) <>    -4.625 or
6815                    -31.125 mod floatExpr(    -1.0 ) <>    -0.125 or
6816                    -31.125 mod floatExpr(    -0.75) <>    -0.375 or
6817        not isNaN(  -31.125 mod floatExpr(    -0.0 ))             or
6818        not isNaN(  -31.125 mod floatExpr(     0.0 ))             or
6819                    -31.125 mod floatExpr(     0.75) <>     0.375 or
6820                    -31.125 mod floatExpr(     1.0 ) <>     0.875 or
6821                    -31.125 mod floatExpr(    13.25) <>     8.625 or
6822                    -31.125 mod floatExpr( Infinity) <>  Infinity or
6823        not isNaN(   -1.0   mod floatExpr(      NaN))             or
6824                     -1.0   mod floatExpr(-Infinity) <>    -1.0   or
6825                     -1.0   mod floatExpr(   -13.25) <>    -1.0   or
6826                     -1.0   mod floatExpr(    -1.0 ) <>     0.0   or
6827                     -1.0   mod floatExpr(    -0.75) <>    -0.25  or
6828        not isNaN(   -1.0   mod floatExpr(    -0.0 ))             or
6829        not isNaN(   -1.0   mod floatExpr(     0.0 ))             or
6830                     -1.0   mod floatExpr(     0.75) <>     0.5   or
6831                     -1.0   mod floatExpr(     1.0 ) <>     0.0   or
6832                     -1.0   mod floatExpr(    13.25) <>    12.25  or
6833                     -1.0   mod floatExpr( Infinity) <>  Infinity or
6834        not isNaN(   -0.0   mod floatExpr(      NaN))             or
6835                     -0.0   mod floatExpr(-Infinity) <>     0.0   or
6836                     -0.0   mod floatExpr(   -13.25) <>     0.0   or
6837                     -0.0   mod floatExpr(    -1.0 ) <>     0.0   or
6838                     -0.0   mod floatExpr(    -0.75) <>     0.0   or
6839        not isNaN(   -0.0   mod floatExpr(    -0.0 ))             or
6840        not isNaN(   -0.0   mod floatExpr(     0.0 ))             or
6841                     -0.0   mod floatExpr(     0.75) <>     0.0   or
6842                     -0.0   mod floatExpr(     1.0 ) <>     0.0   or
6843                     -0.0   mod floatExpr(    13.25) <>     0.0   or
6844                     -0.0   mod floatExpr( Infinity) <>     0.0   or
6845        not isNaN(    0.0   mod floatExpr(      NaN))             or
6846                      0.0   mod floatExpr(-Infinity) <>     0.0   or
6847                      0.0   mod floatExpr(   -13.25) <>     0.0   or
6848                      0.0   mod floatExpr(    -1.0 ) <>     0.0   or
6849                      0.0   mod floatExpr(    -0.75) <>     0.0   or
6850        not isNaN(    0.0   mod floatExpr(    -0.0 ))             or
6851        not isNaN(    0.0   mod floatExpr(     0.0 ))             or
6852                      0.0   mod floatExpr(     0.75) <>     0.0   or
6853                      0.0   mod floatExpr(     1.0 ) <>     0.0   or
6854                      0.0   mod floatExpr(    13.25) <>     0.0   or
6855                      0.0   mod floatExpr( Infinity) <>     0.0   or
6856        not isNaN(    1.0   mod floatExpr(      NaN))             or
6857                      1.0   mod floatExpr(-Infinity) <> -Infinity or
6858                      1.0   mod floatExpr(   -13.25) <>   -12.25  or
6859                      1.0   mod floatExpr(    -1.0 ) <>     0.0   or
6860                      1.0   mod floatExpr(    -0.75) <>    -0.5   or
6861        not isNaN(    1.0   mod floatExpr(    -0.0 ))             or
6862        not isNaN(    1.0   mod floatExpr(     0.0 ))             or
6863                      1.0   mod floatExpr(     0.75) <>     0.25  or
6864                      1.0   mod floatExpr(     1.0 ) <>     0.0   or
6865                      1.0   mod floatExpr(    13.25) <>     1.0   or
6866                      1.0   mod floatExpr( Infinity) <>     1.0   or
6867        not isNaN(   31.125 mod floatExpr(      NaN))             or
6868                     31.125 mod floatExpr(-Infinity) <> -Infinity or
6869                     31.125 mod floatExpr(   -13.25) <>    -8.625 or
6870                     31.125 mod floatExpr(    -1.0 ) <>    -0.875 or
6871                     31.125 mod floatExpr(    -0.75) <>    -0.375 or
6872        not isNaN(   31.125 mod floatExpr(    -0.0 ))             or
6873        not isNaN(   31.125 mod floatExpr(     0.0 ))             or
6874                     31.125 mod floatExpr(     0.75) <>     0.375 or
6875                     31.125 mod floatExpr(     1.0 ) <>     0.125 or
6876                     31.125 mod floatExpr(    13.25) <>     4.625 or
6877                     31.125 mod floatExpr( Infinity) <>    31.125 or
6878        not isNaN( Infinity mod floatExpr(      NaN))             or
6879        not isNaN( Infinity mod floatExpr(-Infinity))             or
6880        not isNaN( Infinity mod floatExpr(   -13.25))             or
6881        not isNaN( Infinity mod floatExpr(    -1.0 ))             or
6882        not isNaN( Infinity mod floatExpr(    -0.75))             or
6883        not isNaN( Infinity mod floatExpr(    -0.0 ))             or
6884        not isNaN( Infinity mod floatExpr(     0.0 ))             or
6885        not isNaN( Infinity mod floatExpr(     0.75))             or
6886        not isNaN( Infinity mod floatExpr(     1.0 ))             or
6887        not isNaN( Infinity mod floatExpr(    13.25))             or
6888        not isNaN( Infinity mod floatExpr( Infinity))             then
6889      writeln(" ***** Modulo does not work correct. (3)");
6890      okay := FALSE;
6891    end if;
6892
6893    if  not isNaN(floatExpr(      NaN) mod floatExpr(      NaN))             or
6894        not isNaN(floatExpr(      NaN) mod floatExpr(-Infinity))             or
6895        not isNaN(floatExpr(      NaN) mod floatExpr(   -13.25))             or
6896        not isNaN(floatExpr(      NaN) mod floatExpr(    -1.0 ))             or
6897        not isNaN(floatExpr(      NaN) mod floatExpr(    -0.75))             or
6898        not isNaN(floatExpr(      NaN) mod floatExpr(    -0.0 ))             or
6899        not isNaN(floatExpr(      NaN) mod floatExpr(     0.0 ))             or
6900        not isNaN(floatExpr(      NaN) mod floatExpr(     0.75))             or
6901        not isNaN(floatExpr(      NaN) mod floatExpr(     1.0 ))             or
6902        not isNaN(floatExpr(      NaN) mod floatExpr(    13.25))             or
6903        not isNaN(floatExpr(      NaN) mod floatExpr( Infinity))             or
6904        not isNaN(floatExpr(-Infinity) mod floatExpr(      NaN))             or
6905        not isNaN(floatExpr(-Infinity) mod floatExpr(-Infinity))             or
6906        not isNaN(floatExpr(-Infinity) mod floatExpr(   -13.25))             or
6907        not isNaN(floatExpr(-Infinity) mod floatExpr(    -1.0 ))             or
6908        not isNaN(floatExpr(-Infinity) mod floatExpr(    -0.75))             or
6909        not isNaN(floatExpr(-Infinity) mod floatExpr(    -0.0 ))             or
6910        not isNaN(floatExpr(-Infinity) mod floatExpr(     0.0 ))             or
6911        not isNaN(floatExpr(-Infinity) mod floatExpr(     0.75))             or
6912        not isNaN(floatExpr(-Infinity) mod floatExpr(     1.0 ))             or
6913        not isNaN(floatExpr(-Infinity) mod floatExpr(    13.25))             or
6914        not isNaN(floatExpr(-Infinity) mod floatExpr( Infinity))             or
6915        not isNaN(floatExpr(  -31.125) mod floatExpr(      NaN))             or
6916                  floatExpr(  -31.125) mod floatExpr(-Infinity) <>   -31.125 or
6917                  floatExpr(  -31.125) mod floatExpr(   -13.25) <>    -4.625 or
6918                  floatExpr(  -31.125) mod floatExpr(    -1.0 ) <>    -0.125 or
6919                  floatExpr(  -31.125) mod floatExpr(    -0.75) <>    -0.375 or
6920        not isNaN(floatExpr(  -31.125) mod floatExpr(    -0.0 ))             or
6921        not isNaN(floatExpr(  -31.125) mod floatExpr(     0.0 ))             or
6922                  floatExpr(  -31.125) mod floatExpr(     0.75) <>     0.375 or
6923                  floatExpr(  -31.125) mod floatExpr(     1.0 ) <>     0.875 or
6924                  floatExpr(  -31.125) mod floatExpr(    13.25) <>     8.625 or
6925                  floatExpr(  -31.125) mod floatExpr( Infinity) <>  Infinity or
6926        not isNaN(floatExpr(   -1.0  ) mod floatExpr(      NaN))             or
6927                  floatExpr(   -1.0  ) mod floatExpr(-Infinity) <>    -1.0   or
6928                  floatExpr(   -1.0  ) mod floatExpr(   -13.25) <>    -1.0   or
6929                  floatExpr(   -1.0  ) mod floatExpr(    -1.0 ) <>     0.0   or
6930                  floatExpr(   -1.0  ) mod floatExpr(    -0.75) <>    -0.25  or
6931        not isNaN(floatExpr(   -1.0  ) mod floatExpr(    -0.0 ))             or
6932        not isNaN(floatExpr(   -1.0  ) mod floatExpr(     0.0 ))             or
6933                  floatExpr(   -1.0  ) mod floatExpr(     0.75) <>     0.5   or
6934                  floatExpr(   -1.0  ) mod floatExpr(     1.0 ) <>     0.0   or
6935                  floatExpr(   -1.0  ) mod floatExpr(    13.25) <>    12.25  or
6936                  floatExpr(   -1.0  ) mod floatExpr( Infinity) <>  Infinity or
6937        not isNaN(floatExpr(   -0.0  ) mod floatExpr(      NaN))             or
6938                  floatExpr(   -0.0  ) mod floatExpr(-Infinity) <>     0.0   or
6939                  floatExpr(   -0.0  ) mod floatExpr(   -13.25) <>     0.0   or
6940                  floatExpr(   -0.0  ) mod floatExpr(    -1.0 ) <>     0.0   or
6941                  floatExpr(   -0.0  ) mod floatExpr(    -0.75) <>     0.0   or
6942        not isNaN(floatExpr(   -0.0  ) mod floatExpr(    -0.0 ))             or
6943        not isNaN(floatExpr(   -0.0  ) mod floatExpr(     0.0 ))             or
6944                  floatExpr(   -0.0  ) mod floatExpr(     0.75) <>     0.0   or
6945                  floatExpr(   -0.0  ) mod floatExpr(     1.0 ) <>     0.0   or
6946                  floatExpr(   -0.0  ) mod floatExpr(    13.25) <>     0.0   or
6947                  floatExpr(   -0.0  ) mod floatExpr( Infinity) <>     0.0   or
6948        not isNaN(floatExpr(    0.0  ) mod floatExpr(      NaN))             or
6949                  floatExpr(    0.0  ) mod floatExpr(-Infinity) <>     0.0   or
6950                  floatExpr(    0.0  ) mod floatExpr(   -13.25) <>     0.0   or
6951                  floatExpr(    0.0  ) mod floatExpr(    -1.0 ) <>     0.0   or
6952                  floatExpr(    0.0  ) mod floatExpr(    -0.75) <>     0.0   or
6953        not isNaN(floatExpr(    0.0  ) mod floatExpr(    -0.0 ))             or
6954        not isNaN(floatExpr(    0.0  ) mod floatExpr(     0.0 ))             or
6955                  floatExpr(    0.0  ) mod floatExpr(     0.75) <>     0.0   or
6956                  floatExpr(    0.0  ) mod floatExpr(     1.0 ) <>     0.0   or
6957                  floatExpr(    0.0  ) mod floatExpr(    13.25) <>     0.0   or
6958                  floatExpr(    0.0  ) mod floatExpr( Infinity) <>     0.0   or
6959        not isNaN(floatExpr(    1.0  ) mod floatExpr(      NaN))             or
6960                  floatExpr(    1.0  ) mod floatExpr(-Infinity) <> -Infinity or
6961                  floatExpr(    1.0  ) mod floatExpr(   -13.25) <>   -12.25  or
6962                  floatExpr(    1.0  ) mod floatExpr(    -1.0 ) <>     0.0   or
6963                  floatExpr(    1.0  ) mod floatExpr(    -0.75) <>    -0.5   or
6964        not isNaN(floatExpr(    1.0  ) mod floatExpr(    -0.0 ))             or
6965        not isNaN(floatExpr(    1.0  ) mod floatExpr(     0.0 ))             or
6966                  floatExpr(    1.0  ) mod floatExpr(     0.75) <>     0.25  or
6967                  floatExpr(    1.0  ) mod floatExpr(     1.0 ) <>     0.0   or
6968                  floatExpr(    1.0  ) mod floatExpr(    13.25) <>     1.0   or
6969                  floatExpr(    1.0  ) mod floatExpr( Infinity) <>     1.0   or
6970        not isNaN(floatExpr(   31.125) mod floatExpr(      NaN))             or
6971                  floatExpr(   31.125) mod floatExpr(-Infinity) <> -Infinity or
6972                  floatExpr(   31.125) mod floatExpr(   -13.25) <>    -8.625 or
6973                  floatExpr(   31.125) mod floatExpr(    -1.0 ) <>    -0.875 or
6974                  floatExpr(   31.125) mod floatExpr(    -0.75) <>    -0.375 or
6975        not isNaN(floatExpr(   31.125) mod floatExpr(    -0.0 ))             or
6976        not isNaN(floatExpr(   31.125) mod floatExpr(     0.0 ))             or
6977                  floatExpr(   31.125) mod floatExpr(     0.75) <>     0.375 or
6978                  floatExpr(   31.125) mod floatExpr(     1.0 ) <>     0.125 or
6979                  floatExpr(   31.125) mod floatExpr(    13.25) <>     4.625 or
6980                  floatExpr(   31.125) mod floatExpr( Infinity) <>    31.125 or
6981        not isNaN(floatExpr( Infinity) mod floatExpr(      NaN))             or
6982        not isNaN(floatExpr( Infinity) mod floatExpr(-Infinity))             or
6983        not isNaN(floatExpr( Infinity) mod floatExpr(   -13.25))             or
6984        not isNaN(floatExpr( Infinity) mod floatExpr(    -1.0 ))             or
6985        not isNaN(floatExpr( Infinity) mod floatExpr(    -0.75))             or
6986        not isNaN(floatExpr( Infinity) mod floatExpr(    -0.0 ))             or
6987        not isNaN(floatExpr( Infinity) mod floatExpr(     0.0 ))             or
6988        not isNaN(floatExpr( Infinity) mod floatExpr(     0.75))             or
6989        not isNaN(floatExpr( Infinity) mod floatExpr(     1.0 ))             or
6990        not isNaN(floatExpr( Infinity) mod floatExpr(    13.25))             or
6991        not isNaN(floatExpr( Infinity) mod floatExpr( Infinity))             then
6992      writeln(" ***** Modulo does not work correct. (4)");
6993      okay := FALSE;
6994    end if;
6995
6996    if okay then
6997      writeln("Modulo works correct for selected values.");
6998    else
6999      writeln(" ***** Modulo does not work correct.");
7000    end if;
7001  end func;
7002
7003
7004const proc: check_power is func
7005  local
7006    const float: minusZero is -0.0;
7007    const float: minusOne is -1.0;
7008    const float: minusTwo is -2.0;
7009    const float: minusThree is -3.0;
7010    var boolean: okay is TRUE;
7011  begin
7012    if            (-2.0) ** (-2.0) <>  0.25 or
7013        not isNaN((-2.0) ** (-1.5))         or
7014                  (-2.0) ** (-1.0) <> -0.5  or
7015        not isNaN((-2.0) ** (-0.5))         or
7016                  (-2.0) **   0.0  <>  1.0  or
7017        not isNaN((-2.0) **   0.5 )         or
7018                  (-2.0) **   1.0  <> -2.0  or
7019        not isNaN((-2.0) **   1.5 )         or
7020                  (-2.0) **   2.0  <>  4.0  or
7021        #         (-1.5) ** (-2.0) <>  0.444444 or
7022        not isNaN((-1.5) ** (-1.5))         or
7023        #         (-1.5) ** (-1.0) <> -0.666667 or
7024        not isNaN((-1.5) ** (-0.5))         or
7025                  (-1.5) **   0.0  <>  1.0  or
7026        not isNaN((-1.5) **   0.5 )         or
7027                  (-1.5) **   1.0  <> -1.5  or
7028        not isNaN((-1.5) **   1.5 )         or
7029                  (-1.5) **   2.0  <>  2.25 or
7030                  (-1.0) ** (-2.0) <>  1.0  or
7031        not isNaN((-1.0) ** (-1.5))         or
7032                  (-1.0) ** (-1.0) <> -1.0  or
7033        not isNaN((-1.0) ** (-0.5))         or
7034                  (-1.0) **   0.0  <>  1.0  or
7035        not isNaN((-1.0) **   0.5 )         or
7036                  (-1.0) **   1.0  <> -1.0  or
7037        not isNaN((-1.0) **   1.5 )         or
7038                  (-1.0) **   2.0  <>  1.0  or
7039                  (-0.5) ** (-2.0) <>  4.0  or
7040        not isNaN((-0.5) ** (-1.5))         or
7041                  (-0.5) ** (-1.0) <> -2.0  or
7042        not isNaN((-0.5) ** (-0.5))         or
7043                  (-0.5) **   0.0  <>  1.0  or
7044        not isNaN((-0.5) **   0.5 )         or
7045                  (-0.5) **   1.0  <> -0.5  or
7046        not isNaN((-0.5) **   1.5 )         or
7047                  (-0.5) **   2.0  <> 0.25  or
7048                  (-0.0) ** (-2.5) <> Infinity or
7049                  (-0.0) ** (-1.5) <> Infinity or
7050                  (-0.0) ** (-0.5) <> Infinity or
7051                  (-0.0) **   0.5  <> 0.0 or
7052                  (-0.0) **   1.5  <> 0.0 or
7053                  (-0.0) **   2.5  <> 0.0 or
7054                    0.0  ** (-2.5) <> Infinity or
7055                    0.0  ** (-1.5) <> Infinity or
7056                    0.0  ** (-0.5) <> Infinity or
7057                    0.0  **   0.5  <> 0.0 or
7058                    0.0  **   1.5  <> 0.0 or
7059                    0.0  **   2.5  <> 0.0 or
7060                    0.5  ** (-2.0) <> 4.0 or
7061        #           0.5  ** (-1.5) <> 2.828427 or
7062                    0.5  ** (-1.0) <> 2.0 or
7063        #           0.5  ** (-0.5) <> 1.414214 or
7064                    0.5  **   0.0  <> 1.0 or
7065        #           0.5  **   0.5  <> 0.707107 or
7066                    0.5  **   1.0  <> 0.5 or
7067        #           0.5  **   1.5  <> 0.353553 or
7068                    0.5  **   2.0  <> 0.25 or
7069                    1.0  ** (-2.0) <> 1.0 or
7070                    1.0  ** (-1.5) <> 1.0 or
7071                    1.0  ** (-1.0) <> 1.0 or
7072                    1.0  ** (-0.5) <> 1.0 or
7073                    1.0  **   0.0  <> 1.0 or
7074                    1.0  **   0.5  <> 1.0 or
7075                    1.0  **   1.0  <> 1.0 or
7076                    1.0  **   1.5  <> 1.0 or
7077                    1.0  **   2.0  <> 1.0 or
7078        #           1.5  ** (-2.0) <> 0.444444 or
7079        #           1.5  ** (-1.5) <> 0.544331 or
7080        #           1.5  ** (-1.0) <> 0.666667 or
7081        #           1.5  ** (-0.5) <> 0.816497 or
7082                    1.5  **   0.0  <> 1.0 or
7083        #           1.5  **   0.5  <> 1.224745 or
7084                    1.5  **   1.0  <> 1.5 or
7085        #           1.5  **   1.5  <> 1.837117 or
7086                    1.5  **   2.0  <> 2.25 then
7087      writeln(" ***** A ** B does not work correct for selected values.");
7088      okay := FALSE;
7089    end if;
7090
7091    if  (-0.0) **           (-Infinity) <>  Infinity or
7092        (-0.0) ** (-9007199254740994.0) <>  Infinity or # Not exactly represented
7093        (-0.0) ** (-9007199254740993.0) <>  Infinity or # Not exactly represented
7094        (-0.0) ** (-9007199254740992.0) <>  Infinity or
7095        (-0.0) ** (-9007199254740991.0) <> -Infinity or
7096        (-0.0) **       (-4294967297.0) <> -Infinity or
7097        (-0.0) **       (-4294967296.0) <>  Infinity or
7098        (-0.0) **       (-4294967295.0) <> -Infinity or
7099        (-0.0) **       (-2147483649.0) <> -Infinity or
7100        (-0.0) **       (-2147483648.0) <>  Infinity or
7101        (-0.0) **       (-2147483647.0) <> -Infinity or
7102        (-0.0) **               (-30.0) <>  Infinity or
7103        (-0.0) **               (-29.0) <> -Infinity or
7104        (-0.0) **               (-28.0) <>  Infinity or
7105        (-0.0) **               (-27.0) <> -Infinity or
7106        (-0.0) **               (-26.0) <>  Infinity or
7107        (-0.0) **               (-25.0) <> -Infinity or
7108        (-0.0) **               (-24.0) <>  Infinity or
7109        (-0.0) **               (-23.0) <> -Infinity or
7110        (-0.0) **               (-22.0) <>  Infinity or
7111        (-0.0) **               (-21.0) <> -Infinity or
7112        (-0.0) **               (-20.0) <>  Infinity or
7113        (-0.0) **               (-19.0) <> -Infinity or
7114        (-0.0) **               (-18.0) <>  Infinity or
7115        (-0.0) **               (-17.0) <> -Infinity or
7116        (-0.0) **               (-16.0) <>  Infinity or
7117        (-0.0) **               (-15.0) <> -Infinity or
7118        (-0.0) **               (-14.0) <>  Infinity or
7119        (-0.0) **               (-13.0) <> -Infinity or
7120        (-0.0) **               (-12.0) <>  Infinity or
7121        (-0.0) **               (-11.0) <> -Infinity or
7122        (-0.0) **               (-10.0) <>  Infinity or
7123        (-0.0) **                (-9.0) <> -Infinity or
7124        (-0.0) **                (-8.0) <>  Infinity or
7125        (-0.0) **                (-7.0) <> -Infinity or
7126        (-0.0) **                (-6.0) <>  Infinity or
7127        (-0.0) **                (-5.0) <> -Infinity or
7128        (-0.0) **                (-4.0) <>  Infinity or
7129        (-0.0) **                (-3.0) <> -Infinity or
7130        (-0.0) **                (-2.0) <>  Infinity or
7131        (-0.0) **                (-1.0) <> -Infinity or
7132        floatExpr(-0.0) **           (-Infinity) <>  Infinity or
7133        floatExpr(-0.0) ** (-9007199254740994.0) <>  Infinity or # Not exactly represented
7134        floatExpr(-0.0) ** (-9007199254740993.0) <>  Infinity or # Not exactly represented
7135        floatExpr(-0.0) ** (-9007199254740992.0) <>  Infinity or
7136        floatExpr(-0.0) ** (-9007199254740991.0) <> -Infinity or
7137        floatExpr(-0.0) **       (-4294967297.0) <> -Infinity or
7138        floatExpr(-0.0) **       (-4294967296.0) <>  Infinity or
7139        floatExpr(-0.0) **       (-4294967295.0) <> -Infinity or
7140        floatExpr(-0.0) **       (-2147483649.0) <> -Infinity or
7141        floatExpr(-0.0) **       (-2147483648.0) <>  Infinity or
7142        floatExpr(-0.0) **       (-2147483647.0) <> -Infinity or
7143        floatExpr(-0.0) **               (-30.0) <>  Infinity or
7144        floatExpr(-0.0) **               (-29.0) <> -Infinity or
7145        floatExpr(-0.0) **               (-28.0) <>  Infinity or
7146        floatExpr(-0.0) **               (-27.0) <> -Infinity or
7147        floatExpr(-0.0) **               (-26.0) <>  Infinity or
7148        floatExpr(-0.0) **               (-25.0) <> -Infinity or
7149        floatExpr(-0.0) **               (-24.0) <>  Infinity or
7150        floatExpr(-0.0) **               (-23.0) <> -Infinity or
7151        floatExpr(-0.0) **               (-22.0) <>  Infinity or
7152        floatExpr(-0.0) **               (-21.0) <> -Infinity or
7153        floatExpr(-0.0) **               (-20.0) <>  Infinity or
7154        floatExpr(-0.0) **               (-19.0) <> -Infinity or
7155        floatExpr(-0.0) **               (-18.0) <>  Infinity or
7156        floatExpr(-0.0) **               (-17.0) <> -Infinity or
7157        floatExpr(-0.0) **               (-16.0) <>  Infinity or
7158        floatExpr(-0.0) **               (-15.0) <> -Infinity or
7159        floatExpr(-0.0) **               (-14.0) <>  Infinity or
7160        floatExpr(-0.0) **               (-13.0) <> -Infinity or
7161        floatExpr(-0.0) **               (-12.0) <>  Infinity or
7162        floatExpr(-0.0) **               (-11.0) <> -Infinity or
7163        floatExpr(-0.0) **               (-10.0) <>  Infinity or
7164        floatExpr(-0.0) **                (-9.0) <> -Infinity or
7165        floatExpr(-0.0) **                (-8.0) <>  Infinity or
7166        floatExpr(-0.0) **                (-7.0) <> -Infinity or
7167        floatExpr(-0.0) **                (-6.0) <>  Infinity or
7168        floatExpr(-0.0) **                (-5.0) <> -Infinity or
7169        floatExpr(-0.0) **                (-4.0) <>  Infinity or
7170        floatExpr(-0.0) **                (-3.0) <> -Infinity or
7171        floatExpr(-0.0) **                (-2.0) <>  Infinity or
7172        floatExpr(-0.0) **                (-1.0) <> -Infinity or
7173        (-0.0) ** floatExpr(          -Infinity) <>  Infinity or
7174        (-0.0) ** floatExpr(-9007199254740994.0) <>  Infinity or # Not exactly represented
7175        (-0.0) ** floatExpr(-9007199254740993.0) <>  Infinity or # Not exactly represented
7176        (-0.0) ** floatExpr(-9007199254740992.0) <>  Infinity or
7177        (-0.0) ** floatExpr(-9007199254740991.0) <> -Infinity or
7178        (-0.0) ** floatExpr(      -4294967297.0) <> -Infinity or
7179        (-0.0) ** floatExpr(      -4294967296.0) <>  Infinity or
7180        (-0.0) ** floatExpr(      -4294967295.0) <> -Infinity or
7181        (-0.0) ** floatExpr(      -2147483649.0) <> -Infinity or
7182        (-0.0) ** floatExpr(      -2147483648.0) <>  Infinity or
7183        (-0.0) ** floatExpr(      -2147483647.0) <> -Infinity or
7184        (-0.0) ** floatExpr(              -30.0) <>  Infinity or
7185        (-0.0) ** floatExpr(              -29.0) <> -Infinity or
7186        (-0.0) ** floatExpr(              -28.0) <>  Infinity or
7187        (-0.0) ** floatExpr(              -27.0) <> -Infinity or
7188        (-0.0) ** floatExpr(              -26.0) <>  Infinity or
7189        (-0.0) ** floatExpr(              -25.0) <> -Infinity or
7190        (-0.0) ** floatExpr(              -24.0) <>  Infinity or
7191        (-0.0) ** floatExpr(              -23.0) <> -Infinity or
7192        (-0.0) ** floatExpr(              -22.0) <>  Infinity or
7193        (-0.0) ** floatExpr(              -21.0) <> -Infinity or
7194        (-0.0) ** floatExpr(              -20.0) <>  Infinity or
7195        (-0.0) ** floatExpr(              -19.0) <> -Infinity or
7196        (-0.0) ** floatExpr(              -18.0) <>  Infinity or
7197        (-0.0) ** floatExpr(              -17.0) <> -Infinity or
7198        (-0.0) ** floatExpr(              -16.0) <>  Infinity or
7199        (-0.0) ** floatExpr(              -15.0) <> -Infinity or
7200        (-0.0) ** floatExpr(              -14.0) <>  Infinity or
7201        (-0.0) ** floatExpr(              -13.0) <> -Infinity or
7202        (-0.0) ** floatExpr(              -12.0) <>  Infinity or
7203        (-0.0) ** floatExpr(              -11.0) <> -Infinity or
7204        (-0.0) ** floatExpr(              -10.0) <>  Infinity or
7205        (-0.0) ** floatExpr(               -9.0) <> -Infinity or
7206        (-0.0) ** floatExpr(               -8.0) <>  Infinity or
7207        (-0.0) ** floatExpr(               -7.0) <> -Infinity or
7208        (-0.0) ** floatExpr(               -6.0) <>  Infinity or
7209        (-0.0) ** floatExpr(               -5.0) <> -Infinity or
7210        (-0.0) ** floatExpr(               -4.0) <>  Infinity or
7211        (-0.0) ** floatExpr(               -3.0) <> -Infinity or
7212        (-0.0) ** floatExpr(               -2.0) <>  Infinity or
7213        (-0.0) ** floatExpr(               -1.0) <> -Infinity or
7214        floatExpr(-0.0) ** floatExpr(          -Infinity) <>  Infinity or
7215        floatExpr(-0.0) ** floatExpr(-9007199254740994.0) <>  Infinity or # Not exactly represented
7216        floatExpr(-0.0) ** floatExpr(-9007199254740993.0) <>  Infinity or # Not exactly represented
7217        floatExpr(-0.0) ** floatExpr(-9007199254740992.0) <>  Infinity or
7218        floatExpr(-0.0) ** floatExpr(-9007199254740991.0) <> -Infinity or
7219        floatExpr(-0.0) ** floatExpr(      -4294967297.0) <> -Infinity or
7220        floatExpr(-0.0) ** floatExpr(      -4294967296.0) <>  Infinity or
7221        floatExpr(-0.0) ** floatExpr(      -4294967295.0) <> -Infinity or
7222        floatExpr(-0.0) ** floatExpr(      -2147483649.0) <> -Infinity or
7223        floatExpr(-0.0) ** floatExpr(      -2147483648.0) <>  Infinity or
7224        floatExpr(-0.0) ** floatExpr(      -2147483647.0) <> -Infinity or
7225        floatExpr(-0.0) ** floatExpr(              -30.0) <>  Infinity or
7226        floatExpr(-0.0) ** floatExpr(              -29.0) <> -Infinity or
7227        floatExpr(-0.0) ** floatExpr(              -28.0) <>  Infinity or
7228        floatExpr(-0.0) ** floatExpr(              -27.0) <> -Infinity or
7229        floatExpr(-0.0) ** floatExpr(              -26.0) <>  Infinity or
7230        floatExpr(-0.0) ** floatExpr(              -25.0) <> -Infinity or
7231        floatExpr(-0.0) ** floatExpr(              -24.0) <>  Infinity or
7232        floatExpr(-0.0) ** floatExpr(              -23.0) <> -Infinity or
7233        floatExpr(-0.0) ** floatExpr(              -22.0) <>  Infinity or
7234        floatExpr(-0.0) ** floatExpr(              -21.0) <> -Infinity or
7235        floatExpr(-0.0) ** floatExpr(              -20.0) <>  Infinity or
7236        floatExpr(-0.0) ** floatExpr(              -19.0) <> -Infinity or
7237        floatExpr(-0.0) ** floatExpr(              -18.0) <>  Infinity or
7238        floatExpr(-0.0) ** floatExpr(              -17.0) <> -Infinity or
7239        floatExpr(-0.0) ** floatExpr(              -16.0) <>  Infinity or
7240        floatExpr(-0.0) ** floatExpr(              -15.0) <> -Infinity or
7241        floatExpr(-0.0) ** floatExpr(              -14.0) <>  Infinity or
7242        floatExpr(-0.0) ** floatExpr(              -13.0) <> -Infinity or
7243        floatExpr(-0.0) ** floatExpr(              -12.0) <>  Infinity or
7244        floatExpr(-0.0) ** floatExpr(              -11.0) <> -Infinity or
7245        floatExpr(-0.0) ** floatExpr(              -10.0) <>  Infinity or
7246        floatExpr(-0.0) ** floatExpr(               -9.0) <> -Infinity or
7247        floatExpr(-0.0) ** floatExpr(               -8.0) <>  Infinity or
7248        floatExpr(-0.0) ** floatExpr(               -7.0) <> -Infinity or
7249        floatExpr(-0.0) ** floatExpr(               -6.0) <>  Infinity or
7250        floatExpr(-0.0) ** floatExpr(               -5.0) <> -Infinity or
7251        floatExpr(-0.0) ** floatExpr(               -4.0) <>  Infinity or
7252        floatExpr(-0.0) ** floatExpr(               -3.0) <> -Infinity or
7253        floatExpr(-0.0) ** floatExpr(               -2.0) <>  Infinity or
7254        floatExpr(-0.0) ** floatExpr(               -1.0) <> -Infinity then
7255      writeln(" ***** (-0.0) ** B with negative B does not return Infinity respectively -Infinity.");
7256      okay := FALSE;
7257    end if;
7258
7259   if                      (-0.0) **                0.0 <> 1.0 or
7260        not isNegativeZero((-0.0) **                1.0) or
7261        not isPositiveZero((-0.0) **                2.0) or
7262        not isNegativeZero((-0.0) **                3.0) or
7263        not isPositiveZero((-0.0) **                4.0) or
7264        not isNegativeZero((-0.0) **                5.0) or
7265        not isPositiveZero((-0.0) **                6.0) or
7266        not isNegativeZero((-0.0) **                7.0) or
7267        not isPositiveZero((-0.0) **                8.0) or
7268        not isNegativeZero((-0.0) **                9.0) or
7269        not isPositiveZero((-0.0) **               10.0) or
7270        not isNegativeZero((-0.0) **               11.0) or
7271        not isPositiveZero((-0.0) **               12.0) or
7272        not isNegativeZero((-0.0) **               13.0) or
7273        not isPositiveZero((-0.0) **               14.0) or
7274        not isNegativeZero((-0.0) **               15.0) or
7275        not isPositiveZero((-0.0) **               16.0) or
7276        not isNegativeZero((-0.0) **               17.0) or
7277        not isPositiveZero((-0.0) **               18.0) or
7278        not isNegativeZero((-0.0) **               19.0) or
7279        not isPositiveZero((-0.0) **               20.0) or
7280        not isNegativeZero((-0.0) **               21.0) or
7281        not isPositiveZero((-0.0) **               22.0) or
7282        not isNegativeZero((-0.0) **               23.0) or
7283        not isPositiveZero((-0.0) **               24.0) or
7284        not isNegativeZero((-0.0) **               25.0) or
7285        not isPositiveZero((-0.0) **               26.0) or
7286        not isNegativeZero((-0.0) **               27.0) or
7287        not isPositiveZero((-0.0) **               28.0) or
7288        not isNegativeZero((-0.0) **               29.0) or
7289        not isPositiveZero((-0.0) **               30.0) or
7290        not isNegativeZero((-0.0) **       2147483647.0) or
7291        not isPositiveZero((-0.0) **       2147483648.0) or
7292        not isNegativeZero((-0.0) **       2147483649.0) or
7293        not isNegativeZero((-0.0) **       4294967295.0) or
7294        not isPositiveZero((-0.0) **       4294967296.0) or
7295        not isNegativeZero((-0.0) **       4294967297.0) or
7296        not isNegativeZero((-0.0) ** 9007199254740991.0) or
7297        not isPositiveZero((-0.0) ** 9007199254740992.0) or
7298        not isPositiveZero((-0.0) ** 9007199254740993.0) or # Not exactly represented
7299        not isPositiveZero((-0.0) ** 9007199254740994.0) or # Not exactly represented
7300        not isPositiveZero((-0.0) **           Infinity) or
7301                           floatExpr(-0.0) **                0.0 <> 1.0 or
7302        not isNegativeZero(floatExpr(-0.0) **                1.0) or
7303        not isPositiveZero(floatExpr(-0.0) **                2.0) or
7304        not isNegativeZero(floatExpr(-0.0) **                3.0) or
7305        not isPositiveZero(floatExpr(-0.0) **                4.0) or
7306        not isNegativeZero(floatExpr(-0.0) **                5.0) or
7307        not isPositiveZero(floatExpr(-0.0) **                6.0) or
7308        not isNegativeZero(floatExpr(-0.0) **                7.0) or
7309        not isPositiveZero(floatExpr(-0.0) **                8.0) or
7310        not isNegativeZero(floatExpr(-0.0) **                9.0) or
7311        not isPositiveZero(floatExpr(-0.0) **               10.0) or
7312        not isNegativeZero(floatExpr(-0.0) **               11.0) or
7313        not isPositiveZero(floatExpr(-0.0) **               12.0) or
7314        not isNegativeZero(floatExpr(-0.0) **               13.0) or
7315        not isPositiveZero(floatExpr(-0.0) **               14.0) or
7316        not isNegativeZero(floatExpr(-0.0) **               15.0) or
7317        not isPositiveZero(floatExpr(-0.0) **               16.0) or
7318        not isNegativeZero(floatExpr(-0.0) **               17.0) or
7319        not isPositiveZero(floatExpr(-0.0) **               18.0) or
7320        not isNegativeZero(floatExpr(-0.0) **               19.0) or
7321        not isPositiveZero(floatExpr(-0.0) **               20.0) or
7322        not isNegativeZero(floatExpr(-0.0) **               21.0) or
7323        not isPositiveZero(floatExpr(-0.0) **               22.0) or
7324        not isNegativeZero(floatExpr(-0.0) **               23.0) or
7325        not isPositiveZero(floatExpr(-0.0) **               24.0) or
7326        not isNegativeZero(floatExpr(-0.0) **               25.0) or
7327        not isPositiveZero(floatExpr(-0.0) **               26.0) or
7328        not isNegativeZero(floatExpr(-0.0) **               27.0) or
7329        not isPositiveZero(floatExpr(-0.0) **               28.0) or
7330        not isNegativeZero(floatExpr(-0.0) **               29.0) or
7331        not isPositiveZero(floatExpr(-0.0) **               30.0) or
7332        not isNegativeZero(floatExpr(-0.0) **       2147483647.0) or
7333        not isPositiveZero(floatExpr(-0.0) **       2147483648.0) or
7334        not isNegativeZero(floatExpr(-0.0) **       2147483649.0) or
7335        not isNegativeZero(floatExpr(-0.0) **       4294967295.0) or
7336        not isPositiveZero(floatExpr(-0.0) **       4294967296.0) or
7337        not isNegativeZero(floatExpr(-0.0) **       4294967297.0) or
7338        not isNegativeZero(floatExpr(-0.0) ** 9007199254740991.0) or
7339        not isPositiveZero(floatExpr(-0.0) ** 9007199254740992.0) or
7340        not isPositiveZero(floatExpr(-0.0) ** 9007199254740993.0) or # Not exactly represented
7341        not isPositiveZero(floatExpr(-0.0) ** 9007199254740994.0) or # Not exactly represented
7342        not isPositiveZero(floatExpr(-0.0) **           Infinity) or
7343                           (-0.0) ** floatExpr(               0.0) <> 1.0 or
7344        not isNegativeZero((-0.0) ** floatExpr(               1.0)) or
7345        not isPositiveZero((-0.0) ** floatExpr(               2.0)) or
7346        not isNegativeZero((-0.0) ** floatExpr(               3.0)) or
7347        not isPositiveZero((-0.0) ** floatExpr(               4.0)) or
7348        not isNegativeZero((-0.0) ** floatExpr(               5.0)) or
7349        not isPositiveZero((-0.0) ** floatExpr(               6.0)) or
7350        not isNegativeZero((-0.0) ** floatExpr(               7.0)) or
7351        not isPositiveZero((-0.0) ** floatExpr(               8.0)) or
7352        not isNegativeZero((-0.0) ** floatExpr(               9.0)) or
7353        not isPositiveZero((-0.0) ** floatExpr(              10.0)) or
7354        not isNegativeZero((-0.0) ** floatExpr(              11.0)) or
7355        not isPositiveZero((-0.0) ** floatExpr(              12.0)) or
7356        not isNegativeZero((-0.0) ** floatExpr(              13.0)) or
7357        not isPositiveZero((-0.0) ** floatExpr(              14.0)) or
7358        not isNegativeZero((-0.0) ** floatExpr(              15.0)) or
7359        not isPositiveZero((-0.0) ** floatExpr(              16.0)) or
7360        not isNegativeZero((-0.0) ** floatExpr(              17.0)) or
7361        not isPositiveZero((-0.0) ** floatExpr(              18.0)) or
7362        not isNegativeZero((-0.0) ** floatExpr(              19.0)) or
7363        not isPositiveZero((-0.0) ** floatExpr(              20.0)) or
7364        not isNegativeZero((-0.0) ** floatExpr(              21.0)) or
7365        not isPositiveZero((-0.0) ** floatExpr(              22.0)) or
7366        not isNegativeZero((-0.0) ** floatExpr(              23.0)) or
7367        not isPositiveZero((-0.0) ** floatExpr(              24.0)) or
7368        not isNegativeZero((-0.0) ** floatExpr(              25.0)) or
7369        not isPositiveZero((-0.0) ** floatExpr(              26.0)) or
7370        not isNegativeZero((-0.0) ** floatExpr(              27.0)) or
7371        not isPositiveZero((-0.0) ** floatExpr(              28.0)) or
7372        not isNegativeZero((-0.0) ** floatExpr(              29.0)) or
7373        not isPositiveZero((-0.0) ** floatExpr(              30.0)) or
7374        not isNegativeZero((-0.0) ** floatExpr(      2147483647.0)) or
7375        not isPositiveZero((-0.0) ** floatExpr(      2147483648.0)) or
7376        not isNegativeZero((-0.0) ** floatExpr(      2147483649.0)) or
7377        not isNegativeZero((-0.0) ** floatExpr(      4294967295.0)) or
7378        not isPositiveZero((-0.0) ** floatExpr(      4294967296.0)) or
7379        not isNegativeZero((-0.0) ** floatExpr(      4294967297.0)) or
7380        not isNegativeZero((-0.0) ** floatExpr(9007199254740991.0)) or
7381        not isPositiveZero((-0.0) ** floatExpr(9007199254740992.0)) or
7382        not isPositiveZero((-0.0) ** floatExpr(9007199254740993.0)) or # Not exactly represented
7383        not isPositiveZero((-0.0) ** floatExpr(9007199254740994.0)) or # Not exactly represented
7384        not isPositiveZero((-0.0) ** floatExpr(          Infinity)) or
7385                           floatExpr(-0.0) ** floatExpr(               0.0) <> 1.0 or
7386        not isNegativeZero(floatExpr(-0.0) ** floatExpr(               1.0)) or
7387        not isPositiveZero(floatExpr(-0.0) ** floatExpr(               2.0)) or
7388        not isNegativeZero(floatExpr(-0.0) ** floatExpr(               3.0)) or
7389        not isPositiveZero(floatExpr(-0.0) ** floatExpr(               4.0)) or
7390        not isNegativeZero(floatExpr(-0.0) ** floatExpr(               5.0)) or
7391        not isPositiveZero(floatExpr(-0.0) ** floatExpr(               6.0)) or
7392        not isNegativeZero(floatExpr(-0.0) ** floatExpr(               7.0)) or
7393        not isPositiveZero(floatExpr(-0.0) ** floatExpr(               8.0)) or
7394        not isNegativeZero(floatExpr(-0.0) ** floatExpr(               9.0)) or
7395        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              10.0)) or
7396        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              11.0)) or
7397        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              12.0)) or
7398        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              13.0)) or
7399        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              14.0)) or
7400        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              15.0)) or
7401        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              16.0)) or
7402        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              17.0)) or
7403        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              18.0)) or
7404        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              19.0)) or
7405        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              20.0)) or
7406        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              21.0)) or
7407        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              22.0)) or
7408        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              23.0)) or
7409        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              24.0)) or
7410        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              25.0)) or
7411        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              26.0)) or
7412        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              27.0)) or
7413        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              28.0)) or
7414        not isNegativeZero(floatExpr(-0.0) ** floatExpr(              29.0)) or
7415        not isPositiveZero(floatExpr(-0.0) ** floatExpr(              30.0)) or
7416        not isNegativeZero(floatExpr(-0.0) ** floatExpr(      2147483647.0)) or
7417        not isPositiveZero(floatExpr(-0.0) ** floatExpr(      2147483648.0)) or
7418        not isNegativeZero(floatExpr(-0.0) ** floatExpr(      2147483649.0)) or
7419        not isNegativeZero(floatExpr(-0.0) ** floatExpr(      4294967295.0)) or
7420        not isPositiveZero(floatExpr(-0.0) ** floatExpr(      4294967296.0)) or
7421        not isNegativeZero(floatExpr(-0.0) ** floatExpr(      4294967297.0)) or
7422        not isNegativeZero(floatExpr(-0.0) ** floatExpr(9007199254740991.0)) or
7423        not isPositiveZero(floatExpr(-0.0) ** floatExpr(9007199254740992.0)) or
7424        not isPositiveZero(floatExpr(-0.0) ** floatExpr(9007199254740993.0)) or # Not exactly represented
7425        not isPositiveZero(floatExpr(-0.0) ** floatExpr(9007199254740994.0)) or # Not exactly represented
7426        not isPositiveZero(floatExpr(-0.0) ** floatExpr(          Infinity)) then
7427      writeln(" ***** (-0.0) ** B with positive B does not return 0.0 respectively -0.0.");
7428      okay := FALSE;
7429    end if;
7430
7431    if  0.0 **           (-Infinity) <> Infinity or
7432        0.0 ** (-9007199254740994.0) <> Infinity or # Not exactly represented
7433        0.0 ** (-9007199254740993.0) <> Infinity or # Not exactly represented
7434        0.0 ** (-9007199254740992.0) <> Infinity or
7435        0.0 ** (-9007199254740991.0) <> Infinity or
7436        0.0 **       (-4294967297.0) <> Infinity or
7437        0.0 **       (-4294967296.0) <> Infinity or
7438        0.0 **       (-4294967295.0) <> Infinity or
7439        0.0 **       (-2147483649.0) <> Infinity or
7440        0.0 **       (-2147483648.0) <> Infinity or
7441        0.0 **       (-2147483647.0) <> Infinity or
7442        0.0 **               (-30.0) <> Infinity or
7443        0.0 **               (-29.0) <> Infinity or
7444        0.0 **               (-28.0) <> Infinity or
7445        0.0 **               (-27.0) <> Infinity or
7446        0.0 **               (-26.0) <> Infinity or
7447        0.0 **               (-25.0) <> Infinity or
7448        0.0 **               (-24.0) <> Infinity or
7449        0.0 **               (-23.0) <> Infinity or
7450        0.0 **               (-22.0) <> Infinity or
7451        0.0 **               (-21.0) <> Infinity or
7452        0.0 **               (-20.0) <> Infinity or
7453        0.0 **               (-19.0) <> Infinity or
7454        0.0 **               (-18.0) <> Infinity or
7455        0.0 **               (-17.0) <> Infinity or
7456        0.0 **               (-16.0) <> Infinity or
7457        0.0 **               (-15.0) <> Infinity or
7458        0.0 **               (-14.0) <> Infinity or
7459        0.0 **               (-13.0) <> Infinity or
7460        0.0 **               (-12.0) <> Infinity or
7461        0.0 **               (-11.0) <> Infinity or
7462        0.0 **               (-10.0) <> Infinity or
7463        0.0 **                (-9.0) <> Infinity or
7464        0.0 **                (-8.0) <> Infinity or
7465        0.0 **                (-7.0) <> Infinity or
7466        0.0 **                (-6.0) <> Infinity or
7467        0.0 **                (-5.0) <> Infinity or
7468        0.0 **                (-4.0) <> Infinity or
7469        0.0 **                (-3.0) <> Infinity or
7470        0.0 **                (-2.0) <> Infinity or
7471        0.0 **                (-1.0) <> Infinity or
7472        floatExpr(0.0) **           (-Infinity) <> Infinity or
7473        floatExpr(0.0) ** (-9007199254740994.0) <> Infinity or # Not exactly represented
7474        floatExpr(0.0) ** (-9007199254740993.0) <> Infinity or # Not exactly represented
7475        floatExpr(0.0) ** (-9007199254740992.0) <> Infinity or
7476        floatExpr(0.0) ** (-9007199254740991.0) <> Infinity or
7477        floatExpr(0.0) **       (-4294967297.0) <> Infinity or
7478        floatExpr(0.0) **       (-4294967296.0) <> Infinity or
7479        floatExpr(0.0) **       (-4294967295.0) <> Infinity or
7480        floatExpr(0.0) **       (-2147483649.0) <> Infinity or
7481        floatExpr(0.0) **       (-2147483648.0) <> Infinity or
7482        floatExpr(0.0) **       (-2147483647.0) <> Infinity or
7483        floatExpr(0.0) **               (-30.0) <> Infinity or
7484        floatExpr(0.0) **               (-29.0) <> Infinity or
7485        floatExpr(0.0) **               (-28.0) <> Infinity or
7486        floatExpr(0.0) **               (-27.0) <> Infinity or
7487        floatExpr(0.0) **               (-26.0) <> Infinity or
7488        floatExpr(0.0) **               (-25.0) <> Infinity or
7489        floatExpr(0.0) **               (-24.0) <> Infinity or
7490        floatExpr(0.0) **               (-23.0) <> Infinity or
7491        floatExpr(0.0) **               (-22.0) <> Infinity or
7492        floatExpr(0.0) **               (-21.0) <> Infinity or
7493        floatExpr(0.0) **               (-20.0) <> Infinity or
7494        floatExpr(0.0) **               (-19.0) <> Infinity or
7495        floatExpr(0.0) **               (-18.0) <> Infinity or
7496        floatExpr(0.0) **               (-17.0) <> Infinity or
7497        floatExpr(0.0) **               (-16.0) <> Infinity or
7498        floatExpr(0.0) **               (-15.0) <> Infinity or
7499        floatExpr(0.0) **               (-14.0) <> Infinity or
7500        floatExpr(0.0) **               (-13.0) <> Infinity or
7501        floatExpr(0.0) **               (-12.0) <> Infinity or
7502        floatExpr(0.0) **               (-11.0) <> Infinity or
7503        floatExpr(0.0) **               (-10.0) <> Infinity or
7504        floatExpr(0.0) **                (-9.0) <> Infinity or
7505        floatExpr(0.0) **                (-8.0) <> Infinity or
7506        floatExpr(0.0) **                (-7.0) <> Infinity or
7507        floatExpr(0.0) **                (-6.0) <> Infinity or
7508        floatExpr(0.0) **                (-5.0) <> Infinity or
7509        floatExpr(0.0) **                (-4.0) <> Infinity or
7510        floatExpr(0.0) **                (-3.0) <> Infinity or
7511        floatExpr(0.0) **                (-2.0) <> Infinity or
7512        floatExpr(0.0) **                (-1.0) <> Infinity or
7513        0.0 ** floatExpr(          -Infinity) <> Infinity or
7514        0.0 ** floatExpr(-9007199254740994.0) <> Infinity or # Not exactly represented
7515        0.0 ** floatExpr(-9007199254740993.0) <> Infinity or # Not exactly represented
7516        0.0 ** floatExpr(-9007199254740992.0) <> Infinity or
7517        0.0 ** floatExpr(-9007199254740991.0) <> Infinity or
7518        0.0 ** floatExpr(      -4294967297.0) <> Infinity or
7519        0.0 ** floatExpr(      -4294967296.0) <> Infinity or
7520        0.0 ** floatExpr(      -4294967295.0) <> Infinity or
7521        0.0 ** floatExpr(      -2147483649.0) <> Infinity or
7522        0.0 ** floatExpr(      -2147483648.0) <> Infinity or
7523        0.0 ** floatExpr(      -2147483647.0) <> Infinity or
7524        0.0 ** floatExpr(              -30.0) <> Infinity or
7525        0.0 ** floatExpr(              -29.0) <> Infinity or
7526        0.0 ** floatExpr(              -28.0) <> Infinity or
7527        0.0 ** floatExpr(              -27.0) <> Infinity or
7528        0.0 ** floatExpr(              -26.0) <> Infinity or
7529        0.0 ** floatExpr(              -25.0) <> Infinity or
7530        0.0 ** floatExpr(              -24.0) <> Infinity or
7531        0.0 ** floatExpr(              -23.0) <> Infinity or
7532        0.0 ** floatExpr(              -22.0) <> Infinity or
7533        0.0 ** floatExpr(              -21.0) <> Infinity or
7534        0.0 ** floatExpr(              -20.0) <> Infinity or
7535        0.0 ** floatExpr(              -19.0) <> Infinity or
7536        0.0 ** floatExpr(              -18.0) <> Infinity or
7537        0.0 ** floatExpr(              -17.0) <> Infinity or
7538        0.0 ** floatExpr(              -16.0) <> Infinity or
7539        0.0 ** floatExpr(              -15.0) <> Infinity or
7540        0.0 ** floatExpr(              -14.0) <> Infinity or
7541        0.0 ** floatExpr(              -13.0) <> Infinity or
7542        0.0 ** floatExpr(              -12.0) <> Infinity or
7543        0.0 ** floatExpr(              -11.0) <> Infinity or
7544        0.0 ** floatExpr(              -10.0) <> Infinity or
7545        0.0 ** floatExpr(               -9.0) <> Infinity or
7546        0.0 ** floatExpr(               -8.0) <> Infinity or
7547        0.0 ** floatExpr(               -7.0) <> Infinity or
7548        0.0 ** floatExpr(               -6.0) <> Infinity or
7549        0.0 ** floatExpr(               -5.0) <> Infinity or
7550        0.0 ** floatExpr(               -4.0) <> Infinity or
7551        0.0 ** floatExpr(               -3.0) <> Infinity or
7552        0.0 ** floatExpr(               -2.0) <> Infinity or
7553        0.0 ** floatExpr(               -1.0) <> Infinity or
7554        floatExpr(0.0) ** floatExpr(          -Infinity) <> Infinity or
7555        floatExpr(0.0) ** floatExpr(-9007199254740994.0) <> Infinity or # Not exactly represented
7556        floatExpr(0.0) ** floatExpr(-9007199254740993.0) <> Infinity or # Not exactly represented
7557        floatExpr(0.0) ** floatExpr(-9007199254740992.0) <> Infinity or
7558        floatExpr(0.0) ** floatExpr(-9007199254740991.0) <> Infinity or
7559        floatExpr(0.0) ** floatExpr(      -4294967297.0) <> Infinity or
7560        floatExpr(0.0) ** floatExpr(      -4294967296.0) <> Infinity or
7561        floatExpr(0.0) ** floatExpr(      -4294967295.0) <> Infinity or
7562        floatExpr(0.0) ** floatExpr(      -2147483649.0) <> Infinity or
7563        floatExpr(0.0) ** floatExpr(      -2147483648.0) <> Infinity or
7564        floatExpr(0.0) ** floatExpr(      -2147483647.0) <> Infinity or
7565        floatExpr(0.0) ** floatExpr(              -30.0) <> Infinity or
7566        floatExpr(0.0) ** floatExpr(              -29.0) <> Infinity or
7567        floatExpr(0.0) ** floatExpr(              -28.0) <> Infinity or
7568        floatExpr(0.0) ** floatExpr(              -27.0) <> Infinity or
7569        floatExpr(0.0) ** floatExpr(              -26.0) <> Infinity or
7570        floatExpr(0.0) ** floatExpr(              -25.0) <> Infinity or
7571        floatExpr(0.0) ** floatExpr(              -24.0) <> Infinity or
7572        floatExpr(0.0) ** floatExpr(              -23.0) <> Infinity or
7573        floatExpr(0.0) ** floatExpr(              -22.0) <> Infinity or
7574        floatExpr(0.0) ** floatExpr(              -21.0) <> Infinity or
7575        floatExpr(0.0) ** floatExpr(              -20.0) <> Infinity or
7576        floatExpr(0.0) ** floatExpr(              -19.0) <> Infinity or
7577        floatExpr(0.0) ** floatExpr(              -18.0) <> Infinity or
7578        floatExpr(0.0) ** floatExpr(              -17.0) <> Infinity or
7579        floatExpr(0.0) ** floatExpr(              -16.0) <> Infinity or
7580        floatExpr(0.0) ** floatExpr(              -15.0) <> Infinity or
7581        floatExpr(0.0) ** floatExpr(              -14.0) <> Infinity or
7582        floatExpr(0.0) ** floatExpr(              -13.0) <> Infinity or
7583        floatExpr(0.0) ** floatExpr(              -12.0) <> Infinity or
7584        floatExpr(0.0) ** floatExpr(              -11.0) <> Infinity or
7585        floatExpr(0.0) ** floatExpr(              -10.0) <> Infinity or
7586        floatExpr(0.0) ** floatExpr(               -9.0) <> Infinity or
7587        floatExpr(0.0) ** floatExpr(               -8.0) <> Infinity or
7588        floatExpr(0.0) ** floatExpr(               -7.0) <> Infinity or
7589        floatExpr(0.0) ** floatExpr(               -6.0) <> Infinity or
7590        floatExpr(0.0) ** floatExpr(               -5.0) <> Infinity or
7591        floatExpr(0.0) ** floatExpr(               -4.0) <> Infinity or
7592        floatExpr(0.0) ** floatExpr(               -3.0) <> Infinity or
7593        floatExpr(0.0) ** floatExpr(               -2.0) <> Infinity or
7594        floatExpr(0.0) ** floatExpr(               -1.0) <> Infinity then
7595      writeln(" ***** 0.0 ** B with negative B does not return Infinity.");
7596      okay := FALSE;
7597    end if;
7598
7599   if                      0.0 **                0.0 <> 1.0 or
7600        not isPositiveZero(0.0 **                1.0) or
7601        not isPositiveZero(0.0 **                2.0) or
7602        not isPositiveZero(0.0 **                3.0) or
7603        not isPositiveZero(0.0 **                4.0) or
7604        not isPositiveZero(0.0 **                5.0) or
7605        not isPositiveZero(0.0 **                6.0) or
7606        not isPositiveZero(0.0 **                7.0) or
7607        not isPositiveZero(0.0 **                8.0) or
7608        not isPositiveZero(0.0 **                9.0) or
7609        not isPositiveZero(0.0 **               10.0) or
7610        not isPositiveZero(0.0 **               11.0) or
7611        not isPositiveZero(0.0 **               12.0) or
7612        not isPositiveZero(0.0 **               13.0) or
7613        not isPositiveZero(0.0 **               14.0) or
7614        not isPositiveZero(0.0 **               15.0) or
7615        not isPositiveZero(0.0 **               16.0) or
7616        not isPositiveZero(0.0 **               17.0) or
7617        not isPositiveZero(0.0 **               18.0) or
7618        not isPositiveZero(0.0 **               19.0) or
7619        not isPositiveZero(0.0 **               20.0) or
7620        not isPositiveZero(0.0 **               21.0) or
7621        not isPositiveZero(0.0 **               22.0) or
7622        not isPositiveZero(0.0 **               23.0) or
7623        not isPositiveZero(0.0 **               24.0) or
7624        not isPositiveZero(0.0 **               25.0) or
7625        not isPositiveZero(0.0 **               26.0) or
7626        not isPositiveZero(0.0 **               27.0) or
7627        not isPositiveZero(0.0 **               28.0) or
7628        not isPositiveZero(0.0 **               29.0) or
7629        not isPositiveZero(0.0 **               30.0) or
7630        not isPositiveZero(0.0 **       2147483647.0) or
7631        not isPositiveZero(0.0 **       2147483648.0) or
7632        not isPositiveZero(0.0 **       2147483649.0) or
7633        not isPositiveZero(0.0 **       4294967295.0) or
7634        not isPositiveZero(0.0 **       4294967296.0) or
7635        not isPositiveZero(0.0 **       4294967297.0) or
7636        not isPositiveZero(0.0 ** 9007199254740991.0) or
7637        not isPositiveZero(0.0 ** 9007199254740992.0) or
7638        not isPositiveZero(0.0 ** 9007199254740993.0) or # Not exactly represented
7639        not isPositiveZero(0.0 ** 9007199254740994.0) or # Not exactly represented
7640        not isPositiveZero(0.0 **           Infinity) or
7641                           floatExpr(0.0) **                0.0 <> 1.0 or
7642        not isPositiveZero(floatExpr(0.0) **                1.0) or
7643        not isPositiveZero(floatExpr(0.0) **                2.0) or
7644        not isPositiveZero(floatExpr(0.0) **                3.0) or
7645        not isPositiveZero(floatExpr(0.0) **                4.0) or
7646        not isPositiveZero(floatExpr(0.0) **                5.0) or
7647        not isPositiveZero(floatExpr(0.0) **                6.0) or
7648        not isPositiveZero(floatExpr(0.0) **                7.0) or
7649        not isPositiveZero(floatExpr(0.0) **                8.0) or
7650        not isPositiveZero(floatExpr(0.0) **                9.0) or
7651        not isPositiveZero(floatExpr(0.0) **               10.0) or
7652        not isPositiveZero(floatExpr(0.0) **               11.0) or
7653        not isPositiveZero(floatExpr(0.0) **               12.0) or
7654        not isPositiveZero(floatExpr(0.0) **               13.0) or
7655        not isPositiveZero(floatExpr(0.0) **               14.0) or
7656        not isPositiveZero(floatExpr(0.0) **               15.0) or
7657        not isPositiveZero(floatExpr(0.0) **               16.0) or
7658        not isPositiveZero(floatExpr(0.0) **               17.0) or
7659        not isPositiveZero(floatExpr(0.0) **               18.0) or
7660        not isPositiveZero(floatExpr(0.0) **               19.0) or
7661        not isPositiveZero(floatExpr(0.0) **               20.0) or
7662        not isPositiveZero(floatExpr(0.0) **               21.0) or
7663        not isPositiveZero(floatExpr(0.0) **               22.0) or
7664        not isPositiveZero(floatExpr(0.0) **               23.0) or
7665        not isPositiveZero(floatExpr(0.0) **               24.0) or
7666        not isPositiveZero(floatExpr(0.0) **               25.0) or
7667        not isPositiveZero(floatExpr(0.0) **               26.0) or
7668        not isPositiveZero(floatExpr(0.0) **               27.0) or
7669        not isPositiveZero(floatExpr(0.0) **               28.0) or
7670        not isPositiveZero(floatExpr(0.0) **               29.0) or
7671        not isPositiveZero(floatExpr(0.0) **               30.0) or
7672        not isPositiveZero(floatExpr(0.0) **       2147483647.0) or
7673        not isPositiveZero(floatExpr(0.0) **       2147483648.0) or
7674        not isPositiveZero(floatExpr(0.0) **       2147483649.0) or
7675        not isPositiveZero(floatExpr(0.0) **       4294967295.0) or
7676        not isPositiveZero(floatExpr(0.0) **       4294967296.0) or
7677        not isPositiveZero(floatExpr(0.0) **       4294967297.0) or
7678        not isPositiveZero(floatExpr(0.0) ** 9007199254740991.0) or
7679        not isPositiveZero(floatExpr(0.0) ** 9007199254740992.0) or
7680        not isPositiveZero(floatExpr(0.0) ** 9007199254740993.0) or # Not exactly represented
7681        not isPositiveZero(floatExpr(0.0) ** 9007199254740994.0) or # Not exactly represented
7682        not isPositiveZero(floatExpr(0.0) **           Infinity) or
7683                           0.0 ** floatExpr(               0.0) <> 1.0 or
7684        not isPositiveZero(0.0 ** floatExpr(               1.0)) or
7685        not isPositiveZero(0.0 ** floatExpr(               2.0)) or
7686        not isPositiveZero(0.0 ** floatExpr(               3.0)) or
7687        not isPositiveZero(0.0 ** floatExpr(               4.0)) or
7688        not isPositiveZero(0.0 ** floatExpr(               5.0)) or
7689        not isPositiveZero(0.0 ** floatExpr(               6.0)) or
7690        not isPositiveZero(0.0 ** floatExpr(               7.0)) or
7691        not isPositiveZero(0.0 ** floatExpr(               8.0)) or
7692        not isPositiveZero(0.0 ** floatExpr(               9.0)) or
7693        not isPositiveZero(0.0 ** floatExpr(              10.0)) or
7694        not isPositiveZero(0.0 ** floatExpr(              11.0)) or
7695        not isPositiveZero(0.0 ** floatExpr(              12.0)) or
7696        not isPositiveZero(0.0 ** floatExpr(              13.0)) or
7697        not isPositiveZero(0.0 ** floatExpr(              14.0)) or
7698        not isPositiveZero(0.0 ** floatExpr(              15.0)) or
7699        not isPositiveZero(0.0 ** floatExpr(              16.0)) or
7700        not isPositiveZero(0.0 ** floatExpr(              17.0)) or
7701        not isPositiveZero(0.0 ** floatExpr(              18.0)) or
7702        not isPositiveZero(0.0 ** floatExpr(              19.0)) or
7703        not isPositiveZero(0.0 ** floatExpr(              20.0)) or
7704        not isPositiveZero(0.0 ** floatExpr(              21.0)) or
7705        not isPositiveZero(0.0 ** floatExpr(              22.0)) or
7706        not isPositiveZero(0.0 ** floatExpr(              23.0)) or
7707        not isPositiveZero(0.0 ** floatExpr(              24.0)) or
7708        not isPositiveZero(0.0 ** floatExpr(              25.0)) or
7709        not isPositiveZero(0.0 ** floatExpr(              26.0)) or
7710        not isPositiveZero(0.0 ** floatExpr(              27.0)) or
7711        not isPositiveZero(0.0 ** floatExpr(              28.0)) or
7712        not isPositiveZero(0.0 ** floatExpr(              29.0)) or
7713        not isPositiveZero(0.0 ** floatExpr(              30.0)) or
7714        not isPositiveZero(0.0 ** floatExpr(      2147483647.0)) or
7715        not isPositiveZero(0.0 ** floatExpr(      2147483648.0)) or
7716        not isPositiveZero(0.0 ** floatExpr(      2147483649.0)) or
7717        not isPositiveZero(0.0 ** floatExpr(      4294967295.0)) or
7718        not isPositiveZero(0.0 ** floatExpr(      4294967296.0)) or
7719        not isPositiveZero(0.0 ** floatExpr(      4294967297.0)) or
7720        not isPositiveZero(0.0 ** floatExpr(9007199254740991.0)) or
7721        not isPositiveZero(0.0 ** floatExpr(9007199254740992.0)) or
7722        not isPositiveZero(0.0 ** floatExpr(9007199254740993.0)) or # Not exactly represented
7723        not isPositiveZero(0.0 ** floatExpr(9007199254740994.0)) or # Not exactly represented
7724        not isPositiveZero(0.0 ** floatExpr(          Infinity)) or
7725                           floatExpr(0.0) ** floatExpr(               0.0) <> 1.0 or
7726        not isPositiveZero(floatExpr(0.0) ** floatExpr(               1.0)) or
7727        not isPositiveZero(floatExpr(0.0) ** floatExpr(               2.0)) or
7728        not isPositiveZero(floatExpr(0.0) ** floatExpr(               3.0)) or
7729        not isPositiveZero(floatExpr(0.0) ** floatExpr(               4.0)) or
7730        not isPositiveZero(floatExpr(0.0) ** floatExpr(               5.0)) or
7731        not isPositiveZero(floatExpr(0.0) ** floatExpr(               6.0)) or
7732        not isPositiveZero(floatExpr(0.0) ** floatExpr(               7.0)) or
7733        not isPositiveZero(floatExpr(0.0) ** floatExpr(               8.0)) or
7734        not isPositiveZero(floatExpr(0.0) ** floatExpr(               9.0)) or
7735        not isPositiveZero(floatExpr(0.0) ** floatExpr(              10.0)) or
7736        not isPositiveZero(floatExpr(0.0) ** floatExpr(              11.0)) or
7737        not isPositiveZero(floatExpr(0.0) ** floatExpr(              12.0)) or
7738        not isPositiveZero(floatExpr(0.0) ** floatExpr(              13.0)) or
7739        not isPositiveZero(floatExpr(0.0) ** floatExpr(              14.0)) or
7740        not isPositiveZero(floatExpr(0.0) ** floatExpr(              15.0)) or
7741        not isPositiveZero(floatExpr(0.0) ** floatExpr(              16.0)) or
7742        not isPositiveZero(floatExpr(0.0) ** floatExpr(              17.0)) or
7743        not isPositiveZero(floatExpr(0.0) ** floatExpr(              18.0)) or
7744        not isPositiveZero(floatExpr(0.0) ** floatExpr(              19.0)) or
7745        not isPositiveZero(floatExpr(0.0) ** floatExpr(              20.0)) or
7746        not isPositiveZero(floatExpr(0.0) ** floatExpr(              21.0)) or
7747        not isPositiveZero(floatExpr(0.0) ** floatExpr(              22.0)) or
7748        not isPositiveZero(floatExpr(0.0) ** floatExpr(              23.0)) or
7749        not isPositiveZero(floatExpr(0.0) ** floatExpr(              24.0)) or
7750        not isPositiveZero(floatExpr(0.0) ** floatExpr(              25.0)) or
7751        not isPositiveZero(floatExpr(0.0) ** floatExpr(              26.0)) or
7752        not isPositiveZero(floatExpr(0.0) ** floatExpr(              27.0)) or
7753        not isPositiveZero(floatExpr(0.0) ** floatExpr(              28.0)) or
7754        not isPositiveZero(floatExpr(0.0) ** floatExpr(              29.0)) or
7755        not isPositiveZero(floatExpr(0.0) ** floatExpr(              30.0)) or
7756        not isPositiveZero(floatExpr(0.0) ** floatExpr(      2147483647.0)) or
7757        not isPositiveZero(floatExpr(0.0) ** floatExpr(      2147483648.0)) or
7758        not isPositiveZero(floatExpr(0.0) ** floatExpr(      2147483649.0)) or
7759        not isPositiveZero(floatExpr(0.0) ** floatExpr(      4294967295.0)) or
7760        not isPositiveZero(floatExpr(0.0) ** floatExpr(      4294967296.0)) or
7761        not isPositiveZero(floatExpr(0.0) ** floatExpr(      4294967297.0)) or
7762        not isPositiveZero(floatExpr(0.0) ** floatExpr(9007199254740991.0)) or
7763        not isPositiveZero(floatExpr(0.0) ** floatExpr(9007199254740992.0)) or
7764        not isPositiveZero(floatExpr(0.0) ** floatExpr(9007199254740993.0)) or # Not exactly represented
7765        not isPositiveZero(floatExpr(0.0) ** floatExpr(9007199254740994.0)) or # Not exactly represented
7766        not isPositiveZero(floatExpr(0.0) ** floatExpr(          Infinity)) then
7767      writeln(" ***** 0.0 ** B with positive B does not return 0.0.");
7768      okay := FALSE;
7769    end if;
7770
7771    if                (-0.0) **                (-3.0) <> -Infinity or
7772                      (-0.0) **           minusThree  <> -Infinity or
7773                      (-0.0) **                (-2.5) <>  Infinity or
7774                      (-0.0) **                (-2.0) <>  Infinity or
7775                      (-0.0) **             minusTwo  <>  Infinity or
7776                      (-0.0) **                (-1.5) <>  Infinity or
7777                      (-0.0) **                (-1.0) <> -Infinity or
7778                      (-0.0) **             minusOne  <> -Infinity or
7779                      (-0.0) **                (-0.5) <>  Infinity or
7780                  minusZero  **                (-3.0) <> -Infinity or
7781                  minusZero  **           minusThree  <> -Infinity or
7782                  minusZero  **                (-2.5) <>  Infinity or
7783                  minusZero  **                (-2.0) <>  Infinity or
7784                  minusZero  **             minusTwo  <>  Infinity or
7785                  minusZero  **                (-1.5) <>  Infinity or
7786                  minusZero  **                (-1.0) <> -Infinity or
7787                  minusZero  **             minusOne  <> -Infinity or
7788                  minusZero  **                (-0.5) <>  Infinity or
7789                        0.0  **                (-3.0) <>  Infinity or
7790                        0.0  **           minusThree  <>  Infinity or
7791                        0.0  **                (-2.5) <>  Infinity or
7792                        0.0  **                (-2.0) <>  Infinity or
7793                        0.0  **             minusTwo  <>  Infinity or
7794                        0.0  **                (-1.5) <>  Infinity or
7795                        0.0  **                (-1.0) <>  Infinity or
7796                        0.0  **             minusOne  <>  Infinity or
7797                        0.0  **                (-0.5) <>  Infinity or
7798        floatExpr(     -0.0) **                (-3.0) <> -Infinity or
7799        floatExpr(     -0.0) **           minusThree  <> -Infinity or
7800        floatExpr(     -0.0) **                (-2.5) <>  Infinity or
7801        floatExpr(     -0.0) **                (-2.0) <>  Infinity or
7802        floatExpr(     -0.0) **             minusTwo  <>  Infinity or
7803        floatExpr(     -0.0) **                (-1.5) <>  Infinity or
7804        floatExpr(     -0.0) **                (-1.0) <> -Infinity or
7805        floatExpr(     -0.0) **             minusOne  <> -Infinity or
7806        floatExpr(     -0.0) **                (-0.5) <>  Infinity or
7807        floatExpr(minusZero) **                (-3.0) <> -Infinity or
7808        floatExpr(minusZero) **           minusThree  <> -Infinity or
7809        floatExpr(minusZero) **                (-2.5) <>  Infinity or
7810        floatExpr(minusZero) **                (-2.0) <>  Infinity or
7811        floatExpr(minusZero) **             minusTwo  <>  Infinity or
7812        floatExpr(minusZero) **                (-1.5) <>  Infinity or
7813        floatExpr(minusZero) **                (-1.0) <> -Infinity or
7814        floatExpr(minusZero) **             minusOne  <> -Infinity or
7815        floatExpr(minusZero) **                (-0.5) <>  Infinity or
7816        floatExpr(      0.0) **                (-3.0) <>  Infinity or
7817        floatExpr(      0.0) **           minusThree  <>  Infinity or
7818        floatExpr(      0.0) **                (-2.5) <>  Infinity or
7819        floatExpr(      0.0) **                (-2.0) <>  Infinity or
7820        floatExpr(      0.0) **             minusTwo  <>  Infinity or
7821        floatExpr(      0.0) **                (-1.5) <>  Infinity or
7822        floatExpr(      0.0) **                (-1.0) <>  Infinity or
7823        floatExpr(      0.0) **             minusOne  <>  Infinity or
7824        floatExpr(      0.0) **                (-0.5) <>  Infinity or
7825                      (-0.0) ** floatExpr(      -3.0) <> -Infinity or
7826                      (-0.0) ** floatExpr(minusThree)  <> -Infinity or
7827                      (-0.0) ** floatExpr(      -2.5) <>  Infinity or
7828                      (-0.0) ** floatExpr(      -2.0) <>  Infinity or
7829                      (-0.0) ** floatExpr(  minusTwo) <>  Infinity or
7830                      (-0.0) ** floatExpr(      -1.5) <>  Infinity or
7831                      (-0.0) ** floatExpr(      -1.0) <> -Infinity or
7832                      (-0.0) ** floatExpr(  minusOne) <> -Infinity or
7833                      (-0.0) ** floatExpr(      -0.5) <>  Infinity or
7834                  minusZero  ** floatExpr(      -3.0) <> -Infinity or
7835                  minusZero  ** floatExpr(minusThree) <> -Infinity or
7836                  minusZero  ** floatExpr(      -2.5) <>  Infinity or
7837                  minusZero  ** floatExpr(      -2.0) <>  Infinity or
7838                  minusZero  ** floatExpr(  minusTwo) <>  Infinity or
7839                  minusZero  ** floatExpr(      -1.5) <>  Infinity or
7840                  minusZero  ** floatExpr(      -1.0) <> -Infinity or
7841                  minusZero  ** floatExpr(  minusOne) <> -Infinity or
7842                  minusZero  ** floatExpr(      -0.5) <>  Infinity or
7843                        0.0  ** floatExpr(      -3.0) <>  Infinity or
7844                        0.0  ** floatExpr(minusThree) <>  Infinity or
7845                        0.0  ** floatExpr(      -2.5) <>  Infinity or
7846                        0.0  ** floatExpr(      -2.0) <>  Infinity or
7847                        0.0  ** floatExpr(  minusTwo) <>  Infinity or
7848                        0.0  ** floatExpr(      -1.5) <>  Infinity or
7849                        0.0  ** floatExpr(      -1.0) <>  Infinity or
7850                        0.0  ** floatExpr(  minusOne) <>  Infinity or
7851                        0.0  ** floatExpr(      -0.5) <>  Infinity or
7852        floatExpr(     -0.0) ** floatExpr(      -3.0) <> -Infinity or
7853        floatExpr(     -0.0) ** floatExpr(minusThree) <> -Infinity or
7854        floatExpr(     -0.0) ** floatExpr(      -2.5) <>  Infinity or
7855        floatExpr(     -0.0) ** floatExpr(      -2.0) <>  Infinity or
7856        floatExpr(     -0.0) ** floatExpr(  minusTwo) <>  Infinity or
7857        floatExpr(     -0.0) ** floatExpr(      -1.5) <>  Infinity or
7858        floatExpr(     -0.0) ** floatExpr(      -1.0) <> -Infinity or
7859        floatExpr(     -0.0) ** floatExpr(  minusOne) <> -Infinity or
7860        floatExpr(     -0.0) ** floatExpr(      -0.5) <>  Infinity or
7861        floatExpr(minusZero) ** floatExpr(      -3.0) <> -Infinity or
7862        floatExpr(minusZero) ** floatExpr(minusThree) <> -Infinity or
7863        floatExpr(minusZero) ** floatExpr(      -2.5) <>  Infinity or
7864        floatExpr(minusZero) ** floatExpr(      -2.0) <>  Infinity or
7865        floatExpr(minusZero) ** floatExpr(  minusTwo) <>  Infinity or
7866        floatExpr(minusZero) ** floatExpr(      -1.5) <>  Infinity or
7867        floatExpr(minusZero) ** floatExpr(      -1.0) <> -Infinity or
7868        floatExpr(minusZero) ** floatExpr(  minusOne) <> -Infinity or
7869        floatExpr(minusZero) ** floatExpr(      -0.5) <>  Infinity or
7870        floatExpr(      0.0) ** floatExpr(      -3.0) <>  Infinity or
7871        floatExpr(      0.0) ** floatExpr(minusThree) <>  Infinity or
7872        floatExpr(      0.0) ** floatExpr(      -2.5) <>  Infinity or
7873        floatExpr(      0.0) ** floatExpr(      -2.0) <>  Infinity or
7874        floatExpr(      0.0) ** floatExpr(  minusTwo) <>  Infinity or
7875        floatExpr(      0.0) ** floatExpr(      -1.5) <>  Infinity or
7876        floatExpr(      0.0) ** floatExpr(      -1.0) <>  Infinity or
7877        floatExpr(      0.0) ** floatExpr(  minusOne) <>  Infinity or
7878        floatExpr(      0.0) ** floatExpr(      -0.5) <>  Infinity then
7879      writeln(" ***** Power of 0.0 with selected negative exponents does not return Infinity.");
7880      okay := FALSE;
7881    end if;
7882
7883    if    0.0    ** 0.5 <>  0.0  or
7884          0.0625 ** 0.5 <>  0.25 or
7885          0.25   ** 0.5 <>  0.5  or
7886          1.0    ** 0.5 <>  1.0  or
7887          4.0    ** 0.5 <>  2.0  or
7888          9.0    ** 0.5 <>  3.0  or
7889         16.0    ** 0.5 <>  4.0  or
7890        100.0    ** 0.5 <> 10.0  or
7891        floatExpr(  0.0   ) ** 0.5 <>  0.0  or
7892        floatExpr(  0.0625) ** 0.5 <>  0.25 or
7893        floatExpr(  0.25  ) ** 0.5 <>  0.5  or
7894        floatExpr(  1.0   ) ** 0.5 <>  1.0  or
7895        floatExpr(  4.0   ) ** 0.5 <>  2.0  or
7896        floatExpr(  9.0   ) ** 0.5 <>  3.0  or
7897        floatExpr( 16.0   ) ** 0.5 <>  4.0  or
7898        floatExpr(100.0   ) ** 0.5 <> 10.0  or
7899          0.0    ** floatExpr(0.5) <>  0.0  or
7900          0.0625 ** floatExpr(0.5) <>  0.25 or
7901          0.25   ** floatExpr(0.5) <>  0.5  or
7902          1.0    ** floatExpr(0.5) <>  1.0  or
7903          4.0    ** floatExpr(0.5) <>  2.0  or
7904          9.0    ** floatExpr(0.5) <>  3.0  or
7905         16.0    ** floatExpr(0.5) <>  4.0  or
7906        100.0    ** floatExpr(0.5) <> 10.0  or
7907        floatExpr(  0.0   ) ** floatExpr(0.5) <>  0.0  or
7908        floatExpr(  0.0625) ** floatExpr(0.5) <>  0.25 or
7909        floatExpr(  0.25  ) ** floatExpr(0.5) <>  0.5  or
7910        floatExpr(  1.0   ) ** floatExpr(0.5) <>  1.0  or
7911        floatExpr(  4.0   ) ** floatExpr(0.5) <>  2.0  or
7912        floatExpr(  9.0   ) ** floatExpr(0.5) <>  3.0  or
7913        floatExpr( 16.0   ) ** floatExpr(0.5) <>  4.0  or
7914        floatExpr(100.0   ) ** floatExpr(0.5) <> 10.0  then
7915      writeln(" ***** A ** 0.5 does not work correct.");
7916      okay := FALSE;
7917    end if;
7918
7919    if  1.0 **           (-Infinity) <> 1.0 or
7920        1.0 ** (-9007199254740994.0) <> 1.0 or
7921        1.0 ** (-9007199254740993.0) <> 1.0 or
7922        1.0 ** (-9007199254740992.0) <> 1.0 or
7923        1.0 ** (-9007199254740991.0) <> 1.0 or
7924        1.0 **       (-2147483649.0) <> 1.0 or
7925        1.0 **       (-2147483648.0) <> 1.0 or
7926        1.0 **                (-2.0) <> 1.0 or
7927        1.0 **                (-1.0) <> 1.0 or
7928        1.0 **                  0.0  <> 1.0 or
7929        1.0 **                  1.0  <> 1.0 or
7930        1.0 **                  2.0  <> 1.0 or
7931        1.0 **         2147483647.0  <> 1.0 or
7932        1.0 **         2147483648.0  <> 1.0 or
7933        1.0 **   9007199254740991.0  <> 1.0 or
7934        1.0 **   9007199254740992.0  <> 1.0 or
7935        1.0 **   9007199254740993.0  <> 1.0 or
7936        1.0 **   9007199254740994.0  <> 1.0 or
7937        1.0 **             Infinity  <> 1.0 or
7938        floatExpr(1.0) **           (-Infinity) <> 1.0 or
7939        floatExpr(1.0) ** (-9007199254740994.0) <> 1.0 or
7940        floatExpr(1.0) ** (-9007199254740993.0) <> 1.0 or
7941        floatExpr(1.0) ** (-9007199254740992.0) <> 1.0 or
7942        floatExpr(1.0) ** (-9007199254740991.0) <> 1.0 or
7943        floatExpr(1.0) **       (-2147483649.0) <> 1.0 or
7944        floatExpr(1.0) **       (-2147483648.0) <> 1.0 or
7945        floatExpr(1.0) **                (-2.0) <> 1.0 or
7946        floatExpr(1.0) **                (-1.0) <> 1.0 or
7947        floatExpr(1.0) **                  0.0  <> 1.0 or
7948        floatExpr(1.0) **                  1.0  <> 1.0 or
7949        floatExpr(1.0) **                  2.0  <> 1.0 or
7950        floatExpr(1.0) **         2147483647.0  <> 1.0 or
7951        floatExpr(1.0) **         2147483648.0  <> 1.0 or
7952        floatExpr(1.0) **   9007199254740991.0  <> 1.0 or
7953        floatExpr(1.0) **   9007199254740992.0  <> 1.0 or
7954        floatExpr(1.0) **   9007199254740993.0  <> 1.0 or
7955        floatExpr(1.0) **   9007199254740994.0  <> 1.0 or
7956        floatExpr(1.0) **             Infinity  <> 1.0 or
7957        1.0 ** floatExpr(          -Infinity) <> 1.0 or
7958        1.0 ** floatExpr(-9007199254740994.0) <> 1.0 or
7959        1.0 ** floatExpr(-9007199254740993.0) <> 1.0 or
7960        1.0 ** floatExpr(-9007199254740992.0) <> 1.0 or
7961        1.0 ** floatExpr(-9007199254740991.0) <> 1.0 or
7962        1.0 ** floatExpr(      -2147483649.0) <> 1.0 or
7963        1.0 ** floatExpr(      -2147483648.0) <> 1.0 or
7964        1.0 ** floatExpr(               -2.0) <> 1.0 or
7965        1.0 ** floatExpr(               -1.0) <> 1.0 or
7966        1.0 ** floatExpr(                0.0) <> 1.0 or
7967        1.0 ** floatExpr(                1.0) <> 1.0 or
7968        1.0 ** floatExpr(                2.0) <> 1.0 or
7969        1.0 ** floatExpr(       2147483647.0) <> 1.0 or
7970        1.0 ** floatExpr(       2147483648.0) <> 1.0 or
7971        1.0 ** floatExpr( 9007199254740991.0) <> 1.0 or
7972        1.0 ** floatExpr( 9007199254740992.0) <> 1.0 or
7973        1.0 ** floatExpr( 9007199254740993.0) <> 1.0 or
7974        1.0 ** floatExpr( 9007199254740994.0) <> 1.0 or
7975        1.0 ** floatExpr(           Infinity) <> 1.0 or
7976        floatExpr(1.0) ** floatExpr(          -Infinity) <> 1.0 or
7977        floatExpr(1.0) ** floatExpr(-9007199254740994.0) <> 1.0 or
7978        floatExpr(1.0) ** floatExpr(-9007199254740993.0) <> 1.0 or
7979        floatExpr(1.0) ** floatExpr(-9007199254740992.0) <> 1.0 or
7980        floatExpr(1.0) ** floatExpr(-9007199254740991.0) <> 1.0 or
7981        floatExpr(1.0) ** floatExpr(      -2147483649.0) <> 1.0 or
7982        floatExpr(1.0) ** floatExpr(      -2147483648.0) <> 1.0 or
7983        floatExpr(1.0) ** floatExpr(               -2.0) <> 1.0 or
7984        floatExpr(1.0) ** floatExpr(               -1.0) <> 1.0 or
7985        floatExpr(1.0) ** floatExpr(                0.0) <> 1.0 or
7986        floatExpr(1.0) ** floatExpr(                1.0) <> 1.0 or
7987        floatExpr(1.0) ** floatExpr(                2.0) <> 1.0 or
7988        floatExpr(1.0) ** floatExpr(       2147483647.0) <> 1.0 or
7989        floatExpr(1.0) ** floatExpr(       2147483648.0) <> 1.0 or
7990        floatExpr(1.0) ** floatExpr( 9007199254740991.0) <> 1.0 or
7991        floatExpr(1.0) ** floatExpr( 9007199254740992.0) <> 1.0 or
7992        floatExpr(1.0) ** floatExpr( 9007199254740993.0) <> 1.0 or
7993        floatExpr(1.0) ** floatExpr( 9007199254740994.0) <> 1.0 or
7994        floatExpr(1.0) ** floatExpr(           Infinity) <> 1.0 then
7995      writeln(" ***** 1.0 ** B does not return 1.0.");
7996      okay := FALSE;
7997    end if;
7998
7999    if  2.0 **           (-Infinity) <> 0.0 or
8000        2.0 ** (-9007199254740994.0) <> 0.0 or
8001        2.0 ** (-9007199254740993.0) <> 0.0 or
8002        2.0 ** (-9007199254740992.0) <> 0.0 or
8003        2.0 ** (-9007199254740991.0) <> 0.0 or
8004        2.0 **       (-2147483649.0) <> 0.0 or
8005        2.0 **       (-2147483648.0) <> 0.0 or
8006        2.0 ** (-1000.0) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
8007        2.0 ** ( -500.0) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
8008        2.0 ** ( -200.0) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
8009        2.0 ** ( -100.0) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
8010        2.0 ** (  -50.0) <> 8.8817841970012523233890533447265625e-16 or
8011        2.0 ** (  -20.0) <> 9.5367431640625e-7 or
8012        2.0 ** (  -10.0) <> 9.765625e-4 or
8013        2.0 ** (   -5.0) <> 3.125e-2 or
8014        2.0 ** (   -2.0) <> 0.25 or
8015        2.0 ** (   -1.0) <> 0.5 or
8016        2.0 **      0.0  <> 1.0 or
8017        2.0 **      1.0  <> 2.0 or
8018        2.0 **      2.0  <> 4.0 or
8019        2.0 **      5.0  <> 3.2e1 or
8020        2.0 **     10.0  <> 1.024e3 or
8021        2.0 **     20.0  <> 1.048576e6 or
8022        2.0 **     50.0  <> 1.125899906842624e15 or
8023        2.0 **    100.0  <> 1.267650600228229401496703205376e30 or
8024        2.0 **    200.0  <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
8025        2.0 **    500.0  <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
8026        2.0 **   1000.0  <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
8027        2.0 **       2147483647.0 <> Infinity or
8028        2.0 **       2147483648.0 <> Infinity or
8029        2.0 ** 9007199254740991.0 <> Infinity or
8030        2.0 ** 9007199254740992.0 <> Infinity or
8031        2.0 ** 9007199254740993.0 <> Infinity or
8032        2.0 ** 9007199254740994.0 <> Infinity or
8033        2.0 **           Infinity <> Infinity or
8034        floatExpr(2.0) **           (-Infinity) <> 0.0 or
8035        floatExpr(2.0) ** (-9007199254740994.0) <> 0.0 or
8036        floatExpr(2.0) ** (-9007199254740993.0) <> 0.0 or
8037        floatExpr(2.0) ** (-9007199254740992.0) <> 0.0 or
8038        floatExpr(2.0) ** (-9007199254740991.0) <> 0.0 or
8039        floatExpr(2.0) **       (-2147483649.0) <> 0.0 or
8040        floatExpr(2.0) **       (-2147483648.0) <> 0.0 or
8041        floatExpr(2.0) ** (-1000.0) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
8042        floatExpr(2.0) ** ( -500.0) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
8043        floatExpr(2.0) ** ( -200.0) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
8044        floatExpr(2.0) ** ( -100.0) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
8045        floatExpr(2.0) ** (  -50.0) <> 8.8817841970012523233890533447265625e-16 or
8046        floatExpr(2.0) ** (  -20.0) <> 9.5367431640625e-7 or
8047        floatExpr(2.0) ** (  -10.0) <> 9.765625e-4 or
8048        floatExpr(2.0) ** (   -5.0) <> 3.125e-2 or
8049        floatExpr(2.0) ** (   -2.0) <> 0.25 or
8050        floatExpr(2.0) ** (   -1.0) <> 0.5 or
8051        floatExpr(2.0) **      0.0  <> 1.0 or
8052        floatExpr(2.0) **      1.0  <> 2.0 or
8053        floatExpr(2.0) **      2.0  <> 4.0 or
8054        floatExpr(2.0) **      5.0  <> 3.2e1 or
8055        floatExpr(2.0) **     10.0  <> 1.024e3 or
8056        floatExpr(2.0) **     20.0  <> 1.048576e6 or
8057        floatExpr(2.0) **     50.0  <> 1.125899906842624e15 or
8058        floatExpr(2.0) **    100.0  <> 1.267650600228229401496703205376e30 or
8059        floatExpr(2.0) **    200.0  <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
8060        floatExpr(2.0) **    500.0  <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
8061        floatExpr(2.0) **   1000.0  <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
8062        floatExpr(2.0) **       2147483647.0 <> Infinity or
8063        floatExpr(2.0) **       2147483648.0 <> Infinity or
8064        floatExpr(2.0) ** 9007199254740991.0 <> Infinity or
8065        floatExpr(2.0) ** 9007199254740992.0 <> Infinity or
8066        floatExpr(2.0) ** 9007199254740993.0 <> Infinity or
8067        floatExpr(2.0) ** 9007199254740994.0 <> Infinity or
8068        floatExpr(2.0) **           Infinity <> Infinity or
8069        2.0 ** floatExpr(          -Infinity) <> 0.0 or
8070        2.0 ** floatExpr(-9007199254740994.0) <> 0.0 or
8071        2.0 ** floatExpr(-9007199254740993.0) <> 0.0 or
8072        2.0 ** floatExpr(-9007199254740992.0) <> 0.0 or
8073        2.0 ** floatExpr(-9007199254740991.0) <> 0.0 or
8074        2.0 ** floatExpr(      -2147483649.0) <> 0.0 or
8075        2.0 ** floatExpr(      -2147483648.0) <> 0.0 or
8076        2.0 ** floatExpr(-1000.0) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
8077        2.0 ** floatExpr( -500.0) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
8078        2.0 ** floatExpr( -200.0) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
8079        2.0 ** floatExpr( -100.0) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
8080        2.0 ** floatExpr(  -50.0) <> 8.8817841970012523233890533447265625e-16 or
8081        2.0 ** floatExpr(  -20.0) <> 9.5367431640625e-7 or
8082        2.0 ** floatExpr(  -10.0) <> 9.765625e-4 or
8083        2.0 ** floatExpr(   -5.0) <> 3.125e-2 or
8084        2.0 ** floatExpr(   -2.0) <> 0.25 or
8085        2.0 ** floatExpr(   -1.0) <> 0.5 or
8086        2.0 ** floatExpr(    0.0) <> 1.0 or
8087        2.0 ** floatExpr(    1.0) <> 2.0 or
8088        2.0 ** floatExpr(    2.0) <> 4.0 or
8089        2.0 ** floatExpr(    5.0) <> 3.2e1 or
8090        2.0 ** floatExpr(   10.0) <> 1.024e3 or
8091        2.0 ** floatExpr(   20.0) <> 1.048576e6 or
8092        2.0 ** floatExpr(   50.0) <> 1.125899906842624e15 or
8093        2.0 ** floatExpr(  100.0) <> 1.267650600228229401496703205376e30 or
8094        2.0 ** floatExpr(  200.0) <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
8095        2.0 ** floatExpr(  500.0) <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
8096        2.0 ** floatExpr( 1000.0) <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
8097        2.0 ** floatExpr(       2147483647.0) <> Infinity or
8098        2.0 ** floatExpr(       2147483648.0) <> Infinity or
8099        2.0 ** floatExpr( 9007199254740991.0) <> Infinity or
8100        2.0 ** floatExpr( 9007199254740992.0) <> Infinity or
8101        2.0 ** floatExpr( 9007199254740993.0) <> Infinity or
8102        2.0 ** floatExpr( 9007199254740994.0) <> Infinity or
8103        2.0 ** floatExpr(           Infinity) <> Infinity or
8104        floatExpr(2.0) ** floatExpr(          -Infinity) <> 0.0 or
8105        floatExpr(2.0) ** floatExpr(-9007199254740994.0) <> 0.0 or
8106        floatExpr(2.0) ** floatExpr(-9007199254740993.0) <> 0.0 or
8107        floatExpr(2.0) ** floatExpr(-9007199254740992.0) <> 0.0 or
8108        floatExpr(2.0) ** floatExpr(-9007199254740991.0) <> 0.0 or
8109        floatExpr(2.0) ** floatExpr(      -2147483649.0) <> 0.0 or
8110        floatExpr(2.0) ** floatExpr(      -2147483648.0) <> 0.0 or
8111        floatExpr(2.0) ** floatExpr(-1000.0) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
8112        floatExpr(2.0) ** floatExpr( -500.0) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
8113        floatExpr(2.0) ** floatExpr( -200.0) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
8114        floatExpr(2.0) ** floatExpr( -100.0) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
8115        floatExpr(2.0) ** floatExpr(  -50.0) <> 8.8817841970012523233890533447265625e-16 or
8116        floatExpr(2.0) ** floatExpr(  -20.0) <> 9.5367431640625e-7 or
8117        floatExpr(2.0) ** floatExpr(  -10.0) <> 9.765625e-4 or
8118        floatExpr(2.0) ** floatExpr(   -5.0) <> 3.125e-2 or
8119        floatExpr(2.0) ** floatExpr(   -2.0) <> 0.25 or
8120        floatExpr(2.0) ** floatExpr(   -1.0) <> 0.5 or
8121        floatExpr(2.0) ** floatExpr(    0.0) <> 1.0 or
8122        floatExpr(2.0) ** floatExpr(    1.0) <> 2.0 or
8123        floatExpr(2.0) ** floatExpr(    2.0) <> 4.0 or
8124        floatExpr(2.0) ** floatExpr(    5.0) <> 3.2e1 or
8125        floatExpr(2.0) ** floatExpr(   10.0) <> 1.024e3 or
8126        floatExpr(2.0) ** floatExpr(   20.0) <> 1.048576e6 or
8127        floatExpr(2.0) ** floatExpr(   50.0) <> 1.125899906842624e15 or
8128        floatExpr(2.0) ** floatExpr(  100.0) <> 1.267650600228229401496703205376e30 or
8129        floatExpr(2.0) ** floatExpr(  200.0) <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
8130        floatExpr(2.0) ** floatExpr(  500.0) <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
8131        floatExpr(2.0) ** floatExpr( 1000.0) <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
8132        floatExpr(2.0) ** floatExpr(      2147483647.0) <> Infinity or
8133        floatExpr(2.0) ** floatExpr(      2147483648.0) <> Infinity or
8134        floatExpr(2.0) ** floatExpr(9007199254740991.0) <> Infinity or
8135        floatExpr(2.0) ** floatExpr(9007199254740992.0) <> Infinity or
8136        floatExpr(2.0) ** floatExpr(9007199254740993.0) <> Infinity or
8137        floatExpr(2.0) ** floatExpr(9007199254740994.0) <> Infinity or
8138        floatExpr(2.0) ** floatExpr(          Infinity) <> Infinity then
8139      writeln(" ***** 2.0 ** B does not work correct.");
8140      okay := FALSE;
8141    end if;
8142
8143    if            E  **          (-Infinity) <>      0.0 or
8144                  E  **                 0.0  <>      1.0 or
8145                  E  **            Infinity  <> Infinity or
8146        floatExpr(E) **          (-Infinity) <>      0.0 or
8147        floatExpr(E) **                 0.0  <>      1.0 or
8148        floatExpr(E) **            Infinity  <> Infinity or
8149                  E  ** floatExpr(-Infinity) <>      0.0 or
8150                  E  ** floatExpr(      0.0) <>      1.0 or
8151                  E  ** floatExpr( Infinity) <> Infinity or
8152        floatExpr(E) ** floatExpr(-Infinity) <>      0.0 or
8153        floatExpr(E) ** floatExpr(      0.0) <>      1.0 or
8154        floatExpr(E) ** floatExpr( Infinity) <> Infinity then
8155      writeln(" ***** E ** B does not work correct.");
8156      okay := FALSE;
8157    end if;
8158
8159    if            10.0  **          (-Infinity) <>      0.0 or
8160                  10.0  **                 0.0  <>      1.0 or
8161                  10.0  **            Infinity  <> Infinity or
8162        floatExpr(10.0) **          (-Infinity) <>      0.0 or
8163        floatExpr(10.0) **                 0.0  <>      1.0 or
8164        floatExpr(10.0) **            Infinity  <> Infinity or
8165                  10.0  ** floatExpr(-Infinity) <>      0.0 or
8166                  10.0  ** floatExpr(      0.0) <>      1.0 or
8167                  10.0  ** floatExpr( Infinity) <> Infinity or
8168        floatExpr(10.0) ** floatExpr(-Infinity) <>      0.0 or
8169        floatExpr(10.0) ** floatExpr(      0.0) <>      1.0 or
8170        floatExpr(10.0) ** floatExpr( Infinity) <> Infinity then
8171      writeln(" ***** 10.0 ** B does not work correct.");
8172      okay := FALSE;
8173    end if;
8174
8175    if  not isNaN(NaN ** (          -Infinity)) or
8176        not isNaN(NaN ** (-9007199254740994.0)) or # Not exactly represented
8177        not isNaN(NaN ** (-9007199254740993.0)) or # Not exactly represented
8178        not isNaN(NaN ** (-9007199254740992.0)) or
8179        not isNaN(NaN ** (-9007199254740991.0)) or
8180        not isNaN(NaN **       (-4294967297.0)) or
8181        not isNaN(NaN **       (-4294967296.0)) or
8182        not isNaN(NaN **       (-4294967295.0)) or
8183        not isNaN(NaN **       (-2147483649.0)) or
8184        not isNaN(NaN **       (-2147483648.0)) or
8185        not isNaN(NaN **       (-2147483647.0)) or
8186        not isNaN(NaN **                (-3.0)) or
8187        not isNaN(NaN **                (-2.5)) or
8188        not isNaN(NaN **                (-2.0)) or
8189        not isNaN(NaN **                (-1.5)) or
8190        not isNaN(NaN **                (-1.0)) or
8191        not isNaN(NaN **                (-0.5)) or
8192        not isNaN(NaN **                  0.5 ) or
8193        not isNaN(NaN **                  1.0 ) or
8194        not isNaN(NaN **                  1.5 ) or
8195        not isNaN(NaN **                  2.0 ) or
8196        not isNaN(NaN **                  2.5 ) or
8197        not isNaN(NaN **                  3.0 ) or
8198        not isNaN(NaN **         2147483647.0 ) or
8199        not isNaN(NaN **         2147483648.0 ) or
8200        not isNaN(NaN **         2147483649.0 ) or
8201        not isNaN(NaN **         4294967295.0 ) or
8202        not isNaN(NaN **         4294967296.0 ) or
8203        not isNaN(NaN **         4294967297.0 ) or
8204        not isNaN(NaN **   9007199254740991.0 ) or
8205        not isNaN(NaN **   9007199254740992.0 ) or
8206        not isNaN(NaN **   9007199254740993.0 ) or # Not exactly represented
8207        not isNaN(NaN **   9007199254740994.0 ) or # Not exactly represented
8208        not isNaN(NaN **             Infinity ) or
8209        not isNaN(floatExpr(NaN) ** (          -Infinity)) or
8210        not isNaN(floatExpr(NaN) ** (-9007199254740994.0)) or # Not exactly represented
8211        not isNaN(floatExpr(NaN) ** (-9007199254740993.0)) or # Not exactly represented
8212        not isNaN(floatExpr(NaN) ** (-9007199254740992.0)) or
8213        not isNaN(floatExpr(NaN) ** (-9007199254740991.0)) or
8214        not isNaN(floatExpr(NaN) **       (-4294967297.0)) or
8215        not isNaN(floatExpr(NaN) **       (-4294967296.0)) or
8216        not isNaN(floatExpr(NaN) **       (-4294967295.0)) or
8217        not isNaN(floatExpr(NaN) **       (-2147483649.0)) or
8218        not isNaN(floatExpr(NaN) **       (-2147483648.0)) or
8219        not isNaN(floatExpr(NaN) **       (-2147483647.0)) or
8220        not isNaN(floatExpr(NaN) **                (-3.0)) or
8221        not isNaN(floatExpr(NaN) **                (-2.5)) or
8222        not isNaN(floatExpr(NaN) **                (-2.0)) or
8223        not isNaN(floatExpr(NaN) **                (-1.5)) or
8224        not isNaN(floatExpr(NaN) **                (-1.0)) or
8225        not isNaN(floatExpr(NaN) **                (-0.5)) or
8226        not isNaN(floatExpr(NaN) **                  0.5 ) or
8227        not isNaN(floatExpr(NaN) **                  1.0 ) or
8228        not isNaN(floatExpr(NaN) **                  1.5 ) or
8229        not isNaN(floatExpr(NaN) **                  2.0 ) or
8230        not isNaN(floatExpr(NaN) **                  2.5 ) or
8231        not isNaN(floatExpr(NaN) **                  3.0 ) or
8232        not isNaN(floatExpr(NaN) **         2147483647.0 ) or
8233        not isNaN(floatExpr(NaN) **         2147483648.0 ) or
8234        not isNaN(floatExpr(NaN) **         2147483649.0 ) or
8235        not isNaN(floatExpr(NaN) **         4294967295.0 ) or
8236        not isNaN(floatExpr(NaN) **         4294967296.0 ) or
8237        not isNaN(floatExpr(NaN) **         4294967297.0 ) or
8238        not isNaN(floatExpr(NaN) **   9007199254740991.0 ) or
8239        not isNaN(floatExpr(NaN) **   9007199254740992.0 ) or
8240        not isNaN(floatExpr(NaN) **   9007199254740993.0 ) or # Not exactly represented
8241        not isNaN(floatExpr(NaN) **   9007199254740994.0 ) or # Not exactly represented
8242        not isNaN(floatExpr(NaN) **             Infinity ) or
8243        not isNaN(NaN ** floatExpr(          -Infinity)) or
8244        not isNaN(NaN ** floatExpr(-9007199254740994.0)) or # Not exactly represented
8245        not isNaN(NaN ** floatExpr(-9007199254740993.0)) or # Not exactly represented
8246        not isNaN(NaN ** floatExpr(-9007199254740992.0)) or
8247        not isNaN(NaN ** floatExpr(-9007199254740991.0)) or
8248        not isNaN(NaN ** floatExpr(      -4294967297.0)) or
8249        not isNaN(NaN ** floatExpr(      -4294967296.0)) or
8250        not isNaN(NaN ** floatExpr(      -4294967295.0)) or
8251        not isNaN(NaN ** floatExpr(      -2147483649.0)) or
8252        not isNaN(NaN ** floatExpr(      -2147483648.0)) or
8253        not isNaN(NaN ** floatExpr(      -2147483647.0)) or
8254        not isNaN(NaN ** floatExpr(               -3.0)) or
8255        not isNaN(NaN ** floatExpr(               -2.5)) or
8256        not isNaN(NaN ** floatExpr(               -2.0)) or
8257        not isNaN(NaN ** floatExpr(               -1.5)) or
8258        not isNaN(NaN ** floatExpr(               -1.0)) or
8259        not isNaN(NaN ** floatExpr(               -0.5)) or
8260        not isNaN(NaN ** floatExpr(                0.5)) or
8261        not isNaN(NaN ** floatExpr(                1.0)) or
8262        not isNaN(NaN ** floatExpr(                1.5)) or
8263        not isNaN(NaN ** floatExpr(                2.0)) or
8264        not isNaN(NaN ** floatExpr(                2.5)) or
8265        not isNaN(NaN ** floatExpr(                3.0)) or
8266        not isNaN(NaN ** floatExpr(       2147483647.0)) or
8267        not isNaN(NaN ** floatExpr(       2147483648.0)) or
8268        not isNaN(NaN ** floatExpr(       2147483649.0)) or
8269        not isNaN(NaN ** floatExpr(       4294967295.0)) or
8270        not isNaN(NaN ** floatExpr(       4294967296.0)) or
8271        not isNaN(NaN ** floatExpr(       4294967297.0)) or
8272        not isNaN(NaN ** floatExpr( 9007199254740991.0)) or
8273        not isNaN(NaN ** floatExpr( 9007199254740992.0)) or
8274        not isNaN(NaN ** floatExpr( 9007199254740993.0)) or # Not exactly represented
8275        not isNaN(NaN ** floatExpr( 9007199254740994.0)) or # Not exactly represented
8276        not isNaN(NaN ** floatExpr(           Infinity)) or
8277        not isNaN(floatExpr(NaN) ** floatExpr(          -Infinity)) or
8278        not isNaN(floatExpr(NaN) ** floatExpr(-9007199254740994.0)) or # Not exactly represented
8279        not isNaN(floatExpr(NaN) ** floatExpr(-9007199254740993.0)) or # Not exactly represented
8280        not isNaN(floatExpr(NaN) ** floatExpr(-9007199254740992.0)) or
8281        not isNaN(floatExpr(NaN) ** floatExpr(-9007199254740991.0)) or
8282        not isNaN(floatExpr(NaN) ** floatExpr(      -4294967297.0)) or
8283        not isNaN(floatExpr(NaN) ** floatExpr(      -4294967296.0)) or
8284        not isNaN(floatExpr(NaN) ** floatExpr(      -4294967295.0)) or
8285        not isNaN(floatExpr(NaN) ** floatExpr(      -2147483649.0)) or
8286        not isNaN(floatExpr(NaN) ** floatExpr(      -2147483648.0)) or
8287        not isNaN(floatExpr(NaN) ** floatExpr(      -2147483647.0)) or
8288        not isNaN(floatExpr(NaN) ** floatExpr(               -3.0)) or
8289        not isNaN(floatExpr(NaN) ** floatExpr(               -2.5)) or
8290        not isNaN(floatExpr(NaN) ** floatExpr(               -2.0)) or
8291        not isNaN(floatExpr(NaN) ** floatExpr(               -1.5)) or
8292        not isNaN(floatExpr(NaN) ** floatExpr(               -1.0)) or
8293        not isNaN(floatExpr(NaN) ** floatExpr(               -0.5)) or
8294        not isNaN(floatExpr(NaN) ** floatExpr(                0.5)) or
8295        not isNaN(floatExpr(NaN) ** floatExpr(                1.0)) or
8296        not isNaN(floatExpr(NaN) ** floatExpr(                1.5)) or
8297        not isNaN(floatExpr(NaN) ** floatExpr(                2.0)) or
8298        not isNaN(floatExpr(NaN) ** floatExpr(                2.5)) or
8299        not isNaN(floatExpr(NaN) ** floatExpr(                3.0)) or
8300        not isNaN(floatExpr(NaN) ** floatExpr(       2147483647.0)) or
8301        not isNaN(floatExpr(NaN) ** floatExpr(       2147483648.0)) or
8302        not isNaN(floatExpr(NaN) ** floatExpr(       2147483649.0)) or
8303        not isNaN(floatExpr(NaN) ** floatExpr(       4294967295.0)) or
8304        not isNaN(floatExpr(NaN) ** floatExpr(       4294967296.0)) or
8305        not isNaN(floatExpr(NaN) ** floatExpr(       4294967297.0)) or
8306        not isNaN(floatExpr(NaN) ** floatExpr( 9007199254740991.0)) or
8307        not isNaN(floatExpr(NaN) ** floatExpr( 9007199254740992.0)) or
8308        not isNaN(floatExpr(NaN) ** floatExpr( 9007199254740993.0)) or # Not exactly represented
8309        not isNaN(floatExpr(NaN) ** floatExpr( 9007199254740994.0)) or # Not exactly represented
8310        not isNaN(floatExpr(NaN) ** floatExpr(           Infinity)) then
8311      writeln(" ***** NaN ** B for B <> 0.0 does not return NaN.");
8312      okay := FALSE;
8313    end if;
8314
8315    if  not isNaN((-Infinity) ** NaN) or
8316        not isNaN(     (-2.0) ** NaN) or
8317        not isNaN(     (-1.0) ** NaN) or
8318        not isNaN(       0.0  ** NaN) or
8319        not isNaN(       2.0  ** NaN) or
8320        not isNaN(      10.0  ** NaN) or
8321        not isNaN(         E  ** NaN) or
8322        not isNaN(  Infinity  ** NaN) or
8323        not isNaN(       NaN  ** NaN) or
8324        not isNaN(floatExpr(-Infinity) ** NaN) or
8325        not isNaN(floatExpr(     -2.0) ** NaN) or
8326        not isNaN(floatExpr(     -1.0) ** NaN) or
8327        not isNaN(floatExpr(      0.0) ** NaN) or
8328        not isNaN(floatExpr(      2.0) ** NaN) or
8329        not isNaN(floatExpr(     10.0) ** NaN) or
8330        not isNaN(floatExpr(        E) ** NaN) or
8331        not isNaN(floatExpr( Infinity) ** NaN) or
8332        not isNaN(floatExpr(      NaN) ** NaN) or
8333        not isNaN((-Infinity) ** floatExpr(NaN)) or
8334        not isNaN(     (-2.0) ** floatExpr(NaN)) or
8335        not isNaN(     (-1.0) ** floatExpr(NaN)) or
8336        not isNaN(       0.0  ** floatExpr(NaN)) or
8337        not isNaN(       2.0  ** floatExpr(NaN)) or
8338        not isNaN(      10.0  ** floatExpr(NaN)) or
8339        not isNaN(         E  ** floatExpr(NaN)) or
8340        not isNaN(  Infinity  ** floatExpr(NaN)) or
8341        not isNaN(       NaN  ** floatExpr(NaN)) or
8342        not isNaN(floatExpr(-Infinity) ** floatExpr(NaN)) or
8343        not isNaN(floatExpr(     -2.0) ** floatExpr(NaN)) or
8344        not isNaN(floatExpr(     -1.0) ** floatExpr(NaN)) or
8345        not isNaN(floatExpr(      0.0) ** floatExpr(NaN)) or
8346        not isNaN(floatExpr(      2.0) ** floatExpr(NaN)) or
8347        not isNaN(floatExpr(     10.0) ** floatExpr(NaN)) or
8348        not isNaN(floatExpr(        E) ** floatExpr(NaN)) or
8349        not isNaN(floatExpr( Infinity) ** floatExpr(NaN)) or
8350        not isNaN(floatExpr(      NaN) ** floatExpr(NaN)) then
8351      writeln(" ***** A ** NaN for A <> 1.0 does not return NaN.");
8352      okay := FALSE;
8353    end if;
8354
8355    if            NaN  **          (-0.0) <> 1.0 or
8356                  NaN  **            0.0  <> 1.0 or
8357        floatExpr(NaN) **          (-0.0) <> 1.0 or
8358        floatExpr(NaN) **            0.0  <> 1.0 or
8359                  NaN  ** floatExpr(-0.0) <> 1.0 or
8360                  NaN  ** floatExpr( 0.0) <> 1.0 or
8361        floatExpr(NaN) ** floatExpr(-0.0) <> 1.0 or
8362        floatExpr(NaN) ** floatExpr( 0.0) <> 1.0 then
8363      writeln(" ***** NaN ** 0.0 does not return 1.0.");
8364      okay := FALSE;
8365    end if;
8366
8367    if            1.0  **           NaN  <> 1.0 or
8368        floatExpr(1.0) **           NaN  <> 1.0 or
8369                  1.0  ** floatExpr(NaN) <> 1.0 or
8370        floatExpr(1.0) ** floatExpr(NaN) <> 1.0 then
8371      writeln(" ***** 1.0 ** NaN does not return 1.0.");
8372      okay := FALSE;
8373    end if;
8374
8375    if okay then
8376      writeln("A ** B works correct for selected values.");
8377    else
8378      writeln(" ***** A ** B does not work correct.");
8379    end if;
8380  end func;
8381
8382
8383const proc: check_ipower is func
8384  local
8385    var boolean: okay is TRUE;
8386  begin
8387    if  (-2.0) ** (-2) <>  0.25 or
8388        (-2.0) ** (-1) <> -0.5  or
8389        (-2.0) **   0  <>  1.0  or
8390        (-2.0) **   1  <> -2.0  or
8391        (-2.0) **   2  <>  4.0  or
8392        #(-1.5) ** (-2) <> 0.444444 or
8393        #(-1.5) ** (-1) <> -0.666667 or
8394        (-1.5) **   0  <>  1.0  or
8395        (-1.5) **   1  <> -1.5  or
8396        (-1.5) **   2  <>  2.25 or
8397        (-0.5) ** (-2) <>  4.0  or
8398        (-0.5) ** (-1) <> -2.0  or
8399        (-0.5) **   0  <>  1.0  or
8400        (-0.5) **   1  <> -0.5  or
8401        (-0.5) **   2  <>  0.25 or
8402          0.5  ** (-2) <>  4.0  or
8403          0.5  ** (-1) <>  2.0  or
8404          0.5  **   0  <>  1.0  or
8405          0.5  **   1  <>  0.5  or
8406          0.5  **   2  <>  0.25 or
8407         #1.5  ** (-2) <>  0.444444 or
8408         #1.5  ** (-1) <>  0.666667 or
8409          1.5  **   0  <>  1.0  or
8410          1.5  **   1  <>  1.5  or
8411          1.5  **   2  <>  2.25 or
8412        (-1.1) ** integer.first <> 0.0 or
8413        (-0.9) ** integer.first <> Infinity or
8414          0.9  ** integer.first <> Infinity or
8415          1.1  ** integer.first <> 0.0 or
8416        floatExpr(-2.0) ** (-2) <>  0.25 or
8417        floatExpr(-2.0) ** (-1) <> -0.5  or
8418        floatExpr(-2.0) **   0  <>  1.0  or
8419        floatExpr(-2.0) **   1  <> -2.0  or
8420        floatExpr(-2.0) **   2  <>  4.0  or
8421        #floatExpr(-1.5) ** (-2) <> 0.444444 or
8422        #floatExpr(-1.5) ** (-1) <> -0.666667 or
8423        floatExpr(-1.5) **   0  <>  1.0  or
8424        floatExpr(-1.5) **   1  <> -1.5  or
8425        floatExpr(-1.5) **   2  <>  2.25 or
8426        floatExpr(-0.5) ** (-2) <>  4.0  or
8427        floatExpr(-0.5) ** (-1) <> -2.0  or
8428        floatExpr(-0.5) **   0  <>  1.0  or
8429        floatExpr(-0.5) **   1  <> -0.5  or
8430        floatExpr(-0.5) **   2  <>  0.25 or
8431        floatExpr( 0.5) ** (-2) <>  4.0  or
8432        floatExpr( 0.5) ** (-1) <>  2.0  or
8433        floatExpr( 0.5) **   0  <>  1.0  or
8434        floatExpr( 0.5) **   1  <>  0.5  or
8435        floatExpr( 0.5) **   2  <>  0.25 or
8436        #floatExpr( 1.5) ** (-2) <>  0.444444 or
8437        #floatExpr( 1.5) ** (-1) <>  0.666667 or
8438        floatExpr( 1.5) **   0  <>  1.0  or
8439        floatExpr( 1.5) **   1  <>  1.5  or
8440        floatExpr( 1.5) **   2  <>  2.25 or
8441        floatExpr(-1.1) ** integer.first <> 0.0 or
8442        floatExpr(-0.9) ** integer.first <> Infinity or
8443        floatExpr( 0.9) ** integer.first <> Infinity or
8444        floatExpr( 1.1) ** integer.first <> 0.0 or
8445        (-2.0) ** intExpr(-2) <>  0.25 or
8446        (-2.0) ** intExpr(-1) <> -0.5  or
8447        (-2.0) ** intExpr( 0) <>  1.0  or
8448        (-2.0) ** intExpr( 1) <> -2.0  or
8449        (-2.0) ** intExpr( 2) <>  4.0  or
8450        #(-1.5) ** intExpr(-2) <> 0.444444 or
8451        #(-1.5) ** intExpr(-1) <> -0.666667 or
8452        (-1.5) ** intExpr( 0) <>  1.0  or
8453        (-1.5) ** intExpr( 1) <> -1.5  or
8454        (-1.5) ** intExpr( 2) <>  2.25 or
8455        (-0.5) ** intExpr(-2) <>  4.0  or
8456        (-0.5) ** intExpr(-1) <> -2.0  or
8457        (-0.5) ** intExpr( 0) <>  1.0  or
8458        (-0.5) ** intExpr( 1) <> -0.5  or
8459        (-0.5) ** intExpr( 2) <>  0.25 or
8460          0.5  ** intExpr(-2) <>  4.0  or
8461          0.5  ** intExpr(-1) <>  2.0  or
8462          0.5  ** intExpr( 0) <>  1.0  or
8463          0.5  ** intExpr( 1) <>  0.5  or
8464          0.5  ** intExpr( 2) <>  0.25 or
8465         #1.5  ** intExpr(-2) <>  0.444444 or
8466         #1.5  ** intExpr(-1) <>  0.666667 or
8467          1.5  ** intExpr( 0) <>  1.0  or
8468          1.5  ** intExpr( 1) <>  1.5  or
8469          1.5  ** intExpr( 2) <>  2.25 or
8470        (-1.1) ** intExpr(integer.first) <> 0.0 or
8471        (-0.9) ** intExpr(integer.first) <> Infinity or
8472          0.9  ** intExpr(integer.first) <> Infinity or
8473          1.1  ** intExpr(integer.first) <> 0.0 or
8474        floatExpr(-2.0) ** intExpr(-2) <>  0.25 or
8475        floatExpr(-2.0) ** intExpr(-1) <> -0.5  or
8476        floatExpr(-2.0) ** intExpr( 0) <>  1.0  or
8477        floatExpr(-2.0) ** intExpr( 1) <> -2.0  or
8478        floatExpr(-2.0) ** intExpr( 2) <>  4.0  or
8479        #floatExpr(-1.5) ** intExpr(-2) <> 0.444444 or
8480        #floatExpr(-1.5) ** intExpr(-1) <> -0.666667 or
8481        floatExpr(-1.5) ** intExpr( 0) <>  1.0  or
8482        floatExpr(-1.5) ** intExpr( 1) <> -1.5  or
8483        floatExpr(-1.5) ** intExpr( 2) <>  2.25 or
8484        floatExpr(-0.5) ** intExpr(-2) <>  4.0  or
8485        floatExpr(-0.5) ** intExpr(-1) <> -2.0  or
8486        floatExpr(-0.5) ** intExpr( 0) <>  1.0  or
8487        floatExpr(-0.5) ** intExpr( 1) <> -0.5  or
8488        floatExpr(-0.5) ** intExpr( 2) <>  0.25 or
8489        floatExpr( 0.5) ** intExpr(-2) <>  4.0  or
8490        floatExpr( 0.5) ** intExpr(-1) <>  2.0  or
8491        floatExpr( 0.5) ** intExpr( 0) <>  1.0  or
8492        floatExpr( 0.5) ** intExpr( 1) <>  0.5  or
8493        floatExpr( 0.5) ** intExpr( 2) <>  0.25 or
8494        #floatExpr( 1.5) ** intExpr(-2) <>  0.444444 or
8495        #floatExpr( 1.5) ** intExpr(-1) <>  0.666667 or
8496        floatExpr( 1.5) ** intExpr( 0) <>  1.0  or
8497        floatExpr( 1.5) ** intExpr( 1) <>  1.5  or
8498        floatExpr( 1.5) ** intExpr( 2) <>  2.25 or
8499        floatExpr(-1.1) ** intExpr(integer.first) <> 0.0 or
8500        floatExpr(-0.9) ** intExpr(integer.first) <> Infinity or
8501        floatExpr( 0.9) ** intExpr(integer.first) <> Infinity or
8502        floatExpr( 1.1) ** intExpr(integer.first) <> 0.0 then
8503      writeln(" ***** A ** B with integer B does not work correct for selected values.");
8504      okay := FALSE;
8505    end if;
8506
8507    if  (-2.0) **      integer.first  <> 0.0 or
8508        (-2.0) ** (-9007199254740993) <> 0.0 or
8509        (-2.0) ** (-9007199254740992) <> 0.0 or
8510        (-2.0) **       (-2147483649) <> 0.0 or
8511        (-2.0) **       (-2147483648) <> 0.0 or
8512        (-2.0) ** (-1000) <>  9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
8513        (-2.0) ** ( -777) <> -1.2580368690619400992630930670642290049228151004764953780943507245961510227088530391346965409619581274622438598009470989592763178178106372216104950371976994872158846753107043068125962477943865430246765239659515132500679733253773573442968156387862374544517729158500345225740840261937808914008531993591772366677435357882365926301734357710322786821188184892761835546430141790729736468138408856571932694214448299272577968593520269378135768742338158247517956391472854386669993697244754908216006714126797830970508340620028775447281077504158020019531250000000e-234 or
8514        (-2.0) ** ( -500) <>  3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
8515        (-2.0) ** ( -333) <> -5.714936956411374911078917741526704797259549974113993306075629216138163179533690978377240109300860148245915271766870141161102706811419593755630211467050206209827570086880426305042279198514760130828138429137652565259486436843872070312500000000e-101 or
8516        (-2.0) ** ( -150) <>  7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625e-46 or
8517        (-2.0) ** ( -100) <>  7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
8518        (-2.0) ** (  -50) <>  8.8817841970012523233890533447265625e-16 or
8519        (-2.0) ** (  -25) <> -2.98023223876953125e-8 or
8520        (-2.0) ** (  -10) <>  9.765625e-4 or
8521        (-2.0) ** (   -5) <> -3.125e-2 or
8522        (-2.0) ** (   -2) <>  0.25 or
8523        (-2.0) ** (   -1) <> -0.5 or
8524        (-2.0) **      0  <>  1.0 or
8525        (-2.0) **      1  <> -2.0 or
8526        (-2.0) **      2  <>  4.0 or
8527        (-2.0) **      5  <> -3.2e1 or
8528        (-2.0) **     10  <>  1.024e3 or
8529        (-2.0) **     25  <> -3.3554432e+7 or
8530        (-2.0) **     50  <>  1.125899906842624e15 or
8531        (-2.0) **    100  <>  1.267650600228229401496703205376e30 or
8532        (-2.0) **    150  <>  1.427247692705959881058285969449495136382746624e+45 or
8533        (-2.0) **    333  <> -1.74980057982640953949800178169409709228253554471456994914061648512796239935950073857881054161844305920000000000e+100 or
8534        (-2.0) **    500  <>  3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
8535        (-2.0) **    777  <> -7.948892632579629747962774980928013082915256407637486649031946434693380877754249658014097453202669967106497181169311094815598489825867849684194750848210847432726809477226751516417358262433784037505346555871828320004571375891538216222720000000e+233 or
8536        (-2.0) **   1000  <>  1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
8537        (-2.0) **       2147483647 <> -Infinity or
8538        (-2.0) **       2147483648 <>  Infinity or
8539        (-2.0) ** 9007199254740992 <>  Infinity or
8540        (-2.0) ** 9007199254740993 <> -Infinity or
8541        (-2.0) **     integer.last <> -Infinity or
8542        floatExpr(-2.0) **      integer.first  <> 0.0 or
8543        floatExpr(-2.0) ** (-9007199254740993) <> 0.0 or
8544        floatExpr(-2.0) ** (-9007199254740992) <> 0.0 or
8545        floatExpr(-2.0) **       (-2147483649) <> 0.0 or
8546        floatExpr(-2.0) **       (-2147483648) <> 0.0 or
8547        floatExpr(-2.0) ** (-1000) <>  9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
8548        floatExpr(-2.0) ** ( -777) <> -1.2580368690619400992630930670642290049228151004764953780943507245961510227088530391346965409619581274622438598009470989592763178178106372216104950371976994872158846753107043068125962477943865430246765239659515132500679733253773573442968156387862374544517729158500345225740840261937808914008531993591772366677435357882365926301734357710322786821188184892761835546430141790729736468138408856571932694214448299272577968593520269378135768742338158247517956391472854386669993697244754908216006714126797830970508340620028775447281077504158020019531250000000e-234 or
8549        floatExpr(-2.0) ** ( -500) <>  3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
8550        floatExpr(-2.0) ** ( -333) <> -5.714936956411374911078917741526704797259549974113993306075629216138163179533690978377240109300860148245915271766870141161102706811419593755630211467050206209827570086880426305042279198514760130828138429137652565259486436843872070312500000000e-101 or
8551        floatExpr(-2.0) ** ( -150) <>  7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625e-46 or
8552        floatExpr(-2.0) ** ( -100) <>  7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
8553        floatExpr(-2.0) ** (  -50) <>  8.8817841970012523233890533447265625e-16 or
8554        floatExpr(-2.0) ** (  -25) <> -2.98023223876953125e-8 or
8555        floatExpr(-2.0) ** (  -10) <>  9.765625e-4 or
8556        floatExpr(-2.0) ** (   -5) <> -3.125e-2 or
8557        floatExpr(-2.0) ** (   -2) <>  0.25 or
8558        floatExpr(-2.0) ** (   -1) <> -0.5 or
8559        floatExpr(-2.0) **      0  <>  1.0 or
8560        floatExpr(-2.0) **      1  <> -2.0 or
8561        floatExpr(-2.0) **      2  <>  4.0 or
8562        floatExpr(-2.0) **      5  <> -3.2e1 or
8563        floatExpr(-2.0) **     10  <>  1.024e3 or
8564        floatExpr(-2.0) **     25  <> -3.3554432e+7 or
8565        floatExpr(-2.0) **     50  <>  1.125899906842624e15 or
8566        floatExpr(-2.0) **    100  <>  1.267650600228229401496703205376e30 or
8567        floatExpr(-2.0) **    150  <>  1.427247692705959881058285969449495136382746624e+45 or
8568        floatExpr(-2.0) **    333  <> -1.74980057982640953949800178169409709228253554471456994914061648512796239935950073857881054161844305920000000000e+100 or
8569        floatExpr(-2.0) **    500  <>  3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
8570        floatExpr(-2.0) **    777  <> -7.948892632579629747962774980928013082915256407637486649031946434693380877754249658014097453202669967106497181169311094815598489825867849684194750848210847432726809477226751516417358262433784037505346555871828320004571375891538216222720000000e+233 or
8571        floatExpr(-2.0) **   1000  <>  1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
8572        floatExpr(-2.0) **       2147483647 <> -Infinity or
8573        floatExpr(-2.0) **       2147483648 <>  Infinity or
8574        floatExpr(-2.0) ** 9007199254740992 <>  Infinity or
8575        floatExpr(-2.0) ** 9007199254740993 <> -Infinity or
8576        floatExpr(-2.0) **     integer.last <> -Infinity or
8577        (-2.0) ** intExpr(    integer.first) <> 0.0 or
8578        (-2.0) ** intExpr(-9007199254740993) <> 0.0 or
8579        (-2.0) ** intExpr(-9007199254740992) <> 0.0 or
8580        (-2.0) ** intExpr(      -2147483649) <> 0.0 or
8581        (-2.0) ** intExpr(      -2147483648) <> 0.0 or
8582        (-2.0) ** intExpr(-1000) <>  9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
8583        (-2.0) ** intExpr( -777) <> -1.2580368690619400992630930670642290049228151004764953780943507245961510227088530391346965409619581274622438598009470989592763178178106372216104950371976994872158846753107043068125962477943865430246765239659515132500679733253773573442968156387862374544517729158500345225740840261937808914008531993591772366677435357882365926301734357710322786821188184892761835546430141790729736468138408856571932694214448299272577968593520269378135768742338158247517956391472854386669993697244754908216006714126797830970508340620028775447281077504158020019531250000000e-234 or
8584        (-2.0) ** intExpr( -500) <>  3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
8585        (-2.0) ** intExpr( -333) <> -5.714936956411374911078917741526704797259549974113993306075629216138163179533690978377240109300860148245915271766870141161102706811419593755630211467050206209827570086880426305042279198514760130828138429137652565259486436843872070312500000000e-101 or
8586        (-2.0) ** intExpr( -150) <>  7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625e-46 or
8587        (-2.0) ** intExpr( -100) <>  7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
8588        (-2.0) ** intExpr(  -50) <>  8.8817841970012523233890533447265625e-16 or
8589        (-2.0) ** intExpr(  -25) <> -2.98023223876953125e-8 or
8590        (-2.0) ** intExpr(  -10) <>  9.765625e-4 or
8591        (-2.0) ** intExpr(   -5) <> -3.125e-2 or
8592        (-2.0) ** intExpr(   -2) <>  0.25 or
8593        (-2.0) ** intExpr(   -1) <> -0.5 or
8594        (-2.0) ** intExpr(    0) <>  1.0 or
8595        (-2.0) ** intExpr(    1) <> -2.0 or
8596        (-2.0) ** intExpr(    2) <>  4.0 or
8597        (-2.0) ** intExpr(    5) <> -3.2e1 or
8598        (-2.0) ** intExpr(   10) <>  1.024e3 or
8599        (-2.0) ** intExpr(   25) <> -3.3554432e+7 or
8600        (-2.0) ** intExpr(   50) <>  1.125899906842624e15 or
8601        (-2.0) ** intExpr(  100) <>  1.267650600228229401496703205376e30 or
8602        (-2.0) ** intExpr(  150) <>  1.427247692705959881058285969449495136382746624e+45 or
8603        (-2.0) ** intExpr(  333) <> -1.74980057982640953949800178169409709228253554471456994914061648512796239935950073857881054161844305920000000000e+100 or
8604        (-2.0) ** intExpr(  500) <>  3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
8605        (-2.0) ** intExpr(  777) <> -7.948892632579629747962774980928013082915256407637486649031946434693380877754249658014097453202669967106497181169311094815598489825867849684194750848210847432726809477226751516417358262433784037505346555871828320004571375891538216222720000000e+233 or
8606        (-2.0) ** intExpr( 1000) <>  1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
8607        (-2.0) ** intExpr(       2147483647) <> -Infinity or
8608        (-2.0) ** intExpr(       2147483648) <>  Infinity or
8609        (-2.0) ** intExpr( 9007199254740992) <>  Infinity or
8610        (-2.0) ** intExpr( 9007199254740993) <> -Infinity or
8611        (-2.0) ** intExpr(     integer.last) <> -Infinity or
8612        floatExpr(-2.0) ** intExpr(    integer.first) <> 0.0 or
8613        floatExpr(-2.0) ** intExpr(-9007199254740993) <> 0.0 or
8614        floatExpr(-2.0) ** intExpr(-9007199254740992) <> 0.0 or
8615        floatExpr(-2.0) ** intExpr(      -2147483649) <> 0.0 or
8616        floatExpr(-2.0) ** intExpr(      -2147483648) <> 0.0 or
8617        floatExpr(-2.0) ** intExpr(-1000) <>  9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
8618        floatExpr(-2.0) ** intExpr( -777) <> -1.2580368690619400992630930670642290049228151004764953780943507245961510227088530391346965409619581274622438598009470989592763178178106372216104950371976994872158846753107043068125962477943865430246765239659515132500679733253773573442968156387862374544517729158500345225740840261937808914008531993591772366677435357882365926301734357710322786821188184892761835546430141790729736468138408856571932694214448299272577968593520269378135768742338158247517956391472854386669993697244754908216006714126797830970508340620028775447281077504158020019531250000000e-234 or
8619        floatExpr(-2.0) ** intExpr( -500) <>  3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
8620        floatExpr(-2.0) ** intExpr( -333) <> -5.714936956411374911078917741526704797259549974113993306075629216138163179533690978377240109300860148245915271766870141161102706811419593755630211467050206209827570086880426305042279198514760130828138429137652565259486436843872070312500000000e-101 or
8621        floatExpr(-2.0) ** intExpr( -150) <>  7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625e-46 or
8622        floatExpr(-2.0) ** intExpr( -100) <>  7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
8623        floatExpr(-2.0) ** intExpr(  -50) <>  8.8817841970012523233890533447265625e-16 or
8624        floatExpr(-2.0) ** intExpr(  -25) <> -2.98023223876953125e-8 or
8625        floatExpr(-2.0) ** intExpr(  -10) <>  9.765625e-4 or
8626        floatExpr(-2.0) ** intExpr(   -5) <> -3.125e-2 or
8627        floatExpr(-2.0) ** intExpr(   -2) <>  0.25 or
8628        floatExpr(-2.0) ** intExpr(   -1) <> -0.5 or
8629        floatExpr(-2.0) ** intExpr(    0) <>  1.0 or
8630        floatExpr(-2.0) ** intExpr(    1) <> -2.0 or
8631        floatExpr(-2.0) ** intExpr(    2) <>  4.0 or
8632        floatExpr(-2.0) ** intExpr(    5) <> -3.2e1 or
8633        floatExpr(-2.0) ** intExpr(   10) <>  1.024e3 or
8634        floatExpr(-2.0) ** intExpr(   25) <> -3.3554432e+7 or
8635        floatExpr(-2.0) ** intExpr(   50) <>  1.125899906842624e15 or
8636        floatExpr(-2.0) ** intExpr(  100) <>  1.267650600228229401496703205376e30 or
8637        floatExpr(-2.0) ** intExpr(  150) <>  1.427247692705959881058285969449495136382746624e+45 or
8638        floatExpr(-2.0) ** intExpr(  333) <> -1.74980057982640953949800178169409709228253554471456994914061648512796239935950073857881054161844305920000000000e+100 or
8639        floatExpr(-2.0) ** intExpr(  500) <>  3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
8640        floatExpr(-2.0) ** intExpr(  777) <> -7.948892632579629747962774980928013082915256407637486649031946434693380877754249658014097453202669967106497181169311094815598489825867849684194750848210847432726809477226751516417358262433784037505346555871828320004571375891538216222720000000e+233 or
8641        floatExpr(-2.0) ** intExpr( 1000) <>  1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
8642        floatExpr(-2.0) ** intExpr(       2147483647) <> -Infinity or
8643        floatExpr(-2.0) ** intExpr(       2147483648) <>  Infinity or
8644        floatExpr(-2.0) ** intExpr( 9007199254740992) <>  Infinity or
8645        floatExpr(-2.0) ** intExpr( 9007199254740993) <> -Infinity or
8646        floatExpr(-2.0) ** intExpr(     integer.last) <> -Infinity then
8647      writeln(" ***** (-2.0) ** B with integer B does not work correct.");
8648      okay := FALSE;
8649    end if;
8650
8651    if  (-1.0) **      integer.first  <>  1.0 or
8652        (-1.0) ** (-9007199254740993) <> -1.0 or
8653        (-1.0) ** (-9007199254740992) <>  1.0 or
8654        (-1.0) **       (-2147483649) <> -1.0 or
8655        (-1.0) **       (-2147483648) <>  1.0 or
8656        (-1.0) **                (-2) <>  1.0 or
8657        (-1.0) **                (-1) <> -1.0 or
8658        (-1.0) **                  0  <>  1.0 or
8659        (-1.0) **                  1  <> -1.0 or
8660        (-1.0) **                  2  <>  1.0 or
8661        (-1.0) **         2147483647  <> -1.0 or
8662        (-1.0) **         2147483648  <>  1.0 or
8663        (-1.0) **   9007199254740992  <>  1.0 or
8664        (-1.0) **   9007199254740993  <> -1.0 or
8665        (-1.0) **       integer.last  <> -1.0 or
8666        floatExpr(-1.0) **      integer.first  <>  1.0 or
8667        floatExpr(-1.0) ** (-9007199254740993) <> -1.0 or
8668        floatExpr(-1.0) ** (-9007199254740992) <>  1.0 or
8669        floatExpr(-1.0) **       (-2147483649) <> -1.0 or
8670        floatExpr(-1.0) **       (-2147483648) <>  1.0 or
8671        floatExpr(-1.0) **                (-2) <>  1.0 or
8672        floatExpr(-1.0) **                (-1) <> -1.0 or
8673        floatExpr(-1.0) **                  0  <>  1.0 or
8674        floatExpr(-1.0) **                  1  <> -1.0 or
8675        floatExpr(-1.0) **                  2  <>  1.0 or
8676        floatExpr(-1.0) **         2147483647  <> -1.0 or
8677        floatExpr(-1.0) **         2147483648  <>  1.0 or
8678        floatExpr(-1.0) **   9007199254740992  <>  1.0 or
8679        floatExpr(-1.0) **   9007199254740993  <> -1.0 or
8680        floatExpr(-1.0) **       integer.last  <> -1.0 or
8681        (-1.0) ** intExpr(    integer.first) <>  1.0 or
8682        (-1.0) ** intExpr(-9007199254740993) <> -1.0 or
8683        (-1.0) ** intExpr(-9007199254740992) <>  1.0 or
8684        (-1.0) ** intExpr(      -2147483649) <> -1.0 or
8685        (-1.0) ** intExpr(      -2147483648) <>  1.0 or
8686        (-1.0) ** intExpr(               -2) <>  1.0 or
8687        (-1.0) ** intExpr(               -1) <> -1.0 or
8688        (-1.0) ** intExpr(                0) <>  1.0 or
8689        (-1.0) ** intExpr(                1) <> -1.0 or
8690        (-1.0) ** intExpr(                2) <>  1.0 or
8691        (-1.0) ** intExpr(       2147483647) <> -1.0 or
8692        (-1.0) ** intExpr(       2147483648) <>  1.0 or
8693        (-1.0) ** intExpr( 9007199254740992) <>  1.0 or
8694        (-1.0) ** intExpr( 9007199254740993) <> -1.0 or
8695        (-1.0) ** intExpr(     integer.last) <> -1.0 or
8696        floatExpr(-1.0) ** intExpr(    integer.first) <>  1.0 or
8697        floatExpr(-1.0) ** intExpr(-9007199254740993) <> -1.0 or
8698        floatExpr(-1.0) ** intExpr(-9007199254740992) <>  1.0 or
8699        floatExpr(-1.0) ** intExpr(      -2147483649) <> -1.0 or
8700        floatExpr(-1.0) ** intExpr(      -2147483648) <>  1.0 or
8701        floatExpr(-1.0) ** intExpr(               -2) <>  1.0 or
8702        floatExpr(-1.0) ** intExpr(               -1) <> -1.0 or
8703        floatExpr(-1.0) ** intExpr(                0) <>  1.0 or
8704        floatExpr(-1.0) ** intExpr(                1) <> -1.0 or
8705        floatExpr(-1.0) ** intExpr(                2) <>  1.0 or
8706        floatExpr(-1.0) ** intExpr(       2147483647) <> -1.0 or
8707        floatExpr(-1.0) ** intExpr(       2147483648) <>  1.0 or
8708        floatExpr(-1.0) ** intExpr( 9007199254740992) <>  1.0 or
8709        floatExpr(-1.0) ** intExpr( 9007199254740993) <> -1.0 or
8710        floatExpr(-1.0) ** intExpr(     integer.last) <> -1.0 then
8711      writeln(" ***** (-1.0) ** B with integer B does not return 1.0 respectively -1.0.");
8712      okay := FALSE;
8713    end if;
8714
8715    if  (-0.0) **      integer.first  <>  Infinity or
8716        (-0.0) ** (-9007199254740993) <> -Infinity or
8717        (-0.0) ** (-9007199254740992) <>  Infinity or
8718        (-0.0) **       (-4294967297) <> -Infinity or
8719        (-0.0) **       (-4294967296) <>  Infinity or
8720        (-0.0) **       (-4294967295) <> -Infinity or
8721        (-0.0) **       (-2147483649) <> -Infinity or
8722        (-0.0) **       (-2147483648) <>  Infinity or
8723        (-0.0) **       (-2147483647) <> -Infinity or
8724        (-0.0) **               (-30) <>  Infinity or
8725        (-0.0) **               (-29) <> -Infinity or
8726        (-0.0) **               (-28) <>  Infinity or
8727        (-0.0) **               (-27) <> -Infinity or
8728        (-0.0) **               (-26) <>  Infinity or
8729        (-0.0) **               (-25) <> -Infinity or
8730        (-0.0) **               (-24) <>  Infinity or
8731        (-0.0) **               (-23) <> -Infinity or
8732        (-0.0) **               (-22) <>  Infinity or
8733        (-0.0) **               (-21) <> -Infinity or
8734        (-0.0) **               (-20) <>  Infinity or
8735        (-0.0) **               (-19) <> -Infinity or
8736        (-0.0) **               (-18) <>  Infinity or
8737        (-0.0) **               (-17) <> -Infinity or
8738        (-0.0) **               (-16) <>  Infinity or
8739        (-0.0) **               (-15) <> -Infinity or
8740        (-0.0) **               (-14) <>  Infinity or
8741        (-0.0) **               (-13) <> -Infinity or
8742        (-0.0) **               (-12) <>  Infinity or
8743        (-0.0) **               (-11) <> -Infinity or
8744        (-0.0) **               (-10) <>  Infinity or
8745        (-0.0) **                (-9) <> -Infinity or
8746        (-0.0) **                (-8) <>  Infinity or
8747        (-0.0) **                (-7) <> -Infinity or
8748        (-0.0) **                (-6) <>  Infinity or
8749        (-0.0) **                (-5) <> -Infinity or
8750        (-0.0) **                (-4) <>  Infinity or
8751        (-0.0) **                (-3) <> -Infinity or
8752        (-0.0) **                (-2) <>  Infinity or
8753        (-0.0) **                (-1) <> -Infinity or
8754        floatExpr(-0.0) **      integer.first  <>  Infinity or
8755        floatExpr(-0.0) ** (-9007199254740993) <> -Infinity or
8756        floatExpr(-0.0) ** (-9007199254740992) <>  Infinity or
8757        floatExpr(-0.0) **       (-4294967297) <> -Infinity or
8758        floatExpr(-0.0) **       (-4294967296) <>  Infinity or
8759        floatExpr(-0.0) **       (-4294967295) <> -Infinity or
8760        floatExpr(-0.0) **       (-2147483649) <> -Infinity or
8761        floatExpr(-0.0) **       (-2147483648) <>  Infinity or
8762        floatExpr(-0.0) **       (-2147483647) <> -Infinity or
8763        floatExpr(-0.0) **               (-30) <>  Infinity or
8764        floatExpr(-0.0) **               (-29) <> -Infinity or
8765        floatExpr(-0.0) **               (-28) <>  Infinity or
8766        floatExpr(-0.0) **               (-27) <> -Infinity or
8767        floatExpr(-0.0) **               (-26) <>  Infinity or
8768        floatExpr(-0.0) **               (-25) <> -Infinity or
8769        floatExpr(-0.0) **               (-24) <>  Infinity or
8770        floatExpr(-0.0) **               (-23) <> -Infinity or
8771        floatExpr(-0.0) **               (-22) <>  Infinity or
8772        floatExpr(-0.0) **               (-21) <> -Infinity or
8773        floatExpr(-0.0) **               (-20) <>  Infinity or
8774        floatExpr(-0.0) **               (-19) <> -Infinity or
8775        floatExpr(-0.0) **               (-18) <>  Infinity or
8776        floatExpr(-0.0) **               (-17) <> -Infinity or
8777        floatExpr(-0.0) **               (-16) <>  Infinity or
8778        floatExpr(-0.0) **               (-15) <> -Infinity or
8779        floatExpr(-0.0) **               (-14) <>  Infinity or
8780        floatExpr(-0.0) **               (-13) <> -Infinity or
8781        floatExpr(-0.0) **               (-12) <>  Infinity or
8782        floatExpr(-0.0) **               (-11) <> -Infinity or
8783        floatExpr(-0.0) **               (-10) <>  Infinity or
8784        floatExpr(-0.0) **                (-9) <> -Infinity or
8785        floatExpr(-0.0) **                (-8) <>  Infinity or
8786        floatExpr(-0.0) **                (-7) <> -Infinity or
8787        floatExpr(-0.0) **                (-6) <>  Infinity or
8788        floatExpr(-0.0) **                (-5) <> -Infinity or
8789        floatExpr(-0.0) **                (-4) <>  Infinity or
8790        floatExpr(-0.0) **                (-3) <> -Infinity or
8791        floatExpr(-0.0) **                (-2) <>  Infinity or
8792        floatExpr(-0.0) **                (-1) <> -Infinity or
8793        (-0.0) ** intExpr(    integer.first) <>  Infinity or
8794        (-0.0) ** intExpr(-9007199254740993) <> -Infinity or
8795        (-0.0) ** intExpr(-9007199254740992) <>  Infinity or
8796        (-0.0) ** intExpr(      -4294967297) <> -Infinity or
8797        (-0.0) ** intExpr(      -4294967296) <>  Infinity or
8798        (-0.0) ** intExpr(      -4294967295) <> -Infinity or
8799        (-0.0) ** intExpr(      -2147483649) <> -Infinity or
8800        (-0.0) ** intExpr(      -2147483648) <>  Infinity or
8801        (-0.0) ** intExpr(      -2147483647) <> -Infinity or
8802        (-0.0) ** intExpr(              -30) <>  Infinity or
8803        (-0.0) ** intExpr(              -29) <> -Infinity or
8804        (-0.0) ** intExpr(              -28) <>  Infinity or
8805        (-0.0) ** intExpr(              -27) <> -Infinity or
8806        (-0.0) ** intExpr(              -26) <>  Infinity or
8807        (-0.0) ** intExpr(              -25) <> -Infinity or
8808        (-0.0) ** intExpr(              -24) <>  Infinity or
8809        (-0.0) ** intExpr(              -23) <> -Infinity or
8810        (-0.0) ** intExpr(              -22) <>  Infinity or
8811        (-0.0) ** intExpr(              -21) <> -Infinity or
8812        (-0.0) ** intExpr(              -20) <>  Infinity or
8813        (-0.0) ** intExpr(              -19) <> -Infinity or
8814        (-0.0) ** intExpr(              -18) <>  Infinity or
8815        (-0.0) ** intExpr(              -17) <> -Infinity or
8816        (-0.0) ** intExpr(              -16) <>  Infinity or
8817        (-0.0) ** intExpr(              -15) <> -Infinity or
8818        (-0.0) ** intExpr(              -14) <>  Infinity or
8819        (-0.0) ** intExpr(              -13) <> -Infinity or
8820        (-0.0) ** intExpr(              -12) <>  Infinity or
8821        (-0.0) ** intExpr(              -11) <> -Infinity or
8822        (-0.0) ** intExpr(              -10) <>  Infinity or
8823        (-0.0) ** intExpr(               -9) <> -Infinity or
8824        (-0.0) ** intExpr(               -8) <>  Infinity or
8825        (-0.0) ** intExpr(               -7) <> -Infinity or
8826        (-0.0) ** intExpr(               -6) <>  Infinity or
8827        (-0.0) ** intExpr(               -5) <> -Infinity or
8828        (-0.0) ** intExpr(               -4) <>  Infinity or
8829        (-0.0) ** intExpr(               -3) <> -Infinity or
8830        (-0.0) ** intExpr(               -2) <>  Infinity or
8831        (-0.0) ** intExpr(               -1) <> -Infinity or
8832        floatExpr(-0.0) ** intExpr(    integer.first) <>  Infinity or
8833        floatExpr(-0.0) ** intExpr(-9007199254740993) <> -Infinity or
8834        floatExpr(-0.0) ** intExpr(-9007199254740992) <>  Infinity or
8835        floatExpr(-0.0) ** intExpr(      -4294967297) <> -Infinity or
8836        floatExpr(-0.0) ** intExpr(      -4294967296) <>  Infinity or
8837        floatExpr(-0.0) ** intExpr(      -4294967295) <> -Infinity or
8838        floatExpr(-0.0) ** intExpr(      -2147483649) <> -Infinity or
8839        floatExpr(-0.0) ** intExpr(      -2147483648) <>  Infinity or
8840        floatExpr(-0.0) ** intExpr(      -2147483647) <> -Infinity or
8841        floatExpr(-0.0) ** intExpr(              -30) <>  Infinity or
8842        floatExpr(-0.0) ** intExpr(              -29) <> -Infinity or
8843        floatExpr(-0.0) ** intExpr(              -28) <>  Infinity or
8844        floatExpr(-0.0) ** intExpr(              -27) <> -Infinity or
8845        floatExpr(-0.0) ** intExpr(              -26) <>  Infinity or
8846        floatExpr(-0.0) ** intExpr(              -25) <> -Infinity or
8847        floatExpr(-0.0) ** intExpr(              -24) <>  Infinity or
8848        floatExpr(-0.0) ** intExpr(              -23) <> -Infinity or
8849        floatExpr(-0.0) ** intExpr(              -22) <>  Infinity or
8850        floatExpr(-0.0) ** intExpr(              -21) <> -Infinity or
8851        floatExpr(-0.0) ** intExpr(              -20) <>  Infinity or
8852        floatExpr(-0.0) ** intExpr(              -19) <> -Infinity or
8853        floatExpr(-0.0) ** intExpr(              -18) <>  Infinity or
8854        floatExpr(-0.0) ** intExpr(              -17) <> -Infinity or
8855        floatExpr(-0.0) ** intExpr(              -16) <>  Infinity or
8856        floatExpr(-0.0) ** intExpr(              -15) <> -Infinity or
8857        floatExpr(-0.0) ** intExpr(              -14) <>  Infinity or
8858        floatExpr(-0.0) ** intExpr(              -13) <> -Infinity or
8859        floatExpr(-0.0) ** intExpr(              -12) <>  Infinity or
8860        floatExpr(-0.0) ** intExpr(              -11) <> -Infinity or
8861        floatExpr(-0.0) ** intExpr(              -10) <>  Infinity or
8862        floatExpr(-0.0) ** intExpr(               -9) <> -Infinity or
8863        floatExpr(-0.0) ** intExpr(               -8) <>  Infinity or
8864        floatExpr(-0.0) ** intExpr(               -7) <> -Infinity or
8865        floatExpr(-0.0) ** intExpr(               -6) <>  Infinity or
8866        floatExpr(-0.0) ** intExpr(               -5) <> -Infinity or
8867        floatExpr(-0.0) ** intExpr(               -4) <>  Infinity or
8868        floatExpr(-0.0) ** intExpr(               -3) <> -Infinity or
8869        floatExpr(-0.0) ** intExpr(               -2) <>  Infinity or
8870        floatExpr(-0.0) ** intExpr(               -1) <> -Infinity then
8871      writeln(" ***** (-0.0) ** B with negative integer B does not return Infinity respectively -Infinity.");
8872      okay := FALSE;
8873    end if;
8874
8875   if                      (-0.0) **                0 <> 1.0 or
8876        not isNegativeZero((-0.0) **                1) or
8877        not isPositiveZero((-0.0) **                2) or
8878        not isNegativeZero((-0.0) **                3) or
8879        not isPositiveZero((-0.0) **                4) or
8880        not isNegativeZero((-0.0) **                5) or
8881        not isPositiveZero((-0.0) **                6) or
8882        not isNegativeZero((-0.0) **                7) or
8883        not isPositiveZero((-0.0) **                8) or
8884        not isNegativeZero((-0.0) **                9) or
8885        not isPositiveZero((-0.0) **               10) or
8886        not isNegativeZero((-0.0) **               11) or
8887        not isPositiveZero((-0.0) **               12) or
8888        not isNegativeZero((-0.0) **               13) or
8889        not isPositiveZero((-0.0) **               14) or
8890        not isNegativeZero((-0.0) **               15) or
8891        not isPositiveZero((-0.0) **               16) or
8892        not isNegativeZero((-0.0) **               17) or
8893        not isPositiveZero((-0.0) **               18) or
8894        not isNegativeZero((-0.0) **               19) or
8895        not isPositiveZero((-0.0) **               20) or
8896        not isNegativeZero((-0.0) **               21) or
8897        not isPositiveZero((-0.0) **               22) or
8898        not isNegativeZero((-0.0) **               23) or
8899        not isPositiveZero((-0.0) **               24) or
8900        not isNegativeZero((-0.0) **               25) or
8901        not isPositiveZero((-0.0) **               26) or
8902        not isNegativeZero((-0.0) **               27) or
8903        not isPositiveZero((-0.0) **               28) or
8904        not isNegativeZero((-0.0) **               29) or
8905        not isPositiveZero((-0.0) **               30) or
8906        not isNegativeZero((-0.0) **       2147483647) or
8907        not isPositiveZero((-0.0) **       2147483648) or
8908        not isNegativeZero((-0.0) **       2147483649) or
8909        not isNegativeZero((-0.0) **       4294967295) or
8910        not isPositiveZero((-0.0) **       4294967296) or
8911        not isNegativeZero((-0.0) **       4294967297) or
8912        not isPositiveZero((-0.0) ** 9007199254740992) or
8913        not isNegativeZero((-0.0) ** 9007199254740993) or
8914        not isNegativeZero((-0.0) **     integer.last) or
8915                           floatExpr(-0.0) **                0 <> 1.0 or
8916        not isNegativeZero(floatExpr(-0.0) **                1) or
8917        not isPositiveZero(floatExpr(-0.0) **                2) or
8918        not isNegativeZero(floatExpr(-0.0) **                3) or
8919        not isPositiveZero(floatExpr(-0.0) **                4) or
8920        not isNegativeZero(floatExpr(-0.0) **                5) or
8921        not isPositiveZero(floatExpr(-0.0) **                6) or
8922        not isNegativeZero(floatExpr(-0.0) **                7) or
8923        not isPositiveZero(floatExpr(-0.0) **                8) or
8924        not isNegativeZero(floatExpr(-0.0) **                9) or
8925        not isPositiveZero(floatExpr(-0.0) **               10) or
8926        not isNegativeZero(floatExpr(-0.0) **               11) or
8927        not isPositiveZero(floatExpr(-0.0) **               12) or
8928        not isNegativeZero(floatExpr(-0.0) **               13) or
8929        not isPositiveZero(floatExpr(-0.0) **               14) or
8930        not isNegativeZero(floatExpr(-0.0) **               15) or
8931        not isPositiveZero(floatExpr(-0.0) **               16) or
8932        not isNegativeZero(floatExpr(-0.0) **               17) or
8933        not isPositiveZero(floatExpr(-0.0) **               18) or
8934        not isNegativeZero(floatExpr(-0.0) **               19) or
8935        not isPositiveZero(floatExpr(-0.0) **               20) or
8936        not isNegativeZero(floatExpr(-0.0) **               21) or
8937        not isPositiveZero(floatExpr(-0.0) **               22) or
8938        not isNegativeZero(floatExpr(-0.0) **               23) or
8939        not isPositiveZero(floatExpr(-0.0) **               24) or
8940        not isNegativeZero(floatExpr(-0.0) **               25) or
8941        not isPositiveZero(floatExpr(-0.0) **               26) or
8942        not isNegativeZero(floatExpr(-0.0) **               27) or
8943        not isPositiveZero(floatExpr(-0.0) **               28) or
8944        not isNegativeZero(floatExpr(-0.0) **               29) or
8945        not isPositiveZero(floatExpr(-0.0) **               30) or
8946        not isNegativeZero(floatExpr(-0.0) **       2147483647) or
8947        not isPositiveZero(floatExpr(-0.0) **       2147483648) or
8948        not isNegativeZero(floatExpr(-0.0) **       2147483649) or
8949        not isNegativeZero(floatExpr(-0.0) **       4294967295) or
8950        not isPositiveZero(floatExpr(-0.0) **       4294967296) or
8951        not isNegativeZero(floatExpr(-0.0) **       4294967297) or
8952        not isPositiveZero(floatExpr(-0.0) ** 9007199254740992) or
8953        not isNegativeZero(floatExpr(-0.0) ** 9007199254740993) or
8954        not isNegativeZero(floatExpr(-0.0) **     integer.last) or
8955                           (-0.0) ** intExpr(               0) <> 1.0 or
8956        not isNegativeZero((-0.0) ** intExpr(               1)) or
8957        not isPositiveZero((-0.0) ** intExpr(               2)) or
8958        not isNegativeZero((-0.0) ** intExpr(               3)) or
8959        not isPositiveZero((-0.0) ** intExpr(               4)) or
8960        not isNegativeZero((-0.0) ** intExpr(               5)) or
8961        not isPositiveZero((-0.0) ** intExpr(               6)) or
8962        not isNegativeZero((-0.0) ** intExpr(               7)) or
8963        not isPositiveZero((-0.0) ** intExpr(               8)) or
8964        not isNegativeZero((-0.0) ** intExpr(               9)) or
8965        not isPositiveZero((-0.0) ** intExpr(              10)) or
8966        not isNegativeZero((-0.0) ** intExpr(              11)) or
8967        not isPositiveZero((-0.0) ** intExpr(              12)) or
8968        not isNegativeZero((-0.0) ** intExpr(              13)) or
8969        not isPositiveZero((-0.0) ** intExpr(              14)) or
8970        not isNegativeZero((-0.0) ** intExpr(              15)) or
8971        not isPositiveZero((-0.0) ** intExpr(              16)) or
8972        not isNegativeZero((-0.0) ** intExpr(              17)) or
8973        not isPositiveZero((-0.0) ** intExpr(              18)) or
8974        not isNegativeZero((-0.0) ** intExpr(              19)) or
8975        not isPositiveZero((-0.0) ** intExpr(              20)) or
8976        not isNegativeZero((-0.0) ** intExpr(              21)) or
8977        not isPositiveZero((-0.0) ** intExpr(              22)) or
8978        not isNegativeZero((-0.0) ** intExpr(              23)) or
8979        not isPositiveZero((-0.0) ** intExpr(              24)) or
8980        not isNegativeZero((-0.0) ** intExpr(              25)) or
8981        not isPositiveZero((-0.0) ** intExpr(              26)) or
8982        not isNegativeZero((-0.0) ** intExpr(              27)) or
8983        not isPositiveZero((-0.0) ** intExpr(              28)) or
8984        not isNegativeZero((-0.0) ** intExpr(              29)) or
8985        not isPositiveZero((-0.0) ** intExpr(              30)) or
8986        not isNegativeZero((-0.0) ** intExpr(      2147483647)) or
8987        not isPositiveZero((-0.0) ** intExpr(      2147483648)) or
8988        not isNegativeZero((-0.0) ** intExpr(      2147483649)) or
8989        not isNegativeZero((-0.0) ** intExpr(      4294967295)) or
8990        not isPositiveZero((-0.0) ** intExpr(      4294967296)) or
8991        not isNegativeZero((-0.0) ** intExpr(      4294967297)) or
8992        not isPositiveZero((-0.0) ** intExpr(9007199254740992)) or
8993        not isNegativeZero((-0.0) ** intExpr(9007199254740993)) or
8994        not isNegativeZero((-0.0) ** intExpr(    integer.last)) or
8995                           floatExpr(-0.0) ** intExpr(               0) <> 1.0 or
8996        not isNegativeZero(floatExpr(-0.0) ** intExpr(               1)) or
8997        not isPositiveZero(floatExpr(-0.0) ** intExpr(               2)) or
8998        not isNegativeZero(floatExpr(-0.0) ** intExpr(               3)) or
8999        not isPositiveZero(floatExpr(-0.0) ** intExpr(               4)) or
9000        not isNegativeZero(floatExpr(-0.0) ** intExpr(               5)) or
9001        not isPositiveZero(floatExpr(-0.0) ** intExpr(               6)) or
9002        not isNegativeZero(floatExpr(-0.0) ** intExpr(               7)) or
9003        not isPositiveZero(floatExpr(-0.0) ** intExpr(               8)) or
9004        not isNegativeZero(floatExpr(-0.0) ** intExpr(               9)) or
9005        not isPositiveZero(floatExpr(-0.0) ** intExpr(              10)) or
9006        not isNegativeZero(floatExpr(-0.0) ** intExpr(              11)) or
9007        not isPositiveZero(floatExpr(-0.0) ** intExpr(              12)) or
9008        not isNegativeZero(floatExpr(-0.0) ** intExpr(              13)) or
9009        not isPositiveZero(floatExpr(-0.0) ** intExpr(              14)) or
9010        not isNegativeZero(floatExpr(-0.0) ** intExpr(              15)) or
9011        not isPositiveZero(floatExpr(-0.0) ** intExpr(              16)) or
9012        not isNegativeZero(floatExpr(-0.0) ** intExpr(              17)) or
9013        not isPositiveZero(floatExpr(-0.0) ** intExpr(              18)) or
9014        not isNegativeZero(floatExpr(-0.0) ** intExpr(              19)) or
9015        not isPositiveZero(floatExpr(-0.0) ** intExpr(              20)) or
9016        not isNegativeZero(floatExpr(-0.0) ** intExpr(              21)) or
9017        not isPositiveZero(floatExpr(-0.0) ** intExpr(              22)) or
9018        not isNegativeZero(floatExpr(-0.0) ** intExpr(              23)) or
9019        not isPositiveZero(floatExpr(-0.0) ** intExpr(              24)) or
9020        not isNegativeZero(floatExpr(-0.0) ** intExpr(              25)) or
9021        not isPositiveZero(floatExpr(-0.0) ** intExpr(              26)) or
9022        not isNegativeZero(floatExpr(-0.0) ** intExpr(              27)) or
9023        not isPositiveZero(floatExpr(-0.0) ** intExpr(              28)) or
9024        not isNegativeZero(floatExpr(-0.0) ** intExpr(              29)) or
9025        not isPositiveZero(floatExpr(-0.0) ** intExpr(              30)) or
9026        not isNegativeZero(floatExpr(-0.0) ** intExpr(      2147483647)) or
9027        not isPositiveZero(floatExpr(-0.0) ** intExpr(      2147483648)) or
9028        not isNegativeZero(floatExpr(-0.0) ** intExpr(      2147483649)) or
9029        not isNegativeZero(floatExpr(-0.0) ** intExpr(      4294967295)) or
9030        not isPositiveZero(floatExpr(-0.0) ** intExpr(      4294967296)) or
9031        not isNegativeZero(floatExpr(-0.0) ** intExpr(      4294967297)) or
9032        not isPositiveZero(floatExpr(-0.0) ** intExpr(9007199254740992)) or
9033        not isNegativeZero(floatExpr(-0.0) ** intExpr(9007199254740993)) or
9034        not isNegativeZero(floatExpr(-0.0) ** intExpr(    integer.last)) then
9035      writeln(" ***** (-0.0) ** B with positive integer B does not return 0.0 respectively -0.0.");
9036      okay := FALSE;
9037    end if;
9038
9039    if  0.0 **      integer.first  <>  Infinity or
9040        0.0 ** (-9007199254740993) <>  Infinity or
9041        0.0 ** (-9007199254740992) <>  Infinity or
9042        0.0 **       (-4294967297) <>  Infinity or
9043        0.0 **       (-4294967296) <>  Infinity or
9044        0.0 **       (-4294967295) <>  Infinity or
9045        0.0 **       (-2147483649) <>  Infinity or
9046        0.0 **       (-2147483648) <>  Infinity or
9047        0.0 **       (-2147483647) <>  Infinity or
9048        0.0 **               (-30) <>  Infinity or
9049        0.0 **               (-29) <>  Infinity or
9050        0.0 **               (-28) <>  Infinity or
9051        0.0 **               (-27) <>  Infinity or
9052        0.0 **               (-26) <>  Infinity or
9053        0.0 **               (-25) <>  Infinity or
9054        0.0 **               (-24) <>  Infinity or
9055        0.0 **               (-23) <>  Infinity or
9056        0.0 **               (-22) <>  Infinity or
9057        0.0 **               (-21) <>  Infinity or
9058        0.0 **               (-20) <>  Infinity or
9059        0.0 **               (-19) <>  Infinity or
9060        0.0 **               (-18) <>  Infinity or
9061        0.0 **               (-17) <>  Infinity or
9062        0.0 **               (-16) <>  Infinity or
9063        0.0 **               (-15) <>  Infinity or
9064        0.0 **               (-14) <>  Infinity or
9065        0.0 **               (-13) <>  Infinity or
9066        0.0 **               (-12) <>  Infinity or
9067        0.0 **               (-11) <>  Infinity or
9068        0.0 **               (-10) <>  Infinity or
9069        0.0 **                (-9) <>  Infinity or
9070        0.0 **                (-8) <>  Infinity or
9071        0.0 **                (-7) <>  Infinity or
9072        0.0 **                (-6) <>  Infinity or
9073        0.0 **                (-5) <>  Infinity or
9074        0.0 **                (-4) <>  Infinity or
9075        0.0 **                (-3) <>  Infinity or
9076        0.0 **                (-2) <>  Infinity or
9077        0.0 **                (-1) <>  Infinity or
9078        floatExpr(0.0) **      integer.first  <>  Infinity or
9079        floatExpr(0.0) ** (-9007199254740993) <>  Infinity or
9080        floatExpr(0.0) ** (-9007199254740992) <>  Infinity or
9081        floatExpr(0.0) **       (-4294967297) <>  Infinity or
9082        floatExpr(0.0) **       (-4294967296) <>  Infinity or
9083        floatExpr(0.0) **       (-4294967295) <>  Infinity or
9084        floatExpr(0.0) **       (-2147483649) <>  Infinity or
9085        floatExpr(0.0) **       (-2147483648) <>  Infinity or
9086        floatExpr(0.0) **       (-2147483647) <>  Infinity or
9087        floatExpr(0.0) **               (-30) <>  Infinity or
9088        floatExpr(0.0) **               (-29) <>  Infinity or
9089        floatExpr(0.0) **               (-28) <>  Infinity or
9090        floatExpr(0.0) **               (-27) <>  Infinity or
9091        floatExpr(0.0) **               (-26) <>  Infinity or
9092        floatExpr(0.0) **               (-25) <>  Infinity or
9093        floatExpr(0.0) **               (-24) <>  Infinity or
9094        floatExpr(0.0) **               (-23) <>  Infinity or
9095        floatExpr(0.0) **               (-22) <>  Infinity or
9096        floatExpr(0.0) **               (-21) <>  Infinity or
9097        floatExpr(0.0) **               (-20) <>  Infinity or
9098        floatExpr(0.0) **               (-19) <>  Infinity or
9099        floatExpr(0.0) **               (-18) <>  Infinity or
9100        floatExpr(0.0) **               (-17) <>  Infinity or
9101        floatExpr(0.0) **               (-16) <>  Infinity or
9102        floatExpr(0.0) **               (-15) <>  Infinity or
9103        floatExpr(0.0) **               (-14) <>  Infinity or
9104        floatExpr(0.0) **               (-13) <>  Infinity or
9105        floatExpr(0.0) **               (-12) <>  Infinity or
9106        floatExpr(0.0) **               (-11) <>  Infinity or
9107        floatExpr(0.0) **               (-10) <>  Infinity or
9108        floatExpr(0.0) **                (-9) <>  Infinity or
9109        floatExpr(0.0) **                (-8) <>  Infinity or
9110        floatExpr(0.0) **                (-7) <>  Infinity or
9111        floatExpr(0.0) **                (-6) <>  Infinity or
9112        floatExpr(0.0) **                (-5) <>  Infinity or
9113        floatExpr(0.0) **                (-4) <>  Infinity or
9114        floatExpr(0.0) **                (-3) <>  Infinity or
9115        floatExpr(0.0) **                (-2) <>  Infinity or
9116        floatExpr(0.0) **                (-1) <>  Infinity or
9117        0.0 ** intExpr(    integer.first) <>  Infinity or
9118        0.0 ** intExpr(-9007199254740993) <>  Infinity or
9119        0.0 ** intExpr(-9007199254740992) <>  Infinity or
9120        0.0 ** intExpr(      -4294967297) <>  Infinity or
9121        0.0 ** intExpr(      -4294967296) <>  Infinity or
9122        0.0 ** intExpr(      -4294967295) <>  Infinity or
9123        0.0 ** intExpr(      -2147483649) <>  Infinity or
9124        0.0 ** intExpr(      -2147483648) <>  Infinity or
9125        0.0 ** intExpr(      -2147483647) <>  Infinity or
9126        0.0 ** intExpr(              -30) <>  Infinity or
9127        0.0 ** intExpr(              -29) <>  Infinity or
9128        0.0 ** intExpr(              -28) <>  Infinity or
9129        0.0 ** intExpr(              -27) <>  Infinity or
9130        0.0 ** intExpr(              -26) <>  Infinity or
9131        0.0 ** intExpr(              -25) <>  Infinity or
9132        0.0 ** intExpr(              -24) <>  Infinity or
9133        0.0 ** intExpr(              -23) <>  Infinity or
9134        0.0 ** intExpr(              -22) <>  Infinity or
9135        0.0 ** intExpr(              -21) <>  Infinity or
9136        0.0 ** intExpr(              -20) <>  Infinity or
9137        0.0 ** intExpr(              -19) <>  Infinity or
9138        0.0 ** intExpr(              -18) <>  Infinity or
9139        0.0 ** intExpr(              -17) <>  Infinity or
9140        0.0 ** intExpr(              -16) <>  Infinity or
9141        0.0 ** intExpr(              -15) <>  Infinity or
9142        0.0 ** intExpr(              -14) <>  Infinity or
9143        0.0 ** intExpr(              -13) <>  Infinity or
9144        0.0 ** intExpr(              -12) <>  Infinity or
9145        0.0 ** intExpr(              -11) <>  Infinity or
9146        0.0 ** intExpr(              -10) <>  Infinity or
9147        0.0 ** intExpr(               -9) <>  Infinity or
9148        0.0 ** intExpr(               -8) <>  Infinity or
9149        0.0 ** intExpr(               -7) <>  Infinity or
9150        0.0 ** intExpr(               -6) <>  Infinity or
9151        0.0 ** intExpr(               -5) <>  Infinity or
9152        0.0 ** intExpr(               -4) <>  Infinity or
9153        0.0 ** intExpr(               -3) <>  Infinity or
9154        0.0 ** intExpr(               -2) <>  Infinity or
9155        0.0 ** intExpr(               -1) <>  Infinity or
9156        floatExpr(0.0) ** intExpr(    integer.first) <>  Infinity or
9157        floatExpr(0.0) ** intExpr(-9007199254740993) <>  Infinity or
9158        floatExpr(0.0) ** intExpr(-9007199254740992) <>  Infinity or
9159        floatExpr(0.0) ** intExpr(      -4294967297) <>  Infinity or
9160        floatExpr(0.0) ** intExpr(      -4294967296) <>  Infinity or
9161        floatExpr(0.0) ** intExpr(      -4294967295) <>  Infinity or
9162        floatExpr(0.0) ** intExpr(      -2147483649) <>  Infinity or
9163        floatExpr(0.0) ** intExpr(      -2147483648) <>  Infinity or
9164        floatExpr(0.0) ** intExpr(      -2147483647) <>  Infinity or
9165        floatExpr(0.0) ** intExpr(              -30) <>  Infinity or
9166        floatExpr(0.0) ** intExpr(              -29) <>  Infinity or
9167        floatExpr(0.0) ** intExpr(              -28) <>  Infinity or
9168        floatExpr(0.0) ** intExpr(              -27) <>  Infinity or
9169        floatExpr(0.0) ** intExpr(              -26) <>  Infinity or
9170        floatExpr(0.0) ** intExpr(              -25) <>  Infinity or
9171        floatExpr(0.0) ** intExpr(              -24) <>  Infinity or
9172        floatExpr(0.0) ** intExpr(              -23) <>  Infinity or
9173        floatExpr(0.0) ** intExpr(              -22) <>  Infinity or
9174        floatExpr(0.0) ** intExpr(              -21) <>  Infinity or
9175        floatExpr(0.0) ** intExpr(              -20) <>  Infinity or
9176        floatExpr(0.0) ** intExpr(              -19) <>  Infinity or
9177        floatExpr(0.0) ** intExpr(              -18) <>  Infinity or
9178        floatExpr(0.0) ** intExpr(              -17) <>  Infinity or
9179        floatExpr(0.0) ** intExpr(              -16) <>  Infinity or
9180        floatExpr(0.0) ** intExpr(              -15) <>  Infinity or
9181        floatExpr(0.0) ** intExpr(              -14) <>  Infinity or
9182        floatExpr(0.0) ** intExpr(              -13) <>  Infinity or
9183        floatExpr(0.0) ** intExpr(              -12) <>  Infinity or
9184        floatExpr(0.0) ** intExpr(              -11) <>  Infinity or
9185        floatExpr(0.0) ** intExpr(              -10) <>  Infinity or
9186        floatExpr(0.0) ** intExpr(               -9) <>  Infinity or
9187        floatExpr(0.0) ** intExpr(               -8) <>  Infinity or
9188        floatExpr(0.0) ** intExpr(               -7) <>  Infinity or
9189        floatExpr(0.0) ** intExpr(               -6) <>  Infinity or
9190        floatExpr(0.0) ** intExpr(               -5) <>  Infinity or
9191        floatExpr(0.0) ** intExpr(               -4) <>  Infinity or
9192        floatExpr(0.0) ** intExpr(               -3) <>  Infinity or
9193        floatExpr(0.0) ** intExpr(               -2) <>  Infinity or
9194        floatExpr(0.0) ** intExpr(               -1) <>  Infinity then
9195      writeln(" ***** 0.0 ** B with negative integer B does not return Infinity.");
9196      okay := FALSE;
9197    end if;
9198
9199   if                      0.0 **                0 <> 1.0 or
9200        not isPositiveZero(0.0 **                1) or
9201        not isPositiveZero(0.0 **                2) or
9202        not isPositiveZero(0.0 **                3) or
9203        not isPositiveZero(0.0 **                4) or
9204        not isPositiveZero(0.0 **                5) or
9205        not isPositiveZero(0.0 **                6) or
9206        not isPositiveZero(0.0 **                7) or
9207        not isPositiveZero(0.0 **                8) or
9208        not isPositiveZero(0.0 **                9) or
9209        not isPositiveZero(0.0 **               10) or
9210        not isPositiveZero(0.0 **               11) or
9211        not isPositiveZero(0.0 **               12) or
9212        not isPositiveZero(0.0 **               13) or
9213        not isPositiveZero(0.0 **               14) or
9214        not isPositiveZero(0.0 **               15) or
9215        not isPositiveZero(0.0 **               16) or
9216        not isPositiveZero(0.0 **               17) or
9217        not isPositiveZero(0.0 **               18) or
9218        not isPositiveZero(0.0 **               19) or
9219        not isPositiveZero(0.0 **               20) or
9220        not isPositiveZero(0.0 **               21) or
9221        not isPositiveZero(0.0 **               22) or
9222        not isPositiveZero(0.0 **               23) or
9223        not isPositiveZero(0.0 **               24) or
9224        not isPositiveZero(0.0 **               25) or
9225        not isPositiveZero(0.0 **               26) or
9226        not isPositiveZero(0.0 **               27) or
9227        not isPositiveZero(0.0 **               28) or
9228        not isPositiveZero(0.0 **               29) or
9229        not isPositiveZero(0.0 **               30) or
9230        not isPositiveZero(0.0 **       2147483647) or
9231        not isPositiveZero(0.0 **       2147483648) or
9232        not isPositiveZero(0.0 **       2147483649) or
9233        not isPositiveZero(0.0 **       4294967295) or
9234        not isPositiveZero(0.0 **       4294967296) or
9235        not isPositiveZero(0.0 **       4294967297) or
9236        not isPositiveZero(0.0 ** 9007199254740992) or
9237        not isPositiveZero(0.0 ** 9007199254740993) or
9238        not isPositiveZero(0.0 **     integer.last) or
9239                           floatExpr(0.0) **                0 <> 1.0 or
9240        not isPositiveZero(floatExpr(0.0) **                1) or
9241        not isPositiveZero(floatExpr(0.0) **                2) or
9242        not isPositiveZero(floatExpr(0.0) **                3) or
9243        not isPositiveZero(floatExpr(0.0) **                4) or
9244        not isPositiveZero(floatExpr(0.0) **                5) or
9245        not isPositiveZero(floatExpr(0.0) **                6) or
9246        not isPositiveZero(floatExpr(0.0) **                7) or
9247        not isPositiveZero(floatExpr(0.0) **                8) or
9248        not isPositiveZero(floatExpr(0.0) **                9) or
9249        not isPositiveZero(floatExpr(0.0) **               10) or
9250        not isPositiveZero(floatExpr(0.0) **               11) or
9251        not isPositiveZero(floatExpr(0.0) **               12) or
9252        not isPositiveZero(floatExpr(0.0) **               13) or
9253        not isPositiveZero(floatExpr(0.0) **               14) or
9254        not isPositiveZero(floatExpr(0.0) **               15) or
9255        not isPositiveZero(floatExpr(0.0) **               16) or
9256        not isPositiveZero(floatExpr(0.0) **               17) or
9257        not isPositiveZero(floatExpr(0.0) **               18) or
9258        not isPositiveZero(floatExpr(0.0) **               19) or
9259        not isPositiveZero(floatExpr(0.0) **               20) or
9260        not isPositiveZero(floatExpr(0.0) **               21) or
9261        not isPositiveZero(floatExpr(0.0) **               22) or
9262        not isPositiveZero(floatExpr(0.0) **               23) or
9263        not isPositiveZero(floatExpr(0.0) **               24) or
9264        not isPositiveZero(floatExpr(0.0) **               25) or
9265        not isPositiveZero(floatExpr(0.0) **               26) or
9266        not isPositiveZero(floatExpr(0.0) **               27) or
9267        not isPositiveZero(floatExpr(0.0) **               28) or
9268        not isPositiveZero(floatExpr(0.0) **               29) or
9269        not isPositiveZero(floatExpr(0.0) **               30) or
9270        not isPositiveZero(floatExpr(0.0) **       2147483647) or
9271        not isPositiveZero(floatExpr(0.0) **       2147483648) or
9272        not isPositiveZero(floatExpr(0.0) **       2147483649) or
9273        not isPositiveZero(floatExpr(0.0) **       4294967295) or
9274        not isPositiveZero(floatExpr(0.0) **       4294967296) or
9275        not isPositiveZero(floatExpr(0.0) **       4294967297) or
9276        not isPositiveZero(floatExpr(0.0) ** 9007199254740992) or
9277        not isPositiveZero(floatExpr(0.0) ** 9007199254740993) or
9278        not isPositiveZero(floatExpr(0.0) **     integer.last) or
9279                           0.0 ** intExpr(               0) <> 1.0 or
9280        not isPositiveZero(0.0 ** intExpr(               1)) or
9281        not isPositiveZero(0.0 ** intExpr(               2)) or
9282        not isPositiveZero(0.0 ** intExpr(               3)) or
9283        not isPositiveZero(0.0 ** intExpr(               4)) or
9284        not isPositiveZero(0.0 ** intExpr(               5)) or
9285        not isPositiveZero(0.0 ** intExpr(               6)) or
9286        not isPositiveZero(0.0 ** intExpr(               7)) or
9287        not isPositiveZero(0.0 ** intExpr(               8)) or
9288        not isPositiveZero(0.0 ** intExpr(               9)) or
9289        not isPositiveZero(0.0 ** intExpr(              10)) or
9290        not isPositiveZero(0.0 ** intExpr(              11)) or
9291        not isPositiveZero(0.0 ** intExpr(              12)) or
9292        not isPositiveZero(0.0 ** intExpr(              13)) or
9293        not isPositiveZero(0.0 ** intExpr(              14)) or
9294        not isPositiveZero(0.0 ** intExpr(              15)) or
9295        not isPositiveZero(0.0 ** intExpr(              16)) or
9296        not isPositiveZero(0.0 ** intExpr(              17)) or
9297        not isPositiveZero(0.0 ** intExpr(              18)) or
9298        not isPositiveZero(0.0 ** intExpr(              19)) or
9299        not isPositiveZero(0.0 ** intExpr(              20)) or
9300        not isPositiveZero(0.0 ** intExpr(              21)) or
9301        not isPositiveZero(0.0 ** intExpr(              22)) or
9302        not isPositiveZero(0.0 ** intExpr(              23)) or
9303        not isPositiveZero(0.0 ** intExpr(              24)) or
9304        not isPositiveZero(0.0 ** intExpr(              25)) or
9305        not isPositiveZero(0.0 ** intExpr(              26)) or
9306        not isPositiveZero(0.0 ** intExpr(              27)) or
9307        not isPositiveZero(0.0 ** intExpr(              28)) or
9308        not isPositiveZero(0.0 ** intExpr(              29)) or
9309        not isPositiveZero(0.0 ** intExpr(              30)) or
9310        not isPositiveZero(0.0 ** intExpr(      2147483647)) or
9311        not isPositiveZero(0.0 ** intExpr(      2147483648)) or
9312        not isPositiveZero(0.0 ** intExpr(      2147483649)) or
9313        not isPositiveZero(0.0 ** intExpr(      4294967295)) or
9314        not isPositiveZero(0.0 ** intExpr(      4294967296)) or
9315        not isPositiveZero(0.0 ** intExpr(      4294967297)) or
9316        not isPositiveZero(0.0 ** intExpr(9007199254740992)) or
9317        not isPositiveZero(0.0 ** intExpr(9007199254740993)) or
9318        not isPositiveZero(0.0 ** intExpr(    integer.last)) or
9319                           floatExpr(0.0) ** intExpr(               0) <> 1.0 or
9320        not isPositiveZero(floatExpr(0.0) ** intExpr(               1)) or
9321        not isPositiveZero(floatExpr(0.0) ** intExpr(               2)) or
9322        not isPositiveZero(floatExpr(0.0) ** intExpr(               3)) or
9323        not isPositiveZero(floatExpr(0.0) ** intExpr(               4)) or
9324        not isPositiveZero(floatExpr(0.0) ** intExpr(               5)) or
9325        not isPositiveZero(floatExpr(0.0) ** intExpr(               6)) or
9326        not isPositiveZero(floatExpr(0.0) ** intExpr(               7)) or
9327        not isPositiveZero(floatExpr(0.0) ** intExpr(               8)) or
9328        not isPositiveZero(floatExpr(0.0) ** intExpr(               9)) or
9329        not isPositiveZero(floatExpr(0.0) ** intExpr(              10)) or
9330        not isPositiveZero(floatExpr(0.0) ** intExpr(              11)) or
9331        not isPositiveZero(floatExpr(0.0) ** intExpr(              12)) or
9332        not isPositiveZero(floatExpr(0.0) ** intExpr(              13)) or
9333        not isPositiveZero(floatExpr(0.0) ** intExpr(              14)) or
9334        not isPositiveZero(floatExpr(0.0) ** intExpr(              15)) or
9335        not isPositiveZero(floatExpr(0.0) ** intExpr(              16)) or
9336        not isPositiveZero(floatExpr(0.0) ** intExpr(              17)) or
9337        not isPositiveZero(floatExpr(0.0) ** intExpr(              18)) or
9338        not isPositiveZero(floatExpr(0.0) ** intExpr(              19)) or
9339        not isPositiveZero(floatExpr(0.0) ** intExpr(              20)) or
9340        not isPositiveZero(floatExpr(0.0) ** intExpr(              21)) or
9341        not isPositiveZero(floatExpr(0.0) ** intExpr(              22)) or
9342        not isPositiveZero(floatExpr(0.0) ** intExpr(              23)) or
9343        not isPositiveZero(floatExpr(0.0) ** intExpr(              24)) or
9344        not isPositiveZero(floatExpr(0.0) ** intExpr(              25)) or
9345        not isPositiveZero(floatExpr(0.0) ** intExpr(              26)) or
9346        not isPositiveZero(floatExpr(0.0) ** intExpr(              27)) or
9347        not isPositiveZero(floatExpr(0.0) ** intExpr(              28)) or
9348        not isPositiveZero(floatExpr(0.0) ** intExpr(              29)) or
9349        not isPositiveZero(floatExpr(0.0) ** intExpr(              30)) or
9350        not isPositiveZero(floatExpr(0.0) ** intExpr(      2147483647)) or
9351        not isPositiveZero(floatExpr(0.0) ** intExpr(      2147483648)) or
9352        not isPositiveZero(floatExpr(0.0) ** intExpr(      2147483649)) or
9353        not isPositiveZero(floatExpr(0.0) ** intExpr(      4294967295)) or
9354        not isPositiveZero(floatExpr(0.0) ** intExpr(      4294967296)) or
9355        not isPositiveZero(floatExpr(0.0) ** intExpr(      4294967297)) or
9356        not isPositiveZero(floatExpr(0.0) ** intExpr(9007199254740992)) or
9357        not isPositiveZero(floatExpr(0.0) ** intExpr(9007199254740993)) or
9358        not isPositiveZero(floatExpr(0.0) ** intExpr(    integer.last)) then
9359      writeln(" ***** 0.0 ** B with integer B does not return 0.0.");
9360      okay := FALSE;
9361    end if;
9362
9363    if  1.0 **      integer.first  <> 1.0 or
9364        1.0 ** (-9007199254740993) <> 1.0 or
9365        1.0 ** (-9007199254740992) <> 1.0 or
9366        1.0 **       (-2147483649) <> 1.0 or
9367        1.0 **       (-2147483648) <> 1.0 or
9368        1.0 **                (-2) <> 1.0 or
9369        1.0 **                (-1) <> 1.0 or
9370        1.0 **                  0  <> 1.0 or
9371        1.0 **                  1  <> 1.0 or
9372        1.0 **                  2  <> 1.0 or
9373        1.0 **         2147483647  <> 1.0 or
9374        1.0 **         2147483648  <> 1.0 or
9375        1.0 **   9007199254740992  <> 1.0 or
9376        1.0 **   9007199254740993  <> 1.0 or
9377        1.0 **       integer.last  <> 1.0 or
9378        floatExpr(1.0) **      integer.first  <> 1.0 or
9379        floatExpr(1.0) ** (-9007199254740993) <> 1.0 or
9380        floatExpr(1.0) ** (-9007199254740992) <> 1.0 or
9381        floatExpr(1.0) **       (-2147483649) <> 1.0 or
9382        floatExpr(1.0) **       (-2147483648) <> 1.0 or
9383        floatExpr(1.0) **                (-2) <> 1.0 or
9384        floatExpr(1.0) **                (-1) <> 1.0 or
9385        floatExpr(1.0) **                  0  <> 1.0 or
9386        floatExpr(1.0) **                  1  <> 1.0 or
9387        floatExpr(1.0) **                  2  <> 1.0 or
9388        floatExpr(1.0) **         2147483647  <> 1.0 or
9389        floatExpr(1.0) **         2147483648  <> 1.0 or
9390        floatExpr(1.0) **   9007199254740992  <> 1.0 or
9391        floatExpr(1.0) **   9007199254740993  <> 1.0 or
9392        floatExpr(1.0) **       integer.last  <> 1.0 or
9393        1.0 ** intExpr(    integer.first) <> 1.0 or
9394        1.0 ** intExpr(-9007199254740993) <> 1.0 or
9395        1.0 ** intExpr(-9007199254740992) <> 1.0 or
9396        1.0 ** intExpr(      -2147483649) <> 1.0 or
9397        1.0 ** intExpr(      -2147483648) <> 1.0 or
9398        1.0 ** intExpr(               -2) <> 1.0 or
9399        1.0 ** intExpr(               -1) <> 1.0 or
9400        1.0 ** intExpr(                0) <> 1.0 or
9401        1.0 ** intExpr(                1) <> 1.0 or
9402        1.0 ** intExpr(                2) <> 1.0 or
9403        1.0 ** intExpr(       2147483647) <> 1.0 or
9404        1.0 ** intExpr(       2147483648) <> 1.0 or
9405        1.0 ** intExpr( 9007199254740992) <> 1.0 or
9406        1.0 ** intExpr( 9007199254740993) <> 1.0 or
9407        1.0 ** intExpr(     integer.last) <> 1.0 or
9408        floatExpr(1.0) ** intExpr(    integer.first) <> 1.0 or
9409        floatExpr(1.0) ** intExpr(-9007199254740993) <> 1.0 or
9410        floatExpr(1.0) ** intExpr(-9007199254740992) <> 1.0 or
9411        floatExpr(1.0) ** intExpr(      -2147483649) <> 1.0 or
9412        floatExpr(1.0) ** intExpr(      -2147483648) <> 1.0 or
9413        floatExpr(1.0) ** intExpr(               -2) <> 1.0 or
9414        floatExpr(1.0) ** intExpr(               -1) <> 1.0 or
9415        floatExpr(1.0) ** intExpr(                0) <> 1.0 or
9416        floatExpr(1.0) ** intExpr(                1) <> 1.0 or
9417        floatExpr(1.0) ** intExpr(                2) <> 1.0 or
9418        floatExpr(1.0) ** intExpr(       2147483647) <> 1.0 or
9419        floatExpr(1.0) ** intExpr(       2147483648) <> 1.0 or
9420        floatExpr(1.0) ** intExpr( 9007199254740992) <> 1.0 or
9421        floatExpr(1.0) ** intExpr( 9007199254740993) <> 1.0 or
9422        floatExpr(1.0) ** intExpr(     integer.last) <> 1.0 then
9423      writeln(" ***** 1.0 ** B with integer B does not return 1.0.");
9424      okay := FALSE;
9425    end if;
9426
9427    if  2.0 **      integer.first  <> 0.0 or
9428        2.0 ** (-9007199254740993) <> 0.0 or
9429        2.0 ** (-9007199254740992) <> 0.0 or
9430        2.0 **       (-2147483649) <> 0.0 or
9431        2.0 **       (-2147483648) <> 0.0 or
9432        2.0 ** (-1000) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
9433        2.0 ** ( -500) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
9434        2.0 ** ( -200) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
9435        2.0 ** ( -100) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
9436        2.0 ** (  -50) <> 8.8817841970012523233890533447265625e-16 or
9437        2.0 ** (  -20) <> 9.5367431640625e-7 or
9438        2.0 ** (  -10) <> 9.765625e-4 or
9439        2.0 ** (   -5) <> 3.125e-2 or
9440        2.0 ** (   -2) <> 0.25 or
9441        2.0 ** (   -1) <> 0.5 or
9442        2.0 **      0  <> 1.0 or
9443        2.0 **      1  <> 2.0 or
9444        2.0 **      2  <> 4.0 or
9445        2.0 **      5  <> 3.2e1 or
9446        2.0 **     10  <> 1.024e3 or
9447        2.0 **     20  <> 1.048576e6 or
9448        2.0 **     50  <> 1.125899906842624e15 or
9449        2.0 **    100  <> 1.267650600228229401496703205376e30 or
9450        2.0 **    200  <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
9451        2.0 **    500  <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
9452        2.0 **   1000  <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
9453        2.0 **       2147483647 <> Infinity or
9454        2.0 **       2147483648 <> Infinity or
9455        2.0 ** 9007199254740992 <> Infinity or
9456        2.0 ** 9007199254740993 <> Infinity or
9457        2.0 **     integer.last <> Infinity or
9458        floatExpr(2.0) **      integer.first  <> 0.0 or
9459        floatExpr(2.0) ** (-9007199254740993) <> 0.0 or
9460        floatExpr(2.0) ** (-9007199254740992) <> 0.0 or
9461        floatExpr(2.0) **       (-2147483649) <> 0.0 or
9462        floatExpr(2.0) **       (-2147483648) <> 0.0 or
9463        floatExpr(2.0) ** (-1000) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
9464        floatExpr(2.0) ** ( -500) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
9465        floatExpr(2.0) ** ( -200) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
9466        floatExpr(2.0) ** ( -100) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
9467        floatExpr(2.0) ** (  -50) <> 8.8817841970012523233890533447265625e-16 or
9468        floatExpr(2.0) ** (  -20) <> 9.5367431640625e-7 or
9469        floatExpr(2.0) ** (  -10) <> 9.765625e-4 or
9470        floatExpr(2.0) ** (   -5) <> 3.125e-2 or
9471        floatExpr(2.0) ** (   -2) <> 0.25 or
9472        floatExpr(2.0) ** (   -1) <> 0.5 or
9473        floatExpr(2.0) **      0  <> 1.0 or
9474        floatExpr(2.0) **      1  <> 2.0 or
9475        floatExpr(2.0) **      2  <> 4.0 or
9476        floatExpr(2.0) **      5  <> 3.2e1 or
9477        floatExpr(2.0) **     10  <> 1.024e3 or
9478        floatExpr(2.0) **     20  <> 1.048576e6 or
9479        floatExpr(2.0) **     50  <> 1.125899906842624e15 or
9480        floatExpr(2.0) **    100  <> 1.267650600228229401496703205376e30 or
9481        floatExpr(2.0) **    200  <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
9482        floatExpr(2.0) **    500  <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
9483        floatExpr(2.0) **   1000  <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
9484        floatExpr(2.0) **       2147483647 <> Infinity or
9485        floatExpr(2.0) **       2147483648 <> Infinity or
9486        floatExpr(2.0) ** 9007199254740992 <> Infinity or
9487        floatExpr(2.0) ** 9007199254740993 <> Infinity or
9488        floatExpr(2.0) **     integer.last <> Infinity or
9489        2.0 ** intExpr(    integer.first) <> 0.0 or
9490        2.0 ** intExpr(-9007199254740993) <> 0.0 or
9491        2.0 ** intExpr(-9007199254740992) <> 0.0 or
9492        2.0 ** intExpr(      -2147483649) <> 0.0 or
9493        2.0 ** intExpr(      -2147483648) <> 0.0 or
9494        2.0 ** intExpr(-1000) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
9495        2.0 ** intExpr( -500) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
9496        2.0 ** intExpr( -200) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
9497        2.0 ** intExpr( -100) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
9498        2.0 ** intExpr(  -50) <> 8.8817841970012523233890533447265625e-16 or
9499        2.0 ** intExpr(  -20) <> 9.5367431640625e-7 or
9500        2.0 ** intExpr(  -10) <> 9.765625e-4 or
9501        2.0 ** intExpr(   -5) <> 3.125e-2 or
9502        2.0 ** intExpr(   -2) <> 0.25 or
9503        2.0 ** intExpr(   -1) <> 0.5 or
9504        2.0 ** intExpr(    0) <> 1.0 or
9505        2.0 ** intExpr(    1) <> 2.0 or
9506        2.0 ** intExpr(    2) <> 4.0 or
9507        2.0 ** intExpr(    5) <> 3.2e1 or
9508        2.0 ** intExpr(   10) <> 1.024e3 or
9509        2.0 ** intExpr(   20) <> 1.048576e6 or
9510        2.0 ** intExpr(   50) <> 1.125899906842624e15 or
9511        2.0 ** intExpr(  100) <> 1.267650600228229401496703205376e30 or
9512        2.0 ** intExpr(  200) <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
9513        2.0 ** intExpr(  500) <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
9514        2.0 ** intExpr( 1000) <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
9515        2.0 ** intExpr(      2147483647) <> Infinity or
9516        2.0 ** intExpr(      2147483648) <> Infinity or
9517        2.0 ** intExpr(9007199254740992) <> Infinity or
9518        2.0 ** intExpr(9007199254740993) <> Infinity or
9519        2.0 ** intExpr(    integer.last) <> Infinity or
9520        floatExpr(2.0) ** intExpr(    integer.first) <> 0.0 or
9521        floatExpr(2.0) ** intExpr(-9007199254740993) <> 0.0 or
9522        floatExpr(2.0) ** intExpr(-9007199254740992) <> 0.0 or
9523        floatExpr(2.0) ** intExpr(      -2147483649) <> 0.0 or
9524        floatExpr(2.0) ** intExpr(      -2147483648) <> 0.0 or
9525        floatExpr(2.0) ** intExpr(-1000) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
9526        floatExpr(2.0) ** intExpr( -500) <> 3.0549363634996046820519793932136176997894027405723266638936139092812916265247204577018572351080152282568751526935904671553178534278042839697351331142009178896307244205337728522220355888195318837008165086679301794879136633899370525163649789227021200352450820912190874482021196014946372110934030798550767828365183620409339937395998276770114898681640625e-151 or
9527        floatExpr(2.0) ** intExpr( -200) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
9528        floatExpr(2.0) ** intExpr( -100) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
9529        floatExpr(2.0) ** intExpr(  -50) <> 8.8817841970012523233890533447265625e-16 or
9530        floatExpr(2.0) ** intExpr(  -20) <> 9.5367431640625e-7 or
9531        floatExpr(2.0) ** intExpr(  -10) <> 9.765625e-4 or
9532        floatExpr(2.0) ** intExpr(   -5) <> 3.125e-2 or
9533        floatExpr(2.0) ** intExpr(   -2) <> 0.25 or
9534        floatExpr(2.0) ** intExpr(   -1) <> 0.5 or
9535        floatExpr(2.0) ** intExpr(    0) <> 1.0 or
9536        floatExpr(2.0) ** intExpr(    1) <> 2.0 or
9537        floatExpr(2.0) ** intExpr(    2) <> 4.0 or
9538        floatExpr(2.0) ** intExpr(    5) <> 3.2e1 or
9539        floatExpr(2.0) ** intExpr(   10) <> 1.024e3 or
9540        floatExpr(2.0) ** intExpr(   20) <> 1.048576e6 or
9541        floatExpr(2.0) ** intExpr(   50) <> 1.125899906842624e15 or
9542        floatExpr(2.0) ** intExpr(  100) <> 1.267650600228229401496703205376e30 or
9543        floatExpr(2.0) ** intExpr(  200) <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
9544        floatExpr(2.0) ** intExpr(  500) <> 3.273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376e150 or
9545        floatExpr(2.0) ** intExpr( 1000) <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
9546        floatExpr(2.0) ** intExpr(      2147483647) <> Infinity or
9547        floatExpr(2.0) ** intExpr(      2147483648) <> Infinity or
9548        floatExpr(2.0) ** intExpr(9007199254740992) <> Infinity or
9549        floatExpr(2.0) ** intExpr(9007199254740993) <> Infinity or
9550        floatExpr(2.0) ** intExpr(    integer.last) <> Infinity then
9551      writeln(" ***** 2.0 ** B with integer B does not work correct.");
9552      okay := FALSE;
9553    end if;
9554
9555    if  4.0 **      integer.first  <> 0.0 or
9556        4.0 ** (-9007199254740993) <> 0.0 or
9557        4.0 ** (-9007199254740992) <> 0.0 or
9558        4.0 **       (-2147483649) <> 0.0 or
9559        4.0 **       (-2147483648) <> 0.0 or
9560        4.0 ** (-500) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
9561        4.0 ** (-200) <> 3.872591914849318272818030633286351847570219192048790865487762941344416348097685964862682234277014596908057542507554467539370836398992350315522318050653350492002436065270530802738432038373174754090809367646454942400181270162578968846816261130394654088604511343874037265777587890625e-121 or
9562        4.0 ** (-100) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
9563        4.0 ** ( -50) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
9564        4.0 ** ( -20) <> 9.094947017729282379150390625e-13 or
9565        4.0 ** ( -10) <> 9.5367431640625e-7 or
9566        4.0 ** (  -5) <> 9.765625e-4 or
9567        4.0 ** (  -2) <> 6.25e-2 or
9568        4.0 ** (  -1) <> 0.25 or
9569        4.0 **     0  <> 1.0 or
9570        4.0 **     1  <> 4.0 or
9571        4.0 **     2  <> 1.6e1 or
9572        4.0 **     5  <> 1.024e3 or
9573        4.0 **    10  <> 1.048576e6 or
9574        4.0 **    20  <> 1.099511627776e12 or
9575        4.0 **    50  <> 1.267650600228229401496703205376e30 or
9576        4.0 **   100  <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
9577        4.0 **   200  <> 2.582249878086908589655919172003011874329705792829223512830659356540647622016841194629645353280137831435903171972747493376e+120 or
9578        4.0 **   500  <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
9579        4.0 **       2147483647 <> Infinity or
9580        4.0 **       2147483648 <> Infinity or
9581        4.0 ** 9007199254740992 <> Infinity or
9582        4.0 ** 9007199254740993 <> Infinity or
9583        4.0 **     integer.last <> Infinity or
9584        floatExpr(4.0) **      integer.first  <> 0.0 or
9585        floatExpr(4.0) ** (-9007199254740993) <> 0.0 or
9586        floatExpr(4.0) ** (-9007199254740992) <> 0.0 or
9587        floatExpr(4.0) **       (-2147483649) <> 0.0 or
9588        floatExpr(4.0) **       (-2147483648) <> 0.0 or
9589        floatExpr(4.0) ** (-500) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
9590        floatExpr(4.0) ** (-200) <> 3.872591914849318272818030633286351847570219192048790865487762941344416348097685964862682234277014596908057542507554467539370836398992350315522318050653350492002436065270530802738432038373174754090809367646454942400181270162578968846816261130394654088604511343874037265777587890625e-121 or
9591        floatExpr(4.0) ** (-100) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
9592        floatExpr(4.0) ** ( -50) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
9593        floatExpr(4.0) ** ( -20) <> 9.094947017729282379150390625e-13 or
9594        floatExpr(4.0) ** ( -10) <> 9.5367431640625e-7 or
9595        floatExpr(4.0) ** (  -5) <> 9.765625e-4 or
9596        floatExpr(4.0) ** (  -2) <> 6.25e-2 or
9597        floatExpr(4.0) ** (  -1) <> 0.25 or
9598        floatExpr(4.0) **     0  <> 1.0 or
9599        floatExpr(4.0) **     1  <> 4.0 or
9600        floatExpr(4.0) **     2  <> 1.6e1 or
9601        floatExpr(4.0) **     5  <> 1.024e3 or
9602        floatExpr(4.0) **    10  <> 1.048576e6 or
9603        floatExpr(4.0) **    20  <> 1.099511627776e12 or
9604        floatExpr(4.0) **    50  <> 1.267650600228229401496703205376e30 or
9605        floatExpr(4.0) **   100  <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
9606        floatExpr(4.0) **   200  <> 2.582249878086908589655919172003011874329705792829223512830659356540647622016841194629645353280137831435903171972747493376e+120 or
9607        floatExpr(4.0) **   500  <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
9608        floatExpr(4.0) **       2147483647 <> Infinity or
9609        floatExpr(4.0) **       2147483648 <> Infinity or
9610        floatExpr(4.0) ** 9007199254740992 <> Infinity or
9611        floatExpr(4.0) ** 9007199254740993 <> Infinity or
9612        floatExpr(4.0) **     integer.last <> Infinity or
9613        4.0 ** intExpr(    integer.first) <> 0.0 or
9614        4.0 ** intExpr(-9007199254740993) <> 0.0 or
9615        4.0 ** intExpr(-9007199254740992) <> 0.0 or
9616        4.0 ** intExpr(      -2147483649) <> 0.0 or
9617        4.0 ** intExpr(      -2147483648) <> 0.0 or
9618        4.0 ** intExpr(-500) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
9619        4.0 ** intExpr(-200) <> 3.872591914849318272818030633286351847570219192048790865487762941344416348097685964862682234277014596908057542507554467539370836398992350315522318050653350492002436065270530802738432038373174754090809367646454942400181270162578968846816261130394654088604511343874037265777587890625e-121 or
9620        4.0 ** intExpr(-100) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
9621        4.0 ** intExpr( -50) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
9622        4.0 ** intExpr( -20) <> 9.094947017729282379150390625e-13 or
9623        4.0 ** intExpr( -10) <> 9.5367431640625e-7 or
9624        4.0 ** intExpr(  -5) <> 9.765625e-4 or
9625        4.0 ** intExpr(  -2) <> 6.25e-2 or
9626        4.0 ** intExpr(  -1) <> 0.25 or
9627        4.0 ** intExpr(   0) <> 1.0 or
9628        4.0 ** intExpr(   1) <> 4.0 or
9629        4.0 ** intExpr(   2) <> 1.6e1 or
9630        4.0 ** intExpr(   5) <> 1.024e3 or
9631        4.0 ** intExpr(  10) <> 1.048576e6 or
9632        4.0 ** intExpr(  20) <> 1.099511627776e12 or
9633        4.0 ** intExpr(  50) <> 1.267650600228229401496703205376e30 or
9634        4.0 ** intExpr( 100) <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
9635        4.0 ** intExpr( 200) <> 2.582249878086908589655919172003011874329705792829223512830659356540647622016841194629645353280137831435903171972747493376e+120 or
9636        4.0 ** intExpr( 500) <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
9637        4.0 ** intExpr(      2147483647) <> Infinity or
9638        4.0 ** intExpr(      2147483648) <> Infinity or
9639        4.0 ** intExpr(9007199254740992) <> Infinity or
9640        4.0 ** intExpr(9007199254740993) <> Infinity or
9641        4.0 ** intExpr(    integer.last) <> Infinity or
9642        floatExpr(4.0) ** intExpr(    integer.first) <> 0.0 or
9643        floatExpr(4.0) ** intExpr(-9007199254740993) <> 0.0 or
9644        floatExpr(4.0) ** intExpr(-9007199254740992) <> 0.0 or
9645        floatExpr(4.0) ** intExpr(      -2147483649) <> 0.0 or
9646        floatExpr(4.0) ** intExpr(      -2147483648) <> 0.0 or
9647        floatExpr(4.0) ** intExpr(-500) <> 9.33263618503218878990089544723817169617091446371708024621714339795966910975775634454440327097881102359594989930324242624215487521354032394841520817203930756234410666138325150273995075985901831511100490796265113118240512514795933790805178271125415103810698378854426481119469814228660959222017662910442798456169448887147466528006328368452647429261829862165202793195289493607117850663668741065439805530718136320599844826041954101213229629869502194514609904214608668361244792952034826864617657926916047420065936389041737895822118365078045556628444273925387517127854796781556346403714877681766899855392069265439424008711973674701749862626690747296762535803929376233833981046927874558605253696441650390625e-302 or
9648        floatExpr(4.0) ** intExpr(-200) <> 3.872591914849318272818030633286351847570219192048790865487762941344416348097685964862682234277014596908057542507554467539370836398992350315522318050653350492002436065270530802738432038373174754090809367646454942400181270162578968846816261130394654088604511343874037265777587890625e-121 or
9649        floatExpr(4.0) ** intExpr(-100) <> 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625e-61 or
9650        floatExpr(4.0) ** intExpr( -50) <> 7.888609052210118054117285652827862296732064351090230047702789306640625e-31 or
9651        floatExpr(4.0) ** intExpr( -20) <> 9.094947017729282379150390625e-13 or
9652        floatExpr(4.0) ** intExpr( -10) <> 9.5367431640625e-7 or
9653        floatExpr(4.0) ** intExpr(  -5) <> 9.765625e-4 or
9654        floatExpr(4.0) ** intExpr(  -2) <> 6.25e-2 or
9655        floatExpr(4.0) ** intExpr(  -1) <> 0.25 or
9656        floatExpr(4.0) ** intExpr(   0) <> 1.0 or
9657        floatExpr(4.0) ** intExpr(   1) <> 4.0 or
9658        floatExpr(4.0) ** intExpr(   2) <> 1.6e1 or
9659        floatExpr(4.0) ** intExpr(   5) <> 1.024e3 or
9660        floatExpr(4.0) ** intExpr(  10) <> 1.048576e6 or
9661        floatExpr(4.0) ** intExpr(  20) <> 1.099511627776e12 or
9662        floatExpr(4.0) ** intExpr(  50) <> 1.267650600228229401496703205376e30 or
9663        floatExpr(4.0) ** intExpr( 100) <> 1.606938044258990275541962092341162602522202993782792835301376e60 or
9664        floatExpr(4.0) ** intExpr( 200) <> 2.582249878086908589655919172003011874329705792829223512830659356540647622016841194629645353280137831435903171972747493376e+120 or
9665        floatExpr(4.0) ** intExpr( 500) <> 1.0715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376e301 or
9666        floatExpr(4.0) ** intExpr(      2147483647) <> Infinity or
9667        floatExpr(4.0) ** intExpr(      2147483648) <> Infinity or
9668        floatExpr(4.0) ** intExpr(9007199254740992) <> Infinity or
9669        floatExpr(4.0) ** intExpr(9007199254740993) <> Infinity or
9670        floatExpr(4.0) ** intExpr(    integer.last) <> Infinity then
9671      writeln(" ***** 4.0 ** B with integer B does not work correct.");
9672      okay := FALSE;
9673    end if;
9674
9675    if  not isNaN(NaN **      integer.first ) or
9676        not isNaN(NaN ** (-9007199254740993)) or
9677        not isNaN(NaN ** (-9007199254740992)) or
9678        not isNaN(NaN **       (-4294967297)) or
9679        not isNaN(NaN **       (-4294967296)) or
9680        not isNaN(NaN **       (-4294967295)) or
9681        not isNaN(NaN **       (-2147483649)) or
9682        not isNaN(NaN **       (-2147483648)) or
9683        not isNaN(NaN **       (-2147483647)) or
9684        not isNaN(NaN **               (-30)) or
9685        not isNaN(NaN **               (-29)) or
9686        not isNaN(NaN **               (-28)) or
9687        not isNaN(NaN **               (-27)) or
9688        not isNaN(NaN **               (-26)) or
9689        not isNaN(NaN **               (-25)) or
9690        not isNaN(NaN **               (-24)) or
9691        not isNaN(NaN **               (-23)) or
9692        not isNaN(NaN **               (-22)) or
9693        not isNaN(NaN **               (-21)) or
9694        not isNaN(NaN **               (-20)) or
9695        not isNaN(NaN **               (-19)) or
9696        not isNaN(NaN **               (-18)) or
9697        not isNaN(NaN **               (-17)) or
9698        not isNaN(NaN **               (-16)) or
9699        not isNaN(NaN **               (-15)) or
9700        not isNaN(NaN **               (-14)) or
9701        not isNaN(NaN **               (-13)) or
9702        not isNaN(NaN **               (-12)) or
9703        not isNaN(NaN **               (-11)) or
9704        not isNaN(NaN **               (-10)) or
9705        not isNaN(NaN **                (-9)) or
9706        not isNaN(NaN **                (-8)) or
9707        not isNaN(NaN **                (-7)) or
9708        not isNaN(NaN **                (-6)) or
9709        not isNaN(NaN **                (-5)) or
9710        not isNaN(NaN **                (-4)) or
9711        not isNaN(NaN **                (-3)) or
9712        not isNaN(NaN **                (-2)) or
9713        not isNaN(NaN **                (-1)) or
9714        not isNaN(NaN **                  1 ) or
9715        not isNaN(NaN **                  2 ) or
9716        not isNaN(NaN **                  3 ) or
9717        not isNaN(NaN **                  4 ) or
9718        not isNaN(NaN **                  5 ) or
9719        not isNaN(NaN **                  6 ) or
9720        not isNaN(NaN **                  7 ) or
9721        not isNaN(NaN **                  8 ) or
9722        not isNaN(NaN **                  9 ) or
9723        not isNaN(NaN **                 10 ) or
9724        not isNaN(NaN **                 11 ) or
9725        not isNaN(NaN **                 12 ) or
9726        not isNaN(NaN **                 13 ) or
9727        not isNaN(NaN **                 14 ) or
9728        not isNaN(NaN **                 15 ) or
9729        not isNaN(NaN **                 16 ) or
9730        not isNaN(NaN **                 17 ) or
9731        not isNaN(NaN **                 18 ) or
9732        not isNaN(NaN **                 19 ) or
9733        not isNaN(NaN **                 20 ) or
9734        not isNaN(NaN **                 21 ) or
9735        not isNaN(NaN **                 22 ) or
9736        not isNaN(NaN **                 23 ) or
9737        not isNaN(NaN **                 24 ) or
9738        not isNaN(NaN **                 25 ) or
9739        not isNaN(NaN **                 26 ) or
9740        not isNaN(NaN **                 27 ) or
9741        not isNaN(NaN **                 28 ) or
9742        not isNaN(NaN **                 29 ) or
9743        not isNaN(NaN **                 30 ) or
9744        not isNaN(NaN **         2147483647 ) or
9745        not isNaN(NaN **         2147483648 ) or
9746        not isNaN(NaN **         2147483649 ) or
9747        not isNaN(NaN **         4294967295 ) or
9748        not isNaN(NaN **         4294967296 ) or
9749        not isNaN(NaN **         4294967297 ) or
9750        not isNaN(NaN **   9007199254740992 ) or
9751        not isNaN(NaN **   9007199254740993 ) or
9752        not isNaN(NaN **       integer.last ) or
9753        not isNaN(floatExpr(NaN) **      integer.first ) or
9754        not isNaN(floatExpr(NaN) ** (-9007199254740993)) or
9755        not isNaN(floatExpr(NaN) ** (-9007199254740992)) or
9756        not isNaN(floatExpr(NaN) **       (-4294967297)) or
9757        not isNaN(floatExpr(NaN) **       (-4294967296)) or
9758        not isNaN(floatExpr(NaN) **       (-4294967295)) or
9759        not isNaN(floatExpr(NaN) **       (-2147483649)) or
9760        not isNaN(floatExpr(NaN) **       (-2147483648)) or
9761        not isNaN(floatExpr(NaN) **       (-2147483647)) or
9762        not isNaN(floatExpr(NaN) **               (-30)) or
9763        not isNaN(floatExpr(NaN) **               (-29)) or
9764        not isNaN(floatExpr(NaN) **               (-28)) or
9765        not isNaN(floatExpr(NaN) **               (-27)) or
9766        not isNaN(floatExpr(NaN) **               (-26)) or
9767        not isNaN(floatExpr(NaN) **               (-25)) or
9768        not isNaN(floatExpr(NaN) **               (-24)) or
9769        not isNaN(floatExpr(NaN) **               (-23)) or
9770        not isNaN(floatExpr(NaN) **               (-22)) or
9771        not isNaN(floatExpr(NaN) **               (-21)) or
9772        not isNaN(floatExpr(NaN) **               (-20)) or
9773        not isNaN(floatExpr(NaN) **               (-19)) or
9774        not isNaN(floatExpr(NaN) **               (-18)) or
9775        not isNaN(floatExpr(NaN) **               (-17)) or
9776        not isNaN(floatExpr(NaN) **               (-16)) or
9777        not isNaN(floatExpr(NaN) **               (-15)) or
9778        not isNaN(floatExpr(NaN) **               (-14)) or
9779        not isNaN(floatExpr(NaN) **               (-13)) or
9780        not isNaN(floatExpr(NaN) **               (-12)) or
9781        not isNaN(floatExpr(NaN) **               (-11)) or
9782        not isNaN(floatExpr(NaN) **               (-10)) or
9783        not isNaN(floatExpr(NaN) **                (-9)) or
9784        not isNaN(floatExpr(NaN) **                (-8)) or
9785        not isNaN(floatExpr(NaN) **                (-7)) or
9786        not isNaN(floatExpr(NaN) **                (-6)) or
9787        not isNaN(floatExpr(NaN) **                (-5)) or
9788        not isNaN(floatExpr(NaN) **                (-4)) or
9789        not isNaN(floatExpr(NaN) **                (-3)) or
9790        not isNaN(floatExpr(NaN) **                (-2)) or
9791        not isNaN(floatExpr(NaN) **                (-1)) or
9792        not isNaN(floatExpr(NaN) **                  1 ) or
9793        not isNaN(floatExpr(NaN) **                  2 ) or
9794        not isNaN(floatExpr(NaN) **                  3 ) or
9795        not isNaN(floatExpr(NaN) **                  4 ) or
9796        not isNaN(floatExpr(NaN) **                  5 ) or
9797        not isNaN(floatExpr(NaN) **                  6 ) or
9798        not isNaN(floatExpr(NaN) **                  7 ) or
9799        not isNaN(floatExpr(NaN) **                  8 ) or
9800        not isNaN(floatExpr(NaN) **                  9 ) or
9801        not isNaN(floatExpr(NaN) **                 10 ) or
9802        not isNaN(floatExpr(NaN) **                 11 ) or
9803        not isNaN(floatExpr(NaN) **                 12 ) or
9804        not isNaN(floatExpr(NaN) **                 13 ) or
9805        not isNaN(floatExpr(NaN) **                 14 ) or
9806        not isNaN(floatExpr(NaN) **                 15 ) or
9807        not isNaN(floatExpr(NaN) **                 16 ) or
9808        not isNaN(floatExpr(NaN) **                 17 ) or
9809        not isNaN(floatExpr(NaN) **                 18 ) or
9810        not isNaN(floatExpr(NaN) **                 19 ) or
9811        not isNaN(floatExpr(NaN) **                 20 ) or
9812        not isNaN(floatExpr(NaN) **                 21 ) or
9813        not isNaN(floatExpr(NaN) **                 22 ) or
9814        not isNaN(floatExpr(NaN) **                 23 ) or
9815        not isNaN(floatExpr(NaN) **                 24 ) or
9816        not isNaN(floatExpr(NaN) **                 25 ) or
9817        not isNaN(floatExpr(NaN) **                 26 ) or
9818        not isNaN(floatExpr(NaN) **                 27 ) or
9819        not isNaN(floatExpr(NaN) **                 28 ) or
9820        not isNaN(floatExpr(NaN) **                 29 ) or
9821        not isNaN(floatExpr(NaN) **                 30 ) or
9822        not isNaN(floatExpr(NaN) **         2147483647 ) or
9823        not isNaN(floatExpr(NaN) **         2147483648 ) or
9824        not isNaN(floatExpr(NaN) **         2147483649 ) or
9825        not isNaN(floatExpr(NaN) **         4294967295 ) or
9826        not isNaN(floatExpr(NaN) **         4294967296 ) or
9827        not isNaN(floatExpr(NaN) **         4294967297 ) or
9828        not isNaN(floatExpr(NaN) **   9007199254740992 ) or
9829        not isNaN(floatExpr(NaN) **   9007199254740993 ) or
9830        not isNaN(floatExpr(NaN) **       integer.last ) or
9831        not isNaN(NaN ** intExpr(    integer.first)) or
9832        not isNaN(NaN ** intExpr(-9007199254740993)) or
9833        not isNaN(NaN ** intExpr(-9007199254740992)) or
9834        not isNaN(NaN ** intExpr(      -4294967297)) or
9835        not isNaN(NaN ** intExpr(      -4294967296)) or
9836        not isNaN(NaN ** intExpr(      -4294967295)) or
9837        not isNaN(NaN ** intExpr(      -2147483649)) or
9838        not isNaN(NaN ** intExpr(      -2147483648)) or
9839        not isNaN(NaN ** intExpr(      -2147483647)) or
9840        not isNaN(NaN ** intExpr(              -30)) or
9841        not isNaN(NaN ** intExpr(              -29)) or
9842        not isNaN(NaN ** intExpr(              -28)) or
9843        not isNaN(NaN ** intExpr(              -27)) or
9844        not isNaN(NaN ** intExpr(              -26)) or
9845        not isNaN(NaN ** intExpr(              -25)) or
9846        not isNaN(NaN ** intExpr(              -24)) or
9847        not isNaN(NaN ** intExpr(              -23)) or
9848        not isNaN(NaN ** intExpr(              -22)) or
9849        not isNaN(NaN ** intExpr(              -21)) or
9850        not isNaN(NaN ** intExpr(              -20)) or
9851        not isNaN(NaN ** intExpr(              -19)) or
9852        not isNaN(NaN ** intExpr(              -18)) or
9853        not isNaN(NaN ** intExpr(              -17)) or
9854        not isNaN(NaN ** intExpr(              -16)) or
9855        not isNaN(NaN ** intExpr(              -15)) or
9856        not isNaN(NaN ** intExpr(              -14)) or
9857        not isNaN(NaN ** intExpr(              -13)) or
9858        not isNaN(NaN ** intExpr(              -12)) or
9859        not isNaN(NaN ** intExpr(              -11)) or
9860        not isNaN(NaN ** intExpr(              -10)) or
9861        not isNaN(NaN ** intExpr(               -9)) or
9862        not isNaN(NaN ** intExpr(               -8)) or
9863        not isNaN(NaN ** intExpr(               -7)) or
9864        not isNaN(NaN ** intExpr(               -6)) or
9865        not isNaN(NaN ** intExpr(               -5)) or
9866        not isNaN(NaN ** intExpr(               -4)) or
9867        not isNaN(NaN ** intExpr(               -3)) or
9868        not isNaN(NaN ** intExpr(               -2)) or
9869        not isNaN(NaN ** intExpr(               -1)) or
9870        not isNaN(NaN ** intExpr(                1)) or
9871        not isNaN(NaN ** intExpr(                2)) or
9872        not isNaN(NaN ** intExpr(                3)) or
9873        not isNaN(NaN ** intExpr(                4)) or
9874        not isNaN(NaN ** intExpr(                5)) or
9875        not isNaN(NaN ** intExpr(                6)) or
9876        not isNaN(NaN ** intExpr(                7)) or
9877        not isNaN(NaN ** intExpr(                8)) or
9878        not isNaN(NaN ** intExpr(                9)) or
9879        not isNaN(NaN ** intExpr(               10)) or
9880        not isNaN(NaN ** intExpr(               11)) or
9881        not isNaN(NaN ** intExpr(               12)) or
9882        not isNaN(NaN ** intExpr(               13)) or
9883        not isNaN(NaN ** intExpr(               14)) or
9884        not isNaN(NaN ** intExpr(               15)) or
9885        not isNaN(NaN ** intExpr(               16)) or
9886        not isNaN(NaN ** intExpr(               17)) or
9887        not isNaN(NaN ** intExpr(               18)) or
9888        not isNaN(NaN ** intExpr(               19)) or
9889        not isNaN(NaN ** intExpr(               20)) or
9890        not isNaN(NaN ** intExpr(               21)) or
9891        not isNaN(NaN ** intExpr(               22)) or
9892        not isNaN(NaN ** intExpr(               23)) or
9893        not isNaN(NaN ** intExpr(               24)) or
9894        not isNaN(NaN ** intExpr(               25)) or
9895        not isNaN(NaN ** intExpr(               26)) or
9896        not isNaN(NaN ** intExpr(               27)) or
9897        not isNaN(NaN ** intExpr(               28)) or
9898        not isNaN(NaN ** intExpr(               29)) or
9899        not isNaN(NaN ** intExpr(               30)) or
9900        not isNaN(NaN ** intExpr(       2147483647)) or
9901        not isNaN(NaN ** intExpr(       2147483648)) or
9902        not isNaN(NaN ** intExpr(       2147483649)) or
9903        not isNaN(NaN ** intExpr(       4294967295)) or
9904        not isNaN(NaN ** intExpr(       4294967296)) or
9905        not isNaN(NaN ** intExpr(       4294967297)) or
9906        not isNaN(NaN ** intExpr( 9007199254740992)) or
9907        not isNaN(NaN ** intExpr( 9007199254740993)) or
9908        not isNaN(NaN ** intExpr(     integer.last)) or
9909        not isNaN(floatExpr(NaN) ** intExpr(    integer.first)) or
9910        not isNaN(floatExpr(NaN) ** intExpr(-9007199254740993)) or
9911        not isNaN(floatExpr(NaN) ** intExpr(-9007199254740992)) or
9912        not isNaN(floatExpr(NaN) ** intExpr(      -4294967297)) or
9913        not isNaN(floatExpr(NaN) ** intExpr(      -4294967296)) or
9914        not isNaN(floatExpr(NaN) ** intExpr(      -4294967295)) or
9915        not isNaN(floatExpr(NaN) ** intExpr(      -2147483649)) or
9916        not isNaN(floatExpr(NaN) ** intExpr(      -2147483648)) or
9917        not isNaN(floatExpr(NaN) ** intExpr(      -2147483647)) or
9918        not isNaN(floatExpr(NaN) ** intExpr(              -30)) or
9919        not isNaN(floatExpr(NaN) ** intExpr(              -29)) or
9920        not isNaN(floatExpr(NaN) ** intExpr(              -28)) or
9921        not isNaN(floatExpr(NaN) ** intExpr(              -27)) or
9922        not isNaN(floatExpr(NaN) ** intExpr(              -26)) or
9923        not isNaN(floatExpr(NaN) ** intExpr(              -25)) or
9924        not isNaN(floatExpr(NaN) ** intExpr(              -24)) or
9925        not isNaN(floatExpr(NaN) ** intExpr(              -23)) or
9926        not isNaN(floatExpr(NaN) ** intExpr(              -22)) or
9927        not isNaN(floatExpr(NaN) ** intExpr(              -21)) or
9928        not isNaN(floatExpr(NaN) ** intExpr(              -20)) or
9929        not isNaN(floatExpr(NaN) ** intExpr(              -19)) or
9930        not isNaN(floatExpr(NaN) ** intExpr(              -18)) or
9931        not isNaN(floatExpr(NaN) ** intExpr(              -17)) or
9932        not isNaN(floatExpr(NaN) ** intExpr(              -16)) or
9933        not isNaN(floatExpr(NaN) ** intExpr(              -15)) or
9934        not isNaN(floatExpr(NaN) ** intExpr(              -14)) or
9935        not isNaN(floatExpr(NaN) ** intExpr(              -13)) or
9936        not isNaN(floatExpr(NaN) ** intExpr(              -12)) or
9937        not isNaN(floatExpr(NaN) ** intExpr(              -11)) or
9938        not isNaN(floatExpr(NaN) ** intExpr(              -10)) or
9939        not isNaN(floatExpr(NaN) ** intExpr(               -9)) or
9940        not isNaN(floatExpr(NaN) ** intExpr(               -8)) or
9941        not isNaN(floatExpr(NaN) ** intExpr(               -7)) or
9942        not isNaN(floatExpr(NaN) ** intExpr(               -6)) or
9943        not isNaN(floatExpr(NaN) ** intExpr(               -5)) or
9944        not isNaN(floatExpr(NaN) ** intExpr(               -4)) or
9945        not isNaN(floatExpr(NaN) ** intExpr(               -3)) or
9946        not isNaN(floatExpr(NaN) ** intExpr(               -2)) or
9947        not isNaN(floatExpr(NaN) ** intExpr(               -1)) or
9948        not isNaN(floatExpr(NaN) ** intExpr(                1)) or
9949        not isNaN(floatExpr(NaN) ** intExpr(                2)) or
9950        not isNaN(floatExpr(NaN) ** intExpr(                3)) or
9951        not isNaN(floatExpr(NaN) ** intExpr(                4)) or
9952        not isNaN(floatExpr(NaN) ** intExpr(                5)) or
9953        not isNaN(floatExpr(NaN) ** intExpr(                6)) or
9954        not isNaN(floatExpr(NaN) ** intExpr(                7)) or
9955        not isNaN(floatExpr(NaN) ** intExpr(                8)) or
9956        not isNaN(floatExpr(NaN) ** intExpr(                9)) or
9957        not isNaN(floatExpr(NaN) ** intExpr(               10)) or
9958        not isNaN(floatExpr(NaN) ** intExpr(               11)) or
9959        not isNaN(floatExpr(NaN) ** intExpr(               12)) or
9960        not isNaN(floatExpr(NaN) ** intExpr(               13)) or
9961        not isNaN(floatExpr(NaN) ** intExpr(               14)) or
9962        not isNaN(floatExpr(NaN) ** intExpr(               15)) or
9963        not isNaN(floatExpr(NaN) ** intExpr(               16)) or
9964        not isNaN(floatExpr(NaN) ** intExpr(               17)) or
9965        not isNaN(floatExpr(NaN) ** intExpr(               18)) or
9966        not isNaN(floatExpr(NaN) ** intExpr(               19)) or
9967        not isNaN(floatExpr(NaN) ** intExpr(               20)) or
9968        not isNaN(floatExpr(NaN) ** intExpr(               21)) or
9969        not isNaN(floatExpr(NaN) ** intExpr(               22)) or
9970        not isNaN(floatExpr(NaN) ** intExpr(               23)) or
9971        not isNaN(floatExpr(NaN) ** intExpr(               24)) or
9972        not isNaN(floatExpr(NaN) ** intExpr(               25)) or
9973        not isNaN(floatExpr(NaN) ** intExpr(               26)) or
9974        not isNaN(floatExpr(NaN) ** intExpr(               27)) or
9975        not isNaN(floatExpr(NaN) ** intExpr(               28)) or
9976        not isNaN(floatExpr(NaN) ** intExpr(               29)) or
9977        not isNaN(floatExpr(NaN) ** intExpr(               30)) or
9978        not isNaN(floatExpr(NaN) ** intExpr(       2147483647)) or
9979        not isNaN(floatExpr(NaN) ** intExpr(       2147483648)) or
9980        not isNaN(floatExpr(NaN) ** intExpr(       2147483649)) or
9981        not isNaN(floatExpr(NaN) ** intExpr(       4294967295)) or
9982        not isNaN(floatExpr(NaN) ** intExpr(       4294967296)) or
9983        not isNaN(floatExpr(NaN) ** intExpr(       4294967297)) or
9984        not isNaN(floatExpr(NaN) ** intExpr( 9007199254740992)) or
9985        not isNaN(floatExpr(NaN) ** intExpr( 9007199254740993)) or
9986        not isNaN(floatExpr(NaN) ** intExpr(     integer.last)) then
9987      writeln(" ***** NaN ** B for integer B with B <> 0 not return NaN.");
9988      okay := FALSE;
9989    end if;
9990
9991    if            NaN  **         0  <> 1.0 or
9992        floatExpr(NaN) **         0  <> 1.0 or
9993                  NaN  ** intExpr(0) <> 1.0 or
9994        floatExpr(NaN) ** intExpr(0) <> 1.0 then
9995      writeln(" ***** NaN ** 0 does not return 1.0.");
9996      okay := FALSE;
9997    end if;
9998
9999    if okay then
10000      writeln("A ** B with integer B works correct for selected values.");
10001    else
10002      writeln(" ***** A ** B with integer B does not work correct.");
10003    end if;
10004  end func;
10005
10006
10007const proc: check_lshift is func
10008  local
10009    var boolean: okay is TRUE;
10010  begin
10011    if   0.0                       <<    10 <>  0.0                       or
10012         1.234567890123456789e+123 <<     0 <>  1.234567890123456789e+123 or
10013         Infinity                  <<    10 <>  Infinity                  or
10014        -Infinity                  <<    10 <> -Infinity                  or
10015         2.221519243884861782e+284 <<  2995 <>  Infinity                  or
10016        -3.720881118398479847e+31  <<  1616 <> -Infinity                  or
10017         2.234972294855364778e-99  <<  -823 <>  0.0                       or
10018        -9.429403627481889418e-285 << -1093 <>  0.0                       or
10019         1.751736975399683374e+305 <<    10 <>  1.793778662809275800e+308 or
10020         8.883450423771940829e-84  <<   483 <>  2.218551878577123500e+062 or
10021         5.777494836628130267e-309 <<  1071 <>  1.461722466756107500e+014 or
10022         2.546209045782271622e-309 <<  2047 <>  4.114292659568633900e+307 or
10023         6.603211093907156832e-309 <<  2047 <>  1.066980065059728900e+308 or
10024         1.434557330032167675e-310 <<  3059 <>  Infinity                  or
10025         8.227352381334111684e+183 << -1633 <>  2.154156141625903463e-308 or
10026         6.009742445482107613e+258 << -1882 <>  1.739418242816761100e-308 or
10027         3.094739191357472818e+93  << -1334 <>  8.252961878480251800e-309 or
10028        -2.044542424689816058e-112 <<  -651 <> -2.188108984804417542e-308 or
10029         1.447562767514547211e-123 <<  -662 <>  7.410984687618698163e-323 or
10030        -9.122215700985469031e-309 <<   -46 <> -1.284570679187241015e-322 or
10031         1.590229628495541250e-308 <<    -3 <>  1.987787035619425328e-309 or
10032         1.106649978021704684e-308 <<    -2 <>  2.766624945054261710e-309 or
10033        -5.495829332017545722e-309 <<   -43 <> -6.225227137599706457e-322 or
10034      #  2.320160450702645352e-216 <<  -358 <>  4.940656458412465442e-324 or
10035      #  1.973266378845922681e-11  << -1025 <>  5.488575259650407859e-320 or
10036      #  1.632095641757055474e+130 << -1492 <>  1.191241678687829543e-319 or
10037      #  1.943808595063234196e-308 <<   -15 <>  5.932033065990738998e-313 or
10038      #  2.265259963921934671e-244 <<  -213 <>  1.720794355934250507e-308 or
10039      #  6.338957915016740072e-263 <<  -172 <>  1.058908938501717366e-314 or
10040      #  1.943808595063234196e-308 <<   -15 <>  5.932033065990738998e-313 or
10041      # -2.224466941245358019e-308 <<   -27 <> -1.657357042812545087e-316 or
10042         4.940656458412465442e-324 <<  2046 <>  3.991680619069439623e+292 or
10043        -4.940656458412465442e-324 <<  2046 <> -3.991680619069439623e+292 or
10044         4.940656458412465442e-324 <<  2097 <>  8.988465674311579539e+307 or
10045        -4.940656458412465442e-324 <<  2097 <> -8.988465674311579539e+307 or
10046         4.940656458412465442e-324 <<  2098 <>  Infinity                  or
10047        -4.940656458412465442e-324 <<  2098 <> -Infinity                  or
10048         8.988465674311579539e+307 << -2046 <>  1.112536929253600692e-308 or
10049        -8.988465674311579539e+307 << -2046 <> -1.112536929253600692e-308 or
10050         8.988465674311579539e+307 << -2097 <>  4.940656458412465442e-324 or
10051        -8.988465674311579539e+307 << -2097 <> -4.940656458412465442e-324 or
10052         8.988465674311579539e+307 << -2098 <>  0.0                       or
10053        -8.988465674311579539e+307 << -2098 <>  0.0                       or
10054      #  1.797693134862315708e+308 << -2097 <>  4.940656458412465442e-324 or
10055      # -1.797693134862315708e+308 << -2097 <> -4.940656458412465442e-324 or
10056      #  1.797693134862315708e+308 << -2098 <>  4.940656458412465442e-324 or
10057      # -1.797693134862315708e+308 << -2098 <> -4.940656458412465442e-324 or
10058         1.797693134862315708e+308 << -2099 <>  0.0                       or
10059        -1.797693134862315708e+308 << -2099 <>  0.0                       or
10060         2.225073858507200889e-308 <<  1023 <>  1.999999999999999556e+0   or
10061        -2.225073858507200889e-308 <<  1023 <> -1.999999999999999556e+0   or
10062         4.940656458412465442e-324 << integer.first <>  0.0      or
10063         2.225073858507200889e-308 << integer.first <>  0.0      or
10064         2.225073858507201383e-308 << integer.first <>  0.0      or
10065         1.797693134862315708e+308 << integer.first <>  0.0      or
10066        -4.940656458412465442e-324 << integer.first <> -0.0      or
10067        -2.225073858507200889e-308 << integer.first <> -0.0      or
10068        -2.225073858507201383e-308 << integer.first <> -0.0      or
10069        -1.797693134862315708e+308 << integer.first <> -0.0      or
10070         4.940656458412465442e-324 << integer.last  <>  Infinity or
10071         2.225073858507200889e-308 << integer.last  <>  Infinity or
10072         2.225073858507201383e-308 << integer.last  <>  Infinity or
10073         1.797693134862315708e+308 << integer.last  <>  Infinity or
10074        -4.940656458412465442e-324 << integer.last  <> -Infinity or
10075        -2.225073858507200889e-308 << integer.last  <> -Infinity or
10076        -2.225073858507201383e-308 << integer.last  <> -Infinity or
10077        -1.797693134862315708e+308 << integer.last  <> -Infinity then
10078      writeln(" ***** Shift left of float values does not work correct. (1)");
10079      okay := FALSE;
10080    end if;
10081
10082    if  floatExpr( 0.0                      ) <<    10 <>  0.0                       or
10083        floatExpr( 1.234567890123456789e+123) <<     0 <>  1.234567890123456789e+123 or
10084        floatExpr( Infinity                 ) <<    10 <>  Infinity                  or
10085        floatExpr(-Infinity                 ) <<    10 <> -Infinity                  or
10086        floatExpr( 2.221519243884861782e+284) <<  2995 <>  Infinity                  or
10087        floatExpr(-3.720881118398479847e+31 ) <<  1616 <> -Infinity                  or
10088        floatExpr( 2.234972294855364778e-99 ) <<  -823 <>  0.0                       or
10089        floatExpr(-9.429403627481889418e-285) << -1093 <>  0.0                       or
10090        floatExpr( 1.751736975399683374e+305) <<    10 <>  1.793778662809275800e+308 or
10091        floatExpr( 8.883450423771940829e-84 ) <<   483 <>  2.218551878577123500e+062 or
10092        floatExpr( 5.777494836628130267e-309) <<  1071 <>  1.461722466756107500e+014 or
10093        floatExpr( 2.546209045782271622e-309) <<  2047 <>  4.114292659568633900e+307 or
10094        floatExpr( 6.603211093907156832e-309) <<  2047 <>  1.066980065059728900e+308 or
10095        floatExpr( 1.434557330032167675e-310) <<  3059 <>  Infinity                  or
10096        floatExpr( 8.227352381334111684e+183) << -1633 <>  2.154156141625903463e-308 or
10097        floatExpr( 6.009742445482107613e+258) << -1882 <>  1.739418242816761100e-308 or
10098        floatExpr( 3.094739191357472818e+93 ) << -1334 <>  8.252961878480251800e-309 or
10099        floatExpr(-2.044542424689816058e-112) <<  -651 <> -2.188108984804417542e-308 or
10100        floatExpr( 1.447562767514547211e-123) <<  -662 <>  7.410984687618698163e-323 or
10101        floatExpr(-9.122215700985469031e-309) <<   -46 <> -1.284570679187241015e-322 or
10102        floatExpr( 1.590229628495541250e-308) <<    -3 <>  1.987787035619425328e-309 or
10103        floatExpr( 1.106649978021704684e-308) <<    -2 <>  2.766624945054261710e-309 or
10104        floatExpr(-5.495829332017545722e-309) <<   -43 <> -6.225227137599706457e-322 or
10105      # floatExpr( 2.320160450702645352e-216) <<  -358 <>  4.940656458412465442e-324 or
10106      # floatExpr( 1.973266378845922681e-11 ) << -1025 <>  5.488575259650407859e-320 or
10107      # floatExpr( 1.632095641757055474e+130) << -1492 <>  1.191241678687829543e-319 or
10108      # floatExpr( 1.943808595063234196e-308) <<   -15 <>  5.932033065990738998e-313 or
10109      # floatExpr( 2.265259963921934671e-244) <<  -213 <>  1.720794355934250507e-308 or
10110      # floatExpr( 6.338957915016740072e-263) <<  -172 <>  1.058908938501717366e-314 or
10111      # floatExpr( 1.943808595063234196e-308) <<   -15 <>  5.932033065990738998e-313 or
10112      # floatExpr(-2.224466941245358019e-308) <<   -27 <> -1.657357042812545087e-316 or
10113        floatExpr( 4.940656458412465442e-324) <<  2046 <>  3.991680619069439623e+292 or
10114        floatExpr(-4.940656458412465442e-324) <<  2046 <> -3.991680619069439623e+292 or
10115        floatExpr( 4.940656458412465442e-324) <<  2097 <>  8.988465674311579539e+307 or
10116        floatExpr(-4.940656458412465442e-324) <<  2097 <> -8.988465674311579539e+307 or
10117        floatExpr( 4.940656458412465442e-324) <<  2098 <>  Infinity                  or
10118        floatExpr(-4.940656458412465442e-324) <<  2098 <> -Infinity                  or
10119        floatExpr( 8.988465674311579539e+307) << -2046 <>  1.112536929253600692e-308 or
10120        floatExpr(-8.988465674311579539e+307) << -2046 <> -1.112536929253600692e-308 or
10121        floatExpr( 8.988465674311579539e+307) << -2097 <>  4.940656458412465442e-324 or
10122        floatExpr(-8.988465674311579539e+307) << -2097 <> -4.940656458412465442e-324 or
10123        floatExpr( 8.988465674311579539e+307) << -2098 <>  0.0                       or
10124        floatExpr(-8.988465674311579539e+307) << -2098 <>  0.0                       or
10125      # floatExpr( 1.797693134862315708e+308) << -2097 <>  4.940656458412465442e-324 or
10126      # floatExpr(-1.797693134862315708e+308) << -2097 <> -4.940656458412465442e-324 or
10127      # floatExpr( 1.797693134862315708e+308) << -2098 <>  4.940656458412465442e-324 or
10128      # floatExpr(-1.797693134862315708e+308) << -2098 <> -4.940656458412465442e-324 or
10129        floatExpr( 1.797693134862315708e+308) << -2099 <>  0.0                       or
10130        floatExpr(-1.797693134862315708e+308) << -2099 <>  0.0                       or
10131        floatExpr( 2.225073858507200889e-308) <<  1023 <>  1.999999999999999556e+0   or
10132        floatExpr(-2.225073858507200889e-308) <<  1023 <> -1.999999999999999556e+0   or
10133        floatExpr( 4.940656458412465442e-324) << integer.first <>  0.0      or
10134        floatExpr( 2.225073858507200889e-308) << integer.first <>  0.0      or
10135        floatExpr( 2.225073858507201383e-308) << integer.first <>  0.0      or
10136        floatExpr( 1.797693134862315708e+308) << integer.first <>  0.0      or
10137        floatExpr(-4.940656458412465442e-324) << integer.first <> -0.0      or
10138        floatExpr(-2.225073858507200889e-308) << integer.first <> -0.0      or
10139        floatExpr(-2.225073858507201383e-308) << integer.first <> -0.0      or
10140        floatExpr(-1.797693134862315708e+308) << integer.first <> -0.0      or
10141        floatExpr( 4.940656458412465442e-324) << integer.last  <>  Infinity or
10142        floatExpr( 2.225073858507200889e-308) << integer.last  <>  Infinity or
10143        floatExpr( 2.225073858507201383e-308) << integer.last  <>  Infinity or
10144        floatExpr( 1.797693134862315708e+308) << integer.last  <>  Infinity or
10145        floatExpr(-4.940656458412465442e-324) << integer.last  <> -Infinity or
10146        floatExpr(-2.225073858507200889e-308) << integer.last  <> -Infinity or
10147        floatExpr(-2.225073858507201383e-308) << integer.last  <> -Infinity or
10148        floatExpr(-1.797693134862315708e+308) << integer.last  <> -Infinity then
10149      writeln(" ***** Shift left of float values does not work correct. (2)");
10150      okay := FALSE;
10151    end if;
10152
10153    if   0.0                       << intExpr(   10) <>  0.0                       or
10154         1.234567890123456789e+123 << intExpr(    0) <>  1.234567890123456789e+123 or
10155         Infinity                  << intExpr(   10) <>  Infinity                  or
10156        -Infinity                  << intExpr(   10) <> -Infinity                  or
10157         2.221519243884861782e+284 << intExpr( 2995) <>  Infinity                  or
10158        -3.720881118398479847e+31  << intExpr( 1616) <> -Infinity                  or
10159         2.234972294855364778e-99  << intExpr( -823) <>  0.0                       or
10160        -9.429403627481889418e-285 << intExpr(-1093) <>  0.0                       or
10161         1.751736975399683374e+305 << intExpr(   10) <>  1.793778662809275800e+308 or
10162         8.883450423771940829e-84  << intExpr(  483) <>  2.218551878577123500e+062 or
10163         5.777494836628130267e-309 << intExpr( 1071) <>  1.461722466756107500e+014 or
10164         2.546209045782271622e-309 << intExpr( 2047) <>  4.114292659568633900e+307 or
10165         6.603211093907156832e-309 << intExpr( 2047) <>  1.066980065059728900e+308 or
10166         1.434557330032167675e-310 << intExpr( 3059) <>  Infinity                  or
10167         8.227352381334111684e+183 << intExpr(-1633) <>  2.154156141625903463e-308 or
10168         6.009742445482107613e+258 << intExpr(-1882) <>  1.739418242816761100e-308 or
10169         3.094739191357472818e+93  << intExpr(-1334) <>  8.252961878480251800e-309 or
10170        -2.044542424689816058e-112 << intExpr( -651) <> -2.188108984804417542e-308 or
10171         1.447562767514547211e-123 << intExpr( -662) <>  7.410984687618698163e-323 or
10172        -9.122215700985469031e-309 << intExpr(  -46) <> -1.284570679187241015e-322 or
10173         1.590229628495541250e-308 << intExpr(   -3) <>  1.987787035619425328e-309 or
10174         1.106649978021704684e-308 << intExpr(   -2) <>  2.766624945054261710e-309 or
10175        -5.495829332017545722e-309 << intExpr(  -43) <> -6.225227137599706457e-322 or
10176      #  2.320160450702645352e-216 << intExpr( -358) <>  4.940656458412465442e-324 or
10177      #  1.973266378845922681e-11  << intExpr(-1025) <>  5.488575259650407859e-320 or
10178      #  1.632095641757055474e+130 << intExpr(-1492) <>  1.191241678687829543e-319 or
10179      #  1.943808595063234196e-308 << intExpr(  -15) <>  5.932033065990738998e-313 or
10180      #  2.265259963921934671e-244 << intExpr( -213) <>  1.720794355934250507e-308 or
10181      #  6.338957915016740072e-263 << intExpr( -172) <>  1.058908938501717366e-314 or
10182      #  1.943808595063234196e-308 << intExpr(  -15) <>  5.932033065990738998e-313 or
10183      # -2.224466941245358019e-308 << intExpr(  -27) <> -1.657357042812545087e-316 or
10184         4.940656458412465442e-324 << intExpr( 2046) <>  3.991680619069439623e+292 or
10185        -4.940656458412465442e-324 << intExpr( 2046) <> -3.991680619069439623e+292 or
10186         4.940656458412465442e-324 << intExpr( 2097) <>  8.988465674311579539e+307 or
10187        -4.940656458412465442e-324 << intExpr( 2097) <> -8.988465674311579539e+307 or
10188         4.940656458412465442e-324 << intExpr( 2098) <>  Infinity                  or
10189        -4.940656458412465442e-324 << intExpr( 2098) <> -Infinity                  or
10190         8.988465674311579539e+307 << intExpr(-2046) <>  1.112536929253600692e-308 or
10191        -8.988465674311579539e+307 << intExpr(-2046) <> -1.112536929253600692e-308 or
10192         8.988465674311579539e+307 << intExpr(-2097) <>  4.940656458412465442e-324 or
10193        -8.988465674311579539e+307 << intExpr(-2097) <> -4.940656458412465442e-324 or
10194         8.988465674311579539e+307 << intExpr(-2098) <>  0.0                       or
10195        -8.988465674311579539e+307 << intExpr(-2098) <>  0.0                       or
10196      #  1.797693134862315708e+308 << intExpr(-2097) <>  4.940656458412465442e-324 or
10197      # -1.797693134862315708e+308 << intExpr(-2097) <> -4.940656458412465442e-324 or
10198      #  1.797693134862315708e+308 << intExpr(-2098) <>  4.940656458412465442e-324 or
10199      # -1.797693134862315708e+308 << intExpr(-2098) <> -4.940656458412465442e-324 or
10200         1.797693134862315708e+308 << intExpr(-2099) <>  0.0                       or
10201        -1.797693134862315708e+308 << intExpr(-2099) <>  0.0                       or
10202         2.225073858507200889e-308 << intExpr( 1023) <>  1.999999999999999556e+0   or
10203        -2.225073858507200889e-308 << intExpr( 1023) <> -1.999999999999999556e+0   or
10204         4.940656458412465442e-324 << intExpr(integer.first) <>  0.0      or
10205         2.225073858507200889e-308 << intExpr(integer.first) <>  0.0      or
10206         2.225073858507201383e-308 << intExpr(integer.first) <>  0.0      or
10207         1.797693134862315708e+308 << intExpr(integer.first) <>  0.0      or
10208        -4.940656458412465442e-324 << intExpr(integer.first) <> -0.0      or
10209        -2.225073858507200889e-308 << intExpr(integer.first) <> -0.0      or
10210        -2.225073858507201383e-308 << intExpr(integer.first) <> -0.0      or
10211        -1.797693134862315708e+308 << intExpr(integer.first) <> -0.0      or
10212         4.940656458412465442e-324 << intExpr(integer.last ) <>  Infinity or
10213         2.225073858507200889e-308 << intExpr(integer.last ) <>  Infinity or
10214         2.225073858507201383e-308 << intExpr(integer.last ) <>  Infinity or
10215         1.797693134862315708e+308 << intExpr(integer.last ) <>  Infinity or
10216        -4.940656458412465442e-324 << intExpr(integer.last ) <> -Infinity or
10217        -2.225073858507200889e-308 << intExpr(integer.last ) <> -Infinity or
10218        -2.225073858507201383e-308 << intExpr(integer.last ) <> -Infinity or
10219        -1.797693134862315708e+308 << intExpr(integer.last ) <> -Infinity then
10220      writeln(" ***** Shift left of float values does not work correct. (3)");
10221      okay := FALSE;
10222    end if;
10223
10224    if  floatExpr( 0.0                      ) << intExpr(   10) <>  0.0                       or
10225        floatExpr( 1.234567890123456789e+123) << intExpr(    0) <>  1.234567890123456789e+123 or
10226        floatExpr( Infinity                 ) << intExpr(   10) <>  Infinity                  or
10227        floatExpr(-Infinity                 ) << intExpr(   10) <> -Infinity                  or
10228        floatExpr( 2.221519243884861782e+284) << intExpr( 2995) <>  Infinity                  or
10229        floatExpr(-3.720881118398479847e+31 ) << intExpr( 1616) <> -Infinity                  or
10230        floatExpr( 2.234972294855364778e-99 ) << intExpr( -823) <>  0.0                       or
10231        floatExpr(-9.429403627481889418e-285) << intExpr(-1093) <>  0.0                       or
10232        floatExpr( 1.751736975399683374e+305) << intExpr(   10) <>  1.793778662809275800e+308 or
10233        floatExpr( 8.883450423771940829e-84 ) << intExpr(  483) <>  2.218551878577123500e+062 or
10234        floatExpr( 5.777494836628130267e-309) << intExpr( 1071) <>  1.461722466756107500e+014 or
10235        floatExpr( 2.546209045782271622e-309) << intExpr( 2047) <>  4.114292659568633900e+307 or
10236        floatExpr( 6.603211093907156832e-309) << intExpr( 2047) <>  1.066980065059728900e+308 or
10237        floatExpr( 1.434557330032167675e-310) << intExpr( 3059) <>  Infinity                  or
10238        floatExpr( 8.227352381334111684e+183) << intExpr(-1633) <>  2.154156141625903463e-308 or
10239        floatExpr( 6.009742445482107613e+258) << intExpr(-1882) <>  1.739418242816761100e-308 or
10240        floatExpr( 3.094739191357472818e+93 ) << intExpr(-1334) <>  8.252961878480251800e-309 or
10241        floatExpr(-2.044542424689816058e-112) << intExpr( -651) <> -2.188108984804417542e-308 or
10242        floatExpr( 1.447562767514547211e-123) << intExpr( -662) <>  7.410984687618698163e-323 or
10243        floatExpr(-9.122215700985469031e-309) << intExpr(  -46) <> -1.284570679187241015e-322 or
10244        floatExpr( 1.590229628495541250e-308) << intExpr(   -3) <>  1.987787035619425328e-309 or
10245        floatExpr( 1.106649978021704684e-308) << intExpr(   -2) <>  2.766624945054261710e-309 or
10246        floatExpr(-5.495829332017545722e-309) << intExpr(  -43) <> -6.225227137599706457e-322 or
10247      # floatExpr( 2.320160450702645352e-216) << intExpr( -358) <>  4.940656458412465442e-324 or
10248      # floatExpr( 1.973266378845922681e-11 ) << intExpr(-1025) <>  5.488575259650407859e-320 or
10249      # floatExpr( 1.632095641757055474e+130) << intExpr(-1492) <>  1.191241678687829543e-319 or
10250      # floatExpr( 1.943808595063234196e-308) << intExpr(  -15) <>  5.932033065990738998e-313 or
10251      # floatExpr( 2.265259963921934671e-244) << intExpr( -213) <>  1.720794355934250507e-308 or
10252      # floatExpr( 6.338957915016740072e-263) << intExpr( -172) <>  1.058908938501717366e-314 or
10253      # floatExpr( 1.943808595063234196e-308) << intExpr(  -15) <>  5.932033065990738998e-313 or
10254      # floatExpr(-2.224466941245358019e-308) << intExpr(  -27) <> -1.657357042812545087e-316 or
10255        floatExpr( 4.940656458412465442e-324) << intExpr( 2046) <>  3.991680619069439623e+292 or
10256        floatExpr(-4.940656458412465442e-324) << intExpr( 2046) <> -3.991680619069439623e+292 or
10257        floatExpr( 4.940656458412465442e-324) << intExpr( 2097) <>  8.988465674311579539e+307 or
10258        floatExpr(-4.940656458412465442e-324) << intExpr( 2097) <> -8.988465674311579539e+307 or
10259        floatExpr( 4.940656458412465442e-324) << intExpr( 2098) <>  Infinity                  or
10260        floatExpr(-4.940656458412465442e-324) << intExpr( 2098) <> -Infinity                  or
10261        floatExpr( 8.988465674311579539e+307) << intExpr(-2046) <>  1.112536929253600692e-308 or
10262        floatExpr(-8.988465674311579539e+307) << intExpr(-2046) <> -1.112536929253600692e-308 or
10263        floatExpr( 8.988465674311579539e+307) << intExpr(-2097) <>  4.940656458412465442e-324 or
10264        floatExpr(-8.988465674311579539e+307) << intExpr(-2097) <> -4.940656458412465442e-324 or
10265        floatExpr( 8.988465674311579539e+307) << intExpr(-2098) <>  0.0                       or
10266        floatExpr(-8.988465674311579539e+307) << intExpr(-2098) <>  0.0                       or
10267      # floatExpr( 1.797693134862315708e+308) << intExpr(-2097) <>  4.940656458412465442e-324 or
10268      # floatExpr(-1.797693134862315708e+308) << intExpr(-2097) <> -4.940656458412465442e-324 or
10269      # floatExpr( 1.797693134862315708e+308) << intExpr(-2098) <>  4.940656458412465442e-324 or
10270      # floatExpr(-1.797693134862315708e+308) << intExpr(-2098) <> -4.940656458412465442e-324 or
10271        floatExpr( 1.797693134862315708e+308) << intExpr(-2099) <>  0.0                       or
10272        floatExpr(-1.797693134862315708e+308) << intExpr(-2099) <>  0.0                       or
10273        floatExpr( 2.225073858507200889e-308) << intExpr( 1023) <>  1.999999999999999556e+0   or
10274        floatExpr(-2.225073858507200889e-308) << intExpr( 1023) <> -1.999999999999999556e+0   or
10275        floatExpr( 4.940656458412465442e-324) << intExpr(integer.first) <>  0.0      or
10276        floatExpr( 2.225073858507200889e-308) << intExpr(integer.first) <>  0.0      or
10277        floatExpr( 2.225073858507201383e-308) << intExpr(integer.first) <>  0.0      or
10278        floatExpr( 1.797693134862315708e+308) << intExpr(integer.first) <>  0.0      or
10279        floatExpr(-4.940656458412465442e-324) << intExpr(integer.first) <> -0.0      or
10280        floatExpr(-2.225073858507200889e-308) << intExpr(integer.first) <> -0.0      or
10281        floatExpr(-2.225073858507201383e-308) << intExpr(integer.first) <> -0.0      or
10282        floatExpr(-1.797693134862315708e+308) << intExpr(integer.first) <> -0.0      or
10283        floatExpr( 4.940656458412465442e-324) << intExpr(integer.last ) <>  Infinity or
10284        floatExpr( 2.225073858507200889e-308) << intExpr(integer.last ) <>  Infinity or
10285        floatExpr( 2.225073858507201383e-308) << intExpr(integer.last ) <>  Infinity or
10286        floatExpr( 1.797693134862315708e+308) << intExpr(integer.last ) <>  Infinity or
10287        floatExpr(-4.940656458412465442e-324) << intExpr(integer.last ) <> -Infinity or
10288        floatExpr(-2.225073858507200889e-308) << intExpr(integer.last ) <> -Infinity or
10289        floatExpr(-2.225073858507201383e-308) << intExpr(integer.last ) <> -Infinity or
10290        floatExpr(-1.797693134862315708e+308) << intExpr(integer.last ) <> -Infinity then
10291      writeln(" ***** Shift left of float values does not work correct. (4)");
10292      okay := FALSE;
10293    end if;
10294
10295    if  not isNaN(NaN              << -9999)                     or
10296        not isNaN(NaN              <<    10)                     or
10297        not isNaN(NaN              <<  9999)                     or
10298        not isNaN(floatExpr(NaN             ) << -9999)          or
10299        not isNaN(floatExpr(NaN             ) <<    10)          or
10300        not isNaN(floatExpr(NaN             ) <<  9999)          or
10301        not isNaN(NaN              << intExpr(-9999))            or
10302        not isNaN(NaN              << intExpr(   10))            or
10303        not isNaN(NaN              << intExpr( 9999))            or
10304        not isNaN(floatExpr(NaN             ) << intExpr(-9999)) or
10305        not isNaN(floatExpr(NaN             ) << intExpr(   10)) or
10306        not isNaN(floatExpr(NaN             ) << intExpr( 9999)) then
10307      writeln(" ***** Shift left of NaN does not work correct.");
10308      okay := FALSE;
10309    end if;
10310
10311    if okay then
10312      writeln("Shift left of float values works correct for selected values.");
10313    end if;
10314  end func;
10315
10316
10317const proc: check_rshift is func
10318  local
10319    var boolean: okay is TRUE;
10320  begin
10321    if   0.0                       >>   -10 <>  0.0                       or
10322         1.234567890123456789e+123 >>     0 <>  1.234567890123456789e+123 or
10323         Infinity                  >>   -10 <>  Infinity                  or
10324        -Infinity                  >>   -10 <> -Infinity                  or
10325         2.221519243884861782e+284 >> -2995 <>  Infinity                  or
10326        -3.720881118398479847e+31  >> -1616 <> -Infinity                  or
10327         2.234972294855364778e-99  >>   823 <>  0.0                       or
10328        -9.429403627481889418e-285 >>  1093 <>  0.0                       or
10329         1.751736975399683374e+305 >>   -10 <>  1.793778662809275800e+308 or
10330         8.883450423771940829e-84  >>  -483 <>  2.218551878577123500e+062 or
10331         5.777494836628130267e-309 >> -1071 <>  1.461722466756107500e+014 or
10332         2.546209045782271622e-309 >> -2047 <>  4.114292659568633900e+307 or
10333         6.603211093907156832e-309 >> -2047 <>  1.066980065059728900e+308 or
10334         1.434557330032167675e-310 >> -3059 <>  Infinity                  or
10335         8.227352381334111684e+183 >>  1633 <>  2.154156141625903463e-308 or
10336         6.009742445482107613e+258 >>  1882 <>  1.739418242816761100e-308 or
10337         3.094739191357472818e+93  >>  1334 <>  8.252961878480251800e-309 or
10338        -2.044542424689816058e-112 >>   651 <> -2.188108984804417542e-308 or
10339         1.447562767514547211e-123 >>   662 <>  7.410984687618698163e-323 or
10340        -9.122215700985469031e-309 >>    46 <> -1.284570679187241015e-322 or
10341         1.590229628495541250e-308 >>     3 <>  1.987787035619425328e-309 or
10342         1.106649978021704684e-308 >>     2 <>  2.766624945054261710e-309 or
10343        -5.495829332017545722e-309 >>    43 <> -6.225227137599706457e-322 or
10344      #  2.320160450702645352e-216 >>   358 <>  4.940656458412465442e-324 or
10345      #  1.973266378845922681e-11  >>  1025 <>  5.488575259650407859e-320 or
10346      #  1.632095641757055474e+130 >>  1492 <>  1.191241678687829543e-319 or
10347      #  1.943808595063234196e-308 >>    15 <>  5.932033065990738998e-313 or
10348      #  2.265259963921934671e-244 >>   213 <>  1.720794355934250507e-308 or
10349      #  6.338957915016740072e-263 >>   172 <>  1.058908938501717366e-314 or
10350      #  1.943808595063234196e-308 >>    15 <>  5.932033065990738998e-313 or
10351      # -2.224466941245358019e-308 >>    27 <> -1.657357042812545087e-316 or
10352         4.940656458412465442e-324 >> -2046 <>  3.991680619069439623e+292 or
10353        -4.940656458412465442e-324 >> -2046 <> -3.991680619069439623e+292 or
10354         4.940656458412465442e-324 >> -2097 <>  8.988465674311579539e+307 or
10355        -4.940656458412465442e-324 >> -2097 <> -8.988465674311579539e+307 or
10356         4.940656458412465442e-324 >> -2098 <>  Infinity                  or
10357        -4.940656458412465442e-324 >> -2098 <> -Infinity                  or
10358         8.988465674311579539e+307 >>  2046 <>  1.112536929253600692e-308 or
10359        -8.988465674311579539e+307 >>  2046 <> -1.112536929253600692e-308 or
10360         8.988465674311579539e+307 >>  2097 <>  4.940656458412465442e-324 or
10361        -8.988465674311579539e+307 >>  2097 <> -4.940656458412465442e-324 or
10362         8.988465674311579539e+307 >>  2098 <>  0.0                       or
10363        -8.988465674311579539e+307 >>  2098 <>  0.0                       or
10364      #  1.797693134862315708e+308 >>  2097 <>  4.940656458412465442e-324 or
10365      # -1.797693134862315708e+308 >>  2097 <> -4.940656458412465442e-324 or
10366      #  1.797693134862315708e+308 >>  2098 <>  4.940656458412465442e-324 or
10367      # -1.797693134862315708e+308 >>  2098 <> -4.940656458412465442e-324 or
10368         1.797693134862315708e+308 >>  2099 <>  0.0                       or
10369        -1.797693134862315708e+308 >>  2099 <>  0.0                       or
10370         2.225073858507200889e-308 >> -1023 <>  1.999999999999999556e+0   or
10371        -2.225073858507200889e-308 >> -1023 <> -1.999999999999999556e+0   or
10372         4.940656458412465442e-324 >> integer.last  <>  0.0      or
10373         2.225073858507200889e-308 >> integer.last  <>  0.0      or
10374         2.225073858507201383e-308 >> integer.last  <>  0.0      or
10375         1.797693134862315708e+308 >> integer.last  <>  0.0      or
10376        -4.940656458412465442e-324 >> integer.last  <> -0.0      or
10377        -2.225073858507200889e-308 >> integer.last  <> -0.0      or
10378        -2.225073858507201383e-308 >> integer.last  <> -0.0      or
10379        -1.797693134862315708e+308 >> integer.last  <> -0.0      or
10380         4.940656458412465442e-324 >> integer.first <>  Infinity or
10381         2.225073858507200889e-308 >> integer.first <>  Infinity or
10382         2.225073858507201383e-308 >> integer.first <>  Infinity or
10383         1.797693134862315708e+308 >> integer.first <>  Infinity or
10384        -4.940656458412465442e-324 >> integer.first <> -Infinity or
10385        -2.225073858507200889e-308 >> integer.first <> -Infinity or
10386        -2.225073858507201383e-308 >> integer.first <> -Infinity or
10387        -1.797693134862315708e+308 >> integer.first <> -Infinity then
10388      writeln(" ***** Shift right of float values does not work correct. (1)");
10389      okay := FALSE;
10390    end if;
10391
10392    if  floatExpr( 0.0                      ) >>   -10 <>  0.0                       or
10393        floatExpr( 1.234567890123456789e+123) >>     0 <>  1.234567890123456789e+123 or
10394        floatExpr( Infinity                 ) >>   -10 <>  Infinity                  or
10395        floatExpr(-Infinity                 ) >>   -10 <> -Infinity                  or
10396        floatExpr( 2.221519243884861782e+284) >> -2995 <>  Infinity                  or
10397        floatExpr(-3.720881118398479847e+31 ) >> -1616 <> -Infinity                  or
10398        floatExpr( 2.234972294855364778e-99 ) >>   823 <>  0.0                       or
10399        floatExpr(-9.429403627481889418e-285) >>  1093 <>  0.0                       or
10400        floatExpr( 1.751736975399683374e+305) >>   -10 <>  1.793778662809275800e+308 or
10401        floatExpr( 8.883450423771940829e-84 ) >>  -483 <>  2.218551878577123500e+062 or
10402        floatExpr( 5.777494836628130267e-309) >> -1071 <>  1.461722466756107500e+014 or
10403        floatExpr( 2.546209045782271622e-309) >> -2047 <>  4.114292659568633900e+307 or
10404        floatExpr( 6.603211093907156832e-309) >> -2047 <>  1.066980065059728900e+308 or
10405        floatExpr( 1.434557330032167675e-310) >> -3059 <>  Infinity                  or
10406        floatExpr( 8.227352381334111684e+183) >>  1633 <>  2.154156141625903463e-308 or
10407        floatExpr( 6.009742445482107613e+258) >>  1882 <>  1.739418242816761100e-308 or
10408        floatExpr( 3.094739191357472818e+93 ) >>  1334 <>  8.252961878480251800e-309 or
10409        floatExpr(-2.044542424689816058e-112) >>   651 <> -2.188108984804417542e-308 or
10410        floatExpr( 1.447562767514547211e-123) >>   662 <>  7.410984687618698163e-323 or
10411        floatExpr(-9.122215700985469031e-309) >>    46 <> -1.284570679187241015e-322 or
10412        floatExpr( 1.590229628495541250e-308) >>     3 <>  1.987787035619425328e-309 or
10413        floatExpr( 1.106649978021704684e-308) >>     2 <>  2.766624945054261710e-309 or
10414        floatExpr(-5.495829332017545722e-309) >>    43 <> -6.225227137599706457e-322 or
10415      # floatExpr( 2.320160450702645352e-216) >>   358 <>  4.940656458412465442e-324 or
10416      # floatExpr( 1.973266378845922681e-11 ) >>  1025 <>  5.488575259650407859e-320 or
10417      # floatExpr( 1.632095641757055474e+130) >>  1492 <>  1.191241678687829543e-319 or
10418      # floatExpr( 1.943808595063234196e-308) >>    15 <>  5.932033065990738998e-313 or
10419      # floatExpr( 2.265259963921934671e-244) >>   213 <>  1.720794355934250507e-308 or
10420      # floatExpr( 6.338957915016740072e-263) >>   172 <>  1.058908938501717366e-314 or
10421      # floatExpr( 1.943808595063234196e-308) >>    15 <>  5.932033065990738998e-313 or
10422      # floatExpr(-2.224466941245358019e-308) >>    27 <> -1.657357042812545087e-316 or
10423        floatExpr( 4.940656458412465442e-324) >> -2046 <>  3.991680619069439623e+292 or
10424        floatExpr(-4.940656458412465442e-324) >> -2046 <> -3.991680619069439623e+292 or
10425        floatExpr( 4.940656458412465442e-324) >> -2097 <>  8.988465674311579539e+307 or
10426        floatExpr(-4.940656458412465442e-324) >> -2097 <> -8.988465674311579539e+307 or
10427        floatExpr( 4.940656458412465442e-324) >> -2098 <>  Infinity                  or
10428        floatExpr(-4.940656458412465442e-324) >> -2098 <> -Infinity                  or
10429        floatExpr( 8.988465674311579539e+307) >>  2046 <>  1.112536929253600692e-308 or
10430        floatExpr(-8.988465674311579539e+307) >>  2046 <> -1.112536929253600692e-308 or
10431        floatExpr( 8.988465674311579539e+307) >>  2097 <>  4.940656458412465442e-324 or
10432        floatExpr(-8.988465674311579539e+307) >>  2097 <> -4.940656458412465442e-324 or
10433        floatExpr( 8.988465674311579539e+307) >>  2098 <>  0.0                       or
10434        floatExpr(-8.988465674311579539e+307) >>  2098 <>  0.0                       or
10435      # floatExpr( 1.797693134862315708e+308) >>  2097 <>  4.940656458412465442e-324 or
10436      # floatExpr(-1.797693134862315708e+308) >>  2097 <> -4.940656458412465442e-324 or
10437      # floatExpr( 1.797693134862315708e+308) >>  2098 <>  4.940656458412465442e-324 or
10438      # floatExpr(-1.797693134862315708e+308) >>  2098 <> -4.940656458412465442e-324 or
10439        floatExpr( 1.797693134862315708e+308) >>  2099 <>  0.0                       or
10440        floatExpr(-1.797693134862315708e+308) >>  2099 <>  0.0                       or
10441        floatExpr( 2.225073858507200889e-308) >> -1023 <>  1.999999999999999556e+0   or
10442        floatExpr(-2.225073858507200889e-308) >> -1023 <> -1.999999999999999556e+0   or
10443        floatExpr( 4.940656458412465442e-324) >> integer.last  <>  0.0      or
10444        floatExpr( 2.225073858507200889e-308) >> integer.last  <>  0.0      or
10445        floatExpr( 2.225073858507201383e-308) >> integer.last  <>  0.0      or
10446        floatExpr( 1.797693134862315708e+308) >> integer.last  <>  0.0      or
10447        floatExpr(-4.940656458412465442e-324) >> integer.last  <> -0.0      or
10448        floatExpr(-2.225073858507200889e-308) >> integer.last  <> -0.0      or
10449        floatExpr(-2.225073858507201383e-308) >> integer.last  <> -0.0      or
10450        floatExpr(-1.797693134862315708e+308) >> integer.last  <> -0.0      or
10451        floatExpr( 4.940656458412465442e-324) >> integer.first <>  Infinity or
10452        floatExpr( 2.225073858507200889e-308) >> integer.first <>  Infinity or
10453        floatExpr( 2.225073858507201383e-308) >> integer.first <>  Infinity or
10454        floatExpr( 1.797693134862315708e+308) >> integer.first <>  Infinity or
10455        floatExpr(-4.940656458412465442e-324) >> integer.first <> -Infinity or
10456        floatExpr(-2.225073858507200889e-308) >> integer.first <> -Infinity or
10457        floatExpr(-2.225073858507201383e-308) >> integer.first <> -Infinity or
10458        floatExpr(-1.797693134862315708e+308) >> integer.first <> -Infinity then
10459      writeln(" ***** Shift right of float values does not work correct. (2)");
10460      okay := FALSE;
10461    end if;
10462
10463    if   0.0                       >> intExpr(  -10) <>  0.0                       or
10464         1.234567890123456789e+123 >> intExpr(    0) <>  1.234567890123456789e+123 or
10465         Infinity                  >> intExpr(  -10) <>  Infinity                  or
10466        -Infinity                  >> intExpr(  -10) <> -Infinity                  or
10467         2.221519243884861782e+284 >> intExpr(-2995) <>  Infinity                  or
10468        -3.720881118398479847e+31  >> intExpr(-1616) <> -Infinity                  or
10469         2.234972294855364778e-99  >> intExpr(  823) <>  0.0                       or
10470        -9.429403627481889418e-285 >> intExpr( 1093) <>  0.0                       or
10471         1.751736975399683374e+305 >> intExpr(  -10) <>  1.793778662809275800e+308 or
10472         8.883450423771940829e-84  >> intExpr( -483) <>  2.218551878577123500e+062 or
10473         5.777494836628130267e-309 >> intExpr(-1071) <>  1.461722466756107500e+014 or
10474         2.546209045782271622e-309 >> intExpr(-2047) <>  4.114292659568633900e+307 or
10475         6.603211093907156832e-309 >> intExpr(-2047) <>  1.066980065059728900e+308 or
10476         1.434557330032167675e-310 >> intExpr(-3059) <>  Infinity                  or
10477         8.227352381334111684e+183 >> intExpr( 1633) <>  2.154156141625903463e-308 or
10478         6.009742445482107613e+258 >> intExpr( 1882) <>  1.739418242816761100e-308 or
10479         3.094739191357472818e+93  >> intExpr( 1334) <>  8.252961878480251800e-309 or
10480        -2.044542424689816058e-112 >> intExpr(  651) <> -2.188108984804417542e-308 or
10481         1.447562767514547211e-123 >> intExpr(  662) <>  7.410984687618698163e-323 or
10482        -9.122215700985469031e-309 >> intExpr(   46) <> -1.284570679187241015e-322 or
10483         1.590229628495541250e-308 >> intExpr(    3) <>  1.987787035619425328e-309 or
10484         1.106649978021704684e-308 >> intExpr(    2) <>  2.766624945054261710e-309 or
10485        -5.495829332017545722e-309 >> intExpr(   43) <> -6.225227137599706457e-322 or
10486      #  2.320160450702645352e-216 >> intExpr(  358) <>  4.940656458412465442e-324 or
10487      #  1.973266378845922681e-11  >> intExpr( 1025) <>  5.488575259650407859e-320 or
10488      #  1.632095641757055474e+130 >> intExpr( 1492) <>  1.191241678687829543e-319 or
10489      #  1.943808595063234196e-308 >> intExpr(   15) <>  5.932033065990738998e-313 or
10490      #  2.265259963921934671e-244 >> intExpr(  213) <>  1.720794355934250507e-308 or
10491      #  6.338957915016740072e-263 >> intExpr(  172) <>  1.058908938501717366e-314 or
10492      #  1.943808595063234196e-308 >> intExpr(   15) <>  5.932033065990738998e-313 or
10493      # -2.224466941245358019e-308 >> intExpr(   27) <> -1.657357042812545087e-316 or
10494         4.940656458412465442e-324 >> intExpr(-2046) <>  3.991680619069439623e+292 or
10495        -4.940656458412465442e-324 >> intExpr(-2046) <> -3.991680619069439623e+292 or
10496         4.940656458412465442e-324 >> intExpr(-2097) <>  8.988465674311579539e+307 or
10497        -4.940656458412465442e-324 >> intExpr(-2097) <> -8.988465674311579539e+307 or
10498         4.940656458412465442e-324 >> intExpr(-2098) <>  Infinity                  or
10499        -4.940656458412465442e-324 >> intExpr(-2098) <> -Infinity                  or
10500         8.988465674311579539e+307 >> intExpr( 2046) <>  1.112536929253600692e-308 or
10501        -8.988465674311579539e+307 >> intExpr( 2046) <> -1.112536929253600692e-308 or
10502         8.988465674311579539e+307 >> intExpr( 2097) <>  4.940656458412465442e-324 or
10503        -8.988465674311579539e+307 >> intExpr( 2097) <> -4.940656458412465442e-324 or
10504         8.988465674311579539e+307 >> intExpr( 2098) <>  0.0                       or
10505        -8.988465674311579539e+307 >> intExpr( 2098) <>  0.0                       or
10506      #  1.797693134862315708e+308 >> intExpr( 2097) <>  4.940656458412465442e-324 or
10507      # -1.797693134862315708e+308 >> intExpr( 2097) <> -4.940656458412465442e-324 or
10508      #  1.797693134862315708e+308 >> intExpr( 2098) <>  4.940656458412465442e-324 or
10509      # -1.797693134862315708e+308 >> intExpr( 2098) <> -4.940656458412465442e-324 or
10510         1.797693134862315708e+308 >> intExpr( 2099) <>  0.0                       or
10511        -1.797693134862315708e+308 >> intExpr( 2099) <>  0.0                       or
10512         2.225073858507200889e-308 >> intExpr(-1023) <>  1.999999999999999556e+0   or
10513        -2.225073858507200889e-308 >> intExpr(-1023) <> -1.999999999999999556e+0   or
10514         4.940656458412465442e-324 >> intExpr(integer.last ) <>  0.0      or
10515         2.225073858507200889e-308 >> intExpr(integer.last ) <>  0.0      or
10516         2.225073858507201383e-308 >> intExpr(integer.last ) <>  0.0      or
10517         1.797693134862315708e+308 >> intExpr(integer.last ) <>  0.0      or
10518        -4.940656458412465442e-324 >> intExpr(integer.last ) <> -0.0      or
10519        -2.225073858507200889e-308 >> intExpr(integer.last ) <> -0.0      or
10520        -2.225073858507201383e-308 >> intExpr(integer.last ) <> -0.0      or
10521        -1.797693134862315708e+308 >> intExpr(integer.last ) <> -0.0      or
10522         4.940656458412465442e-324 >> intExpr(integer.first) <>  Infinity or
10523         2.225073858507200889e-308 >> intExpr(integer.first) <>  Infinity or
10524         2.225073858507201383e-308 >> intExpr(integer.first) <>  Infinity or
10525         1.797693134862315708e+308 >> intExpr(integer.first) <>  Infinity or
10526        -4.940656458412465442e-324 >> intExpr(integer.first) <> -Infinity or
10527        -2.225073858507200889e-308 >> intExpr(integer.first) <> -Infinity or
10528        -2.225073858507201383e-308 >> intExpr(integer.first) <> -Infinity or
10529        -1.797693134862315708e+308 >> intExpr(integer.first) <> -Infinity then
10530      writeln(" ***** Shift right of float values does not work correct. (3)");
10531      okay := FALSE;
10532    end if;
10533
10534    if  floatExpr( 0.0                      ) >> intExpr(  -10) <>  0.0                       or
10535        floatExpr( 1.234567890123456789e+123) >> intExpr(    0) <>  1.234567890123456789e+123 or
10536        floatExpr( Infinity                 ) >> intExpr(  -10) <>  Infinity                  or
10537        floatExpr(-Infinity                 ) >> intExpr(  -10) <> -Infinity                  or
10538        floatExpr( 2.221519243884861782e+284) >> intExpr(-2995) <>  Infinity                  or
10539        floatExpr(-3.720881118398479847e+31 ) >> intExpr(-1616) <> -Infinity                  or
10540        floatExpr( 2.234972294855364778e-99 ) >> intExpr(  823) <>  0.0                       or
10541        floatExpr(-9.429403627481889418e-285) >> intExpr( 1093) <>  0.0                       or
10542        floatExpr( 1.751736975399683374e+305) >> intExpr(  -10) <>  1.793778662809275800e+308 or
10543        floatExpr( 8.883450423771940829e-84 ) >> intExpr( -483) <>  2.218551878577123500e+062 or
10544        floatExpr( 5.777494836628130267e-309) >> intExpr(-1071) <>  1.461722466756107500e+014 or
10545        floatExpr( 2.546209045782271622e-309) >> intExpr(-2047) <>  4.114292659568633900e+307 or
10546        floatExpr( 6.603211093907156832e-309) >> intExpr(-2047) <>  1.066980065059728900e+308 or
10547        floatExpr( 1.434557330032167675e-310) >> intExpr(-3059) <>  Infinity                  or
10548        floatExpr( 8.227352381334111684e+183) >> intExpr( 1633) <>  2.154156141625903463e-308 or
10549        floatExpr( 6.009742445482107613e+258) >> intExpr( 1882) <>  1.739418242816761100e-308 or
10550        floatExpr( 3.094739191357472818e+93 ) >> intExpr( 1334) <>  8.252961878480251800e-309 or
10551        floatExpr(-2.044542424689816058e-112) >> intExpr(  651) <> -2.188108984804417542e-308 or
10552        floatExpr( 1.447562767514547211e-123) >> intExpr(  662) <>  7.410984687618698163e-323 or
10553        floatExpr(-9.122215700985469031e-309) >> intExpr(   46) <> -1.284570679187241015e-322 or
10554        floatExpr( 1.590229628495541250e-308) >> intExpr(    3) <>  1.987787035619425328e-309 or
10555        floatExpr( 1.106649978021704684e-308) >> intExpr(    2) <>  2.766624945054261710e-309 or
10556        floatExpr(-5.495829332017545722e-309) >> intExpr(   43) <> -6.225227137599706457e-322 or
10557      # floatExpr( 2.320160450702645352e-216) >> intExpr(  358) <>  4.940656458412465442e-324 or
10558      # floatExpr( 1.973266378845922681e-11 ) >> intExpr( 1025) <>  5.488575259650407859e-320 or
10559      # floatExpr( 1.632095641757055474e+130) >> intExpr( 1492) <>  1.191241678687829543e-319 or
10560      # floatExpr( 1.943808595063234196e-308) >> intExpr(   15) <>  5.932033065990738998e-313 or
10561      # floatExpr( 2.265259963921934671e-244) >> intExpr(  213) <>  1.720794355934250507e-308 or
10562      # floatExpr( 6.338957915016740072e-263) >> intExpr(  172) <>  1.058908938501717366e-314 or
10563      # floatExpr( 1.943808595063234196e-308) >> intExpr(   15) <>  5.932033065990738998e-313 or
10564      # floatExpr(-2.224466941245358019e-308) >> intExpr(   27) <> -1.657357042812545087e-316 or
10565        floatExpr( 4.940656458412465442e-324) >> intExpr(-2046) <>  3.991680619069439623e+292 or
10566        floatExpr(-4.940656458412465442e-324) >> intExpr(-2046) <> -3.991680619069439623e+292 or
10567        floatExpr( 4.940656458412465442e-324) >> intExpr(-2097) <>  8.988465674311579539e+307 or
10568        floatExpr(-4.940656458412465442e-324) >> intExpr(-2097) <> -8.988465674311579539e+307 or
10569        floatExpr( 4.940656458412465442e-324) >> intExpr(-2098) <>  Infinity                  or
10570        floatExpr(-4.940656458412465442e-324) >> intExpr(-2098) <> -Infinity                  or
10571        floatExpr( 8.988465674311579539e+307) >> intExpr( 2046) <>  1.112536929253600692e-308 or
10572        floatExpr(-8.988465674311579539e+307) >> intExpr( 2046) <> -1.112536929253600692e-308 or
10573        floatExpr( 8.988465674311579539e+307) >> intExpr( 2097) <>  4.940656458412465442e-324 or
10574        floatExpr(-8.988465674311579539e+307) >> intExpr( 2097) <> -4.940656458412465442e-324 or
10575        floatExpr( 8.988465674311579539e+307) >> intExpr( 2098) <>  0.0                       or
10576        floatExpr(-8.988465674311579539e+307) >> intExpr( 2098) <>  0.0                       or
10577      # floatExpr( 1.797693134862315708e+308) >> intExpr( 2097) <>  4.940656458412465442e-324 or
10578      # floatExpr(-1.797693134862315708e+308) >> intExpr( 2097) <> -4.940656458412465442e-324 or
10579      # floatExpr( 1.797693134862315708e+308) >> intExpr( 2098) <>  4.940656458412465442e-324 or
10580      # floatExpr(-1.797693134862315708e+308) >> intExpr( 2098) <> -4.940656458412465442e-324 or
10581        floatExpr( 1.797693134862315708e+308) >> intExpr( 2099) <>  0.0                       or
10582        floatExpr(-1.797693134862315708e+308) >> intExpr( 2099) <>  0.0                       or
10583        floatExpr( 2.225073858507200889e-308) >> intExpr(-1023) <>  1.999999999999999556e+0   or
10584        floatExpr(-2.225073858507200889e-308) >> intExpr(-1023) <> -1.999999999999999556e+0   or
10585        floatExpr( 4.940656458412465442e-324) >> intExpr(integer.last ) <>  0.0      or
10586        floatExpr( 2.225073858507200889e-308) >> intExpr(integer.last ) <>  0.0      or
10587        floatExpr( 2.225073858507201383e-308) >> intExpr(integer.last ) <>  0.0      or
10588        floatExpr( 1.797693134862315708e+308) >> intExpr(integer.last ) <>  0.0      or
10589        floatExpr(-4.940656458412465442e-324) >> intExpr(integer.last ) <> -0.0      or
10590        floatExpr(-2.225073858507200889e-308) >> intExpr(integer.last ) <> -0.0      or
10591        floatExpr(-2.225073858507201383e-308) >> intExpr(integer.last ) <> -0.0      or
10592        floatExpr(-1.797693134862315708e+308) >> intExpr(integer.last ) <> -0.0      or
10593        floatExpr( 4.940656458412465442e-324) >> intExpr(integer.first) <>  Infinity or
10594        floatExpr( 2.225073858507200889e-308) >> intExpr(integer.first) <>  Infinity or
10595        floatExpr( 2.225073858507201383e-308) >> intExpr(integer.first) <>  Infinity or
10596        floatExpr( 1.797693134862315708e+308) >> intExpr(integer.first) <>  Infinity or
10597        floatExpr(-4.940656458412465442e-324) >> intExpr(integer.first) <> -Infinity or
10598        floatExpr(-2.225073858507200889e-308) >> intExpr(integer.first) <> -Infinity or
10599        floatExpr(-2.225073858507201383e-308) >> intExpr(integer.first) <> -Infinity or
10600        floatExpr(-1.797693134862315708e+308) >> intExpr(integer.first) <> -Infinity then
10601      writeln(" ***** Shift right of float values does not work correct. (4)");
10602      okay := FALSE;
10603    end if;
10604
10605    if  not isNaN(NaN              >> -9999)                     or
10606        not isNaN(NaN              >>    10)                     or
10607        not isNaN(NaN              >>  9999)                     or
10608        not isNaN(floatExpr(NaN             ) >> -9999)          or
10609        not isNaN(floatExpr(NaN             ) >>    10)          or
10610        not isNaN(floatExpr(NaN             ) >>  9999)          or
10611        not isNaN(NaN              >> intExpr(-9999))            or
10612        not isNaN(NaN              >> intExpr(   10))            or
10613        not isNaN(NaN              >> intExpr( 9999))            or
10614        not isNaN(floatExpr(NaN             ) >> intExpr(-9999)) or
10615        not isNaN(floatExpr(NaN             ) >> intExpr(   10)) or
10616        not isNaN(floatExpr(NaN             ) >> intExpr( 9999)) then
10617      writeln(" ***** Shift right of NaN does not work correct.");
10618      okay := FALSE;
10619    end if;
10620
10621    if okay then
10622      writeln("Shift right of float values works correct for selected values.");
10623    end if;
10624  end func;
10625
10626
10627const proc: check_negative_zero is func
10628  local
10629    const float: neg_zero1 is -0.0;
10630    const float: neg_zero2 is -1.0 /  Infinity;
10631    const float: neg_zero3 is  1.0 / -Infinity;
10632  begin
10633    if not isNegativeZero(                      -0.0)  or
10634       not isNegativeZero(                 neg_zero1)  or
10635       not isNegativeZero(          -1.0 /  Infinity)  or
10636       not isNegativeZero(                 neg_zero2)  or
10637       not isNegativeZero(           1.0 / -Infinity)  or
10638       not isNegativeZero(                 neg_zero3)  or
10639       not isNegativeZero(floatExpr(            -0.0)) or
10640       not isNegativeZero(floatExpr(       neg_zero1)) or
10641       not isNegativeZero(floatExpr(-1.0 /  Infinity)) or
10642       not isNegativeZero(floatExpr(       neg_zero2)) or
10643       not isNegativeZero(floatExpr( 1.0 / -Infinity)) or
10644       not isNegativeZero(floatExpr(       neg_zero3)) then
10645      writeln(" ***** Negative zero does not work correct.");
10646    else
10647      writeln("Negative zero does work correct.");
10648    end if;
10649  end func;
10650
10651
10652const proc: check_inf is func
10653  local
10654    const float: minusZero is -0.0;
10655    const float: minusOne is -1.0;
10656    const float: minusTwo is -2.0;
10657    const float: minusInf is -Infinity;
10658    const float: minusBig is -1.0E37;
10659    const float: minusSmall is -1.0E-37;
10660    var float: floatVar is 0.0;
10661    var boolean: divAssignOkay is TRUE;
10662    var boolean: okay is TRUE;
10663  begin
10664    if             -1.0E37  /                -0.0  <>  Infinity or
10665                   -1.0E37  /           minusZero  <>  Infinity or
10666                   -1.0E37  /                 0.0  <> -Infinity or
10667                  minusBig  /                -0.0  <>  Infinity or
10668                  minusBig  /           minusZero  <>  Infinity or
10669                  minusBig  /                 0.0  <> -Infinity or
10670                      -1.0  /                -0.0  <>  Infinity or
10671                      -1.0  /           minusZero  <>  Infinity or
10672                      -1.0  /                 0.0  <> -Infinity or
10673                  minusOne  /                -0.0  <>  Infinity or
10674                  minusOne  /           minusZero  <>  Infinity or
10675                  minusOne  /                 0.0  <> -Infinity or
10676                       1.0  /                -0.0  <> -Infinity or
10677                       1.0  /           minusZero  <> -Infinity or
10678                       1.0  /                 0.0  <>  Infinity or
10679                    1.0E37  /                -0.0  <> -Infinity or
10680                    1.0E37  /           minusZero  <> -Infinity or
10681                    1.0E37  /                 0.0  <>  Infinity or
10682        floatExpr( -1.0E37) /                -0.0  <>  Infinity or
10683        floatExpr( -1.0E37) /           minusZero  <>  Infinity or
10684        floatExpr( -1.0E37) /                 0.0  <> -Infinity or
10685        floatExpr(minusBig) /                -0.0  <>  Infinity or
10686        floatExpr(minusBig) /           minusZero  <>  Infinity or
10687        floatExpr(minusBig) /                 0.0  <> -Infinity or
10688        floatExpr(    -1.0) /                -0.0  <>  Infinity or
10689        floatExpr(    -1.0) /           minusZero  <>  Infinity or
10690        floatExpr(    -1.0) /                 0.0  <> -Infinity or
10691        floatExpr(minusOne) /                -0.0  <>  Infinity or
10692        floatExpr(minusOne) /           minusZero  <>  Infinity or
10693        floatExpr(minusOne) /                 0.0  <> -Infinity or
10694        floatExpr(     1.0) /                -0.0  <> -Infinity or
10695        floatExpr(     1.0) /           minusZero  <> -Infinity or
10696        floatExpr(     1.0) /                 0.0  <>  Infinity or
10697        floatExpr(  1.0E37) /                -0.0  <> -Infinity or
10698        floatExpr(  1.0E37) /           minusZero  <> -Infinity or
10699        floatExpr(  1.0E37) /                 0.0  <>  Infinity or
10700                   -1.0E37  / floatExpr(     -0.0) <>  Infinity or
10701                   -1.0E37  / floatExpr(minusZero) <>  Infinity or
10702                   -1.0E37  / floatExpr(      0.0) <> -Infinity or
10703                  minusBig  / floatExpr(     -0.0) <>  Infinity or
10704                  minusBig  / floatExpr(minusZero) <>  Infinity or
10705                  minusBig  / floatExpr(      0.0) <> -Infinity or
10706                      -1.0  / floatExpr(     -0.0) <>  Infinity or
10707                      -1.0  / floatExpr(minusZero) <>  Infinity or
10708                      -1.0  / floatExpr(      0.0) <> -Infinity or
10709                  minusOne  / floatExpr(     -0.0) <>  Infinity or
10710                  minusOne  / floatExpr(minusZero) <>  Infinity or
10711                  minusOne  / floatExpr(      0.0) <> -Infinity or
10712                       1.0  / floatExpr(     -0.0) <> -Infinity or
10713                       1.0  / floatExpr(minusZero) <> -Infinity or
10714                       1.0  / floatExpr(      0.0) <>  Infinity or
10715                    1.0E37  / floatExpr(     -0.0) <> -Infinity or
10716                    1.0E37  / floatExpr(minusZero) <> -Infinity or
10717                    1.0E37  / floatExpr(      0.0) <>  Infinity or
10718        floatExpr( -1.0E37) / floatExpr(     -0.0) <>  Infinity or
10719        floatExpr( -1.0E37) / floatExpr(minusZero) <>  Infinity or
10720        floatExpr( -1.0E37) / floatExpr(      0.0) <> -Infinity or
10721        floatExpr(minusBig) / floatExpr(     -0.0) <>  Infinity or
10722        floatExpr(minusBig) / floatExpr(minusZero) <>  Infinity or
10723        floatExpr(minusBig) / floatExpr(      0.0) <> -Infinity or
10724        floatExpr(    -1.0) / floatExpr(     -0.0) <>  Infinity or
10725        floatExpr(    -1.0) / floatExpr(minusZero) <>  Infinity or
10726        floatExpr(    -1.0) / floatExpr(      0.0) <> -Infinity or
10727        floatExpr(minusOne) / floatExpr(     -0.0) <>  Infinity or
10728        floatExpr(minusOne) / floatExpr(minusZero) <>  Infinity or
10729        floatExpr(minusOne) / floatExpr(      0.0) <> -Infinity or
10730        floatExpr(     1.0) / floatExpr(     -0.0) <> -Infinity or
10731        floatExpr(     1.0) / floatExpr(minusZero) <> -Infinity or
10732        floatExpr(     1.0) / floatExpr(      0.0) <>  Infinity or
10733        floatExpr(  1.0E37) / floatExpr(     -0.0) <> -Infinity or
10734        floatExpr(  1.0E37) / floatExpr(minusZero) <> -Infinity or
10735        floatExpr(  1.0E37) / floatExpr(      0.0) <>  Infinity then
10736      writeln(" ***** Division by 0.0 does not return Infinity.");
10737      okay := FALSE;
10738    end if;
10739
10740    floatVar :=  -1.0E37; floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
10741    floatVar :=  -1.0E37; floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
10742    floatVar :=  -1.0E37; floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
10743    floatVar := minusBig; floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
10744    floatVar := minusBig; floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
10745    floatVar := minusBig; floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
10746    floatVar :=     -1.0; floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
10747    floatVar :=     -1.0; floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
10748    floatVar :=     -1.0; floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
10749    floatVar := minusOne; floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
10750    floatVar := minusOne; floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
10751    floatVar := minusOne; floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
10752    floatVar :=      1.0; floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
10753    floatVar :=      1.0; floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
10754    floatVar :=      1.0; floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
10755    floatVar :=   1.0E37; floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
10756    floatVar :=   1.0E37; floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and floatVar = -Infinity;
10757    floatVar :=   1.0E37; floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and floatVar =  Infinity;
10758    floatVar :=  -1.0E37; floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and floatVar =  Infinity;
10759    floatVar :=  -1.0E37; floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and floatVar =  Infinity;
10760    floatVar :=  -1.0E37; floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and floatVar = -Infinity;
10761    floatVar := minusBig; floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and floatVar =  Infinity;
10762    floatVar := minusBig; floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and floatVar =  Infinity;
10763    floatVar := minusBig; floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and floatVar = -Infinity;
10764    floatVar :=     -1.0; floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and floatVar =  Infinity;
10765    floatVar :=     -1.0; floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and floatVar =  Infinity;
10766    floatVar :=     -1.0; floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and floatVar = -Infinity;
10767    floatVar := minusOne; floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and floatVar =  Infinity;
10768    floatVar := minusOne; floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and floatVar =  Infinity;
10769    floatVar := minusOne; floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and floatVar = -Infinity;
10770    floatVar :=      1.0; floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and floatVar = -Infinity;
10771    floatVar :=      1.0; floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and floatVar = -Infinity;
10772    floatVar :=      1.0; floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and floatVar =  Infinity;
10773    floatVar :=   1.0E37; floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and floatVar = -Infinity;
10774    floatVar :=   1.0E37; floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and floatVar = -Infinity;
10775    floatVar :=   1.0E37; floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and floatVar =  Infinity;
10776    if not divAssignOkay then
10777      writeln(" ***** Assignment division by 0.0 does not assign Infinity.");
10778      okay := FALSE;
10779    end if;
10780
10781    if  log(                 -0.0)  <> -Infinity or
10782        log(            minusZero)  <> -Infinity or
10783        log(                  0.0)  <> -Infinity or
10784        log(  floatExpr(     -0.0)) <> -Infinity or
10785        log(  floatExpr(minusZero)) <> -Infinity or
10786        log(  floatExpr(      0.0)) <> -Infinity then
10787      writeln(" ***** log(0.0) does not return -Infinity.");
10788      okay := FALSE;
10789    end if;
10790
10791    if  log1p(               -1.0)  <> -Infinity or
10792        log1p(     floatExpr(-1.0)) <> -Infinity then
10793      writeln(" ***** log1p(-1.0) does not return -Infinity.");
10794      okay := FALSE;
10795    end if;
10796
10797    if  log2(                -0.0)  <> -Infinity or
10798        log2(           minusZero)  <> -Infinity or
10799        log2(                 0.0)  <> -Infinity or
10800        log2( floatExpr(     -0.0)) <> -Infinity or
10801        log2( floatExpr(minusZero)) <> -Infinity or
10802        log2( floatExpr(      0.0)) <> -Infinity then
10803      writeln(" ***** log2(0.0) does not return -Infinity.");
10804      okay := FALSE;
10805    end if;
10806
10807    if  log10(               -0.0)  <> -Infinity or
10808        log10(          minusZero)  <> -Infinity or
10809        log10(                0.0)  <> -Infinity or
10810        log10(floatExpr(     -0.0)) <> -Infinity or
10811        log10(floatExpr(minusZero)) <> -Infinity or
10812        log10(floatExpr(      0.0)) <> -Infinity then
10813      writeln(" ***** log10(0.0) does not return -Infinity.");
10814      okay := FALSE;
10815    end if;
10816
10817    if            Infinity  +             -1.0E37  <> Infinity or
10818                  Infinity  +            minusBig  <> Infinity or
10819                  Infinity  +             -1000.0  <> Infinity or
10820                  Infinity  +                -0.0  <> Infinity or
10821                  Infinity  +           minusZero  <> Infinity or
10822                  Infinity  +                 0.0  <> Infinity or
10823                  Infinity  +              1000.0  <> Infinity or
10824                  Infinity  +              1.0E37  <> Infinity or
10825                  Infinity  +            Infinity  <> Infinity or
10826                  Infinity  -           -Infinity  <> Infinity or
10827                  Infinity  -            minusInf  <> Infinity or
10828                  Infinity  -             -1.0E37  <> Infinity or
10829                  Infinity  -            minusBig  <> Infinity or
10830                  Infinity  -             -1000.0  <> Infinity or
10831                  Infinity  -                -0.0  <> Infinity or
10832                  Infinity  -           minusZero  <> Infinity or
10833                  Infinity  -                 0.0  <> Infinity or
10834                  Infinity  -              1000.0  <> Infinity or
10835                  Infinity  -              1.0E37  <> Infinity or
10836        floatExpr(Infinity) +             -1.0E37  <> Infinity or
10837        floatExpr(Infinity) +            minusBig  <> Infinity or
10838        floatExpr(Infinity) +             -1000.0  <> Infinity or
10839        floatExpr(Infinity) +                -0.0  <> Infinity or
10840        floatExpr(Infinity) +           minusZero  <> Infinity or
10841        floatExpr(Infinity) +                 0.0  <> Infinity or
10842        floatExpr(Infinity) +              1000.0  <> Infinity or
10843        floatExpr(Infinity) +              1.0E37  <> Infinity or
10844        floatExpr(Infinity) +            Infinity  <> Infinity or
10845        floatExpr(Infinity) -           -Infinity  <> Infinity or
10846        floatExpr(Infinity) -            minusInf  <> Infinity or
10847        floatExpr(Infinity) -             -1.0E37  <> Infinity or
10848        floatExpr(Infinity) -            minusBig  <> Infinity or
10849        floatExpr(Infinity) -             -1000.0  <> Infinity or
10850        floatExpr(Infinity) -                -0.0  <> Infinity or
10851        floatExpr(Infinity) -           minusZero  <> Infinity or
10852        floatExpr(Infinity) -                 0.0  <> Infinity or
10853        floatExpr(Infinity) -              1000.0  <> Infinity or
10854        floatExpr(Infinity) -              1.0E37  <> Infinity or
10855                  Infinity  + floatExpr(  -1.0E37) <> Infinity or
10856                  Infinity  + floatExpr( minusBig) <> Infinity or
10857                  Infinity  + floatExpr(  -1000.0) <> Infinity or
10858                  Infinity  + floatExpr(     -0.0) <> Infinity or
10859                  Infinity  + floatExpr(minusZero) <> Infinity or
10860                  Infinity  + floatExpr(      0.0) <> Infinity or
10861                  Infinity  + floatExpr(   1000.0) <> Infinity or
10862                  Infinity  + floatExpr(   1.0E37) <> Infinity or
10863                  Infinity  + floatExpr( Infinity) <> Infinity or
10864                  Infinity  - floatExpr(-Infinity) <> Infinity or
10865                  Infinity  - floatExpr( minusInf) <> Infinity or
10866                  Infinity  - floatExpr(  -1.0E37) <> Infinity or
10867                  Infinity  - floatExpr( minusBig) <> Infinity or
10868                  Infinity  - floatExpr(  -1000.0) <> Infinity or
10869                  Infinity  - floatExpr(     -0.0) <> Infinity or
10870                  Infinity  - floatExpr(minusZero) <> Infinity or
10871                  Infinity  - floatExpr(      0.0) <> Infinity or
10872                  Infinity  - floatExpr(   1000.0) <> Infinity or
10873                  Infinity  - floatExpr(   1.0E37) <> Infinity or
10874        floatExpr(Infinity) + floatExpr(  -1.0E37) <> Infinity or
10875        floatExpr(Infinity) + floatExpr( minusBig) <> Infinity or
10876        floatExpr(Infinity) + floatExpr(  -1000.0) <> Infinity or
10877        floatExpr(Infinity) + floatExpr(     -0.0) <> Infinity or
10878        floatExpr(Infinity) + floatExpr(minusZero) <> Infinity or
10879        floatExpr(Infinity) + floatExpr(      0.0) <> Infinity or
10880        floatExpr(Infinity) + floatExpr(   1000.0) <> Infinity or
10881        floatExpr(Infinity) + floatExpr(   1.0E37) <> Infinity or
10882        floatExpr(Infinity) + floatExpr( Infinity) <> Infinity or
10883        floatExpr(Infinity) - floatExpr(-Infinity) <> Infinity or
10884        floatExpr(Infinity) - floatExpr( minusInf) <> Infinity or
10885        floatExpr(Infinity) - floatExpr(  -1.0E37) <> Infinity or
10886        floatExpr(Infinity) - floatExpr( minusBig) <> Infinity or
10887        floatExpr(Infinity) - floatExpr(  -1000.0) <> Infinity or
10888        floatExpr(Infinity) - floatExpr(     -0.0) <> Infinity or
10889        floatExpr(Infinity) - floatExpr(minusZero) <> Infinity or
10890        floatExpr(Infinity) - floatExpr(      0.0) <> Infinity or
10891        floatExpr(Infinity) - floatExpr(   1000.0) <> Infinity or
10892        floatExpr(Infinity) - floatExpr(   1.0E37) <> Infinity then
10893      writeln(" ***** Adding a finite value to Infinity does not return Infinity.");
10894      okay := FALSE;
10895    end if;
10896
10897    if            -Infinity  +           -Infinity  <> -Infinity or
10898                  -Infinity  +            minusInf  <> -Infinity or
10899                  -Infinity  +             -1.0E37  <> -Infinity or
10900                  -Infinity  +            minusBig  <> -Infinity or
10901                  -Infinity  +             -1000.0  <> -Infinity or
10902                  -Infinity  +                -0.0  <> -Infinity or
10903                  -Infinity  +           minusZero  <> -Infinity or
10904                  -Infinity  +                 0.0  <> -Infinity or
10905                  -Infinity  +              1000.0  <> -Infinity or
10906                  -Infinity  +              1.0E37  <> -Infinity or
10907                  -Infinity  -             -1.0E37  <> -Infinity or
10908                  -Infinity  -            minusBig  <> -Infinity or
10909                  -Infinity  -             -1000.0  <> -Infinity or
10910                  -Infinity  -                -0.0  <> -Infinity or
10911                  -Infinity  -           minusZero  <> -Infinity or
10912                  -Infinity  -                 0.0  <> -Infinity or
10913                  -Infinity  -              1000.0  <> -Infinity or
10914                  -Infinity  -              1.0E37  <> -Infinity or
10915                  -Infinity  -            Infinity  <> -Infinity or
10916                   minusInf  +           -Infinity  <> -Infinity or
10917                   minusInf  +            minusInf  <> -Infinity or
10918                   minusInf  +             -1.0E37  <> -Infinity or
10919                   minusInf  +            minusBig  <> -Infinity or
10920                   minusInf  +             -1000.0  <> -Infinity or
10921                   minusInf  +                -0.0  <> -Infinity or
10922                   minusInf  +           minusZero  <> -Infinity or
10923                   minusInf  +                 0.0  <> -Infinity or
10924                   minusInf  +              1000.0  <> -Infinity or
10925                   minusInf  +              1.0E37  <> -Infinity or
10926                   minusInf  -             -1.0E37  <> -Infinity or
10927                   minusInf  -            minusBig  <> -Infinity or
10928                   minusInf  -             -1000.0  <> -Infinity or
10929                   minusInf  -                -0.0  <> -Infinity or
10930                   minusInf  -           minusZero  <> -Infinity or
10931                   minusInf  -                 0.0  <> -Infinity or
10932                   minusInf  -              1000.0  <> -Infinity or
10933                   minusInf  -              1.0E37  <> -Infinity or
10934                   minusInf  -            Infinity  <> -Infinity or
10935        floatExpr(-Infinity) +           -Infinity  <> -Infinity or
10936        floatExpr(-Infinity) +            minusInf  <> -Infinity or
10937        floatExpr(-Infinity) +             -1.0E37  <> -Infinity or
10938        floatExpr(-Infinity) +            minusBig  <> -Infinity or
10939        floatExpr(-Infinity) +             -1000.0  <> -Infinity or
10940        floatExpr(-Infinity) +                -0.0  <> -Infinity or
10941        floatExpr(-Infinity) +           minusZero  <> -Infinity or
10942        floatExpr(-Infinity) +                 0.0  <> -Infinity or
10943        floatExpr(-Infinity) +              1000.0  <> -Infinity or
10944        floatExpr(-Infinity) +              1.0E37  <> -Infinity or
10945        floatExpr(-Infinity) -             -1.0E37  <> -Infinity or
10946        floatExpr(-Infinity) -            minusBig  <> -Infinity or
10947        floatExpr(-Infinity) -             -1000.0  <> -Infinity or
10948        floatExpr(-Infinity) -                -0.0  <> -Infinity or
10949        floatExpr(-Infinity) -           minusZero  <> -Infinity or
10950        floatExpr(-Infinity) -                 0.0  <> -Infinity or
10951        floatExpr(-Infinity) -              1000.0  <> -Infinity or
10952        floatExpr(-Infinity) -              1.0E37  <> -Infinity or
10953        floatExpr(-Infinity) -            Infinity  <> -Infinity or
10954        floatExpr( minusInf) +           -Infinity  <> -Infinity or
10955        floatExpr( minusInf) +            minusInf  <> -Infinity or
10956        floatExpr( minusInf) +             -1.0E37  <> -Infinity or
10957        floatExpr( minusInf) +            minusBig  <> -Infinity or
10958        floatExpr( minusInf) +             -1000.0  <> -Infinity or
10959        floatExpr( minusInf) +                -0.0  <> -Infinity or
10960        floatExpr( minusInf) +           minusZero  <> -Infinity or
10961        floatExpr( minusInf) +                 0.0  <> -Infinity or
10962        floatExpr( minusInf) +              1000.0  <> -Infinity or
10963        floatExpr( minusInf) +              1.0E37  <> -Infinity or
10964        floatExpr( minusInf) -             -1.0E37  <> -Infinity or
10965        floatExpr( minusInf) -            minusBig  <> -Infinity or
10966        floatExpr( minusInf) -             -1000.0  <> -Infinity or
10967        floatExpr( minusInf) -                -0.0  <> -Infinity or
10968        floatExpr( minusInf) -           minusZero  <> -Infinity or
10969        floatExpr( minusInf) -                 0.0  <> -Infinity or
10970        floatExpr( minusInf) -              1000.0  <> -Infinity or
10971        floatExpr( minusInf) -              1.0E37  <> -Infinity or
10972        floatExpr( minusInf) -            Infinity  <> -Infinity or
10973                  -Infinity  + floatExpr(-Infinity) <> -Infinity or
10974                  -Infinity  + floatExpr( minusInf) <> -Infinity or
10975                  -Infinity  + floatExpr(  -1.0E37) <> -Infinity or
10976                  -Infinity  + floatExpr( minusBig) <> -Infinity or
10977                  -Infinity  + floatExpr(  -1000.0) <> -Infinity or
10978                  -Infinity  + floatExpr(     -0.0) <> -Infinity or
10979                  -Infinity  + floatExpr(minusZero) <> -Infinity or
10980                  -Infinity  + floatExpr(      0.0) <> -Infinity or
10981                  -Infinity  + floatExpr(   1000.0) <> -Infinity or
10982                  -Infinity  + floatExpr(   1.0E37) <> -Infinity or
10983                  -Infinity  - floatExpr(  -1.0E37) <> -Infinity or
10984                  -Infinity  - floatExpr( minusBig) <> -Infinity or
10985                  -Infinity  - floatExpr(  -1000.0) <> -Infinity or
10986                  -Infinity  - floatExpr(     -0.0) <> -Infinity or
10987                  -Infinity  - floatExpr(minusZero) <> -Infinity or
10988                  -Infinity  - floatExpr(      0.0) <> -Infinity or
10989                  -Infinity  - floatExpr(   1000.0) <> -Infinity or
10990                  -Infinity  - floatExpr(   1.0E37) <> -Infinity or
10991                  -Infinity  - floatExpr( Infinity) <> -Infinity or
10992                   minusInf  + floatExpr(-Infinity) <> -Infinity or
10993                   minusInf  + floatExpr( minusInf) <> -Infinity or
10994                   minusInf  + floatExpr(  -1.0E37) <> -Infinity or
10995                   minusInf  + floatExpr( minusBig) <> -Infinity or
10996                   minusInf  + floatExpr(  -1000.0) <> -Infinity or
10997                   minusInf  + floatExpr(     -0.0) <> -Infinity or
10998                   minusInf  + floatExpr(minusZero) <> -Infinity or
10999                   minusInf  + floatExpr(      0.0) <> -Infinity or
11000                   minusInf  + floatExpr(   1000.0) <> -Infinity or
11001                   minusInf  + floatExpr(   1.0E37) <> -Infinity or
11002                   minusInf  - floatExpr(  -1.0E37) <> -Infinity or
11003                   minusInf  - floatExpr( minusBig) <> -Infinity or
11004                   minusInf  - floatExpr(  -1000.0) <> -Infinity or
11005                   minusInf  - floatExpr(     -0.0) <> -Infinity or
11006                   minusInf  - floatExpr(minusZero) <> -Infinity or
11007                   minusInf  - floatExpr(      0.0) <> -Infinity or
11008                   minusInf  - floatExpr(   1000.0) <> -Infinity or
11009                   minusInf  - floatExpr(   1.0E37) <> -Infinity or
11010                   minusInf  - floatExpr( Infinity) <> -Infinity or
11011        floatExpr(-Infinity) + floatExpr(-Infinity) <> -Infinity or
11012        floatExpr(-Infinity) + floatExpr( minusInf) <> -Infinity or
11013        floatExpr(-Infinity) + floatExpr(  -1.0E37) <> -Infinity or
11014        floatExpr(-Infinity) + floatExpr( minusBig) <> -Infinity or
11015        floatExpr(-Infinity) + floatExpr(  -1000.0) <> -Infinity or
11016        floatExpr(-Infinity) + floatExpr(     -0.0) <> -Infinity or
11017        floatExpr(-Infinity) + floatExpr(minusZero) <> -Infinity or
11018        floatExpr(-Infinity) + floatExpr(      0.0) <> -Infinity or
11019        floatExpr(-Infinity) + floatExpr(   1000.0) <> -Infinity or
11020        floatExpr(-Infinity) + floatExpr(   1.0E37) <> -Infinity or
11021        floatExpr(-Infinity) - floatExpr(  -1.0E37) <> -Infinity or
11022        floatExpr(-Infinity) - floatExpr( minusBig) <> -Infinity or
11023        floatExpr(-Infinity) - floatExpr(  -1000.0) <> -Infinity or
11024        floatExpr(-Infinity) - floatExpr(     -0.0) <> -Infinity or
11025        floatExpr(-Infinity) - floatExpr(minusZero) <> -Infinity or
11026        floatExpr(-Infinity) - floatExpr(      0.0) <> -Infinity or
11027        floatExpr(-Infinity) - floatExpr(   1000.0) <> -Infinity or
11028        floatExpr(-Infinity) - floatExpr(   1.0E37) <> -Infinity or
11029        floatExpr(-Infinity) - floatExpr( Infinity) <> -Infinity or
11030        floatExpr( minusInf) + floatExpr(-Infinity) <> -Infinity or
11031        floatExpr( minusInf) + floatExpr( minusInf) <> -Infinity or
11032        floatExpr( minusInf) + floatExpr(  -1.0E37) <> -Infinity or
11033        floatExpr( minusInf) + floatExpr( minusBig) <> -Infinity or
11034        floatExpr( minusInf) + floatExpr(  -1000.0) <> -Infinity or
11035        floatExpr( minusInf) + floatExpr(     -0.0) <> -Infinity or
11036        floatExpr( minusInf) + floatExpr(minusZero) <> -Infinity or
11037        floatExpr( minusInf) + floatExpr(      0.0) <> -Infinity or
11038        floatExpr( minusInf) + floatExpr(   1000.0) <> -Infinity or
11039        floatExpr( minusInf) + floatExpr(   1.0E37) <> -Infinity or
11040        floatExpr( minusInf) - floatExpr(  -1.0E37) <> -Infinity or
11041        floatExpr( minusInf) - floatExpr( minusBig) <> -Infinity or
11042        floatExpr( minusInf) - floatExpr(  -1000.0) <> -Infinity or
11043        floatExpr( minusInf) - floatExpr(     -0.0) <> -Infinity or
11044        floatExpr( minusInf) - floatExpr(minusZero) <> -Infinity or
11045        floatExpr( minusInf) - floatExpr(      0.0) <> -Infinity or
11046        floatExpr( minusInf) - floatExpr(   1000.0) <> -Infinity or
11047        floatExpr( minusInf) - floatExpr(   1.0E37) <> -Infinity or
11048        floatExpr( minusInf) - floatExpr( Infinity) <> -Infinity then
11049      writeln(" ***** Adding a finite value to -Infinity does not return -Infinity.");
11050      okay := FALSE;
11051    end if;
11052
11053    if              Infinity  *            -Infinity  <> -Infinity or
11054                    Infinity  *             minusInf  <> -Infinity or
11055                    Infinity  *              -1.0E37  <> -Infinity or
11056                    Infinity  *             minusBig  <> -Infinity or
11057                    Infinity  *              -1000.0  <> -Infinity or
11058                    Infinity  *                 -1.0  <> -Infinity or
11059                    Infinity  *             minusOne  <> -Infinity or
11060                    Infinity  *             -1.0E-37  <> -Infinity or
11061                    Infinity  *           minusSmall  <> -Infinity or
11062                    Infinity  *              1.0E-37  <>  Infinity or
11063                    Infinity  *                  1.0  <>  Infinity or
11064                    Infinity  *               1000.0  <>  Infinity or
11065                    Infinity  *               1.0E37  <>  Infinity or
11066                    Infinity  *             Infinity  <>  Infinity or
11067                   -Infinity  *             Infinity  <> -Infinity or
11068                    minusInf  *             Infinity  <> -Infinity or
11069                     -1.0E37  *             Infinity  <> -Infinity or
11070                    minusBig  *             Infinity  <> -Infinity or
11071                     -1000.0  *             Infinity  <> -Infinity or
11072                        -1.0  *             Infinity  <> -Infinity or
11073                    minusOne  *             Infinity  <> -Infinity or
11074                    -1.0E-37  *             Infinity  <> -Infinity or
11075                  minusSmall  *             Infinity  <> -Infinity or
11076                     1.0E-37  *             Infinity  <>  Infinity or
11077                         1.0  *             Infinity  <>  Infinity or
11078                      1000.0  *             Infinity  <>  Infinity or
11079                      1.0E37  *             Infinity  <>  Infinity or
11080                    Infinity  *             Infinity  <>  Infinity or
11081        floatExpr(  Infinity) *            -Infinity  <> -Infinity or
11082        floatExpr(  Infinity) *             minusInf  <> -Infinity or
11083        floatExpr(  Infinity) *              -1.0E37  <> -Infinity or
11084        floatExpr(  Infinity) *             minusBig  <> -Infinity or
11085        floatExpr(  Infinity) *              -1000.0  <> -Infinity or
11086        floatExpr(  Infinity) *                 -1.0  <> -Infinity or
11087        floatExpr(  Infinity) *             minusOne  <> -Infinity or
11088        floatExpr(  Infinity) *             -1.0E-37  <> -Infinity or
11089        floatExpr(  Infinity) *           minusSmall  <> -Infinity or
11090        floatExpr(  Infinity) *              1.0E-37  <>  Infinity or
11091        floatExpr(  Infinity) *                  1.0  <>  Infinity or
11092        floatExpr(  Infinity) *               1000.0  <>  Infinity or
11093        floatExpr(  Infinity) *               1.0E37  <>  Infinity or
11094        floatExpr(  Infinity) *             Infinity  <>  Infinity or
11095        floatExpr( -Infinity) *             Infinity  <> -Infinity or
11096        floatExpr(  minusInf) *             Infinity  <> -Infinity or
11097        floatExpr(   -1.0E37) *             Infinity  <> -Infinity or
11098        floatExpr(  minusBig) *             Infinity  <> -Infinity or
11099        floatExpr(   -1000.0) *             Infinity  <> -Infinity or
11100        floatExpr(      -1.0) *             Infinity  <> -Infinity or
11101        floatExpr(  minusOne) *             Infinity  <> -Infinity or
11102        floatExpr(  -1.0E-37) *             Infinity  <> -Infinity or
11103        floatExpr(minusSmall) *             Infinity  <> -Infinity or
11104        floatExpr(   1.0E-37) *             Infinity  <>  Infinity or
11105        floatExpr(       1.0) *             Infinity  <>  Infinity or
11106        floatExpr(    1000.0) *             Infinity  <>  Infinity or
11107        floatExpr(    1.0E37) *             Infinity  <>  Infinity or
11108        floatExpr(  Infinity) *             Infinity  <>  Infinity or
11109                    Infinity  * floatExpr( -Infinity) <> -Infinity or
11110                    Infinity  * floatExpr(  minusInf) <> -Infinity or
11111                    Infinity  * floatExpr(   -1.0E37) <> -Infinity or
11112                    Infinity  * floatExpr(  minusBig) <> -Infinity or
11113                    Infinity  * floatExpr(   -1000.0) <> -Infinity or
11114                    Infinity  * floatExpr(      -1.0) <> -Infinity or
11115                    Infinity  * floatExpr(  minusOne) <> -Infinity or
11116                    Infinity  * floatExpr(  -1.0E-37) <> -Infinity or
11117                    Infinity  * floatExpr(minusSmall) <> -Infinity or
11118                    Infinity  * floatExpr(   1.0E-37) <>  Infinity or
11119                    Infinity  * floatExpr(       1.0) <>  Infinity or
11120                    Infinity  * floatExpr(    1000.0) <>  Infinity or
11121                    Infinity  * floatExpr(    1.0E37) <>  Infinity or
11122                    Infinity  * floatExpr(  Infinity) <>  Infinity or
11123                   -Infinity  * floatExpr(  Infinity) <> -Infinity or
11124                    minusInf  * floatExpr(  Infinity) <> -Infinity or
11125                     -1.0E37  * floatExpr(  Infinity) <> -Infinity or
11126                    minusBig  * floatExpr(  Infinity) <> -Infinity or
11127                     -1000.0  * floatExpr(  Infinity) <> -Infinity or
11128                        -1.0  * floatExpr(  Infinity) <> -Infinity or
11129                    minusOne  * floatExpr(  Infinity) <> -Infinity or
11130                    -1.0E-37  * floatExpr(  Infinity) <> -Infinity or
11131                  minusSmall  * floatExpr(  Infinity) <> -Infinity or
11132                     1.0E-37  * floatExpr(  Infinity) <>  Infinity or
11133                         1.0  * floatExpr(  Infinity) <>  Infinity or
11134                      1000.0  * floatExpr(  Infinity) <>  Infinity or
11135                      1.0E37  * floatExpr(  Infinity) <>  Infinity or
11136                    Infinity  * floatExpr(  Infinity) <>  Infinity or
11137        floatExpr(  Infinity) * floatExpr( -Infinity) <> -Infinity or
11138        floatExpr(  Infinity) * floatExpr(  minusInf) <> -Infinity or
11139        floatExpr(  Infinity) * floatExpr(   -1.0E37) <> -Infinity or
11140        floatExpr(  Infinity) * floatExpr(  minusBig) <> -Infinity or
11141        floatExpr(  Infinity) * floatExpr(   -1000.0) <> -Infinity or
11142        floatExpr(  Infinity) * floatExpr(      -1.0) <> -Infinity or
11143        floatExpr(  Infinity) * floatExpr(  minusOne) <> -Infinity or
11144        floatExpr(  Infinity) * floatExpr(  -1.0E-37) <> -Infinity or
11145        floatExpr(  Infinity) * floatExpr(minusSmall) <> -Infinity or
11146        floatExpr(  Infinity) * floatExpr(   1.0E-37) <>  Infinity or
11147        floatExpr(  Infinity) * floatExpr(       1.0) <>  Infinity or
11148        floatExpr(  Infinity) * floatExpr(    1000.0) <>  Infinity or
11149        floatExpr(  Infinity) * floatExpr(    1.0E37) <>  Infinity or
11150        floatExpr(  Infinity) * floatExpr(  Infinity) <>  Infinity or
11151        floatExpr( -Infinity) * floatExpr(  Infinity) <> -Infinity or
11152        floatExpr(  minusInf) * floatExpr(  Infinity) <> -Infinity or
11153        floatExpr(   -1.0E37) * floatExpr(  Infinity) <> -Infinity or
11154        floatExpr(  minusBig) * floatExpr(  Infinity) <> -Infinity or
11155        floatExpr(   -1000.0) * floatExpr(  Infinity) <> -Infinity or
11156        floatExpr(      -1.0) * floatExpr(  Infinity) <> -Infinity or
11157        floatExpr(  minusOne) * floatExpr(  Infinity) <> -Infinity or
11158        floatExpr(  -1.0E-37) * floatExpr(  Infinity) <> -Infinity or
11159        floatExpr(minusSmall) * floatExpr(  Infinity) <> -Infinity or
11160        floatExpr(   1.0E-37) * floatExpr(  Infinity) <>  Infinity or
11161        floatExpr(       1.0) * floatExpr(  Infinity) <>  Infinity or
11162        floatExpr(    1000.0) * floatExpr(  Infinity) <>  Infinity or
11163        floatExpr(    1.0E37) * floatExpr(  Infinity) <>  Infinity or
11164        floatExpr(  Infinity) * floatExpr(  Infinity) <>  Infinity then
11165      writeln(" ***** Infinity multiplied by any value except zero, is not Infinity.");
11166      okay := FALSE;
11167    end if;
11168
11169    if             -Infinity  *            -Infinity  <>  Infinity or
11170                   -Infinity  *             minusInf  <>  Infinity or
11171                   -Infinity  *              -1.0E37  <>  Infinity or
11172                   -Infinity  *             minusBig  <>  Infinity or
11173                   -Infinity  *              -1000.0  <>  Infinity or
11174                   -Infinity  *                 -1.0  <>  Infinity or
11175                   -Infinity  *             minusOne  <>  Infinity or
11176                   -Infinity  *             -1.0E-37  <>  Infinity or
11177                   -Infinity  *           minusSmall  <>  Infinity or
11178                   -Infinity  *              1.0E-37  <> -Infinity or
11179                   -Infinity  *                  1.0  <> -Infinity or
11180                   -Infinity  *               1000.0  <> -Infinity or
11181                   -Infinity  *               1.0E37  <> -Infinity or
11182                   -Infinity  *             Infinity  <> -Infinity or
11183                    minusInf  *            -Infinity  <>  Infinity or
11184                    minusInf  *             minusInf  <>  Infinity or
11185                    minusInf  *              -1.0E37  <>  Infinity or
11186                    minusInf  *             minusBig  <>  Infinity or
11187                    minusInf  *              -1000.0  <>  Infinity or
11188                    minusInf  *                 -1.0  <>  Infinity or
11189                    minusInf  *             minusOne  <>  Infinity or
11190                    minusInf  *             -1.0E-37  <>  Infinity or
11191                    minusInf  *           minusSmall  <>  Infinity or
11192                    minusInf  *              1.0E-37  <> -Infinity or
11193                    minusInf  *                  1.0  <> -Infinity or
11194                    minusInf  *               1000.0  <> -Infinity or
11195                    minusInf  *               1.0E37  <> -Infinity or
11196                    minusInf  *             Infinity  <> -Infinity or
11197                   -Infinity  *            -Infinity  <>  Infinity or
11198                    minusInf  *            -Infinity  <>  Infinity or
11199                     -1.0E37  *            -Infinity  <>  Infinity or
11200                    minusBig  *            -Infinity  <>  Infinity or
11201                     -1000.0  *            -Infinity  <>  Infinity or
11202                        -1.0  *            -Infinity  <>  Infinity or
11203                    minusOne  *            -Infinity  <>  Infinity or
11204                    -1.0E-37  *            -Infinity  <>  Infinity or
11205                  minusSmall  *            -Infinity  <>  Infinity or
11206                     1.0E-37  *            -Infinity  <> -Infinity or
11207                         1.0  *            -Infinity  <> -Infinity or
11208                      1000.0  *            -Infinity  <> -Infinity or
11209                      1.0E37  *            -Infinity  <> -Infinity or
11210                    Infinity  *            -Infinity  <> -Infinity or
11211                   -Infinity  *             minusInf  <>  Infinity or
11212                    minusInf  *             minusInf  <>  Infinity or
11213                     -1.0E37  *             minusInf  <>  Infinity or
11214                    minusBig  *             minusInf  <>  Infinity or
11215                     -1000.0  *             minusInf  <>  Infinity or
11216                        -1.0  *             minusInf  <>  Infinity or
11217                    minusOne  *             minusInf  <>  Infinity or
11218                    -1.0E-37  *             minusInf  <>  Infinity or
11219                  minusSmall  *             minusInf  <>  Infinity or
11220                     1.0E-37  *             minusInf  <> -Infinity or
11221                         1.0  *             minusInf  <> -Infinity or
11222                      1000.0  *             minusInf  <> -Infinity or
11223                      1.0E37  *             minusInf  <> -Infinity or
11224                    Infinity  *             minusInf  <> -Infinity or
11225        floatExpr( -Infinity) *            -Infinity  <>  Infinity or
11226        floatExpr( -Infinity) *             minusInf  <>  Infinity or
11227        floatExpr( -Infinity) *              -1.0E37  <>  Infinity or
11228        floatExpr( -Infinity) *             minusBig  <>  Infinity or
11229        floatExpr( -Infinity) *              -1000.0  <>  Infinity or
11230        floatExpr( -Infinity) *                 -1.0  <>  Infinity or
11231        floatExpr( -Infinity) *             minusOne  <>  Infinity or
11232        floatExpr( -Infinity) *             -1.0E-37  <>  Infinity or
11233        floatExpr( -Infinity) *           minusSmall  <>  Infinity or
11234        floatExpr( -Infinity) *              1.0E-37  <> -Infinity or
11235        floatExpr( -Infinity) *                  1.0  <> -Infinity or
11236        floatExpr( -Infinity) *               1000.0  <> -Infinity or
11237        floatExpr( -Infinity) *               1.0E37  <> -Infinity or
11238        floatExpr( -Infinity) *             Infinity  <> -Infinity or
11239        floatExpr(  minusInf) *            -Infinity  <>  Infinity or
11240        floatExpr(  minusInf) *             minusInf  <>  Infinity or
11241        floatExpr(  minusInf) *              -1.0E37  <>  Infinity or
11242        floatExpr(  minusInf) *             minusBig  <>  Infinity or
11243        floatExpr(  minusInf) *              -1000.0  <>  Infinity or
11244        floatExpr(  minusInf) *                 -1.0  <>  Infinity or
11245        floatExpr(  minusInf) *             minusOne  <>  Infinity or
11246        floatExpr(  minusInf) *             -1.0E-37  <>  Infinity or
11247        floatExpr(  minusInf) *           minusSmall  <>  Infinity or
11248        floatExpr(  minusInf) *              1.0E-37  <> -Infinity or
11249        floatExpr(  minusInf) *                  1.0  <> -Infinity or
11250        floatExpr(  minusInf) *               1000.0  <> -Infinity or
11251        floatExpr(  minusInf) *               1.0E37  <> -Infinity or
11252        floatExpr(  minusInf) *             Infinity  <> -Infinity or
11253        floatExpr( -Infinity) *            -Infinity  <>  Infinity or
11254        floatExpr(  minusInf) *            -Infinity  <>  Infinity or
11255        floatExpr(   -1.0E37) *            -Infinity  <>  Infinity or
11256        floatExpr(  minusBig) *            -Infinity  <>  Infinity or
11257        floatExpr(   -1000.0) *            -Infinity  <>  Infinity or
11258        floatExpr(      -1.0) *            -Infinity  <>  Infinity or
11259        floatExpr(  minusOne) *            -Infinity  <>  Infinity or
11260        floatExpr(  -1.0E-37) *            -Infinity  <>  Infinity or
11261        floatExpr(minusSmall) *            -Infinity  <>  Infinity or
11262        floatExpr(   1.0E-37) *            -Infinity  <> -Infinity or
11263        floatExpr(       1.0) *            -Infinity  <> -Infinity or
11264        floatExpr(    1000.0) *            -Infinity  <> -Infinity or
11265        floatExpr(    1.0E37) *            -Infinity  <> -Infinity or
11266        floatExpr(  Infinity) *            -Infinity  <> -Infinity or
11267        floatExpr( -Infinity) *             minusInf  <>  Infinity or
11268        floatExpr(  minusInf) *             minusInf  <>  Infinity or
11269        floatExpr(   -1.0E37) *             minusInf  <>  Infinity or
11270        floatExpr(  minusBig) *             minusInf  <>  Infinity or
11271        floatExpr(   -1000.0) *             minusInf  <>  Infinity or
11272        floatExpr(      -1.0) *             minusInf  <>  Infinity or
11273        floatExpr(  minusOne) *             minusInf  <>  Infinity or
11274        floatExpr(  -1.0E-37) *             minusInf  <>  Infinity or
11275        floatExpr(minusSmall) *             minusInf  <>  Infinity or
11276        floatExpr(   1.0E-37) *             minusInf  <> -Infinity or
11277        floatExpr(       1.0) *             minusInf  <> -Infinity or
11278        floatExpr(    1000.0) *             minusInf  <> -Infinity or
11279        floatExpr(    1.0E37) *             minusInf  <> -Infinity or
11280        floatExpr(  Infinity) *             minusInf  <> -Infinity or
11281                   -Infinity  * floatExpr( -Infinity) <>  Infinity or
11282                   -Infinity  * floatExpr(  minusInf) <>  Infinity or
11283                   -Infinity  * floatExpr(   -1.0E37) <>  Infinity or
11284                   -Infinity  * floatExpr(  minusBig) <>  Infinity or
11285                   -Infinity  * floatExpr(   -1000.0) <>  Infinity or
11286                   -Infinity  * floatExpr(      -1.0) <>  Infinity or
11287                   -Infinity  * floatExpr(  minusOne) <>  Infinity or
11288                   -Infinity  * floatExpr(  -1.0E-37) <>  Infinity or
11289                   -Infinity  * floatExpr(minusSmall) <>  Infinity or
11290                   -Infinity  * floatExpr(   1.0E-37) <> -Infinity or
11291                   -Infinity  * floatExpr(       1.0) <> -Infinity or
11292                   -Infinity  * floatExpr(    1000.0) <> -Infinity or
11293                   -Infinity  * floatExpr(    1.0E37) <> -Infinity or
11294                   -Infinity  * floatExpr(  Infinity) <> -Infinity or
11295                    minusInf  * floatExpr( -Infinity) <>  Infinity or
11296                    minusInf  * floatExpr(  minusInf) <>  Infinity or
11297                    minusInf  * floatExpr(   -1.0E37) <>  Infinity or
11298                    minusInf  * floatExpr(  minusBig) <>  Infinity or
11299                    minusInf  * floatExpr(   -1000.0) <>  Infinity or
11300                    minusInf  * floatExpr(      -1.0) <>  Infinity or
11301                    minusInf  * floatExpr(  minusOne) <>  Infinity or
11302                    minusInf  * floatExpr(  -1.0E-37) <>  Infinity or
11303                    minusInf  * floatExpr(minusSmall) <>  Infinity or
11304                    minusInf  * floatExpr(   1.0E-37) <> -Infinity or
11305                    minusInf  * floatExpr(       1.0) <> -Infinity or
11306                    minusInf  * floatExpr(    1000.0) <> -Infinity or
11307                    minusInf  * floatExpr(    1.0E37) <> -Infinity or
11308                    minusInf  * floatExpr(  Infinity) <> -Infinity or
11309                   -Infinity  * floatExpr( -Infinity) <>  Infinity or
11310                    minusInf  * floatExpr( -Infinity) <>  Infinity or
11311                     -1.0E37  * floatExpr( -Infinity) <>  Infinity or
11312                    minusBig  * floatExpr( -Infinity) <>  Infinity or
11313                     -1000.0  * floatExpr( -Infinity) <>  Infinity or
11314                        -1.0  * floatExpr( -Infinity) <>  Infinity or
11315                    minusOne  * floatExpr( -Infinity) <>  Infinity or
11316                    -1.0E-37  * floatExpr( -Infinity) <>  Infinity or
11317                  minusSmall  * floatExpr( -Infinity) <>  Infinity or
11318                     1.0E-37  * floatExpr( -Infinity) <> -Infinity or
11319                         1.0  * floatExpr( -Infinity) <> -Infinity or
11320                      1000.0  * floatExpr( -Infinity) <> -Infinity or
11321                      1.0E37  * floatExpr( -Infinity) <> -Infinity or
11322                    Infinity  * floatExpr( -Infinity) <> -Infinity or
11323                   -Infinity  * floatExpr(  minusInf) <>  Infinity or
11324                    minusInf  * floatExpr(  minusInf) <>  Infinity or
11325                     -1.0E37  * floatExpr(  minusInf) <>  Infinity or
11326                    minusBig  * floatExpr(  minusInf) <>  Infinity or
11327                     -1000.0  * floatExpr(  minusInf) <>  Infinity or
11328                        -1.0  * floatExpr(  minusInf) <>  Infinity or
11329                    minusOne  * floatExpr(  minusInf) <>  Infinity or
11330                    -1.0E-37  * floatExpr(  minusInf) <>  Infinity or
11331                  minusSmall  * floatExpr(  minusInf) <>  Infinity or
11332                     1.0E-37  * floatExpr(  minusInf) <> -Infinity or
11333                         1.0  * floatExpr(  minusInf) <> -Infinity or
11334                      1000.0  * floatExpr(  minusInf) <> -Infinity or
11335                      1.0E37  * floatExpr(  minusInf) <> -Infinity or
11336                    Infinity  * floatExpr(  minusInf) <> -Infinity or
11337        floatExpr( -Infinity) * floatExpr( -Infinity) <>  Infinity or
11338        floatExpr( -Infinity) * floatExpr(  minusInf) <>  Infinity or
11339        floatExpr( -Infinity) * floatExpr(   -1.0E37) <>  Infinity or
11340        floatExpr( -Infinity) * floatExpr(  minusBig) <>  Infinity or
11341        floatExpr( -Infinity) * floatExpr(   -1000.0) <>  Infinity or
11342        floatExpr( -Infinity) * floatExpr(      -1.0) <>  Infinity or
11343        floatExpr( -Infinity) * floatExpr(  minusOne) <>  Infinity or
11344        floatExpr( -Infinity) * floatExpr(  -1.0E-37) <>  Infinity or
11345        floatExpr( -Infinity) * floatExpr(minusSmall) <>  Infinity or
11346        floatExpr( -Infinity) * floatExpr(   1.0E-37) <> -Infinity or
11347        floatExpr( -Infinity) * floatExpr(       1.0) <> -Infinity or
11348        floatExpr( -Infinity) * floatExpr(    1000.0) <> -Infinity or
11349        floatExpr( -Infinity) * floatExpr(    1.0E37) <> -Infinity or
11350        floatExpr( -Infinity) * floatExpr(  Infinity) <> -Infinity or
11351        floatExpr(  minusInf) * floatExpr( -Infinity) <>  Infinity or
11352        floatExpr(  minusInf) * floatExpr(  minusInf) <>  Infinity or
11353        floatExpr(  minusInf) * floatExpr(   -1.0E37) <>  Infinity or
11354        floatExpr(  minusInf) * floatExpr(  minusBig) <>  Infinity or
11355        floatExpr(  minusInf) * floatExpr(   -1000.0) <>  Infinity or
11356        floatExpr(  minusInf) * floatExpr(      -1.0) <>  Infinity or
11357        floatExpr(  minusInf) * floatExpr(  minusOne) <>  Infinity or
11358        floatExpr(  minusInf) * floatExpr(  -1.0E-37) <>  Infinity or
11359        floatExpr(  minusInf) * floatExpr(minusSmall) <>  Infinity or
11360        floatExpr(  minusInf) * floatExpr(   1.0E-37) <> -Infinity or
11361        floatExpr(  minusInf) * floatExpr(       1.0) <> -Infinity or
11362        floatExpr(  minusInf) * floatExpr(    1000.0) <> -Infinity or
11363        floatExpr(  minusInf) * floatExpr(    1.0E37) <> -Infinity or
11364        floatExpr(  minusInf) * floatExpr(  Infinity) <> -Infinity or
11365        floatExpr( -Infinity) * floatExpr( -Infinity) <>  Infinity or
11366        floatExpr(  minusInf) * floatExpr( -Infinity) <>  Infinity or
11367        floatExpr(   -1.0E37) * floatExpr( -Infinity) <>  Infinity or
11368        floatExpr(  minusBig) * floatExpr( -Infinity) <>  Infinity or
11369        floatExpr(   -1000.0) * floatExpr( -Infinity) <>  Infinity or
11370        floatExpr(      -1.0) * floatExpr( -Infinity) <>  Infinity or
11371        floatExpr(  minusOne) * floatExpr( -Infinity) <>  Infinity or
11372        floatExpr(  -1.0E-37) * floatExpr( -Infinity) <>  Infinity or
11373        floatExpr(minusSmall) * floatExpr( -Infinity) <>  Infinity or
11374        floatExpr(   1.0E-37) * floatExpr( -Infinity) <> -Infinity or
11375        floatExpr(       1.0) * floatExpr( -Infinity) <> -Infinity or
11376        floatExpr(    1000.0) * floatExpr( -Infinity) <> -Infinity or
11377        floatExpr(    1.0E37) * floatExpr( -Infinity) <> -Infinity or
11378        floatExpr(  Infinity) * floatExpr( -Infinity) <> -Infinity or
11379        floatExpr( -Infinity) * floatExpr(  minusInf) <>  Infinity or
11380        floatExpr(  minusInf) * floatExpr(  minusInf) <>  Infinity or
11381        floatExpr(   -1.0E37) * floatExpr(  minusInf) <>  Infinity or
11382        floatExpr(  minusBig) * floatExpr(  minusInf) <>  Infinity or
11383        floatExpr(   -1000.0) * floatExpr(  minusInf) <>  Infinity or
11384        floatExpr(      -1.0) * floatExpr(  minusInf) <>  Infinity or
11385        floatExpr(  minusOne) * floatExpr(  minusInf) <>  Infinity or
11386        floatExpr(  -1.0E-37) * floatExpr(  minusInf) <>  Infinity or
11387        floatExpr(minusSmall) * floatExpr(  minusInf) <>  Infinity or
11388        floatExpr(   1.0E-37) * floatExpr(  minusInf) <> -Infinity or
11389        floatExpr(       1.0) * floatExpr(  minusInf) <> -Infinity or
11390        floatExpr(    1000.0) * floatExpr(  minusInf) <> -Infinity or
11391        floatExpr(    1.0E37) * floatExpr(  minusInf) <> -Infinity or
11392        floatExpr(  Infinity) * floatExpr(  minusInf) <> -Infinity then
11393      writeln(" ***** -Infinity multiplied by any value except zero, is not Infinity.");
11394      okay := FALSE;
11395    end if;
11396
11397    if            abs(-Infinity)  <> Infinity or
11398                  abs( minusInf)  <> Infinity or
11399                  abs( Infinity)  <> Infinity or
11400        floatExpr(abs(-Infinity)) <> Infinity or
11401        floatExpr(abs( minusInf)) <> Infinity or
11402        floatExpr(abs( Infinity)) <> Infinity then
11403      writeln(" ***** Absolute value of Infinity does not work correct.");
11404      okay := FALSE;
11405    end if;
11406
11407    if okay then
11408      writeln("Infinity works correct for selected values.");
11409    else
11410      writeln(" ***** Infinity does not work correct.");
11411    end if;
11412  end func;
11413
11414
11415const proc: check_nan is func
11416  local
11417    const float: minusZero is -0.0;
11418    const float: minusInf is -Infinity;
11419    const float: minusBig is -1.0E37;
11420    var float: nanVar1 is NaN;
11421    var float: nanVar2 is NaN;
11422    var float: floatVar is 0.0;
11423    var boolean: divAssignOkay is TRUE;
11424    var boolean: okay is TRUE;
11425  begin
11426    if  isNaN(-Infinity) or
11427        isNaN(  -1.0E37) or
11428        isNaN(  -1000.0) or
11429        isNaN(     -0.0) or
11430        isNaN(      0.0) or
11431        isNaN(   1000.0) or
11432        isNaN(   1.0E37) or
11433        isNaN( Infinity) or
11434        isNaN(floatExpr(-Infinity)) or
11435        isNaN(floatExpr(  -1.0E37)) or
11436        isNaN(floatExpr(  -1000.0)) or
11437        isNaN(floatExpr(     -0.0)) or
11438        isNaN(floatExpr(      0.0)) or
11439        isNaN(floatExpr(   1000.0)) or
11440        isNaN(floatExpr(   1.0E37)) or
11441        isNaN(floatExpr( Infinity)) then
11442      writeln(" ***** isNaN(normalValue) does not work correct.");
11443      okay := FALSE;
11444    end if;
11445
11446    if  not isNaN(NaN) or
11447        not isNaN(floatExpr(NaN)) then
11448      writeln(" ***** isNaN(NaN) does not work correct.");
11449      okay := FALSE;
11450    end if;
11451
11452    if  not isNaN(               -0.0  /                -0.0)  or
11453        not isNaN(               -0.0  /           minusZero)  or
11454        not isNaN(               -0.0  /                 0.0)  or
11455        not isNaN(          minusZero  /                -0.0)  or
11456        not isNaN(          minusZero  /           minusZero)  or
11457        not isNaN(          minusZero  /                 0.0)  or
11458        not isNaN(                0.0  /                -0.0)  or
11459        not isNaN(                0.0  /           minusZero)  or
11460        not isNaN(                0.0  /                 0.0)  or
11461        not isNaN(floatExpr(     -0.0) /                -0.0)  or
11462        not isNaN(floatExpr(     -0.0) /           minusZero)  or
11463        not isNaN(floatExpr(     -0.0) /                 0.0)  or
11464        not isNaN(floatExpr(minusZero) /                -0.0)  or
11465        not isNaN(floatExpr(minusZero) /           minusZero)  or
11466        not isNaN(floatExpr(minusZero) /                 0.0)  or
11467        not isNaN(floatExpr(      0.0) /                -0.0)  or
11468        not isNaN(floatExpr(      0.0) /           minusZero)  or
11469        not isNaN(floatExpr(      0.0) /                 0.0)  or
11470        not isNaN(               -0.0  / floatExpr(     -0.0)) or
11471        not isNaN(               -0.0  / floatExpr(minusZero)) or
11472        not isNaN(               -0.0  / floatExpr(      0.0)) or
11473        not isNaN(          minusZero  / floatExpr(     -0.0)) or
11474        not isNaN(          minusZero  / floatExpr(minusZero)) or
11475        not isNaN(          minusZero  / floatExpr(      0.0)) or
11476        not isNaN(                0.0  / floatExpr(     -0.0)) or
11477        not isNaN(                0.0  / floatExpr(minusZero)) or
11478        not isNaN(                0.0  / floatExpr(      0.0)) or
11479        not isNaN(floatExpr(     -0.0) / floatExpr(     -0.0)) or
11480        not isNaN(floatExpr(     -0.0) / floatExpr(minusZero)) or
11481        not isNaN(floatExpr(     -0.0) / floatExpr(      0.0)) or
11482        not isNaN(floatExpr(minusZero) / floatExpr(     -0.0)) or
11483        not isNaN(floatExpr(minusZero) / floatExpr(minusZero)) or
11484        not isNaN(floatExpr(minusZero) / floatExpr(      0.0)) or
11485        not isNaN(floatExpr(      0.0) / floatExpr(     -0.0)) or
11486        not isNaN(floatExpr(      0.0) / floatExpr(minusZero)) or
11487        not isNaN(floatExpr(      0.0) / floatExpr(      0.0)) then
11488      writeln(" ***** 0.0 / 0.0 does not return NaN.");
11489      okay := FALSE;
11490    end if;
11491
11492    if  not isNaN(          -Infinity  /           -Infinity)  or
11493        not isNaN(          -Infinity  /            minusInf)  or
11494        not isNaN(          -Infinity  /            Infinity)  or
11495        not isNaN(           minusInf  /           -Infinity)  or
11496        not isNaN(           minusInf  /            minusInf)  or
11497        not isNaN(           minusInf  /            Infinity)  or
11498        not isNaN(           Infinity  /           -Infinity)  or
11499        not isNaN(           Infinity  /            minusInf)  or
11500        not isNaN(           Infinity  /            Infinity)  or
11501        not isNaN(floatExpr(-Infinity) /           -Infinity)  or
11502        not isNaN(floatExpr(-Infinity) /            minusInf)  or
11503        not isNaN(floatExpr(-Infinity) /            Infinity)  or
11504        not isNaN(floatExpr( minusInf) /           -Infinity)  or
11505        not isNaN(floatExpr( minusInf) /            minusInf)  or
11506        not isNaN(floatExpr( minusInf) /            Infinity)  or
11507        not isNaN(floatExpr( Infinity) /           -Infinity)  or
11508        not isNaN(floatExpr( Infinity) /            minusInf)  or
11509        not isNaN(floatExpr( Infinity) /            Infinity)  or
11510        not isNaN(          -Infinity  / floatExpr(-Infinity)) or
11511        not isNaN(          -Infinity  / floatExpr( minusInf)) or
11512        not isNaN(          -Infinity  / floatExpr( Infinity)) or
11513        not isNaN(           minusInf  / floatExpr(-Infinity)) or
11514        not isNaN(           minusInf  / floatExpr( minusInf)) or
11515        not isNaN(           minusInf  / floatExpr( Infinity)) or
11516        not isNaN(           Infinity  / floatExpr(-Infinity)) or
11517        not isNaN(           Infinity  / floatExpr( minusInf)) or
11518        not isNaN(           Infinity  / floatExpr( Infinity)) or
11519        not isNaN(floatExpr(-Infinity) / floatExpr(-Infinity)) or
11520        not isNaN(floatExpr(-Infinity) / floatExpr( minusInf)) or
11521        not isNaN(floatExpr(-Infinity) / floatExpr( Infinity)) or
11522        not isNaN(floatExpr( minusInf) / floatExpr(-Infinity)) or
11523        not isNaN(floatExpr( minusInf) / floatExpr( minusInf)) or
11524        not isNaN(floatExpr( minusInf) / floatExpr( Infinity)) or
11525        not isNaN(floatExpr( Infinity) / floatExpr(-Infinity)) or
11526        not isNaN(floatExpr( Infinity) / floatExpr( minusInf)) or
11527        not isNaN(floatExpr( Infinity) / floatExpr( Infinity)) then
11528      writeln(" ***** Infinity / Infinity does not return NaN.");
11529      okay := FALSE;
11530    end if;
11531
11532    if  not isNaN(               -0.0  *           -Infinity)  or
11533        not isNaN(               -0.0  *            minusInf)  or
11534        not isNaN(               -0.0  *            Infinity)  or
11535        not isNaN(          minusZero  *           -Infinity)  or
11536        not isNaN(          minusZero  *            minusInf)  or
11537        not isNaN(          minusZero  *            Infinity)  or
11538        not isNaN(                0.0  *           -Infinity)  or
11539        not isNaN(                0.0  *            minusInf)  or
11540        not isNaN(                0.0  *            Infinity)  or
11541        not isNaN(floatExpr(     -0.0) *           -Infinity)  or
11542        not isNaN(floatExpr(     -0.0) *            minusInf)  or
11543        not isNaN(floatExpr(     -0.0) *            Infinity)  or
11544        not isNaN(floatExpr(minusZero) *           -Infinity)  or
11545        not isNaN(floatExpr(minusZero) *            minusInf)  or
11546        not isNaN(floatExpr(minusZero) *            Infinity)  or
11547        not isNaN(floatExpr(      0.0) *           -Infinity)  or
11548        not isNaN(floatExpr(      0.0) *            minusInf)  or
11549        not isNaN(floatExpr(      0.0) *            Infinity)  or
11550        not isNaN(               -0.0  * floatExpr(-Infinity)) or
11551        not isNaN(               -0.0  * floatExpr( minusInf)) or
11552        not isNaN(               -0.0  * floatExpr( Infinity)) or
11553        not isNaN(          minusZero  * floatExpr(-Infinity)) or
11554        not isNaN(          minusZero  * floatExpr( minusInf)) or
11555        not isNaN(          minusZero  * floatExpr( Infinity)) or
11556        not isNaN(                0.0  * floatExpr(-Infinity)) or
11557        not isNaN(                0.0  * floatExpr( minusInf)) or
11558        not isNaN(                0.0  * floatExpr( Infinity)) or
11559        not isNaN(floatExpr(     -0.0) * floatExpr(-Infinity)) or
11560        not isNaN(floatExpr(     -0.0) * floatExpr( minusInf)) or
11561        not isNaN(floatExpr(     -0.0) * floatExpr( Infinity)) or
11562        not isNaN(floatExpr(minusZero) * floatExpr(-Infinity)) or
11563        not isNaN(floatExpr(minusZero) * floatExpr( minusInf)) or
11564        not isNaN(floatExpr(minusZero) * floatExpr( Infinity)) or
11565        not isNaN(floatExpr(      0.0) * floatExpr(-Infinity)) or
11566        not isNaN(floatExpr(      0.0) * floatExpr( minusInf)) or
11567        not isNaN(floatExpr(      0.0) * floatExpr( Infinity)) then
11568      writeln(" ***** 0.0 * Infinity does not return NaN.");
11569      okay := FALSE;
11570    end if;
11571
11572    if  not isNaN(          -Infinity  *                -0.0)  or
11573        not isNaN(           minusInf  *                -0.0)  or
11574        not isNaN(           Infinity  *                -0.0)  or
11575        not isNaN(          -Infinity  *           minusZero)  or
11576        not isNaN(           minusInf  *           minusZero)  or
11577        not isNaN(           Infinity  *           minusZero)  or
11578        not isNaN(          -Infinity  *                 0.0)  or
11579        not isNaN(           minusInf  *                 0.0)  or
11580        not isNaN(           Infinity  *                 0.0)  or
11581        not isNaN(floatExpr(-Infinity) *                -0.0)  or
11582        not isNaN(floatExpr( minusInf) *                -0.0)  or
11583        not isNaN(floatExpr( Infinity) *                -0.0)  or
11584        not isNaN(floatExpr(-Infinity) *           minusZero)  or
11585        not isNaN(floatExpr( minusInf) *           minusZero)  or
11586        not isNaN(floatExpr( Infinity) *           minusZero)  or
11587        not isNaN(floatExpr(-Infinity) *                 0.0)  or
11588        not isNaN(floatExpr( minusInf) *                 0.0)  or
11589        not isNaN(floatExpr( Infinity) *                 0.0)  or
11590        not isNaN(          -Infinity  * floatExpr(     -0.0)) or
11591        not isNaN(           minusInf  * floatExpr(     -0.0)) or
11592        not isNaN(           Infinity  * floatExpr(     -0.0)) or
11593        not isNaN(          -Infinity  * floatExpr(minusZero)) or
11594        not isNaN(           minusInf  * floatExpr(minusZero)) or
11595        not isNaN(           Infinity  * floatExpr(minusZero)) or
11596        not isNaN(          -Infinity  * floatExpr(      0.0)) or
11597        not isNaN(           minusInf  * floatExpr(      0.0)) or
11598        not isNaN(           Infinity  * floatExpr(      0.0)) or
11599        not isNaN(floatExpr(-Infinity) * floatExpr(     -0.0)) or
11600        not isNaN(floatExpr( minusInf) * floatExpr(     -0.0)) or
11601        not isNaN(floatExpr( Infinity) * floatExpr(     -0.0)) or
11602        not isNaN(floatExpr(-Infinity) * floatExpr(minusZero)) or
11603        not isNaN(floatExpr( minusInf) * floatExpr(minusZero)) or
11604        not isNaN(floatExpr( Infinity) * floatExpr(minusZero)) or
11605        not isNaN(floatExpr(-Infinity) * floatExpr(      0.0)) or
11606        not isNaN(floatExpr( minusInf) * floatExpr(      0.0)) or
11607        not isNaN(floatExpr( Infinity) * floatExpr(      0.0)) then
11608      writeln(" ***** Infinity * 0.0 does not return NaN.");
11609      okay := FALSE;
11610    end if;
11611
11612    if  not isNaN(          -Infinity  -           -Infinity)  or
11613        not isNaN(          -Infinity  -            minusInf)  or
11614        not isNaN(          -Infinity  +            Infinity)  or
11615        not isNaN(           minusInf  -           -Infinity)  or
11616        not isNaN(           minusInf  -            minusInf)  or
11617        not isNaN(           minusInf  +            Infinity)  or
11618        not isNaN(           Infinity  +           -Infinity)  or
11619        not isNaN(           Infinity  +            minusInf)  or
11620        not isNaN(           Infinity  -            Infinity)  or
11621        not isNaN(floatExpr(-Infinity) -           -Infinity)  or
11622        not isNaN(floatExpr(-Infinity) -            minusInf)  or
11623        not isNaN(floatExpr(-Infinity) +            Infinity)  or
11624        not isNaN(floatExpr( minusInf) -           -Infinity)  or
11625        not isNaN(floatExpr( minusInf) -            minusInf)  or
11626        not isNaN(floatExpr( minusInf) +            Infinity)  or
11627        not isNaN(floatExpr( Infinity) +           -Infinity)  or
11628        not isNaN(floatExpr( Infinity) +            minusInf)  or
11629        not isNaN(floatExpr( Infinity) -            Infinity)  or
11630        not isNaN(          -Infinity  - floatExpr(-Infinity)) or
11631        not isNaN(          -Infinity  - floatExpr( minusInf)) or
11632        not isNaN(          -Infinity  + floatExpr( Infinity)) or
11633        not isNaN(           minusInf  - floatExpr(-Infinity)) or
11634        not isNaN(           minusInf  - floatExpr( minusInf)) or
11635        not isNaN(           minusInf  + floatExpr( Infinity)) or
11636        not isNaN(           Infinity  + floatExpr(-Infinity)) or
11637        not isNaN(           Infinity  + floatExpr( minusInf)) or
11638        not isNaN(           Infinity  - floatExpr( Infinity)) or
11639        not isNaN(floatExpr(-Infinity) - floatExpr(-Infinity)) or
11640        not isNaN(floatExpr(-Infinity) - floatExpr( minusInf)) or
11641        not isNaN(floatExpr(-Infinity) + floatExpr( Infinity)) or
11642        not isNaN(floatExpr( minusInf) - floatExpr(-Infinity)) or
11643        not isNaN(floatExpr( minusInf) - floatExpr( minusInf)) or
11644        not isNaN(floatExpr( minusInf) + floatExpr( Infinity)) or
11645        not isNaN(floatExpr( Infinity) + floatExpr(-Infinity)) or
11646        not isNaN(floatExpr( Infinity) + floatExpr( minusInf)) or
11647        not isNaN(floatExpr( Infinity) - floatExpr( Infinity)) then
11648      writeln(" ***** Infinity - Infinity does not return NaN.");
11649      okay := FALSE;
11650    end if;
11651
11652    if  not isNaN(asin(-Infinity))   or
11653        not isNaN(asin(-1.1))        or
11654        not isNaN(asin(1.1))         or
11655        not isNaN(asin(Infinity))    or
11656        not isNaN(asin(NaN))         then
11657      writeln(" ***** NaN is not returned as error value for asin().");
11658      okay := FALSE;
11659    end if;
11660
11661    if  not isNaN(acos(-Infinity))   or
11662        not isNaN(acos(-1.1))        or
11663        not isNaN(acos(1.1))         or
11664        not isNaN(acos(Infinity))    or
11665        not isNaN(acos(NaN))         then
11666      writeln(" ***** NaN is not returned as error value for acos().");
11667      okay := FALSE;
11668    end if;
11669
11670    if  not isNaN(sqrt(-Infinity))   or
11671        not isNaN(sqrt(-1.0))        or
11672        not isNaN(sqrt(-FLOAT_MIN))  or
11673        not isNaN(sqrt(NaN))         then
11674      writeln(" ***** NaN is not returned as error value for sqrt().");
11675      okay := FALSE;
11676    end if;
11677
11678    if  not isNaN(log(-Infinity))    or
11679        not isNaN(log(-1.0))         or
11680        not isNaN(log(NaN))          then
11681      writeln(" ***** NaN is not returned as error value for log().");
11682      okay := FALSE;
11683    end if;
11684
11685    if  not isNaN(log1p(-Infinity))  or
11686        not isNaN(log1p(-2.0))       or
11687        not isNaN(log1p(NaN))        then
11688      writeln(" ***** NaN is not returned as error value for log1p().");
11689      okay := FALSE;
11690    end if;
11691
11692    if  not isNaN(log2(-Infinity))   or
11693        not isNaN(log2(-1.0))        or
11694        not isNaN(log2(NaN))         then
11695      writeln(" ***** NaN is not returned as error value for log2().");
11696      okay := FALSE;
11697    end if;
11698
11699    if  not isNaN(log10(-Infinity))  or
11700        not isNaN(log10(-1.0))       or
11701        not isNaN(log10(NaN))        then
11702      writeln(" ***** NaN is not returned as error value for log10().");
11703      okay := FALSE;
11704    end if;
11705
11706    if  not isNaN(          NaN  +           -Infinity)  or
11707        not isNaN(          NaN  +            minusInf)  or
11708        not isNaN(          NaN  +             -1.0E37)  or
11709        not isNaN(          NaN  +            minusBig)  or
11710        not isNaN(          NaN  +             -1000.0)  or
11711        not isNaN(          NaN  +                -0.0)  or
11712        not isNaN(          NaN  +           minusZero)  or
11713        not isNaN(          NaN  +                 0.0)  or
11714        not isNaN(          NaN  +              1000.0)  or
11715        not isNaN(          NaN  +              1.0E37)  or
11716        not isNaN(          NaN  +            Infinity)  or
11717        not isNaN(          NaN  +                 NaN)  or
11718        not isNaN(floatExpr(NaN) +           -Infinity)  or
11719        not isNaN(floatExpr(NaN) +            minusInf)  or
11720        not isNaN(floatExpr(NaN) +             -1.0E37)  or
11721        not isNaN(floatExpr(NaN) +            minusBig)  or
11722        not isNaN(floatExpr(NaN) +             -1000.0)  or
11723        not isNaN(floatExpr(NaN) +                -0.0)  or
11724        not isNaN(floatExpr(NaN) +           minusZero)  or
11725        not isNaN(floatExpr(NaN) +                 0.0)  or
11726        not isNaN(floatExpr(NaN) +              1000.0)  or
11727        not isNaN(floatExpr(NaN) +              1.0E37)  or
11728        not isNaN(floatExpr(NaN) +            Infinity)  or
11729        not isNaN(floatExpr(NaN) +                 NaN)  or
11730        not isNaN(          NaN  + floatExpr(-Infinity)) or
11731        not isNaN(          NaN  + floatExpr( minusInf)) or
11732        not isNaN(          NaN  + floatExpr(  -1.0E37)) or
11733        not isNaN(          NaN  + floatExpr( minusBig)) or
11734        not isNaN(          NaN  + floatExpr(  -1000.0)) or
11735        not isNaN(          NaN  + floatExpr(     -0.0)) or
11736        not isNaN(          NaN  + floatExpr(minusZero)) or
11737        not isNaN(          NaN  + floatExpr(      0.0)) or
11738        not isNaN(          NaN  + floatExpr(   1000.0)) or
11739        not isNaN(          NaN  + floatExpr(   1.0E37)) or
11740        not isNaN(          NaN  + floatExpr( Infinity)) or
11741        not isNaN(          NaN  + floatExpr(      NaN)) or
11742        not isNaN(floatExpr(NaN) + floatExpr(-Infinity)) or
11743        not isNaN(floatExpr(NaN) + floatExpr( minusInf)) or
11744        not isNaN(floatExpr(NaN) + floatExpr(  -1.0E37)) or
11745        not isNaN(floatExpr(NaN) + floatExpr( minusBig)) or
11746        not isNaN(floatExpr(NaN) + floatExpr(  -1000.0)) or
11747        not isNaN(floatExpr(NaN) + floatExpr(     -0.0)) or
11748        not isNaN(floatExpr(NaN) + floatExpr(minusZero)) or
11749        not isNaN(floatExpr(NaN) + floatExpr(      0.0)) or
11750        not isNaN(floatExpr(NaN) + floatExpr(   1000.0)) or
11751        not isNaN(floatExpr(NaN) + floatExpr(   1.0E37)) or
11752        not isNaN(floatExpr(NaN) + floatExpr( Infinity)) or
11753        not isNaN(floatExpr(NaN) + floatExpr(      NaN)) or
11754        not isNaN(          -Infinity  +           NaN)  or
11755        not isNaN(           minusInf  +           NaN)  or
11756        not isNaN(            -1.0E37  +           NaN)  or
11757        not isNaN(           minusBig  +           NaN)  or
11758        not isNaN(            -1000.0  +           NaN)  or
11759        not isNaN(               -0.0  +           NaN)  or
11760        not isNaN(          minusZero  +           NaN)  or
11761        not isNaN(                0.0  +           NaN)  or
11762        not isNaN(             1000.0  +           NaN)  or
11763        not isNaN(             1.0E37  +           NaN)  or
11764        not isNaN(           Infinity  +           NaN)  or
11765        not isNaN(                NaN  +           NaN)  or
11766        not isNaN(          -Infinity  + floatExpr(NaN)) or
11767        not isNaN(           minusInf  + floatExpr(NaN)) or
11768        not isNaN(            -1.0E37  + floatExpr(NaN)) or
11769        not isNaN(           minusBig  + floatExpr(NaN)) or
11770        not isNaN(            -1000.0  + floatExpr(NaN)) or
11771        not isNaN(               -0.0  + floatExpr(NaN)) or
11772        not isNaN(          minusZero  + floatExpr(NaN)) or
11773        not isNaN(                0.0  + floatExpr(NaN)) or
11774        not isNaN(             1000.0  + floatExpr(NaN)) or
11775        not isNaN(             1.0E37  + floatExpr(NaN)) or
11776        not isNaN(           Infinity  + floatExpr(NaN)) or
11777        not isNaN(                NaN  + floatExpr(NaN)) or
11778        not isNaN(floatExpr(-Infinity) +           NaN)  or
11779        not isNaN(floatExpr( minusInf) +           NaN)  or
11780        not isNaN(floatExpr(  -1.0E37) +           NaN)  or
11781        not isNaN(floatExpr( minusBig) +           NaN)  or
11782        not isNaN(floatExpr(  -1000.0) +           NaN)  or
11783        not isNaN(floatExpr(     -0.0) +           NaN)  or
11784        not isNaN(floatExpr(minusZero) +           NaN)  or
11785        not isNaN(floatExpr(      0.0) +           NaN)  or
11786        not isNaN(floatExpr(   1000.0) +           NaN)  or
11787        not isNaN(floatExpr(   1.0E37) +           NaN)  or
11788        not isNaN(floatExpr( Infinity) +           NaN)  or
11789        not isNaN(floatExpr(      NaN) +           NaN)  or
11790        not isNaN(floatExpr(-Infinity) + floatExpr(NaN)) or
11791        not isNaN(floatExpr( minusInf) + floatExpr(NaN)) or
11792        not isNaN(floatExpr(  -1.0E37) + floatExpr(NaN)) or
11793        not isNaN(floatExpr( minusBig) + floatExpr(NaN)) or
11794        not isNaN(floatExpr(  -1000.0) + floatExpr(NaN)) or
11795        not isNaN(floatExpr(     -0.0) + floatExpr(NaN)) or
11796        not isNaN(floatExpr(minusZero) + floatExpr(NaN)) or
11797        not isNaN(floatExpr(      0.0) + floatExpr(NaN)) or
11798        not isNaN(floatExpr(   1000.0) + floatExpr(NaN)) or
11799        not isNaN(floatExpr(   1.0E37) + floatExpr(NaN)) or
11800        not isNaN(floatExpr( Infinity) + floatExpr(NaN)) or
11801        not isNaN(floatExpr(      NaN) + floatExpr(NaN)) then
11802      writeln(" ***** Adding a value to NaN does not return NaN.");
11803      okay := FALSE;
11804    end if;
11805
11806    if  not isNaN(          NaN  -           -Infinity)  or
11807        not isNaN(          NaN  -            minusInf)  or
11808        not isNaN(          NaN  -             -1.0E37)  or
11809        not isNaN(          NaN  -            minusBig)  or
11810        not isNaN(          NaN  -             -1000.0)  or
11811        not isNaN(          NaN  -                -0.0)  or
11812        not isNaN(          NaN  -           minusZero)  or
11813        not isNaN(          NaN  -                 0.0)  or
11814        not isNaN(          NaN  -              1000.0)  or
11815        not isNaN(          NaN  -              1.0E37)  or
11816        not isNaN(          NaN  -            Infinity)  or
11817        not isNaN(          NaN  -                 NaN)  or
11818        not isNaN(floatExpr(NaN) -           -Infinity)  or
11819        not isNaN(floatExpr(NaN) -            minusInf)  or
11820        not isNaN(floatExpr(NaN) -             -1.0E37)  or
11821        not isNaN(floatExpr(NaN) -            minusBig)  or
11822        not isNaN(floatExpr(NaN) -             -1000.0)  or
11823        not isNaN(floatExpr(NaN) -                -0.0)  or
11824        not isNaN(floatExpr(NaN) -           minusZero)  or
11825        not isNaN(floatExpr(NaN) -                 0.0)  or
11826        not isNaN(floatExpr(NaN) -              1000.0)  or
11827        not isNaN(floatExpr(NaN) -              1.0E37)  or
11828        not isNaN(floatExpr(NaN) -            Infinity)  or
11829        not isNaN(floatExpr(NaN) -                 NaN)  or
11830        not isNaN(          NaN  - floatExpr(-Infinity)) or
11831        not isNaN(          NaN  - floatExpr( minusInf)) or
11832        not isNaN(          NaN  - floatExpr(  -1.0E37)) or
11833        not isNaN(          NaN  - floatExpr( minusBig)) or
11834        not isNaN(          NaN  - floatExpr(  -1000.0)) or
11835        not isNaN(          NaN  - floatExpr(     -0.0)) or
11836        not isNaN(          NaN  - floatExpr(minusZero)) or
11837        not isNaN(          NaN  - floatExpr(      0.0)) or
11838        not isNaN(          NaN  - floatExpr(   1000.0)) or
11839        not isNaN(          NaN  - floatExpr(   1.0E37)) or
11840        not isNaN(          NaN  - floatExpr( Infinity)) or
11841        not isNaN(          NaN  - floatExpr(      NaN)) or
11842        not isNaN(floatExpr(NaN) - floatExpr(-Infinity)) or
11843        not isNaN(floatExpr(NaN) - floatExpr( minusInf)) or
11844        not isNaN(floatExpr(NaN) - floatExpr(  -1.0E37)) or
11845        not isNaN(floatExpr(NaN) - floatExpr( minusBig)) or
11846        not isNaN(floatExpr(NaN) - floatExpr(  -1000.0)) or
11847        not isNaN(floatExpr(NaN) - floatExpr(     -0.0)) or
11848        not isNaN(floatExpr(NaN) - floatExpr(minusZero)) or
11849        not isNaN(floatExpr(NaN) - floatExpr(      0.0)) or
11850        not isNaN(floatExpr(NaN) - floatExpr(   1000.0)) or
11851        not isNaN(floatExpr(NaN) - floatExpr(   1.0E37)) or
11852        not isNaN(floatExpr(NaN) - floatExpr( Infinity)) or
11853        not isNaN(floatExpr(NaN) - floatExpr(      NaN)) or
11854        not isNaN(          -Infinity  -           NaN)  or
11855        not isNaN(           minusInf  -           NaN)  or
11856        not isNaN(            -1.0E37  -           NaN)  or
11857        not isNaN(           minusBig  -           NaN)  or
11858        not isNaN(            -1000.0  -           NaN)  or
11859        not isNaN(               -0.0  -           NaN)  or
11860        not isNaN(          minusZero  -           NaN)  or
11861        not isNaN(                0.0  -           NaN)  or
11862        not isNaN(             1000.0  -           NaN)  or
11863        not isNaN(             1.0E37  -           NaN)  or
11864        not isNaN(           Infinity  -           NaN)  or
11865        not isNaN(                NaN  -           NaN)  or
11866        not isNaN(          -Infinity  - floatExpr(NaN)) or
11867        not isNaN(           minusInf  - floatExpr(NaN)) or
11868        not isNaN(            -1.0E37  - floatExpr(NaN)) or
11869        not isNaN(           minusBig  - floatExpr(NaN)) or
11870        not isNaN(            -1000.0  - floatExpr(NaN)) or
11871        not isNaN(               -0.0  - floatExpr(NaN)) or
11872        not isNaN(          minusZero  - floatExpr(NaN)) or
11873        not isNaN(                0.0  - floatExpr(NaN)) or
11874        not isNaN(             1000.0  - floatExpr(NaN)) or
11875        not isNaN(             1.0E37  - floatExpr(NaN)) or
11876        not isNaN(           Infinity  - floatExpr(NaN)) or
11877        not isNaN(                NaN  - floatExpr(NaN)) or
11878        not isNaN(floatExpr(-Infinity) -           NaN)  or
11879        not isNaN(floatExpr( minusInf) -           NaN)  or
11880        not isNaN(floatExpr(  -1.0E37) -           NaN)  or
11881        not isNaN(floatExpr( minusBig) -           NaN)  or
11882        not isNaN(floatExpr(  -1000.0) -           NaN)  or
11883        not isNaN(floatExpr(     -0.0) -           NaN)  or
11884        not isNaN(floatExpr(minusZero) -           NaN)  or
11885        not isNaN(floatExpr(      0.0) -           NaN)  or
11886        not isNaN(floatExpr(   1000.0) -           NaN)  or
11887        not isNaN(floatExpr(   1.0E37) -           NaN)  or
11888        not isNaN(floatExpr( Infinity) -           NaN)  or
11889        not isNaN(floatExpr(      NaN) -           NaN)  or
11890        not isNaN(floatExpr(-Infinity) - floatExpr(NaN)) or
11891        not isNaN(floatExpr( minusInf) - floatExpr(NaN)) or
11892        not isNaN(floatExpr(  -1.0E37) - floatExpr(NaN)) or
11893        not isNaN(floatExpr( minusBig) - floatExpr(NaN)) or
11894        not isNaN(floatExpr(  -1000.0) - floatExpr(NaN)) or
11895        not isNaN(floatExpr(     -0.0) - floatExpr(NaN)) or
11896        not isNaN(floatExpr(minusZero) - floatExpr(NaN)) or
11897        not isNaN(floatExpr(      0.0) - floatExpr(NaN)) or
11898        not isNaN(floatExpr(   1000.0) - floatExpr(NaN)) or
11899        not isNaN(floatExpr(   1.0E37) - floatExpr(NaN)) or
11900        not isNaN(floatExpr( Infinity) - floatExpr(NaN)) or
11901        not isNaN(floatExpr(      NaN) - floatExpr(NaN)) then
11902      writeln(" ***** Subtracting from NaN or subtracting NaN does not return NaN.");
11903      okay := FALSE;
11904    end if;
11905
11906    if  not isNaN(          NaN  *           -Infinity)  or
11907        not isNaN(          NaN  *            minusInf)  or
11908        not isNaN(          NaN  *             -1.0E37)  or
11909        not isNaN(          NaN  *            minusBig)  or
11910        not isNaN(          NaN  *             -1000.0)  or
11911        not isNaN(          NaN  *                -0.0)  or
11912        not isNaN(          NaN  *           minusZero)  or
11913        not isNaN(          NaN  *                 0.0)  or
11914        not isNaN(          NaN  *              1000.0)  or
11915        not isNaN(          NaN  *              1.0E37)  or
11916        not isNaN(          NaN  *            Infinity)  or
11917        not isNaN(          NaN  *                 NaN)  or
11918        not isNaN(floatExpr(NaN) *           -Infinity)  or
11919        not isNaN(floatExpr(NaN) *            minusInf)  or
11920        not isNaN(floatExpr(NaN) *             -1.0E37)  or
11921        not isNaN(floatExpr(NaN) *            minusBig)  or
11922        not isNaN(floatExpr(NaN) *             -1000.0)  or
11923        not isNaN(floatExpr(NaN) *                -0.0)  or
11924        not isNaN(floatExpr(NaN) *           minusZero)  or
11925        not isNaN(floatExpr(NaN) *                 0.0)  or
11926        not isNaN(floatExpr(NaN) *              1000.0)  or
11927        not isNaN(floatExpr(NaN) *              1.0E37)  or
11928        not isNaN(floatExpr(NaN) *            Infinity)  or
11929        not isNaN(floatExpr(NaN) *                 NaN)  or
11930        not isNaN(          NaN  * floatExpr(-Infinity)) or
11931        not isNaN(          NaN  * floatExpr( minusInf)) or
11932        not isNaN(          NaN  * floatExpr(  -1.0E37)) or
11933        not isNaN(          NaN  * floatExpr( minusBig)) or
11934        not isNaN(          NaN  * floatExpr(  -1000.0)) or
11935        not isNaN(          NaN  * floatExpr(     -0.0)) or
11936        not isNaN(          NaN  * floatExpr(minusZero)) or
11937        not isNaN(          NaN  * floatExpr(      0.0)) or
11938        not isNaN(          NaN  * floatExpr(   1000.0)) or
11939        not isNaN(          NaN  * floatExpr(   1.0E37)) or
11940        not isNaN(          NaN  * floatExpr( Infinity)) or
11941        not isNaN(          NaN  * floatExpr(      NaN)) or
11942        not isNaN(floatExpr(NaN) * floatExpr(-Infinity)) or
11943        not isNaN(floatExpr(NaN) * floatExpr( minusInf)) or
11944        not isNaN(floatExpr(NaN) * floatExpr(  -1.0E37)) or
11945        not isNaN(floatExpr(NaN) * floatExpr( minusBig)) or
11946        not isNaN(floatExpr(NaN) * floatExpr(  -1000.0)) or
11947        not isNaN(floatExpr(NaN) * floatExpr(     -0.0)) or
11948        not isNaN(floatExpr(NaN) * floatExpr(minusZero)) or
11949        not isNaN(floatExpr(NaN) * floatExpr(      0.0)) or
11950        not isNaN(floatExpr(NaN) * floatExpr(   1000.0)) or
11951        not isNaN(floatExpr(NaN) * floatExpr(   1.0E37)) or
11952        not isNaN(floatExpr(NaN) * floatExpr( Infinity)) or
11953        not isNaN(floatExpr(NaN) * floatExpr(      NaN)) or
11954        not isNaN(          -Infinity  *           NaN)  or
11955        not isNaN(           minusInf  *           NaN)  or
11956        not isNaN(            -1.0E37  *           NaN)  or
11957        not isNaN(           minusBig  *           NaN)  or
11958        not isNaN(            -1000.0  *           NaN)  or
11959        not isNaN(               -0.0  *           NaN)  or
11960        not isNaN(          minusZero  *           NaN)  or
11961        not isNaN(                0.0  *           NaN)  or
11962        not isNaN(             1000.0  *           NaN)  or
11963        not isNaN(             1.0E37  *           NaN)  or
11964        not isNaN(           Infinity  *           NaN)  or
11965        not isNaN(                NaN  *           NaN)  or
11966        not isNaN(          -Infinity  * floatExpr(NaN)) or
11967        not isNaN(           minusInf  * floatExpr(NaN)) or
11968        not isNaN(            -1.0E37  * floatExpr(NaN)) or
11969        not isNaN(           minusBig  * floatExpr(NaN)) or
11970        not isNaN(            -1000.0  * floatExpr(NaN)) or
11971        not isNaN(               -0.0  * floatExpr(NaN)) or
11972        not isNaN(          minusZero  * floatExpr(NaN)) or
11973        not isNaN(                0.0  * floatExpr(NaN)) or
11974        not isNaN(             1000.0  * floatExpr(NaN)) or
11975        not isNaN(             1.0E37  * floatExpr(NaN)) or
11976        not isNaN(           Infinity  * floatExpr(NaN)) or
11977        not isNaN(                NaN  * floatExpr(NaN)) or
11978        not isNaN(floatExpr(-Infinity) *           NaN)  or
11979        not isNaN(floatExpr( minusInf) *           NaN)  or
11980        not isNaN(floatExpr(  -1.0E37) *           NaN)  or
11981        not isNaN(floatExpr( minusBig) *           NaN)  or
11982        not isNaN(floatExpr(  -1000.0) *           NaN)  or
11983        not isNaN(floatExpr(     -0.0) *           NaN)  or
11984        not isNaN(floatExpr(minusZero) *           NaN)  or
11985        not isNaN(floatExpr(      0.0) *           NaN)  or
11986        not isNaN(floatExpr(   1000.0) *           NaN)  or
11987        not isNaN(floatExpr(   1.0E37) *           NaN)  or
11988        not isNaN(floatExpr( Infinity) *           NaN)  or
11989        not isNaN(floatExpr(      NaN) *           NaN)  or
11990        not isNaN(floatExpr(-Infinity) * floatExpr(NaN)) or
11991        not isNaN(floatExpr( minusInf) * floatExpr(NaN)) or
11992        not isNaN(floatExpr(  -1.0E37) * floatExpr(NaN)) or
11993        not isNaN(floatExpr( minusBig) * floatExpr(NaN)) or
11994        not isNaN(floatExpr(  -1000.0) * floatExpr(NaN)) or
11995        not isNaN(floatExpr(     -0.0) * floatExpr(NaN)) or
11996        not isNaN(floatExpr(minusZero) * floatExpr(NaN)) or
11997        not isNaN(floatExpr(      0.0) * floatExpr(NaN)) or
11998        not isNaN(floatExpr(   1000.0) * floatExpr(NaN)) or
11999        not isNaN(floatExpr(   1.0E37) * floatExpr(NaN)) or
12000        not isNaN(floatExpr( Infinity) * floatExpr(NaN)) or
12001        not isNaN(floatExpr(      NaN) * floatExpr(NaN)) then
12002      writeln(" ***** Multiplying by NaN does not return NaN.");
12003      okay := FALSE;
12004    end if;
12005
12006    if  not isNaN(          NaN  /           -Infinity)  or
12007        not isNaN(          NaN  /            minusInf)  or
12008        not isNaN(          NaN  /             -1.0E37)  or
12009        not isNaN(          NaN  /            minusBig)  or
12010        not isNaN(          NaN  /             -1000.0)  or
12011        not isNaN(          NaN  /                -0.0)  or
12012        not isNaN(          NaN  /           minusZero)  or
12013        not isNaN(          NaN  /                 0.0)  or
12014        not isNaN(          NaN  /              1000.0)  or
12015        not isNaN(          NaN  /              1.0E37)  or
12016        not isNaN(          NaN  /            Infinity)  or
12017        not isNaN(          NaN  /                 NaN)  or
12018        not isNaN(floatExpr(NaN) /           -Infinity)  or
12019        not isNaN(floatExpr(NaN) /            minusInf)  or
12020        not isNaN(floatExpr(NaN) /             -1.0E37)  or
12021        not isNaN(floatExpr(NaN) /            minusBig)  or
12022        not isNaN(floatExpr(NaN) /             -1000.0)  or
12023        not isNaN(floatExpr(NaN) /                -0.0)  or
12024        not isNaN(floatExpr(NaN) /           minusZero)  or
12025        not isNaN(floatExpr(NaN) /                 0.0)  or
12026        not isNaN(floatExpr(NaN) /              1000.0)  or
12027        not isNaN(floatExpr(NaN) /              1.0E37)  or
12028        not isNaN(floatExpr(NaN) /            Infinity)  or
12029        not isNaN(floatExpr(NaN) /                 NaN)  or
12030        not isNaN(          NaN  / floatExpr(-Infinity)) or
12031        not isNaN(          NaN  / floatExpr( minusInf)) or
12032        not isNaN(          NaN  / floatExpr(  -1.0E37)) or
12033        not isNaN(          NaN  / floatExpr( minusBig)) or
12034        not isNaN(          NaN  / floatExpr(  -1000.0)) or
12035        not isNaN(          NaN  / floatExpr(     -0.0)) or
12036        not isNaN(          NaN  / floatExpr(minusZero)) or
12037        not isNaN(          NaN  / floatExpr(      0.0)) or
12038        not isNaN(          NaN  / floatExpr(   1000.0)) or
12039        not isNaN(          NaN  / floatExpr(   1.0E37)) or
12040        not isNaN(          NaN  / floatExpr( Infinity)) or
12041        not isNaN(          NaN  / floatExpr(      NaN)) or
12042        not isNaN(floatExpr(NaN) / floatExpr(-Infinity)) or
12043        not isNaN(floatExpr(NaN) / floatExpr( minusInf)) or
12044        not isNaN(floatExpr(NaN) / floatExpr(  -1.0E37)) or
12045        not isNaN(floatExpr(NaN) / floatExpr( minusBig)) or
12046        not isNaN(floatExpr(NaN) / floatExpr(  -1000.0)) or
12047        not isNaN(floatExpr(NaN) / floatExpr(     -0.0)) or
12048        not isNaN(floatExpr(NaN) / floatExpr(minusZero)) or
12049        not isNaN(floatExpr(NaN) / floatExpr(      0.0)) or
12050        not isNaN(floatExpr(NaN) / floatExpr(   1000.0)) or
12051        not isNaN(floatExpr(NaN) / floatExpr(   1.0E37)) or
12052        not isNaN(floatExpr(NaN) / floatExpr( Infinity)) or
12053        not isNaN(floatExpr(NaN) / floatExpr(      NaN)) then
12054      writeln(" ***** Dividing NaN does not return NaN.");
12055      okay := FALSE;
12056    end if;
12057
12058    if  not isNaN(          -Infinity  /           NaN)  or
12059        not isNaN(           minusInf  /           NaN)  or
12060        not isNaN(            -1.0E37  /           NaN)  or
12061        not isNaN(           minusBig  /           NaN)  or
12062        not isNaN(            -1000.0  /           NaN)  or
12063        not isNaN(               -0.0  /           NaN)  or
12064        not isNaN(          minusZero  /           NaN)  or
12065        not isNaN(                0.0  /           NaN)  or
12066        not isNaN(             1000.0  /           NaN)  or
12067        not isNaN(             1.0E37  /           NaN)  or
12068        not isNaN(           Infinity  /           NaN)  or
12069        not isNaN(                NaN  /           NaN)  or
12070        not isNaN(          -Infinity  / floatExpr(NaN)) or
12071        not isNaN(           minusInf  / floatExpr(NaN)) or
12072        not isNaN(            -1.0E37  / floatExpr(NaN)) or
12073        not isNaN(           minusBig  / floatExpr(NaN)) or
12074        not isNaN(            -1000.0  / floatExpr(NaN)) or
12075        not isNaN(               -0.0  / floatExpr(NaN)) or
12076        not isNaN(          minusZero  / floatExpr(NaN)) or
12077        not isNaN(                0.0  / floatExpr(NaN)) or
12078        not isNaN(             1000.0  / floatExpr(NaN)) or
12079        not isNaN(             1.0E37  / floatExpr(NaN)) or
12080        not isNaN(           Infinity  / floatExpr(NaN)) or
12081        not isNaN(                NaN  / floatExpr(NaN)) or
12082        not isNaN(floatExpr(-Infinity) /           NaN)  or
12083        not isNaN(floatExpr( minusInf) /           NaN)  or
12084        not isNaN(floatExpr(  -1.0E37) /           NaN)  or
12085        not isNaN(floatExpr( minusBig) /           NaN)  or
12086        not isNaN(floatExpr(  -1000.0) /           NaN)  or
12087        not isNaN(floatExpr(     -0.0) /           NaN)  or
12088        not isNaN(floatExpr(minusZero) /           NaN)  or
12089        not isNaN(floatExpr(      0.0) /           NaN)  or
12090        not isNaN(floatExpr(   1000.0) /           NaN)  or
12091        not isNaN(floatExpr(   1.0E37) /           NaN)  or
12092        not isNaN(floatExpr( Infinity) /           NaN)  or
12093        not isNaN(floatExpr(      NaN) /           NaN)  or
12094        not isNaN(floatExpr(-Infinity) / floatExpr(NaN)) or
12095        not isNaN(floatExpr( minusInf) / floatExpr(NaN)) or
12096        not isNaN(floatExpr(  -1.0E37) / floatExpr(NaN)) or
12097        not isNaN(floatExpr( minusBig) / floatExpr(NaN)) or
12098        not isNaN(floatExpr(  -1000.0) / floatExpr(NaN)) or
12099        not isNaN(floatExpr(     -0.0) / floatExpr(NaN)) or
12100        not isNaN(floatExpr(minusZero) / floatExpr(NaN)) or
12101        not isNaN(floatExpr(      0.0) / floatExpr(NaN)) or
12102        not isNaN(floatExpr(   1000.0) / floatExpr(NaN)) or
12103        not isNaN(floatExpr(   1.0E37) / floatExpr(NaN)) or
12104        not isNaN(floatExpr( Infinity) / floatExpr(NaN)) or
12105        not isNaN(floatExpr(      NaN) / floatExpr(NaN)) then
12106      writeln(" ***** Dividing by NaN does not return NaN.");
12107      okay := FALSE;
12108    end if;
12109
12110    floatVar :=           NaN;  floatVar /:=           -Infinity;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12111    floatVar :=           NaN;  floatVar /:=            minusInf;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12112    floatVar :=           NaN;  floatVar /:=             -1.0E37;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12113    floatVar :=           NaN;  floatVar /:=            minusBig;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12114    floatVar :=           NaN;  floatVar /:=             -1000.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12115    floatVar :=           NaN;  floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12116    floatVar :=           NaN;  floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12117    floatVar :=           NaN;  floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12118    floatVar :=           NaN;  floatVar /:=              1000.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12119    floatVar :=           NaN;  floatVar /:=              1.0E37;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12120    floatVar :=           NaN;  floatVar /:=            Infinity;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12121    floatVar :=           NaN;  floatVar /:=                 NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12122    floatVar := floatExpr(NaN); floatVar /:=           -Infinity;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12123    floatVar := floatExpr(NaN); floatVar /:=            minusInf;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12124    floatVar := floatExpr(NaN); floatVar /:=             -1.0E37;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12125    floatVar := floatExpr(NaN); floatVar /:=            minusBig;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12126    floatVar := floatExpr(NaN); floatVar /:=             -1000.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12127    floatVar := floatExpr(NaN); floatVar /:=                -0.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12128    floatVar := floatExpr(NaN); floatVar /:=           minusZero;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12129    floatVar := floatExpr(NaN); floatVar /:=                 0.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12130    floatVar := floatExpr(NaN); floatVar /:=              1000.0;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12131    floatVar := floatExpr(NaN); floatVar /:=              1.0E37;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12132    floatVar := floatExpr(NaN); floatVar /:=            Infinity;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12133    floatVar := floatExpr(NaN); floatVar /:=                 NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12134    floatVar :=           NaN;  floatVar /:= floatExpr(-Infinity); divAssignOkay := divAssignOkay and isNaN(floatVar);
12135    floatVar :=           NaN;  floatVar /:= floatExpr( minusInf); divAssignOkay := divAssignOkay and isNaN(floatVar);
12136    floatVar :=           NaN;  floatVar /:= floatExpr(  -1.0E37); divAssignOkay := divAssignOkay and isNaN(floatVar);
12137    floatVar :=           NaN;  floatVar /:= floatExpr( minusBig); divAssignOkay := divAssignOkay and isNaN(floatVar);
12138    floatVar :=           NaN;  floatVar /:= floatExpr(  -1000.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
12139    floatVar :=           NaN;  floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
12140    floatVar :=           NaN;  floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and isNaN(floatVar);
12141    floatVar :=           NaN;  floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
12142    floatVar :=           NaN;  floatVar /:= floatExpr(   1000.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
12143    floatVar :=           NaN;  floatVar /:= floatExpr(   1.0E37); divAssignOkay := divAssignOkay and isNaN(floatVar);
12144    floatVar :=           NaN;  floatVar /:= floatExpr( Infinity); divAssignOkay := divAssignOkay and isNaN(floatVar);
12145    floatVar :=           NaN;  floatVar /:= floatExpr(      NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12146    floatVar := floatExpr(NaN); floatVar /:= floatExpr(-Infinity); divAssignOkay := divAssignOkay and isNaN(floatVar);
12147    floatVar := floatExpr(NaN); floatVar /:= floatExpr( minusInf); divAssignOkay := divAssignOkay and isNaN(floatVar);
12148    floatVar := floatExpr(NaN); floatVar /:= floatExpr(  -1.0E37); divAssignOkay := divAssignOkay and isNaN(floatVar);
12149    floatVar := floatExpr(NaN); floatVar /:= floatExpr( minusBig); divAssignOkay := divAssignOkay and isNaN(floatVar);
12150    floatVar := floatExpr(NaN); floatVar /:= floatExpr(  -1000.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
12151    floatVar := floatExpr(NaN); floatVar /:= floatExpr(     -0.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
12152    floatVar := floatExpr(NaN); floatVar /:= floatExpr(minusZero); divAssignOkay := divAssignOkay and isNaN(floatVar);
12153    floatVar := floatExpr(NaN); floatVar /:= floatExpr(      0.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
12154    floatVar := floatExpr(NaN); floatVar /:= floatExpr(   1000.0); divAssignOkay := divAssignOkay and isNaN(floatVar);
12155    floatVar := floatExpr(NaN); floatVar /:= floatExpr(   1.0E37); divAssignOkay := divAssignOkay and isNaN(floatVar);
12156    floatVar := floatExpr(NaN); floatVar /:= floatExpr( Infinity); divAssignOkay := divAssignOkay and isNaN(floatVar);
12157    floatVar := floatExpr(NaN); floatVar /:= floatExpr(      NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12158    floatVar :=           -Infinity;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12159    floatVar :=            minusInf;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12160    floatVar :=             -1.0E37;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12161    floatVar :=            minusBig;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12162    floatVar :=             -1000.0;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12163    floatVar :=                -0.0;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12164    floatVar :=           minusZero;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12165    floatVar :=                 0.0;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12166    floatVar :=              1000.0;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12167    floatVar :=              1.0E37;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12168    floatVar :=            Infinity;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12169    floatVar :=                 NaN;  floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12170    floatVar :=           -Infinity;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12171    floatVar :=            minusInf;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12172    floatVar :=             -1.0E37;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12173    floatVar :=            minusBig;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12174    floatVar :=             -1000.0;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12175    floatVar :=                -0.0;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12176    floatVar :=           minusZero;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12177    floatVar :=                 0.0;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12178    floatVar :=              1000.0;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12179    floatVar :=              1.0E37;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12180    floatVar :=            Infinity;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12181    floatVar :=                 NaN;  floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12182    floatVar := floatExpr(-Infinity); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12183    floatVar := floatExpr( minusInf); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12184    floatVar := floatExpr(  -1.0E37); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12185    floatVar := floatExpr( minusBig); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12186    floatVar := floatExpr(  -1000.0); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12187    floatVar := floatExpr(     -0.0); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12188    floatVar := floatExpr(minusZero); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12189    floatVar := floatExpr(      0.0); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12190    floatVar := floatExpr(   1000.0); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12191    floatVar := floatExpr(   1.0E37); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12192    floatVar := floatExpr( Infinity); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12193    floatVar := floatExpr(      NaN); floatVar /:=           NaN;  divAssignOkay := divAssignOkay and isNaN(floatVar);
12194    floatVar := floatExpr(-Infinity); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12195    floatVar := floatExpr( minusInf); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12196    floatVar := floatExpr(  -1.0E37); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12197    floatVar := floatExpr( minusBig); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12198    floatVar := floatExpr(  -1000.0); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12199    floatVar := floatExpr(     -0.0); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12200    floatVar := floatExpr(minusZero); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12201    floatVar := floatExpr(      0.0); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12202    floatVar := floatExpr(   1000.0); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12203    floatVar := floatExpr(   1.0E37); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12204    floatVar := floatExpr( Infinity); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12205    floatVar := floatExpr(      NaN); floatVar /:= floatExpr(NaN); divAssignOkay := divAssignOkay and isNaN(floatVar);
12206    if not divAssignOkay then
12207      writeln(" ***** Assignment dividing NaN or dividing by NaN does not return NaN.");
12208      okay := FALSE;
12209    end if;
12210
12211    if                  NaN  =                 NaN  or
12212                        NaN  =           -Infinity  or
12213                        NaN  =                -1.0  or
12214                        NaN  =                -0.0  or
12215                        NaN  =                 0.0  or
12216                        NaN  =                 1.0  or
12217                        NaN  =            Infinity  or
12218                        NaN  =             nanVar1  or
12219                    nanVar1  =             nanVar1  or
12220                    nanVar1  =             nanVar2  or
12221        floatExpr(      NaN) =                 NaN  or
12222        floatExpr(      NaN) =           -Infinity  or
12223        floatExpr(      NaN) =                -1.0  or
12224        floatExpr(      NaN) =                -0.0  or
12225        floatExpr(      NaN) =                 0.0  or
12226        floatExpr(      NaN) =                 1.0  or
12227        floatExpr(      NaN) =            Infinity  or
12228        floatExpr(      NaN) =             nanVar1  or
12229        floatExpr(  nanVar1) =             nanVar1  or
12230        floatExpr(  nanVar1) =             nanVar2  or
12231                        NaN  = floatExpr(      NaN) or
12232                        NaN  = floatExpr(-Infinity) or
12233                        NaN  = floatExpr(     -1.0) or
12234                        NaN  = floatExpr(     -0.0) or
12235                        NaN  = floatExpr(      0.0) or
12236                        NaN  = floatExpr(      1.0) or
12237                        NaN  = floatExpr( Infinity) or
12238                        NaN  = floatExpr(  nanVar1) or
12239                    nanVar1  = floatExpr(  nanVar1) or
12240                    nanVar1  = floatExpr(  nanVar2) or
12241        floatExpr(      NaN) = floatExpr(      NaN) or
12242        floatExpr(      NaN) = floatExpr(-Infinity) or
12243        floatExpr(      NaN) = floatExpr(     -1.0) or
12244        floatExpr(      NaN) = floatExpr(     -0.0) or
12245        floatExpr(      NaN) = floatExpr(      0.0) or
12246        floatExpr(      NaN) = floatExpr(      1.0) or
12247        floatExpr(      NaN) = floatExpr( Infinity) or
12248        floatExpr(      NaN) = floatExpr(  nanVar1) or
12249        floatExpr(  nanVar1) = floatExpr(  nanVar1) or
12250        floatExpr(  nanVar1) = floatExpr(  nanVar2) or
12251                        NaN  =                 NaN  or
12252                  -Infinity  =                 NaN  or
12253                       -1.0  =                 NaN  or
12254                       -0.0  =                 NaN  or
12255                        0.0  =                 NaN  or
12256                        1.0  =                 NaN  or
12257                   Infinity  =                 NaN  or
12258                    nanVar1  =                 NaN  or
12259                    nanVar1  =             nanVar1  or
12260                    nanVar2  =             nanVar1  or
12261        floatExpr(      NaN) =                 NaN  or
12262        floatExpr(-Infinity) =                 NaN  or
12263        floatExpr(     -1.0) =                 NaN  or
12264        floatExpr(     -0.0) =                 NaN  or
12265        floatExpr(      0.0) =                 NaN  or
12266        floatExpr(      1.0) =                 NaN  or
12267        floatExpr( Infinity) =                 NaN  or
12268        floatExpr(  nanVar1) =                 NaN  or
12269        floatExpr(  nanVar1) =             nanVar1  or
12270        floatExpr(  nanVar2) =             nanVar1  or
12271                        NaN  = floatExpr(      NaN) or
12272                  -Infinity  = floatExpr(      NaN) or
12273                       -1.0  = floatExpr(      NaN) or
12274                       -0.0  = floatExpr(      NaN) or
12275                        0.0  = floatExpr(      NaN) or
12276                        1.0  = floatExpr(      NaN) or
12277                   Infinity  = floatExpr(      NaN) or
12278                    nanVar1  = floatExpr(      NaN) or
12279                    nanVar1  = floatExpr(  nanVar1) or
12280                    nanVar2  = floatExpr(  nanVar1) or
12281        floatExpr(      NaN) = floatExpr(      NaN) or
12282        floatExpr(-Infinity) = floatExpr(      NaN) or
12283        floatExpr(     -1.0) = floatExpr(      NaN) or
12284        floatExpr(     -0.0) = floatExpr(      NaN) or
12285        floatExpr(      0.0) = floatExpr(      NaN) or
12286        floatExpr(      1.0) = floatExpr(      NaN) or
12287        floatExpr( Infinity) = floatExpr(      NaN) or
12288        floatExpr(  nanVar1) = floatExpr(      NaN) or
12289        floatExpr(  nanVar1) = floatExpr(  nanVar1) or
12290        floatExpr(  nanVar2) = floatExpr(  nanVar1) then
12291      writeln(" ***** There are values that are equal to a NaN.");
12292      okay := FALSE;
12293    end if;
12294
12295    if  not                 NaN  <>                 NaN  or
12296        not                 NaN  <>           -Infinity  or
12297        not                 NaN  <>                -1.0  or
12298        not                 NaN  <>                -0.0  or
12299        not                 NaN  <>                 0.0  or
12300        not                 NaN  <>                 1.0  or
12301        not                 NaN  <>            Infinity  or
12302        not                 NaN  <>             nanVar1  or
12303        not             nanVar1  <>             nanVar1  or
12304        not             nanVar1  <>             nanVar2  or
12305        not floatExpr(      NaN) <>                 NaN  or
12306        not floatExpr(      NaN) <>           -Infinity  or
12307        not floatExpr(      NaN) <>                -1.0  or
12308        not floatExpr(      NaN) <>                -0.0  or
12309        not floatExpr(      NaN) <>                 0.0  or
12310        not floatExpr(      NaN) <>                 1.0  or
12311        not floatExpr(      NaN) <>            Infinity  or
12312        not floatExpr(      NaN) <>             nanVar1  or
12313        not floatExpr(  nanVar1) <>             nanVar1  or
12314        not floatExpr(  nanVar1) <>             nanVar2  or
12315        not                 NaN  <> floatExpr(      NaN) or
12316        not                 NaN  <> floatExpr(-Infinity) or
12317        not                 NaN  <> floatExpr(     -1.0) or
12318        not                 NaN  <> floatExpr(     -0.0) or
12319        not                 NaN  <> floatExpr(      0.0) or
12320        not                 NaN  <> floatExpr(      1.0) or
12321        not                 NaN  <> floatExpr( Infinity) or
12322        not                 NaN  <> floatExpr(  nanVar1) or
12323        not             nanVar1  <> floatExpr(  nanVar1) or
12324        not             nanVar1  <> floatExpr(  nanVar2) or
12325        not floatExpr(      NaN) <> floatExpr(      NaN) or
12326        not floatExpr(      NaN) <> floatExpr(-Infinity) or
12327        not floatExpr(      NaN) <> floatExpr(     -1.0) or
12328        not floatExpr(      NaN) <> floatExpr(     -0.0) or
12329        not floatExpr(      NaN) <> floatExpr(      0.0) or
12330        not floatExpr(      NaN) <> floatExpr(      1.0) or
12331        not floatExpr(      NaN) <> floatExpr( Infinity) or
12332        not floatExpr(      NaN) <> floatExpr(  nanVar1) or
12333        not floatExpr(  nanVar1) <> floatExpr(  nanVar1) or
12334        not floatExpr(  nanVar1) <> floatExpr(  nanVar2) or
12335        not                 NaN  <>                 NaN  or
12336        not           -Infinity  <>                 NaN  or
12337        not                -1.0  <>                 NaN  or
12338        not                -0.0  <>                 NaN  or
12339        not                 0.0  <>                 NaN  or
12340        not                 1.0  <>                 NaN  or
12341        not            Infinity  <>                 NaN  or
12342        not             nanVar1  <>                 NaN  or
12343        not             nanVar1  <>             nanVar1  or
12344        not             nanVar2  <>             nanVar1  or
12345        not floatExpr(      NaN) <>                 NaN  or
12346        not floatExpr(-Infinity) <>                 NaN  or
12347        not floatExpr(     -1.0) <>                 NaN  or
12348        not floatExpr(     -0.0) <>                 NaN  or
12349        not floatExpr(      0.0) <>                 NaN  or
12350        not floatExpr(      1.0) <>                 NaN  or
12351        not floatExpr( Infinity) <>                 NaN  or
12352        not floatExpr(  nanVar1) <>                 NaN  or
12353        not floatExpr(  nanVar1) <>             nanVar1  or
12354        not floatExpr(  nanVar2) <>             nanVar1  or
12355        not                 NaN  <> floatExpr(      NaN) or
12356        not           -Infinity  <> floatExpr(      NaN) or
12357        not                -1.0  <> floatExpr(      NaN) or
12358        not                -0.0  <> floatExpr(      NaN) or
12359        not                 0.0  <> floatExpr(      NaN) or
12360        not                 1.0  <> floatExpr(      NaN) or
12361        not            Infinity  <> floatExpr(      NaN) or
12362        not             nanVar1  <> floatExpr(      NaN) or
12363        not             nanVar1  <> floatExpr(  nanVar1) or
12364        not             nanVar2  <> floatExpr(  nanVar1) or
12365        not floatExpr(      NaN) <> floatExpr(      NaN) or
12366        not floatExpr(-Infinity) <> floatExpr(      NaN) or
12367        not floatExpr(     -1.0) <> floatExpr(      NaN) or
12368        not floatExpr(     -0.0) <> floatExpr(      NaN) or
12369        not floatExpr(      0.0) <> floatExpr(      NaN) or
12370        not floatExpr(      1.0) <> floatExpr(      NaN) or
12371        not floatExpr( Infinity) <> floatExpr(      NaN) or
12372        not floatExpr(  nanVar1) <> floatExpr(      NaN) or
12373        not floatExpr(  nanVar1) <> floatExpr(  nanVar1) or
12374        not floatExpr(  nanVar2) <> floatExpr(  nanVar1) then
12375      writeln(" ***** Comparing a NaN for not equal returns FALSE.");
12376      okay := FALSE;
12377    end if;
12378
12379    if                  NaN  <                 NaN  or
12380                        NaN  <           -Infinity  or
12381                        NaN  <                -1.0  or
12382                        NaN  <                -0.0  or
12383                        NaN  <                 0.0  or
12384                        NaN  <                 1.0  or
12385                        NaN  <            Infinity  or
12386                        NaN  <             nanVar1  or
12387                    nanVar1  <             nanVar1  or
12388                    nanVar1  <             nanVar2  or
12389        floatExpr(      NaN) <                 NaN  or
12390        floatExpr(      NaN) <           -Infinity  or
12391        floatExpr(      NaN) <                -1.0  or
12392        floatExpr(      NaN) <                -0.0  or
12393        floatExpr(      NaN) <                 0.0  or
12394        floatExpr(      NaN) <                 1.0  or
12395        floatExpr(      NaN) <            Infinity  or
12396        floatExpr(      NaN) <             nanVar1  or
12397        floatExpr(  nanVar1) <             nanVar1  or
12398        floatExpr(  nanVar1) <             nanVar2  or
12399                        NaN  < floatExpr(      NaN) or
12400                        NaN  < floatExpr(-Infinity) or
12401                        NaN  < floatExpr(     -1.0) or
12402                        NaN  < floatExpr(     -0.0) or
12403                        NaN  < floatExpr(      0.0) or
12404                        NaN  < floatExpr(      1.0) or
12405                        NaN  < floatExpr( Infinity) or
12406                        NaN  < floatExpr(  nanVar1) or
12407                    nanVar1  < floatExpr(  nanVar1) or
12408                    nanVar1  < floatExpr(  nanVar2) or
12409        floatExpr(      NaN) < floatExpr(      NaN) or
12410        floatExpr(      NaN) < floatExpr(-Infinity) or
12411        floatExpr(      NaN) < floatExpr(     -1.0) or
12412        floatExpr(      NaN) < floatExpr(     -0.0) or
12413        floatExpr(      NaN) < floatExpr(      0.0) or
12414        floatExpr(      NaN) < floatExpr(      1.0) or
12415        floatExpr(      NaN) < floatExpr( Infinity) or
12416        floatExpr(      NaN) < floatExpr(  nanVar1) or
12417        floatExpr(  nanVar1) < floatExpr(  nanVar1) or
12418        floatExpr(  nanVar1) < floatExpr(  nanVar2) or
12419                        NaN  <                 NaN  or
12420                  -Infinity  <                 NaN  or
12421                       -1.0  <                 NaN  or
12422                       -0.0  <                 NaN  or
12423                        0.0  <                 NaN  or
12424                        1.0  <                 NaN  or
12425                   Infinity  <                 NaN  or
12426                    nanVar1  <                 NaN  or
12427                    nanVar1  <             nanVar1  or
12428                    nanVar2  <             nanVar1  or
12429        floatExpr(      NaN) <                 NaN  or
12430        floatExpr(-Infinity) <                 NaN  or
12431        floatExpr(     -1.0) <                 NaN  or
12432        floatExpr(     -0.0) <                 NaN  or
12433        floatExpr(      0.0) <                 NaN  or
12434        floatExpr(      1.0) <                 NaN  or
12435        floatExpr( Infinity) <                 NaN  or
12436        floatExpr(  nanVar1) <                 NaN  or
12437        floatExpr(  nanVar1) <             nanVar1  or
12438        floatExpr(  nanVar2) <             nanVar1  or
12439                        NaN  < floatExpr(      NaN) or
12440                  -Infinity  < floatExpr(      NaN) or
12441                       -1.0  < floatExpr(      NaN) or
12442                       -0.0  < floatExpr(      NaN) or
12443                        0.0  < floatExpr(      NaN) or
12444                        1.0  < floatExpr(      NaN) or
12445                   Infinity  < floatExpr(      NaN) or
12446                    nanVar1  < floatExpr(      NaN) or
12447                    nanVar1  < floatExpr(  nanVar1) or
12448                    nanVar2  < floatExpr(  nanVar1) or
12449        floatExpr(      NaN) < floatExpr(      NaN) or
12450        floatExpr(-Infinity) < floatExpr(      NaN) or
12451        floatExpr(     -1.0) < floatExpr(      NaN) or
12452        floatExpr(     -0.0) < floatExpr(      NaN) or
12453        floatExpr(      0.0) < floatExpr(      NaN) or
12454        floatExpr(      1.0) < floatExpr(      NaN) or
12455        floatExpr( Infinity) < floatExpr(      NaN) or
12456        floatExpr(  nanVar1) < floatExpr(      NaN) or
12457        floatExpr(  nanVar1) < floatExpr(  nanVar1) or
12458        floatExpr(  nanVar2) < floatExpr(  nanVar1) then
12459      writeln(" ***** NaN is less than something.");
12460      okay := FALSE;
12461    end if;
12462
12463    if                  NaN  >                 NaN  or
12464                        NaN  >           -Infinity  or
12465                        NaN  >                -1.0  or
12466                        NaN  >                -0.0  or
12467                        NaN  >                 0.0  or
12468                        NaN  >                 1.0  or
12469                        NaN  >            Infinity  or
12470                        NaN  >             nanVar1  or
12471                    nanVar1  >             nanVar1  or
12472                    nanVar1  >             nanVar2  or
12473        floatExpr(      NaN) >                 NaN  or
12474        floatExpr(      NaN) >           -Infinity  or
12475        floatExpr(      NaN) >                -1.0  or
12476        floatExpr(      NaN) >                -0.0  or
12477        floatExpr(      NaN) >                 0.0  or
12478        floatExpr(      NaN) >                 1.0  or
12479        floatExpr(      NaN) >            Infinity  or
12480        floatExpr(      NaN) >             nanVar1  or
12481        floatExpr(  nanVar1) >             nanVar1  or
12482        floatExpr(  nanVar1) >             nanVar2  or
12483                        NaN  > floatExpr(      NaN) or
12484                        NaN  > floatExpr(-Infinity) or
12485                        NaN  > floatExpr(     -1.0) or
12486                        NaN  > floatExpr(     -0.0) or
12487                        NaN  > floatExpr(      0.0) or
12488                        NaN  > floatExpr(      1.0) or
12489                        NaN  > floatExpr( Infinity) or
12490                        NaN  > floatExpr(  nanVar1) or
12491                    nanVar1  > floatExpr(  nanVar1) or
12492                    nanVar1  > floatExpr(  nanVar2) or
12493        floatExpr(      NaN) > floatExpr(      NaN) or
12494        floatExpr(      NaN) > floatExpr(-Infinity) or
12495        floatExpr(      NaN) > floatExpr(     -1.0) or
12496        floatExpr(      NaN) > floatExpr(     -0.0) or
12497        floatExpr(      NaN) > floatExpr(      0.0) or
12498        floatExpr(      NaN) > floatExpr(      1.0) or
12499        floatExpr(      NaN) > floatExpr( Infinity) or
12500        floatExpr(      NaN) > floatExpr(  nanVar1) or
12501        floatExpr(  nanVar1) > floatExpr(  nanVar1) or
12502        floatExpr(  nanVar1) > floatExpr(  nanVar2) or
12503                        NaN  >                 NaN  or
12504                  -Infinity  >                 NaN  or
12505                       -1.0  >                 NaN  or
12506                       -0.0  >                 NaN  or
12507                        0.0  >                 NaN  or
12508                        1.0  >                 NaN  or
12509                   Infinity  >                 NaN  or
12510                    nanVar1  >                 NaN  or
12511                    nanVar1  >             nanVar1  or
12512                    nanVar2  >             nanVar1  or
12513        floatExpr(      NaN) >                 NaN  or
12514        floatExpr(-Infinity) >                 NaN  or
12515        floatExpr(     -1.0) >                 NaN  or
12516        floatExpr(     -0.0) >                 NaN  or
12517        floatExpr(      0.0) >                 NaN  or
12518        floatExpr(      1.0) >                 NaN  or
12519        floatExpr( Infinity) >                 NaN  or
12520        floatExpr(  nanVar1) >                 NaN  or
12521        floatExpr(  nanVar1) >             nanVar1  or
12522        floatExpr(  nanVar2) >             nanVar1  or
12523                        NaN  > floatExpr(      NaN) or
12524                  -Infinity  > floatExpr(      NaN) or
12525                       -1.0  > floatExpr(      NaN) or
12526                       -0.0  > floatExpr(      NaN) or
12527                        0.0  > floatExpr(      NaN) or
12528                        1.0  > floatExpr(      NaN) or
12529                   Infinity  > floatExpr(      NaN) or
12530                    nanVar1  > floatExpr(      NaN) or
12531                    nanVar1  > floatExpr(  nanVar1) or
12532                    nanVar2  > floatExpr(  nanVar1) or
12533        floatExpr(      NaN) > floatExpr(      NaN) or
12534        floatExpr(-Infinity) > floatExpr(      NaN) or
12535        floatExpr(     -1.0) > floatExpr(      NaN) or
12536        floatExpr(     -0.0) > floatExpr(      NaN) or
12537        floatExpr(      0.0) > floatExpr(      NaN) or
12538        floatExpr(      1.0) > floatExpr(      NaN) or
12539        floatExpr( Infinity) > floatExpr(      NaN) or
12540        floatExpr(  nanVar1) > floatExpr(      NaN) or
12541        floatExpr(  nanVar1) > floatExpr(  nanVar1) or
12542        floatExpr(  nanVar2) > floatExpr(  nanVar1) then
12543      writeln(" ***** NaN is greater than something.");
12544      okay := FALSE;
12545    end if;
12546
12547    if                  NaN  <=                 NaN  or
12548                        NaN  <=           -Infinity  or
12549                        NaN  <=                -1.0  or
12550                        NaN  <=                -0.0  or
12551                        NaN  <=                 0.0  or
12552                        NaN  <=                 1.0  or
12553                        NaN  <=            Infinity  or
12554                        NaN  <=             nanVar1  or
12555                    nanVar1  <=             nanVar1  or
12556                    nanVar1  <=             nanVar2  or
12557        floatExpr(      NaN) <=                 NaN  or
12558        floatExpr(      NaN) <=           -Infinity  or
12559        floatExpr(      NaN) <=                -1.0  or
12560        floatExpr(      NaN) <=                -0.0  or
12561        floatExpr(      NaN) <=                 0.0  or
12562        floatExpr(      NaN) <=                 1.0  or
12563        floatExpr(      NaN) <=            Infinity  or
12564        floatExpr(      NaN) <=             nanVar1  or
12565        floatExpr(  nanVar1) <=             nanVar1  or
12566        floatExpr(  nanVar1) <=             nanVar2  or
12567                        NaN  <= floatExpr(      NaN) or
12568                        NaN  <= floatExpr(-Infinity) or
12569                        NaN  <= floatExpr(     -1.0) or
12570                        NaN  <= floatExpr(     -0.0) or
12571                        NaN  <= floatExpr(      0.0) or
12572                        NaN  <= floatExpr(      1.0) or
12573                        NaN  <= floatExpr( Infinity) or
12574                        NaN  <= floatExpr(  nanVar1) or
12575                    nanVar1  <= floatExpr(  nanVar1) or
12576                    nanVar1  <= floatExpr(  nanVar2) or
12577        floatExpr(      NaN) <= floatExpr(      NaN) or
12578        floatExpr(      NaN) <= floatExpr(-Infinity) or
12579        floatExpr(      NaN) <= floatExpr(     -1.0) or
12580        floatExpr(      NaN) <= floatExpr(     -0.0) or
12581        floatExpr(      NaN) <= floatExpr(      0.0) or
12582        floatExpr(      NaN) <= floatExpr(      1.0) or
12583        floatExpr(      NaN) <= floatExpr( Infinity) or
12584        floatExpr(      NaN) <= floatExpr(  nanVar1) or
12585        floatExpr(  nanVar1) <= floatExpr(  nanVar1) or
12586        floatExpr(  nanVar1) <= floatExpr(  nanVar2) or
12587                        NaN  <=                 NaN  or
12588                  -Infinity  <=                 NaN  or
12589                       -1.0  <=                 NaN  or
12590                       -0.0  <=                 NaN  or
12591                        0.0  <=                 NaN  or
12592                        1.0  <=                 NaN  or
12593                   Infinity  <=                 NaN  or
12594                    nanVar1  <=                 NaN  or
12595                    nanVar1  <=             nanVar1  or
12596                    nanVar2  <=             nanVar1  or
12597        floatExpr(      NaN) <=                 NaN  or
12598        floatExpr(-Infinity) <=                 NaN  or
12599        floatExpr(     -1.0) <=                 NaN  or
12600        floatExpr(     -0.0) <=                 NaN  or
12601        floatExpr(      0.0) <=                 NaN  or
12602        floatExpr(      1.0) <=                 NaN  or
12603        floatExpr( Infinity) <=                 NaN  or
12604        floatExpr(  nanVar1) <=                 NaN  or
12605        floatExpr(  nanVar1) <=             nanVar1  or
12606        floatExpr(  nanVar2) <=             nanVar1  or
12607                        NaN  <= floatExpr(      NaN) or
12608                  -Infinity  <= floatExpr(      NaN) or
12609                       -1.0  <= floatExpr(      NaN) or
12610                       -0.0  <= floatExpr(      NaN) or
12611                        0.0  <= floatExpr(      NaN) or
12612                        1.0  <= floatExpr(      NaN) or
12613                   Infinity  <= floatExpr(      NaN) or
12614                    nanVar1  <= floatExpr(      NaN) or
12615                    nanVar1  <= floatExpr(  nanVar1) or
12616                    nanVar2  <= floatExpr(  nanVar1) or
12617        floatExpr(      NaN) <= floatExpr(      NaN) or
12618        floatExpr(-Infinity) <= floatExpr(      NaN) or
12619        floatExpr(     -1.0) <= floatExpr(      NaN) or
12620        floatExpr(     -0.0) <= floatExpr(      NaN) or
12621        floatExpr(      0.0) <= floatExpr(      NaN) or
12622        floatExpr(      1.0) <= floatExpr(      NaN) or
12623        floatExpr( Infinity) <= floatExpr(      NaN) or
12624        floatExpr(  nanVar1) <= floatExpr(      NaN) or
12625        floatExpr(  nanVar1) <= floatExpr(  nanVar1) or
12626        floatExpr(  nanVar2) <= floatExpr(  nanVar1) then
12627      writeln(" ***** NaN is less equal than something.");
12628      okay := FALSE;
12629    end if;
12630
12631    if                  NaN  >=                 NaN  or
12632                        NaN  >=           -Infinity  or
12633                        NaN  >=                -1.0  or
12634                        NaN  >=                -0.0  or
12635                        NaN  >=                 0.0  or
12636                        NaN  >=                 1.0  or
12637                        NaN  >=            Infinity  or
12638                        NaN  >=             nanVar1  or
12639                    nanVar1  >=             nanVar1  or
12640                    nanVar1  >=             nanVar2  or
12641        floatExpr(      NaN) >=                 NaN  or
12642        floatExpr(      NaN) >=           -Infinity  or
12643        floatExpr(      NaN) >=                -1.0  or
12644        floatExpr(      NaN) >=                -0.0  or
12645        floatExpr(      NaN) >=                 0.0  or
12646        floatExpr(      NaN) >=                 1.0  or
12647        floatExpr(      NaN) >=            Infinity  or
12648        floatExpr(      NaN) >=             nanVar1  or
12649        floatExpr(  nanVar1) >=             nanVar1  or
12650        floatExpr(  nanVar1) >=             nanVar2  or
12651                        NaN  >= floatExpr(      NaN) or
12652                        NaN  >= floatExpr(-Infinity) or
12653                        NaN  >= floatExpr(     -1.0) or
12654                        NaN  >= floatExpr(     -0.0) or
12655                        NaN  >= floatExpr(      0.0) or
12656                        NaN  >= floatExpr(      1.0) or
12657                        NaN  >= floatExpr( Infinity) or
12658                        NaN  >= floatExpr(  nanVar1) or
12659                    nanVar1  >= floatExpr(  nanVar1) or
12660                    nanVar1  >= floatExpr(  nanVar2) or
12661        floatExpr(      NaN) >= floatExpr(      NaN) or
12662        floatExpr(      NaN) >= floatExpr(-Infinity) or
12663        floatExpr(      NaN) >= floatExpr(     -1.0) or
12664        floatExpr(      NaN) >= floatExpr(     -0.0) or
12665        floatExpr(      NaN) >= floatExpr(      0.0) or
12666        floatExpr(      NaN) >= floatExpr(      1.0) or
12667        floatExpr(      NaN) >= floatExpr( Infinity) or
12668        floatExpr(      NaN) >= floatExpr(  nanVar1) or
12669        floatExpr(  nanVar1) >= floatExpr(  nanVar1) or
12670        floatExpr(  nanVar1) >= floatExpr(  nanVar2) or
12671                        NaN  >=                 NaN  or
12672                  -Infinity  >=                 NaN  or
12673                       -1.0  >=                 NaN  or
12674                       -0.0  >=                 NaN  or
12675                        0.0  >=                 NaN  or
12676                        1.0  >=                 NaN  or
12677                   Infinity  >=                 NaN  or
12678                    nanVar1  >=                 NaN  or
12679                    nanVar1  >=             nanVar1  or
12680                    nanVar2  >=             nanVar1  or
12681        floatExpr(      NaN) >=                 NaN  or
12682        floatExpr(-Infinity) >=                 NaN  or
12683        floatExpr(     -1.0) >=                 NaN  or
12684        floatExpr(     -0.0) >=                 NaN  or
12685        floatExpr(      0.0) >=                 NaN  or
12686        floatExpr(      1.0) >=                 NaN  or
12687        floatExpr( Infinity) >=                 NaN  or
12688        floatExpr(  nanVar1) >=                 NaN  or
12689        floatExpr(  nanVar1) >=             nanVar1  or
12690        floatExpr(  nanVar2) >=             nanVar1  or
12691                        NaN  >= floatExpr(      NaN) or
12692                  -Infinity  >= floatExpr(      NaN) or
12693                       -1.0  >= floatExpr(      NaN) or
12694                       -0.0  >= floatExpr(      NaN) or
12695                        0.0  >= floatExpr(      NaN) or
12696                        1.0  >= floatExpr(      NaN) or
12697                   Infinity  >= floatExpr(      NaN) or
12698                    nanVar1  >= floatExpr(      NaN) or
12699                    nanVar1  >= floatExpr(  nanVar1) or
12700                    nanVar2  >= floatExpr(  nanVar1) or
12701        floatExpr(      NaN) >= floatExpr(      NaN) or
12702        floatExpr(-Infinity) >= floatExpr(      NaN) or
12703        floatExpr(     -1.0) >= floatExpr(      NaN) or
12704        floatExpr(     -0.0) >= floatExpr(      NaN) or
12705        floatExpr(      0.0) >= floatExpr(      NaN) or
12706        floatExpr(      1.0) >= floatExpr(      NaN) or
12707        floatExpr( Infinity) >= floatExpr(      NaN) or
12708        floatExpr(  nanVar1) >= floatExpr(      NaN) or
12709        floatExpr(  nanVar1) >= floatExpr(  nanVar1) or
12710        floatExpr(  nanVar2) >= floatExpr(  nanVar1) then
12711      writeln(" ***** NaN is greater equal than something.");
12712      okay := FALSE;
12713    end if;
12714
12715    if okay then
12716      writeln("NaN works correct for selected values.");
12717    else
12718      writeln(" ***** NaN does not work correct.");
12719    end if;
12720  end func;
12721
12722
12723const proc: check_rand is func
12724
12725  local
12726    var float: number is 0.0;
12727    var boolean: nanPresent is FALSE;
12728    var boolean: negativePresent is FALSE;
12729    var boolean: positivePresent is FALSE;
12730    var boolean: okay is TRUE;
12731    var boolean: ok is TRUE;
12732  begin
12733    number := rand(-Infinity,      -2.0); ok := ok and number >= -Infinity and number < -2.0;
12734    number := rand(-Infinity,      -1.0); ok := ok and number >= -Infinity and number < -1.0;
12735    number := rand(-Infinity,       0.0); ok := ok and number >= -Infinity and number <  0.0;
12736    number := rand(-Infinity,       1.0); ok := ok and number >= -Infinity and number <  1.0;
12737    number := rand(-Infinity,       2.0); ok := ok and number >= -Infinity and number <  2.0;
12738    number := rand(-Infinity,  Infinity); ok := ok and number >= -Infinity and number <= Infinity;
12739    number := rand(     -2.0,      -1.0); ok := ok and number >= -2.0 and number < -1.0;
12740    number := rand(     -2.0,       0.0); ok := ok and number >= -2.0 and number <  0.0;
12741    number := rand(     -2.0,       1.0); ok := ok and number >= -2.0 and number <  1.0;
12742    number := rand(     -2.0,       2.0); ok := ok and number >= -2.0 and number <  2.0;
12743    number := rand(     -2.0,  Infinity); ok := ok and number >= -2.0 and number <= Infinity;
12744    number := rand(     -1.0,       0.0); ok := ok and number >= -1.0 and number < 0.0;
12745    number := rand(     -1.0,       1.0); ok := ok and number >= -1.0 and number < 1.0;
12746    number := rand(     -1.0,       2.0); ok := ok and number >= -1.0 and number < 2.0;
12747    number := rand(     -1.0,  Infinity); ok := ok and number >= -1.0 and number <= Infinity;
12748    number := rand(      0.0,       1.0); ok := ok and number >= 0.0 and number < 1.0;
12749    number := rand(      0.0,       2.0); ok := ok and number >= 0.0 and number < 2.0;
12750    number := rand(      0.0,  Infinity); ok := ok and number >= 0.0 and number <= Infinity;
12751    number := rand(      1.0,       2.0); ok := ok and number >= 1.0 and number < 2.0;
12752    number := rand(      1.0,  Infinity); ok := ok and number >= 1.0 and number <= Infinity;
12753    number := rand(      2.0,  Infinity); ok := ok and number >= 2.0 and number <= Infinity;
12754    if not ok then
12755      writeln(" ***** rand(a, b) does not work correct.");
12756      okay := FALSE;
12757    end if;
12758
12759    ok := TRUE;
12760    number := rand(0.0, 2.0 ** 1000); ok := ok and number >= 0.0 and number < 2.0 ** 1000;
12761    number := rand(0.0, 2.0 **  500); ok := ok and number >= 0.0 and number < 2.0 **  500;
12762    number := rand(0.0, 2.0 **  200); ok := ok and number >= 0.0 and number < 2.0 **  200;
12763    number := rand(0.0, 1267650600228229401496703205376.0); ok := ok and number >= 0.0 and number < 1267650600228229401496703205376.0;
12764    number := rand(0.0,             1152921504606846976.0); ok := ok and number >= 0.0 and number < 1152921504606846976.0;
12765    number := rand(0.0,                   1099511627776.0); ok := ok and number >= 0.0 and number < 1099511627776.0;
12766    number := rand(0.0,                      1073741824.0); ok := ok and number >= 0.0 and number < 1073741824.0;
12767    number := rand(0.0,                         1048576.0); ok := ok and number >= 0.0 and number < 1048576.0;
12768    number := rand(0.0,                           65536.0); ok := ok and number >= 0.0 and number < 65536.0;
12769    number := rand(0.0,                            1024.0); ok := ok and number >= 0.0 and number < 1024.0;
12770    number := rand(0.0,                               4.0); ok := ok and number >= 0.0 and number < 4.0;
12771    number := rand(0.0,                               2.0); ok := ok and number >= 0.0 and number < 2.0;
12772    number := rand(0.0,                               1.0); ok := ok and number >= 0.0 and number < 1.0;
12773    number := rand(0.0, 0.5);                           ok := ok and number >= 0.0 and number < 0.5;
12774    number := rand(0.0, 0.25);                          ok := ok and number >= 0.0 and number < 0.25;
12775    number := rand(0.0, 0.125);                         ok := ok and number >= 0.0 and number < 0.125;
12776    number := rand(0.0, 0.0625);                        ok := ok and number >= 0.0 and number < 0.0625;
12777    number := rand(0.0, 0.03125);                       ok := ok and number >= 0.0 and number < 0.03125;
12778    number := rand(0.0, 0.015625);                      ok := ok and number >= 0.0 and number < 0.015625;
12779    number := rand(0.0, 0.0078125);                     ok := ok and number >= 0.0 and number < 0.0078125;
12780    number := rand(0.0, 0.0009765625);                  ok := ok and number >= 0.0 and number < 0.0009765625;
12781    number := rand(0.0, 0.000030517578125);             ok := ok and number >= 0.0 and number < 0.000030517578125;
12782    number := rand(0.0, 0.00000095367431640625);        ok := ok and number >= 0.0 and number < 0.00000095367431640625;
12783    number := rand(0.0, 0.000000000931322574615479);    ok := ok and number >= 0.0 and number < 0.000000000931322574615479;
12784    number := rand(0.0, 0.000000000000909494701772928); ok := ok and number >= 0.0 and number < 0.000000000000909494701772928;
12785    number := rand(0.0, 2.0 ** ( -100)); ok := ok and number >= 0.0 and number < 2.0 ** ( -100);
12786    number := rand(0.0, 2.0 ** ( -200)); ok := ok and number >= 0.0 and number < 2.0 ** ( -200);
12787    number := rand(0.0, 2.0 ** ( -500)); ok := ok and number >= 0.0 and number < 2.0 ** ( -500);
12788    number := rand(0.0, 2.0 ** (-1000)); ok := ok and number >= 0.0 and number < 2.0 ** (-1000);
12789    if not ok then
12790      writeln(" ***** rand(0.0, upper) does not work correct if upper is a power of two.");
12791      okay := FALSE;
12792    end if;
12793
12794    for 10000 do
12795      number := rand(-Infinity, Infinity);
12796      if isNaN(number) then
12797        nanPresent := TRUE;
12798      elsif number < 0.0 then
12799        negativePresent := TRUE;
12800      elsif number > 0.0 then
12801        positivePresent := TRUE;
12802      end if;
12803    end for;
12804
12805    if nanPresent then
12806      writeln(" ***** rand(-Infinity, Infinity) returns NaN.");
12807      okay := FALSE;
12808    end if;
12809    if not negativePresent then
12810      writeln(" ***** rand(-Infinity, Infinity) returns only positive values.");
12811      okay := FALSE;
12812    end if;
12813    if not positivePresent then
12814      writeln(" ***** rand(-Infinity, Infinity) returns only negative values.");
12815      okay := FALSE;
12816    end if;
12817
12818    if  not raisesRangeError(rand(          -Infinity,            -Infinity )) or
12819        not raisesRangeError(rand(          -Infinity,  floatExpr(-Infinity))) or
12820        not raisesRangeError(rand(floatExpr(-Infinity),           -Infinity )) or
12821        not raisesRangeError(rand(floatExpr(-Infinity), floatExpr(-Infinity))) or
12822        not raisesRangeError(rand(               -2.0,                 -2.0 )) or
12823        not raisesRangeError(rand(               -2.0,  floatExpr(     -2.0))) or
12824        not raisesRangeError(rand(floatExpr(     -2.0),                -2.0 )) or
12825        not raisesRangeError(rand(floatExpr(     -2.0), floatExpr(     -2.0))) or
12826        not raisesRangeError(rand(               -1.0,                 -1.0 )) or
12827        not raisesRangeError(rand(               -1.0,  floatExpr(     -1.0))) or
12828        not raisesRangeError(rand(floatExpr(     -1.0),                -1.0 )) or
12829        not raisesRangeError(rand(floatExpr(     -1.0), floatExpr(     -1.0))) or
12830        not raisesRangeError(rand(                0.0,                  0.0 )) or
12831        not raisesRangeError(rand(                0.0,  floatExpr(      0.0))) or
12832        not raisesRangeError(rand(floatExpr(      0.0),                 0.0 )) or
12833        not raisesRangeError(rand(floatExpr(      0.0), floatExpr(      0.0))) or
12834        not raisesRangeError(rand(                1.0,                  1.0 )) or
12835        not raisesRangeError(rand(                1.0,  floatExpr(      1.0))) or
12836        not raisesRangeError(rand(floatExpr(      1.0),                 1.0 )) or
12837        not raisesRangeError(rand(floatExpr(      1.0), floatExpr(      1.0))) or
12838        not raisesRangeError(rand(                2.0,                  2.0 )) or
12839        not raisesRangeError(rand(                2.0,  floatExpr(      2.0))) or
12840        not raisesRangeError(rand(floatExpr(      2.0),                 2.0 )) or
12841        not raisesRangeError(rand(floatExpr(      2.0), floatExpr(      2.0))) or
12842        not raisesRangeError(rand(           Infinity,             Infinity )) or
12843        not raisesRangeError(rand(           Infinity,  floatExpr( Infinity))) or
12844        not raisesRangeError(rand(floatExpr( Infinity),            Infinity )) or
12845        not raisesRangeError(rand(floatExpr( Infinity), floatExpr( Infinity))) then
12846      writeln(" ***** rand(0.0, 0.0) does not raise RANGE_ERROR.");
12847      okay := FALSE;
12848    end if;
12849
12850    if  not raisesRangeError(rand(          1.0,            0.0 )) or
12851        not raisesRangeError(rand(          1.0,  floatExpr(0.0))) or
12852        not raisesRangeError(rand(floatExpr(1.0),           0.0 )) or
12853        not raisesRangeError(rand(floatExpr(1.0), floatExpr(0.0))) then
12854      writeln(" ***** rand(1.0, 0.0) does not raise RANGE_ERROR.");
12855      okay := FALSE;
12856    end if;
12857
12858    if  not raisesRangeError(rand(          0.0,            NaN )) or
12859        not raisesRangeError(rand(          NaN,            1.0 )) or
12860        not raisesRangeError(rand(          NaN,            NaN )) or
12861        not raisesRangeError(rand(          0.0,  floatExpr(NaN))) or
12862        not raisesRangeError(rand(          NaN,  floatExpr(1.0))) or
12863        not raisesRangeError(rand(          NaN,  floatExpr(NaN))) or
12864        not raisesRangeError(rand(floatExpr(0.0),           NaN )) or
12865        not raisesRangeError(rand(floatExpr(NaN),           1.0 )) or
12866        not raisesRangeError(rand(floatExpr(NaN),           NaN )) or
12867        not raisesRangeError(rand(floatExpr(0.0), floatExpr(NaN))) or
12868        not raisesRangeError(rand(floatExpr(NaN), floatExpr(1.0))) or
12869        not raisesRangeError(rand(floatExpr(NaN), floatExpr(NaN))) then
12870      writeln(" ***** rand with NaN as upper or lower bound does not raise RANGE_ERROR.");
12871      okay := FALSE;
12872    end if;
12873
12874    if okay then
12875      writeln("Rand works correct for selected values.");
12876    else
12877      writeln(" ***** Rand does not work correct.");
12878    end if;
12879  end func;
12880
12881
12882const proc: check_decompose is func
12883  local
12884    var floatElements: elems is floatElements.value;
12885    var boolean: okay is TRUE;
12886    var boolean: ok is TRUE;
12887  begin
12888    elems := decompose(0.0); ok := ok and elems.fraction = 0.0 and elems.exponent = 0;
12889    elems := decompose(0.5); ok := ok and elems.fraction = 0.5 and elems.exponent = 0;
12890    elems := decompose(1.0); ok := ok and elems.fraction = 0.5 and elems.exponent = 1;
12891    elems := decompose( 5.0e-324);                ok := ok and elems.fraction = 0.5 and
12892                                                               elems.exponent = -1073;  # Min subnormal positive double.
12893    elems := decompose( 2.2250738585072009e-308); ok := ok and elems.fraction = 0.9999999999999998 and
12894                                                               elems.exponent = -1022;  # Max subnormal positive double
12895    elems := decompose( 2.2250738585072014e-308); ok := ok and elems.fraction = 0.5 and
12896                                                               elems.exponent = -1021;  # Min normalized positive double
12897    elems := decompose( 1.4012984643248171e-45);  ok := ok and elems.fraction = 0.5 and
12898                                                               elems.exponent = -148;   # Min subnormal positive single.
12899    elems := decompose( 1.1754942106924411e-38);  ok := ok and elems.fraction = 0.9999998807907105 and
12900                                                               elems.exponent = -126;   # Max subnormal positive single
12901    elems := decompose( 1.1754943508222875e-38);  ok := ok and elems.fraction = 0.5 and
12902                                                               elems.exponent = -125;   # Min normalized positive single.
12903    elems := decompose( 3.4028234663852886e+38);  ok := ok and elems.fraction = 0.9999999403953552 and
12904                                                               elems.exponent = 128;    # Max finite positive single.
12905    elems := decompose( 1.7976931348623157e+308); ok := ok and elems.fraction = 0.9999999999999999 and
12906                                                               elems.exponent = 1024;   # Max finite positive double
12907    if not ok then
12908      writeln(" ***** Decompose for normal values does not work correct.");
12909      okay := FALSE;
12910    end if;
12911
12912    ok := TRUE;
12913    elems := decompose( Infinity); ok := ok and elems.fraction =  Infinity and elems.exponent = 0;
12914    elems := decompose(-Infinity); ok := ok and elems.fraction = -Infinity and elems.exponent = 0;
12915    elems := decompose( NaN);      ok := ok and isNaN(elems.fraction)      and elems.exponent = 0;
12916    if not ok then
12917      writeln(" ***** Decompose for special values does not work correct.");
12918      okay := FALSE;
12919    end if;
12920
12921    if okay then
12922      writeln("Decompose works correct for selected values.");
12923    end if;
12924  end func;
12925
12926
12927const proc: check_ternary is func
12928  local
12929    var boolean: okay is TRUE;
12930    var boolean: ok is TRUE;
12931    var float: number is 0.0;
12932  begin
12933    if  ( TRUE ?  1.0 : 2.0) <> 1.0 or
12934        (FALSE ?  1.0 : 2.0) <> 2.0 or
12935        ( TRUE ?  1.0 : floatExpr(2.0)) <> 1.0 or
12936        (FALSE ?  1.0 : floatExpr(2.0)) <> 2.0 or
12937        ( TRUE ?  floatExpr(1.0) : 2.0) <> 1.0 or
12938        (FALSE ?  floatExpr(1.0) : 2.0) <> 2.0 or
12939        ( TRUE ?  floatExpr(1.0) : floatExpr(2.0)) <> 1.0 or
12940        (FALSE ?  floatExpr(1.0) : floatExpr(2.0)) <> 2.0 or
12941        (boolExpr( TRUE) ?  1.0 : 2.0) <> 1.0 or
12942        (boolExpr(FALSE) ?  1.0 : 2.0) <> 2.0 or
12943        (boolExpr( TRUE) ?  1.0 : floatExpr(2.0)) <> 1.0 or
12944        (boolExpr(FALSE) ?  1.0 : floatExpr(2.0)) <> 2.0 or
12945        (boolExpr( TRUE) ?  floatExpr(1.0) : 2.0) <> 1.0 or
12946        (boolExpr(FALSE) ?  floatExpr(1.0) : 2.0) <> 2.0 or
12947        (boolExpr( TRUE) ?  floatExpr(1.0) : floatExpr(2.0)) <> 1.0 or
12948        (boolExpr(FALSE) ?  floatExpr(1.0) : floatExpr(2.0)) <> 2.0 then
12949      writeln(" ***** The ternary operator ? : does not work correct. (1)");
12950      okay := FALSE;
12951    end if;
12952
12953    number :=  TRUE ?  1.0 : 2.0; ok := ok and number = 1.0;
12954    number := FALSE ?  1.0 : 2.0; ok := ok and number = 2.0;
12955    number :=  TRUE ?  1.0 : floatExpr(2.0); ok := ok and number = 1.0;
12956    number := FALSE ?  1.0 : floatExpr(2.0); ok := ok and number = 2.0;
12957    number :=  TRUE ?  floatExpr(1.0) : 2.0; ok := ok and number = 1.0;
12958    number := FALSE ?  floatExpr(1.0) : 2.0; ok := ok and number = 2.0;
12959    number :=  TRUE ?  floatExpr(1.0) : floatExpr(2.0); ok := ok and number = 1.0;
12960    number := FALSE ?  floatExpr(1.0) : floatExpr(2.0); ok := ok and number = 2.0;
12961    number := boolExpr( TRUE) ?  1.0 : 2.0; ok := ok and number = 1.0;
12962    number := boolExpr(FALSE) ?  1.0 : 2.0; ok := ok and number = 2.0;
12963    number := boolExpr( TRUE) ?  1.0 : floatExpr(2.0); ok := ok and number = 1.0;
12964    number := boolExpr(FALSE) ?  1.0 : floatExpr(2.0); ok := ok and number = 2.0;
12965    number := boolExpr( TRUE) ?  floatExpr(1.0) : 2.0; ok := ok and number = 1.0;
12966    number := boolExpr(FALSE) ?  floatExpr(1.0) : 2.0; ok := ok and number = 2.0;
12967    number := boolExpr( TRUE) ?  floatExpr(1.0) : floatExpr(2.0); ok := ok and number = 1.0;
12968    number := boolExpr(FALSE) ?  floatExpr(1.0) : floatExpr(2.0); ok := ok and number = 2.0;
12969    if not ok then
12970      writeln(" ***** The ternary operator ? : does not work correct. (2)");
12971      okay := FALSE;
12972    end if;
12973
12974    if okay then
12975      writeln("The ternary operator ? : works correct for float.");
12976    else
12977      writeln(" ***** The ternary operator ? : does not work correct.");
12978    end if;
12979  end func;
12980
12981
12982const proc: main is func
12983
12984  begin
12985    writeln;
12986    check_literal;
12987    check_comparison;
12988    check_compare;
12989    check_parse;
12990    check_str;
12991    check_conversion;
12992    check_trunc;
12993    check_round;
12994    check_add;
12995    check_mult;
12996    check_division;
12997    check_remainder;
12998    check_modulo;
12999    check_power;
13000    check_ipower;
13001    check_lshift;
13002    check_rshift;
13003    check_negative_zero;
13004    check_inf;
13005    check_nan;
13006    check_rand;
13007    check_decompose;
13008    check_ternary;
13009  end func;
13010