1 2(********************************************************************) 3(* *) 4(* chkovf.sd7 Checks catching of integer overflows. *) 5(* Copyright (C) 2014, 2018 - 2020 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 "bin32.s7i"; 28 29 30const integer: INT32_MIN is pred(-2147483647); 31const integer: INT32_MAX is 2147483647; 32const integer: INT64_MIN is integer.first; 33const integer: INT64_MAX is integer.last; 34 35 36const func integer: intExpr (in integer: number) is 37 return number + length(str(rand(1, 9))[2 ..]); 38 39 40const func string: striExpr (in string: stri) is 41 return stri & str(rand(1, 9))[2 ..]; 42 43 44const func char: charExpr (in char: ch) is 45 return chr(ord(ch) + length(str(rand(1, 9))[2 ..])); 46 47 48const func boolean: boolExpr (ref boolean: value) is 49 return value and str(rand(1, 9))[2 ..] = ""; 50 51 52const func boolean: raisesOverflowError (ref func integer: expression) is func 53 result 54 var boolean: raisesOverflowError is FALSE; 55 local 56 var integer: exprResult is 0; 57 begin 58 block 59 exprResult := expression; 60 exception 61 catch NUMERIC_ERROR: raisesOverflowError := FALSE; 62 catch OVERFLOW_ERROR: raisesOverflowError := TRUE; 63 end block; 64 end func; 65 66 67const func boolean: raisesOverflowError (ref func bin32: expression) is func 68 result 69 var boolean: raisesOverflowError is FALSE; 70 local 71 var bin32: exprResult is bin32(0); 72 begin 73 block 74 exprResult := expression; 75 exception 76 catch NUMERIC_ERROR: raisesOverflowError := FALSE; 77 catch OVERFLOW_ERROR: raisesOverflowError := TRUE; 78 end block; 79 end func; 80 81 82const func boolean: raisesOverflowError (ref proc: statement) is func 83 result 84 var boolean: raisesOverflowError is FALSE; 85 begin 86 block 87 statement; 88 exception 89 catch NUMERIC_ERROR: raisesOverflowError := FALSE; 90 catch OVERFLOW_ERROR: raisesOverflowError := TRUE; 91 end block; 92 end func; 93 94 95const func string: exceptionName (ref func integer: expression) is func 96 result 97 var string: exceptionName is ""; 98 local 99 var integer: exprResult is 0; 100 begin 101 block 102 exprResult := expression; 103 exception 104 catch NUMERIC_ERROR: exceptionName := "NUMERIC_ERROR"; 105 catch OVERFLOW_ERROR: exceptionName := "OVERFLOW_ERROR"; 106 end block; 107 end func; 108 109 110const func string: exceptionName (ref proc: statement) is func 111 result 112 var string: exceptionName is ""; 113 begin 114 block 115 statement; 116 exception 117 catch NUMERIC_ERROR: exceptionName := "NUMERIC_ERROR"; 118 catch OVERFLOW_ERROR: exceptionName := "OVERFLOW_ERROR"; 119 end block; 120 end func; 121 122 123const proc: check_negation is func 124 local 125 var boolean: okay is TRUE; 126 begin 127 if not raisesOverflowError(- INT64_MIN) or 128 not raisesOverflowError(-intExpr( INT64_MIN)) or 129 not raisesOverflowError(- (-9223372036854775807-1)) or 130 not raisesOverflowError(-intExpr((-9223372036854775807-1))) then 131 writeln(" ***** Negation -(-9223372036854775808) does not raise OVERFLOW_ERROR."); 132 okay := FALSE; 133 end if; 134 135 if okay then 136 writeln("Overflow checking of negation works correct."); 137 else 138 writeln(" ***** Overflow checking of negation does not work correct."); 139 end if; 140 end func; 141 142 143(** 144 * Tests for the compiler optimization to reduce overflow checking 145 * for addition and subtraction. 146 *) 147const func boolean: check_reduced_overflow_checking_for_sums is func 148 result 149 var boolean: okay is TRUE; 150 begin 151 if not raisesOverflowError(intExpr( integer.last) div -integer.last + integer.first) or 152 not raisesOverflowError(intExpr( integer.last) div -34359738368 + -9223372036586340354) or 153 not raisesOverflowError(intExpr( integer.last) div -1234567890 + -9223372029383844392) or 154 not raisesOverflowError(intExpr( integer.last) div -2 + -4611686018427387906) or 155 not raisesOverflowError(intExpr( integer.last) div -1 + -2) or 156 not raisesOverflowError(intExpr(integer.first) div 1 + -1) or 157 not raisesOverflowError(intExpr(integer.first) div 2 + -4611686018427387905) or 158 not raisesOverflowError(intExpr(integer.first) div 1234567890 + -9223372029383844392) or 159 not raisesOverflowError(intExpr(integer.first) div 34359738368 + -9223372036586340353) or 160 not raisesOverflowError(intExpr(integer.first) div integer.last + integer.first) then 161 writeln(" ***** Reduced overflow check for sums failed: Minimum division result if the divisor is known."); 162 okay := FALSE; 163 end if; 164 165 if not raisesOverflowError(intExpr(integer.first) div integer.first + 9223372036854775807) or 166 not raisesOverflowError(intExpr(integer.first) div -integer.last + 9223372036854775807) or 167 not raisesOverflowError(intExpr(integer.first) div -34359738368 + 9223372036586340352) or 168 not raisesOverflowError(intExpr(integer.first) div -1234567890 + 9223372029383844392) or 169 not raisesOverflowError(intExpr(integer.first) div -2 + 4611686018427387904) or 170 not raisesOverflowError(intExpr( integer.last) div 1 + 1) or 171 not raisesOverflowError(intExpr( integer.last) div 2 + 4611686018427387905) or 172 not raisesOverflowError(intExpr( integer.last) div 1234567890 + 9223372029383844391) or 173 not raisesOverflowError(intExpr( integer.last) div 34359738368 + 9223372036586340353) or 174 not raisesOverflowError(intExpr( integer.last) div integer.last + 9223372036854775807) then 175 writeln(" ***** Reduced overflow check for sums failed: Maximum division result if the divisor is known."); 176 okay := FALSE; 177 end if; 178 179 if not raisesOverflowError( integer.first div intExpr( 1) + -1) or 180 not raisesOverflowError(-9223372036854775807 div intExpr( 1) + -2) or 181 not raisesOverflowError(-9223372036854775806 div intExpr( 1) + -3) or 182 not raisesOverflowError(-4611686018427387904 div intExpr( 1) + -4611686018427387905) or 183 not raisesOverflowError( -1234567890 div intExpr( 1) + -9223372035620207919) or 184 not raisesOverflowError( -1 div intExpr( 1) + integer.first) or 185 not raisesOverflowError( 1 div intExpr(-1) + integer.first) or 186 not raisesOverflowError( 1234567890 div intExpr(-1) + -9223372035620207919) or 187 not raisesOverflowError( 4611686018427387904 div intExpr(-1) + -4611686018427387905) or 188 not raisesOverflowError( 9223372036854775806 div intExpr(-1) + -3) or 189 not raisesOverflowError( 9223372036854775807 div intExpr(-1) + -2) then 190 writeln(" ***** Reduced overflow check for sums failed: Minimum division result if the dividend is known."); 191 okay := FALSE; 192 end if; 193 194 if not raisesOverflowError(-9223372036854775807 div intExpr(-1) + 1) or 195 not raisesOverflowError(-9223372036854775806 div intExpr(-1) + 2) or 196 not raisesOverflowError(-4611686018427387904 div intExpr(-1) + 4611686018427387904) or 197 not raisesOverflowError( -1234567890 div intExpr(-1) + 9223372035620207918) or 198 not raisesOverflowError( -1 div intExpr(-1) + 9223372036854775807) or 199 not raisesOverflowError( 1 div intExpr( 1) + 9223372036854775807) or 200 not raisesOverflowError( 1234567890 div intExpr( 1) + 9223372035620207918) or 201 not raisesOverflowError( 4611686018427387904 div intExpr( 1) + 4611686018427387904) or 202 not raisesOverflowError( 9223372036854775806 div intExpr( 1) + 2) or 203 not raisesOverflowError( 9223372036854775807 div intExpr( 1) + 1) then 204 writeln(" ***** Reduced overflow check for sums failed: Maximum division result if the dividend is known."); 205 okay := FALSE; 206 end if; 207 208 if not raisesOverflowError(intExpr( -integer.last) rem integer.first + -2) or 209 not raisesOverflowError(intExpr( -integer.last) rem -4611686018427387904 + -4611686018427387906) or 210 not raisesOverflowError(intExpr( -integer.last) rem -34359738368 + -9223372002495037442) or 211 not raisesOverflowError(intExpr( -6172839449) rem -1234567890 + -9223372035620207920) or 212 not raisesOverflowError(intExpr( -123456789123) rem -2 + integer.first) or 213 not raisesOverflowError(intExpr( -123456789123) rem 2 + integer.first) or 214 not raisesOverflowError(intExpr( -6172839449) rem 1234567890 + -9223372035620207920) or 215 not raisesOverflowError(intExpr( -integer.last) rem 34359738368 + -9223372002495037442) or 216 not raisesOverflowError(intExpr( -integer.last) rem 4611686018427387904 + -4611686018427387906) or 217 not raisesOverflowError(intExpr(-9223372036854775806) rem integer.last + -3) then 218 writeln(" ***** Reduced overflow check for sums failed: Minimum remainder result if the divisor is known."); 219 okay := FALSE; 220 end if; 221 222 if not raisesOverflowError(intExpr( integer.last) rem integer.first + 1) or 223 not raisesOverflowError(intExpr( integer.last) rem -4611686018427387904 + 4611686018427387905) or 224 not raisesOverflowError(intExpr( integer.last) rem -34359738368 + 9223372002495037441) or 225 not raisesOverflowError(intExpr( 6172839449) rem -1234567890 + 9223372035620207919) or 226 not raisesOverflowError(intExpr( 123456789123) rem -2 + 9223372036854775807) or 227 not raisesOverflowError(intExpr( 123456789123) rem 2 + 9223372036854775807) or 228 not raisesOverflowError(intExpr( 6172839449) rem 1234567890 + 9223372035620207919) or 229 not raisesOverflowError(intExpr( integer.last) rem 34359738368 + 9223372002495037441) or 230 not raisesOverflowError(intExpr( integer.last) rem 4611686018427387904 + 4611686018427387905) or 231 not raisesOverflowError(intExpr( 9223372036854775806) rem integer.last + 2) then 232 writeln(" ***** Reduced overflow check for sums failed: Maximum remainder result if the divisor is known."); 233 okay := FALSE; 234 end if; 235 236 if not raisesOverflowError(-9223372036854775807 rem intExpr( integer.first) + -2) or 237 not raisesOverflowError( -1234567890 rem intExpr( 2345678901) + -9223372035620207919) or 238 not raisesOverflowError( -1 rem intExpr( 2) + integer.first) then 239 writeln(" ***** Reduced overflow check for sums failed: Minimum remainder result if the dividend is known."); 240 okay := FALSE; 241 end if; 242 243 if not raisesOverflowError( 1 rem intExpr( 2) + 9223372036854775807) or 244 not raisesOverflowError( 1234567890 rem intExpr( 2345678901) + 9223372035620207918) or 245 not raisesOverflowError( 9223372036854775807 rem intExpr( integer.first) + 1) then 246 writeln(" ***** Reduced overflow check for sums failed: Maximum remainder result if the dividend is known."); 247 okay := FALSE; 248 end if; 249 250 if not raisesOverflowError(intExpr( integer.last) mdiv integer.first + integer.first) or 251 not raisesOverflowError(intExpr( integer.last) mdiv -34359738368 + -9223372036586340353) or 252 not raisesOverflowError(intExpr( integer.last) mdiv -1234567890 + -9223372029383844391) or 253 not raisesOverflowError(intExpr( integer.last) mdiv -2 + -4611686018427387905) or 254 not raisesOverflowError(intExpr( integer.last) mdiv -1 + -2) or 255 not raisesOverflowError(intExpr(integer.first) mdiv 1 + -1) or 256 not raisesOverflowError(intExpr(integer.first) mdiv 2 + -4611686018427387905) or 257 not raisesOverflowError(intExpr(integer.first) mdiv 1234567890 + -9223372029383844391) or 258 not raisesOverflowError(intExpr(integer.first) mdiv 34359738368 + -9223372036586340353) or 259 not raisesOverflowError(intExpr(integer.first) mdiv integer.last + -9223372036854775807) then 260 writeln(" ***** Reduced overflow check for sums failed: Minimum mdiv division result if the divisor is known."); 261 okay := FALSE; 262 end if; 263 264 if not raisesOverflowError(intExpr(integer.first) mdiv integer.first + 9223372036854775807) or 265 not raisesOverflowError(intExpr(integer.first) mdiv -34359738368 + 9223372036586340352) or 266 not raisesOverflowError(intExpr(integer.first) mdiv -1234567890 + 9223372029383844392) or 267 not raisesOverflowError(intExpr(integer.first) mdiv -2 + 4611686018427387904) or 268 not raisesOverflowError(intExpr( integer.last) mdiv 1 + 1) or 269 not raisesOverflowError(intExpr( integer.last) mdiv 2 + 4611686018427387905) or 270 not raisesOverflowError(intExpr( integer.last) mdiv 1234567890 + 9223372029383844391) or 271 not raisesOverflowError(intExpr( integer.last) mdiv 34359738368 + 9223372036586340353) or 272 not raisesOverflowError(intExpr( integer.last) mdiv integer.last + 9223372036854775807) then 273 writeln(" ***** Reduced overflow check for sums failed: Maximum mdiv division result if the divisor is known."); 274 okay := FALSE; 275 end if; 276 277 if not raisesOverflowError( integer.first mdiv intExpr( 1) + -1) or 278 not raisesOverflowError(-9223372036854775807 mdiv intExpr( 1) + -2) or 279 not raisesOverflowError(-9223372036854775806 mdiv intExpr( 1) + -3) or 280 not raisesOverflowError(-4611686018427387904 mdiv intExpr( 1) + -4611686018427387905) or 281 not raisesOverflowError( -1234567890 mdiv intExpr( 1) + -9223372035620207919) or 282 not raisesOverflowError( -1 mdiv intExpr( 1) + integer.first) or 283 not raisesOverflowError( 1 mdiv intExpr(-1) + integer.first) or 284 not raisesOverflowError( 1234567890 mdiv intExpr(-1) + -9223372035620207919) or 285 not raisesOverflowError( 4611686018427387904 mdiv intExpr(-1) + -4611686018427387905) or 286 not raisesOverflowError( 9223372036854775806 mdiv intExpr(-1) + -3) or 287 not raisesOverflowError( 9223372036854775807 mdiv intExpr(-1) + -2) then 288 writeln(" ***** Reduced overflow check for sums failed: Minimum mdiv division result if the dividend is known."); 289 okay := FALSE; 290 end if; 291 292 if not raisesOverflowError(-9223372036854775807 mdiv intExpr(-1) + 1) or 293 not raisesOverflowError(-9223372036854775806 mdiv intExpr(-1) + 2) or 294 not raisesOverflowError(-4611686018427387904 mdiv intExpr(-1) + 4611686018427387904) or 295 not raisesOverflowError( -1234567890 mdiv intExpr(-1) + 9223372035620207918) or 296 not raisesOverflowError( -1 mdiv intExpr(-1) + 9223372036854775807) or 297 not raisesOverflowError( 1 mdiv intExpr( 1) + 9223372036854775807) or 298 not raisesOverflowError( 1234567890 mdiv intExpr( 1) + 9223372035620207918) or 299 not raisesOverflowError( 4611686018427387904 mdiv intExpr( 1) + 4611686018427387904) or 300 not raisesOverflowError( 9223372036854775806 mdiv intExpr( 1) + 2) or 301 not raisesOverflowError( 9223372036854775807 mdiv intExpr( 1) + 1) then 302 writeln(" ***** Reduced overflow check for sums failed: Maximum mdiv division result if the dividend is known."); 303 okay := FALSE; 304 end if; 305 306 if not raisesOverflowError(intExpr( -integer.last) mod integer.first + -2) or 307 not raisesOverflowError(intExpr( 4611686018427387905) mod -4611686018427387904 + -4611686018427387906) or 308 not raisesOverflowError(intExpr( 9223372002495037441) mod -34359738368 + -9223372002495037442) or 309 not raisesOverflowError(intExpr( 6172839451) mod -1234567890 + -9223372035620207920) or 310 not raisesOverflowError(intExpr( 123456789123) mod -2 + integer.first) then 311 writeln(" ***** Reduced overflow check for sums failed: Minimum modulo result if the divisor is known."); 312 okay := FALSE; 313 end if; 314 315 if not raisesOverflowError(intExpr( 123456789123) mod 2 + 9223372036854775807) or 316 not raisesOverflowError(intExpr( 6172839449) mod 1234567890 + 9223372035620207919) or 317 not raisesOverflowError(intExpr( 9223372002495037439) mod 34359738368 + 9223372002495037442) or 318 not raisesOverflowError(intExpr( integer.last) mod 4611686018427387904 + 4611686018427387905) or 319 not raisesOverflowError(intExpr( 9223372036854775806) mod integer.last + 2) then 320 writeln(" ***** Reduced overflow check for sums failed: Maximum modulo result if the divisor is known."); 321 okay := FALSE; 322 end if; 323 324 if not raisesOverflowError( integer.first mod intExpr(-4611686018427387905) + -4611686018427387906) or 325 not raisesOverflowError(-9223372036854775807 mod intExpr( integer.first) + -2) or 326 not raisesOverflowError(-7654321098765432109 mod intExpr(-7654321098765432110) + -1569050938089343700) or 327 not raisesOverflowError(-4611686018427387906 mod intExpr(-4611686018427387907) + -4611686018427387903) or 328 not raisesOverflowError(-4611686018427387905 mod intExpr(-4611686018427387906) + -4611686018427387904) or 329 not raisesOverflowError(-4611686018427387904 mod intExpr(-4611686018427387905) + -4611686018427387905) or 330 not raisesOverflowError( -1234567890 mod intExpr( -1234567891) + -9223372035620207919) or 331 not raisesOverflowError( -1 mod intExpr( -2) + integer.first) or 332 not raisesOverflowError( 1 mod intExpr( integer.first) + -2) or 333 not raisesOverflowError( 1234567890 mod intExpr( integer.first) + -1234567891) or 334 not raisesOverflowError( 4611686018427387904 mod intExpr( integer.first) + -4611686018427387905) or 335 not raisesOverflowError( 4611686018427387905 mod intExpr(-4611686018427387904) + -4611686018427387906) or 336 not raisesOverflowError( 4611686018427387906 mod intExpr(-4611686018427387905) + -4611686018427387905) or 337 not raisesOverflowError( 7654321098765432109 mod intExpr(-7654321098765432108) + -1569050938089343702) or 338 not raisesOverflowError( 9223372036854775806 mod intExpr(-9223372036854775805) + -5) or 339 not raisesOverflowError( integer.last mod intExpr(-9223372036854775806) + -4) then 340 writeln(" ***** Reduced overflow check for sums failed: Minimum modulo result if the dividend is known."); 341 okay := FALSE; 342 end if; 343 344 if not raisesOverflowError( integer.first mod intExpr( integer.last) + 2) or 345 not raisesOverflowError(-9223372036854775807 mod intExpr( 9223372036854775806) + 3) or 346 not raisesOverflowError(-7654321098765432109 mod intExpr( 7654321098765432108) + 1569050938089343701) or 347 not raisesOverflowError(-4611686018427387906 mod intExpr( 4611686018427387905) + 4611686018427387904) or 348 not raisesOverflowError(-4611686018427387905 mod intExpr( 4611686018427387904) + 4611686018427387905) or 349 not raisesOverflowError(-4611686018427387904 mod intExpr( integer.last) + 4611686018427387905) or 350 not raisesOverflowError( -1234567890 mod intExpr( integer.last) + 1234567891) or 351 not raisesOverflowError( -1 mod intExpr( integer.last) + 2) or 352 not raisesOverflowError( 1 mod intExpr( 2) + 9223372036854775807) or 353 not raisesOverflowError( 1234567890 mod intExpr( 1234567891) + 9223372035620207918) or 354 not raisesOverflowError( 4611686018427387904 mod intExpr( 4611686018427387905) + 4611686018427387904) or 355 not raisesOverflowError( 4611686018427387905 mod intExpr( 4611686018427387906) + 4611686018427387903) or 356 not raisesOverflowError( 4611686018427387906 mod intExpr( 4611686018427387907) + 4611686018427387902) or 357 not raisesOverflowError( 7654321098765432109 mod intExpr( 7654321098765432110) + 1569050938089343699) or 358 not raisesOverflowError( 9223372036854775806 mod intExpr( 9223372036854775807) + 2) or 359 not raisesOverflowError( integer.last mod intExpr( 4611686018427387904) + 4611686018427387905) then 360 writeln(" ***** Reduced overflow check for sums failed: Maximum modulo result if the dividend is known."); 361 okay := FALSE; 362 end if; 363 364 if not raisesOverflowError((intExpr(integer.first) >> 0) + -1) or 365 not raisesOverflowError((intExpr(integer.first) >> 1) + -4611686018427387905) or 366 not raisesOverflowError((intExpr(integer.first) >> 30) + -9223372028264841217) or 367 not raisesOverflowError((intExpr(integer.first) >> 62) + -9223372036854775807) or 368 not raisesOverflowError((intExpr(integer.first) >> 63) + integer.first) then 369 writeln(" ***** Reduced overflow check for sums failed: Minimum rshift result if the shift amount is known."); 370 okay := FALSE; 371 end if; 372 373 if not raisesOverflowError((intExpr( integer.last) >> 0) + 1) or 374 not raisesOverflowError((intExpr( integer.last) >> 1) + 4611686018427387905) or 375 not raisesOverflowError((intExpr( integer.last) >> 30) + 9223372028264841217) or 376 not raisesOverflowError((intExpr( integer.last) >> 62) + 9223372036854775807) then 377 writeln(" ***** Reduced overflow check for sums failed: Maximum rshift result if the shift amount is known."); 378 okay := FALSE; 379 end if; 380 381 if not raisesOverflowError(( integer.first >> intExpr( 0)) + -1) or 382 not raisesOverflowError(( -integer.last >> intExpr( 0)) + -2) or 383 not raisesOverflowError((-9012345678901234567 >> intExpr( 0)) + -211026357953541242) or 384 not raisesOverflowError((-4611686018427387904 >> intExpr( 0)) + -4611686018427387905) or 385 not raisesOverflowError(( -1234567890 >> intExpr( 0)) + -9223372035620207919) or 386 not raisesOverflowError(( -2 >> intExpr( 0)) + -9223372036854775807) or 387 not raisesOverflowError(( -1 >> intExpr( 0)) + integer.first) then 388 writeln(" ***** Reduced overflow check for sums failed: Minimum rshift result if the shifted value is known."); 389 okay := FALSE; 390 end if; 391 392 if not raisesOverflowError(( 1 >> intExpr( 0)) + 9223372036854775807) or 393 not raisesOverflowError(( 2 >> intExpr( 0)) + 9223372036854775806) or 394 not raisesOverflowError(( 1234567890 >> intExpr( 0)) + 9223372035620207918) or 395 not raisesOverflowError(( 4611686018427387903 >> intExpr( 0)) + 4611686018427387905) or 396 not raisesOverflowError(( 9012345678901234567 >> intExpr( 0)) + 211026357953541241) or 397 not raisesOverflowError(( 9223372036854775806 >> intExpr( 0)) + 2) or 398 not raisesOverflowError(( integer.last >> intExpr( 0)) + 1) then 399 writeln(" ***** Reduced overflow check for sums failed: Maximum rshift result if the shifted value is known."); 400 okay := FALSE; 401 end if; 402 403 if not raisesOverflowError( abs( intExpr( integer.last)) + 1) or 404 not raisesOverflowError(-abs( intExpr( integer.last)) - 2) or 405 not raisesOverflowError(-abs( intExpr( 0)) - integer.first) or 406 not raisesOverflowError( log2( intExpr( 0)) + integer.first) or 407 not raisesOverflowError( log2( intExpr( integer.last)) + 9223372036854775746) or 408 not raisesOverflowError(-log2( intExpr( integer.last)) - 9223372036854775747) or 409 not raisesOverflowError(-log2( intExpr( 0)) - -9223372036854775807) or 410 not raisesOverflowError( log10( intExpr( 0)) + integer.first) or 411 not raisesOverflowError( log10( intExpr( integer.last)) + 9223372036854775790) or 412 not raisesOverflowError(-log10( intExpr( integer.last)) - 9223372036854775791) or 413 not raisesOverflowError(-log10( intExpr( 0)) - -9223372036854775807) or 414 not raisesOverflowError( sqrt( intExpr( integer.last)) + 9223372033817775309) or 415 not raisesOverflowError(-sqrt( intExpr( integer.last)) - 9223372033817775310) or 416 not raisesOverflowError(-sqrt( intExpr( 0)) - integer.first) or 417 not raisesOverflowError( bitLength( intExpr( integer.last)) + 9223372036854775745) or 418 not raisesOverflowError( bitLength( intExpr( integer.last)) + bitLength( intExpr( integer.last)) + 9223372036854775682) or 419 not raisesOverflowError(-bitLength( intExpr( integer.last)) - 9223372036854775746) or 420 not raisesOverflowError(-bitLength( intExpr( 0)) - integer.first) or 421 not raisesOverflowError(-bitLength( intExpr( integer.last)) - bitLength( intExpr( integer.last)) - 9223372036854775683) or 422 not raisesOverflowError(-bitLength( intExpr( 0)) - bitLength( intExpr( 0)) - integer.first) or 423 not raisesOverflowError( lowestSetBit(intExpr( 0)) + integer.first) or 424 not raisesOverflowError( lowestSetBit(intExpr(integer.first)) + 9223372036854775745) or 425 not raisesOverflowError(-lowestSetBit(intExpr(integer.first)) - 9223372036854775746) or 426 not raisesOverflowError(-lowestSetBit(intExpr( 0)) - -9223372036854775807) or 427 428 not raisesOverflowError( rand( -1234567890, intExpr(-1234567890)) + -9223372035620207919) or 429 not raisesOverflowError( rand(intExpr( 1234567890), 1234567890 ) + 9223372035620207918) or 430 not raisesOverflowError(-rand(intExpr( 1234567890), 1234567890 ) - 9223372035620207919) or 431 not raisesOverflowError(-rand( -1234567890, intExpr(-1234567890)) - -9223372035620207918) or 432 433 not raisesOverflowError( compare(intExpr(0), intExpr(1)) + integer.first) or 434 not raisesOverflowError( compare(intExpr(1), intExpr(0)) + 9223372036854775807) or 435 not raisesOverflowError(-compare(intExpr(1), intExpr(0)) + integer.first) or 436 not raisesOverflowError(-compare(intExpr(0), intExpr(1)) - -9223372036854775807) then 437 writeln(" ***** Reduced overflow check for sums failed: Various integer functions."); 438 okay := FALSE; 439 end if; 440 441 if not raisesOverflowError( abs(ord(charExpr(char(-2147483648) ))) + 9223372034707292160) or 442 not raisesOverflowError( abs(ord(charExpr(char(-2147483648) ))) + abs(ord(charExpr(char(-2147483648) ))) + 9223372032559808512) or 443 not raisesOverflowError(-abs(ord(charExpr(char(-2147483648) ))) - 9223372034707292161) or 444 not raisesOverflowError(-abs(ord(charExpr(char(-2147483648) ))) - abs(ord(charExpr(char(-2147483648) ))) - 9223372032559808513) then 445 writeln(" ***** Reduced overflow check for sums failed: abs(ord(char))"); 446 okay := FALSE; 447 end if; 448 449 if not raisesOverflowError( ord(boolExpr(TRUE)) + 9223372036854775807) or 450 not raisesOverflowError(-ord(boolExpr(TRUE)) + integer.first) or 451 not raisesOverflowError( ord(boolExpr(TRUE)) + ord(boolExpr(TRUE)) + 9223372036854775806) or 452 not raisesOverflowError(-ord(boolExpr(TRUE)) - ord(boolExpr(TRUE)) - 9223372036854775807) or 453 not raisesOverflowError(ord(boolExpr(TRUE)) + ord(boolExpr(TRUE)) + ord(boolExpr(TRUE)) + 9223372036854775805) or 454 not raisesOverflowError(ord(boolExpr(TRUE)) + ord(boolExpr(TRUE)) + ord(boolExpr(TRUE)) + ord(boolExpr(TRUE)) + 9223372036854775804) or 455 not raisesOverflowError(ord(boolExpr( TRUE)) + sqrt(intExpr(integer.last)) + 9223372033817775308) or 456 not raisesOverflowError(ord(boolExpr(FALSE)) - sqrt(intExpr(integer.last)) + -9223372033817775310) or 457 not raisesOverflowError(ord(boolExpr( TRUE)) - sqrt(intExpr( 0)) + integer.last) or 458 not raisesOverflowError(ord(boolExpr( TRUE)) + abs(intExpr(1)) + 9223372036854775806) or 459 not raisesOverflowError(ord(boolExpr(FALSE)) - abs(intExpr(1)) + integer.first) then 460 writeln(" ***** Reduced overflow check for sums failed: ord(boolean)"); 461 okay := FALSE; 462 end if; 463 464 if not raisesOverflowError( ord(charExpr(char(-2147483648) )) + -9223372034707292161) or 465 not raisesOverflowError( ord(charExpr( '\2147483647;')) + 9223372034707292161) or 466 not raisesOverflowError(-ord(charExpr( '\2147483647;')) - 9223372034707292162) or 467 not raisesOverflowError(-ord(charExpr(char(-2147483648) )) - -9223372034707292160) or 468 not raisesOverflowError( ord(charExpr(char(-2147483648) )) + ord(charExpr(char(-2147483648) )) + -9223372032559808513) or 469 not raisesOverflowError( ord(charExpr( '\2147483647;')) + ord(charExpr( '\2147483647;')) + 9223372032559808514) or 470 not raisesOverflowError(-ord(charExpr( '\2147483647;')) - ord(charExpr( '\2147483647;')) - 9223372032559808515) or 471 not raisesOverflowError(-ord(charExpr(char(-2147483648) )) - ord(charExpr(char(-2147483648) )) - -9223372032559808512) or 472 not raisesOverflowError(ord(charExpr(char(-2147483648) )) + ord(charExpr(char(-2147483648) )) + 473 ord(charExpr(char(-2147483648) )) + -9223372030412324865) or 474 not raisesOverflowError(ord(charExpr( '\2147483647;')) + ord(charExpr( '\2147483647;')) + 475 ord(charExpr( '\2147483647;')) + 9223372030412324867) or 476 not raisesOverflowError(ord(charExpr(char(-2147483648) )) + ord(charExpr(char(-2147483648) )) + 477 ord(charExpr(char(-2147483648) )) + ord(charExpr(char(-2147483648) )) + -9223372028264841217) or 478 not raisesOverflowError(ord(charExpr( '\2147483647;')) + ord(charExpr( '\2147483647;')) + 479 ord(charExpr( '\2147483647;')) + ord(charExpr( '\2147483647;')) + 9223372028264841220) or 480 not raisesOverflowError(ord(charExpr(char(-2147483648) )) - ord(charExpr( '\2147483647;')) + -9223372032559808514) or 481 not raisesOverflowError(ord(charExpr( '\2147483647;')) - ord(charExpr(char(-2147483648) )) + 9223372032559808513) or 482 not raisesOverflowError(ord(charExpr(char(-2147483648) )) + sqrt(intExpr( 0)) + -9223372034707292161) or 483 not raisesOverflowError(ord(charExpr( '\2147483647;')) + sqrt(intExpr(integer.last)) + 9223372031670291662) or 484 not raisesOverflowError(ord(charExpr(char(-2147483648) )) - sqrt(intExpr(integer.last)) + -9223372031670291662) or 485 not raisesOverflowError(ord(charExpr( '\2147483647;')) - sqrt(intExpr( 0)) + 9223372034707292161) or 486 not raisesOverflowError(ord(charExpr(char(-2147483648) )) + abs(intExpr(1)) + -9223372034707292162) or 487 not raisesOverflowError(ord(charExpr( '\2147483647;')) + abs(intExpr(1)) + 9223372034707292160) or 488 not raisesOverflowError(ord(charExpr(char(-2147483648) )) - abs(intExpr(1)) + -9223372034707292160) or 489 not raisesOverflowError(ord(charExpr( '\2147483647;')) - abs(intExpr(1)) + 9223372034707292163) then 490 writeln(" ***** Reduced overflow check for sums failed: ord(char)"); 491 okay := FALSE; 492 end if; 493 494 if not raisesOverflowError(pos("a", striExpr("a")) + 9223372036854775807) or 495 not raisesOverflowError(pos("ab", striExpr("b")) + 9223372036854775806) or 496 not raisesOverflowError(pos("abc", striExpr("c")) + 9223372036854775805) then 497 writeln(" ***** Reduced overflow check for sums failed: Maximum pos result if the main string is known."); 498 okay := FALSE; 499 end if; 500 end func; 501 502 503const proc: check_add is func 504 local 505 var boolean: okay is TRUE; 506 begin 507 if not raisesOverflowError( INT64_MIN + -1) or 508 not raisesOverflowError(-9223372036854775807 + -2) or 509 not raisesOverflowError(-9223372036854775806 + -3) or 510 not raisesOverflowError(-9223372036854775798 + -11) or 511 not raisesOverflowError(-9223372036854774952 + -857) or 512 not raisesOverflowError(-9223372036854771170 + -4639) or 513 not raisesOverflowError(-9223372036854737536 + -38273) or 514 not raisesOverflowError(-9223372036854131366 + -644443) or 515 not raisesOverflowError(-9223372036844899256 + -9876553) or 516 not raisesOverflowError(-9223372036842430156 + -12345653) or 517 not raisesOverflowError(-9223372036731319018 + -123456791) or 518 not raisesOverflowError(-9223372033817775310 + -3037000499) or 519 not raisesOverflowError(-9223371962145462841 + -74709312968) or 520 not raisesOverflowError(-9223371289760066696 + -747094709113) or 521 not raisesOverflowError(-9223371102989282772 + -933865493037) or 522 not raisesOverflowError(-9223357724693674122 + -14312161101687) or 523 not raisesOverflowError(-9223131047853734481 + -240989001041328) or 524 not raisesOverflowError(-9221383812660584222 + -1988224194191587) or 525 not raisesOverflowError(-9212609642412704893 + -10762394442070916) or 526 not raisesOverflowError(-8384883669867978009 + -838488366986797800) or 527 not raisesOverflowError(-6148914691236517207 + -3074457345618258602) or 528 not raisesOverflowError(-3074457345618258602 + -6148914691236517207) or 529 not raisesOverflowError( -838488366986797800 + -8384883669867978009) or 530 not raisesOverflowError( -10762394442070916 + -9212609642412704893) or 531 not raisesOverflowError( -1988224194191587 + -9221383812660584222) or 532 not raisesOverflowError( -240989001041328 + -9223131047853734481) or 533 not raisesOverflowError( -14312161101687 + -9223357724693674122) or 534 not raisesOverflowError( -933865493037 + -9223371102989282772) or 535 not raisesOverflowError( -747094709113 + -9223371289760066696) or 536 not raisesOverflowError( -74709312968 + -9223371962145462841) or 537 not raisesOverflowError( -3037000499 + -9223372033817775310) or 538 not raisesOverflowError( -123456791 + -9223372036731319018) or 539 not raisesOverflowError( -12345653 + -9223372036842430156) or 540 not raisesOverflowError( -9876553 + -9223372036844899256) or 541 not raisesOverflowError( -644443 + -9223372036854131366) or 542 not raisesOverflowError( -38273 + -9223372036854737536) or 543 not raisesOverflowError( -4639 + -9223372036854771170) or 544 not raisesOverflowError( -857 + -9223372036854774952) or 545 not raisesOverflowError( -11 + -9223372036854775798) or 546 not raisesOverflowError( -3 + -9223372036854775806) or 547 not raisesOverflowError( -2 + -9223372036854775807) or 548 not raisesOverflowError( -1 + INT64_MIN) then 549 writeln(" ***** Addition underflow by one does not raise OVERFLOW_ERROR. (1)"); 550 okay := FALSE; 551 end if; 552 553 if not raisesOverflowError(intExpr( INT64_MIN) + -1) or 554 not raisesOverflowError(intExpr(-9223372036854775807) + -2) or 555 not raisesOverflowError(intExpr(-9223372036854775806) + -3) or 556 not raisesOverflowError(intExpr(-9223372036854775798) + -11) or 557 not raisesOverflowError(intExpr(-9223372036854774952) + -857) or 558 not raisesOverflowError(intExpr(-9223372036854771170) + -4639) or 559 not raisesOverflowError(intExpr(-9223372036854737536) + -38273) or 560 not raisesOverflowError(intExpr(-9223372036854131366) + -644443) or 561 not raisesOverflowError(intExpr(-9223372036844899256) + -9876553) or 562 not raisesOverflowError(intExpr(-9223372036842430156) + -12345653) or 563 not raisesOverflowError(intExpr(-9223372036731319018) + -123456791) or 564 not raisesOverflowError(intExpr(-9223372033817775310) + -3037000499) or 565 not raisesOverflowError(intExpr(-9223371962145462841) + -74709312968) or 566 not raisesOverflowError(intExpr(-9223371289760066696) + -747094709113) or 567 not raisesOverflowError(intExpr(-9223371102989282772) + -933865493037) or 568 not raisesOverflowError(intExpr(-9223357724693674122) + -14312161101687) or 569 not raisesOverflowError(intExpr(-9223131047853734481) + -240989001041328) or 570 not raisesOverflowError(intExpr(-9221383812660584222) + -1988224194191587) or 571 not raisesOverflowError(intExpr(-9212609642412704893) + -10762394442070916) or 572 not raisesOverflowError(intExpr(-8384883669867978009) + -838488366986797800) or 573 not raisesOverflowError(intExpr(-6148914691236517207) + -3074457345618258602) or 574 not raisesOverflowError(intExpr(-3074457345618258602) + -6148914691236517207) or 575 not raisesOverflowError(intExpr( -838488366986797800) + -8384883669867978009) or 576 not raisesOverflowError(intExpr( -10762394442070916) + -9212609642412704893) or 577 not raisesOverflowError(intExpr( -1988224194191587) + -9221383812660584222) or 578 not raisesOverflowError(intExpr( -240989001041328) + -9223131047853734481) or 579 not raisesOverflowError(intExpr( -14312161101687) + -9223357724693674122) or 580 not raisesOverflowError(intExpr( -933865493037) + -9223371102989282772) or 581 not raisesOverflowError(intExpr( -747094709113) + -9223371289760066696) or 582 not raisesOverflowError(intExpr( -74709312968) + -9223371962145462841) or 583 not raisesOverflowError(intExpr( -3037000499) + -9223372033817775310) or 584 not raisesOverflowError(intExpr( -123456791) + -9223372036731319018) or 585 not raisesOverflowError(intExpr( -12345653) + -9223372036842430156) or 586 not raisesOverflowError(intExpr( -9876553) + -9223372036844899256) or 587 not raisesOverflowError(intExpr( -644443) + -9223372036854131366) or 588 not raisesOverflowError(intExpr( -38273) + -9223372036854737536) or 589 not raisesOverflowError(intExpr( -4639) + -9223372036854771170) or 590 not raisesOverflowError(intExpr( -857) + -9223372036854774952) or 591 not raisesOverflowError(intExpr( -11) + -9223372036854775798) or 592 not raisesOverflowError(intExpr( -3) + -9223372036854775806) or 593 not raisesOverflowError(intExpr( -2) + -9223372036854775807) or 594 not raisesOverflowError(intExpr( -1) + INT64_MIN) then 595 writeln(" ***** Addition underflow by one does not raise OVERFLOW_ERROR. (2)"); 596 okay := FALSE; 597 end if; 598 599 if not raisesOverflowError( INT64_MIN + intExpr( -1)) or 600 not raisesOverflowError(-9223372036854775807 + intExpr( -2)) or 601 not raisesOverflowError(-9223372036854775806 + intExpr( -3)) or 602 not raisesOverflowError(-9223372036854775798 + intExpr( -11)) or 603 not raisesOverflowError(-9223372036854774952 + intExpr( -857)) or 604 not raisesOverflowError(-9223372036854771170 + intExpr( -4639)) or 605 not raisesOverflowError(-9223372036854737536 + intExpr( -38273)) or 606 not raisesOverflowError(-9223372036854131366 + intExpr( -644443)) or 607 not raisesOverflowError(-9223372036844899256 + intExpr( -9876553)) or 608 not raisesOverflowError(-9223372036842430156 + intExpr( -12345653)) or 609 not raisesOverflowError(-9223372036731319018 + intExpr( -123456791)) or 610 not raisesOverflowError(-9223372033817775310 + intExpr( -3037000499)) or 611 not raisesOverflowError(-9223371962145462841 + intExpr( -74709312968)) or 612 not raisesOverflowError(-9223371289760066696 + intExpr( -747094709113)) or 613 not raisesOverflowError(-9223371102989282772 + intExpr( -933865493037)) or 614 not raisesOverflowError(-9223357724693674122 + intExpr( -14312161101687)) or 615 not raisesOverflowError(-9223131047853734481 + intExpr( -240989001041328)) or 616 not raisesOverflowError(-9221383812660584222 + intExpr( -1988224194191587)) or 617 not raisesOverflowError(-9212609642412704893 + intExpr( -10762394442070916)) or 618 not raisesOverflowError(-8384883669867978009 + intExpr( -838488366986797800)) or 619 not raisesOverflowError(-6148914691236517207 + intExpr(-3074457345618258602)) or 620 not raisesOverflowError(-3074457345618258602 + intExpr(-6148914691236517207)) or 621 not raisesOverflowError( -838488366986797800 + intExpr(-8384883669867978009)) or 622 not raisesOverflowError( -10762394442070916 + intExpr(-9212609642412704893)) or 623 not raisesOverflowError( -1988224194191587 + intExpr(-9221383812660584222)) or 624 not raisesOverflowError( -240989001041328 + intExpr(-9223131047853734481)) or 625 not raisesOverflowError( -14312161101687 + intExpr(-9223357724693674122)) or 626 not raisesOverflowError( -933865493037 + intExpr(-9223371102989282772)) or 627 not raisesOverflowError( -747094709113 + intExpr(-9223371289760066696)) or 628 not raisesOverflowError( -74709312968 + intExpr(-9223371962145462841)) or 629 not raisesOverflowError( -3037000499 + intExpr(-9223372033817775310)) or 630 not raisesOverflowError( -123456791 + intExpr(-9223372036731319018)) or 631 not raisesOverflowError( -12345653 + intExpr(-9223372036842430156)) or 632 not raisesOverflowError( -9876553 + intExpr(-9223372036844899256)) or 633 not raisesOverflowError( -644443 + intExpr(-9223372036854131366)) or 634 not raisesOverflowError( -38273 + intExpr(-9223372036854737536)) or 635 not raisesOverflowError( -4639 + intExpr(-9223372036854771170)) or 636 not raisesOverflowError( -857 + intExpr(-9223372036854774952)) or 637 not raisesOverflowError( -11 + intExpr(-9223372036854775798)) or 638 not raisesOverflowError( -3 + intExpr(-9223372036854775806)) or 639 not raisesOverflowError( -2 + intExpr(-9223372036854775807)) or 640 not raisesOverflowError( -1 + intExpr( INT64_MIN)) then 641 writeln(" ***** Addition underflow by one does not raise OVERFLOW_ERROR. (3)"); 642 okay := FALSE; 643 end if; 644 645 if not raisesOverflowError(intExpr( INT64_MIN) + intExpr( -1)) or 646 not raisesOverflowError(intExpr(-9223372036854775807) + intExpr( -2)) or 647 not raisesOverflowError(intExpr(-9223372036854775806) + intExpr( -3)) or 648 not raisesOverflowError(intExpr(-9223372036854775798) + intExpr( -11)) or 649 not raisesOverflowError(intExpr(-9223372036854774952) + intExpr( -857)) or 650 not raisesOverflowError(intExpr(-9223372036854771170) + intExpr( -4639)) or 651 not raisesOverflowError(intExpr(-9223372036854737536) + intExpr( -38273)) or 652 not raisesOverflowError(intExpr(-9223372036854131366) + intExpr( -644443)) or 653 not raisesOverflowError(intExpr(-9223372036844899256) + intExpr( -9876553)) or 654 not raisesOverflowError(intExpr(-9223372036842430156) + intExpr( -12345653)) or 655 not raisesOverflowError(intExpr(-9223372036731319018) + intExpr( -123456791)) or 656 not raisesOverflowError(intExpr(-9223372033817775310) + intExpr( -3037000499)) or 657 not raisesOverflowError(intExpr(-9223371962145462841) + intExpr( -74709312968)) or 658 not raisesOverflowError(intExpr(-9223371289760066696) + intExpr( -747094709113)) or 659 not raisesOverflowError(intExpr(-9223371102989282772) + intExpr( -933865493037)) or 660 not raisesOverflowError(intExpr(-9223357724693674122) + intExpr( -14312161101687)) or 661 not raisesOverflowError(intExpr(-9223131047853734481) + intExpr( -240989001041328)) or 662 not raisesOverflowError(intExpr(-9221383812660584222) + intExpr( -1988224194191587)) or 663 not raisesOverflowError(intExpr(-9212609642412704893) + intExpr( -10762394442070916)) or 664 not raisesOverflowError(intExpr(-8384883669867978009) + intExpr( -838488366986797800)) or 665 not raisesOverflowError(intExpr(-6148914691236517207) + intExpr(-3074457345618258602)) or 666 not raisesOverflowError(intExpr(-3074457345618258602) + intExpr(-6148914691236517207)) or 667 not raisesOverflowError(intExpr( -838488366986797800) + intExpr(-8384883669867978009)) or 668 not raisesOverflowError(intExpr( -10762394442070916) + intExpr(-9212609642412704893)) or 669 not raisesOverflowError(intExpr( -1988224194191587) + intExpr(-9221383812660584222)) or 670 not raisesOverflowError(intExpr( -240989001041328) + intExpr(-9223131047853734481)) or 671 not raisesOverflowError(intExpr( -14312161101687) + intExpr(-9223357724693674122)) or 672 not raisesOverflowError(intExpr( -933865493037) + intExpr(-9223371102989282772)) or 673 not raisesOverflowError(intExpr( -747094709113) + intExpr(-9223371289760066696)) or 674 not raisesOverflowError(intExpr( -74709312968) + intExpr(-9223371962145462841)) or 675 not raisesOverflowError(intExpr( -3037000499) + intExpr(-9223372033817775310)) or 676 not raisesOverflowError(intExpr( -123456791) + intExpr(-9223372036731319018)) or 677 not raisesOverflowError(intExpr( -12345653) + intExpr(-9223372036842430156)) or 678 not raisesOverflowError(intExpr( -9876553) + intExpr(-9223372036844899256)) or 679 not raisesOverflowError(intExpr( -644443) + intExpr(-9223372036854131366)) or 680 not raisesOverflowError(intExpr( -38273) + intExpr(-9223372036854737536)) or 681 not raisesOverflowError(intExpr( -4639) + intExpr(-9223372036854771170)) or 682 not raisesOverflowError(intExpr( -857) + intExpr(-9223372036854774952)) or 683 not raisesOverflowError(intExpr( -11) + intExpr(-9223372036854775798)) or 684 not raisesOverflowError(intExpr( -3) + intExpr(-9223372036854775806)) or 685 not raisesOverflowError(intExpr( -2) + intExpr(-9223372036854775807)) or 686 not raisesOverflowError(intExpr( -1) + intExpr( INT64_MIN)) then 687 writeln(" ***** Addition underflow by one does not raise OVERFLOW_ERROR. (4)"); 688 okay := FALSE; 689 end if; 690 691 if not raisesOverflowError(9223372036854775807 + 1) or 692 not raisesOverflowError(9223372036854775806 + 2) or 693 not raisesOverflowError(9223372036854775805 + 3) or 694 not raisesOverflowError(9223372036854775797 + 11) or 695 not raisesOverflowError(9223372036854774951 + 857) or 696 not raisesOverflowError(9223372036854771169 + 4639) or 697 not raisesOverflowError(9223372036854737535 + 38273) or 698 not raisesOverflowError(9223372036854131365 + 644443) or 699 not raisesOverflowError(9223372036844899255 + 9876553) or 700 not raisesOverflowError(9223372036842430155 + 12345653) or 701 not raisesOverflowError(9223372036731319017 + 123456791) or 702 not raisesOverflowError(9223372033817775309 + 3037000499) or 703 not raisesOverflowError(9223371962145462840 + 74709312968) or 704 not raisesOverflowError(9223371289760066695 + 747094709113) or 705 not raisesOverflowError(9223371102989282771 + 933865493037) or 706 not raisesOverflowError(9223357724693674121 + 14312161101687) or 707 not raisesOverflowError(9223131047853734480 + 240989001041328) or 708 not raisesOverflowError(9221383812660584221 + 1988224194191587) or 709 not raisesOverflowError(9212609642412704892 + 10762394442070916) or 710 not raisesOverflowError(8384883669867978008 + 838488366986797800) or 711 not raisesOverflowError(6148914691236517206 + 3074457345618258602) or 712 not raisesOverflowError(3074457345618258602 + 6148914691236517206) or 713 not raisesOverflowError( 838488366986797800 + 8384883669867978008) or 714 not raisesOverflowError( 10762394442070916 + 9212609642412704892) or 715 not raisesOverflowError( 1988224194191587 + 9221383812660584221) or 716 not raisesOverflowError( 240989001041328 + 9223131047853734480) or 717 not raisesOverflowError( 14312161101687 + 9223357724693674121) or 718 not raisesOverflowError( 933865493037 + 9223371102989282771) or 719 not raisesOverflowError( 747094709113 + 9223371289760066695) or 720 not raisesOverflowError( 74709312968 + 9223371962145462840) or 721 not raisesOverflowError( 3037000499 + 9223372033817775309) or 722 not raisesOverflowError( 123456791 + 9223372036731319017) or 723 not raisesOverflowError( 12345653 + 9223372036842430155) or 724 not raisesOverflowError( 9876553 + 9223372036844899255) or 725 not raisesOverflowError( 644443 + 9223372036854131365) or 726 not raisesOverflowError( 38273 + 9223372036854737535) or 727 not raisesOverflowError( 4639 + 9223372036854771169) or 728 not raisesOverflowError( 857 + 9223372036854774951) or 729 not raisesOverflowError( 11 + 9223372036854775797) or 730 not raisesOverflowError( 3 + 9223372036854775805) or 731 not raisesOverflowError( 2 + 9223372036854775806) or 732 not raisesOverflowError( 1 + 9223372036854775807) then 733 writeln(" ***** Addition overflow by one does not raise OVERFLOW_ERROR. (1)"); 734 okay := FALSE; 735 end if; 736 737 if not raisesOverflowError(intExpr(9223372036854775807) + 1) or 738 not raisesOverflowError(intExpr(9223372036854775806) + 2) or 739 not raisesOverflowError(intExpr(9223372036854775805) + 3) or 740 not raisesOverflowError(intExpr(9223372036854775797) + 11) or 741 not raisesOverflowError(intExpr(9223372036854774951) + 857) or 742 not raisesOverflowError(intExpr(9223372036854771169) + 4639) or 743 not raisesOverflowError(intExpr(9223372036854737535) + 38273) or 744 not raisesOverflowError(intExpr(9223372036854131365) + 644443) or 745 not raisesOverflowError(intExpr(9223372036844899255) + 9876553) or 746 not raisesOverflowError(intExpr(9223372036842430155) + 12345653) or 747 not raisesOverflowError(intExpr(9223372036731319017) + 123456791) or 748 not raisesOverflowError(intExpr(9223372033817775309) + 3037000499) or 749 not raisesOverflowError(intExpr(9223371962145462840) + 74709312968) or 750 not raisesOverflowError(intExpr(9223371289760066695) + 747094709113) or 751 not raisesOverflowError(intExpr(9223371102989282771) + 933865493037) or 752 not raisesOverflowError(intExpr(9223357724693674121) + 14312161101687) or 753 not raisesOverflowError(intExpr(9223131047853734480) + 240989001041328) or 754 not raisesOverflowError(intExpr(9221383812660584221) + 1988224194191587) or 755 not raisesOverflowError(intExpr(9212609642412704892) + 10762394442070916) or 756 not raisesOverflowError(intExpr(8384883669867978008) + 838488366986797800) or 757 not raisesOverflowError(intExpr(6148914691236517206) + 3074457345618258602) or 758 not raisesOverflowError(intExpr(3074457345618258602) + 6148914691236517206) or 759 not raisesOverflowError(intExpr( 838488366986797800) + 8384883669867978008) or 760 not raisesOverflowError(intExpr( 10762394442070916) + 9212609642412704892) or 761 not raisesOverflowError(intExpr( 1988224194191587) + 9221383812660584221) or 762 not raisesOverflowError(intExpr( 240989001041328) + 9223131047853734480) or 763 not raisesOverflowError(intExpr( 14312161101687) + 9223357724693674121) or 764 not raisesOverflowError(intExpr( 933865493037) + 9223371102989282771) or 765 not raisesOverflowError(intExpr( 747094709113) + 9223371289760066695) or 766 not raisesOverflowError(intExpr( 74709312968) + 9223371962145462840) or 767 not raisesOverflowError(intExpr( 3037000499) + 9223372033817775309) or 768 not raisesOverflowError(intExpr( 123456791) + 9223372036731319017) or 769 not raisesOverflowError(intExpr( 12345653) + 9223372036842430155) or 770 not raisesOverflowError(intExpr( 9876553) + 9223372036844899255) or 771 not raisesOverflowError(intExpr( 644443) + 9223372036854131365) or 772 not raisesOverflowError(intExpr( 38273) + 9223372036854737535) or 773 not raisesOverflowError(intExpr( 4639) + 9223372036854771169) or 774 not raisesOverflowError(intExpr( 857) + 9223372036854774951) or 775 not raisesOverflowError(intExpr( 11) + 9223372036854775797) or 776 not raisesOverflowError(intExpr( 3) + 9223372036854775805) or 777 not raisesOverflowError(intExpr( 2) + 9223372036854775806) or 778 not raisesOverflowError(intExpr( 1) + 9223372036854775807) then 779 writeln(" ***** Addition overflow by one does not raise OVERFLOW_ERROR. (2)"); 780 okay := FALSE; 781 end if; 782 783 if not raisesOverflowError(9223372036854775807 + intExpr( 1)) or 784 not raisesOverflowError(9223372036854775806 + intExpr( 2)) or 785 not raisesOverflowError(9223372036854775805 + intExpr( 3)) or 786 not raisesOverflowError(9223372036854775797 + intExpr( 11)) or 787 not raisesOverflowError(9223372036854774951 + intExpr( 857)) or 788 not raisesOverflowError(9223372036854771169 + intExpr( 4639)) or 789 not raisesOverflowError(9223372036854737535 + intExpr( 38273)) or 790 not raisesOverflowError(9223372036854131365 + intExpr( 644443)) or 791 not raisesOverflowError(9223372036844899255 + intExpr( 9876553)) or 792 not raisesOverflowError(9223372036842430155 + intExpr( 12345653)) or 793 not raisesOverflowError(9223372036731319017 + intExpr( 123456791)) or 794 not raisesOverflowError(9223372033817775309 + intExpr( 3037000499)) or 795 not raisesOverflowError(9223371962145462840 + intExpr( 74709312968)) or 796 not raisesOverflowError(9223371289760066695 + intExpr( 747094709113)) or 797 not raisesOverflowError(9223371102989282771 + intExpr( 933865493037)) or 798 not raisesOverflowError(9223357724693674121 + intExpr( 14312161101687)) or 799 not raisesOverflowError(9223131047853734480 + intExpr( 240989001041328)) or 800 not raisesOverflowError(9221383812660584221 + intExpr( 1988224194191587)) or 801 not raisesOverflowError(9212609642412704892 + intExpr( 10762394442070916)) or 802 not raisesOverflowError(8384883669867978008 + intExpr( 838488366986797800)) or 803 not raisesOverflowError(6148914691236517206 + intExpr(3074457345618258602)) or 804 not raisesOverflowError(3074457345618258602 + intExpr(6148914691236517206)) or 805 not raisesOverflowError( 838488366986797800 + intExpr(8384883669867978008)) or 806 not raisesOverflowError( 10762394442070916 + intExpr(9212609642412704892)) or 807 not raisesOverflowError( 1988224194191587 + intExpr(9221383812660584221)) or 808 not raisesOverflowError( 240989001041328 + intExpr(9223131047853734480)) or 809 not raisesOverflowError( 14312161101687 + intExpr(9223357724693674121)) or 810 not raisesOverflowError( 933865493037 + intExpr(9223371102989282771)) or 811 not raisesOverflowError( 747094709113 + intExpr(9223371289760066695)) or 812 not raisesOverflowError( 74709312968 + intExpr(9223371962145462840)) or 813 not raisesOverflowError( 3037000499 + intExpr(9223372033817775309)) or 814 not raisesOverflowError( 123456791 + intExpr(9223372036731319017)) or 815 not raisesOverflowError( 12345653 + intExpr(9223372036842430155)) or 816 not raisesOverflowError( 9876553 + intExpr(9223372036844899255)) or 817 not raisesOverflowError( 644443 + intExpr(9223372036854131365)) or 818 not raisesOverflowError( 38273 + intExpr(9223372036854737535)) or 819 not raisesOverflowError( 4639 + intExpr(9223372036854771169)) or 820 not raisesOverflowError( 857 + intExpr(9223372036854774951)) or 821 not raisesOverflowError( 11 + intExpr(9223372036854775797)) or 822 not raisesOverflowError( 3 + intExpr(9223372036854775805)) or 823 not raisesOverflowError( 2 + intExpr(9223372036854775806)) or 824 not raisesOverflowError( 1 + intExpr(9223372036854775807)) then 825 writeln(" ***** Addition overflow by one does not raise OVERFLOW_ERROR. (3)"); 826 okay := FALSE; 827 end if; 828 829 if not raisesOverflowError(intExpr(9223372036854775807) + intExpr( 1)) or 830 not raisesOverflowError(intExpr(9223372036854775806) + intExpr( 2)) or 831 not raisesOverflowError(intExpr(9223372036854775805) + intExpr( 3)) or 832 not raisesOverflowError(intExpr(9223372036854775797) + intExpr( 11)) or 833 not raisesOverflowError(intExpr(9223372036854774951) + intExpr( 857)) or 834 not raisesOverflowError(intExpr(9223372036854771169) + intExpr( 4639)) or 835 not raisesOverflowError(intExpr(9223372036854737535) + intExpr( 38273)) or 836 not raisesOverflowError(intExpr(9223372036854131365) + intExpr( 644443)) or 837 not raisesOverflowError(intExpr(9223372036844899255) + intExpr( 9876553)) or 838 not raisesOverflowError(intExpr(9223372036842430155) + intExpr( 12345653)) or 839 not raisesOverflowError(intExpr(9223372036731319017) + intExpr( 123456791)) or 840 not raisesOverflowError(intExpr(9223372033817775309) + intExpr( 3037000499)) or 841 not raisesOverflowError(intExpr(9223371962145462840) + intExpr( 74709312968)) or 842 not raisesOverflowError(intExpr(9223371289760066695) + intExpr( 747094709113)) or 843 not raisesOverflowError(intExpr(9223371102989282771) + intExpr( 933865493037)) or 844 not raisesOverflowError(intExpr(9223357724693674121) + intExpr( 14312161101687)) or 845 not raisesOverflowError(intExpr(9223131047853734480) + intExpr( 240989001041328)) or 846 not raisesOverflowError(intExpr(9221383812660584221) + intExpr( 1988224194191587)) or 847 not raisesOverflowError(intExpr(9212609642412704892) + intExpr( 10762394442070916)) or 848 not raisesOverflowError(intExpr(8384883669867978008) + intExpr( 838488366986797800)) or 849 not raisesOverflowError(intExpr(6148914691236517206) + intExpr(3074457345618258602)) or 850 not raisesOverflowError(intExpr(3074457345618258602) + intExpr(6148914691236517206)) or 851 not raisesOverflowError(intExpr( 838488366986797800) + intExpr(8384883669867978008)) or 852 not raisesOverflowError(intExpr( 10762394442070916) + intExpr(9212609642412704892)) or 853 not raisesOverflowError(intExpr( 1988224194191587) + intExpr(9221383812660584221)) or 854 not raisesOverflowError(intExpr( 240989001041328) + intExpr(9223131047853734480)) or 855 not raisesOverflowError(intExpr( 14312161101687) + intExpr(9223357724693674121)) or 856 not raisesOverflowError(intExpr( 933865493037) + intExpr(9223371102989282771)) or 857 not raisesOverflowError(intExpr( 747094709113) + intExpr(9223371289760066695)) or 858 not raisesOverflowError(intExpr( 74709312968) + intExpr(9223371962145462840)) or 859 not raisesOverflowError(intExpr( 3037000499) + intExpr(9223372033817775309)) or 860 not raisesOverflowError(intExpr( 123456791) + intExpr(9223372036731319017)) or 861 not raisesOverflowError(intExpr( 12345653) + intExpr(9223372036842430155)) or 862 not raisesOverflowError(intExpr( 9876553) + intExpr(9223372036844899255)) or 863 not raisesOverflowError(intExpr( 644443) + intExpr(9223372036854131365)) or 864 not raisesOverflowError(intExpr( 38273) + intExpr(9223372036854737535)) or 865 not raisesOverflowError(intExpr( 4639) + intExpr(9223372036854771169)) or 866 not raisesOverflowError(intExpr( 857) + intExpr(9223372036854774951)) or 867 not raisesOverflowError(intExpr( 11) + intExpr(9223372036854775797)) or 868 not raisesOverflowError(intExpr( 3) + intExpr(9223372036854775805)) or 869 not raisesOverflowError(intExpr( 2) + intExpr(9223372036854775806)) or 870 not raisesOverflowError(intExpr( 1) + intExpr(9223372036854775807)) then 871 writeln(" ***** Addition overflow by one does not raise OVERFLOW_ERROR. (4)"); 872 okay := FALSE; 873 end if; 874 875 if not raisesOverflowError( INT64_MIN + INT64_MIN) or 876 not raisesOverflowError( INT64_MIN + -9223372036854775807) or 877 not raisesOverflowError(-9223372036854775807 + INT64_MIN) or 878 not raisesOverflowError(-9223372036854775807 + -9223372036854775807) or 879 not raisesOverflowError(intExpr( INT64_MIN) + INT64_MIN) or 880 not raisesOverflowError(intExpr( INT64_MIN) + -9223372036854775807) or 881 not raisesOverflowError(intExpr(-9223372036854775807) + INT64_MIN) or 882 not raisesOverflowError(intExpr(-9223372036854775807) + -9223372036854775807) or 883 not raisesOverflowError( INT64_MIN + intExpr( INT64_MIN)) or 884 not raisesOverflowError( INT64_MIN + intExpr(-9223372036854775807)) or 885 not raisesOverflowError(-9223372036854775807 + intExpr( INT64_MIN)) or 886 not raisesOverflowError(-9223372036854775807 + intExpr(-9223372036854775807)) or 887 not raisesOverflowError(intExpr( INT64_MIN) + intExpr( INT64_MIN)) or 888 not raisesOverflowError(intExpr( INT64_MIN) + intExpr(-9223372036854775807)) or 889 not raisesOverflowError(intExpr(-9223372036854775807) + intExpr( INT64_MIN)) or 890 not raisesOverflowError(intExpr(-9223372036854775807) + intExpr(-9223372036854775807)) then 891 writeln(" ***** Addition underflow does not raise OVERFLOW_ERROR."); 892 okay := FALSE; 893 end if; 894 895 if not raisesOverflowError(9223372036854775807 + 9223372036854775807) or 896 not raisesOverflowError(9223372036854775807 + 9223372036854775806) or 897 not raisesOverflowError(9223372036854775806 + 9223372036854775807) or 898 not raisesOverflowError(9223372036854775806 + 9223372036854775806) or 899 not raisesOverflowError(intExpr(9223372036854775807) + 9223372036854775807) or 900 not raisesOverflowError(intExpr(9223372036854775807) + 9223372036854775806) or 901 not raisesOverflowError(intExpr(9223372036854775806) + 9223372036854775807) or 902 not raisesOverflowError(intExpr(9223372036854775806) + 9223372036854775806) or 903 not raisesOverflowError(9223372036854775807 + intExpr(9223372036854775807)) or 904 not raisesOverflowError(9223372036854775807 + intExpr(9223372036854775806)) or 905 not raisesOverflowError(9223372036854775806 + intExpr(9223372036854775807)) or 906 not raisesOverflowError(9223372036854775806 + intExpr(9223372036854775806)) or 907 not raisesOverflowError(intExpr(9223372036854775807) + intExpr(9223372036854775807)) or 908 not raisesOverflowError(intExpr(9223372036854775807) + intExpr(9223372036854775806)) or 909 not raisesOverflowError(intExpr(9223372036854775806) + intExpr(9223372036854775807)) or 910 not raisesOverflowError(intExpr(9223372036854775806) + intExpr(9223372036854775806)) then 911 writeln(" ***** Addition overflow does not raise OVERFLOW_ERROR."); 912 okay := FALSE; 913 end if; 914 915 if not check_reduced_overflow_checking_for_sums then 916 okay := FALSE; 917 end if; 918 919 if okay then 920 writeln("Overflow checking of addition works correct."); 921 else 922 writeln(" ***** Overflow checking of addition does not work correct."); 923 end if; 924 end func; 925 926 927const proc: check_add_assign is func 928 local 929 var boolean: okay is TRUE; 930 var boolean: ok is TRUE; 931 var integer: num is 0; 932 var array integer: arr is [] (0); 933 begin 934 num := INT64_MIN; ok := ok and raisesOverflowError(num +:= -1); 935 num := -9223372036854775807; ok := ok and raisesOverflowError(num +:= -2); 936 num := -9223372036854775806; ok := ok and raisesOverflowError(num +:= -3); 937 num := -9223372036854775798; ok := ok and raisesOverflowError(num +:= -11); 938 num := -9223372036854774952; ok := ok and raisesOverflowError(num +:= -857); 939 num := -9223372036854771170; ok := ok and raisesOverflowError(num +:= -4639); 940 num := -9223372036854737536; ok := ok and raisesOverflowError(num +:= -38273); 941 num := -9223372036854131366; ok := ok and raisesOverflowError(num +:= -644443); 942 num := -9223372036844899256; ok := ok and raisesOverflowError(num +:= -9876553); 943 num := -9223372036842430156; ok := ok and raisesOverflowError(num +:= -12345653); 944 num := -9223372036731319018; ok := ok and raisesOverflowError(num +:= -123456791); 945 num := -9223372033817775310; ok := ok and raisesOverflowError(num +:= -3037000499); 946 num := -9223371962145462841; ok := ok and raisesOverflowError(num +:= -74709312968); 947 num := -9223371289760066696; ok := ok and raisesOverflowError(num +:= -747094709113); 948 num := -9223371102989282772; ok := ok and raisesOverflowError(num +:= -933865493037); 949 num := -9223357724693674122; ok := ok and raisesOverflowError(num +:= -14312161101687); 950 num := -9223131047853734481; ok := ok and raisesOverflowError(num +:= -240989001041328); 951 num := -9221383812660584222; ok := ok and raisesOverflowError(num +:= -1988224194191587); 952 num := -9212609642412704893; ok := ok and raisesOverflowError(num +:= -10762394442070916); 953 num := -8384883669867978009; ok := ok and raisesOverflowError(num +:= -838488366986797800); 954 num := -6148914691236517207; ok := ok and raisesOverflowError(num +:= -3074457345618258602); 955 num := -3074457345618258602; ok := ok and raisesOverflowError(num +:= -6148914691236517207); 956 num := -838488366986797800; ok := ok and raisesOverflowError(num +:= -8384883669867978009); 957 num := -10762394442070916; ok := ok and raisesOverflowError(num +:= -9212609642412704893); 958 num := -1988224194191587; ok := ok and raisesOverflowError(num +:= -9221383812660584222); 959 num := -240989001041328; ok := ok and raisesOverflowError(num +:= -9223131047853734481); 960 num := -14312161101687; ok := ok and raisesOverflowError(num +:= -9223357724693674122); 961 num := -933865493037; ok := ok and raisesOverflowError(num +:= -9223371102989282772); 962 num := -747094709113; ok := ok and raisesOverflowError(num +:= -9223371289760066696); 963 num := -74709312968; ok := ok and raisesOverflowError(num +:= -9223371962145462841); 964 num := -3037000499; ok := ok and raisesOverflowError(num +:= -9223372033817775310); 965 num := -123456791; ok := ok and raisesOverflowError(num +:= -9223372036731319018); 966 num := -12345653; ok := ok and raisesOverflowError(num +:= -9223372036842430156); 967 num := -9876553; ok := ok and raisesOverflowError(num +:= -9223372036844899256); 968 num := -644443; ok := ok and raisesOverflowError(num +:= -9223372036854131366); 969 num := -38273; ok := ok and raisesOverflowError(num +:= -9223372036854737536); 970 num := -4639; ok := ok and raisesOverflowError(num +:= -9223372036854771170); 971 num := -857; ok := ok and raisesOverflowError(num +:= -9223372036854774952); 972 num := -11; ok := ok and raisesOverflowError(num +:= -9223372036854775798); 973 num := -3; ok := ok and raisesOverflowError(num +:= -9223372036854775806); 974 num := -2; ok := ok and raisesOverflowError(num +:= -9223372036854775807); 975 num := -1; ok := ok and raisesOverflowError(num +:= INT64_MIN); 976 if not ok then 977 writeln(" ***** Addition assignment underflow by one does not raise OVERFLOW_ERROR. (1)"); 978 okay := FALSE; 979 end if; 980 981 ok := TRUE; 982 num := INT64_MIN; ok := ok and raisesOverflowError(num +:= intExpr( -1)); 983 num := -9223372036854775807; ok := ok and raisesOverflowError(num +:= intExpr( -2)); 984 num := -9223372036854775806; ok := ok and raisesOverflowError(num +:= intExpr( -3)); 985 num := -9223372036854775798; ok := ok and raisesOverflowError(num +:= intExpr( -11)); 986 num := -9223372036854774952; ok := ok and raisesOverflowError(num +:= intExpr( -857)); 987 num := -9223372036854771170; ok := ok and raisesOverflowError(num +:= intExpr( -4639)); 988 num := -9223372036854737536; ok := ok and raisesOverflowError(num +:= intExpr( -38273)); 989 num := -9223372036854131366; ok := ok and raisesOverflowError(num +:= intExpr( -644443)); 990 num := -9223372036844899256; ok := ok and raisesOverflowError(num +:= intExpr( -9876553)); 991 num := -9223372036842430156; ok := ok and raisesOverflowError(num +:= intExpr( -12345653)); 992 num := -9223372036731319018; ok := ok and raisesOverflowError(num +:= intExpr( -123456791)); 993 num := -9223372033817775310; ok := ok and raisesOverflowError(num +:= intExpr( -3037000499)); 994 num := -9223371962145462841; ok := ok and raisesOverflowError(num +:= intExpr( -74709312968)); 995 num := -9223371289760066696; ok := ok and raisesOverflowError(num +:= intExpr( -747094709113)); 996 num := -9223371102989282772; ok := ok and raisesOverflowError(num +:= intExpr( -933865493037)); 997 num := -9223357724693674122; ok := ok and raisesOverflowError(num +:= intExpr( -14312161101687)); 998 num := -9223131047853734481; ok := ok and raisesOverflowError(num +:= intExpr( -240989001041328)); 999 num := -9221383812660584222; ok := ok and raisesOverflowError(num +:= intExpr( -1988224194191587)); 1000 num := -9212609642412704893; ok := ok and raisesOverflowError(num +:= intExpr( -10762394442070916)); 1001 num := -8384883669867978009; ok := ok and raisesOverflowError(num +:= intExpr( -838488366986797800)); 1002 num := -6148914691236517207; ok := ok and raisesOverflowError(num +:= intExpr(-3074457345618258602)); 1003 num := -3074457345618258602; ok := ok and raisesOverflowError(num +:= intExpr(-6148914691236517207)); 1004 num := -838488366986797800; ok := ok and raisesOverflowError(num +:= intExpr(-8384883669867978009)); 1005 num := -10762394442070916; ok := ok and raisesOverflowError(num +:= intExpr(-9212609642412704893)); 1006 num := -1988224194191587; ok := ok and raisesOverflowError(num +:= intExpr(-9221383812660584222)); 1007 num := -240989001041328; ok := ok and raisesOverflowError(num +:= intExpr(-9223131047853734481)); 1008 num := -14312161101687; ok := ok and raisesOverflowError(num +:= intExpr(-9223357724693674122)); 1009 num := -933865493037; ok := ok and raisesOverflowError(num +:= intExpr(-9223371102989282772)); 1010 num := -747094709113; ok := ok and raisesOverflowError(num +:= intExpr(-9223371289760066696)); 1011 num := -74709312968; ok := ok and raisesOverflowError(num +:= intExpr(-9223371962145462841)); 1012 num := -3037000499; ok := ok and raisesOverflowError(num +:= intExpr(-9223372033817775310)); 1013 num := -123456791; ok := ok and raisesOverflowError(num +:= intExpr(-9223372036731319018)); 1014 num := -12345653; ok := ok and raisesOverflowError(num +:= intExpr(-9223372036842430156)); 1015 num := -9876553; ok := ok and raisesOverflowError(num +:= intExpr(-9223372036844899256)); 1016 num := -644443; ok := ok and raisesOverflowError(num +:= intExpr(-9223372036854131366)); 1017 num := -38273; ok := ok and raisesOverflowError(num +:= intExpr(-9223372036854737536)); 1018 num := -4639; ok := ok and raisesOverflowError(num +:= intExpr(-9223372036854771170)); 1019 num := -857; ok := ok and raisesOverflowError(num +:= intExpr(-9223372036854774952)); 1020 num := -11; ok := ok and raisesOverflowError(num +:= intExpr(-9223372036854775798)); 1021 num := -3; ok := ok and raisesOverflowError(num +:= intExpr(-9223372036854775806)); 1022 num := -2; ok := ok and raisesOverflowError(num +:= intExpr(-9223372036854775807)); 1023 num := -1; ok := ok and raisesOverflowError(num +:= intExpr( INT64_MIN)); 1024 if not ok then 1025 writeln(" ***** Addition assignment underflow by one does not raise OVERFLOW_ERROR. (2)"); 1026 okay := FALSE; 1027 end if; 1028 1029 ok := TRUE; 1030 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] +:= -1); 1031 arr[1] := -9223372036854775807; ok := ok and raisesOverflowError(arr[1] +:= -2); 1032 arr[1] := -9223372036854775806; ok := ok and raisesOverflowError(arr[1] +:= -3); 1033 arr[1] := -9223372036854775798; ok := ok and raisesOverflowError(arr[1] +:= -11); 1034 arr[1] := -9223372036854774952; ok := ok and raisesOverflowError(arr[1] +:= -857); 1035 arr[1] := -9223372036854771170; ok := ok and raisesOverflowError(arr[1] +:= -4639); 1036 arr[1] := -9223372036854737536; ok := ok and raisesOverflowError(arr[1] +:= -38273); 1037 arr[1] := -9223372036854131366; ok := ok and raisesOverflowError(arr[1] +:= -644443); 1038 arr[1] := -9223372036844899256; ok := ok and raisesOverflowError(arr[1] +:= -9876553); 1039 arr[1] := -9223372036842430156; ok := ok and raisesOverflowError(arr[1] +:= -12345653); 1040 arr[1] := -9223372036731319018; ok := ok and raisesOverflowError(arr[1] +:= -123456791); 1041 arr[1] := -9223372033817775310; ok := ok and raisesOverflowError(arr[1] +:= -3037000499); 1042 arr[1] := -9223371962145462841; ok := ok and raisesOverflowError(arr[1] +:= -74709312968); 1043 arr[1] := -9223371289760066696; ok := ok and raisesOverflowError(arr[1] +:= -747094709113); 1044 arr[1] := -9223371102989282772; ok := ok and raisesOverflowError(arr[1] +:= -933865493037); 1045 arr[1] := -9223357724693674122; ok := ok and raisesOverflowError(arr[1] +:= -14312161101687); 1046 arr[1] := -9223131047853734481; ok := ok and raisesOverflowError(arr[1] +:= -240989001041328); 1047 arr[1] := -9221383812660584222; ok := ok and raisesOverflowError(arr[1] +:= -1988224194191587); 1048 arr[1] := -9212609642412704893; ok := ok and raisesOverflowError(arr[1] +:= -10762394442070916); 1049 arr[1] := -8384883669867978009; ok := ok and raisesOverflowError(arr[1] +:= -838488366986797800); 1050 arr[1] := -6148914691236517207; ok := ok and raisesOverflowError(arr[1] +:= -3074457345618258602); 1051 arr[1] := -3074457345618258602; ok := ok and raisesOverflowError(arr[1] +:= -6148914691236517207); 1052 arr[1] := -838488366986797800; ok := ok and raisesOverflowError(arr[1] +:= -8384883669867978009); 1053 arr[1] := -10762394442070916; ok := ok and raisesOverflowError(arr[1] +:= -9212609642412704893); 1054 arr[1] := -1988224194191587; ok := ok and raisesOverflowError(arr[1] +:= -9221383812660584222); 1055 arr[1] := -240989001041328; ok := ok and raisesOverflowError(arr[1] +:= -9223131047853734481); 1056 arr[1] := -14312161101687; ok := ok and raisesOverflowError(arr[1] +:= -9223357724693674122); 1057 arr[1] := -933865493037; ok := ok and raisesOverflowError(arr[1] +:= -9223371102989282772); 1058 arr[1] := -747094709113; ok := ok and raisesOverflowError(arr[1] +:= -9223371289760066696); 1059 arr[1] := -74709312968; ok := ok and raisesOverflowError(arr[1] +:= -9223371962145462841); 1060 arr[1] := -3037000499; ok := ok and raisesOverflowError(arr[1] +:= -9223372033817775310); 1061 arr[1] := -123456791; ok := ok and raisesOverflowError(arr[1] +:= -9223372036731319018); 1062 arr[1] := -12345653; ok := ok and raisesOverflowError(arr[1] +:= -9223372036842430156); 1063 arr[1] := -9876553; ok := ok and raisesOverflowError(arr[1] +:= -9223372036844899256); 1064 arr[1] := -644443; ok := ok and raisesOverflowError(arr[1] +:= -9223372036854131366); 1065 arr[1] := -38273; ok := ok and raisesOverflowError(arr[1] +:= -9223372036854737536); 1066 arr[1] := -4639; ok := ok and raisesOverflowError(arr[1] +:= -9223372036854771170); 1067 arr[1] := -857; ok := ok and raisesOverflowError(arr[1] +:= -9223372036854774952); 1068 arr[1] := -11; ok := ok and raisesOverflowError(arr[1] +:= -9223372036854775798); 1069 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] +:= -9223372036854775806); 1070 arr[1] := -2; ok := ok and raisesOverflowError(arr[1] +:= -9223372036854775807); 1071 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] +:= INT64_MIN); 1072 if not ok then 1073 writeln(" ***** Addition assignment underflow by one does not raise OVERFLOW_ERROR. (3)"); 1074 okay := FALSE; 1075 end if; 1076 1077 ok := TRUE; 1078 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -1)); 1079 arr[1] := -9223372036854775807; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -2)); 1080 arr[1] := -9223372036854775806; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -3)); 1081 arr[1] := -9223372036854775798; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -11)); 1082 arr[1] := -9223372036854774952; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -857)); 1083 arr[1] := -9223372036854771170; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -4639)); 1084 arr[1] := -9223372036854737536; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -38273)); 1085 arr[1] := -9223372036854131366; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -644443)); 1086 arr[1] := -9223372036844899256; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -9876553)); 1087 arr[1] := -9223372036842430156; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -12345653)); 1088 arr[1] := -9223372036731319018; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -123456791)); 1089 arr[1] := -9223372033817775310; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -3037000499)); 1090 arr[1] := -9223371962145462841; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -74709312968)); 1091 arr[1] := -9223371289760066696; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -747094709113)); 1092 arr[1] := -9223371102989282772; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -933865493037)); 1093 arr[1] := -9223357724693674122; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -14312161101687)); 1094 arr[1] := -9223131047853734481; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -240989001041328)); 1095 arr[1] := -9221383812660584222; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -1988224194191587)); 1096 arr[1] := -9212609642412704893; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -10762394442070916)); 1097 arr[1] := -8384883669867978009; ok := ok and raisesOverflowError(arr[1] +:= intExpr( -838488366986797800)); 1098 arr[1] := -6148914691236517207; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-3074457345618258602)); 1099 arr[1] := -3074457345618258602; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-6148914691236517207)); 1100 arr[1] := -838488366986797800; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-8384883669867978009)); 1101 arr[1] := -10762394442070916; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9212609642412704893)); 1102 arr[1] := -1988224194191587; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9221383812660584222)); 1103 arr[1] := -240989001041328; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223131047853734481)); 1104 arr[1] := -14312161101687; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223357724693674122)); 1105 arr[1] := -933865493037; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223371102989282772)); 1106 arr[1] := -747094709113; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223371289760066696)); 1107 arr[1] := -74709312968; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223371962145462841)); 1108 arr[1] := -3037000499; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223372033817775310)); 1109 arr[1] := -123456791; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223372036731319018)); 1110 arr[1] := -12345653; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223372036842430156)); 1111 arr[1] := -9876553; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223372036844899256)); 1112 arr[1] := -644443; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223372036854131366)); 1113 arr[1] := -38273; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223372036854737536)); 1114 arr[1] := -4639; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223372036854771170)); 1115 arr[1] := -857; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223372036854774952)); 1116 arr[1] := -11; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223372036854775798)); 1117 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223372036854775806)); 1118 arr[1] := -2; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223372036854775807)); 1119 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] +:= intExpr( INT64_MIN)); 1120 if not ok then 1121 writeln(" ***** Addition assignment underflow by one does not raise OVERFLOW_ERROR. (4)"); 1122 okay := FALSE; 1123 end if; 1124 1125 ok := TRUE; 1126 num := 9223372036854775807; ok := ok and raisesOverflowError(num +:= 1); 1127 num := 9223372036854775806; ok := ok and raisesOverflowError(num +:= 2); 1128 num := 9223372036854775805; ok := ok and raisesOverflowError(num +:= 3); 1129 num := 9223372036854775797; ok := ok and raisesOverflowError(num +:= 11); 1130 num := 9223372036854774951; ok := ok and raisesOverflowError(num +:= 857); 1131 num := 9223372036854771169; ok := ok and raisesOverflowError(num +:= 4639); 1132 num := 9223372036854737535; ok := ok and raisesOverflowError(num +:= 38273); 1133 num := 9223372036854131365; ok := ok and raisesOverflowError(num +:= 644443); 1134 num := 9223372036844899255; ok := ok and raisesOverflowError(num +:= 9876553); 1135 num := 9223372036842430155; ok := ok and raisesOverflowError(num +:= 12345653); 1136 num := 9223372036731319017; ok := ok and raisesOverflowError(num +:= 123456791); 1137 num := 9223372033817775309; ok := ok and raisesOverflowError(num +:= 3037000499); 1138 num := 9223371962145462840; ok := ok and raisesOverflowError(num +:= 74709312968); 1139 num := 9223371289760066695; ok := ok and raisesOverflowError(num +:= 747094709113); 1140 num := 9223371102989282771; ok := ok and raisesOverflowError(num +:= 933865493037); 1141 num := 9223357724693674121; ok := ok and raisesOverflowError(num +:= 14312161101687); 1142 num := 9223131047853734480; ok := ok and raisesOverflowError(num +:= 240989001041328); 1143 num := 9221383812660584221; ok := ok and raisesOverflowError(num +:= 1988224194191587); 1144 num := 9212609642412704892; ok := ok and raisesOverflowError(num +:= 10762394442070916); 1145 num := 8384883669867978008; ok := ok and raisesOverflowError(num +:= 838488366986797800); 1146 num := 6148914691236517206; ok := ok and raisesOverflowError(num +:= 3074457345618258602); 1147 num := 3074457345618258602; ok := ok and raisesOverflowError(num +:= 6148914691236517206); 1148 num := 838488366986797800; ok := ok and raisesOverflowError(num +:= 8384883669867978008); 1149 num := 10762394442070916; ok := ok and raisesOverflowError(num +:= 9212609642412704892); 1150 num := 1988224194191587; ok := ok and raisesOverflowError(num +:= 9221383812660584221); 1151 num := 240989001041328; ok := ok and raisesOverflowError(num +:= 9223131047853734480); 1152 num := 14312161101687; ok := ok and raisesOverflowError(num +:= 9223357724693674121); 1153 num := 933865493037; ok := ok and raisesOverflowError(num +:= 9223371102989282771); 1154 num := 747094709113; ok := ok and raisesOverflowError(num +:= 9223371289760066695); 1155 num := 74709312968; ok := ok and raisesOverflowError(num +:= 9223371962145462840); 1156 num := 3037000499; ok := ok and raisesOverflowError(num +:= 9223372033817775309); 1157 num := 123456791; ok := ok and raisesOverflowError(num +:= 9223372036731319017); 1158 num := 12345653; ok := ok and raisesOverflowError(num +:= 9223372036842430155); 1159 num := 9876553; ok := ok and raisesOverflowError(num +:= 9223372036844899255); 1160 num := 644443; ok := ok and raisesOverflowError(num +:= 9223372036854131365); 1161 num := 38273; ok := ok and raisesOverflowError(num +:= 9223372036854737535); 1162 num := 4639; ok := ok and raisesOverflowError(num +:= 9223372036854771169); 1163 num := 857; ok := ok and raisesOverflowError(num +:= 9223372036854774951); 1164 num := 11; ok := ok and raisesOverflowError(num +:= 9223372036854775797); 1165 num := 3; ok := ok and raisesOverflowError(num +:= 9223372036854775805); 1166 num := 2; ok := ok and raisesOverflowError(num +:= 9223372036854775806); 1167 num := 1; ok := ok and raisesOverflowError(num +:= 9223372036854775807); 1168 if not ok then 1169 writeln(" ***** Addition assignment overflow by one does not raise OVERFLOW_ERROR. (1)"); 1170 okay := FALSE; 1171 end if; 1172 1173 ok := TRUE; 1174 num := 9223372036854775807; ok := ok and raisesOverflowError(num +:= intExpr( 1)); 1175 num := 9223372036854775806; ok := ok and raisesOverflowError(num +:= intExpr( 2)); 1176 num := 9223372036854775805; ok := ok and raisesOverflowError(num +:= intExpr( 3)); 1177 num := 9223372036854775797; ok := ok and raisesOverflowError(num +:= intExpr( 11)); 1178 num := 9223372036854774951; ok := ok and raisesOverflowError(num +:= intExpr( 857)); 1179 num := 9223372036854771169; ok := ok and raisesOverflowError(num +:= intExpr( 4639)); 1180 num := 9223372036854737535; ok := ok and raisesOverflowError(num +:= intExpr( 38273)); 1181 num := 9223372036854131365; ok := ok and raisesOverflowError(num +:= intExpr( 644443)); 1182 num := 9223372036844899255; ok := ok and raisesOverflowError(num +:= intExpr( 9876553)); 1183 num := 9223372036842430155; ok := ok and raisesOverflowError(num +:= intExpr( 12345653)); 1184 num := 9223372036731319017; ok := ok and raisesOverflowError(num +:= intExpr( 123456791)); 1185 num := 9223372033817775309; ok := ok and raisesOverflowError(num +:= intExpr( 3037000499)); 1186 num := 9223371962145462840; ok := ok and raisesOverflowError(num +:= intExpr( 74709312968)); 1187 num := 9223371289760066695; ok := ok and raisesOverflowError(num +:= intExpr( 747094709113)); 1188 num := 9223371102989282771; ok := ok and raisesOverflowError(num +:= intExpr( 933865493037)); 1189 num := 9223357724693674121; ok := ok and raisesOverflowError(num +:= intExpr( 14312161101687)); 1190 num := 9223131047853734480; ok := ok and raisesOverflowError(num +:= intExpr( 240989001041328)); 1191 num := 9221383812660584221; ok := ok and raisesOverflowError(num +:= intExpr( 1988224194191587)); 1192 num := 9212609642412704892; ok := ok and raisesOverflowError(num +:= intExpr( 10762394442070916)); 1193 num := 8384883669867978008; ok := ok and raisesOverflowError(num +:= intExpr( 838488366986797800)); 1194 num := 6148914691236517206; ok := ok and raisesOverflowError(num +:= intExpr(3074457345618258602)); 1195 num := 3074457345618258602; ok := ok and raisesOverflowError(num +:= intExpr(6148914691236517206)); 1196 num := 838488366986797800; ok := ok and raisesOverflowError(num +:= intExpr(8384883669867978008)); 1197 num := 10762394442070916; ok := ok and raisesOverflowError(num +:= intExpr(9212609642412704892)); 1198 num := 1988224194191587; ok := ok and raisesOverflowError(num +:= intExpr(9221383812660584221)); 1199 num := 240989001041328; ok := ok and raisesOverflowError(num +:= intExpr(9223131047853734480)); 1200 num := 14312161101687; ok := ok and raisesOverflowError(num +:= intExpr(9223357724693674121)); 1201 num := 933865493037; ok := ok and raisesOverflowError(num +:= intExpr(9223371102989282771)); 1202 num := 747094709113; ok := ok and raisesOverflowError(num +:= intExpr(9223371289760066695)); 1203 num := 74709312968; ok := ok and raisesOverflowError(num +:= intExpr(9223371962145462840)); 1204 num := 3037000499; ok := ok and raisesOverflowError(num +:= intExpr(9223372033817775309)); 1205 num := 123456791; ok := ok and raisesOverflowError(num +:= intExpr(9223372036731319017)); 1206 num := 12345653; ok := ok and raisesOverflowError(num +:= intExpr(9223372036842430155)); 1207 num := 9876553; ok := ok and raisesOverflowError(num +:= intExpr(9223372036844899255)); 1208 num := 644443; ok := ok and raisesOverflowError(num +:= intExpr(9223372036854131365)); 1209 num := 38273; ok := ok and raisesOverflowError(num +:= intExpr(9223372036854737535)); 1210 num := 4639; ok := ok and raisesOverflowError(num +:= intExpr(9223372036854771169)); 1211 num := 857; ok := ok and raisesOverflowError(num +:= intExpr(9223372036854774951)); 1212 num := 11; ok := ok and raisesOverflowError(num +:= intExpr(9223372036854775797)); 1213 num := 3; ok := ok and raisesOverflowError(num +:= intExpr(9223372036854775805)); 1214 num := 2; ok := ok and raisesOverflowError(num +:= intExpr(9223372036854775806)); 1215 num := 1; ok := ok and raisesOverflowError(num +:= intExpr(9223372036854775807)); 1216 if not ok then 1217 writeln(" ***** Addition assignment overflow by one does not raise OVERFLOW_ERROR. (2)"); 1218 okay := FALSE; 1219 end if; 1220 1221 ok := TRUE; 1222 arr[1] := 9223372036854775807; ok := ok and raisesOverflowError(arr[1] +:= 1); 1223 arr[1] := 9223372036854775806; ok := ok and raisesOverflowError(arr[1] +:= 2); 1224 arr[1] := 9223372036854775805; ok := ok and raisesOverflowError(arr[1] +:= 3); 1225 arr[1] := 9223372036854775797; ok := ok and raisesOverflowError(arr[1] +:= 11); 1226 arr[1] := 9223372036854774951; ok := ok and raisesOverflowError(arr[1] +:= 857); 1227 arr[1] := 9223372036854771169; ok := ok and raisesOverflowError(arr[1] +:= 4639); 1228 arr[1] := 9223372036854737535; ok := ok and raisesOverflowError(arr[1] +:= 38273); 1229 arr[1] := 9223372036854131365; ok := ok and raisesOverflowError(arr[1] +:= 644443); 1230 arr[1] := 9223372036844899255; ok := ok and raisesOverflowError(arr[1] +:= 9876553); 1231 arr[1] := 9223372036842430155; ok := ok and raisesOverflowError(arr[1] +:= 12345653); 1232 arr[1] := 9223372036731319017; ok := ok and raisesOverflowError(arr[1] +:= 123456791); 1233 arr[1] := 9223372033817775309; ok := ok and raisesOverflowError(arr[1] +:= 3037000499); 1234 arr[1] := 9223371962145462840; ok := ok and raisesOverflowError(arr[1] +:= 74709312968); 1235 arr[1] := 9223371289760066695; ok := ok and raisesOverflowError(arr[1] +:= 747094709113); 1236 arr[1] := 9223371102989282771; ok := ok and raisesOverflowError(arr[1] +:= 933865493037); 1237 arr[1] := 9223357724693674121; ok := ok and raisesOverflowError(arr[1] +:= 14312161101687); 1238 arr[1] := 9223131047853734480; ok := ok and raisesOverflowError(arr[1] +:= 240989001041328); 1239 arr[1] := 9221383812660584221; ok := ok and raisesOverflowError(arr[1] +:= 1988224194191587); 1240 arr[1] := 9212609642412704892; ok := ok and raisesOverflowError(arr[1] +:= 10762394442070916); 1241 arr[1] := 8384883669867978008; ok := ok and raisesOverflowError(arr[1] +:= 838488366986797800); 1242 arr[1] := 6148914691236517206; ok := ok and raisesOverflowError(arr[1] +:= 3074457345618258602); 1243 arr[1] := 3074457345618258602; ok := ok and raisesOverflowError(arr[1] +:= 6148914691236517206); 1244 arr[1] := 838488366986797800; ok := ok and raisesOverflowError(arr[1] +:= 8384883669867978008); 1245 arr[1] := 10762394442070916; ok := ok and raisesOverflowError(arr[1] +:= 9212609642412704892); 1246 arr[1] := 1988224194191587; ok := ok and raisesOverflowError(arr[1] +:= 9221383812660584221); 1247 arr[1] := 240989001041328; ok := ok and raisesOverflowError(arr[1] +:= 9223131047853734480); 1248 arr[1] := 14312161101687; ok := ok and raisesOverflowError(arr[1] +:= 9223357724693674121); 1249 arr[1] := 933865493037; ok := ok and raisesOverflowError(arr[1] +:= 9223371102989282771); 1250 arr[1] := 747094709113; ok := ok and raisesOverflowError(arr[1] +:= 9223371289760066695); 1251 arr[1] := 74709312968; ok := ok and raisesOverflowError(arr[1] +:= 9223371962145462840); 1252 arr[1] := 3037000499; ok := ok and raisesOverflowError(arr[1] +:= 9223372033817775309); 1253 arr[1] := 123456791; ok := ok and raisesOverflowError(arr[1] +:= 9223372036731319017); 1254 arr[1] := 12345653; ok := ok and raisesOverflowError(arr[1] +:= 9223372036842430155); 1255 arr[1] := 9876553; ok := ok and raisesOverflowError(arr[1] +:= 9223372036844899255); 1256 arr[1] := 644443; ok := ok and raisesOverflowError(arr[1] +:= 9223372036854131365); 1257 arr[1] := 38273; ok := ok and raisesOverflowError(arr[1] +:= 9223372036854737535); 1258 arr[1] := 4639; ok := ok and raisesOverflowError(arr[1] +:= 9223372036854771169); 1259 arr[1] := 857; ok := ok and raisesOverflowError(arr[1] +:= 9223372036854774951); 1260 arr[1] := 11; ok := ok and raisesOverflowError(arr[1] +:= 9223372036854775797); 1261 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] +:= 9223372036854775805); 1262 arr[1] := 2; ok := ok and raisesOverflowError(arr[1] +:= 9223372036854775806); 1263 arr[1] := 1; ok := ok and raisesOverflowError(arr[1] +:= 9223372036854775807); 1264 if not ok then 1265 writeln(" ***** Addition assignment overflow by one does not raise OVERFLOW_ERROR. (3)"); 1266 okay := FALSE; 1267 end if; 1268 1269 ok := TRUE; 1270 arr[1] := 9223372036854775807; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 1)); 1271 arr[1] := 9223372036854775806; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 2)); 1272 arr[1] := 9223372036854775805; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 3)); 1273 arr[1] := 9223372036854775797; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 11)); 1274 arr[1] := 9223372036854774951; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 857)); 1275 arr[1] := 9223372036854771169; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 4639)); 1276 arr[1] := 9223372036854737535; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 38273)); 1277 arr[1] := 9223372036854131365; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 644443)); 1278 arr[1] := 9223372036844899255; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 9876553)); 1279 arr[1] := 9223372036842430155; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 12345653)); 1280 arr[1] := 9223372036731319017; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 123456791)); 1281 arr[1] := 9223372033817775309; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 3037000499)); 1282 arr[1] := 9223371962145462840; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 74709312968)); 1283 arr[1] := 9223371289760066695; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 747094709113)); 1284 arr[1] := 9223371102989282771; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 933865493037)); 1285 arr[1] := 9223357724693674121; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 14312161101687)); 1286 arr[1] := 9223131047853734480; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 240989001041328)); 1287 arr[1] := 9221383812660584221; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 1988224194191587)); 1288 arr[1] := 9212609642412704892; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 10762394442070916)); 1289 arr[1] := 8384883669867978008; ok := ok and raisesOverflowError(arr[1] +:= intExpr( 838488366986797800)); 1290 arr[1] := 6148914691236517206; ok := ok and raisesOverflowError(arr[1] +:= intExpr(3074457345618258602)); 1291 arr[1] := 3074457345618258602; ok := ok and raisesOverflowError(arr[1] +:= intExpr(6148914691236517206)); 1292 arr[1] := 838488366986797800; ok := ok and raisesOverflowError(arr[1] +:= intExpr(8384883669867978008)); 1293 arr[1] := 10762394442070916; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9212609642412704892)); 1294 arr[1] := 1988224194191587; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9221383812660584221)); 1295 arr[1] := 240989001041328; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223131047853734480)); 1296 arr[1] := 14312161101687; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223357724693674121)); 1297 arr[1] := 933865493037; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223371102989282771)); 1298 arr[1] := 747094709113; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223371289760066695)); 1299 arr[1] := 74709312968; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223371962145462840)); 1300 arr[1] := 3037000499; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372033817775309)); 1301 arr[1] := 123456791; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036731319017)); 1302 arr[1] := 12345653; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036842430155)); 1303 arr[1] := 9876553; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036844899255)); 1304 arr[1] := 644443; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036854131365)); 1305 arr[1] := 38273; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036854737535)); 1306 arr[1] := 4639; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036854771169)); 1307 arr[1] := 857; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036854774951)); 1308 arr[1] := 11; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036854775797)); 1309 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036854775805)); 1310 arr[1] := 2; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036854775806)); 1311 arr[1] := 1; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036854775807)); 1312 if not ok then 1313 writeln(" ***** Addition assignment overflow by one does not raise OVERFLOW_ERROR. (4)"); 1314 okay := FALSE; 1315 end if; 1316 1317 ok := TRUE; 1318 num := INT64_MIN; ok := ok and raisesOverflowError(num +:= INT64_MIN); 1319 num := INT64_MIN; ok := ok and raisesOverflowError(num +:= -9223372036854775807); 1320 num := -9223372036854775807; ok := ok and raisesOverflowError(num +:= INT64_MIN); 1321 num := -9223372036854775807; ok := ok and raisesOverflowError(num +:= -9223372036854775807); 1322 num := INT64_MIN; ok := ok and raisesOverflowError(num +:= intExpr( INT64_MIN)); 1323 num := INT64_MIN; ok := ok and raisesOverflowError(num +:= intExpr(-9223372036854775807)); 1324 num := -9223372036854775807; ok := ok and raisesOverflowError(num +:= intExpr( INT64_MIN)); 1325 num := -9223372036854775807; ok := ok and raisesOverflowError(num +:= intExpr(-9223372036854775807)); 1326 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] +:= INT64_MIN); 1327 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] +:= -9223372036854775807); 1328 arr[1] := -9223372036854775807; ok := ok and raisesOverflowError(arr[1] +:= INT64_MIN); 1329 arr[1] := -9223372036854775807; ok := ok and raisesOverflowError(arr[1] +:= -9223372036854775807); 1330 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] +:= intExpr( INT64_MIN)); 1331 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223372036854775807)); 1332 arr[1] := -9223372036854775807; ok := ok and raisesOverflowError(arr[1] +:= intExpr( INT64_MIN)); 1333 arr[1] := -9223372036854775807; ok := ok and raisesOverflowError(arr[1] +:= intExpr(-9223372036854775807)); 1334 if not ok then 1335 writeln(" ***** Addition assignment underflow does not raise OVERFLOW_ERROR."); 1336 okay := FALSE; 1337 end if; 1338 1339 ok := TRUE; 1340 num := 9223372036854775807; ok := ok and raisesOverflowError(num +:= 9223372036854775807); 1341 num := 9223372036854775807; ok := ok and raisesOverflowError(num +:= 9223372036854775806); 1342 num := 9223372036854775806; ok := ok and raisesOverflowError(num +:= 9223372036854775807); 1343 num := 9223372036854775806; ok := ok and raisesOverflowError(num +:= 9223372036854775806); 1344 num := 9223372036854775807; ok := ok and raisesOverflowError(num +:= intExpr(9223372036854775807)); 1345 num := 9223372036854775807; ok := ok and raisesOverflowError(num +:= intExpr(9223372036854775806)); 1346 num := 9223372036854775806; ok := ok and raisesOverflowError(num +:= intExpr(9223372036854775807)); 1347 num := 9223372036854775806; ok := ok and raisesOverflowError(num +:= intExpr(9223372036854775806)); 1348 arr[1] := 9223372036854775807; ok := ok and raisesOverflowError(arr[1] +:= 9223372036854775807); 1349 arr[1] := 9223372036854775807; ok := ok and raisesOverflowError(arr[1] +:= 9223372036854775806); 1350 arr[1] := 9223372036854775806; ok := ok and raisesOverflowError(arr[1] +:= 9223372036854775807); 1351 arr[1] := 9223372036854775806; ok := ok and raisesOverflowError(arr[1] +:= 9223372036854775806); 1352 arr[1] := 9223372036854775807; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036854775807)); 1353 arr[1] := 9223372036854775807; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036854775806)); 1354 arr[1] := 9223372036854775806; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036854775807)); 1355 arr[1] := 9223372036854775806; ok := ok and raisesOverflowError(arr[1] +:= intExpr(9223372036854775806)); 1356 if not ok then 1357 writeln(" ***** Addition assignment overflow does not raise OVERFLOW_ERROR."); 1358 okay := FALSE; 1359 end if; 1360 1361 if okay then 1362 writeln("Overflow checking of addition assignment works correct."); 1363 else 1364 writeln(" ***** Overflow checking of addition assignment does not work correct."); 1365 end if; 1366 end func; 1367 1368 1369const proc: check_subtract is func 1370 local 1371 var boolean: okay is TRUE; 1372 begin 1373 if not raisesOverflowError( INT64_MIN - 1) or 1374 not raisesOverflowError(-9223372036854775807 - 2) or 1375 not raisesOverflowError(-9223372036854775806 - 3) or 1376 not raisesOverflowError(-9223372036854775798 - 11) or 1377 not raisesOverflowError(-9223372036854774952 - 857) or 1378 not raisesOverflowError(-9223372036854771170 - 4639) or 1379 not raisesOverflowError(-9223372036854737536 - 38273) or 1380 not raisesOverflowError(-9223372036854131366 - 644443) or 1381 not raisesOverflowError(-9223372036844899256 - 9876553) or 1382 not raisesOverflowError(-9223372036842430156 - 12345653) or 1383 not raisesOverflowError(-9223372036731319018 - 123456791) or 1384 not raisesOverflowError(-9223372033817775310 - 3037000499) or 1385 not raisesOverflowError(-9223371962145462841 - 74709312968) or 1386 not raisesOverflowError(-9223371289760066696 - 747094709113) or 1387 not raisesOverflowError(-9223371102989282772 - 933865493037) or 1388 not raisesOverflowError(-9223357724693674122 - 14312161101687) or 1389 not raisesOverflowError(-9223131047853734481 - 240989001041328) or 1390 not raisesOverflowError(-9221383812660584222 - 1988224194191587) or 1391 not raisesOverflowError(-9212609642412704893 - 10762394442070916) or 1392 not raisesOverflowError(-8384883669867978009 - 838488366986797800) or 1393 not raisesOverflowError(-6148914691236517207 - 3074457345618258602) or 1394 not raisesOverflowError(-3074457345618258602 - 6148914691236517207) or 1395 not raisesOverflowError( -838488366986797800 - 8384883669867978009) or 1396 not raisesOverflowError( -10762394442070916 - 9212609642412704893) or 1397 not raisesOverflowError( -1988224194191587 - 9221383812660584222) or 1398 not raisesOverflowError( -240989001041328 - 9223131047853734481) or 1399 not raisesOverflowError( -14312161101687 - 9223357724693674122) or 1400 not raisesOverflowError( -933865493037 - 9223371102989282772) or 1401 not raisesOverflowError( -747094709113 - 9223371289760066696) or 1402 not raisesOverflowError( -74709312968 - 9223371962145462841) or 1403 not raisesOverflowError( -3037000499 - 9223372033817775310) or 1404 not raisesOverflowError( -123456791 - 9223372036731319018) or 1405 not raisesOverflowError( -12345653 - 9223372036842430156) or 1406 not raisesOverflowError( -9876553 - 9223372036844899256) or 1407 not raisesOverflowError( -644443 - 9223372036854131366) or 1408 not raisesOverflowError( -38273 - 9223372036854737536) or 1409 not raisesOverflowError( -4639 - 9223372036854771170) or 1410 not raisesOverflowError( -857 - 9223372036854774952) or 1411 not raisesOverflowError( -11 - 9223372036854775798) or 1412 not raisesOverflowError( -3 - 9223372036854775806) or 1413 not raisesOverflowError( -2 - 9223372036854775807) then 1414 writeln(" ***** Subtraction underflow by one does not raise OVERFLOW_ERROR. (1)"); 1415 okay := FALSE; 1416 end if; 1417 1418 if not raisesOverflowError(intExpr( INT64_MIN) - 1) or 1419 not raisesOverflowError(intExpr(-9223372036854775807) - 2) or 1420 not raisesOverflowError(intExpr(-9223372036854775806) - 3) or 1421 not raisesOverflowError(intExpr(-9223372036854775798) - 11) or 1422 not raisesOverflowError(intExpr(-9223372036854774952) - 857) or 1423 not raisesOverflowError(intExpr(-9223372036854771170) - 4639) or 1424 not raisesOverflowError(intExpr(-9223372036854737536) - 38273) or 1425 not raisesOverflowError(intExpr(-9223372036854131366) - 644443) or 1426 not raisesOverflowError(intExpr(-9223372036844899256) - 9876553) or 1427 not raisesOverflowError(intExpr(-9223372036842430156) - 12345653) or 1428 not raisesOverflowError(intExpr(-9223372036731319018) - 123456791) or 1429 not raisesOverflowError(intExpr(-9223372033817775310) - 3037000499) or 1430 not raisesOverflowError(intExpr(-9223371962145462841) - 74709312968) or 1431 not raisesOverflowError(intExpr(-9223371289760066696) - 747094709113) or 1432 not raisesOverflowError(intExpr(-9223371102989282772) - 933865493037) or 1433 not raisesOverflowError(intExpr(-9223357724693674122) - 14312161101687) or 1434 not raisesOverflowError(intExpr(-9223131047853734481) - 240989001041328) or 1435 not raisesOverflowError(intExpr(-9221383812660584222) - 1988224194191587) or 1436 not raisesOverflowError(intExpr(-9212609642412704893) - 10762394442070916) or 1437 not raisesOverflowError(intExpr(-8384883669867978009) - 838488366986797800) or 1438 not raisesOverflowError(intExpr(-6148914691236517207) - 3074457345618258602) or 1439 not raisesOverflowError(intExpr(-3074457345618258602) - 6148914691236517207) or 1440 not raisesOverflowError(intExpr( -838488366986797800) - 8384883669867978009) or 1441 not raisesOverflowError(intExpr( -10762394442070916) - 9212609642412704893) or 1442 not raisesOverflowError(intExpr( -1988224194191587) - 9221383812660584222) or 1443 not raisesOverflowError(intExpr( -240989001041328) - 9223131047853734481) or 1444 not raisesOverflowError(intExpr( -14312161101687) - 9223357724693674122) or 1445 not raisesOverflowError(intExpr( -933865493037) - 9223371102989282772) or 1446 not raisesOverflowError(intExpr( -747094709113) - 9223371289760066696) or 1447 not raisesOverflowError(intExpr( -74709312968) - 9223371962145462841) or 1448 not raisesOverflowError(intExpr( -3037000499) - 9223372033817775310) or 1449 not raisesOverflowError(intExpr( -123456791) - 9223372036731319018) or 1450 not raisesOverflowError(intExpr( -12345653) - 9223372036842430156) or 1451 not raisesOverflowError(intExpr( -9876553) - 9223372036844899256) or 1452 not raisesOverflowError(intExpr( -644443) - 9223372036854131366) or 1453 not raisesOverflowError(intExpr( -38273) - 9223372036854737536) or 1454 not raisesOverflowError(intExpr( -4639) - 9223372036854771170) or 1455 not raisesOverflowError(intExpr( -857) - 9223372036854774952) or 1456 not raisesOverflowError(intExpr( -11) - 9223372036854775798) or 1457 not raisesOverflowError(intExpr( -3) - 9223372036854775806) or 1458 not raisesOverflowError(intExpr( -2) - 9223372036854775807) then 1459 writeln(" ***** Subtraction underflow by one does not raise OVERFLOW_ERROR. (2)"); 1460 okay := FALSE; 1461 end if; 1462 1463 if not raisesOverflowError( INT64_MIN - intExpr( 1)) or 1464 not raisesOverflowError(-9223372036854775807 - intExpr( 2)) or 1465 not raisesOverflowError(-9223372036854775806 - intExpr( 3)) or 1466 not raisesOverflowError(-9223372036854775798 - intExpr( 11)) or 1467 not raisesOverflowError(-9223372036854774952 - intExpr( 857)) or 1468 not raisesOverflowError(-9223372036854771170 - intExpr( 4639)) or 1469 not raisesOverflowError(-9223372036854737536 - intExpr( 38273)) or 1470 not raisesOverflowError(-9223372036854131366 - intExpr( 644443)) or 1471 not raisesOverflowError(-9223372036844899256 - intExpr( 9876553)) or 1472 not raisesOverflowError(-9223372036842430156 - intExpr( 12345653)) or 1473 not raisesOverflowError(-9223372036731319018 - intExpr( 123456791)) or 1474 not raisesOverflowError(-9223372033817775310 - intExpr( 3037000499)) or 1475 not raisesOverflowError(-9223371962145462841 - intExpr( 74709312968)) or 1476 not raisesOverflowError(-9223371289760066696 - intExpr( 747094709113)) or 1477 not raisesOverflowError(-9223371102989282772 - intExpr( 933865493037)) or 1478 not raisesOverflowError(-9223357724693674122 - intExpr( 14312161101687)) or 1479 not raisesOverflowError(-9223131047853734481 - intExpr( 240989001041328)) or 1480 not raisesOverflowError(-9221383812660584222 - intExpr( 1988224194191587)) or 1481 not raisesOverflowError(-9212609642412704893 - intExpr( 10762394442070916)) or 1482 not raisesOverflowError(-8384883669867978009 - intExpr( 838488366986797800)) or 1483 not raisesOverflowError(-6148914691236517207 - intExpr(3074457345618258602)) or 1484 not raisesOverflowError(-3074457345618258602 - intExpr(6148914691236517207)) or 1485 not raisesOverflowError( -838488366986797800 - intExpr(8384883669867978009)) or 1486 not raisesOverflowError( -10762394442070916 - intExpr(9212609642412704893)) or 1487 not raisesOverflowError( -1988224194191587 - intExpr(9221383812660584222)) or 1488 not raisesOverflowError( -240989001041328 - intExpr(9223131047853734481)) or 1489 not raisesOverflowError( -14312161101687 - intExpr(9223357724693674122)) or 1490 not raisesOverflowError( -933865493037 - intExpr(9223371102989282772)) or 1491 not raisesOverflowError( -747094709113 - intExpr(9223371289760066696)) or 1492 not raisesOverflowError( -74709312968 - intExpr(9223371962145462841)) or 1493 not raisesOverflowError( -3037000499 - intExpr(9223372033817775310)) or 1494 not raisesOverflowError( -123456791 - intExpr(9223372036731319018)) or 1495 not raisesOverflowError( -12345653 - intExpr(9223372036842430156)) or 1496 not raisesOverflowError( -9876553 - intExpr(9223372036844899256)) or 1497 not raisesOverflowError( -644443 - intExpr(9223372036854131366)) or 1498 not raisesOverflowError( -38273 - intExpr(9223372036854737536)) or 1499 not raisesOverflowError( -4639 - intExpr(9223372036854771170)) or 1500 not raisesOverflowError( -857 - intExpr(9223372036854774952)) or 1501 not raisesOverflowError( -11 - intExpr(9223372036854775798)) or 1502 not raisesOverflowError( -3 - intExpr(9223372036854775806)) or 1503 not raisesOverflowError( -2 - intExpr(9223372036854775807)) then 1504 writeln(" ***** Subtraction underflow by one does not raise OVERFLOW_ERROR. (3)"); 1505 okay := FALSE; 1506 end if; 1507 1508 if not raisesOverflowError(intExpr( INT64_MIN) - intExpr( 1)) or 1509 not raisesOverflowError(intExpr(-9223372036854775807) - intExpr( 2)) or 1510 not raisesOverflowError(intExpr(-9223372036854775806) - intExpr( 3)) or 1511 not raisesOverflowError(intExpr(-9223372036854775798) - intExpr( 11)) or 1512 not raisesOverflowError(intExpr(-9223372036854774952) - intExpr( 857)) or 1513 not raisesOverflowError(intExpr(-9223372036854771170) - intExpr( 4639)) or 1514 not raisesOverflowError(intExpr(-9223372036854737536) - intExpr( 38273)) or 1515 not raisesOverflowError(intExpr(-9223372036854131366) - intExpr( 644443)) or 1516 not raisesOverflowError(intExpr(-9223372036844899256) - intExpr( 9876553)) or 1517 not raisesOverflowError(intExpr(-9223372036842430156) - intExpr( 12345653)) or 1518 not raisesOverflowError(intExpr(-9223372036731319018) - intExpr( 123456791)) or 1519 not raisesOverflowError(intExpr(-9223372033817775310) - intExpr( 3037000499)) or 1520 not raisesOverflowError(intExpr(-9223371962145462841) - intExpr( 74709312968)) or 1521 not raisesOverflowError(intExpr(-9223371289760066696) - intExpr( 747094709113)) or 1522 not raisesOverflowError(intExpr(-9223371102989282772) - intExpr( 933865493037)) or 1523 not raisesOverflowError(intExpr(-9223357724693674122) - intExpr( 14312161101687)) or 1524 not raisesOverflowError(intExpr(-9223131047853734481) - intExpr( 240989001041328)) or 1525 not raisesOverflowError(intExpr(-9221383812660584222) - intExpr( 1988224194191587)) or 1526 not raisesOverflowError(intExpr(-9212609642412704893) - intExpr( 10762394442070916)) or 1527 not raisesOverflowError(intExpr(-8384883669867978009) - intExpr( 838488366986797800)) or 1528 not raisesOverflowError(intExpr(-6148914691236517207) - intExpr(3074457345618258602)) or 1529 not raisesOverflowError(intExpr(-3074457345618258602) - intExpr(6148914691236517207)) or 1530 not raisesOverflowError(intExpr( -838488366986797800) - intExpr(8384883669867978009)) or 1531 not raisesOverflowError(intExpr( -10762394442070916) - intExpr(9212609642412704893)) or 1532 not raisesOverflowError(intExpr( -1988224194191587) - intExpr(9221383812660584222)) or 1533 not raisesOverflowError(intExpr( -240989001041328) - intExpr(9223131047853734481)) or 1534 not raisesOverflowError(intExpr( -14312161101687) - intExpr(9223357724693674122)) or 1535 not raisesOverflowError(intExpr( -933865493037) - intExpr(9223371102989282772)) or 1536 not raisesOverflowError(intExpr( -747094709113) - intExpr(9223371289760066696)) or 1537 not raisesOverflowError(intExpr( -74709312968) - intExpr(9223371962145462841)) or 1538 not raisesOverflowError(intExpr( -3037000499) - intExpr(9223372033817775310)) or 1539 not raisesOverflowError(intExpr( -123456791) - intExpr(9223372036731319018)) or 1540 not raisesOverflowError(intExpr( -12345653) - intExpr(9223372036842430156)) or 1541 not raisesOverflowError(intExpr( -9876553) - intExpr(9223372036844899256)) or 1542 not raisesOverflowError(intExpr( -644443) - intExpr(9223372036854131366)) or 1543 not raisesOverflowError(intExpr( -38273) - intExpr(9223372036854737536)) or 1544 not raisesOverflowError(intExpr( -4639) - intExpr(9223372036854771170)) or 1545 not raisesOverflowError(intExpr( -857) - intExpr(9223372036854774952)) or 1546 not raisesOverflowError(intExpr( -11) - intExpr(9223372036854775798)) or 1547 not raisesOverflowError(intExpr( -3) - intExpr(9223372036854775806)) or 1548 not raisesOverflowError(intExpr( -2) - intExpr(9223372036854775807)) then 1549 writeln(" ***** Subtraction underflow by one does not raise OVERFLOW_ERROR. (4)"); 1550 okay := FALSE; 1551 end if; 1552 1553 if not raisesOverflowError(9223372036854775807 - -1) or 1554 not raisesOverflowError(9223372036854775806 - -2) or 1555 not raisesOverflowError(9223372036854775805 - -3) or 1556 not raisesOverflowError(9223372036854775797 - -11) or 1557 not raisesOverflowError(9223372036854774951 - -857) or 1558 not raisesOverflowError(9223372036854771169 - -4639) or 1559 not raisesOverflowError(9223372036854737535 - -38273) or 1560 not raisesOverflowError(9223372036854131365 - -644443) or 1561 not raisesOverflowError(9223372036844899255 - -9876553) or 1562 not raisesOverflowError(9223372036842430155 - -12345653) or 1563 not raisesOverflowError(9223372036731319017 - -123456791) or 1564 not raisesOverflowError(9223372033817775309 - -3037000499) or 1565 not raisesOverflowError(9223371962145462840 - -74709312968) or 1566 not raisesOverflowError(9223371289760066695 - -747094709113) or 1567 not raisesOverflowError(9223371102989282771 - -933865493037) or 1568 not raisesOverflowError(9223357724693674121 - -14312161101687) or 1569 not raisesOverflowError(9223131047853734480 - -240989001041328) or 1570 not raisesOverflowError(9221383812660584221 - -1988224194191587) or 1571 not raisesOverflowError(9212609642412704892 - -10762394442070916) or 1572 not raisesOverflowError(8384883669867978008 - -838488366986797800) or 1573 not raisesOverflowError(6148914691236517206 - -3074457345618258602) or 1574 not raisesOverflowError(3074457345618258602 - -6148914691236517206) or 1575 not raisesOverflowError( 838488366986797800 - -8384883669867978008) or 1576 not raisesOverflowError( 10762394442070916 - -9212609642412704892) or 1577 not raisesOverflowError( 1988224194191587 - -9221383812660584221) or 1578 not raisesOverflowError( 240989001041328 - -9223131047853734480) or 1579 not raisesOverflowError( 14312161101687 - -9223357724693674121) or 1580 not raisesOverflowError( 933865493037 - -9223371102989282771) or 1581 not raisesOverflowError( 747094709113 - -9223371289760066695) or 1582 not raisesOverflowError( 74709312968 - -9223371962145462840) or 1583 not raisesOverflowError( 3037000499 - -9223372033817775309) or 1584 not raisesOverflowError( 123456791 - -9223372036731319017) or 1585 not raisesOverflowError( 12345653 - -9223372036842430155) or 1586 not raisesOverflowError( 9876553 - -9223372036844899255) or 1587 not raisesOverflowError( 644443 - -9223372036854131365) or 1588 not raisesOverflowError( 38273 - -9223372036854737535) or 1589 not raisesOverflowError( 4639 - -9223372036854771169) or 1590 not raisesOverflowError( 857 - -9223372036854774951) or 1591 not raisesOverflowError( 11 - -9223372036854775797) or 1592 not raisesOverflowError( 3 - -9223372036854775805) or 1593 not raisesOverflowError( 2 - -9223372036854775806) or 1594 not raisesOverflowError( 1 - -9223372036854775807) or 1595 not raisesOverflowError( 0 - INT64_MIN) then 1596 writeln(" ***** Subtraction overflow by one does not raise OVERFLOW_ERROR. (1)"); 1597 okay := FALSE; 1598 end if; 1599 1600 if not raisesOverflowError(intExpr(9223372036854775807) - -1) or 1601 not raisesOverflowError(intExpr(9223372036854775806) - -2) or 1602 not raisesOverflowError(intExpr(9223372036854775805) - -3) or 1603 not raisesOverflowError(intExpr(9223372036854775797) - -11) or 1604 not raisesOverflowError(intExpr(9223372036854774951) - -857) or 1605 not raisesOverflowError(intExpr(9223372036854771169) - -4639) or 1606 not raisesOverflowError(intExpr(9223372036854737535) - -38273) or 1607 not raisesOverflowError(intExpr(9223372036854131365) - -644443) or 1608 not raisesOverflowError(intExpr(9223372036844899255) - -9876553) or 1609 not raisesOverflowError(intExpr(9223372036842430155) - -12345653) or 1610 not raisesOverflowError(intExpr(9223372036731319017) - -123456791) or 1611 not raisesOverflowError(intExpr(9223372033817775309) - -3037000499) or 1612 not raisesOverflowError(intExpr(9223371962145462840) - -74709312968) or 1613 not raisesOverflowError(intExpr(9223371289760066695) - -747094709113) or 1614 not raisesOverflowError(intExpr(9223371102989282771) - -933865493037) or 1615 not raisesOverflowError(intExpr(9223357724693674121) - -14312161101687) or 1616 not raisesOverflowError(intExpr(9223131047853734480) - -240989001041328) or 1617 not raisesOverflowError(intExpr(9221383812660584221) - -1988224194191587) or 1618 not raisesOverflowError(intExpr(9212609642412704892) - -10762394442070916) or 1619 not raisesOverflowError(intExpr(8384883669867978008) - -838488366986797800) or 1620 not raisesOverflowError(intExpr(6148914691236517206) - -3074457345618258602) or 1621 not raisesOverflowError(intExpr(3074457345618258602) - -6148914691236517206) or 1622 not raisesOverflowError(intExpr( 838488366986797800) - -8384883669867978008) or 1623 not raisesOverflowError(intExpr( 10762394442070916) - -9212609642412704892) or 1624 not raisesOverflowError(intExpr( 1988224194191587) - -9221383812660584221) or 1625 not raisesOverflowError(intExpr( 240989001041328) - -9223131047853734480) or 1626 not raisesOverflowError(intExpr( 14312161101687) - -9223357724693674121) or 1627 not raisesOverflowError(intExpr( 933865493037) - -9223371102989282771) or 1628 not raisesOverflowError(intExpr( 747094709113) - -9223371289760066695) or 1629 not raisesOverflowError(intExpr( 74709312968) - -9223371962145462840) or 1630 not raisesOverflowError(intExpr( 3037000499) - -9223372033817775309) or 1631 not raisesOverflowError(intExpr( 123456791) - -9223372036731319017) or 1632 not raisesOverflowError(intExpr( 12345653) - -9223372036842430155) or 1633 not raisesOverflowError(intExpr( 9876553) - -9223372036844899255) or 1634 not raisesOverflowError(intExpr( 644443) - -9223372036854131365) or 1635 not raisesOverflowError(intExpr( 38273) - -9223372036854737535) or 1636 not raisesOverflowError(intExpr( 4639) - -9223372036854771169) or 1637 not raisesOverflowError(intExpr( 857) - -9223372036854774951) or 1638 not raisesOverflowError(intExpr( 11) - -9223372036854775797) or 1639 not raisesOverflowError(intExpr( 3) - -9223372036854775805) or 1640 not raisesOverflowError(intExpr( 2) - -9223372036854775806) or 1641 not raisesOverflowError(intExpr( 1) - -9223372036854775807) or 1642 not raisesOverflowError(intExpr( 0) - INT64_MIN) then 1643 writeln(" ***** Subtraction overflow by one does not raise OVERFLOW_ERROR. (2)"); 1644 okay := FALSE; 1645 end if; 1646 1647 if not raisesOverflowError(9223372036854775807 - intExpr( -1)) or 1648 not raisesOverflowError(9223372036854775806 - intExpr( -2)) or 1649 not raisesOverflowError(9223372036854775805 - intExpr( -3)) or 1650 not raisesOverflowError(9223372036854775797 - intExpr( -11)) or 1651 not raisesOverflowError(9223372036854774951 - intExpr( -857)) or 1652 not raisesOverflowError(9223372036854771169 - intExpr( -4639)) or 1653 not raisesOverflowError(9223372036854737535 - intExpr( -38273)) or 1654 not raisesOverflowError(9223372036854131365 - intExpr( -644443)) or 1655 not raisesOverflowError(9223372036844899255 - intExpr( -9876553)) or 1656 not raisesOverflowError(9223372036842430155 - intExpr( -12345653)) or 1657 not raisesOverflowError(9223372036731319017 - intExpr( -123456791)) or 1658 not raisesOverflowError(9223372033817775309 - intExpr( -3037000499)) or 1659 not raisesOverflowError(9223371962145462840 - intExpr( -74709312968)) or 1660 not raisesOverflowError(9223371289760066695 - intExpr( -747094709113)) or 1661 not raisesOverflowError(9223371102989282771 - intExpr( -933865493037)) or 1662 not raisesOverflowError(9223357724693674121 - intExpr( -14312161101687)) or 1663 not raisesOverflowError(9223131047853734480 - intExpr( -240989001041328)) or 1664 not raisesOverflowError(9221383812660584221 - intExpr( -1988224194191587)) or 1665 not raisesOverflowError(9212609642412704892 - intExpr( -10762394442070916)) or 1666 not raisesOverflowError(8384883669867978008 - intExpr( -838488366986797800)) or 1667 not raisesOverflowError(6148914691236517206 - intExpr(-3074457345618258602)) or 1668 not raisesOverflowError(3074457345618258602 - intExpr(-6148914691236517206)) or 1669 not raisesOverflowError( 838488366986797800 - intExpr(-8384883669867978008)) or 1670 not raisesOverflowError( 10762394442070916 - intExpr(-9212609642412704892)) or 1671 not raisesOverflowError( 1988224194191587 - intExpr(-9221383812660584221)) or 1672 not raisesOverflowError( 240989001041328 - intExpr(-9223131047853734480)) or 1673 not raisesOverflowError( 14312161101687 - intExpr(-9223357724693674121)) or 1674 not raisesOverflowError( 933865493037 - intExpr(-9223371102989282771)) or 1675 not raisesOverflowError( 747094709113 - intExpr(-9223371289760066695)) or 1676 not raisesOverflowError( 74709312968 - intExpr(-9223371962145462840)) or 1677 not raisesOverflowError( 3037000499 - intExpr(-9223372033817775309)) or 1678 not raisesOverflowError( 123456791 - intExpr(-9223372036731319017)) or 1679 not raisesOverflowError( 12345653 - intExpr(-9223372036842430155)) or 1680 not raisesOverflowError( 9876553 - intExpr(-9223372036844899255)) or 1681 not raisesOverflowError( 644443 - intExpr(-9223372036854131365)) or 1682 not raisesOverflowError( 38273 - intExpr(-9223372036854737535)) or 1683 not raisesOverflowError( 4639 - intExpr(-9223372036854771169)) or 1684 not raisesOverflowError( 857 - intExpr(-9223372036854774951)) or 1685 not raisesOverflowError( 11 - intExpr(-9223372036854775797)) or 1686 not raisesOverflowError( 3 - intExpr(-9223372036854775805)) or 1687 not raisesOverflowError( 2 - intExpr(-9223372036854775806)) or 1688 not raisesOverflowError( 1 - intExpr(-9223372036854775807)) or 1689 not raisesOverflowError( 0 - intExpr( INT64_MIN)) then 1690 writeln(" ***** Subtraction overflow by one does not raise OVERFLOW_ERROR. (3)"); 1691 okay := FALSE; 1692 end if; 1693 1694 if not raisesOverflowError(intExpr(9223372036854775807) - intExpr( -1)) or 1695 not raisesOverflowError(intExpr(9223372036854775806) - intExpr( -2)) or 1696 not raisesOverflowError(intExpr(9223372036854775805) - intExpr( -3)) or 1697 not raisesOverflowError(intExpr(9223372036854775797) - intExpr( -11)) or 1698 not raisesOverflowError(intExpr(9223372036854774951) - intExpr( -857)) or 1699 not raisesOverflowError(intExpr(9223372036854771169) - intExpr( -4639)) or 1700 not raisesOverflowError(intExpr(9223372036854737535) - intExpr( -38273)) or 1701 not raisesOverflowError(intExpr(9223372036854131365) - intExpr( -644443)) or 1702 not raisesOverflowError(intExpr(9223372036844899255) - intExpr( -9876553)) or 1703 not raisesOverflowError(intExpr(9223372036842430155) - intExpr( -12345653)) or 1704 not raisesOverflowError(intExpr(9223372036731319017) - intExpr( -123456791)) or 1705 not raisesOverflowError(intExpr(9223372033817775309) - intExpr( -3037000499)) or 1706 not raisesOverflowError(intExpr(9223371962145462840) - intExpr( -74709312968)) or 1707 not raisesOverflowError(intExpr(9223371289760066695) - intExpr( -747094709113)) or 1708 not raisesOverflowError(intExpr(9223371102989282771) - intExpr( -933865493037)) or 1709 not raisesOverflowError(intExpr(9223357724693674121) - intExpr( -14312161101687)) or 1710 not raisesOverflowError(intExpr(9223131047853734480) - intExpr( -240989001041328)) or 1711 not raisesOverflowError(intExpr(9221383812660584221) - intExpr( -1988224194191587)) or 1712 not raisesOverflowError(intExpr(9212609642412704892) - intExpr( -10762394442070916)) or 1713 not raisesOverflowError(intExpr(8384883669867978008) - intExpr( -838488366986797800)) or 1714 not raisesOverflowError(intExpr(6148914691236517206) - intExpr(-3074457345618258602)) or 1715 not raisesOverflowError(intExpr(3074457345618258602) - intExpr(-6148914691236517206)) or 1716 not raisesOverflowError(intExpr( 838488366986797800) - intExpr(-8384883669867978008)) or 1717 not raisesOverflowError(intExpr( 10762394442070916) - intExpr(-9212609642412704892)) or 1718 not raisesOverflowError(intExpr( 1988224194191587) - intExpr(-9221383812660584221)) or 1719 not raisesOverflowError(intExpr( 240989001041328) - intExpr(-9223131047853734480)) or 1720 not raisesOverflowError(intExpr( 14312161101687) - intExpr(-9223357724693674121)) or 1721 not raisesOverflowError(intExpr( 933865493037) - intExpr(-9223371102989282771)) or 1722 not raisesOverflowError(intExpr( 747094709113) - intExpr(-9223371289760066695)) or 1723 not raisesOverflowError(intExpr( 74709312968) - intExpr(-9223371962145462840)) or 1724 not raisesOverflowError(intExpr( 3037000499) - intExpr(-9223372033817775309)) or 1725 not raisesOverflowError(intExpr( 123456791) - intExpr(-9223372036731319017)) or 1726 not raisesOverflowError(intExpr( 12345653) - intExpr(-9223372036842430155)) or 1727 not raisesOverflowError(intExpr( 9876553) - intExpr(-9223372036844899255)) or 1728 not raisesOverflowError(intExpr( 644443) - intExpr(-9223372036854131365)) or 1729 not raisesOverflowError(intExpr( 38273) - intExpr(-9223372036854737535)) or 1730 not raisesOverflowError(intExpr( 4639) - intExpr(-9223372036854771169)) or 1731 not raisesOverflowError(intExpr( 857) - intExpr(-9223372036854774951)) or 1732 not raisesOverflowError(intExpr( 11) - intExpr(-9223372036854775797)) or 1733 not raisesOverflowError(intExpr( 3) - intExpr(-9223372036854775805)) or 1734 not raisesOverflowError(intExpr( 2) - intExpr(-9223372036854775806)) or 1735 not raisesOverflowError(intExpr( 1) - intExpr(-9223372036854775807)) or 1736 not raisesOverflowError(intExpr( 0) - intExpr( INT64_MIN)) then 1737 writeln(" ***** Subtraction overflow by one does not raise OVERFLOW_ERROR. (4)"); 1738 okay := FALSE; 1739 end if; 1740 1741 if not raisesOverflowError( INT64_MIN - 9223372036854775807) or 1742 not raisesOverflowError( INT64_MIN - 9223372036854775806) or 1743 not raisesOverflowError(-9223372036854775807 - 9223372036854775807) or 1744 not raisesOverflowError(-9223372036854775807 - 9223372036854775806) or 1745 not raisesOverflowError(intExpr( INT64_MIN) - 9223372036854775807) or 1746 not raisesOverflowError(intExpr( INT64_MIN) - 9223372036854775806) or 1747 not raisesOverflowError(intExpr(-9223372036854775807) - 9223372036854775807) or 1748 not raisesOverflowError(intExpr(-9223372036854775807) - 9223372036854775806) or 1749 not raisesOverflowError( INT64_MIN - intExpr(9223372036854775807)) or 1750 not raisesOverflowError( INT64_MIN - intExpr(9223372036854775806)) or 1751 not raisesOverflowError(-9223372036854775807 - intExpr(9223372036854775807)) or 1752 not raisesOverflowError(-9223372036854775807 - intExpr(9223372036854775806)) or 1753 not raisesOverflowError(intExpr( INT64_MIN) - intExpr(9223372036854775807)) or 1754 not raisesOverflowError(intExpr( INT64_MIN) - intExpr(9223372036854775806)) or 1755 not raisesOverflowError(intExpr(-9223372036854775807) - intExpr(9223372036854775807)) or 1756 not raisesOverflowError(intExpr(-9223372036854775807) - intExpr(9223372036854775806)) then 1757 writeln(" ***** Subtraction underflow does not raise OVERFLOW_ERROR."); 1758 okay := FALSE; 1759 end if; 1760 1761 if not raisesOverflowError(9223372036854775807 - INT64_MIN) or 1762 not raisesOverflowError(9223372036854775807 - -9223372036854775807) or 1763 not raisesOverflowError(9223372036854775806 - INT64_MIN) or 1764 not raisesOverflowError(9223372036854775806 - -9223372036854775807) or 1765 not raisesOverflowError(intExpr(9223372036854775807) - INT64_MIN) or 1766 not raisesOverflowError(intExpr(9223372036854775807) - -9223372036854775807) or 1767 not raisesOverflowError(intExpr(9223372036854775806) - INT64_MIN) or 1768 not raisesOverflowError(intExpr(9223372036854775806) - -9223372036854775807) or 1769 not raisesOverflowError(9223372036854775807 - intExpr( INT64_MIN)) or 1770 not raisesOverflowError(9223372036854775807 - intExpr(-9223372036854775807)) or 1771 not raisesOverflowError(9223372036854775806 - intExpr( INT64_MIN)) or 1772 not raisesOverflowError(9223372036854775806 - intExpr(-9223372036854775807)) or 1773 not raisesOverflowError(intExpr(9223372036854775807) - intExpr( INT64_MIN)) or 1774 not raisesOverflowError(intExpr(9223372036854775807) - intExpr(-9223372036854775807)) or 1775 not raisesOverflowError(intExpr(9223372036854775806) - intExpr( INT64_MIN)) or 1776 not raisesOverflowError(intExpr(9223372036854775806) - intExpr(-9223372036854775807)) then 1777 writeln(" ***** Subtraction overflow does not raise OVERFLOW_ERROR."); 1778 okay := FALSE; 1779 end if; 1780 1781 if okay then 1782 writeln("Overflow checking of subtraction works correct."); 1783 else 1784 writeln(" ***** Overflow checking of subtraction does not work correct."); 1785 end if; 1786 end func; 1787 1788 1789const proc: check_subtract_assign is func 1790 local 1791 var boolean: okay is TRUE; 1792 var boolean: ok is TRUE; 1793 var integer: num is 0; 1794 var array integer: arr is [] (0); 1795 begin 1796 num := INT64_MIN; ok := ok and raisesOverflowError(num -:= 1); 1797 num := -9223372036854775807; ok := ok and raisesOverflowError(num -:= 2); 1798 num := -9223372036854775806; ok := ok and raisesOverflowError(num -:= 3); 1799 num := -9223372036854775798; ok := ok and raisesOverflowError(num -:= 11); 1800 num := -9223372036854774952; ok := ok and raisesOverflowError(num -:= 857); 1801 num := -9223372036854771170; ok := ok and raisesOverflowError(num -:= 4639); 1802 num := -9223372036854737536; ok := ok and raisesOverflowError(num -:= 38273); 1803 num := -9223372036854131366; ok := ok and raisesOverflowError(num -:= 644443); 1804 num := -9223372036844899256; ok := ok and raisesOverflowError(num -:= 9876553); 1805 num := -9223372036842430156; ok := ok and raisesOverflowError(num -:= 12345653); 1806 num := -9223372036731319018; ok := ok and raisesOverflowError(num -:= 123456791); 1807 num := -9223372033817775310; ok := ok and raisesOverflowError(num -:= 3037000499); 1808 num := -9223371962145462841; ok := ok and raisesOverflowError(num -:= 74709312968); 1809 num := -9223371289760066696; ok := ok and raisesOverflowError(num -:= 747094709113); 1810 num := -9223371102989282772; ok := ok and raisesOverflowError(num -:= 933865493037); 1811 num := -9223357724693674122; ok := ok and raisesOverflowError(num -:= 14312161101687); 1812 num := -9223131047853734481; ok := ok and raisesOverflowError(num -:= 240989001041328); 1813 num := -9221383812660584222; ok := ok and raisesOverflowError(num -:= 1988224194191587); 1814 num := -9212609642412704893; ok := ok and raisesOverflowError(num -:= 10762394442070916); 1815 num := -8384883669867978009; ok := ok and raisesOverflowError(num -:= 838488366986797800); 1816 num := -6148914691236517207; ok := ok and raisesOverflowError(num -:= 3074457345618258602); 1817 num := -3074457345618258602; ok := ok and raisesOverflowError(num -:= 6148914691236517207); 1818 num := -838488366986797800; ok := ok and raisesOverflowError(num -:= 8384883669867978009); 1819 num := -10762394442070916; ok := ok and raisesOverflowError(num -:= 9212609642412704893); 1820 num := -1988224194191587; ok := ok and raisesOverflowError(num -:= 9221383812660584222); 1821 num := -240989001041328; ok := ok and raisesOverflowError(num -:= 9223131047853734481); 1822 num := -14312161101687; ok := ok and raisesOverflowError(num -:= 9223357724693674122); 1823 num := -933865493037; ok := ok and raisesOverflowError(num -:= 9223371102989282772); 1824 num := -747094709113; ok := ok and raisesOverflowError(num -:= 9223371289760066696); 1825 num := -74709312968; ok := ok and raisesOverflowError(num -:= 9223371962145462841); 1826 num := -3037000499; ok := ok and raisesOverflowError(num -:= 9223372033817775310); 1827 num := -123456791; ok := ok and raisesOverflowError(num -:= 9223372036731319018); 1828 num := -12345653; ok := ok and raisesOverflowError(num -:= 9223372036842430156); 1829 num := -9876553; ok := ok and raisesOverflowError(num -:= 9223372036844899256); 1830 num := -644443; ok := ok and raisesOverflowError(num -:= 9223372036854131366); 1831 num := -38273; ok := ok and raisesOverflowError(num -:= 9223372036854737536); 1832 num := -4639; ok := ok and raisesOverflowError(num -:= 9223372036854771170); 1833 num := -857; ok := ok and raisesOverflowError(num -:= 9223372036854774952); 1834 num := -11; ok := ok and raisesOverflowError(num -:= 9223372036854775798); 1835 num := -3; ok := ok and raisesOverflowError(num -:= 9223372036854775806); 1836 num := -2; ok := ok and raisesOverflowError(num -:= 9223372036854775807); 1837 if not ok then 1838 writeln(" ***** Subtraction assignment underflow by one does not raise OVERFLOW_ERROR. (1)"); 1839 okay := FALSE; 1840 end if; 1841 1842 ok := TRUE; 1843 num := INT64_MIN; ok := ok and raisesOverflowError(num -:= intExpr( 1)); 1844 num := -9223372036854775807; ok := ok and raisesOverflowError(num -:= intExpr( 2)); 1845 num := -9223372036854775806; ok := ok and raisesOverflowError(num -:= intExpr( 3)); 1846 num := -9223372036854775798; ok := ok and raisesOverflowError(num -:= intExpr( 11)); 1847 num := -9223372036854774952; ok := ok and raisesOverflowError(num -:= intExpr( 857)); 1848 num := -9223372036854771170; ok := ok and raisesOverflowError(num -:= intExpr( 4639)); 1849 num := -9223372036854737536; ok := ok and raisesOverflowError(num -:= intExpr( 38273)); 1850 num := -9223372036854131366; ok := ok and raisesOverflowError(num -:= intExpr( 644443)); 1851 num := -9223372036844899256; ok := ok and raisesOverflowError(num -:= intExpr( 9876553)); 1852 num := -9223372036842430156; ok := ok and raisesOverflowError(num -:= intExpr( 12345653)); 1853 num := -9223372036731319018; ok := ok and raisesOverflowError(num -:= intExpr( 123456791)); 1854 num := -9223372033817775310; ok := ok and raisesOverflowError(num -:= intExpr( 3037000499)); 1855 num := -9223371962145462841; ok := ok and raisesOverflowError(num -:= intExpr( 74709312968)); 1856 num := -9223371289760066696; ok := ok and raisesOverflowError(num -:= intExpr( 747094709113)); 1857 num := -9223371102989282772; ok := ok and raisesOverflowError(num -:= intExpr( 933865493037)); 1858 num := -9223357724693674122; ok := ok and raisesOverflowError(num -:= intExpr( 14312161101687)); 1859 num := -9223131047853734481; ok := ok and raisesOverflowError(num -:= intExpr( 240989001041328)); 1860 num := -9221383812660584222; ok := ok and raisesOverflowError(num -:= intExpr( 1988224194191587)); 1861 num := -9212609642412704893; ok := ok and raisesOverflowError(num -:= intExpr( 10762394442070916)); 1862 num := -8384883669867978009; ok := ok and raisesOverflowError(num -:= intExpr( 838488366986797800)); 1863 num := -6148914691236517207; ok := ok and raisesOverflowError(num -:= intExpr(3074457345618258602)); 1864 num := -3074457345618258602; ok := ok and raisesOverflowError(num -:= intExpr(6148914691236517207)); 1865 num := -838488366986797800; ok := ok and raisesOverflowError(num -:= intExpr(8384883669867978009)); 1866 num := -10762394442070916; ok := ok and raisesOverflowError(num -:= intExpr(9212609642412704893)); 1867 num := -1988224194191587; ok := ok and raisesOverflowError(num -:= intExpr(9221383812660584222)); 1868 num := -240989001041328; ok := ok and raisesOverflowError(num -:= intExpr(9223131047853734481)); 1869 num := -14312161101687; ok := ok and raisesOverflowError(num -:= intExpr(9223357724693674122)); 1870 num := -933865493037; ok := ok and raisesOverflowError(num -:= intExpr(9223371102989282772)); 1871 num := -747094709113; ok := ok and raisesOverflowError(num -:= intExpr(9223371289760066696)); 1872 num := -74709312968; ok := ok and raisesOverflowError(num -:= intExpr(9223371962145462841)); 1873 num := -3037000499; ok := ok and raisesOverflowError(num -:= intExpr(9223372033817775310)); 1874 num := -123456791; ok := ok and raisesOverflowError(num -:= intExpr(9223372036731319018)); 1875 num := -12345653; ok := ok and raisesOverflowError(num -:= intExpr(9223372036842430156)); 1876 num := -9876553; ok := ok and raisesOverflowError(num -:= intExpr(9223372036844899256)); 1877 num := -644443; ok := ok and raisesOverflowError(num -:= intExpr(9223372036854131366)); 1878 num := -38273; ok := ok and raisesOverflowError(num -:= intExpr(9223372036854737536)); 1879 num := -4639; ok := ok and raisesOverflowError(num -:= intExpr(9223372036854771170)); 1880 num := -857; ok := ok and raisesOverflowError(num -:= intExpr(9223372036854774952)); 1881 num := -11; ok := ok and raisesOverflowError(num -:= intExpr(9223372036854775798)); 1882 num := -3; ok := ok and raisesOverflowError(num -:= intExpr(9223372036854775806)); 1883 num := -2; ok := ok and raisesOverflowError(num -:= intExpr(9223372036854775807)); 1884 if not ok then 1885 writeln(" ***** Subtraction assignment underflow by one does not raise OVERFLOW_ERROR. (2)"); 1886 okay := FALSE; 1887 end if; 1888 1889 ok := TRUE; 1890 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] -:= 1); 1891 arr[1] := -9223372036854775807; ok := ok and raisesOverflowError(arr[1] -:= 2); 1892 arr[1] := -9223372036854775806; ok := ok and raisesOverflowError(arr[1] -:= 3); 1893 arr[1] := -9223372036854775798; ok := ok and raisesOverflowError(arr[1] -:= 11); 1894 arr[1] := -9223372036854774952; ok := ok and raisesOverflowError(arr[1] -:= 857); 1895 arr[1] := -9223372036854771170; ok := ok and raisesOverflowError(arr[1] -:= 4639); 1896 arr[1] := -9223372036854737536; ok := ok and raisesOverflowError(arr[1] -:= 38273); 1897 arr[1] := -9223372036854131366; ok := ok and raisesOverflowError(arr[1] -:= 644443); 1898 arr[1] := -9223372036844899256; ok := ok and raisesOverflowError(arr[1] -:= 9876553); 1899 arr[1] := -9223372036842430156; ok := ok and raisesOverflowError(arr[1] -:= 12345653); 1900 arr[1] := -9223372036731319018; ok := ok and raisesOverflowError(arr[1] -:= 123456791); 1901 arr[1] := -9223372033817775310; ok := ok and raisesOverflowError(arr[1] -:= 3037000499); 1902 arr[1] := -9223371962145462841; ok := ok and raisesOverflowError(arr[1] -:= 74709312968); 1903 arr[1] := -9223371289760066696; ok := ok and raisesOverflowError(arr[1] -:= 747094709113); 1904 arr[1] := -9223371102989282772; ok := ok and raisesOverflowError(arr[1] -:= 933865493037); 1905 arr[1] := -9223357724693674122; ok := ok and raisesOverflowError(arr[1] -:= 14312161101687); 1906 arr[1] := -9223131047853734481; ok := ok and raisesOverflowError(arr[1] -:= 240989001041328); 1907 arr[1] := -9221383812660584222; ok := ok and raisesOverflowError(arr[1] -:= 1988224194191587); 1908 arr[1] := -9212609642412704893; ok := ok and raisesOverflowError(arr[1] -:= 10762394442070916); 1909 arr[1] := -8384883669867978009; ok := ok and raisesOverflowError(arr[1] -:= 838488366986797800); 1910 arr[1] := -6148914691236517207; ok := ok and raisesOverflowError(arr[1] -:= 3074457345618258602); 1911 arr[1] := -3074457345618258602; ok := ok and raisesOverflowError(arr[1] -:= 6148914691236517207); 1912 arr[1] := -838488366986797800; ok := ok and raisesOverflowError(arr[1] -:= 8384883669867978009); 1913 arr[1] := -10762394442070916; ok := ok and raisesOverflowError(arr[1] -:= 9212609642412704893); 1914 arr[1] := -1988224194191587; ok := ok and raisesOverflowError(arr[1] -:= 9221383812660584222); 1915 arr[1] := -240989001041328; ok := ok and raisesOverflowError(arr[1] -:= 9223131047853734481); 1916 arr[1] := -14312161101687; ok := ok and raisesOverflowError(arr[1] -:= 9223357724693674122); 1917 arr[1] := -933865493037; ok := ok and raisesOverflowError(arr[1] -:= 9223371102989282772); 1918 arr[1] := -747094709113; ok := ok and raisesOverflowError(arr[1] -:= 9223371289760066696); 1919 arr[1] := -74709312968; ok := ok and raisesOverflowError(arr[1] -:= 9223371962145462841); 1920 arr[1] := -3037000499; ok := ok and raisesOverflowError(arr[1] -:= 9223372033817775310); 1921 arr[1] := -123456791; ok := ok and raisesOverflowError(arr[1] -:= 9223372036731319018); 1922 arr[1] := -12345653; ok := ok and raisesOverflowError(arr[1] -:= 9223372036842430156); 1923 arr[1] := -9876553; ok := ok and raisesOverflowError(arr[1] -:= 9223372036844899256); 1924 arr[1] := -644443; ok := ok and raisesOverflowError(arr[1] -:= 9223372036854131366); 1925 arr[1] := -38273; ok := ok and raisesOverflowError(arr[1] -:= 9223372036854737536); 1926 arr[1] := -4639; ok := ok and raisesOverflowError(arr[1] -:= 9223372036854771170); 1927 arr[1] := -857; ok := ok and raisesOverflowError(arr[1] -:= 9223372036854774952); 1928 arr[1] := -11; ok := ok and raisesOverflowError(arr[1] -:= 9223372036854775798); 1929 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] -:= 9223372036854775806); 1930 arr[1] := -2; ok := ok and raisesOverflowError(arr[1] -:= 9223372036854775807); 1931 if not ok then 1932 writeln(" ***** Subtraction assignment underflow by one does not raise OVERFLOW_ERROR. (3)"); 1933 okay := FALSE; 1934 end if; 1935 1936 ok := TRUE; 1937 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 1)); 1938 arr[1] := -9223372036854775807; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 2)); 1939 arr[1] := -9223372036854775806; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 3)); 1940 arr[1] := -9223372036854775798; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 11)); 1941 arr[1] := -9223372036854774952; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 857)); 1942 arr[1] := -9223372036854771170; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 4639)); 1943 arr[1] := -9223372036854737536; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 38273)); 1944 arr[1] := -9223372036854131366; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 644443)); 1945 arr[1] := -9223372036844899256; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 9876553)); 1946 arr[1] := -9223372036842430156; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 12345653)); 1947 arr[1] := -9223372036731319018; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 123456791)); 1948 arr[1] := -9223372033817775310; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 3037000499)); 1949 arr[1] := -9223371962145462841; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 74709312968)); 1950 arr[1] := -9223371289760066696; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 747094709113)); 1951 arr[1] := -9223371102989282772; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 933865493037)); 1952 arr[1] := -9223357724693674122; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 14312161101687)); 1953 arr[1] := -9223131047853734481; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 240989001041328)); 1954 arr[1] := -9221383812660584222; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 1988224194191587)); 1955 arr[1] := -9212609642412704893; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 10762394442070916)); 1956 arr[1] := -8384883669867978009; ok := ok and raisesOverflowError(arr[1] -:= intExpr( 838488366986797800)); 1957 arr[1] := -6148914691236517207; ok := ok and raisesOverflowError(arr[1] -:= intExpr(3074457345618258602)); 1958 arr[1] := -3074457345618258602; ok := ok and raisesOverflowError(arr[1] -:= intExpr(6148914691236517207)); 1959 arr[1] := -838488366986797800; ok := ok and raisesOverflowError(arr[1] -:= intExpr(8384883669867978009)); 1960 arr[1] := -10762394442070916; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9212609642412704893)); 1961 arr[1] := -1988224194191587; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9221383812660584222)); 1962 arr[1] := -240989001041328; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223131047853734481)); 1963 arr[1] := -14312161101687; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223357724693674122)); 1964 arr[1] := -933865493037; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223371102989282772)); 1965 arr[1] := -747094709113; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223371289760066696)); 1966 arr[1] := -74709312968; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223371962145462841)); 1967 arr[1] := -3037000499; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372033817775310)); 1968 arr[1] := -123456791; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036731319018)); 1969 arr[1] := -12345653; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036842430156)); 1970 arr[1] := -9876553; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036844899256)); 1971 arr[1] := -644443; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036854131366)); 1972 arr[1] := -38273; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036854737536)); 1973 arr[1] := -4639; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036854771170)); 1974 arr[1] := -857; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036854774952)); 1975 arr[1] := -11; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036854775798)); 1976 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036854775806)); 1977 arr[1] := -2; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036854775807)); 1978 if not ok then 1979 writeln(" ***** Subtraction assignment underflow by one does not raise OVERFLOW_ERROR. (4)"); 1980 okay := FALSE; 1981 end if; 1982 1983 ok := TRUE; 1984 num := 9223372036854775807; ok := ok and raisesOverflowError(num -:= -1); 1985 num := 9223372036854775806; ok := ok and raisesOverflowError(num -:= -2); 1986 num := 9223372036854775805; ok := ok and raisesOverflowError(num -:= -3); 1987 num := 9223372036854775797; ok := ok and raisesOverflowError(num -:= -11); 1988 num := 9223372036854774951; ok := ok and raisesOverflowError(num -:= -857); 1989 num := 9223372036854771169; ok := ok and raisesOverflowError(num -:= -4639); 1990 num := 9223372036854737535; ok := ok and raisesOverflowError(num -:= -38273); 1991 num := 9223372036854131365; ok := ok and raisesOverflowError(num -:= -644443); 1992 num := 9223372036844899255; ok := ok and raisesOverflowError(num -:= -9876553); 1993 num := 9223372036842430155; ok := ok and raisesOverflowError(num -:= -12345653); 1994 num := 9223372036731319017; ok := ok and raisesOverflowError(num -:= -123456791); 1995 num := 9223372033817775309; ok := ok and raisesOverflowError(num -:= -3037000499); 1996 num := 9223371962145462840; ok := ok and raisesOverflowError(num -:= -74709312968); 1997 num := 9223371289760066695; ok := ok and raisesOverflowError(num -:= -747094709113); 1998 num := 9223371102989282771; ok := ok and raisesOverflowError(num -:= -933865493037); 1999 num := 9223357724693674121; ok := ok and raisesOverflowError(num -:= -14312161101687); 2000 num := 9223131047853734480; ok := ok and raisesOverflowError(num -:= -240989001041328); 2001 num := 9221383812660584221; ok := ok and raisesOverflowError(num -:= -1988224194191587); 2002 num := 9212609642412704892; ok := ok and raisesOverflowError(num -:= -10762394442070916); 2003 num := 8384883669867978008; ok := ok and raisesOverflowError(num -:= -838488366986797800); 2004 num := 6148914691236517206; ok := ok and raisesOverflowError(num -:= -3074457345618258602); 2005 num := 3074457345618258602; ok := ok and raisesOverflowError(num -:= -6148914691236517206); 2006 num := 838488366986797800; ok := ok and raisesOverflowError(num -:= -8384883669867978008); 2007 num := 10762394442070916; ok := ok and raisesOverflowError(num -:= -9212609642412704892); 2008 num := 1988224194191587; ok := ok and raisesOverflowError(num -:= -9221383812660584221); 2009 num := 240989001041328; ok := ok and raisesOverflowError(num -:= -9223131047853734480); 2010 num := 14312161101687; ok := ok and raisesOverflowError(num -:= -9223357724693674121); 2011 num := 933865493037; ok := ok and raisesOverflowError(num -:= -9223371102989282771); 2012 num := 747094709113; ok := ok and raisesOverflowError(num -:= -9223371289760066695); 2013 num := 74709312968; ok := ok and raisesOverflowError(num -:= -9223371962145462840); 2014 num := 3037000499; ok := ok and raisesOverflowError(num -:= -9223372033817775309); 2015 num := 123456791; ok := ok and raisesOverflowError(num -:= -9223372036731319017); 2016 num := 12345653; ok := ok and raisesOverflowError(num -:= -9223372036842430155); 2017 num := 9876553; ok := ok and raisesOverflowError(num -:= -9223372036844899255); 2018 num := 644443; ok := ok and raisesOverflowError(num -:= -9223372036854131365); 2019 num := 38273; ok := ok and raisesOverflowError(num -:= -9223372036854737535); 2020 num := 4639; ok := ok and raisesOverflowError(num -:= -9223372036854771169); 2021 num := 857; ok := ok and raisesOverflowError(num -:= -9223372036854774951); 2022 num := 11; ok := ok and raisesOverflowError(num -:= -9223372036854775797); 2023 num := 3; ok := ok and raisesOverflowError(num -:= -9223372036854775805); 2024 num := 2; ok := ok and raisesOverflowError(num -:= -9223372036854775806); 2025 num := 1; ok := ok and raisesOverflowError(num -:= -9223372036854775807); 2026 num := 0; ok := ok and raisesOverflowError(num -:= INT64_MIN); 2027 if not ok then 2028 writeln(" ***** Subtraction assignment overflow by one does not raise OVERFLOW_ERROR. (1)"); 2029 okay := FALSE; 2030 end if; 2031 2032 ok := TRUE; 2033 num := 9223372036854775807; ok := ok and raisesOverflowError(num -:= intExpr( -1)); 2034 num := 9223372036854775806; ok := ok and raisesOverflowError(num -:= intExpr( -2)); 2035 num := 9223372036854775805; ok := ok and raisesOverflowError(num -:= intExpr( -3)); 2036 num := 9223372036854775797; ok := ok and raisesOverflowError(num -:= intExpr( -11)); 2037 num := 9223372036854774951; ok := ok and raisesOverflowError(num -:= intExpr( -857)); 2038 num := 9223372036854771169; ok := ok and raisesOverflowError(num -:= intExpr( -4639)); 2039 num := 9223372036854737535; ok := ok and raisesOverflowError(num -:= intExpr( -38273)); 2040 num := 9223372036854131365; ok := ok and raisesOverflowError(num -:= intExpr( -644443)); 2041 num := 9223372036844899255; ok := ok and raisesOverflowError(num -:= intExpr( -9876553)); 2042 num := 9223372036842430155; ok := ok and raisesOverflowError(num -:= intExpr( -12345653)); 2043 num := 9223372036731319017; ok := ok and raisesOverflowError(num -:= intExpr( -123456791)); 2044 num := 9223372033817775309; ok := ok and raisesOverflowError(num -:= intExpr( -3037000499)); 2045 num := 9223371962145462840; ok := ok and raisesOverflowError(num -:= intExpr( -74709312968)); 2046 num := 9223371289760066695; ok := ok and raisesOverflowError(num -:= intExpr( -747094709113)); 2047 num := 9223371102989282771; ok := ok and raisesOverflowError(num -:= intExpr( -933865493037)); 2048 num := 9223357724693674121; ok := ok and raisesOverflowError(num -:= intExpr( -14312161101687)); 2049 num := 9223131047853734480; ok := ok and raisesOverflowError(num -:= intExpr( -240989001041328)); 2050 num := 9221383812660584221; ok := ok and raisesOverflowError(num -:= intExpr( -1988224194191587)); 2051 num := 9212609642412704892; ok := ok and raisesOverflowError(num -:= intExpr( -10762394442070916)); 2052 num := 8384883669867978008; ok := ok and raisesOverflowError(num -:= intExpr( -838488366986797800)); 2053 num := 6148914691236517206; ok := ok and raisesOverflowError(num -:= intExpr(-3074457345618258602)); 2054 num := 3074457345618258602; ok := ok and raisesOverflowError(num -:= intExpr(-6148914691236517206)); 2055 num := 838488366986797800; ok := ok and raisesOverflowError(num -:= intExpr(-8384883669867978008)); 2056 num := 10762394442070916; ok := ok and raisesOverflowError(num -:= intExpr(-9212609642412704892)); 2057 num := 1988224194191587; ok := ok and raisesOverflowError(num -:= intExpr(-9221383812660584221)); 2058 num := 240989001041328; ok := ok and raisesOverflowError(num -:= intExpr(-9223131047853734480)); 2059 num := 14312161101687; ok := ok and raisesOverflowError(num -:= intExpr(-9223357724693674121)); 2060 num := 933865493037; ok := ok and raisesOverflowError(num -:= intExpr(-9223371102989282771)); 2061 num := 747094709113; ok := ok and raisesOverflowError(num -:= intExpr(-9223371289760066695)); 2062 num := 74709312968; ok := ok and raisesOverflowError(num -:= intExpr(-9223371962145462840)); 2063 num := 3037000499; ok := ok and raisesOverflowError(num -:= intExpr(-9223372033817775309)); 2064 num := 123456791; ok := ok and raisesOverflowError(num -:= intExpr(-9223372036731319017)); 2065 num := 12345653; ok := ok and raisesOverflowError(num -:= intExpr(-9223372036842430155)); 2066 num := 9876553; ok := ok and raisesOverflowError(num -:= intExpr(-9223372036844899255)); 2067 num := 644443; ok := ok and raisesOverflowError(num -:= intExpr(-9223372036854131365)); 2068 num := 38273; ok := ok and raisesOverflowError(num -:= intExpr(-9223372036854737535)); 2069 num := 4639; ok := ok and raisesOverflowError(num -:= intExpr(-9223372036854771169)); 2070 num := 857; ok := ok and raisesOverflowError(num -:= intExpr(-9223372036854774951)); 2071 num := 11; ok := ok and raisesOverflowError(num -:= intExpr(-9223372036854775797)); 2072 num := 3; ok := ok and raisesOverflowError(num -:= intExpr(-9223372036854775805)); 2073 num := 2; ok := ok and raisesOverflowError(num -:= intExpr(-9223372036854775806)); 2074 num := 1; ok := ok and raisesOverflowError(num -:= intExpr(-9223372036854775807)); 2075 num := 0; ok := ok and raisesOverflowError(num -:= intExpr( INT64_MIN)); 2076 if not ok then 2077 writeln(" ***** Subtraction assignment overflow by one does not raise OVERFLOW_ERROR. (2)"); 2078 okay := FALSE; 2079 end if; 2080 2081 ok := TRUE; 2082 arr[1] := 9223372036854775807; ok := ok and raisesOverflowError(arr[1] -:= -1); 2083 arr[1] := 9223372036854775806; ok := ok and raisesOverflowError(arr[1] -:= -2); 2084 arr[1] := 9223372036854775805; ok := ok and raisesOverflowError(arr[1] -:= -3); 2085 arr[1] := 9223372036854775797; ok := ok and raisesOverflowError(arr[1] -:= -11); 2086 arr[1] := 9223372036854774951; ok := ok and raisesOverflowError(arr[1] -:= -857); 2087 arr[1] := 9223372036854771169; ok := ok and raisesOverflowError(arr[1] -:= -4639); 2088 arr[1] := 9223372036854737535; ok := ok and raisesOverflowError(arr[1] -:= -38273); 2089 arr[1] := 9223372036854131365; ok := ok and raisesOverflowError(arr[1] -:= -644443); 2090 arr[1] := 9223372036844899255; ok := ok and raisesOverflowError(arr[1] -:= -9876553); 2091 arr[1] := 9223372036842430155; ok := ok and raisesOverflowError(arr[1] -:= -12345653); 2092 arr[1] := 9223372036731319017; ok := ok and raisesOverflowError(arr[1] -:= -123456791); 2093 arr[1] := 9223372033817775309; ok := ok and raisesOverflowError(arr[1] -:= -3037000499); 2094 arr[1] := 9223371962145462840; ok := ok and raisesOverflowError(arr[1] -:= -74709312968); 2095 arr[1] := 9223371289760066695; ok := ok and raisesOverflowError(arr[1] -:= -747094709113); 2096 arr[1] := 9223371102989282771; ok := ok and raisesOverflowError(arr[1] -:= -933865493037); 2097 arr[1] := 9223357724693674121; ok := ok and raisesOverflowError(arr[1] -:= -14312161101687); 2098 arr[1] := 9223131047853734480; ok := ok and raisesOverflowError(arr[1] -:= -240989001041328); 2099 arr[1] := 9221383812660584221; ok := ok and raisesOverflowError(arr[1] -:= -1988224194191587); 2100 arr[1] := 9212609642412704892; ok := ok and raisesOverflowError(arr[1] -:= -10762394442070916); 2101 arr[1] := 8384883669867978008; ok := ok and raisesOverflowError(arr[1] -:= -838488366986797800); 2102 arr[1] := 6148914691236517206; ok := ok and raisesOverflowError(arr[1] -:= -3074457345618258602); 2103 arr[1] := 3074457345618258602; ok := ok and raisesOverflowError(arr[1] -:= -6148914691236517206); 2104 arr[1] := 838488366986797800; ok := ok and raisesOverflowError(arr[1] -:= -8384883669867978008); 2105 arr[1] := 10762394442070916; ok := ok and raisesOverflowError(arr[1] -:= -9212609642412704892); 2106 arr[1] := 1988224194191587; ok := ok and raisesOverflowError(arr[1] -:= -9221383812660584221); 2107 arr[1] := 240989001041328; ok := ok and raisesOverflowError(arr[1] -:= -9223131047853734480); 2108 arr[1] := 14312161101687; ok := ok and raisesOverflowError(arr[1] -:= -9223357724693674121); 2109 arr[1] := 933865493037; ok := ok and raisesOverflowError(arr[1] -:= -9223371102989282771); 2110 arr[1] := 747094709113; ok := ok and raisesOverflowError(arr[1] -:= -9223371289760066695); 2111 arr[1] := 74709312968; ok := ok and raisesOverflowError(arr[1] -:= -9223371962145462840); 2112 arr[1] := 3037000499; ok := ok and raisesOverflowError(arr[1] -:= -9223372033817775309); 2113 arr[1] := 123456791; ok := ok and raisesOverflowError(arr[1] -:= -9223372036731319017); 2114 arr[1] := 12345653; ok := ok and raisesOverflowError(arr[1] -:= -9223372036842430155); 2115 arr[1] := 9876553; ok := ok and raisesOverflowError(arr[1] -:= -9223372036844899255); 2116 arr[1] := 644443; ok := ok and raisesOverflowError(arr[1] -:= -9223372036854131365); 2117 arr[1] := 38273; ok := ok and raisesOverflowError(arr[1] -:= -9223372036854737535); 2118 arr[1] := 4639; ok := ok and raisesOverflowError(arr[1] -:= -9223372036854771169); 2119 arr[1] := 857; ok := ok and raisesOverflowError(arr[1] -:= -9223372036854774951); 2120 arr[1] := 11; ok := ok and raisesOverflowError(arr[1] -:= -9223372036854775797); 2121 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] -:= -9223372036854775805); 2122 arr[1] := 2; ok := ok and raisesOverflowError(arr[1] -:= -9223372036854775806); 2123 arr[1] := 1; ok := ok and raisesOverflowError(arr[1] -:= -9223372036854775807); 2124 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] -:= INT64_MIN); 2125 if not ok then 2126 writeln(" ***** Subtraction assignment overflow by one does not raise OVERFLOW_ERROR. (3)"); 2127 okay := FALSE; 2128 end if; 2129 2130 ok := TRUE; 2131 arr[1] := 9223372036854775807; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -1)); 2132 arr[1] := 9223372036854775806; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -2)); 2133 arr[1] := 9223372036854775805; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -3)); 2134 arr[1] := 9223372036854775797; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -11)); 2135 arr[1] := 9223372036854774951; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -857)); 2136 arr[1] := 9223372036854771169; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -4639)); 2137 arr[1] := 9223372036854737535; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -38273)); 2138 arr[1] := 9223372036854131365; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -644443)); 2139 arr[1] := 9223372036844899255; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -9876553)); 2140 arr[1] := 9223372036842430155; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -12345653)); 2141 arr[1] := 9223372036731319017; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -123456791)); 2142 arr[1] := 9223372033817775309; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -3037000499)); 2143 arr[1] := 9223371962145462840; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -74709312968)); 2144 arr[1] := 9223371289760066695; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -747094709113)); 2145 arr[1] := 9223371102989282771; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -933865493037)); 2146 arr[1] := 9223357724693674121; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -14312161101687)); 2147 arr[1] := 9223131047853734480; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -240989001041328)); 2148 arr[1] := 9221383812660584221; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -1988224194191587)); 2149 arr[1] := 9212609642412704892; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -10762394442070916)); 2150 arr[1] := 8384883669867978008; ok := ok and raisesOverflowError(arr[1] -:= intExpr( -838488366986797800)); 2151 arr[1] := 6148914691236517206; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-3074457345618258602)); 2152 arr[1] := 3074457345618258602; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-6148914691236517206)); 2153 arr[1] := 838488366986797800; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-8384883669867978008)); 2154 arr[1] := 10762394442070916; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9212609642412704892)); 2155 arr[1] := 1988224194191587; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9221383812660584221)); 2156 arr[1] := 240989001041328; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223131047853734480)); 2157 arr[1] := 14312161101687; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223357724693674121)); 2158 arr[1] := 933865493037; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223371102989282771)); 2159 arr[1] := 747094709113; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223371289760066695)); 2160 arr[1] := 74709312968; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223371962145462840)); 2161 arr[1] := 3037000499; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372033817775309)); 2162 arr[1] := 123456791; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372036731319017)); 2163 arr[1] := 12345653; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372036842430155)); 2164 arr[1] := 9876553; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372036844899255)); 2165 arr[1] := 644443; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372036854131365)); 2166 arr[1] := 38273; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372036854737535)); 2167 arr[1] := 4639; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372036854771169)); 2168 arr[1] := 857; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372036854774951)); 2169 arr[1] := 11; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372036854775797)); 2170 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372036854775805)); 2171 arr[1] := 2; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372036854775806)); 2172 arr[1] := 1; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372036854775807)); 2173 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] -:= intExpr( INT64_MIN)); 2174 if not ok then 2175 writeln(" ***** Subtraction assignment overflow by one does not raise OVERFLOW_ERROR. (4)"); 2176 okay := FALSE; 2177 end if; 2178 2179 ok := TRUE; 2180 num := INT64_MIN; ok := ok and raisesOverflowError(num -:= 9223372036854775807); 2181 num := INT64_MIN; ok := ok and raisesOverflowError(num -:= 9223372036854775806); 2182 num := -9223372036854775807; ok := ok and raisesOverflowError(num -:= 9223372036854775807); 2183 num := -9223372036854775807; ok := ok and raisesOverflowError(num -:= 9223372036854775806); 2184 num := INT64_MIN; ok := ok and raisesOverflowError(num -:= intExpr(9223372036854775807)); 2185 num := INT64_MIN; ok := ok and raisesOverflowError(num -:= intExpr(9223372036854775806)); 2186 num := -9223372036854775807; ok := ok and raisesOverflowError(num -:= intExpr(9223372036854775807)); 2187 num := -9223372036854775807; ok := ok and raisesOverflowError(num -:= intExpr(9223372036854775806)); 2188 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] -:= 9223372036854775807); 2189 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] -:= 9223372036854775806); 2190 arr[1] := -9223372036854775807; ok := ok and raisesOverflowError(arr[1] -:= 9223372036854775807); 2191 arr[1] := -9223372036854775807; ok := ok and raisesOverflowError(arr[1] -:= 9223372036854775806); 2192 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036854775807)); 2193 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036854775806)); 2194 arr[1] := -9223372036854775807; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036854775807)); 2195 arr[1] := -9223372036854775807; ok := ok and raisesOverflowError(arr[1] -:= intExpr(9223372036854775806)); 2196 if not ok then 2197 writeln(" ***** Subtraction assignment underflow does not raise OVERFLOW_ERROR."); 2198 okay := FALSE; 2199 end if; 2200 2201 ok := TRUE; 2202 num := 9223372036854775807; ok := ok and raisesOverflowError(num -:= INT64_MIN); 2203 num := 9223372036854775807; ok := ok and raisesOverflowError(num -:= -9223372036854775807); 2204 num := 9223372036854775806; ok := ok and raisesOverflowError(num -:= INT64_MIN); 2205 num := 9223372036854775806; ok := ok and raisesOverflowError(num -:= -9223372036854775807); 2206 num := 9223372036854775807; ok := ok and raisesOverflowError(num -:= intExpr( INT64_MIN)); 2207 num := 9223372036854775807; ok := ok and raisesOverflowError(num -:= intExpr(-9223372036854775807)); 2208 num := 9223372036854775806; ok := ok and raisesOverflowError(num -:= intExpr( INT64_MIN)); 2209 num := 9223372036854775806; ok := ok and raisesOverflowError(num -:= intExpr(-9223372036854775807)); 2210 arr[1] := 9223372036854775807; ok := ok and raisesOverflowError(arr[1] -:= INT64_MIN); 2211 arr[1] := 9223372036854775807; ok := ok and raisesOverflowError(arr[1] -:= -9223372036854775807); 2212 arr[1] := 9223372036854775806; ok := ok and raisesOverflowError(arr[1] -:= INT64_MIN); 2213 arr[1] := 9223372036854775806; ok := ok and raisesOverflowError(arr[1] -:= -9223372036854775807); 2214 arr[1] := 9223372036854775807; ok := ok and raisesOverflowError(arr[1] -:= intExpr( INT64_MIN)); 2215 arr[1] := 9223372036854775807; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372036854775807)); 2216 arr[1] := 9223372036854775806; ok := ok and raisesOverflowError(arr[1] -:= intExpr( INT64_MIN)); 2217 arr[1] := 9223372036854775806; ok := ok and raisesOverflowError(arr[1] -:= intExpr(-9223372036854775807)); 2218 if not ok then 2219 writeln(" ***** Subtraction assignment overflow does not raise OVERFLOW_ERROR."); 2220 okay := FALSE; 2221 end if; 2222 2223 if okay then 2224 writeln("Overflow checking of subtraction assignment works correct."); 2225 else 2226 writeln(" ***** Overflow checking of subtraction assignment does not work correct."); 2227 end if; 2228 end func; 2229 2230 2231const proc: check_succ is func 2232 local 2233 var boolean: okay is TRUE; 2234 begin 2235 if not raisesOverflowError(succ(9223372036854775807)) or 2236 not raisesOverflowError(succ(intExpr(9223372036854775807))) then 2237 writeln(" ***** Succ overflow does not raise OVERFLOW_ERROR."); 2238 okay := FALSE; 2239 end if; 2240 2241 if okay then 2242 writeln("Overflow checking of succ works correct."); 2243 else 2244 writeln(" ***** Overflow checking of succ does not work correct."); 2245 end if; 2246 end func; 2247 2248 2249const proc: check_pred is func 2250 local 2251 var boolean: okay is TRUE; 2252 begin 2253 if not raisesOverflowError(pred(INT64_MIN)) or 2254 not raisesOverflowError(pred(intExpr(INT64_MIN))) then 2255 writeln(" ***** Pred overflow does not raise OVERFLOW_ERROR."); 2256 okay := FALSE; 2257 end if; 2258 2259 if okay then 2260 writeln("Overflow checking of pred works correct."); 2261 else 2262 writeln(" ***** Overflow checking of pred does not work correct."); 2263 end if; 2264 end func; 2265 2266 2267const proc: check_incr is func 2268 local 2269 var integer: num is 0; 2270 var array integer: arr is [] (0); 2271 var boolean: okay is TRUE; 2272 begin 2273 num := 9223372036854775807; okay := okay and raisesOverflowError(incr(num)); 2274 arr[1] := 9223372036854775807; okay := okay and raisesOverflowError(incr(arr[1])); 2275 2276 if okay then 2277 writeln("Overflow checking of incr works correct."); 2278 else 2279 writeln(" ***** Overflow checking of incr does not work correct."); 2280 end if; 2281 end func; 2282 2283 2284const proc: check_decr is func 2285 local 2286 var integer: num is 0; 2287 var array integer: arr is [] (0); 2288 var boolean: okay is TRUE; 2289 begin 2290 num := INT64_MIN; okay := okay and raisesOverflowError(decr(num)); 2291 arr[1] := INT64_MIN; okay := okay and raisesOverflowError(decr(arr[1])); 2292 2293 if okay then 2294 writeln("Overflow checking of decr works correct."); 2295 else 2296 writeln(" ***** Overflow checking of decr does not work correct."); 2297 end if; 2298 end func; 2299 2300 2301(** 2302 * Tests for the compiler optimization to reduce overflow checking 2303 * for multiplication. 2304 *) 2305const func boolean: check_reduced_overflow_checking_for_mult is func 2306 result 2307 var boolean: okay is TRUE; 2308 begin 2309 if not raisesOverflowError(intExpr( integer.last) div -integer.last * integer.first) or 2310 not raisesOverflowError(intExpr( integer.last) div -4611686018427387905 * integer.first) or 2311 not raisesOverflowError(intExpr( integer.last) div -3074457345618258602 * -3074457345618258603) or 2312 not raisesOverflowError(intExpr( integer.last) div -1317624576693539401 * -1317624576693539402) or 2313 not raisesOverflowError(intExpr( integer.last) div -60247241209 * -60247241210) or 2314 not raisesOverflowError(intExpr( integer.last) div -34359738369 * -34359738497) or 2315 not raisesOverflowError(intExpr( integer.last) div -1234567890 * -1234567891) or 2316 not raisesOverflowError(intExpr( integer.last) div -7 * -8) or 2317 not raisesOverflowError(intExpr( integer.last) div -3 * -4) or 2318 not raisesOverflowError(intExpr(integer.first) div 2 * -2) or 2319 not raisesOverflowError(intExpr(integer.first) div 3 * -4) or 2320 not raisesOverflowError(intExpr(integer.first) div 7 * -8) or 2321 not raisesOverflowError(intExpr(integer.first) div 1234567890 * -1234567891) or 2322 not raisesOverflowError(intExpr(integer.first) div 34359738368 * -34359738368) or 2323 not raisesOverflowError(intExpr(integer.first) div 34359738369 * -34359738497) or 2324 not raisesOverflowError(intExpr(integer.first) div 60247241209 * -60247241210) or 2325 not raisesOverflowError(intExpr(integer.first) div 1317624576693539401 * -1317624576693539402) or 2326 not raisesOverflowError(intExpr(integer.first) div 4611686018427387904 * -4611686018427387904) or 2327 not raisesOverflowError(intExpr(integer.first) div 9223372036854775806 * integer.first) or 2328 not raisesOverflowError(intExpr(integer.first) div integer.last * integer.first) then 2329 writeln(" ***** Reduced overflow check for mult failed: Minimum division result if the divisor is known. (1)"); 2330 okay := FALSE; 2331 end if; 2332 2333 if not raisesOverflowError(intExpr( integer.last) div -3074457345618258602 * 3074457345618258603) or 2334 not raisesOverflowError(intExpr( integer.last) div -1317624576693539401 * 1317624576693539402) or 2335 not raisesOverflowError(intExpr( integer.last) div -60247241209 * 60247241210) or 2336 not raisesOverflowError(intExpr( integer.last) div -34359738369 * 34359738497) or 2337 not raisesOverflowError(intExpr( integer.last) div -1234567890 * 1234567891) or 2338 not raisesOverflowError(intExpr( integer.last) div -7 * 8) or 2339 not raisesOverflowError(intExpr( integer.last) div -3 * 4) or 2340 not raisesOverflowError(intExpr(integer.first) div 2 * 3) or 2341 not raisesOverflowError(intExpr(integer.first) div 3 * 4) or 2342 not raisesOverflowError(intExpr(integer.first) div 7 * 8) or 2343 not raisesOverflowError(intExpr(integer.first) div 1234567890 * 1234567891) or 2344 not raisesOverflowError(intExpr(integer.first) div 34359738368 * 34359738369) or 2345 not raisesOverflowError(intExpr(integer.first) div 34359738369 * 34359738497) or 2346 not raisesOverflowError(intExpr(integer.first) div 60247241209 * 60247241210) or 2347 not raisesOverflowError(intExpr(integer.first) div 1317624576693539401 * 1317624576693539402) or 2348 not raisesOverflowError(intExpr(integer.first) div 4611686018427387904 * 4611686018427387905) then 2349 writeln(" ***** Reduced overflow check for mult failed: Minimum division result if the divisor is known. (2)"); 2350 okay := FALSE; 2351 end if; 2352 2353 if raisesOverflowError(intExpr(integer.first) div -4611686018427387904 * -4611686018427387904) or 2354 not raisesOverflowError(intExpr(integer.first) div -4611686018427387904 * -4611686018427387905) or 2355 not raisesOverflowError(intExpr(integer.first) div -1317624576693539401 * -1317624576693539402) or 2356 not raisesOverflowError(intExpr(integer.first) div -60247241209 * -60247241210) or 2357 not raisesOverflowError(intExpr(integer.first) div -34359738369 * -34359738497) or 2358 raisesOverflowError(intExpr(integer.first) div -34359738368 * -34359738368) or 2359 not raisesOverflowError(intExpr(integer.first) div -34359738368 * -34359738369) or 2360 not raisesOverflowError(intExpr(integer.first) div -1234567890 * -1234567891) or 2361 not raisesOverflowError(intExpr(integer.first) div -7 * -8) or 2362 raisesOverflowError(intExpr(integer.first) div -3 * -3) or 2363 not raisesOverflowError(intExpr(integer.first) div -3 * -4) or 2364 raisesOverflowError(intExpr(integer.first) div -2 * -2) or 2365 not raisesOverflowError(intExpr(integer.first) div -2 * -3) or 2366 not raisesOverflowError(intExpr( integer.last) div 3 * -4) or 2367 not raisesOverflowError(intExpr( integer.last) div 7 * -8) or 2368 not raisesOverflowError(intExpr( integer.last) div 1234567890 * -1234567891) or 2369 raisesOverflowError(intExpr( integer.last) div 34359738367 * -34359738368) or 2370 not raisesOverflowError(intExpr( integer.last) div 34359738367 * -34359738369) or 2371 not raisesOverflowError(intExpr( integer.last) div 60247241209 * -60247241210) or 2372 not raisesOverflowError(intExpr( integer.last) div 1317624576693539401 * -1317624576693539402) or 2373 raisesOverflowError(intExpr( integer.last) div 4611686018427387903 * -4611686018427387904) or 2374 not raisesOverflowError(intExpr( integer.last) div 4611686018427387903 * -4611686018427387905) then 2375 writeln(" ***** Reduced overflow check for mult failed: Maximum division result if the divisor is known. (1)"); 2376 okay := FALSE; 2377 end if; 2378 2379 if not raisesOverflowError(intExpr(integer.first) div -4611686018427387904 * 4611686018427387904) or 2380 not raisesOverflowError(intExpr(integer.first) div -1317624576693539401 * 1317624576693539402) or 2381 not raisesOverflowError(intExpr(integer.first) div -60247241209 * 60247241210) or 2382 not raisesOverflowError(intExpr(integer.first) div -34359738369 * 34359738497) or 2383 not raisesOverflowError(intExpr(integer.first) div -34359738368 * 34359738368) or 2384 not raisesOverflowError(intExpr(integer.first) div -1234567890 * 1234567891) or 2385 not raisesOverflowError(intExpr(integer.first) div -7 * 8) or 2386 raisesOverflowError(intExpr(integer.first) div -3 * 3) or 2387 not raisesOverflowError(intExpr(integer.first) div -3 * 4) or 2388 not raisesOverflowError(intExpr(integer.first) div -2 * 2) or 2389 not raisesOverflowError(intExpr( integer.last) div 1 * 2) or 2390 not raisesOverflowError(intExpr( integer.last) div 2 * 3) or 2391 not raisesOverflowError(intExpr( integer.last) div 3 * 4) or 2392 not raisesOverflowError(intExpr( integer.last) div 7 * 8) or 2393 not raisesOverflowError(intExpr( integer.last) div 1234567890 * 1234567891) or 2394 not raisesOverflowError(intExpr( integer.last) div 34359738367 * 34359738368) or 2395 not raisesOverflowError(intExpr( integer.last) div 34359738368 * 34359738497) or 2396 not raisesOverflowError(intExpr( integer.last) div 60247241209 * 60247241210) or 2397 not raisesOverflowError(intExpr( integer.last) div 1317624576693539401 * 1317624576693539402) or 2398 raisesOverflowError(intExpr( integer.last) div 4611686018427387903 * 4611686018427387903) or 2399 not raisesOverflowError(intExpr( integer.last) div 4611686018427387903 * 4611686018427387904) then 2400 writeln(" ***** Reduced overflow check for mult failed: Maximum division result if the divisor is known. (2)"); 2401 okay := FALSE; 2402 end if; 2403 end func; 2404 2405 2406const proc: check_mult is func 2407 local 2408 var boolean: okay is TRUE; 2409 begin 2410 if not raisesOverflowError(-4611686018427387905 * 2) or 2411 not raisesOverflowError(-4611686018427387904 * 3) or 2412 not raisesOverflowError(-3074457345618258603 * 3) or 2413 not raisesOverflowError(-3074457345618258602 * 4) or 2414 not raisesOverflowError( -838488366986797801 * 11) or 2415 not raisesOverflowError( -838488366986797800 * 12) or 2416 not raisesOverflowError( -10762394442070917 * 857) or 2417 not raisesOverflowError( -10762394442070916 * 858) or 2418 not raisesOverflowError( -1988224194191588 * 4639) or 2419 not raisesOverflowError( -1988224194191587 * 4640) or 2420 not raisesOverflowError( -240989001041329 * 38273) or 2421 not raisesOverflowError( -240989001041328 * 38274) or 2422 not raisesOverflowError( -14312161101688 * 644443) or 2423 not raisesOverflowError( -14312161101687 * 644444) or 2424 not raisesOverflowError( -933865493038 * 9876553) or 2425 not raisesOverflowError( -933865493037 * 9876554) or 2426 not raisesOverflowError( -747094709114 * 12345653) or 2427 not raisesOverflowError( -747094709113 * 12345654) or 2428 not raisesOverflowError( -74709312969 * 123456791) or 2429 not raisesOverflowError( -74709312968 * 123456792) or 2430 not raisesOverflowError( -3037000500 * 3037000500) or 2431 not raisesOverflowError( -123456792 * 74709312968) or 2432 not raisesOverflowError( -123456791 * 74709312969) or 2433 not raisesOverflowError( -12345654 * 747094709113) or 2434 not raisesOverflowError( -12345653 * 747094709114) or 2435 not raisesOverflowError( -9876554 * 933865493037) or 2436 not raisesOverflowError( -9876553 * 933865493038) or 2437 not raisesOverflowError( -644444 * 14312161101687) or 2438 not raisesOverflowError( -644443 * 14312161101688) or 2439 not raisesOverflowError( -38274 * 240989001041328) or 2440 not raisesOverflowError( -38273 * 240989001041329) or 2441 not raisesOverflowError( -4640 * 1988224194191587) or 2442 not raisesOverflowError( -4639 * 1988224194191588) or 2443 not raisesOverflowError( -858 * 10762394442070916) or 2444 not raisesOverflowError( -857 * 10762394442070917) or 2445 not raisesOverflowError( -12 * 838488366986797800) or 2446 not raisesOverflowError( -11 * 838488366986797801) or 2447 not raisesOverflowError( -4 * 3074457345618258602) or 2448 not raisesOverflowError( -3 * 3074457345618258603) or 2449 not raisesOverflowError( -3 * 4611686018427387904) or 2450 not raisesOverflowError( -2 * 4611686018427387905) or 2451 not raisesOverflowError( 4611686018427387905 * -2) or 2452 not raisesOverflowError( 4611686018427387904 * -3) or 2453 not raisesOverflowError( 3074457345618258603 * -3) or 2454 not raisesOverflowError( 3074457345618258602 * -4) or 2455 not raisesOverflowError( 838488366986797801 * -11) or 2456 not raisesOverflowError( 838488366986797800 * -12) or 2457 not raisesOverflowError( 10762394442070917 * -857) or 2458 not raisesOverflowError( 10762394442070916 * -858) or 2459 not raisesOverflowError( 1988224194191588 * -4639) or 2460 not raisesOverflowError( 1988224194191587 * -4640) or 2461 not raisesOverflowError( 240989001041329 * -38273) or 2462 not raisesOverflowError( 240989001041328 * -38274) or 2463 not raisesOverflowError( 14312161101688 * -644443) or 2464 not raisesOverflowError( 14312161101687 * -644444) or 2465 not raisesOverflowError( 933865493038 * -9876553) or 2466 not raisesOverflowError( 933865493037 * -9876554) or 2467 not raisesOverflowError( 747094709114 * -12345653) or 2468 not raisesOverflowError( 747094709113 * -12345654) or 2469 not raisesOverflowError( 74709312969 * -123456791) or 2470 not raisesOverflowError( 74709312968 * -123456792) or 2471 not raisesOverflowError( 3037000500 * -3037000500) or 2472 not raisesOverflowError( 123456792 * -74709312968) or 2473 not raisesOverflowError( 123456791 * -74709312969) or 2474 not raisesOverflowError( 12345654 * -747094709113) or 2475 not raisesOverflowError( 12345653 * -747094709114) or 2476 not raisesOverflowError( 9876554 * -933865493037) or 2477 not raisesOverflowError( 9876553 * -933865493038) or 2478 not raisesOverflowError( 644444 * -14312161101687) or 2479 not raisesOverflowError( 644443 * -14312161101688) or 2480 not raisesOverflowError( 38274 * -240989001041328) or 2481 not raisesOverflowError( 38273 * -240989001041329) or 2482 not raisesOverflowError( 4640 * -1988224194191587) or 2483 not raisesOverflowError( 4639 * -1988224194191588) or 2484 not raisesOverflowError( 858 * -10762394442070916) or 2485 not raisesOverflowError( 857 * -10762394442070917) or 2486 not raisesOverflowError( 12 * -838488366986797800) or 2487 not raisesOverflowError( 11 * -838488366986797801) or 2488 not raisesOverflowError( 4 * -3074457345618258602) or 2489 not raisesOverflowError( 3 * -3074457345618258603) or 2490 not raisesOverflowError( 3 * -4611686018427387904) or 2491 not raisesOverflowError( 2 * -4611686018427387905) then 2492 writeln(" ***** Underflow when computing multiplication does not raise OVERFLOW_ERROR. (1)"); 2493 okay := FALSE; 2494 end if; 2495 2496 if not raisesOverflowError(intExpr(-4611686018427387905) * 2) or 2497 not raisesOverflowError(intExpr(-4611686018427387904) * 3) or 2498 not raisesOverflowError(intExpr(-3074457345618258603) * 3) or 2499 not raisesOverflowError(intExpr(-3074457345618258602) * 4) or 2500 not raisesOverflowError(intExpr( -838488366986797801) * 11) or 2501 not raisesOverflowError(intExpr( -838488366986797800) * 12) or 2502 not raisesOverflowError(intExpr( -10762394442070917) * 857) or 2503 not raisesOverflowError(intExpr( -10762394442070916) * 858) or 2504 not raisesOverflowError(intExpr( -1988224194191588) * 4639) or 2505 not raisesOverflowError(intExpr( -1988224194191587) * 4640) or 2506 not raisesOverflowError(intExpr( -240989001041329) * 38273) or 2507 not raisesOverflowError(intExpr( -240989001041328) * 38274) or 2508 not raisesOverflowError(intExpr( -14312161101688) * 644443) or 2509 not raisesOverflowError(intExpr( -14312161101687) * 644444) or 2510 not raisesOverflowError(intExpr( -933865493038) * 9876553) or 2511 not raisesOverflowError(intExpr( -933865493037) * 9876554) or 2512 not raisesOverflowError(intExpr( -747094709114) * 12345653) or 2513 not raisesOverflowError(intExpr( -747094709113) * 12345654) or 2514 not raisesOverflowError(intExpr( -74709312969) * 123456791) or 2515 not raisesOverflowError(intExpr( -74709312968) * 123456792) or 2516 not raisesOverflowError(intExpr( -3037000500) * 3037000500) or 2517 not raisesOverflowError(intExpr( -123456792) * 74709312968) or 2518 not raisesOverflowError(intExpr( -123456791) * 74709312969) or 2519 not raisesOverflowError(intExpr( -12345654) * 747094709113) or 2520 not raisesOverflowError(intExpr( -12345653) * 747094709114) or 2521 not raisesOverflowError(intExpr( -9876554) * 933865493037) or 2522 not raisesOverflowError(intExpr( -9876553) * 933865493038) or 2523 not raisesOverflowError(intExpr( -644444) * 14312161101687) or 2524 not raisesOverflowError(intExpr( -644443) * 14312161101688) or 2525 not raisesOverflowError(intExpr( -38274) * 240989001041328) or 2526 not raisesOverflowError(intExpr( -38273) * 240989001041329) or 2527 not raisesOverflowError(intExpr( -4640) * 1988224194191587) or 2528 not raisesOverflowError(intExpr( -4639) * 1988224194191588) or 2529 not raisesOverflowError(intExpr( -858) * 10762394442070916) or 2530 not raisesOverflowError(intExpr( -857) * 10762394442070917) or 2531 not raisesOverflowError(intExpr( -12) * 838488366986797800) or 2532 not raisesOverflowError(intExpr( -11) * 838488366986797801) or 2533 not raisesOverflowError(intExpr( -4) * 3074457345618258602) or 2534 not raisesOverflowError(intExpr( -3) * 3074457345618258603) or 2535 not raisesOverflowError(intExpr( -3) * 4611686018427387904) or 2536 not raisesOverflowError(intExpr( -2) * 4611686018427387905) or 2537 not raisesOverflowError(intExpr( 4611686018427387905) * -2) or 2538 not raisesOverflowError(intExpr( 4611686018427387904) * -3) or 2539 not raisesOverflowError(intExpr( 3074457345618258603) * -3) or 2540 not raisesOverflowError(intExpr( 3074457345618258602) * -4) or 2541 not raisesOverflowError(intExpr( 838488366986797801) * -11) or 2542 not raisesOverflowError(intExpr( 838488366986797800) * -12) or 2543 not raisesOverflowError(intExpr( 10762394442070917) * -857) or 2544 not raisesOverflowError(intExpr( 10762394442070916) * -858) or 2545 not raisesOverflowError(intExpr( 1988224194191588) * -4639) or 2546 not raisesOverflowError(intExpr( 1988224194191587) * -4640) or 2547 not raisesOverflowError(intExpr( 240989001041329) * -38273) or 2548 not raisesOverflowError(intExpr( 240989001041328) * -38274) or 2549 not raisesOverflowError(intExpr( 14312161101688) * -644443) or 2550 not raisesOverflowError(intExpr( 14312161101687) * -644444) or 2551 not raisesOverflowError(intExpr( 933865493038) * -9876553) or 2552 not raisesOverflowError(intExpr( 933865493037) * -9876554) or 2553 not raisesOverflowError(intExpr( 747094709114) * -12345653) or 2554 not raisesOverflowError(intExpr( 747094709113) * -12345654) or 2555 not raisesOverflowError(intExpr( 74709312969) * -123456791) or 2556 not raisesOverflowError(intExpr( 74709312968) * -123456792) or 2557 not raisesOverflowError(intExpr( 3037000500) * -3037000500) or 2558 not raisesOverflowError(intExpr( 123456792) * -74709312968) or 2559 not raisesOverflowError(intExpr( 123456791) * -74709312969) or 2560 not raisesOverflowError(intExpr( 12345654) * -747094709113) or 2561 not raisesOverflowError(intExpr( 12345653) * -747094709114) or 2562 not raisesOverflowError(intExpr( 9876554) * -933865493037) or 2563 not raisesOverflowError(intExpr( 9876553) * -933865493038) or 2564 not raisesOverflowError(intExpr( 644444) * -14312161101687) or 2565 not raisesOverflowError(intExpr( 644443) * -14312161101688) or 2566 not raisesOverflowError(intExpr( 38274) * -240989001041328) or 2567 not raisesOverflowError(intExpr( 38273) * -240989001041329) or 2568 not raisesOverflowError(intExpr( 4640) * -1988224194191587) or 2569 not raisesOverflowError(intExpr( 4639) * -1988224194191588) or 2570 not raisesOverflowError(intExpr( 858) * -10762394442070916) or 2571 not raisesOverflowError(intExpr( 857) * -10762394442070917) or 2572 not raisesOverflowError(intExpr( 12) * -838488366986797800) or 2573 not raisesOverflowError(intExpr( 11) * -838488366986797801) or 2574 not raisesOverflowError(intExpr( 4) * -3074457345618258602) or 2575 not raisesOverflowError(intExpr( 3) * -3074457345618258603) or 2576 not raisesOverflowError(intExpr( 3) * -4611686018427387904) or 2577 not raisesOverflowError(intExpr( 2) * -4611686018427387905) then 2578 writeln(" ***** Underflow when computing multiplication does not raise OVERFLOW_ERROR. (2)"); 2579 okay := FALSE; 2580 end if; 2581 2582 if not raisesOverflowError(-4611686018427387905 * intExpr( 2)) or 2583 not raisesOverflowError(-4611686018427387904 * intExpr( 3)) or 2584 not raisesOverflowError(-3074457345618258603 * intExpr( 3)) or 2585 not raisesOverflowError(-3074457345618258602 * intExpr( 4)) or 2586 not raisesOverflowError( -838488366986797801 * intExpr( 11)) or 2587 not raisesOverflowError( -838488366986797800 * intExpr( 12)) or 2588 not raisesOverflowError( -10762394442070917 * intExpr( 857)) or 2589 not raisesOverflowError( -10762394442070916 * intExpr( 858)) or 2590 not raisesOverflowError( -1988224194191588 * intExpr( 4639)) or 2591 not raisesOverflowError( -1988224194191587 * intExpr( 4640)) or 2592 not raisesOverflowError( -240989001041329 * intExpr( 38273)) or 2593 not raisesOverflowError( -240989001041328 * intExpr( 38274)) or 2594 not raisesOverflowError( -14312161101688 * intExpr( 644443)) or 2595 not raisesOverflowError( -14312161101687 * intExpr( 644444)) or 2596 not raisesOverflowError( -933865493038 * intExpr( 9876553)) or 2597 not raisesOverflowError( -933865493037 * intExpr( 9876554)) or 2598 not raisesOverflowError( -747094709114 * intExpr( 12345653)) or 2599 not raisesOverflowError( -747094709113 * intExpr( 12345654)) or 2600 not raisesOverflowError( -74709312969 * intExpr( 123456791)) or 2601 not raisesOverflowError( -74709312968 * intExpr( 123456792)) or 2602 not raisesOverflowError( -3037000500 * intExpr( 3037000500)) or 2603 not raisesOverflowError( -123456792 * intExpr( 74709312968)) or 2604 not raisesOverflowError( -123456791 * intExpr( 74709312969)) or 2605 not raisesOverflowError( -12345654 * intExpr( 747094709113)) or 2606 not raisesOverflowError( -12345653 * intExpr( 747094709114)) or 2607 not raisesOverflowError( -9876554 * intExpr( 933865493037)) or 2608 not raisesOverflowError( -9876553 * intExpr( 933865493038)) or 2609 not raisesOverflowError( -644444 * intExpr( 14312161101687)) or 2610 not raisesOverflowError( -644443 * intExpr( 14312161101688)) or 2611 not raisesOverflowError( -38274 * intExpr( 240989001041328)) or 2612 not raisesOverflowError( -38273 * intExpr( 240989001041329)) or 2613 not raisesOverflowError( -4640 * intExpr( 1988224194191587)) or 2614 not raisesOverflowError( -4639 * intExpr( 1988224194191588)) or 2615 not raisesOverflowError( -858 * intExpr( 10762394442070916)) or 2616 not raisesOverflowError( -857 * intExpr( 10762394442070917)) or 2617 not raisesOverflowError( -12 * intExpr( 838488366986797800)) or 2618 not raisesOverflowError( -11 * intExpr( 838488366986797801)) or 2619 not raisesOverflowError( -4 * intExpr( 3074457345618258602)) or 2620 not raisesOverflowError( -3 * intExpr( 3074457345618258603)) or 2621 not raisesOverflowError( -3 * intExpr( 4611686018427387904)) or 2622 not raisesOverflowError( -2 * intExpr( 4611686018427387905)) or 2623 not raisesOverflowError( 4611686018427387905 * intExpr( -2)) or 2624 not raisesOverflowError( 4611686018427387904 * intExpr( -3)) or 2625 not raisesOverflowError( 3074457345618258603 * intExpr( -3)) or 2626 not raisesOverflowError( 3074457345618258602 * intExpr( -4)) or 2627 not raisesOverflowError( 838488366986797801 * intExpr( -11)) or 2628 not raisesOverflowError( 838488366986797800 * intExpr( -12)) or 2629 not raisesOverflowError( 10762394442070917 * intExpr( -857)) or 2630 not raisesOverflowError( 10762394442070916 * intExpr( -858)) or 2631 not raisesOverflowError( 1988224194191588 * intExpr( -4639)) or 2632 not raisesOverflowError( 1988224194191587 * intExpr( -4640)) or 2633 not raisesOverflowError( 240989001041329 * intExpr( -38273)) or 2634 not raisesOverflowError( 240989001041328 * intExpr( -38274)) or 2635 not raisesOverflowError( 14312161101688 * intExpr( -644443)) or 2636 not raisesOverflowError( 14312161101687 * intExpr( -644444)) or 2637 not raisesOverflowError( 933865493038 * intExpr( -9876553)) or 2638 not raisesOverflowError( 933865493037 * intExpr( -9876554)) or 2639 not raisesOverflowError( 747094709114 * intExpr( -12345653)) or 2640 not raisesOverflowError( 747094709113 * intExpr( -12345654)) or 2641 not raisesOverflowError( 74709312969 * intExpr( -123456791)) or 2642 not raisesOverflowError( 74709312968 * intExpr( -123456792)) or 2643 not raisesOverflowError( 3037000500 * intExpr( -3037000500)) or 2644 not raisesOverflowError( 123456792 * intExpr( -74709312968)) or 2645 not raisesOverflowError( 123456791 * intExpr( -74709312969)) or 2646 not raisesOverflowError( 12345654 * intExpr( -747094709113)) or 2647 not raisesOverflowError( 12345653 * intExpr( -747094709114)) or 2648 not raisesOverflowError( 9876554 * intExpr( -933865493037)) or 2649 not raisesOverflowError( 9876553 * intExpr( -933865493038)) or 2650 not raisesOverflowError( 644444 * intExpr( -14312161101687)) or 2651 not raisesOverflowError( 644443 * intExpr( -14312161101688)) or 2652 not raisesOverflowError( 38274 * intExpr( -240989001041328)) or 2653 not raisesOverflowError( 38273 * intExpr( -240989001041329)) or 2654 not raisesOverflowError( 4640 * intExpr( -1988224194191587)) or 2655 not raisesOverflowError( 4639 * intExpr( -1988224194191588)) or 2656 not raisesOverflowError( 858 * intExpr( -10762394442070916)) or 2657 not raisesOverflowError( 857 * intExpr( -10762394442070917)) or 2658 not raisesOverflowError( 12 * intExpr( -838488366986797800)) or 2659 not raisesOverflowError( 11 * intExpr( -838488366986797801)) or 2660 not raisesOverflowError( 4 * intExpr(-3074457345618258602)) or 2661 not raisesOverflowError( 3 * intExpr(-3074457345618258603)) or 2662 not raisesOverflowError( 3 * intExpr(-4611686018427387904)) or 2663 not raisesOverflowError( 2 * intExpr(-4611686018427387905)) then 2664 writeln(" ***** Underflow when computing multiplication does not raise OVERFLOW_ERROR. (3)"); 2665 okay := FALSE; 2666 end if; 2667 2668 if not raisesOverflowError(intExpr(-4611686018427387905) * intExpr( 2)) or 2669 not raisesOverflowError(intExpr(-4611686018427387904) * intExpr( 3)) or 2670 not raisesOverflowError(intExpr(-3074457345618258603) * intExpr( 3)) or 2671 not raisesOverflowError(intExpr(-3074457345618258602) * intExpr( 4)) or 2672 not raisesOverflowError(intExpr( -838488366986797801) * intExpr( 11)) or 2673 not raisesOverflowError(intExpr( -838488366986797800) * intExpr( 12)) or 2674 not raisesOverflowError(intExpr( -10762394442070917) * intExpr( 857)) or 2675 not raisesOverflowError(intExpr( -10762394442070916) * intExpr( 858)) or 2676 not raisesOverflowError(intExpr( -1988224194191588) * intExpr( 4639)) or 2677 not raisesOverflowError(intExpr( -1988224194191587) * intExpr( 4640)) or 2678 not raisesOverflowError(intExpr( -240989001041329) * intExpr( 38273)) or 2679 not raisesOverflowError(intExpr( -240989001041328) * intExpr( 38274)) or 2680 not raisesOverflowError(intExpr( -14312161101688) * intExpr( 644443)) or 2681 not raisesOverflowError(intExpr( -14312161101687) * intExpr( 644444)) or 2682 not raisesOverflowError(intExpr( -933865493038) * intExpr( 9876553)) or 2683 not raisesOverflowError(intExpr( -933865493037) * intExpr( 9876554)) or 2684 not raisesOverflowError(intExpr( -747094709114) * intExpr( 12345653)) or 2685 not raisesOverflowError(intExpr( -747094709113) * intExpr( 12345654)) or 2686 not raisesOverflowError(intExpr( -74709312969) * intExpr( 123456791)) or 2687 not raisesOverflowError(intExpr( -74709312968) * intExpr( 123456792)) or 2688 not raisesOverflowError(intExpr( -3037000500) * intExpr( 3037000500)) or 2689 not raisesOverflowError(intExpr( -123456792) * intExpr( 74709312968)) or 2690 not raisesOverflowError(intExpr( -123456791) * intExpr( 74709312969)) or 2691 not raisesOverflowError(intExpr( -12345654) * intExpr( 747094709113)) or 2692 not raisesOverflowError(intExpr( -12345653) * intExpr( 747094709114)) or 2693 not raisesOverflowError(intExpr( -9876554) * intExpr( 933865493037)) or 2694 not raisesOverflowError(intExpr( -9876553) * intExpr( 933865493038)) or 2695 not raisesOverflowError(intExpr( -644444) * intExpr( 14312161101687)) or 2696 not raisesOverflowError(intExpr( -644443) * intExpr( 14312161101688)) or 2697 not raisesOverflowError(intExpr( -38274) * intExpr( 240989001041328)) or 2698 not raisesOverflowError(intExpr( -38273) * intExpr( 240989001041329)) or 2699 not raisesOverflowError(intExpr( -4640) * intExpr( 1988224194191587)) or 2700 not raisesOverflowError(intExpr( -4639) * intExpr( 1988224194191588)) or 2701 not raisesOverflowError(intExpr( -858) * intExpr( 10762394442070916)) or 2702 not raisesOverflowError(intExpr( -857) * intExpr( 10762394442070917)) or 2703 not raisesOverflowError(intExpr( -12) * intExpr( 838488366986797800)) or 2704 not raisesOverflowError(intExpr( -11) * intExpr( 838488366986797801)) or 2705 not raisesOverflowError(intExpr( -4) * intExpr( 3074457345618258602)) or 2706 not raisesOverflowError(intExpr( -3) * intExpr( 3074457345618258603)) or 2707 not raisesOverflowError(intExpr( -3) * intExpr( 4611686018427387904)) or 2708 not raisesOverflowError(intExpr( -2) * intExpr( 4611686018427387905)) or 2709 not raisesOverflowError(intExpr( 4611686018427387905) * intExpr( -2)) or 2710 not raisesOverflowError(intExpr( 4611686018427387904) * intExpr( -3)) or 2711 not raisesOverflowError(intExpr( 3074457345618258603) * intExpr( -3)) or 2712 not raisesOverflowError(intExpr( 3074457345618258602) * intExpr( -4)) or 2713 not raisesOverflowError(intExpr( 838488366986797801) * intExpr( -11)) or 2714 not raisesOverflowError(intExpr( 838488366986797800) * intExpr( -12)) or 2715 not raisesOverflowError(intExpr( 10762394442070917) * intExpr( -857)) or 2716 not raisesOverflowError(intExpr( 10762394442070916) * intExpr( -858)) or 2717 not raisesOverflowError(intExpr( 1988224194191588) * intExpr( -4639)) or 2718 not raisesOverflowError(intExpr( 1988224194191587) * intExpr( -4640)) or 2719 not raisesOverflowError(intExpr( 240989001041329) * intExpr( -38273)) or 2720 not raisesOverflowError(intExpr( 240989001041328) * intExpr( -38274)) or 2721 not raisesOverflowError(intExpr( 14312161101688) * intExpr( -644443)) or 2722 not raisesOverflowError(intExpr( 14312161101687) * intExpr( -644444)) or 2723 not raisesOverflowError(intExpr( 933865493038) * intExpr( -9876553)) or 2724 not raisesOverflowError(intExpr( 933865493037) * intExpr( -9876554)) or 2725 not raisesOverflowError(intExpr( 747094709114) * intExpr( -12345653)) or 2726 not raisesOverflowError(intExpr( 747094709113) * intExpr( -12345654)) or 2727 not raisesOverflowError(intExpr( 74709312969) * intExpr( -123456791)) or 2728 not raisesOverflowError(intExpr( 74709312968) * intExpr( -123456792)) or 2729 not raisesOverflowError(intExpr( 3037000500) * intExpr( -3037000500)) or 2730 not raisesOverflowError(intExpr( 123456792) * intExpr( -74709312968)) or 2731 not raisesOverflowError(intExpr( 123456791) * intExpr( -74709312969)) or 2732 not raisesOverflowError(intExpr( 12345654) * intExpr( -747094709113)) or 2733 not raisesOverflowError(intExpr( 12345653) * intExpr( -747094709114)) or 2734 not raisesOverflowError(intExpr( 9876554) * intExpr( -933865493037)) or 2735 not raisesOverflowError(intExpr( 9876553) * intExpr( -933865493038)) or 2736 not raisesOverflowError(intExpr( 644444) * intExpr( -14312161101687)) or 2737 not raisesOverflowError(intExpr( 644443) * intExpr( -14312161101688)) or 2738 not raisesOverflowError(intExpr( 38274) * intExpr( -240989001041328)) or 2739 not raisesOverflowError(intExpr( 38273) * intExpr( -240989001041329)) or 2740 not raisesOverflowError(intExpr( 4640) * intExpr( -1988224194191587)) or 2741 not raisesOverflowError(intExpr( 4639) * intExpr( -1988224194191588)) or 2742 not raisesOverflowError(intExpr( 858) * intExpr( -10762394442070916)) or 2743 not raisesOverflowError(intExpr( 857) * intExpr( -10762394442070917)) or 2744 not raisesOverflowError(intExpr( 12) * intExpr( -838488366986797800)) or 2745 not raisesOverflowError(intExpr( 11) * intExpr( -838488366986797801)) or 2746 not raisesOverflowError(intExpr( 4) * intExpr(-3074457345618258602)) or 2747 not raisesOverflowError(intExpr( 3) * intExpr(-3074457345618258603)) or 2748 not raisesOverflowError(intExpr( 3) * intExpr(-4611686018427387904)) or 2749 not raisesOverflowError(intExpr( 2) * intExpr(-4611686018427387905)) then 2750 writeln(" ***** Underflow when computing multiplication does not raise OVERFLOW_ERROR. (4)"); 2751 okay := FALSE; 2752 end if; 2753 2754 if not raisesOverflowError( INT64_MIN * -1) or 2755 not raisesOverflowError(-4611686018427387904 * -2) or 2756 not raisesOverflowError(-4611686018427387903 * -3) or 2757 not raisesOverflowError(-3074457345618258603 * -3) or 2758 not raisesOverflowError(-3074457345618258602 * -4) or 2759 not raisesOverflowError( -838488366986797801 * -11) or 2760 not raisesOverflowError( -838488366986797800 * -12) or 2761 not raisesOverflowError( -10762394442070917 * -857) or 2762 not raisesOverflowError( -10762394442070916 * -858) or 2763 not raisesOverflowError( -1988224194191588 * -4639) or 2764 not raisesOverflowError( -1988224194191587 * -4640) or 2765 not raisesOverflowError( -240989001041329 * -38273) or 2766 not raisesOverflowError( -240989001041328 * -38274) or 2767 not raisesOverflowError( -14312161101688 * -644443) or 2768 not raisesOverflowError( -14312161101687 * -644444) or 2769 not raisesOverflowError( -933865493038 * -9876553) or 2770 not raisesOverflowError( -933865493037 * -9876554) or 2771 not raisesOverflowError( -747094709114 * -12345653) or 2772 not raisesOverflowError( -747094709113 * -12345654) or 2773 not raisesOverflowError( -74709312969 * -123456791) or 2774 not raisesOverflowError( -74709312968 * -123456792) or 2775 not raisesOverflowError( -3037000500 * -3037000500) or 2776 not raisesOverflowError( -123456792 * -74709312968) or 2777 not raisesOverflowError( -123456791 * -74709312969) or 2778 not raisesOverflowError( -12345654 * -747094709113) or 2779 not raisesOverflowError( -12345653 * -747094709114) or 2780 not raisesOverflowError( -9876554 * -933865493037) or 2781 not raisesOverflowError( -9876553 * -933865493038) or 2782 not raisesOverflowError( -644444 * -14312161101687) or 2783 not raisesOverflowError( -644443 * -14312161101688) or 2784 not raisesOverflowError( -38274 * -240989001041328) or 2785 not raisesOverflowError( -38273 * -240989001041329) or 2786 not raisesOverflowError( -4640 * -1988224194191587) or 2787 not raisesOverflowError( -4639 * -1988224194191588) or 2788 not raisesOverflowError( -858 * -10762394442070916) or 2789 not raisesOverflowError( -857 * -10762394442070917) or 2790 not raisesOverflowError( -12 * -838488366986797800) or 2791 not raisesOverflowError( -11 * -838488366986797801) or 2792 not raisesOverflowError( -4 * -3074457345618258602) or 2793 not raisesOverflowError( -3 * -3074457345618258603) or 2794 not raisesOverflowError( -3 * -4611686018427387903) or 2795 not raisesOverflowError( -2 * -4611686018427387904) or 2796 not raisesOverflowError( 4611686018427387904 * 2) or 2797 not raisesOverflowError( 4611686018427387903 * 3) or 2798 not raisesOverflowError( 3074457345618258603 * 3) or 2799 not raisesOverflowError( 3074457345618258602 * 4) or 2800 not raisesOverflowError( 838488366986797801 * 11) or 2801 not raisesOverflowError( 838488366986797800 * 12) or 2802 not raisesOverflowError( 10762394442070917 * 857) or 2803 not raisesOverflowError( 10762394442070916 * 858) or 2804 not raisesOverflowError( 1988224194191588 * 4639) or 2805 not raisesOverflowError( 1988224194191587 * 4640) or 2806 not raisesOverflowError( 240989001041329 * 38273) or 2807 not raisesOverflowError( 240989001041328 * 38274) or 2808 not raisesOverflowError( 14312161101688 * 644443) or 2809 not raisesOverflowError( 14312161101687 * 644444) or 2810 not raisesOverflowError( 933865493038 * 9876553) or 2811 not raisesOverflowError( 933865493037 * 9876554) or 2812 not raisesOverflowError( 747094709114 * 12345653) or 2813 not raisesOverflowError( 747094709113 * 12345654) or 2814 not raisesOverflowError( 74709312969 * 123456791) or 2815 not raisesOverflowError( 74709312968 * 123456792) or 2816 not raisesOverflowError( 3037000500 * 3037000500) or 2817 not raisesOverflowError( 123456792 * 74709312968) or 2818 not raisesOverflowError( 123456791 * 74709312969) or 2819 not raisesOverflowError( 12345654 * 747094709113) or 2820 not raisesOverflowError( 12345653 * 747094709114) or 2821 not raisesOverflowError( 9876554 * 933865493037) or 2822 not raisesOverflowError( 9876553 * 933865493038) or 2823 not raisesOverflowError( 644444 * 14312161101687) or 2824 not raisesOverflowError( 644443 * 14312161101688) or 2825 not raisesOverflowError( 38274 * 240989001041328) or 2826 not raisesOverflowError( 38273 * 240989001041329) or 2827 not raisesOverflowError( 4640 * 1988224194191587) or 2828 not raisesOverflowError( 4639 * 1988224194191588) or 2829 not raisesOverflowError( 858 * 10762394442070916) or 2830 not raisesOverflowError( 857 * 10762394442070917) or 2831 not raisesOverflowError( 12 * 838488366986797800) or 2832 not raisesOverflowError( 11 * 838488366986797801) or 2833 not raisesOverflowError( 4 * 3074457345618258602) or 2834 not raisesOverflowError( 3 * 3074457345618258603) or 2835 not raisesOverflowError( 3 * 4611686018427387903) or 2836 not raisesOverflowError( 2 * 4611686018427387904) then 2837 writeln(" ***** Overflow when computing multiplication does not raise OVERFLOW_ERROR. (1)"); 2838 okay := FALSE; 2839 end if; 2840 2841 if not raisesOverflowError(intExpr( INT64_MIN) * -1) or 2842 not raisesOverflowError(intExpr(-4611686018427387904) * -2) or 2843 not raisesOverflowError(intExpr(-4611686018427387903) * -3) or 2844 not raisesOverflowError(intExpr(-3074457345618258603) * -3) or 2845 not raisesOverflowError(intExpr(-3074457345618258602) * -4) or 2846 not raisesOverflowError(intExpr( -838488366986797801) * -11) or 2847 not raisesOverflowError(intExpr( -838488366986797800) * -12) or 2848 not raisesOverflowError(intExpr( -10762394442070917) * -857) or 2849 not raisesOverflowError(intExpr( -10762394442070916) * -858) or 2850 not raisesOverflowError(intExpr( -1988224194191588) * -4639) or 2851 not raisesOverflowError(intExpr( -1988224194191587) * -4640) or 2852 not raisesOverflowError(intExpr( -240989001041329) * -38273) or 2853 not raisesOverflowError(intExpr( -240989001041328) * -38274) or 2854 not raisesOverflowError(intExpr( -14312161101688) * -644443) or 2855 not raisesOverflowError(intExpr( -14312161101687) * -644444) or 2856 not raisesOverflowError(intExpr( -933865493038) * -9876553) or 2857 not raisesOverflowError(intExpr( -933865493037) * -9876554) or 2858 not raisesOverflowError(intExpr( -747094709114) * -12345653) or 2859 not raisesOverflowError(intExpr( -747094709113) * -12345654) or 2860 not raisesOverflowError(intExpr( -74709312969) * -123456791) or 2861 not raisesOverflowError(intExpr( -74709312968) * -123456792) or 2862 not raisesOverflowError(intExpr( -3037000500) * -3037000500) or 2863 not raisesOverflowError(intExpr( -123456792) * -74709312968) or 2864 not raisesOverflowError(intExpr( -123456791) * -74709312969) or 2865 not raisesOverflowError(intExpr( -12345654) * -747094709113) or 2866 not raisesOverflowError(intExpr( -12345653) * -747094709114) or 2867 not raisesOverflowError(intExpr( -9876554) * -933865493037) or 2868 not raisesOverflowError(intExpr( -9876553) * -933865493038) or 2869 not raisesOverflowError(intExpr( -644444) * -14312161101687) or 2870 not raisesOverflowError(intExpr( -644443) * -14312161101688) or 2871 not raisesOverflowError(intExpr( -38274) * -240989001041328) or 2872 not raisesOverflowError(intExpr( -38273) * -240989001041329) or 2873 not raisesOverflowError(intExpr( -4640) * -1988224194191587) or 2874 not raisesOverflowError(intExpr( -4639) * -1988224194191588) or 2875 not raisesOverflowError(intExpr( -858) * -10762394442070916) or 2876 not raisesOverflowError(intExpr( -857) * -10762394442070917) or 2877 not raisesOverflowError(intExpr( -12) * -838488366986797800) or 2878 not raisesOverflowError(intExpr( -11) * -838488366986797801) or 2879 not raisesOverflowError(intExpr( -4) * -3074457345618258602) or 2880 not raisesOverflowError(intExpr( -3) * -3074457345618258603) or 2881 not raisesOverflowError(intExpr( -3) * -4611686018427387903) or 2882 not raisesOverflowError(intExpr( -2) * -4611686018427387904) or 2883 not raisesOverflowError(intExpr( 4611686018427387904) * 2) or 2884 not raisesOverflowError(intExpr( 4611686018427387903) * 3) or 2885 not raisesOverflowError(intExpr( 3074457345618258603) * 3) or 2886 not raisesOverflowError(intExpr( 3074457345618258602) * 4) or 2887 not raisesOverflowError(intExpr( 838488366986797801) * 11) or 2888 not raisesOverflowError(intExpr( 838488366986797800) * 12) or 2889 not raisesOverflowError(intExpr( 10762394442070917) * 857) or 2890 not raisesOverflowError(intExpr( 10762394442070916) * 858) or 2891 not raisesOverflowError(intExpr( 1988224194191588) * 4639) or 2892 not raisesOverflowError(intExpr( 1988224194191587) * 4640) or 2893 not raisesOverflowError(intExpr( 240989001041329) * 38273) or 2894 not raisesOverflowError(intExpr( 240989001041328) * 38274) or 2895 not raisesOverflowError(intExpr( 14312161101688) * 644443) or 2896 not raisesOverflowError(intExpr( 14312161101687) * 644444) or 2897 not raisesOverflowError(intExpr( 933865493038) * 9876553) or 2898 not raisesOverflowError(intExpr( 933865493037) * 9876554) or 2899 not raisesOverflowError(intExpr( 747094709114) * 12345653) or 2900 not raisesOverflowError(intExpr( 747094709113) * 12345654) or 2901 not raisesOverflowError(intExpr( 74709312969) * 123456791) or 2902 not raisesOverflowError(intExpr( 74709312968) * 123456792) or 2903 not raisesOverflowError(intExpr( 3037000500) * 3037000500) or 2904 not raisesOverflowError(intExpr( 123456792) * 74709312968) or 2905 not raisesOverflowError(intExpr( 123456791) * 74709312969) or 2906 not raisesOverflowError(intExpr( 12345654) * 747094709113) or 2907 not raisesOverflowError(intExpr( 12345653) * 747094709114) or 2908 not raisesOverflowError(intExpr( 9876554) * 933865493037) or 2909 not raisesOverflowError(intExpr( 9876553) * 933865493038) or 2910 not raisesOverflowError(intExpr( 644444) * 14312161101687) or 2911 not raisesOverflowError(intExpr( 644443) * 14312161101688) or 2912 not raisesOverflowError(intExpr( 38274) * 240989001041328) or 2913 not raisesOverflowError(intExpr( 38273) * 240989001041329) or 2914 not raisesOverflowError(intExpr( 4640) * 1988224194191587) or 2915 not raisesOverflowError(intExpr( 4639) * 1988224194191588) or 2916 not raisesOverflowError(intExpr( 858) * 10762394442070916) or 2917 not raisesOverflowError(intExpr( 857) * 10762394442070917) or 2918 not raisesOverflowError(intExpr( 12) * 838488366986797800) or 2919 not raisesOverflowError(intExpr( 11) * 838488366986797801) or 2920 not raisesOverflowError(intExpr( 4) * 3074457345618258602) or 2921 not raisesOverflowError(intExpr( 3) * 3074457345618258603) or 2922 not raisesOverflowError(intExpr( 3) * 4611686018427387903) or 2923 not raisesOverflowError(intExpr( 2) * 4611686018427387904) then 2924 writeln(" ***** Overflow when computing multiplication does not raise OVERFLOW_ERROR. (2)"); 2925 okay := FALSE; 2926 end if; 2927 2928 if not raisesOverflowError( INT64_MIN * intExpr( -1)) or 2929 not raisesOverflowError(-4611686018427387904 * intExpr( -2)) or 2930 not raisesOverflowError(-4611686018427387903 * intExpr( -3)) or 2931 not raisesOverflowError(-3074457345618258603 * intExpr( -3)) or 2932 not raisesOverflowError(-3074457345618258602 * intExpr( -4)) or 2933 not raisesOverflowError( -838488366986797801 * intExpr( -11)) or 2934 not raisesOverflowError( -838488366986797800 * intExpr( -12)) or 2935 not raisesOverflowError( -10762394442070917 * intExpr( -857)) or 2936 not raisesOverflowError( -10762394442070916 * intExpr( -858)) or 2937 not raisesOverflowError( -1988224194191588 * intExpr( -4639)) or 2938 not raisesOverflowError( -1988224194191587 * intExpr( -4640)) or 2939 not raisesOverflowError( -240989001041329 * intExpr( -38273)) or 2940 not raisesOverflowError( -240989001041328 * intExpr( -38274)) or 2941 not raisesOverflowError( -14312161101688 * intExpr( -644443)) or 2942 not raisesOverflowError( -14312161101687 * intExpr( -644444)) or 2943 not raisesOverflowError( -933865493038 * intExpr( -9876553)) or 2944 not raisesOverflowError( -933865493037 * intExpr( -9876554)) or 2945 not raisesOverflowError( -747094709114 * intExpr( -12345653)) or 2946 not raisesOverflowError( -747094709113 * intExpr( -12345654)) or 2947 not raisesOverflowError( -74709312969 * intExpr( -123456791)) or 2948 not raisesOverflowError( -74709312968 * intExpr( -123456792)) or 2949 not raisesOverflowError( -3037000500 * intExpr( -3037000500)) or 2950 not raisesOverflowError( -123456792 * intExpr( -74709312968)) or 2951 not raisesOverflowError( -123456791 * intExpr( -74709312969)) or 2952 not raisesOverflowError( -12345654 * intExpr( -747094709113)) or 2953 not raisesOverflowError( -12345653 * intExpr( -747094709114)) or 2954 not raisesOverflowError( -9876554 * intExpr( -933865493037)) or 2955 not raisesOverflowError( -9876553 * intExpr( -933865493038)) or 2956 not raisesOverflowError( -644444 * intExpr( -14312161101687)) or 2957 not raisesOverflowError( -644443 * intExpr( -14312161101688)) or 2958 not raisesOverflowError( -38274 * intExpr( -240989001041328)) or 2959 not raisesOverflowError( -38273 * intExpr( -240989001041329)) or 2960 not raisesOverflowError( -4640 * intExpr( -1988224194191587)) or 2961 not raisesOverflowError( -4639 * intExpr( -1988224194191588)) or 2962 not raisesOverflowError( -858 * intExpr( -10762394442070916)) or 2963 not raisesOverflowError( -857 * intExpr( -10762394442070917)) or 2964 not raisesOverflowError( -12 * intExpr( -838488366986797800)) or 2965 not raisesOverflowError( -11 * intExpr( -838488366986797801)) or 2966 not raisesOverflowError( -4 * intExpr(-3074457345618258602)) or 2967 not raisesOverflowError( -3 * intExpr(-3074457345618258603)) or 2968 not raisesOverflowError( -3 * intExpr(-4611686018427387903)) or 2969 not raisesOverflowError( -2 * intExpr(-4611686018427387904)) or 2970 not raisesOverflowError( 4611686018427387904 * intExpr( 2)) or 2971 not raisesOverflowError( 4611686018427387903 * intExpr( 3)) or 2972 not raisesOverflowError( 3074457345618258603 * intExpr( 3)) or 2973 not raisesOverflowError( 3074457345618258602 * intExpr( 4)) or 2974 not raisesOverflowError( 838488366986797801 * intExpr( 11)) or 2975 not raisesOverflowError( 838488366986797800 * intExpr( 12)) or 2976 not raisesOverflowError( 10762394442070917 * intExpr( 857)) or 2977 not raisesOverflowError( 10762394442070916 * intExpr( 858)) or 2978 not raisesOverflowError( 1988224194191588 * intExpr( 4639)) or 2979 not raisesOverflowError( 1988224194191587 * intExpr( 4640)) or 2980 not raisesOverflowError( 240989001041329 * intExpr( 38273)) or 2981 not raisesOverflowError( 240989001041328 * intExpr( 38274)) or 2982 not raisesOverflowError( 14312161101688 * intExpr( 644443)) or 2983 not raisesOverflowError( 14312161101687 * intExpr( 644444)) or 2984 not raisesOverflowError( 933865493038 * intExpr( 9876553)) or 2985 not raisesOverflowError( 933865493037 * intExpr( 9876554)) or 2986 not raisesOverflowError( 747094709114 * intExpr( 12345653)) or 2987 not raisesOverflowError( 747094709113 * intExpr( 12345654)) or 2988 not raisesOverflowError( 74709312969 * intExpr( 123456791)) or 2989 not raisesOverflowError( 74709312968 * intExpr( 123456792)) or 2990 not raisesOverflowError( 3037000500 * intExpr( 3037000500)) or 2991 not raisesOverflowError( 123456792 * intExpr( 74709312968)) or 2992 not raisesOverflowError( 123456791 * intExpr( 74709312969)) or 2993 not raisesOverflowError( 12345654 * intExpr( 747094709113)) or 2994 not raisesOverflowError( 12345653 * intExpr( 747094709114)) or 2995 not raisesOverflowError( 9876554 * intExpr( 933865493037)) or 2996 not raisesOverflowError( 9876553 * intExpr( 933865493038)) or 2997 not raisesOverflowError( 644444 * intExpr( 14312161101687)) or 2998 not raisesOverflowError( 644443 * intExpr( 14312161101688)) or 2999 not raisesOverflowError( 38274 * intExpr( 240989001041328)) or 3000 not raisesOverflowError( 38273 * intExpr( 240989001041329)) or 3001 not raisesOverflowError( 4640 * intExpr( 1988224194191587)) or 3002 not raisesOverflowError( 4639 * intExpr( 1988224194191588)) or 3003 not raisesOverflowError( 858 * intExpr( 10762394442070916)) or 3004 not raisesOverflowError( 857 * intExpr( 10762394442070917)) or 3005 not raisesOverflowError( 12 * intExpr( 838488366986797800)) or 3006 not raisesOverflowError( 11 * intExpr( 838488366986797801)) or 3007 not raisesOverflowError( 4 * intExpr( 3074457345618258602)) or 3008 not raisesOverflowError( 3 * intExpr( 3074457345618258603)) or 3009 not raisesOverflowError( 3 * intExpr( 4611686018427387903)) or 3010 not raisesOverflowError( 2 * intExpr( 4611686018427387904)) then 3011 writeln(" ***** Overflow when computing multiplication does not raise OVERFLOW_ERROR. (3)"); 3012 okay := FALSE; 3013 end if; 3014 3015 if not raisesOverflowError(intExpr( INT64_MIN) * intExpr( -1)) or 3016 not raisesOverflowError(intExpr(-4611686018427387904) * intExpr( -2)) or 3017 not raisesOverflowError(intExpr(-4611686018427387903) * intExpr( -3)) or 3018 not raisesOverflowError(intExpr(-3074457345618258603) * intExpr( -3)) or 3019 not raisesOverflowError(intExpr(-3074457345618258602) * intExpr( -4)) or 3020 not raisesOverflowError(intExpr( -838488366986797801) * intExpr( -11)) or 3021 not raisesOverflowError(intExpr( -838488366986797800) * intExpr( -12)) or 3022 not raisesOverflowError(intExpr( -10762394442070917) * intExpr( -857)) or 3023 not raisesOverflowError(intExpr( -10762394442070916) * intExpr( -858)) or 3024 not raisesOverflowError(intExpr( -1988224194191588) * intExpr( -4639)) or 3025 not raisesOverflowError(intExpr( -1988224194191587) * intExpr( -4640)) or 3026 not raisesOverflowError(intExpr( -240989001041329) * intExpr( -38273)) or 3027 not raisesOverflowError(intExpr( -240989001041328) * intExpr( -38274)) or 3028 not raisesOverflowError(intExpr( -14312161101688) * intExpr( -644443)) or 3029 not raisesOverflowError(intExpr( -14312161101687) * intExpr( -644444)) or 3030 not raisesOverflowError(intExpr( -933865493038) * intExpr( -9876553)) or 3031 not raisesOverflowError(intExpr( -933865493037) * intExpr( -9876554)) or 3032 not raisesOverflowError(intExpr( -747094709114) * intExpr( -12345653)) or 3033 not raisesOverflowError(intExpr( -747094709113) * intExpr( -12345654)) or 3034 not raisesOverflowError(intExpr( -74709312969) * intExpr( -123456791)) or 3035 not raisesOverflowError(intExpr( -74709312968) * intExpr( -123456792)) or 3036 not raisesOverflowError(intExpr( -3037000500) * intExpr( -3037000500)) or 3037 not raisesOverflowError(intExpr( -123456792) * intExpr( -74709312968)) or 3038 not raisesOverflowError(intExpr( -123456791) * intExpr( -74709312969)) or 3039 not raisesOverflowError(intExpr( -12345654) * intExpr( -747094709113)) or 3040 not raisesOverflowError(intExpr( -12345653) * intExpr( -747094709114)) or 3041 not raisesOverflowError(intExpr( -9876554) * intExpr( -933865493037)) or 3042 not raisesOverflowError(intExpr( -9876553) * intExpr( -933865493038)) or 3043 not raisesOverflowError(intExpr( -644444) * intExpr( -14312161101687)) or 3044 not raisesOverflowError(intExpr( -644443) * intExpr( -14312161101688)) or 3045 not raisesOverflowError(intExpr( -38274) * intExpr( -240989001041328)) or 3046 not raisesOverflowError(intExpr( -38273) * intExpr( -240989001041329)) or 3047 not raisesOverflowError(intExpr( -4640) * intExpr( -1988224194191587)) or 3048 not raisesOverflowError(intExpr( -4639) * intExpr( -1988224194191588)) or 3049 not raisesOverflowError(intExpr( -858) * intExpr( -10762394442070916)) or 3050 not raisesOverflowError(intExpr( -857) * intExpr( -10762394442070917)) or 3051 not raisesOverflowError(intExpr( -12) * intExpr( -838488366986797800)) or 3052 not raisesOverflowError(intExpr( -11) * intExpr( -838488366986797801)) or 3053 not raisesOverflowError(intExpr( -4) * intExpr(-3074457345618258602)) or 3054 not raisesOverflowError(intExpr( -3) * intExpr(-3074457345618258603)) or 3055 not raisesOverflowError(intExpr( -3) * intExpr(-4611686018427387903)) or 3056 not raisesOverflowError(intExpr( -2) * intExpr(-4611686018427387904)) or 3057 not raisesOverflowError(intExpr( 4611686018427387904) * intExpr( 2)) or 3058 not raisesOverflowError(intExpr( 4611686018427387903) * intExpr( 3)) or 3059 not raisesOverflowError(intExpr( 3074457345618258603) * intExpr( 3)) or 3060 not raisesOverflowError(intExpr( 3074457345618258602) * intExpr( 4)) or 3061 not raisesOverflowError(intExpr( 838488366986797801) * intExpr( 11)) or 3062 not raisesOverflowError(intExpr( 838488366986797800) * intExpr( 12)) or 3063 not raisesOverflowError(intExpr( 10762394442070917) * intExpr( 857)) or 3064 not raisesOverflowError(intExpr( 10762394442070916) * intExpr( 858)) or 3065 not raisesOverflowError(intExpr( 1988224194191588) * intExpr( 4639)) or 3066 not raisesOverflowError(intExpr( 1988224194191587) * intExpr( 4640)) or 3067 not raisesOverflowError(intExpr( 240989001041329) * intExpr( 38273)) or 3068 not raisesOverflowError(intExpr( 240989001041328) * intExpr( 38274)) or 3069 not raisesOverflowError(intExpr( 14312161101688) * intExpr( 644443)) or 3070 not raisesOverflowError(intExpr( 14312161101687) * intExpr( 644444)) or 3071 not raisesOverflowError(intExpr( 933865493038) * intExpr( 9876553)) or 3072 not raisesOverflowError(intExpr( 933865493037) * intExpr( 9876554)) or 3073 not raisesOverflowError(intExpr( 747094709114) * intExpr( 12345653)) or 3074 not raisesOverflowError(intExpr( 747094709113) * intExpr( 12345654)) or 3075 not raisesOverflowError(intExpr( 74709312969) * intExpr( 123456791)) or 3076 not raisesOverflowError(intExpr( 74709312968) * intExpr( 123456792)) or 3077 not raisesOverflowError(intExpr( 3037000500) * intExpr( 3037000500)) or 3078 not raisesOverflowError(intExpr( 123456792) * intExpr( 74709312968)) or 3079 not raisesOverflowError(intExpr( 123456791) * intExpr( 74709312969)) or 3080 not raisesOverflowError(intExpr( 12345654) * intExpr( 747094709113)) or 3081 not raisesOverflowError(intExpr( 12345653) * intExpr( 747094709114)) or 3082 not raisesOverflowError(intExpr( 9876554) * intExpr( 933865493037)) or 3083 not raisesOverflowError(intExpr( 9876553) * intExpr( 933865493038)) or 3084 not raisesOverflowError(intExpr( 644444) * intExpr( 14312161101687)) or 3085 not raisesOverflowError(intExpr( 644443) * intExpr( 14312161101688)) or 3086 not raisesOverflowError(intExpr( 38274) * intExpr( 240989001041328)) or 3087 not raisesOverflowError(intExpr( 38273) * intExpr( 240989001041329)) or 3088 not raisesOverflowError(intExpr( 4640) * intExpr( 1988224194191587)) or 3089 not raisesOverflowError(intExpr( 4639) * intExpr( 1988224194191588)) or 3090 not raisesOverflowError(intExpr( 858) * intExpr( 10762394442070916)) or 3091 not raisesOverflowError(intExpr( 857) * intExpr( 10762394442070917)) or 3092 not raisesOverflowError(intExpr( 12) * intExpr( 838488366986797800)) or 3093 not raisesOverflowError(intExpr( 11) * intExpr( 838488366986797801)) or 3094 not raisesOverflowError(intExpr( 4) * intExpr( 3074457345618258602)) or 3095 not raisesOverflowError(intExpr( 3) * intExpr( 3074457345618258603)) or 3096 not raisesOverflowError(intExpr( 3) * intExpr( 4611686018427387903)) or 3097 not raisesOverflowError(intExpr( 2) * intExpr( 4611686018427387904)) then 3098 writeln(" ***** Overflow when computing multiplication does not raise OVERFLOW_ERROR. (4)"); 3099 okay := FALSE; 3100 end if; 3101 3102 if not check_reduced_overflow_checking_for_mult then 3103 okay := FALSE; 3104 end if; 3105 3106 if okay then 3107 writeln("Overflow checking of multiplication works correct."); 3108 else 3109 writeln(" ***** Overflow checking of multiplication does not work correct."); 3110 end if; 3111 end func; 3112 3113 3114const func boolean: check_mult_assign_1 is func 3115 result 3116 var boolean: okay is TRUE; 3117 local 3118 var boolean: ok is TRUE; 3119 var integer: num is 0; 3120 begin 3121 num := -4611686018427387905; ok := ok and raisesOverflowError(num *:= 2); 3122 num := -4611686018427387904; ok := ok and raisesOverflowError(num *:= 3); 3123 num := -3074457345618258603; ok := ok and raisesOverflowError(num *:= 3); 3124 num := -3074457345618258602; ok := ok and raisesOverflowError(num *:= 4); 3125 num := -838488366986797801; ok := ok and raisesOverflowError(num *:= 11); 3126 num := -838488366986797800; ok := ok and raisesOverflowError(num *:= 12); 3127 num := -10762394442070917; ok := ok and raisesOverflowError(num *:= 857); 3128 num := -10762394442070916; ok := ok and raisesOverflowError(num *:= 858); 3129 num := -1988224194191588; ok := ok and raisesOverflowError(num *:= 4639); 3130 num := -1988224194191587; ok := ok and raisesOverflowError(num *:= 4640); 3131 num := -240989001041329; ok := ok and raisesOverflowError(num *:= 38273); 3132 num := -240989001041328; ok := ok and raisesOverflowError(num *:= 38274); 3133 num := -14312161101688; ok := ok and raisesOverflowError(num *:= 644443); 3134 num := -14312161101687; ok := ok and raisesOverflowError(num *:= 644444); 3135 num := -933865493038; ok := ok and raisesOverflowError(num *:= 9876553); 3136 num := -933865493037; ok := ok and raisesOverflowError(num *:= 9876554); 3137 num := -747094709114; ok := ok and raisesOverflowError(num *:= 12345653); 3138 num := -747094709113; ok := ok and raisesOverflowError(num *:= 12345654); 3139 num := -74709312969; ok := ok and raisesOverflowError(num *:= 123456791); 3140 num := -74709312968; ok := ok and raisesOverflowError(num *:= 123456792); 3141 num := -3037000500; ok := ok and raisesOverflowError(num *:= 3037000500); 3142 num := -123456792; ok := ok and raisesOverflowError(num *:= 74709312968); 3143 num := -123456791; ok := ok and raisesOverflowError(num *:= 74709312969); 3144 num := -12345654; ok := ok and raisesOverflowError(num *:= 747094709113); 3145 num := -12345653; ok := ok and raisesOverflowError(num *:= 747094709114); 3146 num := -9876554; ok := ok and raisesOverflowError(num *:= 933865493037); 3147 num := -9876553; ok := ok and raisesOverflowError(num *:= 933865493038); 3148 num := -644444; ok := ok and raisesOverflowError(num *:= 14312161101687); 3149 num := -644443; ok := ok and raisesOverflowError(num *:= 14312161101688); 3150 num := -38274; ok := ok and raisesOverflowError(num *:= 240989001041328); 3151 num := -38273; ok := ok and raisesOverflowError(num *:= 240989001041329); 3152 num := -4640; ok := ok and raisesOverflowError(num *:= 1988224194191587); 3153 num := -4639; ok := ok and raisesOverflowError(num *:= 1988224194191588); 3154 num := -858; ok := ok and raisesOverflowError(num *:= 10762394442070916); 3155 num := -857; ok := ok and raisesOverflowError(num *:= 10762394442070917); 3156 num := -12; ok := ok and raisesOverflowError(num *:= 838488366986797800); 3157 num := -11; ok := ok and raisesOverflowError(num *:= 838488366986797801); 3158 num := -4; ok := ok and raisesOverflowError(num *:= 3074457345618258602); 3159 num := -3; ok := ok and raisesOverflowError(num *:= 3074457345618258603); 3160 num := -3; ok := ok and raisesOverflowError(num *:= 4611686018427387904); 3161 num := -2; ok := ok and raisesOverflowError(num *:= 4611686018427387905); 3162 num := 4611686018427387905; ok := ok and raisesOverflowError(num *:= -2); 3163 num := 4611686018427387904; ok := ok and raisesOverflowError(num *:= -3); 3164 num := 3074457345618258603; ok := ok and raisesOverflowError(num *:= -3); 3165 num := 3074457345618258602; ok := ok and raisesOverflowError(num *:= -4); 3166 num := 838488366986797801; ok := ok and raisesOverflowError(num *:= -11); 3167 num := 838488366986797800; ok := ok and raisesOverflowError(num *:= -12); 3168 num := 10762394442070917; ok := ok and raisesOverflowError(num *:= -857); 3169 num := 10762394442070916; ok := ok and raisesOverflowError(num *:= -858); 3170 num := 1988224194191588; ok := ok and raisesOverflowError(num *:= -4639); 3171 num := 1988224194191587; ok := ok and raisesOverflowError(num *:= -4640); 3172 num := 240989001041329; ok := ok and raisesOverflowError(num *:= -38273); 3173 num := 240989001041328; ok := ok and raisesOverflowError(num *:= -38274); 3174 num := 14312161101688; ok := ok and raisesOverflowError(num *:= -644443); 3175 num := 14312161101687; ok := ok and raisesOverflowError(num *:= -644444); 3176 num := 933865493038; ok := ok and raisesOverflowError(num *:= -9876553); 3177 num := 933865493037; ok := ok and raisesOverflowError(num *:= -9876554); 3178 num := 747094709114; ok := ok and raisesOverflowError(num *:= -12345653); 3179 num := 747094709113; ok := ok and raisesOverflowError(num *:= -12345654); 3180 num := 74709312969; ok := ok and raisesOverflowError(num *:= -123456791); 3181 num := 74709312968; ok := ok and raisesOverflowError(num *:= -123456792); 3182 num := 3037000500; ok := ok and raisesOverflowError(num *:= -3037000500); 3183 num := 123456792; ok := ok and raisesOverflowError(num *:= -74709312968); 3184 num := 123456791; ok := ok and raisesOverflowError(num *:= -74709312969); 3185 num := 12345654; ok := ok and raisesOverflowError(num *:= -747094709113); 3186 num := 12345653; ok := ok and raisesOverflowError(num *:= -747094709114); 3187 num := 9876554; ok := ok and raisesOverflowError(num *:= -933865493037); 3188 num := 9876553; ok := ok and raisesOverflowError(num *:= -933865493038); 3189 num := 644444; ok := ok and raisesOverflowError(num *:= -14312161101687); 3190 num := 644443; ok := ok and raisesOverflowError(num *:= -14312161101688); 3191 num := 38274; ok := ok and raisesOverflowError(num *:= -240989001041328); 3192 num := 38273; ok := ok and raisesOverflowError(num *:= -240989001041329); 3193 num := 4640; ok := ok and raisesOverflowError(num *:= -1988224194191587); 3194 num := 4639; ok := ok and raisesOverflowError(num *:= -1988224194191588); 3195 num := 858; ok := ok and raisesOverflowError(num *:= -10762394442070916); 3196 num := 857; ok := ok and raisesOverflowError(num *:= -10762394442070917); 3197 num := 12; ok := ok and raisesOverflowError(num *:= -838488366986797800); 3198 num := 11; ok := ok and raisesOverflowError(num *:= -838488366986797801); 3199 num := 4; ok := ok and raisesOverflowError(num *:= -3074457345618258602); 3200 num := 3; ok := ok and raisesOverflowError(num *:= -3074457345618258603); 3201 num := 3; ok := ok and raisesOverflowError(num *:= -4611686018427387904); 3202 num := 2; ok := ok and raisesOverflowError(num *:= -4611686018427387905); 3203 if not ok then 3204 writeln(" ***** Underflow when computing multiplication assignment does not raise OVERFLOW_ERROR. (1)"); 3205 okay := FALSE; 3206 end if; 3207 3208 ok := TRUE; 3209 num := INT64_MIN; ok := ok and raisesOverflowError(num *:= -1); 3210 num := -4611686018427387904; ok := ok and raisesOverflowError(num *:= -2); 3211 num := -4611686018427387903; ok := ok and raisesOverflowError(num *:= -3); 3212 num := -3074457345618258603; ok := ok and raisesOverflowError(num *:= -3); 3213 num := -3074457345618258602; ok := ok and raisesOverflowError(num *:= -4); 3214 num := -838488366986797801; ok := ok and raisesOverflowError(num *:= -11); 3215 num := -838488366986797800; ok := ok and raisesOverflowError(num *:= -12); 3216 num := -10762394442070917; ok := ok and raisesOverflowError(num *:= -857); 3217 num := -10762394442070916; ok := ok and raisesOverflowError(num *:= -858); 3218 num := -1988224194191588; ok := ok and raisesOverflowError(num *:= -4639); 3219 num := -1988224194191587; ok := ok and raisesOverflowError(num *:= -4640); 3220 num := -240989001041329; ok := ok and raisesOverflowError(num *:= -38273); 3221 num := -240989001041328; ok := ok and raisesOverflowError(num *:= -38274); 3222 num := -14312161101688; ok := ok and raisesOverflowError(num *:= -644443); 3223 num := -14312161101687; ok := ok and raisesOverflowError(num *:= -644444); 3224 num := -933865493038; ok := ok and raisesOverflowError(num *:= -9876553); 3225 num := -933865493037; ok := ok and raisesOverflowError(num *:= -9876554); 3226 num := -747094709114; ok := ok and raisesOverflowError(num *:= -12345653); 3227 num := -747094709113; ok := ok and raisesOverflowError(num *:= -12345654); 3228 num := -74709312969; ok := ok and raisesOverflowError(num *:= -123456791); 3229 num := -74709312968; ok := ok and raisesOverflowError(num *:= -123456792); 3230 num := -3037000500; ok := ok and raisesOverflowError(num *:= -3037000500); 3231 num := -123456792; ok := ok and raisesOverflowError(num *:= -74709312968); 3232 num := -123456791; ok := ok and raisesOverflowError(num *:= -74709312969); 3233 num := -12345654; ok := ok and raisesOverflowError(num *:= -747094709113); 3234 num := -12345653; ok := ok and raisesOverflowError(num *:= -747094709114); 3235 num := -9876554; ok := ok and raisesOverflowError(num *:= -933865493037); 3236 num := -9876553; ok := ok and raisesOverflowError(num *:= -933865493038); 3237 num := -644444; ok := ok and raisesOverflowError(num *:= -14312161101687); 3238 num := -644443; ok := ok and raisesOverflowError(num *:= -14312161101688); 3239 num := -38274; ok := ok and raisesOverflowError(num *:= -240989001041328); 3240 num := -38273; ok := ok and raisesOverflowError(num *:= -240989001041329); 3241 num := -4640; ok := ok and raisesOverflowError(num *:= -1988224194191587); 3242 num := -4639; ok := ok and raisesOverflowError(num *:= -1988224194191588); 3243 num := -858; ok := ok and raisesOverflowError(num *:= -10762394442070916); 3244 num := -857; ok := ok and raisesOverflowError(num *:= -10762394442070917); 3245 num := -12; ok := ok and raisesOverflowError(num *:= -838488366986797800); 3246 num := -11; ok := ok and raisesOverflowError(num *:= -838488366986797801); 3247 num := -4; ok := ok and raisesOverflowError(num *:= -3074457345618258602); 3248 num := -3; ok := ok and raisesOverflowError(num *:= -3074457345618258603); 3249 num := -3; ok := ok and raisesOverflowError(num *:= -4611686018427387903); 3250 num := -2; ok := ok and raisesOverflowError(num *:= -4611686018427387904); 3251 num := 4611686018427387904; ok := ok and raisesOverflowError(num *:= 2); 3252 num := 4611686018427387903; ok := ok and raisesOverflowError(num *:= 3); 3253 num := 3074457345618258603; ok := ok and raisesOverflowError(num *:= 3); 3254 num := 3074457345618258602; ok := ok and raisesOverflowError(num *:= 4); 3255 num := 838488366986797801; ok := ok and raisesOverflowError(num *:= 11); 3256 num := 838488366986797800; ok := ok and raisesOverflowError(num *:= 12); 3257 num := 10762394442070917; ok := ok and raisesOverflowError(num *:= 857); 3258 num := 10762394442070916; ok := ok and raisesOverflowError(num *:= 858); 3259 num := 1988224194191588; ok := ok and raisesOverflowError(num *:= 4639); 3260 num := 1988224194191587; ok := ok and raisesOverflowError(num *:= 4640); 3261 num := 240989001041329; ok := ok and raisesOverflowError(num *:= 38273); 3262 num := 240989001041328; ok := ok and raisesOverflowError(num *:= 38274); 3263 num := 14312161101688; ok := ok and raisesOverflowError(num *:= 644443); 3264 num := 14312161101687; ok := ok and raisesOverflowError(num *:= 644444); 3265 num := 933865493038; ok := ok and raisesOverflowError(num *:= 9876553); 3266 num := 933865493037; ok := ok and raisesOverflowError(num *:= 9876554); 3267 num := 747094709114; ok := ok and raisesOverflowError(num *:= 12345653); 3268 num := 747094709113; ok := ok and raisesOverflowError(num *:= 12345654); 3269 num := 74709312969; ok := ok and raisesOverflowError(num *:= 123456791); 3270 num := 74709312968; ok := ok and raisesOverflowError(num *:= 123456792); 3271 num := 3037000500; ok := ok and raisesOverflowError(num *:= 3037000500); 3272 num := 123456792; ok := ok and raisesOverflowError(num *:= 74709312968); 3273 num := 123456791; ok := ok and raisesOverflowError(num *:= 74709312969); 3274 num := 12345654; ok := ok and raisesOverflowError(num *:= 747094709113); 3275 num := 12345653; ok := ok and raisesOverflowError(num *:= 747094709114); 3276 num := 9876554; ok := ok and raisesOverflowError(num *:= 933865493037); 3277 num := 9876553; ok := ok and raisesOverflowError(num *:= 933865493038); 3278 num := 644444; ok := ok and raisesOverflowError(num *:= 14312161101687); 3279 num := 644443; ok := ok and raisesOverflowError(num *:= 14312161101688); 3280 num := 38274; ok := ok and raisesOverflowError(num *:= 240989001041328); 3281 num := 38273; ok := ok and raisesOverflowError(num *:= 240989001041329); 3282 num := 4640; ok := ok and raisesOverflowError(num *:= 1988224194191587); 3283 num := 4639; ok := ok and raisesOverflowError(num *:= 1988224194191588); 3284 num := 858; ok := ok and raisesOverflowError(num *:= 10762394442070916); 3285 num := 857; ok := ok and raisesOverflowError(num *:= 10762394442070917); 3286 num := 12; ok := ok and raisesOverflowError(num *:= 838488366986797800); 3287 num := 11; ok := ok and raisesOverflowError(num *:= 838488366986797801); 3288 num := 4; ok := ok and raisesOverflowError(num *:= 3074457345618258602); 3289 num := 3; ok := ok and raisesOverflowError(num *:= 3074457345618258603); 3290 num := 3; ok := ok and raisesOverflowError(num *:= 4611686018427387903); 3291 num := 2; ok := ok and raisesOverflowError(num *:= 4611686018427387904); 3292 if not ok then 3293 writeln(" ***** Overflow when computing multiplication assignment does not raise OVERFLOW_ERROR. (1)"); 3294 okay := FALSE; 3295 end if; 3296 end func; 3297 3298 3299const func boolean: check_mult_assign_2 is func 3300 result 3301 var boolean: okay is TRUE; 3302 local 3303 var boolean: ok is TRUE; 3304 var integer: num is 0; 3305 begin 3306 num := -4611686018427387905; ok := ok and raisesOverflowError(num *:= intExpr( 2)); 3307 num := -4611686018427387904; ok := ok and raisesOverflowError(num *:= intExpr( 3)); 3308 num := -3074457345618258603; ok := ok and raisesOverflowError(num *:= intExpr( 3)); 3309 num := -3074457345618258602; ok := ok and raisesOverflowError(num *:= intExpr( 4)); 3310 num := -838488366986797801; ok := ok and raisesOverflowError(num *:= intExpr( 11)); 3311 num := -838488366986797800; ok := ok and raisesOverflowError(num *:= intExpr( 12)); 3312 num := -10762394442070917; ok := ok and raisesOverflowError(num *:= intExpr( 857)); 3313 num := -10762394442070916; ok := ok and raisesOverflowError(num *:= intExpr( 858)); 3314 num := -1988224194191588; ok := ok and raisesOverflowError(num *:= intExpr( 4639)); 3315 num := -1988224194191587; ok := ok and raisesOverflowError(num *:= intExpr( 4640)); 3316 num := -240989001041329; ok := ok and raisesOverflowError(num *:= intExpr( 38273)); 3317 num := -240989001041328; ok := ok and raisesOverflowError(num *:= intExpr( 38274)); 3318 num := -14312161101688; ok := ok and raisesOverflowError(num *:= intExpr( 644443)); 3319 num := -14312161101687; ok := ok and raisesOverflowError(num *:= intExpr( 644444)); 3320 num := -933865493038; ok := ok and raisesOverflowError(num *:= intExpr( 9876553)); 3321 num := -933865493037; ok := ok and raisesOverflowError(num *:= intExpr( 9876554)); 3322 num := -747094709114; ok := ok and raisesOverflowError(num *:= intExpr( 12345653)); 3323 num := -747094709113; ok := ok and raisesOverflowError(num *:= intExpr( 12345654)); 3324 num := -74709312969; ok := ok and raisesOverflowError(num *:= intExpr( 123456791)); 3325 num := -74709312968; ok := ok and raisesOverflowError(num *:= intExpr( 123456792)); 3326 num := -3037000500; ok := ok and raisesOverflowError(num *:= intExpr( 3037000500)); 3327 num := -123456792; ok := ok and raisesOverflowError(num *:= intExpr( 74709312968)); 3328 num := -123456791; ok := ok and raisesOverflowError(num *:= intExpr( 74709312969)); 3329 num := -12345654; ok := ok and raisesOverflowError(num *:= intExpr( 747094709113)); 3330 num := -12345653; ok := ok and raisesOverflowError(num *:= intExpr( 747094709114)); 3331 num := -9876554; ok := ok and raisesOverflowError(num *:= intExpr( 933865493037)); 3332 num := -9876553; ok := ok and raisesOverflowError(num *:= intExpr( 933865493038)); 3333 num := -644444; ok := ok and raisesOverflowError(num *:= intExpr( 14312161101687)); 3334 num := -644443; ok := ok and raisesOverflowError(num *:= intExpr( 14312161101688)); 3335 num := -38274; ok := ok and raisesOverflowError(num *:= intExpr( 240989001041328)); 3336 num := -38273; ok := ok and raisesOverflowError(num *:= intExpr( 240989001041329)); 3337 num := -4640; ok := ok and raisesOverflowError(num *:= intExpr( 1988224194191587)); 3338 num := -4639; ok := ok and raisesOverflowError(num *:= intExpr( 1988224194191588)); 3339 num := -858; ok := ok and raisesOverflowError(num *:= intExpr( 10762394442070916)); 3340 num := -857; ok := ok and raisesOverflowError(num *:= intExpr( 10762394442070917)); 3341 num := -12; ok := ok and raisesOverflowError(num *:= intExpr( 838488366986797800)); 3342 num := -11; ok := ok and raisesOverflowError(num *:= intExpr( 838488366986797801)); 3343 num := -4; ok := ok and raisesOverflowError(num *:= intExpr( 3074457345618258602)); 3344 num := -3; ok := ok and raisesOverflowError(num *:= intExpr( 3074457345618258603)); 3345 num := -3; ok := ok and raisesOverflowError(num *:= intExpr( 4611686018427387904)); 3346 num := -2; ok := ok and raisesOverflowError(num *:= intExpr( 4611686018427387905)); 3347 num := 4611686018427387905; ok := ok and raisesOverflowError(num *:= intExpr( -2)); 3348 num := 4611686018427387904; ok := ok and raisesOverflowError(num *:= intExpr( -3)); 3349 num := 3074457345618258603; ok := ok and raisesOverflowError(num *:= intExpr( -3)); 3350 num := 3074457345618258602; ok := ok and raisesOverflowError(num *:= intExpr( -4)); 3351 num := 838488366986797801; ok := ok and raisesOverflowError(num *:= intExpr( -11)); 3352 num := 838488366986797800; ok := ok and raisesOverflowError(num *:= intExpr( -12)); 3353 num := 10762394442070917; ok := ok and raisesOverflowError(num *:= intExpr( -857)); 3354 num := 10762394442070916; ok := ok and raisesOverflowError(num *:= intExpr( -858)); 3355 num := 1988224194191588; ok := ok and raisesOverflowError(num *:= intExpr( -4639)); 3356 num := 1988224194191587; ok := ok and raisesOverflowError(num *:= intExpr( -4640)); 3357 num := 240989001041329; ok := ok and raisesOverflowError(num *:= intExpr( -38273)); 3358 num := 240989001041328; ok := ok and raisesOverflowError(num *:= intExpr( -38274)); 3359 num := 14312161101688; ok := ok and raisesOverflowError(num *:= intExpr( -644443)); 3360 num := 14312161101687; ok := ok and raisesOverflowError(num *:= intExpr( -644444)); 3361 num := 933865493038; ok := ok and raisesOverflowError(num *:= intExpr( -9876553)); 3362 num := 933865493037; ok := ok and raisesOverflowError(num *:= intExpr( -9876554)); 3363 num := 747094709114; ok := ok and raisesOverflowError(num *:= intExpr( -12345653)); 3364 num := 747094709113; ok := ok and raisesOverflowError(num *:= intExpr( -12345654)); 3365 num := 74709312969; ok := ok and raisesOverflowError(num *:= intExpr( -123456791)); 3366 num := 74709312968; ok := ok and raisesOverflowError(num *:= intExpr( -123456792)); 3367 num := 3037000500; ok := ok and raisesOverflowError(num *:= intExpr( -3037000500)); 3368 num := 123456792; ok := ok and raisesOverflowError(num *:= intExpr( -74709312968)); 3369 num := 123456791; ok := ok and raisesOverflowError(num *:= intExpr( -74709312969)); 3370 num := 12345654; ok := ok and raisesOverflowError(num *:= intExpr( -747094709113)); 3371 num := 12345653; ok := ok and raisesOverflowError(num *:= intExpr( -747094709114)); 3372 num := 9876554; ok := ok and raisesOverflowError(num *:= intExpr( -933865493037)); 3373 num := 9876553; ok := ok and raisesOverflowError(num *:= intExpr( -933865493038)); 3374 num := 644444; ok := ok and raisesOverflowError(num *:= intExpr( -14312161101687)); 3375 num := 644443; ok := ok and raisesOverflowError(num *:= intExpr( -14312161101688)); 3376 num := 38274; ok := ok and raisesOverflowError(num *:= intExpr( -240989001041328)); 3377 num := 38273; ok := ok and raisesOverflowError(num *:= intExpr( -240989001041329)); 3378 num := 4640; ok := ok and raisesOverflowError(num *:= intExpr( -1988224194191587)); 3379 num := 4639; ok := ok and raisesOverflowError(num *:= intExpr( -1988224194191588)); 3380 num := 858; ok := ok and raisesOverflowError(num *:= intExpr( -10762394442070916)); 3381 num := 857; ok := ok and raisesOverflowError(num *:= intExpr( -10762394442070917)); 3382 num := 12; ok := ok and raisesOverflowError(num *:= intExpr( -838488366986797800)); 3383 num := 11; ok := ok and raisesOverflowError(num *:= intExpr( -838488366986797801)); 3384 num := 4; ok := ok and raisesOverflowError(num *:= intExpr(-3074457345618258602)); 3385 num := 3; ok := ok and raisesOverflowError(num *:= intExpr(-3074457345618258603)); 3386 num := 3; ok := ok and raisesOverflowError(num *:= intExpr(-4611686018427387904)); 3387 num := 2; ok := ok and raisesOverflowError(num *:= intExpr(-4611686018427387905)); 3388 if not ok then 3389 writeln(" ***** Underflow when computing multiplication assignment does not raise OVERFLOW_ERROR. (2)"); 3390 okay := FALSE; 3391 end if; 3392 3393 ok := TRUE; 3394 num := INT64_MIN; ok := ok and raisesOverflowError(num *:= intExpr( -1)); 3395 num := -4611686018427387904; ok := ok and raisesOverflowError(num *:= intExpr( -2)); 3396 num := -4611686018427387903; ok := ok and raisesOverflowError(num *:= intExpr( -3)); 3397 num := -3074457345618258603; ok := ok and raisesOverflowError(num *:= intExpr( -3)); 3398 num := -3074457345618258602; ok := ok and raisesOverflowError(num *:= intExpr( -4)); 3399 num := -838488366986797801; ok := ok and raisesOverflowError(num *:= intExpr( -11)); 3400 num := -838488366986797800; ok := ok and raisesOverflowError(num *:= intExpr( -12)); 3401 num := -10762394442070917; ok := ok and raisesOverflowError(num *:= intExpr( -857)); 3402 num := -10762394442070916; ok := ok and raisesOverflowError(num *:= intExpr( -858)); 3403 num := -1988224194191588; ok := ok and raisesOverflowError(num *:= intExpr( -4639)); 3404 num := -1988224194191587; ok := ok and raisesOverflowError(num *:= intExpr( -4640)); 3405 num := -240989001041329; ok := ok and raisesOverflowError(num *:= intExpr( -38273)); 3406 num := -240989001041328; ok := ok and raisesOverflowError(num *:= intExpr( -38274)); 3407 num := -14312161101688; ok := ok and raisesOverflowError(num *:= intExpr( -644443)); 3408 num := -14312161101687; ok := ok and raisesOverflowError(num *:= intExpr( -644444)); 3409 num := -933865493038; ok := ok and raisesOverflowError(num *:= intExpr( -9876553)); 3410 num := -933865493037; ok := ok and raisesOverflowError(num *:= intExpr( -9876554)); 3411 num := -747094709114; ok := ok and raisesOverflowError(num *:= intExpr( -12345653)); 3412 num := -747094709113; ok := ok and raisesOverflowError(num *:= intExpr( -12345654)); 3413 num := -74709312969; ok := ok and raisesOverflowError(num *:= intExpr( -123456791)); 3414 num := -74709312968; ok := ok and raisesOverflowError(num *:= intExpr( -123456792)); 3415 num := -3037000500; ok := ok and raisesOverflowError(num *:= intExpr( -3037000500)); 3416 num := -123456792; ok := ok and raisesOverflowError(num *:= intExpr( -74709312968)); 3417 num := -123456791; ok := ok and raisesOverflowError(num *:= intExpr( -74709312969)); 3418 num := -12345654; ok := ok and raisesOverflowError(num *:= intExpr( -747094709113)); 3419 num := -12345653; ok := ok and raisesOverflowError(num *:= intExpr( -747094709114)); 3420 num := -9876554; ok := ok and raisesOverflowError(num *:= intExpr( -933865493037)); 3421 num := -9876553; ok := ok and raisesOverflowError(num *:= intExpr( -933865493038)); 3422 num := -644444; ok := ok and raisesOverflowError(num *:= intExpr( -14312161101687)); 3423 num := -644443; ok := ok and raisesOverflowError(num *:= intExpr( -14312161101688)); 3424 num := -38274; ok := ok and raisesOverflowError(num *:= intExpr( -240989001041328)); 3425 num := -38273; ok := ok and raisesOverflowError(num *:= intExpr( -240989001041329)); 3426 num := -4640; ok := ok and raisesOverflowError(num *:= intExpr( -1988224194191587)); 3427 num := -4639; ok := ok and raisesOverflowError(num *:= intExpr( -1988224194191588)); 3428 num := -858; ok := ok and raisesOverflowError(num *:= intExpr( -10762394442070916)); 3429 num := -857; ok := ok and raisesOverflowError(num *:= intExpr( -10762394442070917)); 3430 num := -12; ok := ok and raisesOverflowError(num *:= intExpr( -838488366986797800)); 3431 num := -11; ok := ok and raisesOverflowError(num *:= intExpr( -838488366986797801)); 3432 num := -4; ok := ok and raisesOverflowError(num *:= intExpr(-3074457345618258602)); 3433 num := -3; ok := ok and raisesOverflowError(num *:= intExpr(-3074457345618258603)); 3434 num := -3; ok := ok and raisesOverflowError(num *:= intExpr(-4611686018427387903)); 3435 num := -2; ok := ok and raisesOverflowError(num *:= intExpr(-4611686018427387904)); 3436 num := 4611686018427387904; ok := ok and raisesOverflowError(num *:= intExpr( 2)); 3437 num := 4611686018427387903; ok := ok and raisesOverflowError(num *:= intExpr( 3)); 3438 num := 3074457345618258603; ok := ok and raisesOverflowError(num *:= intExpr( 3)); 3439 num := 3074457345618258602; ok := ok and raisesOverflowError(num *:= intExpr( 4)); 3440 num := 838488366986797801; ok := ok and raisesOverflowError(num *:= intExpr( 11)); 3441 num := 838488366986797800; ok := ok and raisesOverflowError(num *:= intExpr( 12)); 3442 num := 10762394442070917; ok := ok and raisesOverflowError(num *:= intExpr( 857)); 3443 num := 10762394442070916; ok := ok and raisesOverflowError(num *:= intExpr( 858)); 3444 num := 1988224194191588; ok := ok and raisesOverflowError(num *:= intExpr( 4639)); 3445 num := 1988224194191587; ok := ok and raisesOverflowError(num *:= intExpr( 4640)); 3446 num := 240989001041329; ok := ok and raisesOverflowError(num *:= intExpr( 38273)); 3447 num := 240989001041328; ok := ok and raisesOverflowError(num *:= intExpr( 38274)); 3448 num := 14312161101688; ok := ok and raisesOverflowError(num *:= intExpr( 644443)); 3449 num := 14312161101687; ok := ok and raisesOverflowError(num *:= intExpr( 644444)); 3450 num := 933865493038; ok := ok and raisesOverflowError(num *:= intExpr( 9876553)); 3451 num := 933865493037; ok := ok and raisesOverflowError(num *:= intExpr( 9876554)); 3452 num := 747094709114; ok := ok and raisesOverflowError(num *:= intExpr( 12345653)); 3453 num := 747094709113; ok := ok and raisesOverflowError(num *:= intExpr( 12345654)); 3454 num := 74709312969; ok := ok and raisesOverflowError(num *:= intExpr( 123456791)); 3455 num := 74709312968; ok := ok and raisesOverflowError(num *:= intExpr( 123456792)); 3456 num := 3037000500; ok := ok and raisesOverflowError(num *:= intExpr( 3037000500)); 3457 num := 123456792; ok := ok and raisesOverflowError(num *:= intExpr( 74709312968)); 3458 num := 123456791; ok := ok and raisesOverflowError(num *:= intExpr( 74709312969)); 3459 num := 12345654; ok := ok and raisesOverflowError(num *:= intExpr( 747094709113)); 3460 num := 12345653; ok := ok and raisesOverflowError(num *:= intExpr( 747094709114)); 3461 num := 9876554; ok := ok and raisesOverflowError(num *:= intExpr( 933865493037)); 3462 num := 9876553; ok := ok and raisesOverflowError(num *:= intExpr( 933865493038)); 3463 num := 644444; ok := ok and raisesOverflowError(num *:= intExpr( 14312161101687)); 3464 num := 644443; ok := ok and raisesOverflowError(num *:= intExpr( 14312161101688)); 3465 num := 38274; ok := ok and raisesOverflowError(num *:= intExpr( 240989001041328)); 3466 num := 38273; ok := ok and raisesOverflowError(num *:= intExpr( 240989001041329)); 3467 num := 4640; ok := ok and raisesOverflowError(num *:= intExpr( 1988224194191587)); 3468 num := 4639; ok := ok and raisesOverflowError(num *:= intExpr( 1988224194191588)); 3469 num := 858; ok := ok and raisesOverflowError(num *:= intExpr( 10762394442070916)); 3470 num := 857; ok := ok and raisesOverflowError(num *:= intExpr( 10762394442070917)); 3471 num := 12; ok := ok and raisesOverflowError(num *:= intExpr( 838488366986797800)); 3472 num := 11; ok := ok and raisesOverflowError(num *:= intExpr( 838488366986797801)); 3473 num := 4; ok := ok and raisesOverflowError(num *:= intExpr( 3074457345618258602)); 3474 num := 3; ok := ok and raisesOverflowError(num *:= intExpr( 3074457345618258603)); 3475 num := 3; ok := ok and raisesOverflowError(num *:= intExpr( 4611686018427387903)); 3476 num := 2; ok := ok and raisesOverflowError(num *:= intExpr( 4611686018427387904)); 3477 if not ok then 3478 writeln(" ***** Overflow when computing multiplication assignment does not raise OVERFLOW_ERROR. (2)"); 3479 okay := FALSE; 3480 end if; 3481 end func; 3482 3483 3484const func boolean: check_mult_assign_3 is func 3485 result 3486 var boolean: okay is TRUE; 3487 local 3488 var boolean: ok is TRUE; 3489 var array integer: arr is [] (0); 3490 begin 3491 arr[1] := -4611686018427387905; ok := ok and raisesOverflowError(arr[1] *:= 2); 3492 arr[1] := -4611686018427387904; ok := ok and raisesOverflowError(arr[1] *:= 3); 3493 arr[1] := -3074457345618258603; ok := ok and raisesOverflowError(arr[1] *:= 3); 3494 arr[1] := -3074457345618258602; ok := ok and raisesOverflowError(arr[1] *:= 4); 3495 arr[1] := -838488366986797801; ok := ok and raisesOverflowError(arr[1] *:= 11); 3496 arr[1] := -838488366986797800; ok := ok and raisesOverflowError(arr[1] *:= 12); 3497 arr[1] := -10762394442070917; ok := ok and raisesOverflowError(arr[1] *:= 857); 3498 arr[1] := -10762394442070916; ok := ok and raisesOverflowError(arr[1] *:= 858); 3499 arr[1] := -1988224194191588; ok := ok and raisesOverflowError(arr[1] *:= 4639); 3500 arr[1] := -1988224194191587; ok := ok and raisesOverflowError(arr[1] *:= 4640); 3501 arr[1] := -240989001041329; ok := ok and raisesOverflowError(arr[1] *:= 38273); 3502 arr[1] := -240989001041328; ok := ok and raisesOverflowError(arr[1] *:= 38274); 3503 arr[1] := -14312161101688; ok := ok and raisesOverflowError(arr[1] *:= 644443); 3504 arr[1] := -14312161101687; ok := ok and raisesOverflowError(arr[1] *:= 644444); 3505 arr[1] := -933865493038; ok := ok and raisesOverflowError(arr[1] *:= 9876553); 3506 arr[1] := -933865493037; ok := ok and raisesOverflowError(arr[1] *:= 9876554); 3507 arr[1] := -747094709114; ok := ok and raisesOverflowError(arr[1] *:= 12345653); 3508 arr[1] := -747094709113; ok := ok and raisesOverflowError(arr[1] *:= 12345654); 3509 arr[1] := -74709312969; ok := ok and raisesOverflowError(arr[1] *:= 123456791); 3510 arr[1] := -74709312968; ok := ok and raisesOverflowError(arr[1] *:= 123456792); 3511 arr[1] := -3037000500; ok := ok and raisesOverflowError(arr[1] *:= 3037000500); 3512 arr[1] := -123456792; ok := ok and raisesOverflowError(arr[1] *:= 74709312968); 3513 arr[1] := -123456791; ok := ok and raisesOverflowError(arr[1] *:= 74709312969); 3514 arr[1] := -12345654; ok := ok and raisesOverflowError(arr[1] *:= 747094709113); 3515 arr[1] := -12345653; ok := ok and raisesOverflowError(arr[1] *:= 747094709114); 3516 arr[1] := -9876554; ok := ok and raisesOverflowError(arr[1] *:= 933865493037); 3517 arr[1] := -9876553; ok := ok and raisesOverflowError(arr[1] *:= 933865493038); 3518 arr[1] := -644444; ok := ok and raisesOverflowError(arr[1] *:= 14312161101687); 3519 arr[1] := -644443; ok := ok and raisesOverflowError(arr[1] *:= 14312161101688); 3520 arr[1] := -38274; ok := ok and raisesOverflowError(arr[1] *:= 240989001041328); 3521 arr[1] := -38273; ok := ok and raisesOverflowError(arr[1] *:= 240989001041329); 3522 arr[1] := -4640; ok := ok and raisesOverflowError(arr[1] *:= 1988224194191587); 3523 arr[1] := -4639; ok := ok and raisesOverflowError(arr[1] *:= 1988224194191588); 3524 arr[1] := -858; ok := ok and raisesOverflowError(arr[1] *:= 10762394442070916); 3525 arr[1] := -857; ok := ok and raisesOverflowError(arr[1] *:= 10762394442070917); 3526 arr[1] := -12; ok := ok and raisesOverflowError(arr[1] *:= 838488366986797800); 3527 arr[1] := -11; ok := ok and raisesOverflowError(arr[1] *:= 838488366986797801); 3528 arr[1] := -4; ok := ok and raisesOverflowError(arr[1] *:= 3074457345618258602); 3529 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] *:= 3074457345618258603); 3530 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] *:= 4611686018427387904); 3531 arr[1] := -2; ok := ok and raisesOverflowError(arr[1] *:= 4611686018427387905); 3532 arr[1] := 4611686018427387905; ok := ok and raisesOverflowError(arr[1] *:= -2); 3533 arr[1] := 4611686018427387904; ok := ok and raisesOverflowError(arr[1] *:= -3); 3534 arr[1] := 3074457345618258603; ok := ok and raisesOverflowError(arr[1] *:= -3); 3535 arr[1] := 3074457345618258602; ok := ok and raisesOverflowError(arr[1] *:= -4); 3536 arr[1] := 838488366986797801; ok := ok and raisesOverflowError(arr[1] *:= -11); 3537 arr[1] := 838488366986797800; ok := ok and raisesOverflowError(arr[1] *:= -12); 3538 arr[1] := 10762394442070917; ok := ok and raisesOverflowError(arr[1] *:= -857); 3539 arr[1] := 10762394442070916; ok := ok and raisesOverflowError(arr[1] *:= -858); 3540 arr[1] := 1988224194191588; ok := ok and raisesOverflowError(arr[1] *:= -4639); 3541 arr[1] := 1988224194191587; ok := ok and raisesOverflowError(arr[1] *:= -4640); 3542 arr[1] := 240989001041329; ok := ok and raisesOverflowError(arr[1] *:= -38273); 3543 arr[1] := 240989001041328; ok := ok and raisesOverflowError(arr[1] *:= -38274); 3544 arr[1] := 14312161101688; ok := ok and raisesOverflowError(arr[1] *:= -644443); 3545 arr[1] := 14312161101687; ok := ok and raisesOverflowError(arr[1] *:= -644444); 3546 arr[1] := 933865493038; ok := ok and raisesOverflowError(arr[1] *:= -9876553); 3547 arr[1] := 933865493037; ok := ok and raisesOverflowError(arr[1] *:= -9876554); 3548 arr[1] := 747094709114; ok := ok and raisesOverflowError(arr[1] *:= -12345653); 3549 arr[1] := 747094709113; ok := ok and raisesOverflowError(arr[1] *:= -12345654); 3550 arr[1] := 74709312969; ok := ok and raisesOverflowError(arr[1] *:= -123456791); 3551 arr[1] := 74709312968; ok := ok and raisesOverflowError(arr[1] *:= -123456792); 3552 arr[1] := 3037000500; ok := ok and raisesOverflowError(arr[1] *:= -3037000500); 3553 arr[1] := 123456792; ok := ok and raisesOverflowError(arr[1] *:= -74709312968); 3554 arr[1] := 123456791; ok := ok and raisesOverflowError(arr[1] *:= -74709312969); 3555 arr[1] := 12345654; ok := ok and raisesOverflowError(arr[1] *:= -747094709113); 3556 arr[1] := 12345653; ok := ok and raisesOverflowError(arr[1] *:= -747094709114); 3557 arr[1] := 9876554; ok := ok and raisesOverflowError(arr[1] *:= -933865493037); 3558 arr[1] := 9876553; ok := ok and raisesOverflowError(arr[1] *:= -933865493038); 3559 arr[1] := 644444; ok := ok and raisesOverflowError(arr[1] *:= -14312161101687); 3560 arr[1] := 644443; ok := ok and raisesOverflowError(arr[1] *:= -14312161101688); 3561 arr[1] := 38274; ok := ok and raisesOverflowError(arr[1] *:= -240989001041328); 3562 arr[1] := 38273; ok := ok and raisesOverflowError(arr[1] *:= -240989001041329); 3563 arr[1] := 4640; ok := ok and raisesOverflowError(arr[1] *:= -1988224194191587); 3564 arr[1] := 4639; ok := ok and raisesOverflowError(arr[1] *:= -1988224194191588); 3565 arr[1] := 858; ok := ok and raisesOverflowError(arr[1] *:= -10762394442070916); 3566 arr[1] := 857; ok := ok and raisesOverflowError(arr[1] *:= -10762394442070917); 3567 arr[1] := 12; ok := ok and raisesOverflowError(arr[1] *:= -838488366986797800); 3568 arr[1] := 11; ok := ok and raisesOverflowError(arr[1] *:= -838488366986797801); 3569 arr[1] := 4; ok := ok and raisesOverflowError(arr[1] *:= -3074457345618258602); 3570 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] *:= -3074457345618258603); 3571 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] *:= -4611686018427387904); 3572 arr[1] := 2; ok := ok and raisesOverflowError(arr[1] *:= -4611686018427387905); 3573 if not ok then 3574 writeln(" ***** Underflow when computing multiplication assignment does not raise OVERFLOW_ERROR. (3)"); 3575 okay := FALSE; 3576 end if; 3577 3578 ok := TRUE; 3579 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] *:= -1); 3580 arr[1] := -4611686018427387904; ok := ok and raisesOverflowError(arr[1] *:= -2); 3581 arr[1] := -4611686018427387903; ok := ok and raisesOverflowError(arr[1] *:= -3); 3582 arr[1] := -3074457345618258603; ok := ok and raisesOverflowError(arr[1] *:= -3); 3583 arr[1] := -3074457345618258602; ok := ok and raisesOverflowError(arr[1] *:= -4); 3584 arr[1] := -838488366986797801; ok := ok and raisesOverflowError(arr[1] *:= -11); 3585 arr[1] := -838488366986797800; ok := ok and raisesOverflowError(arr[1] *:= -12); 3586 arr[1] := -10762394442070917; ok := ok and raisesOverflowError(arr[1] *:= -857); 3587 arr[1] := -10762394442070916; ok := ok and raisesOverflowError(arr[1] *:= -858); 3588 arr[1] := -1988224194191588; ok := ok and raisesOverflowError(arr[1] *:= -4639); 3589 arr[1] := -1988224194191587; ok := ok and raisesOverflowError(arr[1] *:= -4640); 3590 arr[1] := -240989001041329; ok := ok and raisesOverflowError(arr[1] *:= -38273); 3591 arr[1] := -240989001041328; ok := ok and raisesOverflowError(arr[1] *:= -38274); 3592 arr[1] := -14312161101688; ok := ok and raisesOverflowError(arr[1] *:= -644443); 3593 arr[1] := -14312161101687; ok := ok and raisesOverflowError(arr[1] *:= -644444); 3594 arr[1] := -933865493038; ok := ok and raisesOverflowError(arr[1] *:= -9876553); 3595 arr[1] := -933865493037; ok := ok and raisesOverflowError(arr[1] *:= -9876554); 3596 arr[1] := -747094709114; ok := ok and raisesOverflowError(arr[1] *:= -12345653); 3597 arr[1] := -747094709113; ok := ok and raisesOverflowError(arr[1] *:= -12345654); 3598 arr[1] := -74709312969; ok := ok and raisesOverflowError(arr[1] *:= -123456791); 3599 arr[1] := -74709312968; ok := ok and raisesOverflowError(arr[1] *:= -123456792); 3600 arr[1] := -3037000500; ok := ok and raisesOverflowError(arr[1] *:= -3037000500); 3601 arr[1] := -123456792; ok := ok and raisesOverflowError(arr[1] *:= -74709312968); 3602 arr[1] := -123456791; ok := ok and raisesOverflowError(arr[1] *:= -74709312969); 3603 arr[1] := -12345654; ok := ok and raisesOverflowError(arr[1] *:= -747094709113); 3604 arr[1] := -12345653; ok := ok and raisesOverflowError(arr[1] *:= -747094709114); 3605 arr[1] := -9876554; ok := ok and raisesOverflowError(arr[1] *:= -933865493037); 3606 arr[1] := -9876553; ok := ok and raisesOverflowError(arr[1] *:= -933865493038); 3607 arr[1] := -644444; ok := ok and raisesOverflowError(arr[1] *:= -14312161101687); 3608 arr[1] := -644443; ok := ok and raisesOverflowError(arr[1] *:= -14312161101688); 3609 arr[1] := -38274; ok := ok and raisesOverflowError(arr[1] *:= -240989001041328); 3610 arr[1] := -38273; ok := ok and raisesOverflowError(arr[1] *:= -240989001041329); 3611 arr[1] := -4640; ok := ok and raisesOverflowError(arr[1] *:= -1988224194191587); 3612 arr[1] := -4639; ok := ok and raisesOverflowError(arr[1] *:= -1988224194191588); 3613 arr[1] := -858; ok := ok and raisesOverflowError(arr[1] *:= -10762394442070916); 3614 arr[1] := -857; ok := ok and raisesOverflowError(arr[1] *:= -10762394442070917); 3615 arr[1] := -12; ok := ok and raisesOverflowError(arr[1] *:= -838488366986797800); 3616 arr[1] := -11; ok := ok and raisesOverflowError(arr[1] *:= -838488366986797801); 3617 arr[1] := -4; ok := ok and raisesOverflowError(arr[1] *:= -3074457345618258602); 3618 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] *:= -3074457345618258603); 3619 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] *:= -4611686018427387903); 3620 arr[1] := -2; ok := ok and raisesOverflowError(arr[1] *:= -4611686018427387904); 3621 arr[1] := 4611686018427387904; ok := ok and raisesOverflowError(arr[1] *:= 2); 3622 arr[1] := 4611686018427387903; ok := ok and raisesOverflowError(arr[1] *:= 3); 3623 arr[1] := 3074457345618258603; ok := ok and raisesOverflowError(arr[1] *:= 3); 3624 arr[1] := 3074457345618258602; ok := ok and raisesOverflowError(arr[1] *:= 4); 3625 arr[1] := 838488366986797801; ok := ok and raisesOverflowError(arr[1] *:= 11); 3626 arr[1] := 838488366986797800; ok := ok and raisesOverflowError(arr[1] *:= 12); 3627 arr[1] := 10762394442070917; ok := ok and raisesOverflowError(arr[1] *:= 857); 3628 arr[1] := 10762394442070916; ok := ok and raisesOverflowError(arr[1] *:= 858); 3629 arr[1] := 1988224194191588; ok := ok and raisesOverflowError(arr[1] *:= 4639); 3630 arr[1] := 1988224194191587; ok := ok and raisesOverflowError(arr[1] *:= 4640); 3631 arr[1] := 240989001041329; ok := ok and raisesOverflowError(arr[1] *:= 38273); 3632 arr[1] := 240989001041328; ok := ok and raisesOverflowError(arr[1] *:= 38274); 3633 arr[1] := 14312161101688; ok := ok and raisesOverflowError(arr[1] *:= 644443); 3634 arr[1] := 14312161101687; ok := ok and raisesOverflowError(arr[1] *:= 644444); 3635 arr[1] := 933865493038; ok := ok and raisesOverflowError(arr[1] *:= 9876553); 3636 arr[1] := 933865493037; ok := ok and raisesOverflowError(arr[1] *:= 9876554); 3637 arr[1] := 747094709114; ok := ok and raisesOverflowError(arr[1] *:= 12345653); 3638 arr[1] := 747094709113; ok := ok and raisesOverflowError(arr[1] *:= 12345654); 3639 arr[1] := 74709312969; ok := ok and raisesOverflowError(arr[1] *:= 123456791); 3640 arr[1] := 74709312968; ok := ok and raisesOverflowError(arr[1] *:= 123456792); 3641 arr[1] := 3037000500; ok := ok and raisesOverflowError(arr[1] *:= 3037000500); 3642 arr[1] := 123456792; ok := ok and raisesOverflowError(arr[1] *:= 74709312968); 3643 arr[1] := 123456791; ok := ok and raisesOverflowError(arr[1] *:= 74709312969); 3644 arr[1] := 12345654; ok := ok and raisesOverflowError(arr[1] *:= 747094709113); 3645 arr[1] := 12345653; ok := ok and raisesOverflowError(arr[1] *:= 747094709114); 3646 arr[1] := 9876554; ok := ok and raisesOverflowError(arr[1] *:= 933865493037); 3647 arr[1] := 9876553; ok := ok and raisesOverflowError(arr[1] *:= 933865493038); 3648 arr[1] := 644444; ok := ok and raisesOverflowError(arr[1] *:= 14312161101687); 3649 arr[1] := 644443; ok := ok and raisesOverflowError(arr[1] *:= 14312161101688); 3650 arr[1] := 38274; ok := ok and raisesOverflowError(arr[1] *:= 240989001041328); 3651 arr[1] := 38273; ok := ok and raisesOverflowError(arr[1] *:= 240989001041329); 3652 arr[1] := 4640; ok := ok and raisesOverflowError(arr[1] *:= 1988224194191587); 3653 arr[1] := 4639; ok := ok and raisesOverflowError(arr[1] *:= 1988224194191588); 3654 arr[1] := 858; ok := ok and raisesOverflowError(arr[1] *:= 10762394442070916); 3655 arr[1] := 857; ok := ok and raisesOverflowError(arr[1] *:= 10762394442070917); 3656 arr[1] := 12; ok := ok and raisesOverflowError(arr[1] *:= 838488366986797800); 3657 arr[1] := 11; ok := ok and raisesOverflowError(arr[1] *:= 838488366986797801); 3658 arr[1] := 4; ok := ok and raisesOverflowError(arr[1] *:= 3074457345618258602); 3659 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] *:= 3074457345618258603); 3660 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] *:= 4611686018427387903); 3661 arr[1] := 2; ok := ok and raisesOverflowError(arr[1] *:= 4611686018427387904); 3662 if not ok then 3663 writeln(" ***** Overflow when computing multiplication assignment does not raise OVERFLOW_ERROR. (3)"); 3664 okay := FALSE; 3665 end if; 3666 end func; 3667 3668 3669const func boolean: check_mult_assign_4 is func 3670 result 3671 var boolean: okay is TRUE; 3672 local 3673 var boolean: ok is TRUE; 3674 var array integer: arr is [] (0); 3675 begin 3676 arr[1] := -4611686018427387905; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 2)); 3677 arr[1] := -4611686018427387904; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 3)); 3678 arr[1] := -3074457345618258603; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 3)); 3679 arr[1] := -3074457345618258602; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 4)); 3680 arr[1] := -838488366986797801; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 11)); 3681 arr[1] := -838488366986797800; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 12)); 3682 arr[1] := -10762394442070917; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 857)); 3683 arr[1] := -10762394442070916; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 858)); 3684 arr[1] := -1988224194191588; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 4639)); 3685 arr[1] := -1988224194191587; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 4640)); 3686 arr[1] := -240989001041329; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 38273)); 3687 arr[1] := -240989001041328; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 38274)); 3688 arr[1] := -14312161101688; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 644443)); 3689 arr[1] := -14312161101687; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 644444)); 3690 arr[1] := -933865493038; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 9876553)); 3691 arr[1] := -933865493037; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 9876554)); 3692 arr[1] := -747094709114; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 12345653)); 3693 arr[1] := -747094709113; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 12345654)); 3694 arr[1] := -74709312969; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 123456791)); 3695 arr[1] := -74709312968; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 123456792)); 3696 arr[1] := -3037000500; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 3037000500)); 3697 arr[1] := -123456792; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 74709312968)); 3698 arr[1] := -123456791; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 74709312969)); 3699 arr[1] := -12345654; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 747094709113)); 3700 arr[1] := -12345653; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 747094709114)); 3701 arr[1] := -9876554; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 933865493037)); 3702 arr[1] := -9876553; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 933865493038)); 3703 arr[1] := -644444; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 14312161101687)); 3704 arr[1] := -644443; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 14312161101688)); 3705 arr[1] := -38274; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 240989001041328)); 3706 arr[1] := -38273; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 240989001041329)); 3707 arr[1] := -4640; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 1988224194191587)); 3708 arr[1] := -4639; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 1988224194191588)); 3709 arr[1] := -858; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 10762394442070916)); 3710 arr[1] := -857; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 10762394442070917)); 3711 arr[1] := -12; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 838488366986797800)); 3712 arr[1] := -11; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 838488366986797801)); 3713 arr[1] := -4; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 3074457345618258602)); 3714 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 3074457345618258603)); 3715 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 4611686018427387904)); 3716 arr[1] := -2; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 4611686018427387905)); 3717 arr[1] := 4611686018427387905; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -2)); 3718 arr[1] := 4611686018427387904; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -3)); 3719 arr[1] := 3074457345618258603; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -3)); 3720 arr[1] := 3074457345618258602; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -4)); 3721 arr[1] := 838488366986797801; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -11)); 3722 arr[1] := 838488366986797800; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -12)); 3723 arr[1] := 10762394442070917; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -857)); 3724 arr[1] := 10762394442070916; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -858)); 3725 arr[1] := 1988224194191588; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -4639)); 3726 arr[1] := 1988224194191587; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -4640)); 3727 arr[1] := 240989001041329; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -38273)); 3728 arr[1] := 240989001041328; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -38274)); 3729 arr[1] := 14312161101688; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -644443)); 3730 arr[1] := 14312161101687; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -644444)); 3731 arr[1] := 933865493038; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -9876553)); 3732 arr[1] := 933865493037; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -9876554)); 3733 arr[1] := 747094709114; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -12345653)); 3734 arr[1] := 747094709113; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -12345654)); 3735 arr[1] := 74709312969; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -123456791)); 3736 arr[1] := 74709312968; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -123456792)); 3737 arr[1] := 3037000500; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -3037000500)); 3738 arr[1] := 123456792; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -74709312968)); 3739 arr[1] := 123456791; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -74709312969)); 3740 arr[1] := 12345654; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -747094709113)); 3741 arr[1] := 12345653; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -747094709114)); 3742 arr[1] := 9876554; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -933865493037)); 3743 arr[1] := 9876553; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -933865493038)); 3744 arr[1] := 644444; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -14312161101687)); 3745 arr[1] := 644443; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -14312161101688)); 3746 arr[1] := 38274; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -240989001041328)); 3747 arr[1] := 38273; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -240989001041329)); 3748 arr[1] := 4640; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -1988224194191587)); 3749 arr[1] := 4639; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -1988224194191588)); 3750 arr[1] := 858; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -10762394442070916)); 3751 arr[1] := 857; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -10762394442070917)); 3752 arr[1] := 12; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -838488366986797800)); 3753 arr[1] := 11; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -838488366986797801)); 3754 arr[1] := 4; ok := ok and raisesOverflowError(arr[1] *:= intExpr(-3074457345618258602)); 3755 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] *:= intExpr(-3074457345618258603)); 3756 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] *:= intExpr(-4611686018427387904)); 3757 arr[1] := 2; ok := ok and raisesOverflowError(arr[1] *:= intExpr(-4611686018427387905)); 3758 if not ok then 3759 writeln(" ***** Underflow when computing multiplication assignment does not raise OVERFLOW_ERROR. (4)"); 3760 okay := FALSE; 3761 end if; 3762 3763 ok := TRUE; 3764 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -1)); 3765 arr[1] := -4611686018427387904; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -2)); 3766 arr[1] := -4611686018427387903; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -3)); 3767 arr[1] := -3074457345618258603; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -3)); 3768 arr[1] := -3074457345618258602; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -4)); 3769 arr[1] := -838488366986797801; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -11)); 3770 arr[1] := -838488366986797800; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -12)); 3771 arr[1] := -10762394442070917; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -857)); 3772 arr[1] := -10762394442070916; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -858)); 3773 arr[1] := -1988224194191588; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -4639)); 3774 arr[1] := -1988224194191587; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -4640)); 3775 arr[1] := -240989001041329; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -38273)); 3776 arr[1] := -240989001041328; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -38274)); 3777 arr[1] := -14312161101688; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -644443)); 3778 arr[1] := -14312161101687; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -644444)); 3779 arr[1] := -933865493038; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -9876553)); 3780 arr[1] := -933865493037; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -9876554)); 3781 arr[1] := -747094709114; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -12345653)); 3782 arr[1] := -747094709113; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -12345654)); 3783 arr[1] := -74709312969; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -123456791)); 3784 arr[1] := -74709312968; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -123456792)); 3785 arr[1] := -3037000500; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -3037000500)); 3786 arr[1] := -123456792; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -74709312968)); 3787 arr[1] := -123456791; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -74709312969)); 3788 arr[1] := -12345654; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -747094709113)); 3789 arr[1] := -12345653; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -747094709114)); 3790 arr[1] := -9876554; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -933865493037)); 3791 arr[1] := -9876553; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -933865493038)); 3792 arr[1] := -644444; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -14312161101687)); 3793 arr[1] := -644443; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -14312161101688)); 3794 arr[1] := -38274; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -240989001041328)); 3795 arr[1] := -38273; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -240989001041329)); 3796 arr[1] := -4640; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -1988224194191587)); 3797 arr[1] := -4639; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -1988224194191588)); 3798 arr[1] := -858; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -10762394442070916)); 3799 arr[1] := -857; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -10762394442070917)); 3800 arr[1] := -12; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -838488366986797800)); 3801 arr[1] := -11; ok := ok and raisesOverflowError(arr[1] *:= intExpr( -838488366986797801)); 3802 arr[1] := -4; ok := ok and raisesOverflowError(arr[1] *:= intExpr(-3074457345618258602)); 3803 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] *:= intExpr(-3074457345618258603)); 3804 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] *:= intExpr(-4611686018427387903)); 3805 arr[1] := -2; ok := ok and raisesOverflowError(arr[1] *:= intExpr(-4611686018427387904)); 3806 arr[1] := 4611686018427387904; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 2)); 3807 arr[1] := 4611686018427387903; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 3)); 3808 arr[1] := 3074457345618258603; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 3)); 3809 arr[1] := 3074457345618258602; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 4)); 3810 arr[1] := 838488366986797801; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 11)); 3811 arr[1] := 838488366986797800; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 12)); 3812 arr[1] := 10762394442070917; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 857)); 3813 arr[1] := 10762394442070916; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 858)); 3814 arr[1] := 1988224194191588; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 4639)); 3815 arr[1] := 1988224194191587; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 4640)); 3816 arr[1] := 240989001041329; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 38273)); 3817 arr[1] := 240989001041328; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 38274)); 3818 arr[1] := 14312161101688; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 644443)); 3819 arr[1] := 14312161101687; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 644444)); 3820 arr[1] := 933865493038; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 9876553)); 3821 arr[1] := 933865493037; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 9876554)); 3822 arr[1] := 747094709114; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 12345653)); 3823 arr[1] := 747094709113; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 12345654)); 3824 arr[1] := 74709312969; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 123456791)); 3825 arr[1] := 74709312968; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 123456792)); 3826 arr[1] := 3037000500; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 3037000500)); 3827 arr[1] := 123456792; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 74709312968)); 3828 arr[1] := 123456791; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 74709312969)); 3829 arr[1] := 12345654; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 747094709113)); 3830 arr[1] := 12345653; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 747094709114)); 3831 arr[1] := 9876554; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 933865493037)); 3832 arr[1] := 9876553; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 933865493038)); 3833 arr[1] := 644444; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 14312161101687)); 3834 arr[1] := 644443; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 14312161101688)); 3835 arr[1] := 38274; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 240989001041328)); 3836 arr[1] := 38273; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 240989001041329)); 3837 arr[1] := 4640; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 1988224194191587)); 3838 arr[1] := 4639; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 1988224194191588)); 3839 arr[1] := 858; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 10762394442070916)); 3840 arr[1] := 857; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 10762394442070917)); 3841 arr[1] := 12; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 838488366986797800)); 3842 arr[1] := 11; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 838488366986797801)); 3843 arr[1] := 4; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 3074457345618258602)); 3844 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 3074457345618258603)); 3845 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 4611686018427387903)); 3846 arr[1] := 2; ok := ok and raisesOverflowError(arr[1] *:= intExpr( 4611686018427387904)); 3847 if not ok then 3848 writeln(" ***** Overflow when computing multiplication assignment does not raise OVERFLOW_ERROR. (4)"); 3849 okay := FALSE; 3850 end if; 3851 end func; 3852 3853 3854const proc: check_mult_assign is func 3855 begin 3856 if check_mult_assign_1 and 3857 check_mult_assign_2 and 3858 check_mult_assign_3 and 3859 check_mult_assign_4 then 3860 writeln("Overflow checking of multiplication assignment works correct."); 3861 else 3862 writeln(" ***** Overflow checking of multiplication assignment does not work correct."); 3863 end if; 3864 end func; 3865 3866 3867const proc: check_div is func 3868 local 3869 var boolean: okay is TRUE; 3870 begin 3871 if not raisesOverflowError( INT64_MIN div -1 ) or 3872 not raisesOverflowError(intExpr( INT64_MIN) div -1 ) or 3873 not raisesOverflowError( INT64_MIN div intExpr(-1)) or 3874 not raisesOverflowError(intExpr( INT64_MIN) div intExpr(-1)) or 3875 not raisesOverflowError( (-9223372036854775807-1) div -1 ) or 3876 not raisesOverflowError(intExpr((-9223372036854775807-1)) div -1 ) or 3877 not raisesOverflowError( (-9223372036854775807-1) div intExpr(-1)) or 3878 not raisesOverflowError(intExpr((-9223372036854775807-1)) div intExpr(-1)) then 3879 writeln(" ***** Computing -9223372036854775808 div -1 does not raise OVERFLOW_ERROR."); 3880 okay := FALSE; 3881 end if; 3882 3883 if okay then 3884 writeln("Overflow checking of div operator works correct."); 3885 else 3886 writeln(" ***** Overflow checking of div operator does not work correct."); 3887 end if; 3888 end func; 3889 3890 3891const proc: check_rem is func 3892 local 3893 var boolean: okay is TRUE; 3894 begin 3895 # An integer expression must either raise OVERFLOW_ERROR or return the correct result. 3896 if not (raisesOverflowError( INT64_MIN rem -1 ) or 3897 INT64_MIN rem -1 = 0) or 3898 not (raisesOverflowError(intExpr( INT64_MIN) rem -1 ) or 3899 intExpr( INT64_MIN) rem -1 = 0) or 3900 not (raisesOverflowError( INT64_MIN rem intExpr(-1)) or 3901 INT64_MIN rem intExpr(-1) = 0) or 3902 not (raisesOverflowError(intExpr( INT64_MIN) rem intExpr(-1)) or 3903 intExpr( INT64_MIN) rem intExpr(-1) = 0) or 3904 not (raisesOverflowError( (-9223372036854775807-1) rem -1 ) or 3905 (-9223372036854775807-1) rem -1 = 0) or 3906 not (raisesOverflowError(intExpr(-9223372036854775807-1) rem -1 ) or 3907 intExpr(-9223372036854775807-1) rem -1 = 0) or 3908 not (raisesOverflowError( (-9223372036854775807-1) rem intExpr(-1)) or 3909 (-9223372036854775807-1) rem intExpr(-1) = 0) or 3910 not (raisesOverflowError(intExpr(-9223372036854775807-1) rem intExpr(-1)) or 3911 intExpr(-9223372036854775807-1) rem intExpr(-1) = 0) then 3912 writeln(" ***** Computing -9223372036854775808 rem -1 does neither raise OVERFLOW_ERROR nor return 0."); 3913 okay := FALSE; 3914 end if; 3915 3916 if okay then 3917 writeln("Overflow checking of rem operator works correct."); 3918 else 3919 writeln(" ***** Overflow checking of rem operator does not work correct."); 3920 end if; 3921 end func; 3922 3923 3924const proc: check_mdiv is func 3925 local 3926 var boolean: okay is TRUE; 3927 begin 3928 if not raisesOverflowError( INT64_MIN mdiv -1 ) or 3929 not raisesOverflowError(intExpr( INT64_MIN) mdiv -1 ) or 3930 not raisesOverflowError( INT64_MIN mdiv intExpr(-1)) or 3931 not raisesOverflowError(intExpr( INT64_MIN) mdiv intExpr(-1)) or 3932 not raisesOverflowError( (-9223372036854775807-1) mdiv -1 ) or 3933 not raisesOverflowError(intExpr((-9223372036854775807-1)) mdiv -1 ) or 3934 not raisesOverflowError( (-9223372036854775807-1) mdiv intExpr(-1)) or 3935 not raisesOverflowError(intExpr((-9223372036854775807-1)) mdiv intExpr(-1)) then 3936 writeln(" ***** Computing -9223372036854775808 mdiv -1 does not raise OVERFLOW_ERROR."); 3937 okay := FALSE; 3938 end if; 3939 3940 if okay then 3941 writeln("Overflow checking of mdiv operator works correct."); 3942 else 3943 writeln(" ***** Overflow checking of mdiv operator does not work correct."); 3944 end if; 3945 end func; 3946 3947 3948const proc: check_mod is func 3949 local 3950 var boolean: okay is TRUE; 3951 begin 3952 # An integer expression must either raise OVERFLOW_ERROR or return the correct result. 3953 if not (raisesOverflowError( INT64_MIN mod -1 ) or 3954 INT64_MIN mod -1 = 0) or 3955 not (raisesOverflowError(intExpr( INT64_MIN) mod -1 ) or 3956 intExpr( INT64_MIN) mod -1 = 0) or 3957 not (raisesOverflowError( INT64_MIN mod intExpr(-1)) or 3958 INT64_MIN mod intExpr(-1) = 0) or 3959 not (raisesOverflowError(intExpr( INT64_MIN) mod intExpr(-1)) or 3960 intExpr( INT64_MIN) mod intExpr(-1) = 0) or 3961 not (raisesOverflowError( (-9223372036854775807-1) mod -1 ) or 3962 (-9223372036854775807-1) mod -1 = 0) or 3963 not (raisesOverflowError(intExpr(-9223372036854775807-1) mod -1 ) or 3964 intExpr(-9223372036854775807-1) mod -1 = 0) or 3965 not (raisesOverflowError( (-9223372036854775807-1) mod intExpr(-1)) or 3966 (-9223372036854775807-1) mod intExpr(-1) = 0) or 3967 not (raisesOverflowError(intExpr(-9223372036854775807-1) mod intExpr(-1)) or 3968 intExpr(-9223372036854775807-1) mod intExpr(-1) = 0) then 3969 writeln(" ***** Computing -9223372036854775808 mod -1 does neither raise OVERFLOW_ERROR nor return 0."); 3970 okay := FALSE; 3971 end if; 3972 3973 if not raisesOverflowError((1 << -1 ) mod 32) or 3974 not raisesOverflowError((1 << intExpr(-1)) mod 32) or 3975 not raisesOverflowError((intExpr(1) << -1 ) mod 32) or 3976 not raisesOverflowError((intExpr(1) << intExpr(-1)) mod 32) or 3977 not raisesOverflowError((intExpr(1 << -1)) mod 32) then 3978 writeln(" ***** Computing (1 << -1) mod 32 does not raise OVERFLOW_ERROR."); 3979 okay := FALSE; 3980 end if; 3981 3982 if not raisesOverflowError(succ(1 << -1 ) mod 32) or 3983 not raisesOverflowError(succ(1 << intExpr(-1)) mod 32) or 3984 not raisesOverflowError(succ(intExpr(1) << -1 ) mod 32) or 3985 not raisesOverflowError(succ(intExpr(1) << intExpr(-1)) mod 32) or 3986 not raisesOverflowError(succ(intExpr(1 << -1)) mod 32) then 3987 writeln(" ***** Computing succ(1 << -1) mod 32 does not raise OVERFLOW_ERROR."); 3988 okay := FALSE; 3989 end if; 3990 3991 if not raisesOverflowError( 5678901234567890123 mod (1 << -1 )) or 3992 not raisesOverflowError( 5678901234567890123 mod (1 << intExpr(-1))) or 3993 not raisesOverflowError(intExpr(5678901234567890123) mod (1 << -1 )) or 3994 not raisesOverflowError(intExpr(5678901234567890123) mod (1 << intExpr(-1))) then 3995 writeln(" ***** mod by computed power of two does not raise OVERFLOW_ERROR."); 3996 okay := FALSE; 3997 end if; 3998 3999 if okay then 4000 writeln("Overflow checking of mod operator works correct."); 4001 else 4002 writeln(" ***** Overflow checking of mod operator does not work correct."); 4003 end if; 4004 end func; 4005 4006 4007(** 4008 * Tests for the compiler optimization to reduce overflow checking 4009 * for lshift. 4010 *) 4011const func boolean: check_reduced_overflow_checking_for_lshift is func 4012 result 4013 var boolean: okay is TRUE; 4014 begin 4015 if not raisesOverflowError((intExpr(integer.first) >> 0) << 1) or 4016 not raisesOverflowError((intExpr(integer.first) >> 1) << 2) or 4017 not raisesOverflowError((intExpr(integer.first) >> 30) << 31) or 4018 not raisesOverflowError((intExpr(integer.first) >> 62) << 63) then 4019 writeln(" ***** Reduced overflow check for lshift failed: Minimum rshift result if the shift amount is known."); 4020 okay := FALSE; 4021 end if; 4022 4023 if not raisesOverflowError((intExpr( integer.last) >> 0) << 1) or 4024 not raisesOverflowError((intExpr( integer.last) >> 1) << 2) or 4025 not raisesOverflowError((intExpr( integer.last) >> 30) << 31) or 4026 not raisesOverflowError((intExpr( integer.last) >> 62) << 63) then 4027 writeln(" ***** Reduced overflow check for lshift failed: Maximum rshift result if the shift amount is known."); 4028 okay := FALSE; 4029 end if; 4030 4031 if not raisesOverflowError(( integer.first >> intExpr( 0)) << 1) or 4032 not raisesOverflowError(( -integer.last >> intExpr( 0)) << 1) or 4033 not raisesOverflowError((-4611686018427387905 >> intExpr( 0)) << 1) or 4034 not raisesOverflowError((-4611686018427387904 >> intExpr( 0)) << 2) or 4035 not raisesOverflowError(( -8589934593 >> intExpr( 0)) << 30) or 4036 not raisesOverflowError(( -8589934592 >> intExpr( 0)) << 31) or 4037 not raisesOverflowError(( -1234567890 >> intExpr( 0)) << 33) or 4038 not raisesOverflowError(( -2 >> intExpr( 0)) << 63) then 4039 writeln(" ***** Reduced overflow check for lshift failed: Minimum rshift result if the shifted value is known."); 4040 okay := FALSE; 4041 end if; 4042 4043 if not raisesOverflowError(( 1 >> intExpr( 0)) << 63) or 4044 not raisesOverflowError(( 2 >> intExpr( 0)) << 62) or 4045 not raisesOverflowError(( 1234567890 >> intExpr( 0)) << 33) or 4046 not raisesOverflowError(( 8589934591 >> intExpr( 0)) << 31) or 4047 not raisesOverflowError(( 8589934592 >> intExpr( 0)) << 30) or 4048 not raisesOverflowError(( 4611686018427387903 >> intExpr( 0)) << 2) or 4049 not raisesOverflowError(( 4611686018427387904 >> intExpr( 0)) << 1) or 4050 not raisesOverflowError(( integer.last >> intExpr( 0)) << 1) then 4051 writeln(" ***** Reduced overflow check for lshift failed: Maximum rshift result if the shifted value is known."); 4052 okay := FALSE; 4053 end if; 4054 end func; 4055 4056 4057const proc: check_lShift is func 4058 local 4059 var boolean: okay is TRUE; 4060 begin 4061 if not raisesOverflowError( INT64_MIN << 1) or 4062 not raisesOverflowError(-4611686018427387905 << 1) or 4063 not raisesOverflowError(-4611686018427387904 << 2) or 4064 not raisesOverflowError(-2305843009213693953 << 2) or 4065 not raisesOverflowError(-2305843009213693952 << 3) or 4066 not raisesOverflowError(-1152921504606846977 << 3) or 4067 not raisesOverflowError( -576460752303423489 << 4) or 4068 not raisesOverflowError( -576460752303423488 << 5) or 4069 not raisesOverflowError( -288230376151711745 << 5) or 4070 not raisesOverflowError( -288230376151711744 << 6) or 4071 not raisesOverflowError( -9007199254740993 << 10) or 4072 not raisesOverflowError( -9007199254740992 << 11) or 4073 not raisesOverflowError( -281474976710657 << 15) or 4074 not raisesOverflowError( -281474976710656 << 16) or 4075 not raisesOverflowError( -8796093022209 << 20) or 4076 not raisesOverflowError( -8796093022208 << 21) or 4077 not raisesOverflowError( -274877906945 << 25) or 4078 not raisesOverflowError( -274877906944 << 26) or 4079 not raisesOverflowError( -8589934593 << 30) or 4080 not raisesOverflowError( -8589934592 << 31) or 4081 not raisesOverflowError( -268435457 << 35) or 4082 not raisesOverflowError( -268435456 << 36) or 4083 not raisesOverflowError( -8388609 << 40) or 4084 not raisesOverflowError( -8388608 << 41) or 4085 not raisesOverflowError( -262145 << 45) or 4086 not raisesOverflowError( -262144 << 46) or 4087 not raisesOverflowError( -8193 << 50) or 4088 not raisesOverflowError( -8192 << 51) or 4089 not raisesOverflowError( -257 << 55) or 4090 not raisesOverflowError( -256 << 56) or 4091 not raisesOverflowError( -9 << 60) or 4092 not raisesOverflowError( -8 << 61) or 4093 not raisesOverflowError( -5 << 61) or 4094 not raisesOverflowError( -4 << 62) or 4095 not raisesOverflowError( -3 << 62) or 4096 not raisesOverflowError( -2 << 63) or 4097 not raisesOverflowError( -1 << 64) or 4098 not raisesOverflowError( 0 << 64) or 4099 not raisesOverflowError( 1 << 63) or 4100 not raisesOverflowError( 2 << 62) or 4101 not raisesOverflowError( 3 << 62) or 4102 not raisesOverflowError( 4 << 61) or 4103 not raisesOverflowError( 7 << 61) or 4104 not raisesOverflowError( 8 << 60) or 4105 not raisesOverflowError( 255 << 56) or 4106 not raisesOverflowError( 256 << 55) or 4107 not raisesOverflowError( 8191 << 51) or 4108 not raisesOverflowError( 8192 << 50) or 4109 not raisesOverflowError( 262143 << 46) or 4110 not raisesOverflowError( 262144 << 45) or 4111 not raisesOverflowError( 8388607 << 41) or 4112 not raisesOverflowError( 8388608 << 40) or 4113 not raisesOverflowError( 268435455 << 36) or 4114 not raisesOverflowError( 268435456 << 35) or 4115 not raisesOverflowError( 8589934591 << 31) or 4116 not raisesOverflowError( 8589934592 << 30) or 4117 not raisesOverflowError( 274877906943 << 26) or 4118 not raisesOverflowError( 274877906944 << 25) or 4119 not raisesOverflowError( 8796093022207 << 21) or 4120 not raisesOverflowError( 8796093022208 << 20) or 4121 not raisesOverflowError( 281474976710655 << 16) or 4122 not raisesOverflowError( 281474976710656 << 15) or 4123 not raisesOverflowError( 9007199254740991 << 11) or 4124 not raisesOverflowError( 9007199254740992 << 10) or 4125 not raisesOverflowError( 288230376151711743 << 6) or 4126 not raisesOverflowError( 288230376151711744 << 5) or 4127 not raisesOverflowError( 576460752303423487 << 5) or 4128 not raisesOverflowError( 576460752303423488 << 4) or 4129 not raisesOverflowError( 1152921504606846975 << 4) or 4130 not raisesOverflowError( 1152921504606846976 << 3) or 4131 not raisesOverflowError( 2305843009213693951 << 3) or 4132 not raisesOverflowError( 2305843009213693952 << 2) or 4133 not raisesOverflowError( 4611686018427387903 << 2) or 4134 not raisesOverflowError( 4611686018427387904 << 1) or 4135 not raisesOverflowError(intExpr( INT64_MIN) << 1) or 4136 not raisesOverflowError(intExpr(-4611686018427387905) << 1) or 4137 not raisesOverflowError(intExpr(-4611686018427387904) << 2) or 4138 not raisesOverflowError(intExpr(-2305843009213693953) << 2) or 4139 not raisesOverflowError(intExpr(-2305843009213693952) << 3) or 4140 not raisesOverflowError(intExpr(-1152921504606846977) << 3) or 4141 not raisesOverflowError(intExpr( -576460752303423489) << 4) or 4142 not raisesOverflowError(intExpr( -576460752303423488) << 5) or 4143 not raisesOverflowError(intExpr( -288230376151711745) << 5) or 4144 not raisesOverflowError(intExpr( -288230376151711744) << 6) or 4145 not raisesOverflowError(intExpr( -9007199254740993) << 10) or 4146 not raisesOverflowError(intExpr( -9007199254740992) << 11) or 4147 not raisesOverflowError(intExpr( -281474976710657) << 15) or 4148 not raisesOverflowError(intExpr( -281474976710656) << 16) or 4149 not raisesOverflowError(intExpr( -8796093022209) << 20) or 4150 not raisesOverflowError(intExpr( -8796093022208) << 21) or 4151 not raisesOverflowError(intExpr( -274877906945) << 25) or 4152 not raisesOverflowError(intExpr( -274877906944) << 26) or 4153 not raisesOverflowError(intExpr( -8589934593) << 30) or 4154 not raisesOverflowError(intExpr( -8589934592) << 31) or 4155 not raisesOverflowError(intExpr( -268435457) << 35) or 4156 not raisesOverflowError(intExpr( -268435456) << 36) or 4157 not raisesOverflowError(intExpr( -8388609) << 40) or 4158 not raisesOverflowError(intExpr( -8388608) << 41) or 4159 not raisesOverflowError(intExpr( -262145) << 45) or 4160 not raisesOverflowError(intExpr( -262144) << 46) or 4161 not raisesOverflowError(intExpr( -8193) << 50) or 4162 not raisesOverflowError(intExpr( -8192) << 51) or 4163 not raisesOverflowError(intExpr( -257) << 55) or 4164 not raisesOverflowError(intExpr( -256) << 56) or 4165 not raisesOverflowError(intExpr( -9) << 60) or 4166 not raisesOverflowError(intExpr( -8) << 61) or 4167 not raisesOverflowError(intExpr( -5) << 61) or 4168 not raisesOverflowError(intExpr( -4) << 62) or 4169 not raisesOverflowError(intExpr( -3) << 62) or 4170 not raisesOverflowError(intExpr( -2) << 63) or 4171 not raisesOverflowError(intExpr( -1) << 64) or 4172 not raisesOverflowError(intExpr( 0) << 64) or 4173 not raisesOverflowError(intExpr( 1) << 63) or 4174 not raisesOverflowError(intExpr( 2) << 62) or 4175 not raisesOverflowError(intExpr( 3) << 62) or 4176 not raisesOverflowError(intExpr( 4) << 61) or 4177 not raisesOverflowError(intExpr( 7) << 61) or 4178 not raisesOverflowError(intExpr( 8) << 60) or 4179 not raisesOverflowError(intExpr( 255) << 56) or 4180 not raisesOverflowError(intExpr( 256) << 55) or 4181 not raisesOverflowError(intExpr( 8191) << 51) or 4182 not raisesOverflowError(intExpr( 8192) << 50) or 4183 not raisesOverflowError(intExpr( 262143) << 46) or 4184 not raisesOverflowError(intExpr( 262144) << 45) or 4185 not raisesOverflowError(intExpr( 8388607) << 41) or 4186 not raisesOverflowError(intExpr( 8388608) << 40) or 4187 not raisesOverflowError(intExpr( 268435455) << 36) or 4188 not raisesOverflowError(intExpr( 268435456) << 35) or 4189 not raisesOverflowError(intExpr( 8589934591) << 31) or 4190 not raisesOverflowError(intExpr( 8589934592) << 30) or 4191 not raisesOverflowError(intExpr( 274877906943) << 26) or 4192 not raisesOverflowError(intExpr( 274877906944) << 25) or 4193 not raisesOverflowError(intExpr( 8796093022207) << 21) or 4194 not raisesOverflowError(intExpr( 8796093022208) << 20) or 4195 not raisesOverflowError(intExpr( 281474976710655) << 16) or 4196 not raisesOverflowError(intExpr( 281474976710656) << 15) or 4197 not raisesOverflowError(intExpr( 9007199254740991) << 11) or 4198 not raisesOverflowError(intExpr( 9007199254740992) << 10) or 4199 not raisesOverflowError(intExpr( 288230376151711743) << 6) or 4200 not raisesOverflowError(intExpr( 288230376151711744) << 5) or 4201 not raisesOverflowError(intExpr( 576460752303423487) << 5) or 4202 not raisesOverflowError(intExpr( 576460752303423488) << 4) or 4203 not raisesOverflowError(intExpr( 1152921504606846975) << 4) or 4204 not raisesOverflowError(intExpr( 1152921504606846976) << 3) or 4205 not raisesOverflowError(intExpr( 2305843009213693951) << 3) or 4206 not raisesOverflowError(intExpr( 2305843009213693952) << 2) or 4207 not raisesOverflowError(intExpr( 4611686018427387903) << 2) or 4208 not raisesOverflowError(intExpr( 4611686018427387904) << 1) or 4209 not raisesOverflowError( INT64_MIN << intExpr( 1)) or 4210 not raisesOverflowError(-4611686018427387905 << intExpr( 1)) or 4211 not raisesOverflowError(-4611686018427387904 << intExpr( 2)) or 4212 not raisesOverflowError(-2305843009213693953 << intExpr( 2)) or 4213 not raisesOverflowError(-2305843009213693952 << intExpr( 3)) or 4214 not raisesOverflowError(-1152921504606846977 << intExpr( 3)) or 4215 not raisesOverflowError( -576460752303423489 << intExpr( 4)) or 4216 not raisesOverflowError( -576460752303423488 << intExpr( 5)) or 4217 not raisesOverflowError( -288230376151711745 << intExpr( 5)) or 4218 not raisesOverflowError( -288230376151711744 << intExpr( 6)) or 4219 not raisesOverflowError( -9007199254740993 << intExpr(10)) or 4220 not raisesOverflowError( -9007199254740992 << intExpr(11)) or 4221 not raisesOverflowError( -281474976710657 << intExpr(15)) or 4222 not raisesOverflowError( -281474976710656 << intExpr(16)) or 4223 not raisesOverflowError( -8796093022209 << intExpr(20)) or 4224 not raisesOverflowError( -8796093022208 << intExpr(21)) or 4225 not raisesOverflowError( -274877906945 << intExpr(25)) or 4226 not raisesOverflowError( -274877906944 << intExpr(26)) or 4227 not raisesOverflowError( -8589934593 << intExpr(30)) or 4228 not raisesOverflowError( -8589934592 << intExpr(31)) or 4229 not raisesOverflowError( -268435457 << intExpr(35)) or 4230 not raisesOverflowError( -268435456 << intExpr(36)) or 4231 not raisesOverflowError( -8388609 << intExpr(40)) or 4232 not raisesOverflowError( -8388608 << intExpr(41)) or 4233 not raisesOverflowError( -262145 << intExpr(45)) or 4234 not raisesOverflowError( -262144 << intExpr(46)) or 4235 not raisesOverflowError( -8193 << intExpr(50)) or 4236 not raisesOverflowError( -8192 << intExpr(51)) or 4237 not raisesOverflowError( -257 << intExpr(55)) or 4238 not raisesOverflowError( -256 << intExpr(56)) or 4239 not raisesOverflowError( -9 << intExpr(60)) or 4240 not raisesOverflowError( -8 << intExpr(61)) or 4241 not raisesOverflowError( -5 << intExpr(61)) or 4242 not raisesOverflowError( -4 << intExpr(62)) or 4243 not raisesOverflowError( -3 << intExpr(62)) or 4244 not raisesOverflowError( -2 << intExpr(63)) or 4245 not raisesOverflowError( -1 << intExpr(64)) or 4246 not raisesOverflowError( 0 << intExpr(64)) or 4247 not raisesOverflowError( 1 << intExpr(63)) or 4248 not raisesOverflowError( 2 << intExpr(62)) or 4249 not raisesOverflowError( 3 << intExpr(62)) or 4250 not raisesOverflowError( 4 << intExpr(61)) or 4251 not raisesOverflowError( 7 << intExpr(61)) or 4252 not raisesOverflowError( 8 << intExpr(60)) or 4253 not raisesOverflowError( 255 << intExpr(56)) or 4254 not raisesOverflowError( 256 << intExpr(55)) or 4255 not raisesOverflowError( 8191 << intExpr(51)) or 4256 not raisesOverflowError( 8192 << intExpr(50)) or 4257 not raisesOverflowError( 262143 << intExpr(46)) or 4258 not raisesOverflowError( 262144 << intExpr(45)) or 4259 not raisesOverflowError( 8388607 << intExpr(41)) or 4260 not raisesOverflowError( 8388608 << intExpr(40)) or 4261 not raisesOverflowError( 268435455 << intExpr(36)) or 4262 not raisesOverflowError( 268435456 << intExpr(35)) or 4263 not raisesOverflowError( 8589934591 << intExpr(31)) or 4264 not raisesOverflowError( 8589934592 << intExpr(30)) or 4265 not raisesOverflowError( 274877906943 << intExpr(26)) or 4266 not raisesOverflowError( 274877906944 << intExpr(25)) or 4267 not raisesOverflowError( 8796093022207 << intExpr(21)) or 4268 not raisesOverflowError( 8796093022208 << intExpr(20)) or 4269 not raisesOverflowError( 281474976710655 << intExpr(16)) or 4270 not raisesOverflowError( 281474976710656 << intExpr(15)) or 4271 not raisesOverflowError( 9007199254740991 << intExpr(11)) or 4272 not raisesOverflowError( 9007199254740992 << intExpr(10)) or 4273 not raisesOverflowError( 288230376151711743 << intExpr( 6)) or 4274 not raisesOverflowError( 288230376151711744 << intExpr( 5)) or 4275 not raisesOverflowError( 576460752303423487 << intExpr( 5)) or 4276 not raisesOverflowError( 576460752303423488 << intExpr( 4)) or 4277 not raisesOverflowError( 1152921504606846975 << intExpr( 4)) or 4278 not raisesOverflowError( 1152921504606846976 << intExpr( 3)) or 4279 not raisesOverflowError( 2305843009213693951 << intExpr( 3)) or 4280 not raisesOverflowError( 2305843009213693952 << intExpr( 2)) or 4281 not raisesOverflowError( 4611686018427387903 << intExpr( 2)) or 4282 not raisesOverflowError( 4611686018427387904 << intExpr( 1)) or 4283 not raisesOverflowError(intExpr( INT64_MIN) << intExpr( 1)) or 4284 not raisesOverflowError(intExpr(-4611686018427387905) << intExpr( 1)) or 4285 not raisesOverflowError(intExpr(-4611686018427387904) << intExpr( 2)) or 4286 not raisesOverflowError(intExpr(-2305843009213693953) << intExpr( 2)) or 4287 not raisesOverflowError(intExpr(-2305843009213693952) << intExpr( 3)) or 4288 not raisesOverflowError(intExpr(-1152921504606846977) << intExpr( 3)) or 4289 not raisesOverflowError(intExpr( -576460752303423489) << intExpr( 4)) or 4290 not raisesOverflowError(intExpr( -576460752303423488) << intExpr( 5)) or 4291 not raisesOverflowError(intExpr( -288230376151711745) << intExpr( 5)) or 4292 not raisesOverflowError(intExpr( -288230376151711744) << intExpr( 6)) or 4293 not raisesOverflowError(intExpr( -9007199254740993) << intExpr(10)) or 4294 not raisesOverflowError(intExpr( -9007199254740992) << intExpr(11)) or 4295 not raisesOverflowError(intExpr( -281474976710657) << intExpr(15)) or 4296 not raisesOverflowError(intExpr( -281474976710656) << intExpr(16)) or 4297 not raisesOverflowError(intExpr( -8796093022209) << intExpr(20)) or 4298 not raisesOverflowError(intExpr( -8796093022208) << intExpr(21)) or 4299 not raisesOverflowError(intExpr( -274877906945) << intExpr(25)) or 4300 not raisesOverflowError(intExpr( -274877906944) << intExpr(26)) or 4301 not raisesOverflowError(intExpr( -8589934593) << intExpr(30)) or 4302 not raisesOverflowError(intExpr( -8589934592) << intExpr(31)) or 4303 not raisesOverflowError(intExpr( -268435457) << intExpr(35)) or 4304 not raisesOverflowError(intExpr( -268435456) << intExpr(36)) or 4305 not raisesOverflowError(intExpr( -8388609) << intExpr(40)) or 4306 not raisesOverflowError(intExpr( -8388608) << intExpr(41)) or 4307 not raisesOverflowError(intExpr( -262145) << intExpr(45)) or 4308 not raisesOverflowError(intExpr( -262144) << intExpr(46)) or 4309 not raisesOverflowError(intExpr( -8193) << intExpr(50)) or 4310 not raisesOverflowError(intExpr( -8192) << intExpr(51)) or 4311 not raisesOverflowError(intExpr( -257) << intExpr(55)) or 4312 not raisesOverflowError(intExpr( -256) << intExpr(56)) or 4313 not raisesOverflowError(intExpr( -9) << intExpr(60)) or 4314 not raisesOverflowError(intExpr( -8) << intExpr(61)) or 4315 not raisesOverflowError(intExpr( -5) << intExpr(61)) or 4316 not raisesOverflowError(intExpr( -4) << intExpr(62)) or 4317 not raisesOverflowError(intExpr( -3) << intExpr(62)) or 4318 not raisesOverflowError(intExpr( -2) << intExpr(63)) or 4319 not raisesOverflowError(intExpr( -1) << intExpr(64)) or 4320 not raisesOverflowError(intExpr( 0) << intExpr(64)) or 4321 not raisesOverflowError(intExpr( 1) << intExpr(63)) or 4322 not raisesOverflowError(intExpr( 2) << intExpr(62)) or 4323 not raisesOverflowError(intExpr( 3) << intExpr(62)) or 4324 not raisesOverflowError(intExpr( 4) << intExpr(61)) or 4325 not raisesOverflowError(intExpr( 7) << intExpr(61)) or 4326 not raisesOverflowError(intExpr( 8) << intExpr(60)) or 4327 not raisesOverflowError(intExpr( 255) << intExpr(56)) or 4328 not raisesOverflowError(intExpr( 256) << intExpr(55)) or 4329 not raisesOverflowError(intExpr( 8191) << intExpr(51)) or 4330 not raisesOverflowError(intExpr( 8192) << intExpr(50)) or 4331 not raisesOverflowError(intExpr( 262143) << intExpr(46)) or 4332 not raisesOverflowError(intExpr( 262144) << intExpr(45)) or 4333 not raisesOverflowError(intExpr( 8388607) << intExpr(41)) or 4334 not raisesOverflowError(intExpr( 8388608) << intExpr(40)) or 4335 not raisesOverflowError(intExpr( 268435455) << intExpr(36)) or 4336 not raisesOverflowError(intExpr( 268435456) << intExpr(35)) or 4337 not raisesOverflowError(intExpr( 8589934591) << intExpr(31)) or 4338 not raisesOverflowError(intExpr( 8589934592) << intExpr(30)) or 4339 not raisesOverflowError(intExpr( 274877906943) << intExpr(26)) or 4340 not raisesOverflowError(intExpr( 274877906944) << intExpr(25)) or 4341 not raisesOverflowError(intExpr( 8796093022207) << intExpr(21)) or 4342 not raisesOverflowError(intExpr( 8796093022208) << intExpr(20)) or 4343 not raisesOverflowError(intExpr( 281474976710655) << intExpr(16)) or 4344 not raisesOverflowError(intExpr( 281474976710656) << intExpr(15)) or 4345 not raisesOverflowError(intExpr( 9007199254740991) << intExpr(11)) or 4346 not raisesOverflowError(intExpr( 9007199254740992) << intExpr(10)) or 4347 not raisesOverflowError(intExpr( 288230376151711743) << intExpr( 6)) or 4348 not raisesOverflowError(intExpr( 288230376151711744) << intExpr( 5)) or 4349 not raisesOverflowError(intExpr( 576460752303423487) << intExpr( 5)) or 4350 not raisesOverflowError(intExpr( 576460752303423488) << intExpr( 4)) or 4351 not raisesOverflowError(intExpr( 1152921504606846975) << intExpr( 4)) or 4352 not raisesOverflowError(intExpr( 1152921504606846976) << intExpr( 3)) or 4353 not raisesOverflowError(intExpr( 2305843009213693951) << intExpr( 3)) or 4354 not raisesOverflowError(intExpr( 2305843009213693952) << intExpr( 2)) or 4355 not raisesOverflowError(intExpr( 4611686018427387903) << intExpr( 2)) or 4356 not raisesOverflowError(intExpr( 4611686018427387904) << intExpr( 1)) then 4357 writeln(" ***** Overflow when computing left shift does not raise OVERFLOW_ERROR."); 4358 okay := FALSE; 4359 end if; 4360 4361 if not raisesOverflowError(-16111 << integer.first) or 4362 not raisesOverflowError(-16111 << -999) or 4363 not raisesOverflowError(-16111 << -63) or 4364 not raisesOverflowError(-16111 << -1) or 4365 not raisesOverflowError(-16111 << 64) or 4366 not raisesOverflowError(-16111 << 999) or 4367 not raisesOverflowError(-16111 << integer.last) or 4368 not raisesOverflowError( -1 << integer.first) or 4369 not raisesOverflowError( -1 << -999) or 4370 not raisesOverflowError( -1 << -63) or 4371 not raisesOverflowError( -1 << -1) or 4372 not raisesOverflowError( -1 << 64) or 4373 not raisesOverflowError( -1 << 999) or 4374 not raisesOverflowError( -1 << integer.last) or 4375 not raisesOverflowError( 0 << integer.first) or 4376 not raisesOverflowError( 0 << -999) or 4377 not raisesOverflowError( 0 << -63) or 4378 not raisesOverflowError( 0 << -1) or 4379 not raisesOverflowError( 0 << 64) or 4380 not raisesOverflowError( 0 << 999) or 4381 not raisesOverflowError( 0 << integer.last) or 4382 not raisesOverflowError( 16111 << integer.first) or 4383 not raisesOverflowError( 16111 << -999) or 4384 not raisesOverflowError( 16111 << -63) or 4385 not raisesOverflowError( 16111 << -1) or 4386 not raisesOverflowError( 16111 << 64) or 4387 not raisesOverflowError( 16111 << 999) or 4388 not raisesOverflowError( 16111 << integer.last) or 4389 not raisesOverflowError(intExpr(-16111) << integer.first) or 4390 not raisesOverflowError(intExpr(-16111) << -999) or 4391 not raisesOverflowError(intExpr(-16111) << -63) or 4392 not raisesOverflowError(intExpr(-16111) << -1) or 4393 not raisesOverflowError(intExpr(-16111) << 64) or 4394 not raisesOverflowError(intExpr(-16111) << 999) or 4395 not raisesOverflowError(intExpr(-16111) << integer.last) or 4396 not raisesOverflowError(intExpr( -1) << integer.first) or 4397 not raisesOverflowError(intExpr( -1) << -999) or 4398 not raisesOverflowError(intExpr( -1) << -63) or 4399 not raisesOverflowError(intExpr( -1) << -1) or 4400 not raisesOverflowError(intExpr( -1) << 64) or 4401 not raisesOverflowError(intExpr( -1) << 999) or 4402 not raisesOverflowError(intExpr( -1) << integer.last) or 4403 not raisesOverflowError(intExpr( 0) << integer.first) or 4404 not raisesOverflowError(intExpr( 0) << -999) or 4405 not raisesOverflowError(intExpr( 0) << -63) or 4406 not raisesOverflowError(intExpr( 0) << -1) or 4407 not raisesOverflowError(intExpr( 0) << 64) or 4408 not raisesOverflowError(intExpr( 0) << 999) or 4409 not raisesOverflowError(intExpr( 0) << integer.last) or 4410 not raisesOverflowError(intExpr( 16111) << integer.first) or 4411 not raisesOverflowError(intExpr( 16111) << -999) or 4412 not raisesOverflowError(intExpr( 16111) << -63) or 4413 not raisesOverflowError(intExpr( 16111) << -1) or 4414 not raisesOverflowError(intExpr( 16111) << 64) or 4415 not raisesOverflowError(intExpr( 16111) << 999) or 4416 not raisesOverflowError(intExpr( 16111) << integer.last) or 4417 not raisesOverflowError(-16111 << intExpr(integer.first)) or 4418 not raisesOverflowError(-16111 << intExpr( -999)) or 4419 not raisesOverflowError(-16111 << intExpr( -63)) or 4420 not raisesOverflowError(-16111 << intExpr( -1)) or 4421 not raisesOverflowError(-16111 << intExpr( 64)) or 4422 not raisesOverflowError(-16111 << intExpr( 999)) or 4423 not raisesOverflowError(-16111 << intExpr( integer.last)) or 4424 not raisesOverflowError( -1 << intExpr(integer.first)) or 4425 not raisesOverflowError( -1 << intExpr( -999)) or 4426 not raisesOverflowError( -1 << intExpr( -63)) or 4427 not raisesOverflowError( -1 << intExpr( -1)) or 4428 not raisesOverflowError( -1 << intExpr( 64)) or 4429 not raisesOverflowError( -1 << intExpr( 999)) or 4430 not raisesOverflowError( -1 << intExpr( integer.last)) or 4431 not raisesOverflowError( 0 << intExpr(integer.first)) or 4432 not raisesOverflowError( 0 << intExpr( -999)) or 4433 not raisesOverflowError( 0 << intExpr( -63)) or 4434 not raisesOverflowError( 0 << intExpr( -1)) or 4435 not raisesOverflowError( 0 << intExpr( 64)) or 4436 not raisesOverflowError( 0 << intExpr( 999)) or 4437 not raisesOverflowError( 0 << intExpr( integer.last)) or 4438 not raisesOverflowError( 16111 << intExpr(integer.first)) or 4439 not raisesOverflowError( 16111 << intExpr( -999)) or 4440 not raisesOverflowError( 16111 << intExpr( -63)) or 4441 not raisesOverflowError( 16111 << intExpr( -1)) or 4442 not raisesOverflowError( 16111 << intExpr( 64)) or 4443 not raisesOverflowError( 16111 << intExpr( 999)) or 4444 not raisesOverflowError( 16111 << intExpr( integer.last)) or 4445 not raisesOverflowError(intExpr(-16111) << intExpr(integer.first)) or 4446 not raisesOverflowError(intExpr(-16111) << intExpr( -999)) or 4447 not raisesOverflowError(intExpr(-16111) << intExpr( -63)) or 4448 not raisesOverflowError(intExpr(-16111) << intExpr( -1)) or 4449 not raisesOverflowError(intExpr(-16111) << intExpr( 64)) or 4450 not raisesOverflowError(intExpr(-16111) << intExpr( 999)) or 4451 not raisesOverflowError(intExpr(-16111) << intExpr( integer.last)) or 4452 not raisesOverflowError(intExpr( -1) << intExpr(integer.first)) or 4453 not raisesOverflowError(intExpr( -1) << intExpr( -999)) or 4454 not raisesOverflowError(intExpr( -1) << intExpr( -63)) or 4455 not raisesOverflowError(intExpr( -1) << intExpr( -1)) or 4456 not raisesOverflowError(intExpr( -1) << intExpr( 64)) or 4457 not raisesOverflowError(intExpr( -1) << intExpr( 999)) or 4458 not raisesOverflowError(intExpr( -1) << intExpr( integer.last)) or 4459 not raisesOverflowError(intExpr( 0) << intExpr(integer.first)) or 4460 not raisesOverflowError(intExpr( 0) << intExpr( -999)) or 4461 not raisesOverflowError(intExpr( 0) << intExpr( -63)) or 4462 not raisesOverflowError(intExpr( 0) << intExpr( -1)) or 4463 not raisesOverflowError(intExpr( 0) << intExpr( 64)) or 4464 not raisesOverflowError(intExpr( 0) << intExpr( 999)) or 4465 not raisesOverflowError(intExpr( 0) << intExpr( integer.last)) or 4466 not raisesOverflowError(intExpr( 16111) << intExpr(integer.first)) or 4467 not raisesOverflowError(intExpr( 16111) << intExpr( -999)) or 4468 not raisesOverflowError(intExpr( 16111) << intExpr( -63)) or 4469 not raisesOverflowError(intExpr( 16111) << intExpr( -1)) or 4470 not raisesOverflowError(intExpr( 16111) << intExpr( 64)) or 4471 not raisesOverflowError(intExpr( 16111) << intExpr( 999)) or 4472 not raisesOverflowError(intExpr( 16111) << intExpr( integer.last)) then 4473 writeln(" ***** Left shift with illegal shift count does not raise OVERFLOW_ERROR."); 4474 okay := FALSE; 4475 end if; 4476 4477 if not check_reduced_overflow_checking_for_lshift then 4478 okay := FALSE; 4479 end if; 4480 4481 if okay then 4482 writeln("Overflow checking of left shift works correct."); 4483 else 4484 writeln(" ***** Overflow checking of left shift does not work correct."); 4485 end if; 4486 end func; 4487 4488 4489const proc: check_lShift_assign is func 4490 local 4491 var boolean: okay is TRUE; 4492 var boolean: ok is TRUE; 4493 var integer: num is 0; 4494 var array integer: arr is [] (0); 4495 begin 4496 num := INT64_MIN; ok := ok and raisesOverflowError(num <<:= 1); 4497 num := -4611686018427387905; ok := ok and raisesOverflowError(num <<:= 1); 4498 num := -4611686018427387904; ok := ok and raisesOverflowError(num <<:= 2); 4499 num := -2305843009213693953; ok := ok and raisesOverflowError(num <<:= 2); 4500 num := -2305843009213693952; ok := ok and raisesOverflowError(num <<:= 3); 4501 num := -1152921504606846977; ok := ok and raisesOverflowError(num <<:= 3); 4502 num := -576460752303423489; ok := ok and raisesOverflowError(num <<:= 4); 4503 num := -576460752303423488; ok := ok and raisesOverflowError(num <<:= 5); 4504 num := -288230376151711745; ok := ok and raisesOverflowError(num <<:= 5); 4505 num := -288230376151711744; ok := ok and raisesOverflowError(num <<:= 6); 4506 num := -9007199254740993; ok := ok and raisesOverflowError(num <<:= 10); 4507 num := -9007199254740992; ok := ok and raisesOverflowError(num <<:= 11); 4508 num := -281474976710657; ok := ok and raisesOverflowError(num <<:= 15); 4509 num := -281474976710656; ok := ok and raisesOverflowError(num <<:= 16); 4510 num := -8796093022209; ok := ok and raisesOverflowError(num <<:= 20); 4511 num := -8796093022208; ok := ok and raisesOverflowError(num <<:= 21); 4512 num := -274877906945; ok := ok and raisesOverflowError(num <<:= 25); 4513 num := -274877906944; ok := ok and raisesOverflowError(num <<:= 26); 4514 num := -8589934593; ok := ok and raisesOverflowError(num <<:= 30); 4515 num := -8589934592; ok := ok and raisesOverflowError(num <<:= 31); 4516 num := -268435457; ok := ok and raisesOverflowError(num <<:= 35); 4517 num := -268435456; ok := ok and raisesOverflowError(num <<:= 36); 4518 num := -8388609; ok := ok and raisesOverflowError(num <<:= 40); 4519 num := -8388608; ok := ok and raisesOverflowError(num <<:= 41); 4520 num := -262145; ok := ok and raisesOverflowError(num <<:= 45); 4521 num := -262144; ok := ok and raisesOverflowError(num <<:= 46); 4522 num := -8193; ok := ok and raisesOverflowError(num <<:= 50); 4523 num := -8192; ok := ok and raisesOverflowError(num <<:= 51); 4524 num := -257; ok := ok and raisesOverflowError(num <<:= 55); 4525 num := -256; ok := ok and raisesOverflowError(num <<:= 56); 4526 num := -9; ok := ok and raisesOverflowError(num <<:= 60); 4527 num := -8; ok := ok and raisesOverflowError(num <<:= 61); 4528 num := -5; ok := ok and raisesOverflowError(num <<:= 61); 4529 num := -4; ok := ok and raisesOverflowError(num <<:= 62); 4530 num := -3; ok := ok and raisesOverflowError(num <<:= 62); 4531 num := -2; ok := ok and raisesOverflowError(num <<:= 63); 4532 num := -1; ok := ok and raisesOverflowError(num <<:= 64); 4533 num := 0; ok := ok and raisesOverflowError(num <<:= 64); 4534 num := 1; ok := ok and raisesOverflowError(num <<:= 63); 4535 num := 2; ok := ok and raisesOverflowError(num <<:= 62); 4536 num := 3; ok := ok and raisesOverflowError(num <<:= 62); 4537 num := 4; ok := ok and raisesOverflowError(num <<:= 61); 4538 num := 7; ok := ok and raisesOverflowError(num <<:= 61); 4539 num := 8; ok := ok and raisesOverflowError(num <<:= 60); 4540 num := 255; ok := ok and raisesOverflowError(num <<:= 56); 4541 num := 256; ok := ok and raisesOverflowError(num <<:= 55); 4542 num := 8191; ok := ok and raisesOverflowError(num <<:= 51); 4543 num := 8192; ok := ok and raisesOverflowError(num <<:= 50); 4544 num := 262143; ok := ok and raisesOverflowError(num <<:= 46); 4545 num := 262144; ok := ok and raisesOverflowError(num <<:= 45); 4546 num := 8388607; ok := ok and raisesOverflowError(num <<:= 41); 4547 num := 8388608; ok := ok and raisesOverflowError(num <<:= 40); 4548 num := 268435455; ok := ok and raisesOverflowError(num <<:= 36); 4549 num := 268435456; ok := ok and raisesOverflowError(num <<:= 35); 4550 num := 8589934591; ok := ok and raisesOverflowError(num <<:= 31); 4551 num := 8589934592; ok := ok and raisesOverflowError(num <<:= 30); 4552 num := 274877906943; ok := ok and raisesOverflowError(num <<:= 26); 4553 num := 274877906944; ok := ok and raisesOverflowError(num <<:= 25); 4554 num := 8796093022207; ok := ok and raisesOverflowError(num <<:= 21); 4555 num := 8796093022208; ok := ok and raisesOverflowError(num <<:= 20); 4556 num := 281474976710655; ok := ok and raisesOverflowError(num <<:= 16); 4557 num := 281474976710656; ok := ok and raisesOverflowError(num <<:= 15); 4558 num := 9007199254740991; ok := ok and raisesOverflowError(num <<:= 11); 4559 num := 9007199254740992; ok := ok and raisesOverflowError(num <<:= 10); 4560 num := 288230376151711743; ok := ok and raisesOverflowError(num <<:= 6); 4561 num := 288230376151711744; ok := ok and raisesOverflowError(num <<:= 5); 4562 num := 576460752303423487; ok := ok and raisesOverflowError(num <<:= 5); 4563 num := 576460752303423488; ok := ok and raisesOverflowError(num <<:= 4); 4564 num := 1152921504606846975; ok := ok and raisesOverflowError(num <<:= 4); 4565 num := 1152921504606846976; ok := ok and raisesOverflowError(num <<:= 3); 4566 num := 2305843009213693951; ok := ok and raisesOverflowError(num <<:= 3); 4567 num := 2305843009213693952; ok := ok and raisesOverflowError(num <<:= 2); 4568 num := 4611686018427387903; ok := ok and raisesOverflowError(num <<:= 2); 4569 num := 4611686018427387904; ok := ok and raisesOverflowError(num <<:= 1); 4570 num := INT64_MIN; ok := ok and raisesOverflowError(num <<:= intExpr( 1)); 4571 num := -4611686018427387905; ok := ok and raisesOverflowError(num <<:= intExpr( 1)); 4572 num := -4611686018427387904; ok := ok and raisesOverflowError(num <<:= intExpr( 2)); 4573 num := -2305843009213693953; ok := ok and raisesOverflowError(num <<:= intExpr( 2)); 4574 num := -2305843009213693952; ok := ok and raisesOverflowError(num <<:= intExpr( 3)); 4575 num := -1152921504606846977; ok := ok and raisesOverflowError(num <<:= intExpr( 3)); 4576 num := -576460752303423489; ok := ok and raisesOverflowError(num <<:= intExpr( 4)); 4577 num := -576460752303423488; ok := ok and raisesOverflowError(num <<:= intExpr( 5)); 4578 num := -288230376151711745; ok := ok and raisesOverflowError(num <<:= intExpr( 5)); 4579 num := -288230376151711744; ok := ok and raisesOverflowError(num <<:= intExpr( 6)); 4580 num := -9007199254740993; ok := ok and raisesOverflowError(num <<:= intExpr(10)); 4581 num := -9007199254740992; ok := ok and raisesOverflowError(num <<:= intExpr(11)); 4582 num := -281474976710657; ok := ok and raisesOverflowError(num <<:= intExpr(15)); 4583 num := -281474976710656; ok := ok and raisesOverflowError(num <<:= intExpr(16)); 4584 num := -8796093022209; ok := ok and raisesOverflowError(num <<:= intExpr(20)); 4585 num := -8796093022208; ok := ok and raisesOverflowError(num <<:= intExpr(21)); 4586 num := -274877906945; ok := ok and raisesOverflowError(num <<:= intExpr(25)); 4587 num := -274877906944; ok := ok and raisesOverflowError(num <<:= intExpr(26)); 4588 num := -8589934593; ok := ok and raisesOverflowError(num <<:= intExpr(30)); 4589 num := -8589934592; ok := ok and raisesOverflowError(num <<:= intExpr(31)); 4590 num := -268435457; ok := ok and raisesOverflowError(num <<:= intExpr(35)); 4591 num := -268435456; ok := ok and raisesOverflowError(num <<:= intExpr(36)); 4592 num := -8388609; ok := ok and raisesOverflowError(num <<:= intExpr(40)); 4593 num := -8388608; ok := ok and raisesOverflowError(num <<:= intExpr(41)); 4594 num := -262145; ok := ok and raisesOverflowError(num <<:= intExpr(45)); 4595 num := -262144; ok := ok and raisesOverflowError(num <<:= intExpr(46)); 4596 num := -8193; ok := ok and raisesOverflowError(num <<:= intExpr(50)); 4597 num := -8192; ok := ok and raisesOverflowError(num <<:= intExpr(51)); 4598 num := -257; ok := ok and raisesOverflowError(num <<:= intExpr(55)); 4599 num := -256; ok := ok and raisesOverflowError(num <<:= intExpr(56)); 4600 num := -9; ok := ok and raisesOverflowError(num <<:= intExpr(60)); 4601 num := -8; ok := ok and raisesOverflowError(num <<:= intExpr(61)); 4602 num := -5; ok := ok and raisesOverflowError(num <<:= intExpr(61)); 4603 num := -4; ok := ok and raisesOverflowError(num <<:= intExpr(62)); 4604 num := -3; ok := ok and raisesOverflowError(num <<:= intExpr(62)); 4605 num := -2; ok := ok and raisesOverflowError(num <<:= intExpr(63)); 4606 num := -1; ok := ok and raisesOverflowError(num <<:= intExpr(64)); 4607 num := 0; ok := ok and raisesOverflowError(num <<:= intExpr(64)); 4608 num := 1; ok := ok and raisesOverflowError(num <<:= intExpr(63)); 4609 num := 2; ok := ok and raisesOverflowError(num <<:= intExpr(62)); 4610 num := 3; ok := ok and raisesOverflowError(num <<:= intExpr(62)); 4611 num := 4; ok := ok and raisesOverflowError(num <<:= intExpr(61)); 4612 num := 7; ok := ok and raisesOverflowError(num <<:= intExpr(61)); 4613 num := 8; ok := ok and raisesOverflowError(num <<:= intExpr(60)); 4614 num := 255; ok := ok and raisesOverflowError(num <<:= intExpr(56)); 4615 num := 256; ok := ok and raisesOverflowError(num <<:= intExpr(55)); 4616 num := 8191; ok := ok and raisesOverflowError(num <<:= intExpr(51)); 4617 num := 8192; ok := ok and raisesOverflowError(num <<:= intExpr(50)); 4618 num := 262143; ok := ok and raisesOverflowError(num <<:= intExpr(46)); 4619 num := 262144; ok := ok and raisesOverflowError(num <<:= intExpr(45)); 4620 num := 8388607; ok := ok and raisesOverflowError(num <<:= intExpr(41)); 4621 num := 8388608; ok := ok and raisesOverflowError(num <<:= intExpr(40)); 4622 num := 268435455; ok := ok and raisesOverflowError(num <<:= intExpr(36)); 4623 num := 268435456; ok := ok and raisesOverflowError(num <<:= intExpr(35)); 4624 num := 8589934591; ok := ok and raisesOverflowError(num <<:= intExpr(31)); 4625 num := 8589934592; ok := ok and raisesOverflowError(num <<:= intExpr(30)); 4626 num := 274877906943; ok := ok and raisesOverflowError(num <<:= intExpr(26)); 4627 num := 274877906944; ok := ok and raisesOverflowError(num <<:= intExpr(25)); 4628 num := 8796093022207; ok := ok and raisesOverflowError(num <<:= intExpr(21)); 4629 num := 8796093022208; ok := ok and raisesOverflowError(num <<:= intExpr(20)); 4630 num := 281474976710655; ok := ok and raisesOverflowError(num <<:= intExpr(16)); 4631 num := 281474976710656; ok := ok and raisesOverflowError(num <<:= intExpr(15)); 4632 num := 9007199254740991; ok := ok and raisesOverflowError(num <<:= intExpr(11)); 4633 num := 9007199254740992; ok := ok and raisesOverflowError(num <<:= intExpr(10)); 4634 num := 288230376151711743; ok := ok and raisesOverflowError(num <<:= intExpr( 6)); 4635 num := 288230376151711744; ok := ok and raisesOverflowError(num <<:= intExpr( 5)); 4636 num := 576460752303423487; ok := ok and raisesOverflowError(num <<:= intExpr( 5)); 4637 num := 576460752303423488; ok := ok and raisesOverflowError(num <<:= intExpr( 4)); 4638 num := 1152921504606846975; ok := ok and raisesOverflowError(num <<:= intExpr( 4)); 4639 num := 1152921504606846976; ok := ok and raisesOverflowError(num <<:= intExpr( 3)); 4640 num := 2305843009213693951; ok := ok and raisesOverflowError(num <<:= intExpr( 3)); 4641 num := 2305843009213693952; ok := ok and raisesOverflowError(num <<:= intExpr( 2)); 4642 num := 4611686018427387903; ok := ok and raisesOverflowError(num <<:= intExpr( 2)); 4643 num := 4611686018427387904; ok := ok and raisesOverflowError(num <<:= intExpr( 1)); 4644 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] <<:= 1); 4645 arr[1] := -4611686018427387905; ok := ok and raisesOverflowError(arr[1] <<:= 1); 4646 arr[1] := -4611686018427387904; ok := ok and raisesOverflowError(arr[1] <<:= 2); 4647 arr[1] := -2305843009213693953; ok := ok and raisesOverflowError(arr[1] <<:= 2); 4648 arr[1] := -2305843009213693952; ok := ok and raisesOverflowError(arr[1] <<:= 3); 4649 arr[1] := -1152921504606846977; ok := ok and raisesOverflowError(arr[1] <<:= 3); 4650 arr[1] := -576460752303423489; ok := ok and raisesOverflowError(arr[1] <<:= 4); 4651 arr[1] := -576460752303423488; ok := ok and raisesOverflowError(arr[1] <<:= 5); 4652 arr[1] := -288230376151711745; ok := ok and raisesOverflowError(arr[1] <<:= 5); 4653 arr[1] := -288230376151711744; ok := ok and raisesOverflowError(arr[1] <<:= 6); 4654 arr[1] := -9007199254740993; ok := ok and raisesOverflowError(arr[1] <<:= 10); 4655 arr[1] := -9007199254740992; ok := ok and raisesOverflowError(arr[1] <<:= 11); 4656 arr[1] := -281474976710657; ok := ok and raisesOverflowError(arr[1] <<:= 15); 4657 arr[1] := -281474976710656; ok := ok and raisesOverflowError(arr[1] <<:= 16); 4658 arr[1] := -8796093022209; ok := ok and raisesOverflowError(arr[1] <<:= 20); 4659 arr[1] := -8796093022208; ok := ok and raisesOverflowError(arr[1] <<:= 21); 4660 arr[1] := -274877906945; ok := ok and raisesOverflowError(arr[1] <<:= 25); 4661 arr[1] := -274877906944; ok := ok and raisesOverflowError(arr[1] <<:= 26); 4662 arr[1] := -8589934593; ok := ok and raisesOverflowError(arr[1] <<:= 30); 4663 arr[1] := -8589934592; ok := ok and raisesOverflowError(arr[1] <<:= 31); 4664 arr[1] := -268435457; ok := ok and raisesOverflowError(arr[1] <<:= 35); 4665 arr[1] := -268435456; ok := ok and raisesOverflowError(arr[1] <<:= 36); 4666 arr[1] := -8388609; ok := ok and raisesOverflowError(arr[1] <<:= 40); 4667 arr[1] := -8388608; ok := ok and raisesOverflowError(arr[1] <<:= 41); 4668 arr[1] := -262145; ok := ok and raisesOverflowError(arr[1] <<:= 45); 4669 arr[1] := -262144; ok := ok and raisesOverflowError(arr[1] <<:= 46); 4670 arr[1] := -8193; ok := ok and raisesOverflowError(arr[1] <<:= 50); 4671 arr[1] := -8192; ok := ok and raisesOverflowError(arr[1] <<:= 51); 4672 arr[1] := -257; ok := ok and raisesOverflowError(arr[1] <<:= 55); 4673 arr[1] := -256; ok := ok and raisesOverflowError(arr[1] <<:= 56); 4674 arr[1] := -9; ok := ok and raisesOverflowError(arr[1] <<:= 60); 4675 arr[1] := -8; ok := ok and raisesOverflowError(arr[1] <<:= 61); 4676 arr[1] := -5; ok := ok and raisesOverflowError(arr[1] <<:= 61); 4677 arr[1] := -4; ok := ok and raisesOverflowError(arr[1] <<:= 62); 4678 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] <<:= 62); 4679 arr[1] := -2; ok := ok and raisesOverflowError(arr[1] <<:= 63); 4680 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] <<:= 64); 4681 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] <<:= 64); 4682 arr[1] := 1; ok := ok and raisesOverflowError(arr[1] <<:= 63); 4683 arr[1] := 2; ok := ok and raisesOverflowError(arr[1] <<:= 62); 4684 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] <<:= 62); 4685 arr[1] := 4; ok := ok and raisesOverflowError(arr[1] <<:= 61); 4686 arr[1] := 7; ok := ok and raisesOverflowError(arr[1] <<:= 61); 4687 arr[1] := 8; ok := ok and raisesOverflowError(arr[1] <<:= 60); 4688 arr[1] := 255; ok := ok and raisesOverflowError(arr[1] <<:= 56); 4689 arr[1] := 256; ok := ok and raisesOverflowError(arr[1] <<:= 55); 4690 arr[1] := 8191; ok := ok and raisesOverflowError(arr[1] <<:= 51); 4691 arr[1] := 8192; ok := ok and raisesOverflowError(arr[1] <<:= 50); 4692 arr[1] := 262143; ok := ok and raisesOverflowError(arr[1] <<:= 46); 4693 arr[1] := 262144; ok := ok and raisesOverflowError(arr[1] <<:= 45); 4694 arr[1] := 8388607; ok := ok and raisesOverflowError(arr[1] <<:= 41); 4695 arr[1] := 8388608; ok := ok and raisesOverflowError(arr[1] <<:= 40); 4696 arr[1] := 268435455; ok := ok and raisesOverflowError(arr[1] <<:= 36); 4697 arr[1] := 268435456; ok := ok and raisesOverflowError(arr[1] <<:= 35); 4698 arr[1] := 8589934591; ok := ok and raisesOverflowError(arr[1] <<:= 31); 4699 arr[1] := 8589934592; ok := ok and raisesOverflowError(arr[1] <<:= 30); 4700 arr[1] := 274877906943; ok := ok and raisesOverflowError(arr[1] <<:= 26); 4701 arr[1] := 274877906944; ok := ok and raisesOverflowError(arr[1] <<:= 25); 4702 arr[1] := 8796093022207; ok := ok and raisesOverflowError(arr[1] <<:= 21); 4703 arr[1] := 8796093022208; ok := ok and raisesOverflowError(arr[1] <<:= 20); 4704 arr[1] := 281474976710655; ok := ok and raisesOverflowError(arr[1] <<:= 16); 4705 arr[1] := 281474976710656; ok := ok and raisesOverflowError(arr[1] <<:= 15); 4706 arr[1] := 9007199254740991; ok := ok and raisesOverflowError(arr[1] <<:= 11); 4707 arr[1] := 9007199254740992; ok := ok and raisesOverflowError(arr[1] <<:= 10); 4708 arr[1] := 288230376151711743; ok := ok and raisesOverflowError(arr[1] <<:= 6); 4709 arr[1] := 288230376151711744; ok := ok and raisesOverflowError(arr[1] <<:= 5); 4710 arr[1] := 576460752303423487; ok := ok and raisesOverflowError(arr[1] <<:= 5); 4711 arr[1] := 576460752303423488; ok := ok and raisesOverflowError(arr[1] <<:= 4); 4712 arr[1] := 1152921504606846975; ok := ok and raisesOverflowError(arr[1] <<:= 4); 4713 arr[1] := 1152921504606846976; ok := ok and raisesOverflowError(arr[1] <<:= 3); 4714 arr[1] := 2305843009213693951; ok := ok and raisesOverflowError(arr[1] <<:= 3); 4715 arr[1] := 2305843009213693952; ok := ok and raisesOverflowError(arr[1] <<:= 2); 4716 arr[1] := 4611686018427387903; ok := ok and raisesOverflowError(arr[1] <<:= 2); 4717 arr[1] := 4611686018427387904; ok := ok and raisesOverflowError(arr[1] <<:= 1); 4718 arr[1] := INT64_MIN; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 1)); 4719 arr[1] := -4611686018427387905; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 1)); 4720 arr[1] := -4611686018427387904; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 2)); 4721 arr[1] := -2305843009213693953; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 2)); 4722 arr[1] := -2305843009213693952; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 3)); 4723 arr[1] := -1152921504606846977; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 3)); 4724 arr[1] := -576460752303423489; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 4)); 4725 arr[1] := -576460752303423488; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 5)); 4726 arr[1] := -288230376151711745; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 5)); 4727 arr[1] := -288230376151711744; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 6)); 4728 arr[1] := -9007199254740993; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(10)); 4729 arr[1] := -9007199254740992; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(11)); 4730 arr[1] := -281474976710657; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(15)); 4731 arr[1] := -281474976710656; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(16)); 4732 arr[1] := -8796093022209; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(20)); 4733 arr[1] := -8796093022208; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(21)); 4734 arr[1] := -274877906945; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(25)); 4735 arr[1] := -274877906944; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(26)); 4736 arr[1] := -8589934593; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(30)); 4737 arr[1] := -8589934592; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(31)); 4738 arr[1] := -268435457; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(35)); 4739 arr[1] := -268435456; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(36)); 4740 arr[1] := -8388609; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(40)); 4741 arr[1] := -8388608; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(41)); 4742 arr[1] := -262145; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(45)); 4743 arr[1] := -262144; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(46)); 4744 arr[1] := -8193; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(50)); 4745 arr[1] := -8192; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(51)); 4746 arr[1] := -257; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(55)); 4747 arr[1] := -256; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(56)); 4748 arr[1] := -9; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(60)); 4749 arr[1] := -8; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(61)); 4750 arr[1] := -5; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(61)); 4751 arr[1] := -4; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(62)); 4752 arr[1] := -3; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(62)); 4753 arr[1] := -2; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(63)); 4754 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(64)); 4755 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(64)); 4756 arr[1] := 1; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(63)); 4757 arr[1] := 2; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(62)); 4758 arr[1] := 3; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(62)); 4759 arr[1] := 4; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(61)); 4760 arr[1] := 7; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(61)); 4761 arr[1] := 8; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(60)); 4762 arr[1] := 255; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(56)); 4763 arr[1] := 256; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(55)); 4764 arr[1] := 8191; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(51)); 4765 arr[1] := 8192; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(50)); 4766 arr[1] := 262143; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(46)); 4767 arr[1] := 262144; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(45)); 4768 arr[1] := 8388607; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(41)); 4769 arr[1] := 8388608; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(40)); 4770 arr[1] := 268435455; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(36)); 4771 arr[1] := 268435456; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(35)); 4772 arr[1] := 8589934591; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(31)); 4773 arr[1] := 8589934592; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(30)); 4774 arr[1] := 274877906943; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(26)); 4775 arr[1] := 274877906944; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(25)); 4776 arr[1] := 8796093022207; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(21)); 4777 arr[1] := 8796093022208; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(20)); 4778 arr[1] := 281474976710655; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(16)); 4779 arr[1] := 281474976710656; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(15)); 4780 arr[1] := 9007199254740991; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(11)); 4781 arr[1] := 9007199254740992; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(10)); 4782 arr[1] := 288230376151711743; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 6)); 4783 arr[1] := 288230376151711744; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 5)); 4784 arr[1] := 576460752303423487; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 5)); 4785 arr[1] := 576460752303423488; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 4)); 4786 arr[1] := 1152921504606846975; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 4)); 4787 arr[1] := 1152921504606846976; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 3)); 4788 arr[1] := 2305843009213693951; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 3)); 4789 arr[1] := 2305843009213693952; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 2)); 4790 arr[1] := 4611686018427387903; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 2)); 4791 arr[1] := 4611686018427387904; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 1)); 4792 if not ok then 4793 writeln(" ***** Left shift assignment does not raise OVERFLOW_ERROR."); 4794 okay := FALSE; 4795 end if; 4796 4797 ok := TRUE; 4798 num := -16111; ok := ok and raisesOverflowError(num <<:= -999); 4799 num := -16111; ok := ok and raisesOverflowError(num <<:= -63); 4800 num := -16111; ok := ok and raisesOverflowError(num <<:= -1); 4801 num := -16111; ok := ok and raisesOverflowError(num <<:= 64); 4802 num := -16111; ok := ok and raisesOverflowError(num <<:= 999); 4803 num := -1; ok := ok and raisesOverflowError(num <<:= -999); 4804 num := -1; ok := ok and raisesOverflowError(num <<:= -63); 4805 num := -1; ok := ok and raisesOverflowError(num <<:= -1); 4806 num := -1; ok := ok and raisesOverflowError(num <<:= 64); 4807 num := -1; ok := ok and raisesOverflowError(num <<:= 999); 4808 num := 0; ok := ok and raisesOverflowError(num <<:= -999); 4809 num := 0; ok := ok and raisesOverflowError(num <<:= -63); 4810 num := 0; ok := ok and raisesOverflowError(num <<:= -1); 4811 num := 0; ok := ok and raisesOverflowError(num <<:= 64); 4812 num := 0; ok := ok and raisesOverflowError(num <<:= 999); 4813 num := 16111; ok := ok and raisesOverflowError(num <<:= -999); 4814 num := 16111; ok := ok and raisesOverflowError(num <<:= -63); 4815 num := 16111; ok := ok and raisesOverflowError(num <<:= -1); 4816 num := 16111; ok := ok and raisesOverflowError(num <<:= 64); 4817 num := 16111; ok := ok and raisesOverflowError(num <<:= 999); 4818 num := -16111; ok := ok and raisesOverflowError(num <<:= intExpr(-999)); 4819 num := -16111; ok := ok and raisesOverflowError(num <<:= intExpr( -63)); 4820 num := -16111; ok := ok and raisesOverflowError(num <<:= intExpr( -1)); 4821 num := -16111; ok := ok and raisesOverflowError(num <<:= intExpr( 64)); 4822 num := -16111; ok := ok and raisesOverflowError(num <<:= intExpr( 999)); 4823 num := -1; ok := ok and raisesOverflowError(num <<:= intExpr(-999)); 4824 num := -1; ok := ok and raisesOverflowError(num <<:= intExpr( -63)); 4825 num := -1; ok := ok and raisesOverflowError(num <<:= intExpr( -1)); 4826 num := -1; ok := ok and raisesOverflowError(num <<:= intExpr( 64)); 4827 num := -1; ok := ok and raisesOverflowError(num <<:= intExpr( 999)); 4828 num := 0; ok := ok and raisesOverflowError(num <<:= intExpr(-999)); 4829 num := 0; ok := ok and raisesOverflowError(num <<:= intExpr( -63)); 4830 num := 0; ok := ok and raisesOverflowError(num <<:= intExpr( -1)); 4831 num := 0; ok := ok and raisesOverflowError(num <<:= intExpr( 64)); 4832 num := 0; ok := ok and raisesOverflowError(num <<:= intExpr( 999)); 4833 num := 16111; ok := ok and raisesOverflowError(num <<:= intExpr(-999)); 4834 num := 16111; ok := ok and raisesOverflowError(num <<:= intExpr( -63)); 4835 num := 16111; ok := ok and raisesOverflowError(num <<:= intExpr( -1)); 4836 num := 16111; ok := ok and raisesOverflowError(num <<:= intExpr( 64)); 4837 num := 16111; ok := ok and raisesOverflowError(num <<:= intExpr( 999)); 4838 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] <<:= -999); 4839 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] <<:= -63); 4840 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] <<:= -1); 4841 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] <<:= 64); 4842 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] <<:= 999); 4843 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] <<:= -999); 4844 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] <<:= -63); 4845 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] <<:= -1); 4846 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] <<:= 64); 4847 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] <<:= 999); 4848 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] <<:= -999); 4849 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] <<:= -63); 4850 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] <<:= -1); 4851 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] <<:= 64); 4852 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] <<:= 999); 4853 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] <<:= -999); 4854 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] <<:= -63); 4855 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] <<:= -1); 4856 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] <<:= 64); 4857 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] <<:= 999); 4858 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(-999)); 4859 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -63)); 4860 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -1)); 4861 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 64)); 4862 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 999)); 4863 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(-999)); 4864 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -63)); 4865 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -1)); 4866 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 64)); 4867 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 999)); 4868 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(-999)); 4869 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -63)); 4870 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -1)); 4871 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 64)); 4872 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 999)); 4873 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] <<:= intExpr(-999)); 4874 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -63)); 4875 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -1)); 4876 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 64)); 4877 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 999)); 4878 if not ok then 4879 writeln(" ***** Left shift assignment with illegal shift count does not raise OVERFLOW_ERROR."); 4880 okay := FALSE; 4881 end if; 4882 4883 if okay then 4884 writeln("Overflow checking of left shift assignment works correct."); 4885 else 4886 writeln(" ***** Overflow checking of left shift assignment does not work correct."); 4887 end if; 4888 end func; 4889 4890 4891const proc: check_rShift is func 4892 local 4893 var boolean: okay is TRUE; 4894 begin 4895 if not raisesOverflowError(-16111 >> integer.first) or 4896 not raisesOverflowError(-16111 >> -999) or 4897 not raisesOverflowError(-16111 >> -63) or 4898 not raisesOverflowError(-16111 >> -1) or 4899 not raisesOverflowError(-16111 >> 64) or 4900 not raisesOverflowError(-16111 >> 999) or 4901 not raisesOverflowError(-16111 >> integer.last) or 4902 not raisesOverflowError( -1 >> integer.first) or 4903 not raisesOverflowError( -1 >> -999) or 4904 not raisesOverflowError( -1 >> -63) or 4905 not raisesOverflowError( -1 >> -1) or 4906 not raisesOverflowError( -1 >> 64) or 4907 not raisesOverflowError( -1 >> 999) or 4908 not raisesOverflowError( -1 >> integer.last) or 4909 not raisesOverflowError( 0 >> integer.first) or 4910 not raisesOverflowError( 0 >> -999) or 4911 not raisesOverflowError( 0 >> -63) or 4912 not raisesOverflowError( 0 >> -1) or 4913 not raisesOverflowError( 0 >> 64) or 4914 not raisesOverflowError( 0 >> 999) or 4915 not raisesOverflowError( 0 >> integer.last) or 4916 not raisesOverflowError( 16111 >> integer.first) or 4917 not raisesOverflowError( 16111 >> -999) or 4918 not raisesOverflowError( 16111 >> -63) or 4919 not raisesOverflowError( 16111 >> -1) or 4920 not raisesOverflowError( 16111 >> 64) or 4921 not raisesOverflowError( 16111 >> 999) or 4922 not raisesOverflowError( 16111 >> integer.last) or 4923 not raisesOverflowError(intExpr(-16111) >> integer.first) or 4924 not raisesOverflowError(intExpr(-16111) >> -999) or 4925 not raisesOverflowError(intExpr(-16111) >> -63) or 4926 not raisesOverflowError(intExpr(-16111) >> -1) or 4927 not raisesOverflowError(intExpr(-16111) >> 64) or 4928 not raisesOverflowError(intExpr(-16111) >> 999) or 4929 not raisesOverflowError(intExpr(-16111) >> integer.last) or 4930 not raisesOverflowError(intExpr( -1) >> integer.first) or 4931 not raisesOverflowError(intExpr( -1) >> -999) or 4932 not raisesOverflowError(intExpr( -1) >> -63) or 4933 not raisesOverflowError(intExpr( -1) >> -1) or 4934 not raisesOverflowError(intExpr( -1) >> 64) or 4935 not raisesOverflowError(intExpr( -1) >> 999) or 4936 not raisesOverflowError(intExpr( -1) >> integer.last) or 4937 not raisesOverflowError(intExpr( 0) >> integer.first) or 4938 not raisesOverflowError(intExpr( 0) >> -999) or 4939 not raisesOverflowError(intExpr( 0) >> -63) or 4940 not raisesOverflowError(intExpr( 0) >> -1) or 4941 not raisesOverflowError(intExpr( 0) >> 64) or 4942 not raisesOverflowError(intExpr( 0) >> 999) or 4943 not raisesOverflowError(intExpr( 0) >> integer.last) or 4944 not raisesOverflowError(intExpr( 16111) >> integer.first) or 4945 not raisesOverflowError(intExpr( 16111) >> -999) or 4946 not raisesOverflowError(intExpr( 16111) >> -63) or 4947 not raisesOverflowError(intExpr( 16111) >> -1) or 4948 not raisesOverflowError(intExpr( 16111) >> 64) or 4949 not raisesOverflowError(intExpr( 16111) >> 999) or 4950 not raisesOverflowError(intExpr( 16111) >> integer.last) or 4951 not raisesOverflowError(-16111 >> intExpr(integer.first)) or 4952 not raisesOverflowError(-16111 >> intExpr( -999)) or 4953 not raisesOverflowError(-16111 >> intExpr( -63)) or 4954 not raisesOverflowError(-16111 >> intExpr( -1)) or 4955 not raisesOverflowError(-16111 >> intExpr( 64)) or 4956 not raisesOverflowError(-16111 >> intExpr( 999)) or 4957 not raisesOverflowError(-16111 >> intExpr( integer.last)) or 4958 not raisesOverflowError( -1 >> intExpr(integer.first)) or 4959 not raisesOverflowError( -1 >> intExpr( -999)) or 4960 not raisesOverflowError( -1 >> intExpr( -63)) or 4961 not raisesOverflowError( -1 >> intExpr( -1)) or 4962 not raisesOverflowError( -1 >> intExpr( 64)) or 4963 not raisesOverflowError( -1 >> intExpr( 999)) or 4964 not raisesOverflowError( -1 >> intExpr( integer.last)) or 4965 not raisesOverflowError( 0 >> intExpr(integer.first)) or 4966 not raisesOverflowError( 0 >> intExpr( -999)) or 4967 not raisesOverflowError( 0 >> intExpr( -63)) or 4968 not raisesOverflowError( 0 >> intExpr( -1)) or 4969 not raisesOverflowError( 0 >> intExpr( 64)) or 4970 not raisesOverflowError( 0 >> intExpr( 999)) or 4971 not raisesOverflowError( 0 >> intExpr( integer.last)) or 4972 not raisesOverflowError( 16111 >> intExpr(integer.first)) or 4973 not raisesOverflowError( 16111 >> intExpr( -999)) or 4974 not raisesOverflowError( 16111 >> intExpr( -63)) or 4975 not raisesOverflowError( 16111 >> intExpr( -1)) or 4976 not raisesOverflowError( 16111 >> intExpr( 64)) or 4977 not raisesOverflowError( 16111 >> intExpr( 999)) or 4978 not raisesOverflowError( 16111 >> intExpr( integer.last)) or 4979 not raisesOverflowError(intExpr(-16111) >> intExpr(integer.first)) or 4980 not raisesOverflowError(intExpr(-16111) >> intExpr( -999)) or 4981 not raisesOverflowError(intExpr(-16111) >> intExpr( -63)) or 4982 not raisesOverflowError(intExpr(-16111) >> intExpr( -1)) or 4983 not raisesOverflowError(intExpr(-16111) >> intExpr( 64)) or 4984 not raisesOverflowError(intExpr(-16111) >> intExpr( 999)) or 4985 not raisesOverflowError(intExpr(-16111) >> intExpr( integer.last)) or 4986 not raisesOverflowError(intExpr( -1) >> intExpr(integer.first)) or 4987 not raisesOverflowError(intExpr( -1) >> intExpr( -999)) or 4988 not raisesOverflowError(intExpr( -1) >> intExpr( -63)) or 4989 not raisesOverflowError(intExpr( -1) >> intExpr( -1)) or 4990 not raisesOverflowError(intExpr( -1) >> intExpr( 64)) or 4991 not raisesOverflowError(intExpr( -1) >> intExpr( 999)) or 4992 not raisesOverflowError(intExpr( -1) >> intExpr( integer.last)) or 4993 not raisesOverflowError(intExpr( 0) >> intExpr(integer.first)) or 4994 not raisesOverflowError(intExpr( 0) >> intExpr( -999)) or 4995 not raisesOverflowError(intExpr( 0) >> intExpr( -63)) or 4996 not raisesOverflowError(intExpr( 0) >> intExpr( -1)) or 4997 not raisesOverflowError(intExpr( 0) >> intExpr( 64)) or 4998 not raisesOverflowError(intExpr( 0) >> intExpr( 999)) or 4999 not raisesOverflowError(intExpr( 0) >> intExpr( integer.last)) or 5000 not raisesOverflowError(intExpr( 16111) >> intExpr(integer.first)) or 5001 not raisesOverflowError(intExpr( 16111) >> intExpr( -999)) or 5002 not raisesOverflowError(intExpr( 16111) >> intExpr( -63)) or 5003 not raisesOverflowError(intExpr( 16111) >> intExpr( -1)) or 5004 not raisesOverflowError(intExpr( 16111) >> intExpr( 64)) or 5005 not raisesOverflowError(intExpr( 16111) >> intExpr( 999)) or 5006 not raisesOverflowError(intExpr( 16111) >> intExpr( integer.last)) then 5007 writeln(" ***** Right shift with illegal shift count does not raise OVERFLOW_ERROR."); 5008 okay := FALSE; 5009 end if; 5010 5011 if okay then 5012 writeln("Overflow checking of right shift works correct."); 5013 else 5014 writeln(" ***** Overflow checking of right shift does not work correct."); 5015 end if; 5016 end func; 5017 5018 5019const proc: check_rShift_assign is func 5020 local 5021 var boolean: okay is TRUE; 5022 var boolean: ok is TRUE; 5023 var integer: num is 0; 5024 var array integer: arr is [] (0); 5025 begin 5026 num := -16111; ok := ok and raisesOverflowError(num >>:= -999); 5027 num := -16111; ok := ok and raisesOverflowError(num >>:= -63); 5028 num := -16111; ok := ok and raisesOverflowError(num >>:= -1); 5029 num := -16111; ok := ok and raisesOverflowError(num >>:= 64); 5030 num := -16111; ok := ok and raisesOverflowError(num >>:= 999); 5031 num := -1; ok := ok and raisesOverflowError(num >>:= -999); 5032 num := -1; ok := ok and raisesOverflowError(num >>:= -63); 5033 num := -1; ok := ok and raisesOverflowError(num >>:= -1); 5034 num := -1; ok := ok and raisesOverflowError(num >>:= 64); 5035 num := -1; ok := ok and raisesOverflowError(num >>:= 999); 5036 num := 0; ok := ok and raisesOverflowError(num >>:= -999); 5037 num := 0; ok := ok and raisesOverflowError(num >>:= -63); 5038 num := 0; ok := ok and raisesOverflowError(num >>:= -1); 5039 num := 0; ok := ok and raisesOverflowError(num >>:= 64); 5040 num := 0; ok := ok and raisesOverflowError(num >>:= 999); 5041 num := 16111; ok := ok and raisesOverflowError(num >>:= -999); 5042 num := 16111; ok := ok and raisesOverflowError(num >>:= -63); 5043 num := 16111; ok := ok and raisesOverflowError(num >>:= -1); 5044 num := 16111; ok := ok and raisesOverflowError(num >>:= 64); 5045 num := 16111; ok := ok and raisesOverflowError(num >>:= 999); 5046 num := -16111; ok := ok and raisesOverflowError(num >>:= intExpr(-999)); 5047 num := -16111; ok := ok and raisesOverflowError(num >>:= intExpr( -63)); 5048 num := -16111; ok := ok and raisesOverflowError(num >>:= intExpr( -1)); 5049 num := -16111; ok := ok and raisesOverflowError(num >>:= intExpr( 64)); 5050 num := -16111; ok := ok and raisesOverflowError(num >>:= intExpr( 999)); 5051 num := -1; ok := ok and raisesOverflowError(num >>:= intExpr(-999)); 5052 num := -1; ok := ok and raisesOverflowError(num >>:= intExpr( -63)); 5053 num := -1; ok := ok and raisesOverflowError(num >>:= intExpr( -1)); 5054 num := -1; ok := ok and raisesOverflowError(num >>:= intExpr( 64)); 5055 num := -1; ok := ok and raisesOverflowError(num >>:= intExpr( 999)); 5056 num := 0; ok := ok and raisesOverflowError(num >>:= intExpr(-999)); 5057 num := 0; ok := ok and raisesOverflowError(num >>:= intExpr( -63)); 5058 num := 0; ok := ok and raisesOverflowError(num >>:= intExpr( -1)); 5059 num := 0; ok := ok and raisesOverflowError(num >>:= intExpr( 64)); 5060 num := 0; ok := ok and raisesOverflowError(num >>:= intExpr( 999)); 5061 num := 16111; ok := ok and raisesOverflowError(num >>:= intExpr(-999)); 5062 num := 16111; ok := ok and raisesOverflowError(num >>:= intExpr( -63)); 5063 num := 16111; ok := ok and raisesOverflowError(num >>:= intExpr( -1)); 5064 num := 16111; ok := ok and raisesOverflowError(num >>:= intExpr( 64)); 5065 num := 16111; ok := ok and raisesOverflowError(num >>:= intExpr( 999)); 5066 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] >>:= -999); 5067 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] >>:= -63); 5068 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] >>:= -1); 5069 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] >>:= 64); 5070 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] >>:= 999); 5071 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] >>:= -999); 5072 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] >>:= -63); 5073 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] >>:= -1); 5074 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] >>:= 64); 5075 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] >>:= 999); 5076 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] >>:= -999); 5077 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] >>:= -63); 5078 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] >>:= -1); 5079 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] >>:= 64); 5080 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] >>:= 999); 5081 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] >>:= -999); 5082 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] >>:= -63); 5083 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] >>:= -1); 5084 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] >>:= 64); 5085 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] >>:= 999); 5086 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] >>:= intExpr(-999)); 5087 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -63)); 5088 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -1)); 5089 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 64)); 5090 arr[1] := -16111; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 999)); 5091 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] >>:= intExpr(-999)); 5092 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -63)); 5093 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -1)); 5094 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 64)); 5095 arr[1] := -1; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 999)); 5096 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] >>:= intExpr(-999)); 5097 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -63)); 5098 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -1)); 5099 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 64)); 5100 arr[1] := 0; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 999)); 5101 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] >>:= intExpr(-999)); 5102 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -63)); 5103 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -1)); 5104 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 64)); 5105 arr[1] := 16111; ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 999)); 5106 if not ok then 5107 writeln(" ***** Right shift assignment with illegal shift count does not raise OVERFLOW_ERROR."); 5108 okay := FALSE; 5109 end if; 5110 5111 if okay then 5112 writeln("Overflow checking of right shift assignment works correct."); 5113 else 5114 writeln(" ***** Overflow checking of right shift assignment does not work correct."); 5115 end if; 5116 end func; 5117 5118 5119const proc: check_ulShift is func 5120 local 5121 var boolean: okay is TRUE; 5122 begin 5123 if not raisesOverflowError(bin32(-16111) << integer.first) or 5124 not raisesOverflowError(bin32(-16111) << -999) or 5125 not raisesOverflowError(bin32(-16111) << -63) or 5126 not raisesOverflowError(bin32(-16111) << -1) or 5127 not raisesOverflowError(bin32(-16111) << 64) or 5128 not raisesOverflowError(bin32(-16111) << 999) or 5129 not raisesOverflowError(bin32(-16111) << integer.last) or 5130 not raisesOverflowError(bin32( -1) << integer.first) or 5131 not raisesOverflowError(bin32( -1) << -999) or 5132 not raisesOverflowError(bin32( -1) << -63) or 5133 not raisesOverflowError(bin32( -1) << -1) or 5134 not raisesOverflowError(bin32( -1) << 64) or 5135 not raisesOverflowError(bin32( -1) << 999) or 5136 not raisesOverflowError(bin32( -1) << integer.last) or 5137 not raisesOverflowError(bin32( 0) << integer.first) or 5138 not raisesOverflowError(bin32( 0) << -999) or 5139 not raisesOverflowError(bin32( 0) << -63) or 5140 not raisesOverflowError(bin32( 0) << -1) or 5141 not raisesOverflowError(bin32( 0) << 64) or 5142 not raisesOverflowError(bin32( 0) << 999) or 5143 not raisesOverflowError(bin32( 0) << integer.last) or 5144 not raisesOverflowError(bin32( 16111) << integer.first) or 5145 not raisesOverflowError(bin32( 16111) << -999) or 5146 not raisesOverflowError(bin32( 16111) << -63) or 5147 not raisesOverflowError(bin32( 16111) << -1) or 5148 not raisesOverflowError(bin32( 16111) << 64) or 5149 not raisesOverflowError(bin32( 16111) << 999) or 5150 not raisesOverflowError(bin32( 16111) << integer.last) or 5151 not raisesOverflowError(bin32(intExpr(-16111)) << integer.first) or 5152 not raisesOverflowError(bin32(intExpr(-16111)) << -999) or 5153 not raisesOverflowError(bin32(intExpr(-16111)) << -63) or 5154 not raisesOverflowError(bin32(intExpr(-16111)) << -1) or 5155 not raisesOverflowError(bin32(intExpr(-16111)) << 64) or 5156 not raisesOverflowError(bin32(intExpr(-16111)) << 999) or 5157 not raisesOverflowError(bin32(intExpr(-16111)) << integer.last) or 5158 not raisesOverflowError(bin32(intExpr( -1)) << integer.first) or 5159 not raisesOverflowError(bin32(intExpr( -1)) << -999) or 5160 not raisesOverflowError(bin32(intExpr( -1)) << -63) or 5161 not raisesOverflowError(bin32(intExpr( -1)) << -1) or 5162 not raisesOverflowError(bin32(intExpr( -1)) << 64) or 5163 not raisesOverflowError(bin32(intExpr( -1)) << 999) or 5164 not raisesOverflowError(bin32(intExpr( -1)) << integer.last) or 5165 not raisesOverflowError(bin32(intExpr( 0)) << integer.first) or 5166 not raisesOverflowError(bin32(intExpr( 0)) << -999) or 5167 not raisesOverflowError(bin32(intExpr( 0)) << -63) or 5168 not raisesOverflowError(bin32(intExpr( 0)) << -1) or 5169 not raisesOverflowError(bin32(intExpr( 0)) << 64) or 5170 not raisesOverflowError(bin32(intExpr( 0)) << 999) or 5171 not raisesOverflowError(bin32(intExpr( 0)) << integer.last) or 5172 not raisesOverflowError(bin32(intExpr( 16111)) << integer.first) or 5173 not raisesOverflowError(bin32(intExpr( 16111)) << -999) or 5174 not raisesOverflowError(bin32(intExpr( 16111)) << -63) or 5175 not raisesOverflowError(bin32(intExpr( 16111)) << -1) or 5176 not raisesOverflowError(bin32(intExpr( 16111)) << 64) or 5177 not raisesOverflowError(bin32(intExpr( 16111)) << 999) or 5178 not raisesOverflowError(bin32(intExpr( 16111)) << integer.last) or 5179 not raisesOverflowError(bin32(-16111) << intExpr(integer.first)) or 5180 not raisesOverflowError(bin32(-16111) << intExpr( -999)) or 5181 not raisesOverflowError(bin32(-16111) << intExpr( -63)) or 5182 not raisesOverflowError(bin32(-16111) << intExpr( -1)) or 5183 not raisesOverflowError(bin32(-16111) << intExpr( 64)) or 5184 not raisesOverflowError(bin32(-16111) << intExpr( 999)) or 5185 not raisesOverflowError(bin32(-16111) << intExpr( integer.last)) or 5186 not raisesOverflowError(bin32( -1) << intExpr(integer.first)) or 5187 not raisesOverflowError(bin32( -1) << intExpr( -999)) or 5188 not raisesOverflowError(bin32( -1) << intExpr( -63)) or 5189 not raisesOverflowError(bin32( -1) << intExpr( -1)) or 5190 not raisesOverflowError(bin32( -1) << intExpr( 64)) or 5191 not raisesOverflowError(bin32( -1) << intExpr( 999)) or 5192 not raisesOverflowError(bin32( -1) << intExpr( integer.last)) or 5193 not raisesOverflowError(bin32( 0) << intExpr(integer.first)) or 5194 not raisesOverflowError(bin32( 0) << intExpr( -999)) or 5195 not raisesOverflowError(bin32( 0) << intExpr( -63)) or 5196 not raisesOverflowError(bin32( 0) << intExpr( -1)) or 5197 not raisesOverflowError(bin32( 0) << intExpr( 64)) or 5198 not raisesOverflowError(bin32( 0) << intExpr( 999)) or 5199 not raisesOverflowError(bin32( 0) << intExpr( integer.last)) or 5200 not raisesOverflowError(bin32( 16111) << intExpr(integer.first)) or 5201 not raisesOverflowError(bin32( 16111) << intExpr( -999)) or 5202 not raisesOverflowError(bin32( 16111) << intExpr( -63)) or 5203 not raisesOverflowError(bin32( 16111) << intExpr( -1)) or 5204 not raisesOverflowError(bin32( 16111) << intExpr( 64)) or 5205 not raisesOverflowError(bin32( 16111) << intExpr( 999)) or 5206 not raisesOverflowError(bin32( 16111) << intExpr( integer.last)) or 5207 not raisesOverflowError(bin32(intExpr(-16111)) << intExpr(integer.first)) or 5208 not raisesOverflowError(bin32(intExpr(-16111)) << intExpr( -999)) or 5209 not raisesOverflowError(bin32(intExpr(-16111)) << intExpr( -63)) or 5210 not raisesOverflowError(bin32(intExpr(-16111)) << intExpr( -1)) or 5211 not raisesOverflowError(bin32(intExpr(-16111)) << intExpr( 64)) or 5212 not raisesOverflowError(bin32(intExpr(-16111)) << intExpr( 999)) or 5213 not raisesOverflowError(bin32(intExpr(-16111)) << intExpr( integer.last)) or 5214 not raisesOverflowError(bin32(intExpr( -1)) << intExpr(integer.first)) or 5215 not raisesOverflowError(bin32(intExpr( -1)) << intExpr( -999)) or 5216 not raisesOverflowError(bin32(intExpr( -1)) << intExpr( -63)) or 5217 not raisesOverflowError(bin32(intExpr( -1)) << intExpr( -1)) or 5218 not raisesOverflowError(bin32(intExpr( -1)) << intExpr( 64)) or 5219 not raisesOverflowError(bin32(intExpr( -1)) << intExpr( 999)) or 5220 not raisesOverflowError(bin32(intExpr( -1)) << intExpr( integer.last)) or 5221 not raisesOverflowError(bin32(intExpr( 0)) << intExpr(integer.first)) or 5222 not raisesOverflowError(bin32(intExpr( 0)) << intExpr( -999)) or 5223 not raisesOverflowError(bin32(intExpr( 0)) << intExpr( -63)) or 5224 not raisesOverflowError(bin32(intExpr( 0)) << intExpr( -1)) or 5225 not raisesOverflowError(bin32(intExpr( 0)) << intExpr( 64)) or 5226 not raisesOverflowError(bin32(intExpr( 0)) << intExpr( 999)) or 5227 not raisesOverflowError(bin32(intExpr( 0)) << intExpr( integer.last)) or 5228 not raisesOverflowError(bin32(intExpr( 16111)) << intExpr(integer.first)) or 5229 not raisesOverflowError(bin32(intExpr( 16111)) << intExpr( -999)) or 5230 not raisesOverflowError(bin32(intExpr( 16111)) << intExpr( -63)) or 5231 not raisesOverflowError(bin32(intExpr( 16111)) << intExpr( -1)) or 5232 not raisesOverflowError(bin32(intExpr( 16111)) << intExpr( 64)) or 5233 not raisesOverflowError(bin32(intExpr( 16111)) << intExpr( 999)) or 5234 not raisesOverflowError(bin32(intExpr( 16111)) << intExpr( integer.last)) then 5235 writeln(" ***** Unsigned left shift with illegal shift count does not raise OVERFLOW_ERROR."); 5236 okay := FALSE; 5237 end if; 5238 5239 if okay then 5240 writeln("Overflow checking of unsigned left shift works correct."); 5241 else 5242 writeln(" ***** Overflow checking of unsigned left shift does not work correct."); 5243 end if; 5244 end func; 5245 5246 5247const proc: check_ulShift_assign is func 5248 local 5249 var boolean: okay is TRUE; 5250 var boolean: ok is TRUE; 5251 var bin32: num is bin32(0); 5252 var array bin32: arr is 1 times bin32(0); 5253 begin 5254 num := bin32(-16111); ok := ok and raisesOverflowError(num <<:= -999); 5255 num := bin32(-16111); ok := ok and raisesOverflowError(num <<:= -63); 5256 num := bin32(-16111); ok := ok and raisesOverflowError(num <<:= -1); 5257 num := bin32(-16111); ok := ok and raisesOverflowError(num <<:= 64); 5258 num := bin32(-16111); ok := ok and raisesOverflowError(num <<:= 999); 5259 num := bin32( -1); ok := ok and raisesOverflowError(num <<:= -999); 5260 num := bin32( -1); ok := ok and raisesOverflowError(num <<:= -63); 5261 num := bin32( -1); ok := ok and raisesOverflowError(num <<:= -1); 5262 num := bin32( -1); ok := ok and raisesOverflowError(num <<:= 64); 5263 num := bin32( -1); ok := ok and raisesOverflowError(num <<:= 999); 5264 num := bin32( 0); ok := ok and raisesOverflowError(num <<:= -999); 5265 num := bin32( 0); ok := ok and raisesOverflowError(num <<:= -63); 5266 num := bin32( 0); ok := ok and raisesOverflowError(num <<:= -1); 5267 num := bin32( 0); ok := ok and raisesOverflowError(num <<:= 64); 5268 num := bin32( 0); ok := ok and raisesOverflowError(num <<:= 999); 5269 num := bin32( 16111); ok := ok and raisesOverflowError(num <<:= -999); 5270 num := bin32( 16111); ok := ok and raisesOverflowError(num <<:= -63); 5271 num := bin32( 16111); ok := ok and raisesOverflowError(num <<:= -1); 5272 num := bin32( 16111); ok := ok and raisesOverflowError(num <<:= 64); 5273 num := bin32( 16111); ok := ok and raisesOverflowError(num <<:= 999); 5274 num := bin32(-16111); ok := ok and raisesOverflowError(num <<:= intExpr(-999)); 5275 num := bin32(-16111); ok := ok and raisesOverflowError(num <<:= intExpr( -63)); 5276 num := bin32(-16111); ok := ok and raisesOverflowError(num <<:= intExpr( -1)); 5277 num := bin32(-16111); ok := ok and raisesOverflowError(num <<:= intExpr( 64)); 5278 num := bin32(-16111); ok := ok and raisesOverflowError(num <<:= intExpr( 999)); 5279 num := bin32( -1); ok := ok and raisesOverflowError(num <<:= intExpr(-999)); 5280 num := bin32( -1); ok := ok and raisesOverflowError(num <<:= intExpr( -63)); 5281 num := bin32( -1); ok := ok and raisesOverflowError(num <<:= intExpr( -1)); 5282 num := bin32( -1); ok := ok and raisesOverflowError(num <<:= intExpr( 64)); 5283 num := bin32( -1); ok := ok and raisesOverflowError(num <<:= intExpr( 999)); 5284 num := bin32( 0); ok := ok and raisesOverflowError(num <<:= intExpr(-999)); 5285 num := bin32( 0); ok := ok and raisesOverflowError(num <<:= intExpr( -63)); 5286 num := bin32( 0); ok := ok and raisesOverflowError(num <<:= intExpr( -1)); 5287 num := bin32( 0); ok := ok and raisesOverflowError(num <<:= intExpr( 64)); 5288 num := bin32( 0); ok := ok and raisesOverflowError(num <<:= intExpr( 999)); 5289 num := bin32( 16111); ok := ok and raisesOverflowError(num <<:= intExpr(-999)); 5290 num := bin32( 16111); ok := ok and raisesOverflowError(num <<:= intExpr( -63)); 5291 num := bin32( 16111); ok := ok and raisesOverflowError(num <<:= intExpr( -1)); 5292 num := bin32( 16111); ok := ok and raisesOverflowError(num <<:= intExpr( 64)); 5293 num := bin32( 16111); ok := ok and raisesOverflowError(num <<:= intExpr( 999)); 5294 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] <<:= -999); 5295 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] <<:= -63); 5296 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] <<:= -1); 5297 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] <<:= 64); 5298 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] <<:= 999); 5299 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] <<:= -999); 5300 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] <<:= -63); 5301 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] <<:= -1); 5302 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] <<:= 64); 5303 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] <<:= 999); 5304 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] <<:= -999); 5305 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] <<:= -63); 5306 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] <<:= -1); 5307 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] <<:= 64); 5308 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] <<:= 999); 5309 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] <<:= -999); 5310 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] <<:= -63); 5311 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] <<:= -1); 5312 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] <<:= 64); 5313 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] <<:= 999); 5314 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] <<:= intExpr(-999)); 5315 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -63)); 5316 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -1)); 5317 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 64)); 5318 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 999)); 5319 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] <<:= intExpr(-999)); 5320 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -63)); 5321 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -1)); 5322 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 64)); 5323 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 999)); 5324 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] <<:= intExpr(-999)); 5325 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -63)); 5326 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -1)); 5327 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 64)); 5328 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 999)); 5329 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] <<:= intExpr(-999)); 5330 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -63)); 5331 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( -1)); 5332 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 64)); 5333 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] <<:= intExpr( 999)); 5334 if not ok then 5335 writeln(" ***** Unsigned left shift assignment with illegal shift count does not raise OVERFLOW_ERROR."); 5336 okay := FALSE; 5337 end if; 5338 5339 if okay then 5340 writeln("Overflow checking of unsigned left shift assignment works correct."); 5341 else 5342 writeln(" ***** Overflow checking of unsigned left shift assignment does not work correct."); 5343 end if; 5344 end func; 5345 5346 5347const proc: check_urShift is func 5348 local 5349 var boolean: okay is TRUE; 5350 begin 5351 if not raisesOverflowError(bin32(-16111) >> integer.first) or 5352 not raisesOverflowError(bin32(-16111) >> -999) or 5353 not raisesOverflowError(bin32(-16111) >> -63) or 5354 not raisesOverflowError(bin32(-16111) >> -1) or 5355 not raisesOverflowError(bin32(-16111) >> 64) or 5356 not raisesOverflowError(bin32(-16111) >> 999) or 5357 not raisesOverflowError(bin32(-16111) >> integer.last) or 5358 not raisesOverflowError(bin32( -1) >> integer.first) or 5359 not raisesOverflowError(bin32( -1) >> -999) or 5360 not raisesOverflowError(bin32( -1) >> -63) or 5361 not raisesOverflowError(bin32( -1) >> -1) or 5362 not raisesOverflowError(bin32( -1) >> 64) or 5363 not raisesOverflowError(bin32( -1) >> 999) or 5364 not raisesOverflowError(bin32( -1) >> integer.last) or 5365 not raisesOverflowError(bin32( 0) >> integer.first) or 5366 not raisesOverflowError(bin32( 0) >> -999) or 5367 not raisesOverflowError(bin32( 0) >> -63) or 5368 not raisesOverflowError(bin32( 0) >> -1) or 5369 not raisesOverflowError(bin32( 0) >> 64) or 5370 not raisesOverflowError(bin32( 0) >> 999) or 5371 not raisesOverflowError(bin32( 0) >> integer.last) or 5372 not raisesOverflowError(bin32( 16111) >> integer.first) or 5373 not raisesOverflowError(bin32( 16111) >> -999) or 5374 not raisesOverflowError(bin32( 16111) >> -63) or 5375 not raisesOverflowError(bin32( 16111) >> -1) or 5376 not raisesOverflowError(bin32( 16111) >> 64) or 5377 not raisesOverflowError(bin32( 16111) >> 999) or 5378 not raisesOverflowError(bin32( 16111) >> integer.last) or 5379 not raisesOverflowError(bin32(intExpr(-16111)) >> integer.first) or 5380 not raisesOverflowError(bin32(intExpr(-16111)) >> -999) or 5381 not raisesOverflowError(bin32(intExpr(-16111)) >> -63) or 5382 not raisesOverflowError(bin32(intExpr(-16111)) >> -1) or 5383 not raisesOverflowError(bin32(intExpr(-16111)) >> 64) or 5384 not raisesOverflowError(bin32(intExpr(-16111)) >> 999) or 5385 not raisesOverflowError(bin32(intExpr(-16111)) >> integer.last) or 5386 not raisesOverflowError(bin32(intExpr( -1)) >> integer.first) or 5387 not raisesOverflowError(bin32(intExpr( -1)) >> -999) or 5388 not raisesOverflowError(bin32(intExpr( -1)) >> -63) or 5389 not raisesOverflowError(bin32(intExpr( -1)) >> -1) or 5390 not raisesOverflowError(bin32(intExpr( -1)) >> 64) or 5391 not raisesOverflowError(bin32(intExpr( -1)) >> 999) or 5392 not raisesOverflowError(bin32(intExpr( -1)) >> integer.last) or 5393 not raisesOverflowError(bin32(intExpr( 0)) >> integer.first) or 5394 not raisesOverflowError(bin32(intExpr( 0)) >> -999) or 5395 not raisesOverflowError(bin32(intExpr( 0)) >> -63) or 5396 not raisesOverflowError(bin32(intExpr( 0)) >> -1) or 5397 not raisesOverflowError(bin32(intExpr( 0)) >> 64) or 5398 not raisesOverflowError(bin32(intExpr( 0)) >> 999) or 5399 not raisesOverflowError(bin32(intExpr( 0)) >> integer.last) or 5400 not raisesOverflowError(bin32(intExpr( 16111)) >> integer.first) or 5401 not raisesOverflowError(bin32(intExpr( 16111)) >> -999) or 5402 not raisesOverflowError(bin32(intExpr( 16111)) >> -63) or 5403 not raisesOverflowError(bin32(intExpr( 16111)) >> -1) or 5404 not raisesOverflowError(bin32(intExpr( 16111)) >> 64) or 5405 not raisesOverflowError(bin32(intExpr( 16111)) >> 999) or 5406 not raisesOverflowError(bin32(intExpr( 16111)) >> integer.last) or 5407 not raisesOverflowError(bin32(-16111) >> intExpr(integer.first)) or 5408 not raisesOverflowError(bin32(-16111) >> intExpr( -999)) or 5409 not raisesOverflowError(bin32(-16111) >> intExpr( -63)) or 5410 not raisesOverflowError(bin32(-16111) >> intExpr( -1)) or 5411 not raisesOverflowError(bin32(-16111) >> intExpr( 64)) or 5412 not raisesOverflowError(bin32(-16111) >> intExpr( 999)) or 5413 not raisesOverflowError(bin32(-16111) >> intExpr( integer.last)) or 5414 not raisesOverflowError(bin32( -1) >> intExpr(integer.first)) or 5415 not raisesOverflowError(bin32( -1) >> intExpr( -999)) or 5416 not raisesOverflowError(bin32( -1) >> intExpr( -63)) or 5417 not raisesOverflowError(bin32( -1) >> intExpr( -1)) or 5418 not raisesOverflowError(bin32( -1) >> intExpr( 64)) or 5419 not raisesOverflowError(bin32( -1) >> intExpr( 999)) or 5420 not raisesOverflowError(bin32( -1) >> intExpr( integer.last)) or 5421 not raisesOverflowError(bin32( 0) >> intExpr(integer.first)) or 5422 not raisesOverflowError(bin32( 0) >> intExpr( -999)) or 5423 not raisesOverflowError(bin32( 0) >> intExpr( -63)) or 5424 not raisesOverflowError(bin32( 0) >> intExpr( -1)) or 5425 not raisesOverflowError(bin32( 0) >> intExpr( 64)) or 5426 not raisesOverflowError(bin32( 0) >> intExpr( 999)) or 5427 not raisesOverflowError(bin32( 0) >> intExpr( integer.last)) or 5428 not raisesOverflowError(bin32( 16111) >> intExpr(integer.first)) or 5429 not raisesOverflowError(bin32( 16111) >> intExpr( -999)) or 5430 not raisesOverflowError(bin32( 16111) >> intExpr( -63)) or 5431 not raisesOverflowError(bin32( 16111) >> intExpr( -1)) or 5432 not raisesOverflowError(bin32( 16111) >> intExpr( 64)) or 5433 not raisesOverflowError(bin32( 16111) >> intExpr( 999)) or 5434 not raisesOverflowError(bin32( 16111) >> intExpr( integer.last)) or 5435 not raisesOverflowError(bin32(intExpr(-16111)) >> intExpr(integer.first)) or 5436 not raisesOverflowError(bin32(intExpr(-16111)) >> intExpr( -999)) or 5437 not raisesOverflowError(bin32(intExpr(-16111)) >> intExpr( -63)) or 5438 not raisesOverflowError(bin32(intExpr(-16111)) >> intExpr( -1)) or 5439 not raisesOverflowError(bin32(intExpr(-16111)) >> intExpr( 64)) or 5440 not raisesOverflowError(bin32(intExpr(-16111)) >> intExpr( 999)) or 5441 not raisesOverflowError(bin32(intExpr(-16111)) >> intExpr( integer.last)) or 5442 not raisesOverflowError(bin32(intExpr( -1)) >> intExpr(integer.first)) or 5443 not raisesOverflowError(bin32(intExpr( -1)) >> intExpr( -999)) or 5444 not raisesOverflowError(bin32(intExpr( -1)) >> intExpr( -63)) or 5445 not raisesOverflowError(bin32(intExpr( -1)) >> intExpr( -1)) or 5446 not raisesOverflowError(bin32(intExpr( -1)) >> intExpr( 64)) or 5447 not raisesOverflowError(bin32(intExpr( -1)) >> intExpr( 999)) or 5448 not raisesOverflowError(bin32(intExpr( -1)) >> intExpr( integer.last)) or 5449 not raisesOverflowError(bin32(intExpr( 0)) >> intExpr(integer.first)) or 5450 not raisesOverflowError(bin32(intExpr( 0)) >> intExpr( -999)) or 5451 not raisesOverflowError(bin32(intExpr( 0)) >> intExpr( -63)) or 5452 not raisesOverflowError(bin32(intExpr( 0)) >> intExpr( -1)) or 5453 not raisesOverflowError(bin32(intExpr( 0)) >> intExpr( 64)) or 5454 not raisesOverflowError(bin32(intExpr( 0)) >> intExpr( 999)) or 5455 not raisesOverflowError(bin32(intExpr( 0)) >> intExpr( integer.last)) or 5456 not raisesOverflowError(bin32(intExpr( 16111)) >> intExpr(integer.first)) or 5457 not raisesOverflowError(bin32(intExpr( 16111)) >> intExpr( -999)) or 5458 not raisesOverflowError(bin32(intExpr( 16111)) >> intExpr( -63)) or 5459 not raisesOverflowError(bin32(intExpr( 16111)) >> intExpr( -1)) or 5460 not raisesOverflowError(bin32(intExpr( 16111)) >> intExpr( 64)) or 5461 not raisesOverflowError(bin32(intExpr( 16111)) >> intExpr( 999)) or 5462 not raisesOverflowError(bin32(intExpr( 16111)) >> intExpr( integer.last)) then 5463 writeln(" ***** Unsigned right shift with illegal shift count does not raise OVERFLOW_ERROR."); 5464 okay := FALSE; 5465 end if; 5466 5467 if okay then 5468 writeln("Overflow checking of unsigned right shift works correct."); 5469 else 5470 writeln(" ***** Overflow checking of unsigned right shift does not work correct."); 5471 end if; 5472 end func; 5473 5474 5475const proc: check_urShift_assign is func 5476 local 5477 var boolean: okay is TRUE; 5478 var boolean: ok is TRUE; 5479 var bin32: num is bin32(0); 5480 var array bin32: arr is 1 times bin32(0); 5481 begin 5482 num := bin32(-16111); ok := ok and raisesOverflowError(num >>:= -999); 5483 num := bin32(-16111); ok := ok and raisesOverflowError(num >>:= -63); 5484 num := bin32(-16111); ok := ok and raisesOverflowError(num >>:= -1); 5485 num := bin32(-16111); ok := ok and raisesOverflowError(num >>:= 64); 5486 num := bin32(-16111); ok := ok and raisesOverflowError(num >>:= 999); 5487 num := bin32( -1); ok := ok and raisesOverflowError(num >>:= -999); 5488 num := bin32( -1); ok := ok and raisesOverflowError(num >>:= -63); 5489 num := bin32( -1); ok := ok and raisesOverflowError(num >>:= -1); 5490 num := bin32( -1); ok := ok and raisesOverflowError(num >>:= 64); 5491 num := bin32( -1); ok := ok and raisesOverflowError(num >>:= 999); 5492 num := bin32( 0); ok := ok and raisesOverflowError(num >>:= -999); 5493 num := bin32( 0); ok := ok and raisesOverflowError(num >>:= -63); 5494 num := bin32( 0); ok := ok and raisesOverflowError(num >>:= -1); 5495 num := bin32( 0); ok := ok and raisesOverflowError(num >>:= 64); 5496 num := bin32( 0); ok := ok and raisesOverflowError(num >>:= 999); 5497 num := bin32( 16111); ok := ok and raisesOverflowError(num >>:= -999); 5498 num := bin32( 16111); ok := ok and raisesOverflowError(num >>:= -63); 5499 num := bin32( 16111); ok := ok and raisesOverflowError(num >>:= -1); 5500 num := bin32( 16111); ok := ok and raisesOverflowError(num >>:= 64); 5501 num := bin32( 16111); ok := ok and raisesOverflowError(num >>:= 999); 5502 num := bin32(-16111); ok := ok and raisesOverflowError(num >>:= intExpr(-999)); 5503 num := bin32(-16111); ok := ok and raisesOverflowError(num >>:= intExpr( -63)); 5504 num := bin32(-16111); ok := ok and raisesOverflowError(num >>:= intExpr( -1)); 5505 num := bin32(-16111); ok := ok and raisesOverflowError(num >>:= intExpr( 64)); 5506 num := bin32(-16111); ok := ok and raisesOverflowError(num >>:= intExpr( 999)); 5507 num := bin32( -1); ok := ok and raisesOverflowError(num >>:= intExpr(-999)); 5508 num := bin32( -1); ok := ok and raisesOverflowError(num >>:= intExpr( -63)); 5509 num := bin32( -1); ok := ok and raisesOverflowError(num >>:= intExpr( -1)); 5510 num := bin32( -1); ok := ok and raisesOverflowError(num >>:= intExpr( 64)); 5511 num := bin32( -1); ok := ok and raisesOverflowError(num >>:= intExpr( 999)); 5512 num := bin32( 0); ok := ok and raisesOverflowError(num >>:= intExpr(-999)); 5513 num := bin32( 0); ok := ok and raisesOverflowError(num >>:= intExpr( -63)); 5514 num := bin32( 0); ok := ok and raisesOverflowError(num >>:= intExpr( -1)); 5515 num := bin32( 0); ok := ok and raisesOverflowError(num >>:= intExpr( 64)); 5516 num := bin32( 0); ok := ok and raisesOverflowError(num >>:= intExpr( 999)); 5517 num := bin32( 16111); ok := ok and raisesOverflowError(num >>:= intExpr(-999)); 5518 num := bin32( 16111); ok := ok and raisesOverflowError(num >>:= intExpr( -63)); 5519 num := bin32( 16111); ok := ok and raisesOverflowError(num >>:= intExpr( -1)); 5520 num := bin32( 16111); ok := ok and raisesOverflowError(num >>:= intExpr( 64)); 5521 num := bin32( 16111); ok := ok and raisesOverflowError(num >>:= intExpr( 999)); 5522 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] >>:= -999); 5523 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] >>:= -63); 5524 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] >>:= -1); 5525 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] >>:= 64); 5526 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] >>:= 999); 5527 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] >>:= -999); 5528 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] >>:= -63); 5529 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] >>:= -1); 5530 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] >>:= 64); 5531 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] >>:= 999); 5532 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] >>:= -999); 5533 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] >>:= -63); 5534 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] >>:= -1); 5535 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] >>:= 64); 5536 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] >>:= 999); 5537 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] >>:= -999); 5538 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] >>:= -63); 5539 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] >>:= -1); 5540 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] >>:= 64); 5541 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] >>:= 999); 5542 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] >>:= intExpr(-999)); 5543 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -63)); 5544 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -1)); 5545 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 64)); 5546 arr[1] := bin32(-16111); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 999)); 5547 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] >>:= intExpr(-999)); 5548 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -63)); 5549 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -1)); 5550 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 64)); 5551 arr[1] := bin32( -1); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 999)); 5552 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] >>:= intExpr(-999)); 5553 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -63)); 5554 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -1)); 5555 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 64)); 5556 arr[1] := bin32( 0); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 999)); 5557 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] >>:= intExpr(-999)); 5558 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -63)); 5559 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( -1)); 5560 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 64)); 5561 arr[1] := bin32( 16111); ok := ok and raisesOverflowError(arr[1] >>:= intExpr( 999)); 5562 if not ok then 5563 writeln(" ***** Unsigned right shift assignment with illegal shift count does not raise OVERFLOW_ERROR."); 5564 okay := FALSE; 5565 end if; 5566 5567 if okay then 5568 writeln("Overflow checking of unsigned right shift assignment works correct."); 5569 else 5570 writeln(" ***** Overflow checking of unsigned right shift assignment does not work correct."); 5571 end if; 5572 end func; 5573 5574 5575const proc: check_power is func 5576 local 5577 var boolean: okay is TRUE; 5578 begin 5579 if not raisesOverflowError( INT64_MIN ** 2) or 5580 not raisesOverflowError((-9223372036854775807) ** 2) or 5581 not raisesOverflowError( (-3037000500) ** 2) or 5582 not raisesOverflowError( (-3037000499) ** 3) or 5583 not raisesOverflowError( (-2147483648) ** 3) or 5584 not raisesOverflowError( (-2097153) ** 3) or 5585 not raisesOverflowError( (-2097152) ** 4) or 5586 not raisesOverflowError( (-2097151) ** 4) or 5587 not raisesOverflowError( (-1234577) ** 4) or 5588 not raisesOverflowError( (-123457) ** 4) or 5589 not raisesOverflowError( (-55109) ** 4) or 5590 not raisesOverflowError( (-55108) ** 5) or 5591 not raisesOverflowError( (-32768) ** 5) or 5592 not raisesOverflowError( (-32767) ** 5) or 5593 not raisesOverflowError( (-6209) ** 5) or 5594 not raisesOverflowError( (-6208) ** 6) or 5595 not raisesOverflowError( (-1449) ** 6) or 5596 not raisesOverflowError( (-1448) ** 7) or 5597 not raisesOverflowError( (-513) ** 7) or 5598 not raisesOverflowError( (-512) ** 8) or 5599 not raisesOverflowError( (-511) ** 8) or 5600 not raisesOverflowError( (-235) ** 8) or 5601 not raisesOverflowError( (-234) ** 9) or 5602 not raisesOverflowError( (-129) ** 9) or 5603 not raisesOverflowError( (-128) ** 10) or 5604 not raisesOverflowError( (-127) ** 10) or 5605 not raisesOverflowError( (-97) ** 10) or 5606 not raisesOverflowError( (-10) ** 19) or 5607 not raisesOverflowError( (-9) ** 20) or 5608 not raisesOverflowError( (-8) ** 22) or 5609 not raisesOverflowError( (-7) ** 23) or 5610 not raisesOverflowError( (-6) ** 25) or 5611 not raisesOverflowError( (-5) ** 28) or 5612 not raisesOverflowError( (-4) ** 32) or 5613 not raisesOverflowError( (-3) ** 40) or 5614 not raisesOverflowError( (-2) ** 64) or 5615 not raisesOverflowError( 2 ** 63) or 5616 not raisesOverflowError( 3 ** 40) or 5617 not raisesOverflowError( 4 ** 32) or 5618 not raisesOverflowError( 5 ** 28) or 5619 not raisesOverflowError( 6 ** 25) or 5620 not raisesOverflowError( 7 ** 23) or 5621 not raisesOverflowError( 8 ** 21) or 5622 not raisesOverflowError( 9 ** 20) or 5623 not raisesOverflowError( 10 ** 19) or 5624 not raisesOverflowError( 97 ** 10) or 5625 not raisesOverflowError( 127 ** 10) or 5626 not raisesOverflowError( 128 ** 9) or 5627 not raisesOverflowError( 129 ** 9) or 5628 not raisesOverflowError( 234 ** 9) or 5629 not raisesOverflowError( 235 ** 8) or 5630 not raisesOverflowError( 511 ** 8) or 5631 not raisesOverflowError( 512 ** 7) or 5632 not raisesOverflowError( 513 ** 7) or 5633 not raisesOverflowError( 1448 ** 7) or 5634 not raisesOverflowError( 1449 ** 6) or 5635 not raisesOverflowError( 6208 ** 6) or 5636 not raisesOverflowError( 6209 ** 5) or 5637 not raisesOverflowError( 32767 ** 5) or 5638 not raisesOverflowError( 32768 ** 5) or 5639 not raisesOverflowError( 55108 ** 5) or 5640 not raisesOverflowError( 55109 ** 4) or 5641 not raisesOverflowError( 123457 ** 4) or 5642 not raisesOverflowError( 1234577 ** 4) or 5643 not raisesOverflowError( 2097151 ** 4) or 5644 not raisesOverflowError( 2097152 ** 3) or 5645 not raisesOverflowError( 2097153 ** 3) or 5646 not raisesOverflowError( 2147483648 ** 3) or 5647 not raisesOverflowError( 3037000499 ** 3) or 5648 not raisesOverflowError( 3037000500 ** 2) or 5649 not raisesOverflowError( 9223372036854775807 ** 2) then 5650 writeln(" ***** Overflow when computing power does not raise OVERFLOW_ERROR. (1)"); 5651 okay := FALSE; 5652 end if; 5653 5654 if not raisesOverflowError(intExpr( INT64_MIN) ** 2) or 5655 not raisesOverflowError(intExpr(-9223372036854775807) ** 2) or 5656 not raisesOverflowError(intExpr( -3037000500) ** 2) or 5657 not raisesOverflowError(intExpr( -3037000499) ** 3) or 5658 not raisesOverflowError(intExpr( -2147483648) ** 3) or 5659 not raisesOverflowError(intExpr( -2097153) ** 3) or 5660 not raisesOverflowError(intExpr( -2097152) ** 4) or 5661 not raisesOverflowError(intExpr( -2097151) ** 4) or 5662 not raisesOverflowError(intExpr( -1234577) ** 4) or 5663 not raisesOverflowError(intExpr( -123457) ** 4) or 5664 not raisesOverflowError(intExpr( -55109) ** 4) or 5665 not raisesOverflowError(intExpr( -55108) ** 5) or 5666 not raisesOverflowError(intExpr( -32768) ** 5) or 5667 not raisesOverflowError(intExpr( -32767) ** 5) or 5668 not raisesOverflowError(intExpr( -6209) ** 5) or 5669 not raisesOverflowError(intExpr( -6208) ** 6) or 5670 not raisesOverflowError(intExpr( -1449) ** 6) or 5671 not raisesOverflowError(intExpr( -1448) ** 7) or 5672 not raisesOverflowError(intExpr( -513) ** 7) or 5673 not raisesOverflowError(intExpr( -512) ** 8) or 5674 not raisesOverflowError(intExpr( -511) ** 8) or 5675 not raisesOverflowError(intExpr( -235) ** 8) or 5676 not raisesOverflowError(intExpr( -234) ** 9) or 5677 not raisesOverflowError(intExpr( -129) ** 9) or 5678 not raisesOverflowError(intExpr( -128) ** 10) or 5679 not raisesOverflowError(intExpr( -127) ** 10) or 5680 not raisesOverflowError(intExpr( -97) ** 10) or 5681 not raisesOverflowError(intExpr( -10) ** 19) or 5682 not raisesOverflowError(intExpr( -9) ** 20) or 5683 not raisesOverflowError(intExpr( -8) ** 22) or 5684 not raisesOverflowError(intExpr( -7) ** 23) or 5685 not raisesOverflowError(intExpr( -6) ** 25) or 5686 not raisesOverflowError(intExpr( -5) ** 28) or 5687 not raisesOverflowError(intExpr( -4) ** 32) or 5688 not raisesOverflowError(intExpr( -3) ** 40) or 5689 not raisesOverflowError(intExpr( -2) ** 64) or 5690 not raisesOverflowError(intExpr( 2) ** 63) or 5691 not raisesOverflowError(intExpr( 3) ** 40) or 5692 not raisesOverflowError(intExpr( 4) ** 32) or 5693 not raisesOverflowError(intExpr( 5) ** 28) or 5694 not raisesOverflowError(intExpr( 6) ** 25) or 5695 not raisesOverflowError(intExpr( 7) ** 23) or 5696 not raisesOverflowError(intExpr( 8) ** 21) or 5697 not raisesOverflowError(intExpr( 9) ** 20) or 5698 not raisesOverflowError(intExpr( 10) ** 19) or 5699 not raisesOverflowError(intExpr( 97) ** 10) or 5700 not raisesOverflowError(intExpr( 127) ** 10) or 5701 not raisesOverflowError(intExpr( 128) ** 9) or 5702 not raisesOverflowError(intExpr( 129) ** 9) or 5703 not raisesOverflowError(intExpr( 234) ** 9) or 5704 not raisesOverflowError(intExpr( 235) ** 8) or 5705 not raisesOverflowError(intExpr( 511) ** 8) or 5706 not raisesOverflowError(intExpr( 512) ** 7) or 5707 not raisesOverflowError(intExpr( 513) ** 7) or 5708 not raisesOverflowError(intExpr( 1448) ** 7) or 5709 not raisesOverflowError(intExpr( 1449) ** 6) or 5710 not raisesOverflowError(intExpr( 6208) ** 6) or 5711 not raisesOverflowError(intExpr( 6209) ** 5) or 5712 not raisesOverflowError(intExpr( 32767) ** 5) or 5713 not raisesOverflowError(intExpr( 32768) ** 5) or 5714 not raisesOverflowError(intExpr( 55108) ** 5) or 5715 not raisesOverflowError(intExpr( 55109) ** 4) or 5716 not raisesOverflowError(intExpr( 123457) ** 4) or 5717 not raisesOverflowError(intExpr( 1234577) ** 4) or 5718 not raisesOverflowError(intExpr( 2097151) ** 4) or 5719 not raisesOverflowError(intExpr( 2097152) ** 3) or 5720 not raisesOverflowError(intExpr( 2097153) ** 3) or 5721 not raisesOverflowError(intExpr( 2147483648) ** 3) or 5722 not raisesOverflowError(intExpr( 3037000499) ** 3) or 5723 not raisesOverflowError(intExpr( 3037000500) ** 2) or 5724 not raisesOverflowError(intExpr( 9223372036854775807) ** 2) then 5725 writeln(" ***** Overflow when computing power does not raise OVERFLOW_ERROR. (2)"); 5726 okay := FALSE; 5727 end if; 5728 5729 if not raisesOverflowError( INT64_MIN ** intExpr( 2)) or 5730 not raisesOverflowError((-9223372036854775807) ** intExpr( 2)) or 5731 not raisesOverflowError( (-3037000500) ** intExpr( 2)) or 5732 not raisesOverflowError( (-3037000499) ** intExpr( 3)) or 5733 not raisesOverflowError( (-2147483648) ** intExpr( 3)) or 5734 not raisesOverflowError( (-2097153) ** intExpr( 3)) or 5735 not raisesOverflowError( (-2097152) ** intExpr( 4)) or 5736 not raisesOverflowError( (-2097151) ** intExpr( 4)) or 5737 not raisesOverflowError( (-1234577) ** intExpr( 4)) or 5738 not raisesOverflowError( (-123457) ** intExpr( 4)) or 5739 not raisesOverflowError( (-55109) ** intExpr( 4)) or 5740 not raisesOverflowError( (-55108) ** intExpr( 5)) or 5741 not raisesOverflowError( (-32768) ** intExpr( 5)) or 5742 not raisesOverflowError( (-32767) ** intExpr( 5)) or 5743 not raisesOverflowError( (-6209) ** intExpr( 5)) or 5744 not raisesOverflowError( (-6208) ** intExpr( 6)) or 5745 not raisesOverflowError( (-1449) ** intExpr( 6)) or 5746 not raisesOverflowError( (-1448) ** intExpr( 7)) or 5747 not raisesOverflowError( (-513) ** intExpr( 7)) or 5748 not raisesOverflowError( (-512) ** intExpr( 8)) or 5749 not raisesOverflowError( (-511) ** intExpr( 8)) or 5750 not raisesOverflowError( (-235) ** intExpr( 8)) or 5751 not raisesOverflowError( (-234) ** intExpr( 9)) or 5752 not raisesOverflowError( (-129) ** intExpr( 9)) or 5753 not raisesOverflowError( (-128) ** intExpr(10)) or 5754 not raisesOverflowError( (-127) ** intExpr(10)) or 5755 not raisesOverflowError( (-97) ** intExpr(10)) or 5756 not raisesOverflowError( (-10) ** intExpr(19)) or 5757 not raisesOverflowError( (-9) ** intExpr(20)) or 5758 not raisesOverflowError( (-8) ** intExpr(22)) or 5759 not raisesOverflowError( (-7) ** intExpr(23)) or 5760 not raisesOverflowError( (-6) ** intExpr(25)) or 5761 not raisesOverflowError( (-5) ** intExpr(28)) or 5762 not raisesOverflowError( (-4) ** intExpr(32)) or 5763 not raisesOverflowError( (-3) ** intExpr(40)) or 5764 not raisesOverflowError( (-2) ** intExpr(64)) or 5765 not raisesOverflowError( 2 ** intExpr(63)) or 5766 not raisesOverflowError( 3 ** intExpr(40)) or 5767 not raisesOverflowError( 4 ** intExpr(32)) or 5768 not raisesOverflowError( 5 ** intExpr(28)) or 5769 not raisesOverflowError( 6 ** intExpr(25)) or 5770 not raisesOverflowError( 7 ** intExpr(23)) or 5771 not raisesOverflowError( 8 ** intExpr(21)) or 5772 not raisesOverflowError( 9 ** intExpr(20)) or 5773 not raisesOverflowError( 10 ** intExpr(19)) or 5774 not raisesOverflowError( 97 ** intExpr(10)) or 5775 not raisesOverflowError( 127 ** intExpr(10)) or 5776 not raisesOverflowError( 128 ** intExpr( 9)) or 5777 not raisesOverflowError( 129 ** intExpr( 9)) or 5778 not raisesOverflowError( 234 ** intExpr( 9)) or 5779 not raisesOverflowError( 235 ** intExpr( 8)) or 5780 not raisesOverflowError( 511 ** intExpr( 8)) or 5781 not raisesOverflowError( 512 ** intExpr( 7)) or 5782 not raisesOverflowError( 513 ** intExpr( 7)) or 5783 not raisesOverflowError( 1448 ** intExpr( 7)) or 5784 not raisesOverflowError( 1449 ** intExpr( 6)) or 5785 not raisesOverflowError( 6208 ** intExpr( 6)) or 5786 not raisesOverflowError( 6209 ** intExpr( 5)) or 5787 not raisesOverflowError( 32767 ** intExpr( 5)) or 5788 not raisesOverflowError( 32768 ** intExpr( 5)) or 5789 not raisesOverflowError( 55108 ** intExpr( 5)) or 5790 not raisesOverflowError( 55109 ** intExpr( 4)) or 5791 not raisesOverflowError( 123457 ** intExpr( 4)) or 5792 not raisesOverflowError( 1234577 ** intExpr( 4)) or 5793 not raisesOverflowError( 2097151 ** intExpr( 4)) or 5794 not raisesOverflowError( 2097152 ** intExpr( 3)) or 5795 not raisesOverflowError( 2097153 ** intExpr( 3)) or 5796 not raisesOverflowError( 2147483648 ** intExpr( 3)) or 5797 not raisesOverflowError( 3037000499 ** intExpr( 3)) or 5798 not raisesOverflowError( 3037000500 ** intExpr( 2)) or 5799 not raisesOverflowError( 9223372036854775807 ** intExpr( 2)) then 5800 writeln(" ***** Overflow when computing power does not raise OVERFLOW_ERROR. (3)"); 5801 okay := FALSE; 5802 end if; 5803 5804 if not raisesOverflowError(intExpr( INT64_MIN) ** intExpr( 2)) or 5805 not raisesOverflowError(intExpr(-9223372036854775807) ** intExpr( 2)) or 5806 not raisesOverflowError(intExpr( -3037000500) ** intExpr( 2)) or 5807 not raisesOverflowError(intExpr( -3037000499) ** intExpr( 3)) or 5808 not raisesOverflowError(intExpr( -2147483648) ** intExpr( 3)) or 5809 not raisesOverflowError(intExpr( -2097153) ** intExpr( 3)) or 5810 not raisesOverflowError(intExpr( -2097152) ** intExpr( 4)) or 5811 not raisesOverflowError(intExpr( -2097151) ** intExpr( 4)) or 5812 not raisesOverflowError(intExpr( -1234577) ** intExpr( 4)) or 5813 not raisesOverflowError(intExpr( -123457) ** intExpr( 4)) or 5814 not raisesOverflowError(intExpr( -55109) ** intExpr( 4)) or 5815 not raisesOverflowError(intExpr( -55108) ** intExpr( 5)) or 5816 not raisesOverflowError(intExpr( -32768) ** intExpr( 5)) or 5817 not raisesOverflowError(intExpr( -32767) ** intExpr( 5)) or 5818 not raisesOverflowError(intExpr( -6209) ** intExpr( 5)) or 5819 not raisesOverflowError(intExpr( -6208) ** intExpr( 6)) or 5820 not raisesOverflowError(intExpr( -1449) ** intExpr( 6)) or 5821 not raisesOverflowError(intExpr( -1448) ** intExpr( 7)) or 5822 not raisesOverflowError(intExpr( -513) ** intExpr( 7)) or 5823 not raisesOverflowError(intExpr( -512) ** intExpr( 8)) or 5824 not raisesOverflowError(intExpr( -511) ** intExpr( 8)) or 5825 not raisesOverflowError(intExpr( -235) ** intExpr( 8)) or 5826 not raisesOverflowError(intExpr( -234) ** intExpr( 9)) or 5827 not raisesOverflowError(intExpr( -129) ** intExpr( 9)) or 5828 not raisesOverflowError(intExpr( -128) ** intExpr(10)) or 5829 not raisesOverflowError(intExpr( -127) ** intExpr(10)) or 5830 not raisesOverflowError(intExpr( -97) ** intExpr(10)) or 5831 not raisesOverflowError(intExpr( -10) ** intExpr(19)) or 5832 not raisesOverflowError(intExpr( -9) ** intExpr(20)) or 5833 not raisesOverflowError(intExpr( -8) ** intExpr(22)) or 5834 not raisesOverflowError(intExpr( -7) ** intExpr(23)) or 5835 not raisesOverflowError(intExpr( -6) ** intExpr(25)) or 5836 not raisesOverflowError(intExpr( -5) ** intExpr(28)) or 5837 not raisesOverflowError(intExpr( -4) ** intExpr(32)) or 5838 not raisesOverflowError(intExpr( -3) ** intExpr(40)) or 5839 not raisesOverflowError(intExpr( -2) ** intExpr(64)) or 5840 not raisesOverflowError(intExpr( 2) ** intExpr(63)) or 5841 not raisesOverflowError(intExpr( 3) ** intExpr(40)) or 5842 not raisesOverflowError(intExpr( 4) ** intExpr(32)) or 5843 not raisesOverflowError(intExpr( 5) ** intExpr(28)) or 5844 not raisesOverflowError(intExpr( 6) ** intExpr(25)) or 5845 not raisesOverflowError(intExpr( 7) ** intExpr(23)) or 5846 not raisesOverflowError(intExpr( 8) ** intExpr(21)) or 5847 not raisesOverflowError(intExpr( 9) ** intExpr(20)) or 5848 not raisesOverflowError(intExpr( 10) ** intExpr(19)) or 5849 not raisesOverflowError(intExpr( 97) ** intExpr(10)) or 5850 not raisesOverflowError(intExpr( 127) ** intExpr(10)) or 5851 not raisesOverflowError(intExpr( 128) ** intExpr( 9)) or 5852 not raisesOverflowError(intExpr( 129) ** intExpr( 9)) or 5853 not raisesOverflowError(intExpr( 234) ** intExpr( 9)) or 5854 not raisesOverflowError(intExpr( 235) ** intExpr( 8)) or 5855 not raisesOverflowError(intExpr( 511) ** intExpr( 8)) or 5856 not raisesOverflowError(intExpr( 512) ** intExpr( 7)) or 5857 not raisesOverflowError(intExpr( 513) ** intExpr( 7)) or 5858 not raisesOverflowError(intExpr( 1448) ** intExpr( 7)) or 5859 not raisesOverflowError(intExpr( 1449) ** intExpr( 6)) or 5860 not raisesOverflowError(intExpr( 6208) ** intExpr( 6)) or 5861 not raisesOverflowError(intExpr( 6209) ** intExpr( 5)) or 5862 not raisesOverflowError(intExpr( 32767) ** intExpr( 5)) or 5863 not raisesOverflowError(intExpr( 32768) ** intExpr( 5)) or 5864 not raisesOverflowError(intExpr( 55108) ** intExpr( 5)) or 5865 not raisesOverflowError(intExpr( 55109) ** intExpr( 4)) or 5866 not raisesOverflowError(intExpr( 123457) ** intExpr( 4)) or 5867 not raisesOverflowError(intExpr( 1234577) ** intExpr( 4)) or 5868 not raisesOverflowError(intExpr( 2097151) ** intExpr( 4)) or 5869 not raisesOverflowError(intExpr( 2097152) ** intExpr( 3)) or 5870 not raisesOverflowError(intExpr( 2097153) ** intExpr( 3)) or 5871 not raisesOverflowError(intExpr( 2147483648) ** intExpr( 3)) or 5872 not raisesOverflowError(intExpr( 3037000499) ** intExpr( 3)) or 5873 not raisesOverflowError(intExpr( 3037000500) ** intExpr( 2)) or 5874 not raisesOverflowError(intExpr( 9223372036854775807) ** intExpr( 2)) then 5875 writeln(" ***** Overflow when computing power does not raise OVERFLOW_ERROR. (4)"); 5876 okay := FALSE; 5877 end if; 5878 5879 if okay then 5880 writeln("Overflow checking of power works correct."); 5881 else 5882 writeln(" ***** Overflow checking of power does not work correct."); 5883 end if; 5884 end func; 5885 5886 5887const proc: check_binom is func 5888 local 5889 var boolean: okay is TRUE; 5890 begin 5891 if not raisesOverflowError((-99) ! 16) or 5892 not raisesOverflowError((-98) ! 16) or 5893 not raisesOverflowError((-97) ! 16) or 5894 not raisesOverflowError((-96) ! 17) or 5895 not raisesOverflowError((-95) ! 17) or 5896 not raisesOverflowError((-94) ! 17) or 5897 not raisesOverflowError((-93) ! 17) or 5898 not raisesOverflowError((-92) ! 17) or 5899 not raisesOverflowError((-91) ! 17) or 5900 not raisesOverflowError((-90) ! 17) or 5901 not raisesOverflowError((-89) ! 17) or 5902 not raisesOverflowError((-88) ! 17) or 5903 not raisesOverflowError((-87) ! 17) or 5904 not raisesOverflowError((-86) ! 17) or 5905 not raisesOverflowError((-85) ! 18) or 5906 not raisesOverflowError((-84) ! 18) or 5907 not raisesOverflowError((-83) ! 18) or 5908 not raisesOverflowError((-82) ! 18) or 5909 not raisesOverflowError((-81) ! 18) or 5910 not raisesOverflowError((-80) ! 18) or 5911 not raisesOverflowError((-79) ! 18) or 5912 not raisesOverflowError((-78) ! 18) or 5913 not raisesOverflowError((-77) ! 19) or 5914 not raisesOverflowError((-76) ! 19) or 5915 not raisesOverflowError((-75) ! 19) or 5916 not raisesOverflowError((-74) ! 19) or 5917 not raisesOverflowError((-73) ! 19) or 5918 not raisesOverflowError((-72) ! 19) or 5919 not raisesOverflowError((-71) ! 19) or 5920 not raisesOverflowError((-70) ! 20) or 5921 not raisesOverflowError((-69) ! 20) or 5922 not raisesOverflowError((-68) ! 20) or 5923 not raisesOverflowError((-67) ! 20) or 5924 not raisesOverflowError((-66) ! 20) or 5925 not raisesOverflowError((-65) ! 20) or 5926 not raisesOverflowError((-64) ! 21) or 5927 not raisesOverflowError((-63) ! 21) or 5928 not raisesOverflowError((-62) ! 21) or 5929 not raisesOverflowError((-61) ! 21) or 5930 not raisesOverflowError((-60) ! 21) or 5931 not raisesOverflowError((-59) ! 22) or 5932 not raisesOverflowError((-58) ! 22) or 5933 not raisesOverflowError((-57) ! 22) or 5934 not raisesOverflowError((-56) ! 22) or 5935 not raisesOverflowError((-55) ! 23) or 5936 not raisesOverflowError((-54) ! 23) or 5937 not raisesOverflowError((-53) ! 23) or 5938 not raisesOverflowError((-52) ! 24) or 5939 not raisesOverflowError((-51) ! 24) or 5940 not raisesOverflowError((-50) ! 24) or 5941 not raisesOverflowError((-49) ! 25) or 5942 not raisesOverflowError((-48) ! 25) or 5943 not raisesOverflowError((-47) ! 25) or 5944 not raisesOverflowError((-46) ! 26) or 5945 not raisesOverflowError((-45) ! 26) or 5946 not raisesOverflowError((-44) ! 27) or 5947 not raisesOverflowError((-43) ! 27) or 5948 not raisesOverflowError((-42) ! 28) or 5949 not raisesOverflowError((-41) ! 28) or 5950 not raisesOverflowError((-40) ! 29) or 5951 not raisesOverflowError((-39) ! 30) or 5952 not raisesOverflowError((-38) ! 30) or 5953 not raisesOverflowError((-37) ! 31) or 5954 not raisesOverflowError((-36) ! 32) or 5955 not raisesOverflowError((-35) ! 33) or 5956 not raisesOverflowError((-34) ! 34) or 5957 not raisesOverflowError((-33) ! 35) or 5958 not raisesOverflowError((-32) ! 36) or 5959 not raisesOverflowError((-31) ! 37) or 5960 not raisesOverflowError((-30) ! 39) or 5961 not raisesOverflowError((-29) ! 40) or 5962 not raisesOverflowError((-28) ! 42) or 5963 not raisesOverflowError((-27) ! 44) or 5964 not raisesOverflowError((-26) ! 46) or 5965 not raisesOverflowError((-25) ! 49) or 5966 not raisesOverflowError((-24) ! 52) or 5967 not raisesOverflowError((-23) ! 55) or 5968 not raisesOverflowError((-22) ! 59) or 5969 not raisesOverflowError((-21) ! 64) or 5970 not raisesOverflowError((-20) ! 70) or 5971 not raisesOverflowError((-19) ! 77) or 5972 not raisesOverflowError((-18) ! 85) or 5973 not raisesOverflowError((-17) ! 96) or 5974 not raisesOverflowError((-16) ! 111) or 5975 not raisesOverflowError((-15) ! 130) or 5976 not raisesOverflowError((-14) ! 157) or 5977 not raisesOverflowError((-13) ! 195) or 5978 not raisesOverflowError((-12) ! 255) or 5979 not raisesOverflowError((-11) ! 352) or 5980 not raisesOverflowError((-10) ! 526) or 5981 not raisesOverflowError(( -9) ! 880) or 5982 not raisesOverflowError(( -8) ! 1727) or 5983 not raisesOverflowError(( -7) ! 4332) or 5984 not raisesOverflowError(( -6) ! 16171) or 5985 not raisesOverflowError(( -5) ! 121974) or 5986 not raisesOverflowError(( -4) ! 3810777) or 5987 not raisesOverflowError(( -3) ! 4294967295) then 5988 writeln(" ***** Overflow not raised for binomial coefficient with negative n. (1)"); 5989 okay := FALSE; 5990 end if; 5991 5992 if not raisesOverflowError(intExpr(-99) ! 16) or 5993 not raisesOverflowError(intExpr(-98) ! 16) or 5994 not raisesOverflowError(intExpr(-97) ! 16) or 5995 not raisesOverflowError(intExpr(-96) ! 17) or 5996 not raisesOverflowError(intExpr(-95) ! 17) or 5997 not raisesOverflowError(intExpr(-94) ! 17) or 5998 not raisesOverflowError(intExpr(-93) ! 17) or 5999 not raisesOverflowError(intExpr(-92) ! 17) or 6000 not raisesOverflowError(intExpr(-91) ! 17) or 6001 not raisesOverflowError(intExpr(-90) ! 17) or 6002 not raisesOverflowError(intExpr(-89) ! 17) or 6003 not raisesOverflowError(intExpr(-88) ! 17) or 6004 not raisesOverflowError(intExpr(-87) ! 17) or 6005 not raisesOverflowError(intExpr(-86) ! 17) or 6006 not raisesOverflowError(intExpr(-85) ! 18) or 6007 not raisesOverflowError(intExpr(-84) ! 18) or 6008 not raisesOverflowError(intExpr(-83) ! 18) or 6009 not raisesOverflowError(intExpr(-82) ! 18) or 6010 not raisesOverflowError(intExpr(-81) ! 18) or 6011 not raisesOverflowError(intExpr(-80) ! 18) or 6012 not raisesOverflowError(intExpr(-79) ! 18) or 6013 not raisesOverflowError(intExpr(-78) ! 18) or 6014 not raisesOverflowError(intExpr(-77) ! 19) or 6015 not raisesOverflowError(intExpr(-76) ! 19) or 6016 not raisesOverflowError(intExpr(-75) ! 19) or 6017 not raisesOverflowError(intExpr(-74) ! 19) or 6018 not raisesOverflowError(intExpr(-73) ! 19) or 6019 not raisesOverflowError(intExpr(-72) ! 19) or 6020 not raisesOverflowError(intExpr(-71) ! 19) or 6021 not raisesOverflowError(intExpr(-70) ! 20) or 6022 not raisesOverflowError(intExpr(-69) ! 20) or 6023 not raisesOverflowError(intExpr(-68) ! 20) or 6024 not raisesOverflowError(intExpr(-67) ! 20) or 6025 not raisesOverflowError(intExpr(-66) ! 20) or 6026 not raisesOverflowError(intExpr(-65) ! 20) or 6027 not raisesOverflowError(intExpr(-64) ! 21) or 6028 not raisesOverflowError(intExpr(-63) ! 21) or 6029 not raisesOverflowError(intExpr(-62) ! 21) or 6030 not raisesOverflowError(intExpr(-61) ! 21) or 6031 not raisesOverflowError(intExpr(-60) ! 21) or 6032 not raisesOverflowError(intExpr(-59) ! 22) or 6033 not raisesOverflowError(intExpr(-58) ! 22) or 6034 not raisesOverflowError(intExpr(-57) ! 22) or 6035 not raisesOverflowError(intExpr(-56) ! 22) or 6036 not raisesOverflowError(intExpr(-55) ! 23) or 6037 not raisesOverflowError(intExpr(-54) ! 23) or 6038 not raisesOverflowError(intExpr(-53) ! 23) or 6039 not raisesOverflowError(intExpr(-52) ! 24) or 6040 not raisesOverflowError(intExpr(-51) ! 24) or 6041 not raisesOverflowError(intExpr(-50) ! 24) or 6042 not raisesOverflowError(intExpr(-49) ! 25) or 6043 not raisesOverflowError(intExpr(-48) ! 25) or 6044 not raisesOverflowError(intExpr(-47) ! 25) or 6045 not raisesOverflowError(intExpr(-46) ! 26) or 6046 not raisesOverflowError(intExpr(-45) ! 26) or 6047 not raisesOverflowError(intExpr(-44) ! 27) or 6048 not raisesOverflowError(intExpr(-43) ! 27) or 6049 not raisesOverflowError(intExpr(-42) ! 28) or 6050 not raisesOverflowError(intExpr(-41) ! 28) or 6051 not raisesOverflowError(intExpr(-40) ! 29) or 6052 not raisesOverflowError(intExpr(-39) ! 30) or 6053 not raisesOverflowError(intExpr(-38) ! 30) or 6054 not raisesOverflowError(intExpr(-37) ! 31) or 6055 not raisesOverflowError(intExpr(-36) ! 32) or 6056 not raisesOverflowError(intExpr(-35) ! 33) or 6057 not raisesOverflowError(intExpr(-34) ! 34) or 6058 not raisesOverflowError(intExpr(-33) ! 35) or 6059 not raisesOverflowError(intExpr(-32) ! 36) or 6060 not raisesOverflowError(intExpr(-31) ! 37) or 6061 not raisesOverflowError(intExpr(-30) ! 39) or 6062 not raisesOverflowError(intExpr(-29) ! 40) or 6063 not raisesOverflowError(intExpr(-28) ! 42) or 6064 not raisesOverflowError(intExpr(-27) ! 44) or 6065 not raisesOverflowError(intExpr(-26) ! 46) or 6066 not raisesOverflowError(intExpr(-25) ! 49) or 6067 not raisesOverflowError(intExpr(-24) ! 52) or 6068 not raisesOverflowError(intExpr(-23) ! 55) or 6069 not raisesOverflowError(intExpr(-22) ! 59) or 6070 not raisesOverflowError(intExpr(-21) ! 64) or 6071 not raisesOverflowError(intExpr(-20) ! 70) or 6072 not raisesOverflowError(intExpr(-19) ! 77) or 6073 not raisesOverflowError(intExpr(-18) ! 85) or 6074 not raisesOverflowError(intExpr(-17) ! 96) or 6075 not raisesOverflowError(intExpr(-16) ! 111) or 6076 not raisesOverflowError(intExpr(-15) ! 130) or 6077 not raisesOverflowError(intExpr(-14) ! 157) or 6078 not raisesOverflowError(intExpr(-13) ! 195) or 6079 not raisesOverflowError(intExpr(-12) ! 255) or 6080 not raisesOverflowError(intExpr(-11) ! 352) or 6081 not raisesOverflowError(intExpr(-10) ! 526) or 6082 not raisesOverflowError(intExpr( -9) ! 880) or 6083 not raisesOverflowError(intExpr( -8) ! 1727) or 6084 not raisesOverflowError(intExpr( -7) ! 4332) or 6085 not raisesOverflowError(intExpr( -6) ! 16171) or 6086 not raisesOverflowError(intExpr( -5) ! 121974) or 6087 not raisesOverflowError(intExpr( -4) ! 3810777) or 6088 not raisesOverflowError(intExpr( -3) ! 4294967295) then 6089 writeln(" ***** Overflow not raised for binomial coefficient with negative n. (2)"); 6090 okay := FALSE; 6091 end if; 6092 6093 if not raisesOverflowError((-99) ! intExpr( 16)) or 6094 not raisesOverflowError((-98) ! intExpr( 16)) or 6095 not raisesOverflowError((-97) ! intExpr( 16)) or 6096 not raisesOverflowError((-96) ! intExpr( 17)) or 6097 not raisesOverflowError((-95) ! intExpr( 17)) or 6098 not raisesOverflowError((-94) ! intExpr( 17)) or 6099 not raisesOverflowError((-93) ! intExpr( 17)) or 6100 not raisesOverflowError((-92) ! intExpr( 17)) or 6101 not raisesOverflowError((-91) ! intExpr( 17)) or 6102 not raisesOverflowError((-90) ! intExpr( 17)) or 6103 not raisesOverflowError((-89) ! intExpr( 17)) or 6104 not raisesOverflowError((-88) ! intExpr( 17)) or 6105 not raisesOverflowError((-87) ! intExpr( 17)) or 6106 not raisesOverflowError((-86) ! intExpr( 17)) or 6107 not raisesOverflowError((-85) ! intExpr( 18)) or 6108 not raisesOverflowError((-84) ! intExpr( 18)) or 6109 not raisesOverflowError((-83) ! intExpr( 18)) or 6110 not raisesOverflowError((-82) ! intExpr( 18)) or 6111 not raisesOverflowError((-81) ! intExpr( 18)) or 6112 not raisesOverflowError((-80) ! intExpr( 18)) or 6113 not raisesOverflowError((-79) ! intExpr( 18)) or 6114 not raisesOverflowError((-78) ! intExpr( 18)) or 6115 not raisesOverflowError((-77) ! intExpr( 19)) or 6116 not raisesOverflowError((-76) ! intExpr( 19)) or 6117 not raisesOverflowError((-75) ! intExpr( 19)) or 6118 not raisesOverflowError((-74) ! intExpr( 19)) or 6119 not raisesOverflowError((-73) ! intExpr( 19)) or 6120 not raisesOverflowError((-72) ! intExpr( 19)) or 6121 not raisesOverflowError((-71) ! intExpr( 19)) or 6122 not raisesOverflowError((-70) ! intExpr( 20)) or 6123 not raisesOverflowError((-69) ! intExpr( 20)) or 6124 not raisesOverflowError((-68) ! intExpr( 20)) or 6125 not raisesOverflowError((-67) ! intExpr( 20)) or 6126 not raisesOverflowError((-66) ! intExpr( 20)) or 6127 not raisesOverflowError((-65) ! intExpr( 20)) or 6128 not raisesOverflowError((-64) ! intExpr( 21)) or 6129 not raisesOverflowError((-63) ! intExpr( 21)) or 6130 not raisesOverflowError((-62) ! intExpr( 21)) or 6131 not raisesOverflowError((-61) ! intExpr( 21)) or 6132 not raisesOverflowError((-60) ! intExpr( 21)) or 6133 not raisesOverflowError((-59) ! intExpr( 22)) or 6134 not raisesOverflowError((-58) ! intExpr( 22)) or 6135 not raisesOverflowError((-57) ! intExpr( 22)) or 6136 not raisesOverflowError((-56) ! intExpr( 22)) or 6137 not raisesOverflowError((-55) ! intExpr( 23)) or 6138 not raisesOverflowError((-54) ! intExpr( 23)) or 6139 not raisesOverflowError((-53) ! intExpr( 23)) or 6140 not raisesOverflowError((-52) ! intExpr( 24)) or 6141 not raisesOverflowError((-51) ! intExpr( 24)) or 6142 not raisesOverflowError((-50) ! intExpr( 24)) or 6143 not raisesOverflowError((-49) ! intExpr( 25)) or 6144 not raisesOverflowError((-48) ! intExpr( 25)) or 6145 not raisesOverflowError((-47) ! intExpr( 25)) or 6146 not raisesOverflowError((-46) ! intExpr( 26)) or 6147 not raisesOverflowError((-45) ! intExpr( 26)) or 6148 not raisesOverflowError((-44) ! intExpr( 27)) or 6149 not raisesOverflowError((-43) ! intExpr( 27)) or 6150 not raisesOverflowError((-42) ! intExpr( 28)) or 6151 not raisesOverflowError((-41) ! intExpr( 28)) or 6152 not raisesOverflowError((-40) ! intExpr( 29)) or 6153 not raisesOverflowError((-39) ! intExpr( 30)) or 6154 not raisesOverflowError((-38) ! intExpr( 30)) or 6155 not raisesOverflowError((-37) ! intExpr( 31)) or 6156 not raisesOverflowError((-36) ! intExpr( 32)) or 6157 not raisesOverflowError((-35) ! intExpr( 33)) or 6158 not raisesOverflowError((-34) ! intExpr( 34)) or 6159 not raisesOverflowError((-33) ! intExpr( 35)) or 6160 not raisesOverflowError((-32) ! intExpr( 36)) or 6161 not raisesOverflowError((-31) ! intExpr( 37)) or 6162 not raisesOverflowError((-30) ! intExpr( 39)) or 6163 not raisesOverflowError((-29) ! intExpr( 40)) or 6164 not raisesOverflowError((-28) ! intExpr( 42)) or 6165 not raisesOverflowError((-27) ! intExpr( 44)) or 6166 not raisesOverflowError((-26) ! intExpr( 46)) or 6167 not raisesOverflowError((-25) ! intExpr( 49)) or 6168 not raisesOverflowError((-24) ! intExpr( 52)) or 6169 not raisesOverflowError((-23) ! intExpr( 55)) or 6170 not raisesOverflowError((-22) ! intExpr( 59)) or 6171 not raisesOverflowError((-21) ! intExpr( 64)) or 6172 not raisesOverflowError((-20) ! intExpr( 70)) or 6173 not raisesOverflowError((-19) ! intExpr( 77)) or 6174 not raisesOverflowError((-18) ! intExpr( 85)) or 6175 not raisesOverflowError((-17) ! intExpr( 96)) or 6176 not raisesOverflowError((-16) ! intExpr( 111)) or 6177 not raisesOverflowError((-15) ! intExpr( 130)) or 6178 not raisesOverflowError((-14) ! intExpr( 157)) or 6179 not raisesOverflowError((-13) ! intExpr( 195)) or 6180 not raisesOverflowError((-12) ! intExpr( 255)) or 6181 not raisesOverflowError((-11) ! intExpr( 352)) or 6182 not raisesOverflowError((-10) ! intExpr( 526)) or 6183 not raisesOverflowError(( -9) ! intExpr( 880)) or 6184 not raisesOverflowError(( -8) ! intExpr( 1727)) or 6185 not raisesOverflowError(( -7) ! intExpr( 4332)) or 6186 not raisesOverflowError(( -6) ! intExpr( 16171)) or 6187 not raisesOverflowError(( -5) ! intExpr( 121974)) or 6188 not raisesOverflowError(( -4) ! intExpr( 3810777)) or 6189 not raisesOverflowError(( -3) ! intExpr(4294967295)) then 6190 writeln(" ***** Overflow not raised for binomial coefficient with negative n. (3)"); 6191 okay := FALSE; 6192 end if; 6193 6194 if not raisesOverflowError(intExpr(-99) ! intExpr( 16)) or 6195 not raisesOverflowError(intExpr(-98) ! intExpr( 16)) or 6196 not raisesOverflowError(intExpr(-97) ! intExpr( 16)) or 6197 not raisesOverflowError(intExpr(-96) ! intExpr( 17)) or 6198 not raisesOverflowError(intExpr(-95) ! intExpr( 17)) or 6199 not raisesOverflowError(intExpr(-94) ! intExpr( 17)) or 6200 not raisesOverflowError(intExpr(-93) ! intExpr( 17)) or 6201 not raisesOverflowError(intExpr(-92) ! intExpr( 17)) or 6202 not raisesOverflowError(intExpr(-91) ! intExpr( 17)) or 6203 not raisesOverflowError(intExpr(-90) ! intExpr( 17)) or 6204 not raisesOverflowError(intExpr(-89) ! intExpr( 17)) or 6205 not raisesOverflowError(intExpr(-88) ! intExpr( 17)) or 6206 not raisesOverflowError(intExpr(-87) ! intExpr( 17)) or 6207 not raisesOverflowError(intExpr(-86) ! intExpr( 17)) or 6208 not raisesOverflowError(intExpr(-85) ! intExpr( 18)) or 6209 not raisesOverflowError(intExpr(-84) ! intExpr( 18)) or 6210 not raisesOverflowError(intExpr(-83) ! intExpr( 18)) or 6211 not raisesOverflowError(intExpr(-82) ! intExpr( 18)) or 6212 not raisesOverflowError(intExpr(-81) ! intExpr( 18)) or 6213 not raisesOverflowError(intExpr(-80) ! intExpr( 18)) or 6214 not raisesOverflowError(intExpr(-79) ! intExpr( 18)) or 6215 not raisesOverflowError(intExpr(-78) ! intExpr( 18)) or 6216 not raisesOverflowError(intExpr(-77) ! intExpr( 19)) or 6217 not raisesOverflowError(intExpr(-76) ! intExpr( 19)) or 6218 not raisesOverflowError(intExpr(-75) ! intExpr( 19)) or 6219 not raisesOverflowError(intExpr(-74) ! intExpr( 19)) or 6220 not raisesOverflowError(intExpr(-73) ! intExpr( 19)) or 6221 not raisesOverflowError(intExpr(-72) ! intExpr( 19)) or 6222 not raisesOverflowError(intExpr(-71) ! intExpr( 19)) or 6223 not raisesOverflowError(intExpr(-70) ! intExpr( 20)) or 6224 not raisesOverflowError(intExpr(-69) ! intExpr( 20)) or 6225 not raisesOverflowError(intExpr(-68) ! intExpr( 20)) or 6226 not raisesOverflowError(intExpr(-67) ! intExpr( 20)) or 6227 not raisesOverflowError(intExpr(-66) ! intExpr( 20)) or 6228 not raisesOverflowError(intExpr(-65) ! intExpr( 20)) or 6229 not raisesOverflowError(intExpr(-64) ! intExpr( 21)) or 6230 not raisesOverflowError(intExpr(-63) ! intExpr( 21)) or 6231 not raisesOverflowError(intExpr(-62) ! intExpr( 21)) or 6232 not raisesOverflowError(intExpr(-61) ! intExpr( 21)) or 6233 not raisesOverflowError(intExpr(-60) ! intExpr( 21)) or 6234 not raisesOverflowError(intExpr(-59) ! intExpr( 22)) or 6235 not raisesOverflowError(intExpr(-58) ! intExpr( 22)) or 6236 not raisesOverflowError(intExpr(-57) ! intExpr( 22)) or 6237 not raisesOverflowError(intExpr(-56) ! intExpr( 22)) or 6238 not raisesOverflowError(intExpr(-55) ! intExpr( 23)) or 6239 not raisesOverflowError(intExpr(-54) ! intExpr( 23)) or 6240 not raisesOverflowError(intExpr(-53) ! intExpr( 23)) or 6241 not raisesOverflowError(intExpr(-52) ! intExpr( 24)) or 6242 not raisesOverflowError(intExpr(-51) ! intExpr( 24)) or 6243 not raisesOverflowError(intExpr(-50) ! intExpr( 24)) or 6244 not raisesOverflowError(intExpr(-49) ! intExpr( 25)) or 6245 not raisesOverflowError(intExpr(-48) ! intExpr( 25)) or 6246 not raisesOverflowError(intExpr(-47) ! intExpr( 25)) or 6247 not raisesOverflowError(intExpr(-46) ! intExpr( 26)) or 6248 not raisesOverflowError(intExpr(-45) ! intExpr( 26)) or 6249 not raisesOverflowError(intExpr(-44) ! intExpr( 27)) or 6250 not raisesOverflowError(intExpr(-43) ! intExpr( 27)) or 6251 not raisesOverflowError(intExpr(-42) ! intExpr( 28)) or 6252 not raisesOverflowError(intExpr(-41) ! intExpr( 28)) or 6253 not raisesOverflowError(intExpr(-40) ! intExpr( 29)) or 6254 not raisesOverflowError(intExpr(-39) ! intExpr( 30)) or 6255 not raisesOverflowError(intExpr(-38) ! intExpr( 30)) or 6256 not raisesOverflowError(intExpr(-37) ! intExpr( 31)) or 6257 not raisesOverflowError(intExpr(-36) ! intExpr( 32)) or 6258 not raisesOverflowError(intExpr(-35) ! intExpr( 33)) or 6259 not raisesOverflowError(intExpr(-34) ! intExpr( 34)) or 6260 not raisesOverflowError(intExpr(-33) ! intExpr( 35)) or 6261 not raisesOverflowError(intExpr(-32) ! intExpr( 36)) or 6262 not raisesOverflowError(intExpr(-31) ! intExpr( 37)) or 6263 not raisesOverflowError(intExpr(-30) ! intExpr( 39)) or 6264 not raisesOverflowError(intExpr(-29) ! intExpr( 40)) or 6265 not raisesOverflowError(intExpr(-28) ! intExpr( 42)) or 6266 not raisesOverflowError(intExpr(-27) ! intExpr( 44)) or 6267 not raisesOverflowError(intExpr(-26) ! intExpr( 46)) or 6268 not raisesOverflowError(intExpr(-25) ! intExpr( 49)) or 6269 not raisesOverflowError(intExpr(-24) ! intExpr( 52)) or 6270 not raisesOverflowError(intExpr(-23) ! intExpr( 55)) or 6271 not raisesOverflowError(intExpr(-22) ! intExpr( 59)) or 6272 not raisesOverflowError(intExpr(-21) ! intExpr( 64)) or 6273 not raisesOverflowError(intExpr(-20) ! intExpr( 70)) or 6274 not raisesOverflowError(intExpr(-19) ! intExpr( 77)) or 6275 not raisesOverflowError(intExpr(-18) ! intExpr( 85)) or 6276 not raisesOverflowError(intExpr(-17) ! intExpr( 96)) or 6277 not raisesOverflowError(intExpr(-16) ! intExpr( 111)) or 6278 not raisesOverflowError(intExpr(-15) ! intExpr( 130)) or 6279 not raisesOverflowError(intExpr(-14) ! intExpr( 157)) or 6280 not raisesOverflowError(intExpr(-13) ! intExpr( 195)) or 6281 not raisesOverflowError(intExpr(-12) ! intExpr( 255)) or 6282 not raisesOverflowError(intExpr(-11) ! intExpr( 352)) or 6283 not raisesOverflowError(intExpr(-10) ! intExpr( 526)) or 6284 not raisesOverflowError(intExpr( -9) ! intExpr( 880)) or 6285 not raisesOverflowError(intExpr( -8) ! intExpr( 1727)) or 6286 not raisesOverflowError(intExpr( -7) ! intExpr( 4332)) or 6287 not raisesOverflowError(intExpr( -6) ! intExpr( 16171)) or 6288 not raisesOverflowError(intExpr( -5) ! intExpr( 121974)) or 6289 not raisesOverflowError(intExpr( -4) ! intExpr( 3810777)) or 6290 not raisesOverflowError(intExpr( -3) ! intExpr(4294967295)) then 6291 writeln(" ***** Overflow not raised for binomial coefficient with negative n. (4)"); 6292 okay := FALSE; 6293 end if; 6294 6295 if not raisesOverflowError(4294967297 ! 2) or 6296 not raisesOverflowError( 3810780 ! 3) or 6297 not raisesOverflowError( 121978 ! 4) or 6298 not raisesOverflowError( 16176 ! 5) or 6299 not raisesOverflowError( 4338 ! 6) or 6300 not raisesOverflowError( 1734 ! 7) or 6301 not raisesOverflowError( 888 ! 8) or 6302 not raisesOverflowError( 535 ! 9) or 6303 not raisesOverflowError( 362 ! 10) or 6304 not raisesOverflowError( 266 ! 11) or 6305 not raisesOverflowError( 207 ! 12) or 6306 not raisesOverflowError( 170 ! 13) or 6307 not raisesOverflowError( 144 ! 14) or 6308 not raisesOverflowError( 126 ! 15) or 6309 not raisesOverflowError( 112 ! 16) or 6310 not raisesOverflowError( 102 ! 17) or 6311 not raisesOverflowError( 95 ! 18) or 6312 not raisesOverflowError( 89 ! 19) or 6313 not raisesOverflowError( 84 ! 20) or 6314 not raisesOverflowError( 80 ! 21) or 6315 not raisesOverflowError( 77 ! 22) or 6316 not raisesOverflowError( 75 ! 23) or 6317 not raisesOverflowError( 73 ! 24) or 6318 not raisesOverflowError( 71 ! 25) or 6319 not raisesOverflowError( 70 ! 26) or 6320 not raisesOverflowError( 69 ! 27) or 6321 not raisesOverflowError( 68 ! 28) or 6322 not raisesOverflowError( 68 ! 29) or 6323 not raisesOverflowError( 67 ! 30) or 6324 not raisesOverflowError( 67 ! 31) or 6325 not raisesOverflowError( 67 ! 32) or 6326 not raisesOverflowError( 67 ! 33) or 6327 not raisesOverflowError( 67 ! 34) or 6328 not raisesOverflowError( 67 ! 35) or 6329 not raisesOverflowError( 67 ! 36) or 6330 not raisesOverflowError( 67 ! 37) or 6331 not raisesOverflowError( 68 ! 38) or 6332 not raisesOverflowError( 68 ! 39) or 6333 not raisesOverflowError( 68 ! 40) or 6334 not raisesOverflowError( 69 ! 41) or 6335 not raisesOverflowError( 69 ! 42) or 6336 not raisesOverflowError( 70 ! 43) or 6337 not raisesOverflowError( 70 ! 44) or 6338 not raisesOverflowError( 71 ! 45) or 6339 not raisesOverflowError( 71 ! 46) or 6340 not raisesOverflowError( 72 ! 47) or 6341 not raisesOverflowError( 73 ! 48) or 6342 not raisesOverflowError( 73 ! 49) or 6343 not raisesOverflowError( 74 ! 50) or 6344 not raisesOverflowError( 75 ! 51) or 6345 not raisesOverflowError( 75 ! 52) or 6346 not raisesOverflowError( 76 ! 53) or 6347 not raisesOverflowError( 77 ! 54) or 6348 not raisesOverflowError( 77 ! 55) or 6349 not raisesOverflowError( 78 ! 56) or 6350 not raisesOverflowError( 79 ! 57) or 6351 not raisesOverflowError( 80 ! 58) or 6352 not raisesOverflowError( 80 ! 59) or 6353 not raisesOverflowError( 81 ! 60) or 6354 not raisesOverflowError( 82 ! 61) or 6355 not raisesOverflowError( 83 ! 62) or 6356 not raisesOverflowError( 84 ! 63) or 6357 not raisesOverflowError( 84 ! 64) or 6358 not raisesOverflowError( 85 ! 65) or 6359 not raisesOverflowError( 86 ! 66) or 6360 not raisesOverflowError( 87 ! 67) or 6361 not raisesOverflowError( 88 ! 68) or 6362 not raisesOverflowError( 89 ! 69) or 6363 not raisesOverflowError( 89 ! 70) or 6364 not raisesOverflowError( 90 ! 71) or 6365 not raisesOverflowError( 91 ! 72) or 6366 not raisesOverflowError( 92 ! 73) or 6367 not raisesOverflowError( 93 ! 74) or 6368 not raisesOverflowError( 94 ! 75) or 6369 not raisesOverflowError( 95 ! 76) or 6370 not raisesOverflowError( 95 ! 77) or 6371 not raisesOverflowError( 96 ! 78) or 6372 not raisesOverflowError( 97 ! 79) or 6373 not raisesOverflowError( 98 ! 80) or 6374 not raisesOverflowError( 99 ! 81) or 6375 not raisesOverflowError( 100 ! 82) or 6376 not raisesOverflowError( 101 ! 83) or 6377 not raisesOverflowError( 102 ! 84) or 6378 not raisesOverflowError( 102 ! 85) or 6379 not raisesOverflowError( 103 ! 86) or 6380 not raisesOverflowError( 104 ! 87) or 6381 not raisesOverflowError( 105 ! 88) or 6382 not raisesOverflowError( 106 ! 89) or 6383 not raisesOverflowError( 107 ! 90) or 6384 not raisesOverflowError( 108 ! 91) or 6385 not raisesOverflowError( 109 ! 92) or 6386 not raisesOverflowError( 110 ! 93) or 6387 not raisesOverflowError( 111 ! 94) or 6388 not raisesOverflowError( 112 ! 95) or 6389 not raisesOverflowError( 113 ! 96) or 6390 not raisesOverflowError( 113 ! 97) or 6391 not raisesOverflowError( 114 ! 98) or 6392 not raisesOverflowError( 115 ! 99) then 6393 writeln(" ***** Overflow not raised for binomial coefficient with positive n. (1)"); 6394 okay := FALSE; 6395 end if; 6396 6397 if not raisesOverflowError(intExpr(4294967297) ! 2) or 6398 not raisesOverflowError(intExpr( 3810780) ! 3) or 6399 not raisesOverflowError(intExpr( 121978) ! 4) or 6400 not raisesOverflowError(intExpr( 16176) ! 5) or 6401 not raisesOverflowError(intExpr( 4338) ! 6) or 6402 not raisesOverflowError(intExpr( 1734) ! 7) or 6403 not raisesOverflowError(intExpr( 888) ! 8) or 6404 not raisesOverflowError(intExpr( 535) ! 9) or 6405 not raisesOverflowError(intExpr( 362) ! 10) or 6406 not raisesOverflowError(intExpr( 266) ! 11) or 6407 not raisesOverflowError(intExpr( 207) ! 12) or 6408 not raisesOverflowError(intExpr( 170) ! 13) or 6409 not raisesOverflowError(intExpr( 144) ! 14) or 6410 not raisesOverflowError(intExpr( 126) ! 15) or 6411 not raisesOverflowError(intExpr( 112) ! 16) or 6412 not raisesOverflowError(intExpr( 102) ! 17) or 6413 not raisesOverflowError(intExpr( 95) ! 18) or 6414 not raisesOverflowError(intExpr( 89) ! 19) or 6415 not raisesOverflowError(intExpr( 84) ! 20) or 6416 not raisesOverflowError(intExpr( 80) ! 21) or 6417 not raisesOverflowError(intExpr( 77) ! 22) or 6418 not raisesOverflowError(intExpr( 75) ! 23) or 6419 not raisesOverflowError(intExpr( 73) ! 24) or 6420 not raisesOverflowError(intExpr( 71) ! 25) or 6421 not raisesOverflowError(intExpr( 70) ! 26) or 6422 not raisesOverflowError(intExpr( 69) ! 27) or 6423 not raisesOverflowError(intExpr( 68) ! 28) or 6424 not raisesOverflowError(intExpr( 68) ! 29) or 6425 not raisesOverflowError(intExpr( 67) ! 30) or 6426 not raisesOverflowError(intExpr( 67) ! 31) or 6427 not raisesOverflowError(intExpr( 67) ! 32) or 6428 not raisesOverflowError(intExpr( 67) ! 33) or 6429 not raisesOverflowError(intExpr( 67) ! 34) or 6430 not raisesOverflowError(intExpr( 67) ! 35) or 6431 not raisesOverflowError(intExpr( 67) ! 36) or 6432 not raisesOverflowError(intExpr( 67) ! 37) or 6433 not raisesOverflowError(intExpr( 68) ! 38) or 6434 not raisesOverflowError(intExpr( 68) ! 39) or 6435 not raisesOverflowError(intExpr( 68) ! 40) or 6436 not raisesOverflowError(intExpr( 69) ! 41) or 6437 not raisesOverflowError(intExpr( 69) ! 42) or 6438 not raisesOverflowError(intExpr( 70) ! 43) or 6439 not raisesOverflowError(intExpr( 70) ! 44) or 6440 not raisesOverflowError(intExpr( 71) ! 45) or 6441 not raisesOverflowError(intExpr( 71) ! 46) or 6442 not raisesOverflowError(intExpr( 72) ! 47) or 6443 not raisesOverflowError(intExpr( 73) ! 48) or 6444 not raisesOverflowError(intExpr( 73) ! 49) or 6445 not raisesOverflowError(intExpr( 74) ! 50) or 6446 not raisesOverflowError(intExpr( 75) ! 51) or 6447 not raisesOverflowError(intExpr( 75) ! 52) or 6448 not raisesOverflowError(intExpr( 76) ! 53) or 6449 not raisesOverflowError(intExpr( 77) ! 54) or 6450 not raisesOverflowError(intExpr( 77) ! 55) or 6451 not raisesOverflowError(intExpr( 78) ! 56) or 6452 not raisesOverflowError(intExpr( 79) ! 57) or 6453 not raisesOverflowError(intExpr( 80) ! 58) or 6454 not raisesOverflowError(intExpr( 80) ! 59) or 6455 not raisesOverflowError(intExpr( 81) ! 60) or 6456 not raisesOverflowError(intExpr( 82) ! 61) or 6457 not raisesOverflowError(intExpr( 83) ! 62) or 6458 not raisesOverflowError(intExpr( 84) ! 63) or 6459 not raisesOverflowError(intExpr( 84) ! 64) or 6460 not raisesOverflowError(intExpr( 85) ! 65) or 6461 not raisesOverflowError(intExpr( 86) ! 66) or 6462 not raisesOverflowError(intExpr( 87) ! 67) or 6463 not raisesOverflowError(intExpr( 88) ! 68) or 6464 not raisesOverflowError(intExpr( 89) ! 69) or 6465 not raisesOverflowError(intExpr( 89) ! 70) or 6466 not raisesOverflowError(intExpr( 90) ! 71) or 6467 not raisesOverflowError(intExpr( 91) ! 72) or 6468 not raisesOverflowError(intExpr( 92) ! 73) or 6469 not raisesOverflowError(intExpr( 93) ! 74) or 6470 not raisesOverflowError(intExpr( 94) ! 75) or 6471 not raisesOverflowError(intExpr( 95) ! 76) or 6472 not raisesOverflowError(intExpr( 95) ! 77) or 6473 not raisesOverflowError(intExpr( 96) ! 78) or 6474 not raisesOverflowError(intExpr( 97) ! 79) or 6475 not raisesOverflowError(intExpr( 98) ! 80) or 6476 not raisesOverflowError(intExpr( 99) ! 81) or 6477 not raisesOverflowError(intExpr( 100) ! 82) or 6478 not raisesOverflowError(intExpr( 101) ! 83) or 6479 not raisesOverflowError(intExpr( 102) ! 84) or 6480 not raisesOverflowError(intExpr( 102) ! 85) or 6481 not raisesOverflowError(intExpr( 103) ! 86) or 6482 not raisesOverflowError(intExpr( 104) ! 87) or 6483 not raisesOverflowError(intExpr( 105) ! 88) or 6484 not raisesOverflowError(intExpr( 106) ! 89) or 6485 not raisesOverflowError(intExpr( 107) ! 90) or 6486 not raisesOverflowError(intExpr( 108) ! 91) or 6487 not raisesOverflowError(intExpr( 109) ! 92) or 6488 not raisesOverflowError(intExpr( 110) ! 93) or 6489 not raisesOverflowError(intExpr( 111) ! 94) or 6490 not raisesOverflowError(intExpr( 112) ! 95) or 6491 not raisesOverflowError(intExpr( 113) ! 96) or 6492 not raisesOverflowError(intExpr( 113) ! 97) or 6493 not raisesOverflowError(intExpr( 114) ! 98) or 6494 not raisesOverflowError(intExpr( 115) ! 99) then 6495 writeln(" ***** Overflow not raised for binomial coefficient with positive n. (2)"); 6496 okay := FALSE; 6497 end if; 6498 6499 if not raisesOverflowError(4294967297 ! intExpr( 2)) or 6500 not raisesOverflowError( 3810780 ! intExpr( 3)) or 6501 not raisesOverflowError( 121978 ! intExpr( 4)) or 6502 not raisesOverflowError( 16176 ! intExpr( 5)) or 6503 not raisesOverflowError( 4338 ! intExpr( 6)) or 6504 not raisesOverflowError( 1734 ! intExpr( 7)) or 6505 not raisesOverflowError( 888 ! intExpr( 8)) or 6506 not raisesOverflowError( 535 ! intExpr( 9)) or 6507 not raisesOverflowError( 362 ! intExpr(10)) or 6508 not raisesOverflowError( 266 ! intExpr(11)) or 6509 not raisesOverflowError( 207 ! intExpr(12)) or 6510 not raisesOverflowError( 170 ! intExpr(13)) or 6511 not raisesOverflowError( 144 ! intExpr(14)) or 6512 not raisesOverflowError( 126 ! intExpr(15)) or 6513 not raisesOverflowError( 112 ! intExpr(16)) or 6514 not raisesOverflowError( 102 ! intExpr(17)) or 6515 not raisesOverflowError( 95 ! intExpr(18)) or 6516 not raisesOverflowError( 89 ! intExpr(19)) or 6517 not raisesOverflowError( 84 ! intExpr(20)) or 6518 not raisesOverflowError( 80 ! intExpr(21)) or 6519 not raisesOverflowError( 77 ! intExpr(22)) or 6520 not raisesOverflowError( 75 ! intExpr(23)) or 6521 not raisesOverflowError( 73 ! intExpr(24)) or 6522 not raisesOverflowError( 71 ! intExpr(25)) or 6523 not raisesOverflowError( 70 ! intExpr(26)) or 6524 not raisesOverflowError( 69 ! intExpr(27)) or 6525 not raisesOverflowError( 68 ! intExpr(28)) or 6526 not raisesOverflowError( 68 ! intExpr(29)) or 6527 not raisesOverflowError( 67 ! intExpr(30)) or 6528 not raisesOverflowError( 67 ! intExpr(31)) or 6529 not raisesOverflowError( 67 ! intExpr(32)) or 6530 not raisesOverflowError( 67 ! intExpr(33)) or 6531 not raisesOverflowError( 67 ! intExpr(34)) or 6532 not raisesOverflowError( 67 ! intExpr(35)) or 6533 not raisesOverflowError( 67 ! intExpr(36)) or 6534 not raisesOverflowError( 67 ! intExpr(37)) or 6535 not raisesOverflowError( 68 ! intExpr(38)) or 6536 not raisesOverflowError( 68 ! intExpr(39)) or 6537 not raisesOverflowError( 68 ! intExpr(40)) or 6538 not raisesOverflowError( 69 ! intExpr(41)) or 6539 not raisesOverflowError( 69 ! intExpr(42)) or 6540 not raisesOverflowError( 70 ! intExpr(43)) or 6541 not raisesOverflowError( 70 ! intExpr(44)) or 6542 not raisesOverflowError( 71 ! intExpr(45)) or 6543 not raisesOverflowError( 71 ! intExpr(46)) or 6544 not raisesOverflowError( 72 ! intExpr(47)) or 6545 not raisesOverflowError( 73 ! intExpr(48)) or 6546 not raisesOverflowError( 73 ! intExpr(49)) or 6547 not raisesOverflowError( 74 ! intExpr(50)) or 6548 not raisesOverflowError( 75 ! intExpr(51)) or 6549 not raisesOverflowError( 75 ! intExpr(52)) or 6550 not raisesOverflowError( 76 ! intExpr(53)) or 6551 not raisesOverflowError( 77 ! intExpr(54)) or 6552 not raisesOverflowError( 77 ! intExpr(55)) or 6553 not raisesOverflowError( 78 ! intExpr(56)) or 6554 not raisesOverflowError( 79 ! intExpr(57)) or 6555 not raisesOverflowError( 80 ! intExpr(58)) or 6556 not raisesOverflowError( 80 ! intExpr(59)) or 6557 not raisesOverflowError( 81 ! intExpr(60)) or 6558 not raisesOverflowError( 82 ! intExpr(61)) or 6559 not raisesOverflowError( 83 ! intExpr(62)) or 6560 not raisesOverflowError( 84 ! intExpr(63)) or 6561 not raisesOverflowError( 84 ! intExpr(64)) or 6562 not raisesOverflowError( 85 ! intExpr(65)) or 6563 not raisesOverflowError( 86 ! intExpr(66)) or 6564 not raisesOverflowError( 87 ! intExpr(67)) or 6565 not raisesOverflowError( 88 ! intExpr(68)) or 6566 not raisesOverflowError( 89 ! intExpr(69)) or 6567 not raisesOverflowError( 89 ! intExpr(70)) or 6568 not raisesOverflowError( 90 ! intExpr(71)) or 6569 not raisesOverflowError( 91 ! intExpr(72)) or 6570 not raisesOverflowError( 92 ! intExpr(73)) or 6571 not raisesOverflowError( 93 ! intExpr(74)) or 6572 not raisesOverflowError( 94 ! intExpr(75)) or 6573 not raisesOverflowError( 95 ! intExpr(76)) or 6574 not raisesOverflowError( 95 ! intExpr(77)) or 6575 not raisesOverflowError( 96 ! intExpr(78)) or 6576 not raisesOverflowError( 97 ! intExpr(79)) or 6577 not raisesOverflowError( 98 ! intExpr(80)) or 6578 not raisesOverflowError( 99 ! intExpr(81)) or 6579 not raisesOverflowError( 100 ! intExpr(82)) or 6580 not raisesOverflowError( 101 ! intExpr(83)) or 6581 not raisesOverflowError( 102 ! intExpr(84)) or 6582 not raisesOverflowError( 102 ! intExpr(85)) or 6583 not raisesOverflowError( 103 ! intExpr(86)) or 6584 not raisesOverflowError( 104 ! intExpr(87)) or 6585 not raisesOverflowError( 105 ! intExpr(88)) or 6586 not raisesOverflowError( 106 ! intExpr(89)) or 6587 not raisesOverflowError( 107 ! intExpr(90)) or 6588 not raisesOverflowError( 108 ! intExpr(91)) or 6589 not raisesOverflowError( 109 ! intExpr(92)) or 6590 not raisesOverflowError( 110 ! intExpr(93)) or 6591 not raisesOverflowError( 111 ! intExpr(94)) or 6592 not raisesOverflowError( 112 ! intExpr(95)) or 6593 not raisesOverflowError( 113 ! intExpr(96)) or 6594 not raisesOverflowError( 113 ! intExpr(97)) or 6595 not raisesOverflowError( 114 ! intExpr(98)) or 6596 not raisesOverflowError( 115 ! intExpr(99)) then 6597 writeln(" ***** Overflow not raised for binomial coefficient with positive n. (3)"); 6598 okay := FALSE; 6599 end if; 6600 6601 if not raisesOverflowError(intExpr(4294967297) ! intExpr( 2)) or 6602 not raisesOverflowError(intExpr( 3810780) ! intExpr( 3)) or 6603 not raisesOverflowError(intExpr( 121978) ! intExpr( 4)) or 6604 not raisesOverflowError(intExpr( 16176) ! intExpr( 5)) or 6605 not raisesOverflowError(intExpr( 4338) ! intExpr( 6)) or 6606 not raisesOverflowError(intExpr( 1734) ! intExpr( 7)) or 6607 not raisesOverflowError(intExpr( 888) ! intExpr( 8)) or 6608 not raisesOverflowError(intExpr( 535) ! intExpr( 9)) or 6609 not raisesOverflowError(intExpr( 362) ! intExpr(10)) or 6610 not raisesOverflowError(intExpr( 266) ! intExpr(11)) or 6611 not raisesOverflowError(intExpr( 207) ! intExpr(12)) or 6612 not raisesOverflowError(intExpr( 170) ! intExpr(13)) or 6613 not raisesOverflowError(intExpr( 144) ! intExpr(14)) or 6614 not raisesOverflowError(intExpr( 126) ! intExpr(15)) or 6615 not raisesOverflowError(intExpr( 112) ! intExpr(16)) or 6616 not raisesOverflowError(intExpr( 102) ! intExpr(17)) or 6617 not raisesOverflowError(intExpr( 95) ! intExpr(18)) or 6618 not raisesOverflowError(intExpr( 89) ! intExpr(19)) or 6619 not raisesOverflowError(intExpr( 84) ! intExpr(20)) or 6620 not raisesOverflowError(intExpr( 80) ! intExpr(21)) or 6621 not raisesOverflowError(intExpr( 77) ! intExpr(22)) or 6622 not raisesOverflowError(intExpr( 75) ! intExpr(23)) or 6623 not raisesOverflowError(intExpr( 73) ! intExpr(24)) or 6624 not raisesOverflowError(intExpr( 71) ! intExpr(25)) or 6625 not raisesOverflowError(intExpr( 70) ! intExpr(26)) or 6626 not raisesOverflowError(intExpr( 69) ! intExpr(27)) or 6627 not raisesOverflowError(intExpr( 68) ! intExpr(28)) or 6628 not raisesOverflowError(intExpr( 68) ! intExpr(29)) or 6629 not raisesOverflowError(intExpr( 67) ! intExpr(30)) or 6630 not raisesOverflowError(intExpr( 67) ! intExpr(31)) or 6631 not raisesOverflowError(intExpr( 67) ! intExpr(32)) or 6632 not raisesOverflowError(intExpr( 67) ! intExpr(33)) or 6633 not raisesOverflowError(intExpr( 67) ! intExpr(34)) or 6634 not raisesOverflowError(intExpr( 67) ! intExpr(35)) or 6635 not raisesOverflowError(intExpr( 67) ! intExpr(36)) or 6636 not raisesOverflowError(intExpr( 67) ! intExpr(37)) or 6637 not raisesOverflowError(intExpr( 68) ! intExpr(38)) or 6638 not raisesOverflowError(intExpr( 68) ! intExpr(39)) or 6639 not raisesOverflowError(intExpr( 68) ! intExpr(40)) or 6640 not raisesOverflowError(intExpr( 69) ! intExpr(41)) or 6641 not raisesOverflowError(intExpr( 69) ! intExpr(42)) or 6642 not raisesOverflowError(intExpr( 70) ! intExpr(43)) or 6643 not raisesOverflowError(intExpr( 70) ! intExpr(44)) or 6644 not raisesOverflowError(intExpr( 71) ! intExpr(45)) or 6645 not raisesOverflowError(intExpr( 71) ! intExpr(46)) or 6646 not raisesOverflowError(intExpr( 72) ! intExpr(47)) or 6647 not raisesOverflowError(intExpr( 73) ! intExpr(48)) or 6648 not raisesOverflowError(intExpr( 73) ! intExpr(49)) or 6649 not raisesOverflowError(intExpr( 74) ! intExpr(50)) or 6650 not raisesOverflowError(intExpr( 75) ! intExpr(51)) or 6651 not raisesOverflowError(intExpr( 75) ! intExpr(52)) or 6652 not raisesOverflowError(intExpr( 76) ! intExpr(53)) or 6653 not raisesOverflowError(intExpr( 77) ! intExpr(54)) or 6654 not raisesOverflowError(intExpr( 77) ! intExpr(55)) or 6655 not raisesOverflowError(intExpr( 78) ! intExpr(56)) or 6656 not raisesOverflowError(intExpr( 79) ! intExpr(57)) or 6657 not raisesOverflowError(intExpr( 80) ! intExpr(58)) or 6658 not raisesOverflowError(intExpr( 80) ! intExpr(59)) or 6659 not raisesOverflowError(intExpr( 81) ! intExpr(60)) or 6660 not raisesOverflowError(intExpr( 82) ! intExpr(61)) or 6661 not raisesOverflowError(intExpr( 83) ! intExpr(62)) or 6662 not raisesOverflowError(intExpr( 84) ! intExpr(63)) or 6663 not raisesOverflowError(intExpr( 84) ! intExpr(64)) or 6664 not raisesOverflowError(intExpr( 85) ! intExpr(65)) or 6665 not raisesOverflowError(intExpr( 86) ! intExpr(66)) or 6666 not raisesOverflowError(intExpr( 87) ! intExpr(67)) or 6667 not raisesOverflowError(intExpr( 88) ! intExpr(68)) or 6668 not raisesOverflowError(intExpr( 89) ! intExpr(69)) or 6669 not raisesOverflowError(intExpr( 89) ! intExpr(70)) or 6670 not raisesOverflowError(intExpr( 90) ! intExpr(71)) or 6671 not raisesOverflowError(intExpr( 91) ! intExpr(72)) or 6672 not raisesOverflowError(intExpr( 92) ! intExpr(73)) or 6673 not raisesOverflowError(intExpr( 93) ! intExpr(74)) or 6674 not raisesOverflowError(intExpr( 94) ! intExpr(75)) or 6675 not raisesOverflowError(intExpr( 95) ! intExpr(76)) or 6676 not raisesOverflowError(intExpr( 95) ! intExpr(77)) or 6677 not raisesOverflowError(intExpr( 96) ! intExpr(78)) or 6678 not raisesOverflowError(intExpr( 97) ! intExpr(79)) or 6679 not raisesOverflowError(intExpr( 98) ! intExpr(80)) or 6680 not raisesOverflowError(intExpr( 99) ! intExpr(81)) or 6681 not raisesOverflowError(intExpr( 100) ! intExpr(82)) or 6682 not raisesOverflowError(intExpr( 101) ! intExpr(83)) or 6683 not raisesOverflowError(intExpr( 102) ! intExpr(84)) or 6684 not raisesOverflowError(intExpr( 102) ! intExpr(85)) or 6685 not raisesOverflowError(intExpr( 103) ! intExpr(86)) or 6686 not raisesOverflowError(intExpr( 104) ! intExpr(87)) or 6687 not raisesOverflowError(intExpr( 105) ! intExpr(88)) or 6688 not raisesOverflowError(intExpr( 106) ! intExpr(89)) or 6689 not raisesOverflowError(intExpr( 107) ! intExpr(90)) or 6690 not raisesOverflowError(intExpr( 108) ! intExpr(91)) or 6691 not raisesOverflowError(intExpr( 109) ! intExpr(92)) or 6692 not raisesOverflowError(intExpr( 110) ! intExpr(93)) or 6693 not raisesOverflowError(intExpr( 111) ! intExpr(94)) or 6694 not raisesOverflowError(intExpr( 112) ! intExpr(95)) or 6695 not raisesOverflowError(intExpr( 113) ! intExpr(96)) or 6696 not raisesOverflowError(intExpr( 113) ! intExpr(97)) or 6697 not raisesOverflowError(intExpr( 114) ! intExpr(98)) or 6698 not raisesOverflowError(intExpr( 115) ! intExpr(99)) then 6699 writeln(" ***** Overflow not raised for binomial coefficient with positive n. (4)"); 6700 okay := FALSE; 6701 end if; 6702 6703 if okay then 6704 writeln("Overflow checking of binomial coefficient works correct."); 6705 else 6706 writeln(" ***** Overflow checking of binomial coefficient does not work correct."); 6707 end if; 6708 end func; 6709 6710 6711const proc: check_abs is func 6712 local 6713 var boolean: okay is TRUE; 6714 begin 6715 if not raisesOverflowError(abs( INT64_MIN)) or 6716 not raisesOverflowError(abs(intExpr( INT64_MIN))) or 6717 not raisesOverflowError(abs( (-9223372036854775807-1))) or 6718 not raisesOverflowError(abs(intExpr((-9223372036854775807-1)))) then 6719 writeln(" ***** Overflow when computing abs(-9223372036854775808) does not work correct."); 6720 okay := FALSE; 6721 end if; 6722 6723 if okay then 6724 writeln("Overflow checking of abs works correct."); 6725 else 6726 writeln(" ***** Overflow checking of abs does not work correct."); 6727 end if; 6728 end func; 6729 6730 6731const proc: main is func 6732 6733 begin 6734 writeln; 6735 check_negation; 6736 check_add; 6737 check_add_assign; 6738 check_subtract; 6739 check_subtract_assign; 6740 check_succ; 6741 check_pred; 6742 check_incr; 6743 check_decr; 6744 check_mult; 6745 check_mult_assign; 6746 check_div; 6747 check_rem; 6748 check_mdiv; 6749 check_mod; 6750 check_lShift; 6751 check_lShift_assign; 6752 check_rShift; 6753 check_rShift_assign; 6754 check_ulShift; 6755 check_ulShift_assign; 6756 check_urShift; 6757 check_urShift_assign; 6758 check_power; 6759 check_binom; 6760 check_abs; 6761 end func; 6762