1# Mainly want to test that: 2# inf and nan are handled correctly when passed to overloaded subs (including when they're passed as strings) 3# valid floating point NV's are handled correctly when passed to overloaded subs 4# valid floating point values are a fatal error when passed as a string 5 6use strict; 7use warnings; 8use Math::GMPz; 9 10print "1..155\n"; 11 12my $inf = 999 ** (999 ** 999); 13my $ninf = $inf * -1; 14my $nan = $inf / $inf; 15my $strinf = 999 ** (999 ** 999); 16my $strninf = $strinf * -1; 17my $strnan = $strinf / $strinf; 18my ($ret, $x); 19 20eval{$ret = Math::GMPz->new(10) * $inf }; 21if($@ =~ /In Math::GMPz::overload_mul, cannot coerce an Inf to a Math::GMPz value/) {print "ok 1\n"} 22else { 23 warn "\n\$\@: $@\n"; 24 print "not ok 1\n"; 25} 26 27eval{$ret = Math::GMPz->new(10) * "$strinf"}; 28if($@ =~ /supplied to Math::GMPz::overload_mul/) {print "ok 2\n"} 29else { 30 warn "\n\$\@: $@\n"; 31 print "not ok 2\n"; 32} 33 34eval{$ret = Math::GMPz->new(10) * $nan }; 35if($@ =~ /In Math::GMPz::overload_mul, cannot coerce a NaN to a Math::GMPz value/) {print "ok 3\n"} 36else { 37 warn "\n\$\@: $@\n"; 38 print "not ok 3\n"; 39} 40 41eval{$ret = Math::GMPz->new(10) * "$strnan"}; 42if($@ =~ /supplied to Math::GMPz::overload_mul/) {print "ok 4\n"} 43else { 44 warn "\n\$\@: $@\n"; 45 print "not ok 4\n"; 46} 47 48eval{$ret = Math::GMPz->new(10) * "61.2"}; 49if($@ =~ /supplied to Math::GMPz::overload_mul/) {print "ok 5\n"} 50else { 51 warn "\n\$\@: $@\n"; 52 print "not ok 5\n"; 53} 54 55if(Math::GMPz->new(10) * 61.2 == 610) {print "ok 6\n"} 56else { 57 warn "\n Expected 610\nGot: ", Math::GMPz->new(10) * 61.2, "\n"; 58 print "not ok 6\n"; 59} 60 61eval{$ret = Math::GMPz->new(10) + $inf }; 62if($@ =~ /In Math::GMPz::overload_add, cannot coerce an Inf to a Math::GMPz value/) {print "ok 7\n"} 63else { 64 warn "\n\$\@: $@\n"; 65 print "not ok 7\n"; 66} 67 68eval{$ret = Math::GMPz->new(10) + "$strinf"}; 69if($@ =~ /supplied to Math::GMPz::overload_add/) {print "ok 8\n"} 70else { 71 warn "\n\$\@: $@\n"; 72 print "not ok 8\n"; 73} 74 75eval{$ret = Math::GMPz->new(10) + $nan }; 76if($@ =~ /In Math::GMPz::overload_add, cannot coerce a NaN to a Math::GMPz value/) {print "ok 9\n"} 77else { 78 warn "\n\$\@: $@\n"; 79 print "not ok 9\n"; 80} 81 82eval{$ret = Math::GMPz->new(10) + "$strnan"}; 83if($@ =~ /supplied to Math::GMPz::overload_add/) {print "ok 10\n"} 84else { 85 warn "\n\$\@: $@\n"; 86 print "not ok 10\n"; 87} 88eval{$ret = Math::GMPz->new(10) + "61.2"}; 89if($@ =~ /supplied to Math::GMPz::overload_add/) {print "ok 11\n"} 90else { 91 warn "\n\$\@: $@\n"; 92 print "not ok 11\n"; 93} 94 95if(Math::GMPz->new(10) + 61.2 == 71) {print "ok 12\n"} 96else { 97 warn "\n Expected 71\nGot: ", Math::GMPz->new(10) + 61.2, "\n"; 98 print "not ok 12\n"; 99} 100 101eval{$ret = Math::GMPz->new(10) / $inf }; 102if($@ =~ /In Math::GMPz::overload_div, cannot coerce an Inf to a Math::GMPz value/) {print "ok 13\n"} 103else { 104 warn "\n\$\@: $@\n"; 105 print "not ok 13\n"; 106} 107 108eval{$ret = Math::GMPz->new(10) / "$strinf"}; 109if($@ =~ /supplied to Math::GMPz::overload_div/) {print "ok 14\n"} 110else { 111 warn "\n\$\@: $@\n"; 112 print "not ok 14\n"; 113} 114 115eval{$ret = Math::GMPz->new(10) / $nan }; 116if($@ =~ /In Math::GMPz::overload_div, cannot coerce a NaN to a Math::GMPz value/) {print "ok 15\n"} 117else { 118 warn "\n\$\@: $@\n"; 119 print "not ok 15\n"; 120} 121 122eval{$ret = Math::GMPz->new(10) / "$strnan"}; 123if($@ =~ /supplied to Math::GMPz::overload_div/) {print "ok 16\n"} 124else { 125 warn "\n\$\@: $@\n"; 126 print "not ok 16\n"; 127} 128 129eval{$ret = Math::GMPz->new(10) / "61.2"}; 130if($@ =~ /supplied to Math::GMPz::overload_div/) {print "ok 17\n"} 131else { 132 warn "\n\$\@: $@\n"; 133 print "not ok 17\n"; 134} 135 136if(Math::GMPz->new(10) / 61.2 == 0) {print "ok 18\n"} 137else { 138 warn "\n Expected 0\nGot: ", Math::GMPz->new(10) / 61.2, "\n"; 139 print "not ok 18\n"; 140} 141 142eval{$ret = Math::GMPz->new(10) - $inf }; 143if($@ =~ /In Math::GMPz::overload_sub, cannot coerce an Inf to a Math::GMPz value/) {print "ok 19\n"} 144else { 145 warn "\n\$\@: $@\n"; 146 print "not ok 19\n"; 147} 148 149eval{$ret = Math::GMPz->new(10) - "$strinf"}; 150if($@ =~ /supplied to Math::GMPz::overload_sub/) {print "ok 20\n"} 151else { 152 warn "\n\$\@: $@\n"; 153 print "not ok 20\n"; 154} 155 156eval{$ret = Math::GMPz->new(10) - $nan }; 157if($@ =~ /In Math::GMPz::overload_sub, cannot coerce a NaN to a Math::GMPz value/) {print "ok 21\n"} 158else { 159 warn "\n\$\@: $@\n"; 160 print "not ok 21\n"; 161} 162 163eval{$ret = Math::GMPz->new(10) - "$strnan"}; 164if($@ =~ /supplied to Math::GMPz::overload_sub/) {print "ok 22\n"} 165else { 166 warn "\n\$\@: $@\n"; 167 print "not ok 22\n"; 168} 169 170eval{$ret = Math::GMPz->new(10) - "61.2"}; 171if($@ =~ /supplied to Math::GMPz::overload_sub/) {print "ok 23\n"} 172else { 173 warn "\n\$\@: $@\n"; 174 print "not ok 23\n"; 175} 176 177if(Math::GMPz->new(10) - 61.2 == -51) {print "ok 24\n"} 178else { 179 warn "\n Expected -51\nGot: ", Math::GMPz->new(10) - 61.2, "\n"; 180 print "not ok 24\n"; 181} 182 183$ret = Math::GMPz->new(10); 184 185eval{$ret *= $inf }; 186if($@ =~ /In Math::GMPz::overload_mul_eq, cannot coerce an Inf to a Math::GMPz value/) {print "ok 25\n"} 187else { 188 warn "\n\$\@: $@\n"; 189 print "not ok 25\n"; 190} 191 192eval{$ret *= "$strinf"}; 193if($@ =~ /supplied to Math::GMPz::overload_mul_eq/) {print "ok 26\n"} 194else { 195 warn "\n\$\@: $@\n"; 196 print "not ok 26\n"; 197} 198 199eval{$ret *= $nan }; 200if($@ =~ /In Math::GMPz::overload_mul_eq, cannot coerce a NaN to a Math::GMPz value/) {print "ok 27\n"} 201else { 202 warn "\n\$\@: $@\n"; 203 print "not ok 27\n"; 204} 205 206eval{$ret *= "$strnan"}; 207if($@ =~ /supplied to Math::GMPz::overload_mul_eq/) {print "ok 28\n"} 208else { 209 warn "\n\$\@: $@\n"; 210 print "not ok 28\n"; 211} 212 213eval{$ret *= "61.2"}; 214if($@ =~ /supplied to Math::GMPz::overload_mul_eq/) {print "ok 29\n"} 215else { 216 warn "\n\$\@: $@\n"; 217 print "not ok 29\n"; 218} 219 220$ret *= 61.2; 221 222if($ret == 610) {print "ok 30\n"} 223else { 224 warn "\n Expected 610\nGot: $ret\n"; 225 print "not ok 30\n"; 226} 227 228eval{$ret += $inf }; 229if($@ =~ /In Math::GMPz::overload_add_eq, cannot coerce an Inf to a Math::GMPz value/) {print "ok 31\n"} 230else { 231 warn "\n\$\@: $@\n"; 232 print "not ok 31\n"; 233} 234 235eval{$ret += "$strinf"}; 236if($@ =~ /supplied to Math::GMPz::overload_add_eq/) {print "ok 32\n"} 237else { 238 warn "\n\$\@: $@\n"; 239 print "not ok 32\n"; 240} 241 242eval{$ret += $nan }; 243if($@ =~ /In Math::GMPz::overload_add_eq, cannot coerce a NaN to a Math::GMPz value/) {print "ok 33\n"} 244else { 245 warn "\n\$\@: $@\n"; 246 print "not ok 33\n"; 247} 248 249eval{$ret += "$strnan"}; 250if($@ =~ /supplied to Math::GMPz::overload_add_eq/) {print "ok 34\n"} 251else { 252 warn "\n\$\@: $@\n"; 253 print "not ok 34\n"; 254} 255 256eval{$ret += "61.2"}; 257if($@ =~ /supplied to Math::GMPz::overload_add_eq/) {print "ok 35\n"} 258else { 259 warn "\n\$\@: $@\n"; 260 print "not ok 35\n"; 261} 262 263$ret += 61.2; 264 265if($ret == 671) {print "ok 36\n"} 266else { 267 warn "\n Expected 671\nGot: $ret\n"; 268 print "not ok 36\n"; 269} 270 271eval{$ret -= $inf }; 272if($@ =~ /In Math::GMPz::overload_sub_eq, cannot coerce an Inf to a Math::GMPz value/) {print "ok 37\n"} 273else { 274 warn "\n\$\@: $@\n"; 275 print "not ok 37\n"; 276} 277 278eval{$ret -= "$strinf"}; 279if($@ =~ /supplied to Math::GMPz::overload_sub_eq/) {print "ok 38\n"} 280else { 281 warn "\n\$\@: $@\n"; 282 print "not ok 38\n"; 283} 284 285eval{$ret -= $nan }; 286if($@ =~ /In Math::GMPz::overload_sub_eq, cannot coerce a NaN to a Math::GMPz value/) {print "ok 39\n"} 287else { 288 warn "\n\$\@: $@\n"; 289 print "not ok 39\n"; 290} 291 292eval{$ret -= "$strnan"}; 293if($@ =~ /supplied to Math::GMPz::overload_sub_eq/) {print "ok 40\n"} 294else { 295 warn "\n\$\@: $@\n"; 296 print "not ok 40\n"; 297} 298 299eval{$ret -= "61.2"}; 300if($@ =~ /supplied to Math::GMPz::overload_sub_eq/) {print "ok 41\n"} 301else { 302 warn "\n\$\@: $@\n"; 303 print "not ok 41\n"; 304} 305 306$ret -= 61.2; 307 308if($ret == 610) {print "ok 42\n"} 309else { 310 warn "\n Expected 610\nGot: $ret\n"; 311 print "not ok 42\n"; 312} 313 314eval{$ret /= $inf }; 315if($@ =~ /In Math::GMPz::overload_div_eq, cannot coerce an Inf to a Math::GMPz value/) {print "ok 43\n"} 316else { 317 warn "\n\$\@: $@\n"; 318 print "not ok 43\n"; 319} 320 321eval{$ret /= "$strinf"}; 322if($@ =~ /supplied to Math::GMPz::overload_div_eq/) {print "ok 44\n"} 323else { 324 warn "\n\$\@: $@\n"; 325 print "not ok 44\n"; 326} 327 328eval{$ret /= $nan }; 329if($@ =~ /In Math::GMPz::overload_div_eq, cannot coerce a NaN to a Math::GMPz value/) {print "ok 45\n"} 330else { 331 warn "\n\$\@: $@\n"; 332 print "not ok 45\n"; 333} 334 335eval{$ret /= "$strnan"}; 336if($@ =~ /supplied to Math::GMPz::overload_div_eq/) {print "ok 46\n"} 337else { 338 warn "\n\$\@: $@\n"; 339 print "not ok 46\n"; 340} 341 342eval{$ret /= "61.2"}; 343if($@ =~ /supplied to Math::GMPz::overload_div_eq/) {print "ok 47\n"} 344else { 345 warn "\n\$\@: $@\n"; 346 print "not ok 47\n"; 347} 348 349$ret /= 61.2; 350 351if($ret == 10) {print "ok 48\n"} 352else { 353 warn "\n Expected 10\nGot: $ret\n"; 354 print "not ok 48\n"; 355} 356 357if(Math::GMPz->new(10) == $inf ) { 358 warn "\n 10 == $inf\n"; 359 print "not ok 49\n"; 360} 361else {print "ok 49\n"} 362 363if(Math::GMPz->new(10) == $ninf ) { 364 warn "\n 10 == $ninf\n"; 365 print "not ok 50\n"; 366} 367else {print "ok 50\n"} 368 369if("$strinf" =~ /^inf/i || $^O =~ /MSWin/) { 370 if(Math::GMPz->new(10) == "$strinf") { 371 warn "\n 10 == infinity\n"; 372 print "not ok 51\n"; 373 } 374 else {print "ok 51\n"} 375} 376else { 377 eval {$x = (Math::GMPz->new(10) == "$strinf")}; 378 if($@ =~ /supplied to Math::GMPz::overload_equiv/) {print "ok 51\n"} 379 else { 380 warn "\n\$\@: $@\n"; 381 print "not ok 51\n"; 382 } 383} 384 385eval{$x = (Math::GMPz->new(10) == $nan )}; 386if($@ =~ /cannot compare a NaN to a Math::GMPz value/) {print "ok 52\n"} 387else { 388 warn "\n\$\@: $@\n"; 389 print "not ok 52\n"; 390} 391eval{$x = (Math::GMPz->new(10) == "$strnan")}; 392if($@ =~ /supplied to Math::GMPz::overload_equiv/) {print "ok 53\n"} 393else { 394 warn "\n\$\@: $@\n"; 395 print "not ok 53\n"; 396} 397 398eval{$x = (Math::GMPz->new(10) == "61.2")}; 399if($@ =~ /supplied to Math::GMPz::overload_equiv/) {print "ok 54\n"} 400else { 401 warn "\n\$\@: $@\n"; 402 print "not ok 54\n"; 403} 404 405my $dec = 10.0; 406if(Math::GMPz->new(10) == $dec) {print "ok 55\n"} 407else { 408 warn "\n ", Math::GMPz->new(10), " != $dec\n"; 409 print "not ok 55\n"; 410} 411 412if(Math::GMPz->new(10) != $inf ) {print "ok 56\n"} 413else { 414 warn "\n 10 == $inf\n"; 415 print "not ok 56\n"; 416} 417 418if(Math::GMPz->new(10) != $ninf ) {print "ok 57\n"} 419else { 420 warn "\n 10 == $ninf\n"; 421 print "not ok 57\n"; 422} 423 424if("$strinf" =~ /^inf/i || $^O =~ /MSWin/) { 425 if(Math::GMPz->new(10) != "$strinf") {print "ok 58\n"} 426 else { 427 warn "\n 10 == infinity\n"; 428 print "not ok 58\n"; 429 } 430} 431else { 432 eval{$x = (Math::GMPz->new(10) != "$strinf")}; 433 if($@ =~ /supplied to Math::GMPz::overload_not_equiv/) {print "ok 58\n"} 434 else { 435 warn "\n\$\@: $@\n"; 436 print "not ok 58\n"; 437 } 438} 439 440eval{$x = (Math::GMPz->new(10) != $nan )}; 441if($@ =~ /cannot compare a NaN to a Math::GMPz value/) {print "ok 59\n"} 442else { 443 warn "\n\$\@: $@\n"; 444 print "not ok 59\n"; 445} 446 447eval{$x = (Math::GMPz->new(10) != "$strnan")}; 448if($@ =~ /supplied to Math::GMPz::overload_not_equiv/) {print "ok 60\n"} 449else { 450 warn "\n\$\@: $@\n"; 451 print "not ok 60\n"; 452} 453 454eval{$x = (Math::GMPz->new(10) != "61.2")}; 455if($@ =~ /supplied to Math::GMPz::overload_not_equiv/) {print "ok 61\n"} 456else { 457 warn "\n\$\@: $@\n"; 458 print "not ok 61\n"; 459} 460 461$dec += 0.9;; 462if(Math::GMPz->new(10) != $dec) {print "ok 62\n"} 463else { 464 warn "\n ", Math::GMPz->new(10), " == $dec\n"; 465 print "not ok 62\n"; 466} 467 468if(Math::GMPz->new(10) < $inf ) {print "ok 63\n"} 469else { 470 warn "\n 10 >= $inf\n"; 471 print "not ok 63\n"; 472} 473 474if(Math::GMPz->new(10) < $ninf ) { 475 warn "\n10 < $ninf\n"; 476 print "not ok 64\n"; 477} 478else {print "ok 64\n"} 479 480if("$strinf" =~ /^inf/i || $^O =~ /MSWin/) { 481 if(Math::GMPz->new(10) < "$strinf") {print "ok 65\n"} 482 else { 483 warn "\n 10 >= infinity\n"; 484 print "not ok 65\n"; 485 } 486} 487else { 488 eval{$x = (Math::GMPz->new(10) < "$strinf")}; 489 if($@ =~ /supplied to Math::GMPz::overload_lt/) {print "ok 65\n"} 490 else { 491 warn "\n\$\@: $@\n"; 492 print "not ok 65\n"; 493 } 494} 495 496eval{$x = (Math::GMPz->new(10) < $nan )}; 497if($@ =~ /In Rmpz_cmp_NV, cannot compare a NaN to a Math::GMPz value/) {print "ok 66\n"} 498else { 499 warn "\n\$\@: $@\n"; 500 print "not ok 66\n"; 501} 502 503eval{$x = (Math::GMPz->new(10) < "$strnan")}; 504if($@ =~ /supplied to Math::GMPz::overload_lt/) {print "ok 67\n"} 505else { 506 warn "\n\$\@: $@\n"; 507 print "not ok 67\n"; 508} 509 510eval{$x = (Math::GMPz->new(10) < "61.2")}; 511if($@ =~ /supplied to Math::GMPz::overload_lt/) {print "ok 68\n"} 512else { 513 warn "\n\$\@: $@\n"; 514 print "not ok 68\n"; 515} 516 517 518$dec += 2.0;; 519if(Math::GMPz->new(10) < $dec) {print "ok 69\n"} 520else { 521 warn "\n ", Math::GMPz->new(10), " !< $dec\n"; 522 print "not ok 69\n"; 523} 524 525if(Math::GMPz->new(10) <= $inf ) {print "ok 70\n"} 526else { 527 warn "\n 10 > $inf\n"; 528 print "not ok 70\n"; 529} 530 531if(Math::GMPz->new(10) <= $ninf ) { 532 warn "\n10 <= $ninf\n"; 533 print "not ok 71\n"; 534} 535else {print "ok 71\n"} 536 537if("$strinf" =~ /^inf/i || $^O =~ /MSWin/) { 538 if(Math::GMPz->new(10) <= "$strinf") {print "ok 72\n"} 539 else { 540 warn "\n 10 > infinity\n"; 541 print "not ok 72\n"; 542 } 543} 544else { 545 eval{$x = (Math::GMPz->new(10) <= "$strinf")}; 546 if($@ =~ /supplied to Math::GMPz::overload_lte/) {print "ok 72\n"} 547 else { 548 warn "\n\$\@: $@\n"; 549 print "not ok 72\n"; 550 } 551} 552 553eval{$x = (Math::GMPz->new(10) <= $nan )}; 554if($@ =~ /In Rmpz_cmp_NV, cannot compare a NaN to a Math::GMPz value/) {print "ok 73\n"} 555else { 556 warn "\n\$\@: $@\n"; 557 print "not ok 73\n"; 558} 559 560eval{$x = (Math::GMPz->new(10) <= "$strnan")}; 561if($@ =~ /supplied to Math::GMPz::overload_lte/) {print "ok 74\n"} 562else { 563 warn "\n\$\@: $@\n"; 564 print "not ok 74\n"; 565} 566 567eval{$x = (Math::GMPz->new(10) <= "61.2")}; 568if($@ =~ /supplied to Math::GMPz::overload_lte/) {print "ok 75\n"} 569else { 570 warn "\n\$\@: $@\n"; 571 print "not ok 75\n"; 572} 573 574$dec -= 2.0; 575if(Math::GMPz->new(10) <= $dec) {print "ok 76\n"} 576else { 577 warn "\n ", Math::GMPz->new(10), " > $dec\n"; 578 print "not ok 76\n"; 579} 580 581if(Math::GMPz->new(10) >= $inf ) { 582 warn "\n 10 >= $inf\n"; 583 print "not ok 77\n"; 584} 585else {print "ok 77\n"} 586 587if(Math::GMPz->new(10) >= $ninf) {print "ok 78\n"} 588else { 589 warn "\n 10 < $ninf\n"; 590 print "not ok 78\n"; 591} 592 593if("$strinf" =~ /^inf/i || $^O =~ /MSWin/) { 594 if(Math::GMPz->new(10) >= "$strinf") { 595 warn "\n 10 >= infinity\n"; 596 print "not ok 79\n"; 597 } 598 else {print "ok 79\n"} 599} 600else { 601 eval{$x = (Math::GMPz->new(10) >= "$strinf")}; 602 if($@ =~ /supplied to Math::GMPz::overload_gte/) {print "ok 79\n"} 603 else { 604 warn "\n\$\@: $@\n"; 605 print "not ok 79\n"; 606 } 607} 608 609eval{$x = (Math::GMPz->new(10) >= $nan )}; 610if($@ =~ /In Rmpz_cmp_NV, cannot compare a NaN to a Math::GMPz value/) {print "ok 80\n"} 611else { 612 warn "\n\$\@: $@\n"; 613 print "not ok 80\n"; 614} 615 616eval{$x = (Math::GMPz->new(10) >= "$strnan")}; 617if($@ =~ /supplied to Math::GMPz::overload_gte/) {print "ok 81\n"} 618else { 619 warn "\n\$\@: $@\n"; 620 print "not ok 81\n"; 621} 622 623eval{$x = (Math::GMPz->new(10) >= "61.2")}; 624if($@ =~ /supplied to Math::GMPz::overload_gte/) {print "ok 82\n"} 625else { 626 warn "\n\$\@: $@\n"; 627 print "not ok 82\n"; 628} 629 630$dec -= 1.0; 631if(Math::GMPz->new(10) >= $dec) {print "ok 83\n"} 632else { 633 warn "\n ", Math::GMPz->new(10), " < $dec\n"; 634 print "not ok 83\n"; 635} 636 637if(Math::GMPz->new(10) > $inf ) { 638 warn "\n 10 > $inf\n"; 639 print "not ok 84\n"; 640} 641else {print "ok 84\n"} 642 643if(Math::GMPz->new(10) > $ninf) {print "ok 85\n"} 644else { 645 warn "\n 10 <= $ninf\n"; 646 print "not ok 85\n"; 647} 648 649if("$strinf" =~ /^inf/i || $^O =~ /MSWin/) { 650 if(Math::GMPz->new(10) > "$strinf") { 651 warn "\n 10 > infinity\n"; 652 print "not ok 86\n"; 653 } 654 else {print "ok 86\n"} 655} 656else { 657 eval{$x = (Math::GMPz->new(10) > "$strinf")}; 658 if($@ =~ /supplied to Math::GMPz::overload_gt/) {print "ok 86\n"} 659 else { 660 warn "\n\$\@: $@\n"; 661 print "not ok 86\n"; 662 } 663} 664 665eval{$x = (Math::GMPz->new(10) > $nan )}; 666if($@ =~ /In Rmpz_cmp_NV, cannot compare a NaN to a Math::GMPz value/) {print "ok 87\n"} 667else { 668 warn "\n\$\@: $@\n"; 669 print "not ok 87\n"; 670} 671 672eval{$x = (Math::GMPz->new(10) > "$strnan")}; 673if($@ =~ /supplied to Math::GMPz::overload_gt/) {print "ok 88\n"} 674else { 675 warn "\n\$\@: $@\n"; 676 print "not ok 88\n"; 677} 678 679eval{$x = (Math::GMPz->new(10) > "61.2")}; 680if($@ =~ /supplied to Math::GMPz::overload_gt/) {print "ok 89\n"} 681else { 682 warn "\n\$\@: $@\n"; 683 print "not ok 89\n"; 684} 685 686$dec -= 1.0; 687if(Math::GMPz->new(10) > $dec) {print "ok 90\n"} 688else { 689 warn "\n ", Math::GMPz->new(10), " !> $dec\n"; 690 print "not ok 90\n"; 691} 692 693if(Math::GMPz->new(6) < 6.5) {print "ok 91\n"} 694else { 695 warn "\n 6 >= 6.5\n"; 696 print "not ok 91\n"; 697} 698 699if(Math::GMPz->new(6) <= 6.5) {print "ok 92\n"} 700else { 701 warn "\n 6 > 6.5\n"; 702 print "not ok 92\n"; 703} 704 705if(Math::GMPz->new(-6) > -6.5) {print "ok 93\n"} 706else { 707 warn "\n -6 <= -6.5\n"; 708 print "not ok 93\n"; 709} 710 711if(Math::GMPz->new(-6) >= -6.5) {print "ok 94\n"} 712else { 713 warn "\n -6 < -6.5\n"; 714 print "not ok 94\n"; 715} 716 717if(Math::GMPz->new(10) == $inf * -1) { 718 warn "\n 10 == -inf\n"; 719 print "ok 95\n"; 720} 721else {print "ok 95\n"} 722 723if(Math::GMPz->new(10) < $inf * -1) { 724 warn "\n 10 < -inf\n"; 725 print "ok 96\n"; 726} 727else {print "ok 96\n"} 728 729if(Math::GMPz->new(10) <= $inf * -1) { 730 warn "\n 10 <= -inf\n"; 731 print "ok 97\n"; 732} 733else {print "ok 97\n"} 734 735if(Math::GMPz->new(10) > $inf * -1) {print "ok 98\n"} 736else { 737 warn "\n 10 <= -inf\n"; 738 print "ok 98\n"; 739} 740 741if(Math::GMPz->new(10) >= $inf * -1) {print "ok 99\n"} 742else { 743 warn "\n 10 < -inf\n"; 744 print "ok 99\n"; 745} 746 747if(Math::GMPz->new(10) != $inf * -1) {print "ok 100\n"} 748else { 749 warn "\n 10 == -inf\n"; 750 print "ok 100\n"; 751} 752 753######################### 754######################### 755 756if("$strinf" =~ /^inf/i || $^O =~ /MSWin/) { 757 if((Math::GMPz->new(10) <=> "$strinf") < 0) {print "ok 101\n"} 758 else { 759 warn "\n 10 !< inf\n"; 760 print "not ok 101\n"; 761 } 762} 763else { 764 eval{$x = (Math::GMPz->new(10) <=> "$strinf")}; 765 if($@ =~ /supplied to Math::GMPz::overload_spaceship/) {print "ok 101\n"} 766 else { 767 warn "\n\$\@: $@\n"; 768 print "not ok 101\n"; 769 } 770} 771 772eval{$x = (Math::GMPz->new(10) <=> $nan )}; 773if($@ =~ /In Rmpz_cmp_NV, cannot compare a NaN to a Math::GMPz value/) {print "ok 102\n"} 774else { 775 warn "\n\$\@: $@\n"; 776 print "not ok 102\n"; 777} 778 779eval{$x = (Math::GMPz->new(10) <=> "$strnan")}; 780if($@ =~ /supplied to Math::GMPz::overload_spaceship/) {print "ok 103\n"} 781else { 782 warn "\n\$\@: $@\n"; 783 print "not ok 103\n"; 784} 785 786eval{$x = (Math::GMPz->new(10) <=> "61.2")}; 787if($@ =~ /supplied to Math::GMPz::overload_spaceship/) {print "ok 104\n"} 788else { 789 warn "\n\$\@: $@\n"; 790 print "not ok 104\n"; 791} 792 793if((Math::GMPz->new(10) <=> $inf) < 0){print "ok 105\n"} 794else { 795 warn "\n 10 !< inf\n"; 796 print "not ok 105\n"; 797} 798 799if((Math::GMPz->new(10) <=> $inf * -1) > 0){print "ok 106\n"} 800else { 801 warn "\n 10 !> inf\n"; 802 print "not ok 106\n"; 803} 804 805########################## 806########################## 807 808eval{$ret = Math::GMPz->new(10) & $inf }; 809if($@ =~ /In Math::GMPz::overload_and, cannot coerce an Inf to a Math::GMPz value/) {print "ok 107\n"} 810else { 811 warn "\n\$\@: $@\n"; 812 print "not ok 107\n"; 813} 814 815eval{$ret = Math::GMPz->new(10) & -$inf }; 816if($@ =~ /In Math::GMPz::overload_and, cannot coerce an Inf to a Math::GMPz value/) {print "ok 108\n"} 817else { 818 warn "\n\$\@: $@\n"; 819 print "not ok 108\n"; 820} 821 822eval{$ret = Math::GMPz->new(10) & "$strinf"}; 823if($@ =~ /supplied to Math::GMPz::overload_and/) {print "ok 109\n"} 824else { 825 warn "\n\$\@: $@\n"; 826 print "not ok 109\n"; 827} 828 829eval{$ret = Math::GMPz->new(10) & $nan }; 830if($@ =~ /In Math::GMPz::overload_and, cannot coerce a NaN to a Math::GMPz value/) {print "ok 110\n"} 831else { 832 warn "\n\$\@: $@\n"; 833 print "not ok 110\n"; 834} 835 836eval{$ret = Math::GMPz->new(10) & "$strnan"}; 837if($@ =~ /supplied to Math::GMPz::overload_and/) {print "ok 111\n"} 838else { 839 warn "\n\$\@: $@\n"; 840 print "not ok 111\n"; 841} 842 843eval{$ret = Math::GMPz->new(10) & "61.2"}; 844if($@ =~ /supplied to Math::GMPz::overload_and/) {print "ok 112\n"} 845else { 846 warn "\n\$\@: $@\n"; 847 print "not ok 112\n"; 848} 849 850eval{$ret = Math::GMPz->new(10) | $inf }; 851if($@ =~ /In Math::GMPz::overload_ior, cannot coerce an Inf to a Math::GMPz value/) {print "ok 113\n"} 852else { 853 warn "\n\$\@: $@\n"; 854 print "not ok 113\n"; 855} 856 857eval{$ret = Math::GMPz->new(10) | -$inf }; 858if($@ =~ /In Math::GMPz::overload_ior, cannot coerce an Inf to a Math::GMPz value/) {print "ok 114\n"} 859else { 860 warn "\n\$\@: $@\n"; 861 print "not ok 114\n"; 862} 863 864eval{$ret = Math::GMPz->new(10) | "$strinf"}; 865if($@ =~ /supplied to Math::GMPz::overload_ior/) {print "ok 115\n"} 866else { 867 warn "\n\$\@: $@\n"; 868 print "not ok 115\n"; 869} 870 871eval{$ret = Math::GMPz->new(10) | $nan }; 872if($@ =~ /In Math::GMPz::overload_ior, cannot coerce a NaN to a Math::GMPz value/) {print "ok 116\n"} 873else { 874 warn "\n\$\@: $@\n"; 875 print "not ok 116\n"; 876} 877 878eval{$ret = Math::GMPz->new(10) | "$strnan"}; 879if($@ =~ /supplied to Math::GMPz::overload_ior/) {print "ok 117\n"} 880else { 881 warn "\n\$\@: $@\n"; 882 print "not ok 117\n"; 883} 884 885eval{$ret = Math::GMPz->new(10) | "61.2"}; 886if($@ =~ /supplied to Math::GMPz::overload_ior/) {print "ok 118\n"} 887else { 888 warn "\n\$\@: $@\n"; 889 print "not ok 118\n"; 890} 891 892eval{$ret = Math::GMPz->new(10) ^ $inf }; 893if($@ =~ /In Math::GMPz::overload_xor, cannot coerce an Inf to a Math::GMPz value/) {print "ok 119\n"} 894else { 895 warn "\n\$\@: $@\n"; 896 print "not ok 119\n"; 897} 898 899eval{$ret = Math::GMPz->new(10) ^ -$inf }; 900if($@ =~ /In Math::GMPz::overload_xor, cannot coerce an Inf to a Math::GMPz value/) {print "ok 120\n"} 901else { 902 warn "\n\$\@: $@\n"; 903 print "not ok 120\n"; 904} 905 906eval{$ret = Math::GMPz->new(10) ^ "$strinf"}; 907if($@ =~ /supplied to Math::GMPz::overload_xor/) {print "ok 121\n"} 908else { 909 warn "\n\$\@: $@\n"; 910 print "not ok 121\n"; 911} 912 913eval{$ret = Math::GMPz->new(10) ^ $nan }; 914if($@ =~ /In Math::GMPz::overload_xor, cannot coerce a NaN to a Math::GMPz value/) {print "ok 122\n"} 915else { 916 warn "\n\$\@: $@\n"; 917 print "not ok 122\n"; 918} 919 920eval{$ret = Math::GMPz->new(10) ^ "$strnan"}; 921if($@ =~ /supplied to Math::GMPz::overload_xor/) {print "ok 123\n"} 922else { 923 warn "\n\$\@: $@\n"; 924 print "not ok 123\n"; 925} 926 927eval{$ret = Math::GMPz->new(10) ^ "61.2"}; 928if($@ =~ /supplied to Math::GMPz::overload_xor/) {print "ok 124\n"} 929else { 930 warn "\n\$\@: $@\n"; 931 print "not ok 124\n"; 932} 933 934eval{$ret &= $inf }; 935if($@ =~ /In Math::GMPz::overload_and_eq, cannot coerce an Inf to a Math::GMPz value/) {print "ok 125\n"} 936else { 937 warn "\n\$\@: $@\n"; 938 print "not ok 125\n"; 939} 940 941eval{$ret &= -$inf }; 942if($@ =~ /In Math::GMPz::overload_and_eq, cannot coerce an Inf to a Math::GMPz value/) {print "ok 126\n"} 943else { 944 warn "\n\$\@: $@\n"; 945 print "not ok 126\n"; 946} 947 948eval{$ret &= "$strinf"}; 949if($@ =~ /supplied to Math::GMPz::overload_and_eq/) {print "ok 127\n"} 950else { 951 warn "\n\$\@: $@\n"; 952 print "not ok 127\n"; 953} 954 955eval{$ret &= $nan }; 956if($@ =~ /In Math::GMPz::overload_and_eq, cannot coerce a NaN to a Math::GMPz value/) {print "ok 128\n"} 957else { 958 warn "\n\$\@: $@\n"; 959 print "not ok 128\n"; 960} 961 962eval{$ret &= "$strnan"}; 963if($@ =~ /supplied to Math::GMPz::overload_and_eq/) {print "ok 129\n"} 964else { 965 warn "\n\$\@: $@\n"; 966 print "not ok 129\n"; 967} 968 969eval{$ret &= "61.2"}; 970if($@ =~ /supplied to Math::GMPz::overload_and_eq/) {print "ok 130\n"} 971else { 972 warn "\n\$\@: $@\n"; 973 print "not ok 130\n"; 974} 975 976eval{$ret |= $inf }; 977if($@ =~ /In Math::GMPz::overload_ior_eq, cannot coerce an Inf to a Math::GMPz value/) {print "ok 131\n"} 978else { 979 warn "\n\$\@: $@\n"; 980 print "not ok 131\n"; 981} 982 983eval{$ret |= -$inf }; 984if($@ =~ /In Math::GMPz::overload_ior_eq, cannot coerce an Inf to a Math::GMPz value/) {print "ok 132\n"} 985else { 986 warn "\n\$\@: $@\n"; 987 print "not ok 132\n"; 988} 989 990eval{$ret |= "$strinf"}; 991if($@ =~ /supplied to Math::GMPz::overload_ior_eq/) {print "ok 133\n"} 992else { 993 warn "\n\$\@: $@\n"; 994 print "not ok 133\n"; 995} 996 997eval{$ret |= $nan }; 998if($@ =~ /In Math::GMPz::overload_ior_eq, cannot coerce a NaN to a Math::GMPz value/) {print "ok 134\n"} 999else { 1000 warn "\n\$\@: $@\n"; 1001 print "not ok 134\n"; 1002} 1003 1004eval{$ret |= "$strnan"}; 1005if($@ =~ /supplied to Math::GMPz::overload_ior_eq/) {print "ok 135\n"} 1006else { 1007 warn "\n\$\@: $@\n"; 1008 print "not ok 135\n"; 1009} 1010 1011eval{$ret |= "61.2"}; 1012if($@ =~ /supplied to Math::GMPz::overload_ior_eq/) {print "ok 136\n"} 1013else { 1014 warn "\n\$\@: $@\n"; 1015 print "not ok 136\n"; 1016} 1017 1018eval{$ret ^= $inf }; 1019if($@ =~ /In Math::GMPz::overload_xor_eq, cannot coerce an Inf to a Math::GMPz value/) {print "ok 137\n"} 1020else { 1021 warn "\n\$\@: $@\n"; 1022 print "not ok 137\n"; 1023} 1024 1025eval{$ret ^= -$inf }; 1026if($@ =~ /In Math::GMPz::overload_xor_eq, cannot coerce an Inf to a Math::GMPz value/) {print "ok 138\n"} 1027else { 1028 warn "\n\$\@: $@\n"; 1029 print "not ok 138\n"; 1030} 1031 1032eval{$ret ^= "$strinf"}; 1033if($@ =~ /supplied to Math::GMPz::overload_xor_eq/) {print "ok 139\n"} 1034else { 1035 warn "\n\$\@: $@\n"; 1036 print "not ok 139\n"; 1037} 1038 1039eval{$ret ^= $nan }; 1040if($@ =~ /In Math::GMPz::overload_xor_eq, cannot coerce a NaN to a Math::GMPz value/) {print "ok 140\n"} 1041else { 1042 warn "\n\$\@: $@\n"; 1043 print "not ok 140\n"; 1044} 1045 1046eval{$ret ^= "$strnan"}; 1047if($@ =~ /supplied to Math::GMPz::overload_xor_eq/) {print "ok 141\n"} 1048else { 1049 warn "\n\$\@: $@\n"; 1050 print "not ok 141\n"; 1051} 1052 1053eval{$ret ^= "61.2"}; 1054if($@ =~ /supplied to Math::GMPz::overload_xor_eq/) {print "ok 142\n"} 1055else { 1056 warn "\n\$\@: $@\n"; 1057 print "not ok 142\n"; 1058} 1059 1060 1061if((Math::GMPz->new(50) & 40.1) == (50 & 40)) {print "ok 143\n"} 1062else { 1063 warn "\n Expected ", 50 & 40, "\n Got ", Math::GMPz->new(50) & 40.1,"\n"; 1064 print "not ok 143\n"; 1065} 1066 1067if((Math::GMPz->new(50) | 40.9) == (50 | 40)) {print "ok 144\n"} 1068else { 1069 warn "\n Expected ", 50 | 40, "\n Got ", Math::GMPz->new(50) | 40.9,"\n"; 1070 print "not ok 144\n"; 1071} 1072 1073if((Math::GMPz->new(50) ^ 40.1) == (50 ^ 40)) {print "ok 145\n"} 1074else { 1075 warn "\n Expected ", 50 ^ 40, "\n Got ", Math::GMPz->new(50) ^ 40.1,"\n"; 1076 print "not ok 145\n"; 1077} 1078 1079my $z = Math::GMPz->new('1234567'); 1080my $i = 1234567; 1081 1082$z &= 699999.6; 1083$i &= 699999; 1084 1085if($z == $i) {print "ok 146\n"} 1086else { 1087 warn "\n Expected $i\n Got $z\n"; 1088 print "not ok 146\n"; 1089} 1090 1091$z |= 233333.6; 1092$i |= 233333; 1093 1094if($z == $i) {print "ok 147\n"} 1095else { 1096 warn "\n Expected $i\n Got $z\n"; 1097 print "not ok 147\n"; 1098} 1099 1100$z ^= 101010.6; 1101$i ^= 101010; 1102 1103if($z == $i) {print "ok 148\n"} 1104else { 1105 warn "\n Expected $i\n Got $z\n"; 1106 print "not ok 148\n"; 1107} 1108 1109if("$strninf" =~ /^\-inf/i || $^O =~ /MSWin/) { 1110 my $z = Math::GMPz->new(-3); 1111 1112 if($z == "$strninf") { 1113 warn "\n $z == infinity\n"; 1114 print "not ok 149\n"; 1115 } 1116 else {print "ok 149\n"} 1117 1118 if($z != "$strninf") {print "ok 150\n"} 1119 else { 1120 warn "\n $z == infinity\n"; 1121 print "not ok 150\n"; 1122 } 1123 1124 if($z > "$strninf") {print "ok 151\n"} 1125 else { 1126 warn "\n $z <= infinity\n"; 1127 print "not ok 151\n"; 1128 } 1129 1130 if($z >= "$strninf") {print "ok 152\n"} 1131 else { 1132 warn "\n $z < infinity\n"; 1133 print "not ok 152\n"; 1134 } 1135 1136 if($z < "$strninf") { 1137 warn "\n $z < infinity\n"; 1138 print "not ok 153\n"; 1139 } 1140 else {print "ok 153\n"} 1141 1142 if($z <= "$strninf") { 1143 warn "\n $z <= infinity\n"; 1144 print "not ok 154\n"; 1145 } 1146 else {print "ok 154\n"} 1147 1148 if(($z <=> "$strninf") > 0) {print "ok 155\n"} 1149 else { 1150 warn "\n $z !> infinity\n"; 1151 print "not ok 155\n"; 1152 } 1153 1154} 1155else { 1156 warn "\n Skipping tests 149..155 (not MSWin, and -iNf !~ /^\\-inf/i)\n"; 1157 for(149 .. 155 ) {print "ok $_\n"} 1158} 1159