1eac174f2Safresh1# -*- mode: perl; -*- 2b8851fccSafresh1 3b8851fccSafresh1# test inf/NaN handling all in one place 4b8851fccSafresh1 5b8851fccSafresh1use strict; 6b8851fccSafresh1use warnings; 7b8851fccSafresh1use lib 't'; 8b8851fccSafresh1 9*e0680481Safresh1use Test::More tests => 1044; 10b8851fccSafresh1 11b8851fccSafresh1use Math::BigInt; 12b8851fccSafresh1use Math::BigFloat; 13b8851fccSafresh1use Math::BigInt::Subclass; 14b8851fccSafresh1use Math::BigFloat::Subclass; 15b8851fccSafresh1 16b8851fccSafresh1my @biclasses = qw/ Math::BigInt Math::BigInt::Subclass /; 17b8851fccSafresh1my @bfclasses = qw/ Math::BigFloat Math::BigFloat::Subclass /; 18b8851fccSafresh1 19*e0680481Safresh1my (@args, $x, $y, $z, $test); 20b8851fccSafresh1 21b8851fccSafresh1# + 22b8851fccSafresh1 23b8851fccSafresh1foreach (qw/ 24b8851fccSafresh1 25b8851fccSafresh1 -inf:-inf:-inf 26b8851fccSafresh1 -1:-inf:-inf 27b8851fccSafresh1 -0:-inf:-inf 28b8851fccSafresh1 0:-inf:-inf 29b8851fccSafresh1 1:-inf:-inf 30b8851fccSafresh1 inf:-inf:NaN 31b8851fccSafresh1 NaN:-inf:NaN 32b8851fccSafresh1 33b8851fccSafresh1 -inf:-1:-inf 34b8851fccSafresh1 -1:-1:-2 35b8851fccSafresh1 -0:-1:-1 36b8851fccSafresh1 0:-1:-1 37b8851fccSafresh1 1:-1:0 38b8851fccSafresh1 inf:-1:inf 39b8851fccSafresh1 NaN:-1:NaN 40b8851fccSafresh1 41b8851fccSafresh1 -inf:0:-inf 42b8851fccSafresh1 -1:0:-1 43b8851fccSafresh1 -0:0:0 44b8851fccSafresh1 0:0:0 45b8851fccSafresh1 1:0:1 46b8851fccSafresh1 inf:0:inf 47b8851fccSafresh1 NaN:0:NaN 48b8851fccSafresh1 49b8851fccSafresh1 -inf:1:-inf 50b8851fccSafresh1 -1:1:0 51b8851fccSafresh1 -0:1:1 52b8851fccSafresh1 0:1:1 53b8851fccSafresh1 1:1:2 54b8851fccSafresh1 inf:1:inf 55b8851fccSafresh1 NaN:1:NaN 56b8851fccSafresh1 57b8851fccSafresh1 -inf:inf:NaN 58b8851fccSafresh1 -1:inf:inf 59b8851fccSafresh1 -0:inf:inf 60b8851fccSafresh1 0:inf:inf 61b8851fccSafresh1 1:inf:inf 62b8851fccSafresh1 inf:inf:inf 63b8851fccSafresh1 NaN:inf:NaN 64b8851fccSafresh1 65b8851fccSafresh1 -inf:NaN:NaN 66b8851fccSafresh1 -1:NaN:NaN 67b8851fccSafresh1 -0:NaN:NaN 68b8851fccSafresh1 0:NaN:NaN 69b8851fccSafresh1 1:NaN:NaN 70b8851fccSafresh1 inf:NaN:NaN 71b8851fccSafresh1 NaN:NaN:NaN 72b8851fccSafresh1 73b8851fccSafresh1 /) 74b8851fccSafresh1{ 75b8851fccSafresh1 @args = split /:/, $_; 76b8851fccSafresh1 for my $class (@biclasses, @bfclasses) { 77*e0680481Safresh1 $args[2] = '0' if $args[2] eq '-0'; # Math::Big* has no -0 78b8851fccSafresh1 $x = $class->new($args[0]); 79b8851fccSafresh1 $y = $class->new($args[1]); 80*e0680481Safresh1 $z = $x->badd($y); 81b8851fccSafresh1 82*e0680481Safresh1 $test = qq|\$x = $class->new("$args[0]"); | 83*e0680481Safresh1 . qq|\$y = $class->new("$args[1]"); | 84*e0680481Safresh1 . qq|\$z = \$x->badd(\$y);|; 85*e0680481Safresh1 86*e0680481Safresh1 subtest $test => sub { 87*e0680481Safresh1 plan tests => 6; 88*e0680481Safresh1 89*e0680481Safresh1 is(ref($x), $class, "\$x is a $class"); 90*e0680481Safresh1 is(ref($y), $class, "\$y is still a $class"); 91*e0680481Safresh1 is(ref($z), $class, "\$z is a $class"); 92*e0680481Safresh1 is($x->bstr(), $args[2], 'value of $x'); 93*e0680481Safresh1 is($y->bstr(), $args[1], 'value of $y'); 94*e0680481Safresh1 is($z->bstr(), $args[2], 'value of $z'); 95*e0680481Safresh1 }; 96b8851fccSafresh1 } 97b8851fccSafresh1} 98b8851fccSafresh1 99b8851fccSafresh1# - 100b8851fccSafresh1 101b8851fccSafresh1foreach (qw/ 102b8851fccSafresh1 103b8851fccSafresh1 -inf:-inf:NaN 104b8851fccSafresh1 -1:-inf:inf 105b8851fccSafresh1 -0:-inf:inf 106b8851fccSafresh1 0:-inf:inf 107b8851fccSafresh1 1:-inf:inf 108b8851fccSafresh1 inf:-inf:inf 109b8851fccSafresh1 NaN:-inf:NaN 110b8851fccSafresh1 111b8851fccSafresh1 -inf:-1:-inf 112b8851fccSafresh1 -1:-1:0 113b8851fccSafresh1 -0:-1:1 114b8851fccSafresh1 0:-1:1 115b8851fccSafresh1 1:-1:2 116b8851fccSafresh1 inf:-1:inf 117b8851fccSafresh1 NaN:-1:NaN 118b8851fccSafresh1 119b8851fccSafresh1 -inf:0:-inf 120b8851fccSafresh1 -1:0:-1 121b8851fccSafresh1 -0:0:-0 122b8851fccSafresh1 0:0:0 123b8851fccSafresh1 1:0:1 124b8851fccSafresh1 inf:0:inf 125b8851fccSafresh1 NaN:0:NaN 126b8851fccSafresh1 127b8851fccSafresh1 -inf:1:-inf 128b8851fccSafresh1 -1:1:-2 129b8851fccSafresh1 -0:1:-1 130b8851fccSafresh1 0:1:-1 131b8851fccSafresh1 1:1:0 132b8851fccSafresh1 inf:1:inf 133b8851fccSafresh1 NaN:1:NaN 134b8851fccSafresh1 135b8851fccSafresh1 -inf:inf:-inf 136b8851fccSafresh1 -1:inf:-inf 137b8851fccSafresh1 -0:inf:-inf 138b8851fccSafresh1 0:inf:-inf 139b8851fccSafresh1 1:inf:-inf 140b8851fccSafresh1 inf:inf:NaN 141b8851fccSafresh1 NaN:inf:NaN 142b8851fccSafresh1 143b8851fccSafresh1 -inf:NaN:NaN 144b8851fccSafresh1 -1:NaN:NaN 145b8851fccSafresh1 -0:NaN:NaN 146b8851fccSafresh1 0:NaN:NaN 147b8851fccSafresh1 1:NaN:NaN 148b8851fccSafresh1 inf:NaN:NaN 149b8851fccSafresh1 NaN:NaN:NaN 150b8851fccSafresh1 151b8851fccSafresh1 /) 152b8851fccSafresh1{ 153b8851fccSafresh1 @args = split /:/, $_; 154b8851fccSafresh1 for my $class (@biclasses, @bfclasses) { 155*e0680481Safresh1 $args[2] = '0' if $args[2] eq '-0'; # Math::Big* has no -0 156b8851fccSafresh1 $x = $class->new($args[0]); 157b8851fccSafresh1 $y = $class->new($args[1]); 158*e0680481Safresh1 $z = $x->bsub($y); 159b8851fccSafresh1 160*e0680481Safresh1 $test = qq|\$x = $class->new("$args[0]"); | 161*e0680481Safresh1 . qq|\$y = $class->new("$args[1]"); | 162*e0680481Safresh1 . qq|\$z = \$x->bsub(\$y);|; 163*e0680481Safresh1 164*e0680481Safresh1 subtest $test => sub { 165*e0680481Safresh1 plan tests => 6; 166*e0680481Safresh1 167*e0680481Safresh1 is(ref($x), $class, "\$x is a $class"); 168*e0680481Safresh1 is(ref($y), $class, "\$y is still a $class"); 169*e0680481Safresh1 is(ref($z), $class, "\$z is a $class"); 170*e0680481Safresh1 is($x->bstr(), $args[2], 'value of $x'); 171*e0680481Safresh1 is($y->bstr(), $args[1], 'value of $y'); 172*e0680481Safresh1 is($z->bstr(), $args[2], 'value of $z'); 173*e0680481Safresh1 }; 174b8851fccSafresh1 } 175b8851fccSafresh1} 176b8851fccSafresh1 177b8851fccSafresh1# * 178b8851fccSafresh1 179b8851fccSafresh1foreach (qw/ 180b8851fccSafresh1 181b8851fccSafresh1 -inf:-inf:inf 182b8851fccSafresh1 -1:-inf:inf 183b8851fccSafresh1 -0:-inf:NaN 184b8851fccSafresh1 0:-inf:NaN 185b8851fccSafresh1 1:-inf:-inf 186b8851fccSafresh1 inf:-inf:-inf 187b8851fccSafresh1 NaN:-inf:NaN 188b8851fccSafresh1 189b8851fccSafresh1 -inf:-1:inf 190b8851fccSafresh1 -1:-1:1 191b8851fccSafresh1 -0:-1:0 192b8851fccSafresh1 0:-1:-0 193b8851fccSafresh1 1:-1:-1 194b8851fccSafresh1 inf:-1:-inf 195b8851fccSafresh1 NaN:-1:NaN 196b8851fccSafresh1 197b8851fccSafresh1 -inf:0:NaN 198b8851fccSafresh1 -1:0:-0 199b8851fccSafresh1 -0:0:-0 200b8851fccSafresh1 0:0:0 201b8851fccSafresh1 1:0:0 202b8851fccSafresh1 inf:0:NaN 203b8851fccSafresh1 NaN:0:NaN 204b8851fccSafresh1 205b8851fccSafresh1 -inf:1:-inf 206b8851fccSafresh1 -1:1:-1 207b8851fccSafresh1 -0:1:-0 208b8851fccSafresh1 0:1:0 209b8851fccSafresh1 1:1:1 210b8851fccSafresh1 inf:1:inf 211b8851fccSafresh1 NaN:1:NaN 212b8851fccSafresh1 213b8851fccSafresh1 -inf:inf:-inf 214b8851fccSafresh1 -1:inf:-inf 215b8851fccSafresh1 -0:inf:NaN 216b8851fccSafresh1 0:inf:NaN 217b8851fccSafresh1 1:inf:inf 218b8851fccSafresh1 inf:inf:inf 219b8851fccSafresh1 NaN:inf:NaN 220b8851fccSafresh1 221b8851fccSafresh1 -inf:NaN:NaN 222b8851fccSafresh1 -1:NaN:NaN 223b8851fccSafresh1 -0:NaN:NaN 224b8851fccSafresh1 0:NaN:NaN 225b8851fccSafresh1 1:NaN:NaN 226b8851fccSafresh1 inf:NaN:NaN 227b8851fccSafresh1 NaN:NaN:NaN 228b8851fccSafresh1 229b8851fccSafresh1 /) 230b8851fccSafresh1{ 231b8851fccSafresh1 @args = split /:/, $_; 232b8851fccSafresh1 for my $class (@biclasses, @bfclasses) { 233*e0680481Safresh1 $args[2] = '0' if $args[2] eq '-0'; # Math::Big* has no -0 234b8851fccSafresh1 $x = $class->new($args[0]); 235b8851fccSafresh1 $y = $class->new($args[1]); 236*e0680481Safresh1 $z = $x->bmul($y); 237b8851fccSafresh1 238*e0680481Safresh1 $test = qq|\$x = $class->new("$args[0]"); | 239*e0680481Safresh1 . qq|\$y = $class->new("$args[1]"); | 240*e0680481Safresh1 . qq|\$z = \$x->bmul(\$y);|; 241*e0680481Safresh1 242*e0680481Safresh1 subtest $test => sub { 243*e0680481Safresh1 plan tests => 6; 244*e0680481Safresh1 245*e0680481Safresh1 is(ref($x), $class, "\$x is a $class"); 246*e0680481Safresh1 is(ref($y), $class, "\$y is still a $class"); 247*e0680481Safresh1 is(ref($z), $class, "\$z is a $class"); 248*e0680481Safresh1 is($x->bstr(), $args[2], 'value of $x'); 249*e0680481Safresh1 is($y->bstr(), $args[1], 'value of $y'); 250*e0680481Safresh1 is($z->bstr(), $args[2], 'value of $z'); 251*e0680481Safresh1 }; 252b8851fccSafresh1 } 253b8851fccSafresh1} 254b8851fccSafresh1 255b8851fccSafresh1# / 256b8851fccSafresh1 257b8851fccSafresh1foreach (qw/ 258b8851fccSafresh1 259b8851fccSafresh1 -inf:-inf:NaN 260b8851fccSafresh1 -1:-inf:0 261b8851fccSafresh1 -0:-inf:0 262b8851fccSafresh1 0:-inf:-0 263b8851fccSafresh1 1:-inf:-1 264b8851fccSafresh1 inf:-inf:NaN 265b8851fccSafresh1 NaN:-inf:NaN 266b8851fccSafresh1 267b8851fccSafresh1 -inf:-1:inf 268b8851fccSafresh1 -1:-1:1 269b8851fccSafresh1 -0:-1:0 270b8851fccSafresh1 0:-1:-0 271b8851fccSafresh1 1:-1:-1 272b8851fccSafresh1 inf:-1:-inf 273b8851fccSafresh1 NaN:-1:NaN 274b8851fccSafresh1 275b8851fccSafresh1 -inf:0:-inf 276b8851fccSafresh1 -1:0:-inf 277b8851fccSafresh1 -0:0:NaN 278b8851fccSafresh1 0:0:NaN 279b8851fccSafresh1 1:0:inf 280b8851fccSafresh1 inf:0:inf 281b8851fccSafresh1 NaN:0:NaN 282b8851fccSafresh1 283b8851fccSafresh1 -inf:1:-inf 284b8851fccSafresh1 -1:1:-1 285b8851fccSafresh1 -0:1:-0 286b8851fccSafresh1 0:1:0 287b8851fccSafresh1 1:1:1 288b8851fccSafresh1 inf:1:inf 289b8851fccSafresh1 NaN:1:NaN 290b8851fccSafresh1 291b8851fccSafresh1 -inf:inf:NaN 292b8851fccSafresh1 -1:inf:-1 293b8851fccSafresh1 -0:inf:-0 294b8851fccSafresh1 0:inf:0 295b8851fccSafresh1 1:inf:0 296b8851fccSafresh1 inf:inf:NaN 297b8851fccSafresh1 NaN:inf:NaN 298b8851fccSafresh1 299b8851fccSafresh1 -inf:NaN:NaN 300b8851fccSafresh1 -1:NaN:NaN 301b8851fccSafresh1 -0:NaN:NaN 302b8851fccSafresh1 0:NaN:NaN 303b8851fccSafresh1 1:NaN:NaN 304b8851fccSafresh1 inf:NaN:NaN 305b8851fccSafresh1 NaN:NaN:NaN 306b8851fccSafresh1 307b8851fccSafresh1 /) 308b8851fccSafresh1{ 309b8851fccSafresh1 @args = split /:/, $_; 310b8851fccSafresh1 for my $class (@biclasses, @bfclasses) { 311*e0680481Safresh1 $args[2] = '0' if $args[2] eq '-0'; # Math::Big* has no -0 312b8851fccSafresh1 313*e0680481Safresh1 my ($q, $r); 314b8851fccSafresh1 315b8851fccSafresh1 # bdiv in scalar context 316*e0680481Safresh1 317*e0680481Safresh1 $x = $class->new($args[0]); 318*e0680481Safresh1 $y = $class->new($args[1]); 319*e0680481Safresh1 320b8851fccSafresh1 unless ($class =~ /^Math::BigFloat/) { 321*e0680481Safresh1 $q = $x->bdiv($y); 322*e0680481Safresh1 323*e0680481Safresh1 $test = qq|\$x = $class->new("$args[0]"); | 324*e0680481Safresh1 . qq|\$y = $class->new("$args[1]"); | 325*e0680481Safresh1 . qq|\$q = \$x->bdiv(\$y);|; 326*e0680481Safresh1 327*e0680481Safresh1 subtest $test => sub { 328*e0680481Safresh1 plan tests => 6; 329*e0680481Safresh1 330*e0680481Safresh1 is(ref($x), $class, "\$x is a $class"); 331*e0680481Safresh1 is(ref($y), $class, "\$y is still a $class"); 332*e0680481Safresh1 is(ref($q), $class, "\$q is a $class"); 333*e0680481Safresh1 is($x->bstr(), $args[2], 'value of $x'); 334*e0680481Safresh1 is($y->bstr(), $args[1], 'value of $y'); 335*e0680481Safresh1 is($q->bstr(), $args[2], 'value of $q'); 336*e0680481Safresh1 }; 337b8851fccSafresh1 } 338b8851fccSafresh1 339b8851fccSafresh1 # bmod and bdiv in list context 340*e0680481Safresh1 341*e0680481Safresh1 $x = $class->new($args[0]); 342*e0680481Safresh1 $y = $class->new($args[1]); 343*e0680481Safresh1 344*e0680481Safresh1 ($q, $r) = $x->bdiv($y); 345b8851fccSafresh1 346b8851fccSafresh1 # bdiv in list context 347*e0680481Safresh1 348*e0680481Safresh1 $test = qq|\$x = $class->new("$args[0]"); | 349*e0680481Safresh1 . qq|\$y = $class->new("$args[1]"); | 350*e0680481Safresh1 . qq|(\$q, \$r) = \$x->bdiv(\$y);|; 351*e0680481Safresh1 352*e0680481Safresh1 subtest $test => sub { 353*e0680481Safresh1 plan tests => 7; 354*e0680481Safresh1 355*e0680481Safresh1 is(ref($x), $class, "\$x is a $class"); 356*e0680481Safresh1 is(ref($y), $class, "\$y is still a $class"); 357*e0680481Safresh1 is(ref($q), $class, "\$q is a $class"); 358*e0680481Safresh1 is(ref($r), $class, "\$r is a $class"); 359*e0680481Safresh1 is($x->bstr(), $args[2], 'value of $x'); 360*e0680481Safresh1 is($y->bstr(), $args[1], 'value of $y'); 361*e0680481Safresh1 is($q->bstr(), $args[2], 'value of $q'); 362*e0680481Safresh1 }; 363b8851fccSafresh1 364b8851fccSafresh1 # bmod 365b8851fccSafresh1 366*e0680481Safresh1 $x = $class->new($args[0]); 367*e0680481Safresh1 $y = $class->new($args[1]); 368*e0680481Safresh1 369*e0680481Safresh1 my $m = $x->bmod($y); 370*e0680481Safresh1 371*e0680481Safresh1 $test = qq|\$x = $class->new("$args[0]"); | 372*e0680481Safresh1 . qq|\$y = $class->new("$args[1]"); | 373*e0680481Safresh1 . qq|\$m = \$x->bmod(\$y);|; 374*e0680481Safresh1 375*e0680481Safresh1 subtest $test => sub { 376*e0680481Safresh1 plan tests => 6; 377*e0680481Safresh1 378*e0680481Safresh1 is(ref($x), $class, "\$x is a $class"); 379*e0680481Safresh1 is(ref($y), $class, "\$y is still a $class"); 380*e0680481Safresh1 is(ref($m), $class, "\$m is a $class"); 381*e0680481Safresh1 is($x->bstr(), $r->bstr(), 'value of $x'); 382*e0680481Safresh1 is($y->bstr(), $args[1], 'value of $y'); 383*e0680481Safresh1 is($m->bstr(), $r->bstr(), 'value of $m'); 384*e0680481Safresh1 }; 385b8851fccSafresh1 } 386b8851fccSafresh1} 387b8851fccSafresh1 388b8851fccSafresh1# / 389b8851fccSafresh1 390b8851fccSafresh1foreach (qw/ 391b8851fccSafresh1 392b8851fccSafresh1 -inf:-inf:NaN 393b8851fccSafresh1 -1:-inf:0 394b8851fccSafresh1 -0:-inf:0 395b8851fccSafresh1 0:-inf:-0 396b8851fccSafresh1 1:-inf:-0 397b8851fccSafresh1 inf:-inf:NaN 398b8851fccSafresh1 NaN:-inf:NaN 399b8851fccSafresh1 400b8851fccSafresh1 -inf:-1:inf 401b8851fccSafresh1 -1:-1:1 402b8851fccSafresh1 -0:-1:0 403b8851fccSafresh1 0:-1:-0 404b8851fccSafresh1 1:-1:-1 405b8851fccSafresh1 inf:-1:-inf 406b8851fccSafresh1 NaN:-1:NaN 407b8851fccSafresh1 408b8851fccSafresh1 -inf:0:-inf 409b8851fccSafresh1 -1:0:-inf 410b8851fccSafresh1 -0:0:NaN 411b8851fccSafresh1 0:0:NaN 412b8851fccSafresh1 1:0:inf 413b8851fccSafresh1 inf:0:inf 414b8851fccSafresh1 NaN:0:NaN 415b8851fccSafresh1 416b8851fccSafresh1 -inf:1:-inf 417b8851fccSafresh1 -1:1:-1 418b8851fccSafresh1 -0:1:-0 419b8851fccSafresh1 0:1:0 420b8851fccSafresh1 1:1:1 421b8851fccSafresh1 inf:1:inf 422b8851fccSafresh1 NaN:1:NaN 423b8851fccSafresh1 424b8851fccSafresh1 -inf:inf:NaN 425b8851fccSafresh1 -1:inf:-0 426b8851fccSafresh1 -0:inf:-0 427b8851fccSafresh1 0:inf:0 428b8851fccSafresh1 1:inf:0 429b8851fccSafresh1 inf:inf:NaN 430b8851fccSafresh1 NaN:inf:NaN 431b8851fccSafresh1 432b8851fccSafresh1 -inf:NaN:NaN 433b8851fccSafresh1 -1:NaN:NaN 434b8851fccSafresh1 -0:NaN:NaN 435b8851fccSafresh1 0:NaN:NaN 436b8851fccSafresh1 1:NaN:NaN 437b8851fccSafresh1 inf:NaN:NaN 438b8851fccSafresh1 NaN:NaN:NaN 439b8851fccSafresh1 440b8851fccSafresh1 /) 441b8851fccSafresh1{ 442b8851fccSafresh1 @args = split /:/, $_; 443b8851fccSafresh1 for my $class (@bfclasses) { 444*e0680481Safresh1 $args[2] = '0' if $args[2] eq '-0'; # Math::Big* has no -0 445b8851fccSafresh1 $x = $class->new($args[0]); 446b8851fccSafresh1 $y = $class->new($args[1]); 447*e0680481Safresh1 $z = $x->bdiv($y); 448b8851fccSafresh1 449*e0680481Safresh1 $test = qq|\$x = $class->new("$args[0]"); | 450*e0680481Safresh1 . qq|\$y = $class->new("$args[1]"); | 451*e0680481Safresh1 . qq|\$z = \$x->bdiv(\$y);|; 452b8851fccSafresh1 453*e0680481Safresh1 subtest $test => sub { 454*e0680481Safresh1 plan tests => 6; 455*e0680481Safresh1 456*e0680481Safresh1 is(ref($x), $class, "\$x is a $class"); 457*e0680481Safresh1 is(ref($y), $class, "\$y is still a $class"); 458*e0680481Safresh1 is(ref($z), $class, "\$z is a $class"); 459*e0680481Safresh1 is($x->bstr(), $args[2], 'value of $x'); 460*e0680481Safresh1 is($y->bstr(), $args[1], 'value of $y'); 461*e0680481Safresh1 is($z->bstr(), $args[2], 'value of $z'); 462*e0680481Safresh1 }; 463b8851fccSafresh1 } 464b8851fccSafresh1} 465b8851fccSafresh1 466b8851fccSafresh1############################################################################# 467b8851fccSafresh1# overloaded comparisons 468b8851fccSafresh1 469b8851fccSafresh1foreach my $c (@biclasses, @bfclasses) { 470*e0680481Safresh1 $x = $c->bnan(); 471*e0680481Safresh1 $y = $c->bnan(); # test with two different objects, too 472*e0680481Safresh1 $z = $c->bzero(); 473b8851fccSafresh1 474b8851fccSafresh1 is($x == $y, '', 'NaN == NaN: ""'); 475b8851fccSafresh1 is($x != $y, 1, 'NaN != NaN: 1'); 476b8851fccSafresh1 477b8851fccSafresh1 is($x == $x, '', 'NaN == NaN: ""'); 478b8851fccSafresh1 is($x != $x, 1, 'NaN != NaN: 1'); 479b8851fccSafresh1 480b8851fccSafresh1 is($z != $x, 1, '0 != NaN: 1'); 481b8851fccSafresh1 is($z == $x, '', '0 == NaN: ""'); 482b8851fccSafresh1 483b8851fccSafresh1 is($z < $x, '', '0 < NaN: ""'); 484b8851fccSafresh1 is($z <= $x, '', '0 <= NaN: ""'); 485b8851fccSafresh1 is($z >= $x, '', '0 >= NaN: ""'); 486b8851fccSafresh1 #is($z > $x, '', '0 > NaN: ""'); # Bug! Todo: fix it! 487b8851fccSafresh1} 488b8851fccSafresh1 489b8851fccSafresh1# All done. 490