1b8851fccSafresh1#include this file into another test for subclass testing... 2b8851fccSafresh1 3b8851fccSafresh1use strict; 4b8851fccSafresh1use warnings; 5b8851fccSafresh1 6b46d8ef2Safresh1our ($CLASS, $LIB); 7b8851fccSafresh1 8b46d8ef2Safresh1is($CLASS->config('lib'), $LIB, "$CLASS->config('lib')"); 9b8851fccSafresh1 10b8851fccSafresh1my ($x, $y, $z, @args, $try, $want, $got); 11b8851fccSafresh1my ($f, $setup); 12b8851fccSafresh1 13b8851fccSafresh1while (<DATA>) { 14b8851fccSafresh1 s/#.*$//; # remove comments 15b8851fccSafresh1 s/\s+$//; # remove trailing whitespace 16b8851fccSafresh1 next unless length; # skip empty lines 17b8851fccSafresh1 18b8851fccSafresh1 if (s/^&//) { 19b8851fccSafresh1 $f = $_; 20b8851fccSafresh1 next; 21b8851fccSafresh1 } 22b8851fccSafresh1 23b8851fccSafresh1 if (/^\$/) { 24b8851fccSafresh1 $setup = $_; 25b8851fccSafresh1 $setup =~ s/\$/\$${CLASS}::/g; # round_mode, div_scale 26b8851fccSafresh1 next; 27b8851fccSafresh1 } 28b8851fccSafresh1 29b8851fccSafresh1 if (m|^(.*?):(/.+)$|) { 30b8851fccSafresh1 $want = $2; 31b8851fccSafresh1 @args = split(/:/, $1, 99); 32b8851fccSafresh1 } else { 33b8851fccSafresh1 @args = split(/:/, $_, 99); 34b8851fccSafresh1 $want = pop(@args); 35b8851fccSafresh1 } 36b8851fccSafresh1 37b8851fccSafresh1 $try = qq|\$x = $CLASS->new("$args[0]");|; 38b8851fccSafresh1 if ($f eq "bnorm") { 39b8851fccSafresh1 $try .= qq| \$x;|; 4056d68f1eSafresh1 } elsif ($f =~ /^is_(zero|one|odd|even||(non_)?(negative|positive)|nan|int)$/) { 41b8851fccSafresh1 $try .= qq| \$x->$f();|; 42b8851fccSafresh1 } elsif ($f eq "is_inf") { 43b8851fccSafresh1 $try .= qq| \$x->is_inf("$args[1]");|; 44b8851fccSafresh1 } elsif ($f eq "binf") { 45b8851fccSafresh1 $try .= qq| \$x->binf("$args[1]");|; 46b8851fccSafresh1 } elsif ($f eq "bone") { 47*e0680481Safresh1 $try .= length($args[1]) ? qq| \$x->bone("$args[1]");| 48*e0680481Safresh1 : qq| \$x->bone();|; 49b8851fccSafresh1 } elsif ($f eq "bstr") { 50b8851fccSafresh1 $try .= qq| \$x->accuracy($args[1]); \$x->precision($args[2]);|; 51b8851fccSafresh1 $try .= ' $x->bstr();'; 52b8851fccSafresh1 # some unary ops 53eac174f2Safresh1 } elsif ($f =~ /^b(nan|floor|ceil|int|sstr|neg|abs|sgn|inc|dec|not|sqrt|exp)$/) { 54eac174f2Safresh1 $try .= qq| \$x->$f();|; 55eac174f2Safresh1 } elsif ($f =~ /^b[dt]?fac$/) { 56b8851fccSafresh1 $try .= qq| \$x->$f();|; 579f11ffb7Safresh1 } elsif ($f =~ /^(numify|length|as_number)$/) { 589f11ffb7Safresh1 $try .= qq| \$x->$f();|; 599f11ffb7Safresh1 } elsif ($f =~ /^(to|as)_(hex|oct|bin)$/) { 609f11ffb7Safresh1 $try .= " \$x->$f();"; 61b8851fccSafresh1 # overloaded functions 62b8851fccSafresh1 } elsif ($f =~ /^(log|exp|sin|cos|atan2|int|neg|abs|sqrt)$/) { 63b8851fccSafresh1 $try .= qq| \$x = $f(\$x);|; 64b8851fccSafresh1 } elsif ($f eq "parts") { 65b8851fccSafresh1 # ->bstr() to see if an object is returned 66b8851fccSafresh1 $try .= ' ($a, $b) = $x->parts(); $a = $a->bstr(); $b = $b->bstr();'; 67b8851fccSafresh1 $try .= ' "$a $b";'; 68b8851fccSafresh1 } elsif ($f eq "exponent") { 69b8851fccSafresh1 # ->bstr() to see if an object is returned 70b8851fccSafresh1 $try .= ' $x->exponent()->bstr();'; 71b8851fccSafresh1 } elsif ($f eq "mantissa") { 72b8851fccSafresh1 # ->bstr() to see if an object is returned 73b8851fccSafresh1 $try .= ' $x->mantissa()->bstr();'; 74b8851fccSafresh1 } elsif ($f eq "bpi") { 75b8851fccSafresh1 $try .= qq| $CLASS->bpi(\$x);|; 76b8851fccSafresh1 } elsif ($f eq "bround") { 77b8851fccSafresh1 $try .= qq| $setup; \$x->bround($args[1]);|; 78b8851fccSafresh1 } elsif ($f eq "bfround") { 79b8851fccSafresh1 $try .= qq| $setup; \$x->bfround($args[1]);|; 80b8851fccSafresh1 } elsif ($f eq "bsqrt") { 81b8851fccSafresh1 $try .= qq| $setup; \$x->bsqrt();|; 82b8851fccSafresh1 } elsif ($f eq "bfac") { 83b8851fccSafresh1 $try .= qq| $setup; \$x->bfac();|; 849f11ffb7Safresh1 } elsif ($f eq "bdfac") { 859f11ffb7Safresh1 $try .= qq| $setup; \$x->bdfac();|; 86b8851fccSafresh1 } elsif ($f eq "blog") { 87b8851fccSafresh1 if (defined $args[1] && $args[1] ne '') { 88b8851fccSafresh1 $try .= qq| \$y = $CLASS->new($args[1]);|; 89b8851fccSafresh1 $try .= qq| $setup; \$x->blog(\$y);|; 90b8851fccSafresh1 } else { 91b8851fccSafresh1 $try .= qq| $setup; \$x->blog();|; 92b8851fccSafresh1 } 93b8851fccSafresh1 } else { 94b8851fccSafresh1 # binary operators 95b8851fccSafresh1 $try .= qq| \$y = $CLASS->new("$args[1]");|; 96b8851fccSafresh1 97b8851fccSafresh1 if ($f eq "bgcd") { 98b8851fccSafresh1 if (defined $args[2]) { 99b8851fccSafresh1 $try .= qq| \$z = $CLASS->new("$args[2]");|; 100b8851fccSafresh1 } 101b8851fccSafresh1 $try .= qq| $CLASS\::bgcd(\$x, \$y|; 102b8851fccSafresh1 $try .= qq|, \$z| if defined $args[2]; 103b8851fccSafresh1 $try .= qq|);|; 104b8851fccSafresh1 } elsif ($f eq "blcm") { 105b8851fccSafresh1 if (defined $args[2]) { 106b8851fccSafresh1 $try .= qq| \$z = $CLASS->new("$args[2]");|; 107b8851fccSafresh1 } 108b8851fccSafresh1 $try .= qq| $CLASS\::blcm(\$x, \$y|; 109b8851fccSafresh1 $try .= qq|, \$z| if defined $args[2]; 110b8851fccSafresh1 $try .= qq|);|; 111b8851fccSafresh1 } elsif ($f eq "bcmp") { 112b8851fccSafresh1 $try .= ' $x->bcmp($y);'; 113b8851fccSafresh1 } elsif ($f eq "bacmp") { 114b8851fccSafresh1 $try .= ' $x->bacmp($y);'; 115b8851fccSafresh1 } elsif ($f eq "bpow") { 1169f11ffb7Safresh1 $try .= ' $x->bpow($y);'; 117b8851fccSafresh1 } elsif ($f eq "bnok") { 118b8851fccSafresh1 $try .= ' $x->bnok($y);'; 119eac174f2Safresh1 } elsif ($f eq "bmfac") { 120eac174f2Safresh1 $try .= ' $x->bmfac($y);'; 121b8851fccSafresh1 } elsif ($f eq "bcos") { 122b8851fccSafresh1 $try .= ' $x->bcos($y);'; 123b8851fccSafresh1 } elsif ($f eq "bsin") { 124b8851fccSafresh1 $try .= ' $x->bsin($y);'; 125b8851fccSafresh1 } elsif ($f eq "batan") { 126b8851fccSafresh1 $try .= ' $x->batan($y);'; 127b8851fccSafresh1 } elsif ($f eq "broot") { 128b8851fccSafresh1 $try .= qq| $setup; \$x->broot(\$y);|; 129b8851fccSafresh1 } elsif ($f eq "badd") { 1309f11ffb7Safresh1 $try .= ' $x->badd($y);'; 131b8851fccSafresh1 } elsif ($f eq "bsub") { 1329f11ffb7Safresh1 $try .= ' $x->bsub($y);'; 133b8851fccSafresh1 } elsif ($f eq "bmul") { 1349f11ffb7Safresh1 $try .= ' $x->bmul($y);'; 135b8851fccSafresh1 } elsif ($f eq "bdiv") { 1369f11ffb7Safresh1 $try .= qq| $setup; scalar \$x->bdiv(\$y);|; 137b8851fccSafresh1 } elsif ($f eq "bdiv-list") { 138b8851fccSafresh1 $try .= qq| $setup; join(",", \$x->bdiv(\$y));|; 139b8851fccSafresh1 } elsif ($f eq "brsft") { 1409f11ffb7Safresh1 $try .= ' $x->brsft($y);'; 141b8851fccSafresh1 } elsif ($f eq "blsft") { 1429f11ffb7Safresh1 $try .= ' $x->blsft($y);'; 143b8851fccSafresh1 } elsif ($f eq "bmod") { 1449f11ffb7Safresh1 $try .= ' $x->bmod($y);'; 145b8851fccSafresh1 } else { 146b8851fccSafresh1 # Functions with three arguments 147b8851fccSafresh1 $try .= qq| \$z = $CLASS->new("$args[2]");|; 148b8851fccSafresh1 149b8851fccSafresh1 if ($f eq "bmodpow") { 150b8851fccSafresh1 $try .= ' $x->bmodpow($y, $z);'; 151b8851fccSafresh1 } elsif ($f eq "bmuladd") { 152b8851fccSafresh1 $try .= ' $x->bmuladd($y, $z);'; 153b8851fccSafresh1 } elsif ($f eq "batan2") { 154b8851fccSafresh1 $try .= ' $x->batan2($y, $z);'; 155b8851fccSafresh1 } else { 156b8851fccSafresh1 warn qq|Unknown op "$f"|; 157b8851fccSafresh1 } 158b8851fccSafresh1 } 159b8851fccSafresh1 } 160b8851fccSafresh1 161b8851fccSafresh1 $got = eval $try; 162b8851fccSafresh1 print "# Error: $@\n" if $@; 163b8851fccSafresh1 164b8851fccSafresh1 if ($want =~ m|^/(.*)$|) { 165b8851fccSafresh1 my $pat = $1; 166b8851fccSafresh1 like($got, qr/$pat/, $try); 167b8851fccSafresh1 } else { 168b8851fccSafresh1 if ($want eq "") { 169b8851fccSafresh1 is($got, undef, $try); 170b8851fccSafresh1 } else { 171b8851fccSafresh1 is($got, $want, $try); 172b8851fccSafresh1 if (ref($got) eq $CLASS) { 173b8851fccSafresh1 # float numbers are normalized (for now), so mantissa shouldn't 174b8851fccSafresh1 # have trailing zeros print $got->_trailing_zeros(), "\n"; 175b46d8ef2Safresh1 is($LIB->_zeros($got->{_m}), 0, $try); 176b8851fccSafresh1 } 177b8851fccSafresh1 } 178b8851fccSafresh1 } # end pattern or string 179b8851fccSafresh1 180b8851fccSafresh1} # end while 181b8851fccSafresh1 182b8851fccSafresh1# check whether $CLASS->new(Math::BigInt->new()) destroys it 183b8851fccSafresh1# ($y == 12 in this case) 184b8851fccSafresh1$x = Math::BigInt->new(1200); 185b8851fccSafresh1$y = $CLASS->new($x); 186b8851fccSafresh1is($y, 1200, 187eac174f2Safresh1 qq|\$x = Math::BigInt->new(1200); \$y = $CLASS->new(\$x); # check \$y|); 188b8851fccSafresh1is($x, 1200, 189eac174f2Safresh1 qq|\$x = Math::BigInt->new(1200); \$y = $CLASS->new(\$x); # check \$x|); 190b8851fccSafresh1 191b8851fccSafresh1############################################################################### 192b8851fccSafresh1# Really huge, big, ultra-mega-biggy-monster exponents. Technically, the 193b8851fccSafresh1# exponents should not be limited (they are Math::BigInt objects), but 194b8851fccSafresh1# practically there are a few places were they are limited to a Perl scalar. 195b8851fccSafresh1# This is sometimes for speed, sometimes because otherwise the number wouldn't 196b8851fccSafresh1# fit into your memory (just think of 1e123456789012345678901234567890 + 1!) 197b8851fccSafresh1# anyway. We don't test everything here, but let's make sure it just basically 198b8851fccSafresh1# works. 199b8851fccSafresh1 200b8851fccSafresh1my $monster = '1e1234567890123456789012345678901234567890'; 201b8851fccSafresh1 202b8851fccSafresh1# new and exponent 203b8851fccSafresh1is($CLASS->new($monster)->bsstr(), 204b8851fccSafresh1 '1e+1234567890123456789012345678901234567890', 205b8851fccSafresh1 qq|$CLASS->new("$monster")->bsstr()|); 206b8851fccSafresh1is($CLASS->new($monster)->exponent(), 207b8851fccSafresh1 '1234567890123456789012345678901234567890', 208b8851fccSafresh1 qq|$CLASS->new("$monster")->exponent()|); 209b8851fccSafresh1 210b8851fccSafresh1# cmp 211b8851fccSafresh1is($CLASS->new($monster) > 0, 1, qq|$CLASS->new("$monster") > 0|); 212b8851fccSafresh1 213b8851fccSafresh1# sub/mul 214b8851fccSafresh1is($CLASS->new($monster)->bsub($monster), 0, 215b8851fccSafresh1 qq|$CLASS->new("$monster")->bsub("$monster")|); 216b8851fccSafresh1is($CLASS->new($monster)->bmul(2)->bsstr(), 217b8851fccSafresh1 '2e+1234567890123456789012345678901234567890', 218b8851fccSafresh1 qq|$CLASS->new("$monster")->bmul(2)->bsstr()|); 219b8851fccSafresh1 220b8851fccSafresh1# mantissa 221b8851fccSafresh1$monster = '1234567890123456789012345678901234567890e2'; 222b8851fccSafresh1is($CLASS->new($monster)->mantissa(), 223b8851fccSafresh1 '123456789012345678901234567890123456789', 224b8851fccSafresh1 qq|$CLASS->new("$monster")->mantissa()|); 225b8851fccSafresh1 226b8851fccSafresh1############################################################################### 227b8851fccSafresh1# zero, inf, one, nan 228b8851fccSafresh1 229b8851fccSafresh1$x = $CLASS->new(2); 230b8851fccSafresh1$x->bzero(); 231b8851fccSafresh1is($x->{_a}, undef, qq|\$x = $CLASS->new(2); \$x->bzero(); \$x->{_a}|); 232b8851fccSafresh1is($x->{_p}, undef, qq|\$x = $CLASS->new(2); \$x->bzero(); \$x->{_p}|); 233b8851fccSafresh1 234b8851fccSafresh1$x = $CLASS->new(2); 235b8851fccSafresh1$x->binf(); 236b8851fccSafresh1is($x->{_a}, undef, qq|\$x = $CLASS->new(2); \$x->binf(); \$x->{_a}|); 237b8851fccSafresh1is($x->{_p}, undef, qq|\$x = $CLASS->new(2); \$x->binf(); \$x->{_p}|); 238b8851fccSafresh1 239b8851fccSafresh1$x = $CLASS->new(2); 240b8851fccSafresh1$x->bone(); 241b8851fccSafresh1is($x->{_a}, undef, qq|\$x = $CLASS->new(2); \$x->bone(); \$x->{_a}|); 242b8851fccSafresh1is($x->{_p}, undef, qq|\$x = $CLASS->new(2); \$x->bone(); \$x->{_p}|); 243b8851fccSafresh1 244b8851fccSafresh1$x = $CLASS->new(2); 245b8851fccSafresh1$x->bnan(); 246b8851fccSafresh1is($x->{_a}, undef, qq|\$x = $CLASS->new(2); \$x->bnan(); \$x->{_a}|); 247b8851fccSafresh1is($x->{_p}, undef, qq|\$x = $CLASS->new(2); \$x->bnan(); \$x->{_p}|); 248b8851fccSafresh1 249b8851fccSafresh1############################################################################### 250b8851fccSafresh1# bone/binf etc as plain calls (Lite failed them) 251b8851fccSafresh1 252b8851fccSafresh1is($CLASS->bzero(), 0, qq|$CLASS->bzero()|); 253b8851fccSafresh1is($CLASS->bone(), 1, qq|$CLASS->bone()|); 254b8851fccSafresh1is($CLASS->bone("+"), 1, qq|$CLASS->bone("+")|); 255b8851fccSafresh1is($CLASS->bone("-"), -1, qq|$CLASS->bone("-")|); 256b8851fccSafresh1is($CLASS->bnan(), "NaN", qq|$CLASS->bnan()|); 257b8851fccSafresh1is($CLASS->binf(), "inf", qq|$CLASS->binf()|); 258b8851fccSafresh1is($CLASS->binf("+"), "inf", qq|$CLASS->binf("+")|); 259b8851fccSafresh1is($CLASS->binf("-"), "-inf", qq|$CLASS->binf("-")|); 260b8851fccSafresh1is($CLASS->binf("-inf"), "-inf", qq|$CLASS->binf("-inf")|); 261b8851fccSafresh1 262b8851fccSafresh1$CLASS->accuracy(undef); # reset 263b8851fccSafresh1$CLASS->precision(undef); # reset 264b8851fccSafresh1 265b8851fccSafresh1############################################################################### 266b8851fccSafresh1# bsqrt() with set global A/P or A/P enabled on $x, also a test whether bsqrt() 267b8851fccSafresh1# correctly modifies $x 268b8851fccSafresh1 269b8851fccSafresh1$x = $CLASS->new(12); 270b8851fccSafresh1$CLASS->precision(-2); 271b8851fccSafresh1$x->bsqrt(); 272b8851fccSafresh1is($x, '3.46', 273b8851fccSafresh1 qq|\$x = $CLASS->new(12); $CLASS->precision(-2); \$x->bsqrt();|); 274b8851fccSafresh1 275b8851fccSafresh1$CLASS->precision(undef); 276b8851fccSafresh1$x = $CLASS->new(12); 277b8851fccSafresh1$CLASS->precision(0); 278b8851fccSafresh1$x->bsqrt(); 279b8851fccSafresh1is($x, '3', 280b8851fccSafresh1 qq|$CLASS->precision(undef); \$x = $CLASS->new(12);| . 281b8851fccSafresh1 qq| $CLASS->precision(0); \$x->bsqrt();|); 282b8851fccSafresh1 283b8851fccSafresh1$CLASS->precision(-3); 284b8851fccSafresh1$x = $CLASS->new(12); 285b8851fccSafresh1$x->bsqrt(); 286b8851fccSafresh1is($x, '3.464', 287b8851fccSafresh1 qq|$CLASS->precision(-3); \$x = $CLASS->new(12); \$x->bsqrt();|); 288b8851fccSafresh1 289b8851fccSafresh1{ 290b8851fccSafresh1 no strict 'refs'; 291b8851fccSafresh1 # A and P set => NaN 292b8851fccSafresh1 ${${CLASS}.'::accuracy'} = 4; 293b8851fccSafresh1 $x = $CLASS->new(12); 294b8851fccSafresh1 $x->bsqrt(3); 295b8851fccSafresh1 is($x, 'NaN', "A and P set => NaN"); 296b8851fccSafresh1 297b8851fccSafresh1 # supplied arg overrides set global 298b8851fccSafresh1 $CLASS->precision(undef); 299b8851fccSafresh1 $x = $CLASS->new(12); 300b8851fccSafresh1 $x->bsqrt(3); 301b8851fccSafresh1 is($x, '3.46', "supplied arg overrides set global"); 302b8851fccSafresh1 303b8851fccSafresh1 # reset for further tests 304b8851fccSafresh1 $CLASS->accuracy(undef); 305b8851fccSafresh1 $CLASS->precision(undef); 306b8851fccSafresh1} 307b8851fccSafresh1 308b8851fccSafresh1############################################################################# 309b8851fccSafresh1# can we call objectify (broken until v1.52) 310b8851fccSafresh1 311b8851fccSafresh1{ 312b8851fccSafresh1 no strict; 313b8851fccSafresh1 $try = '@args' 314b8851fccSafresh1 . " = $CLASS" 315b8851fccSafresh1 . "::objectify(2, $CLASS, 4, 5);" 316b8851fccSafresh1 . ' join(" ", @args);'; 317b8851fccSafresh1 $want = eval $try; 318b8851fccSafresh1 is($want, "$CLASS 4 5", $try); 319b8851fccSafresh1} 320b8851fccSafresh1 321b8851fccSafresh1############################################################################# 322b8851fccSafresh1# is_one('-') (broken until v1.64) 323b8851fccSafresh1 324b8851fccSafresh1is($CLASS->new(-1)->is_one(), 0, qq|$CLASS->new(-1)->is_one()|); 325b8851fccSafresh1is($CLASS->new(-1)->is_one("-"), 1, qq|$CLASS->new(-1)->is_one("-")|); 326b8851fccSafresh1 327b8851fccSafresh1############################################################################# 328b8851fccSafresh1# bug 1/0.5 leaving 2e-0 instead of 2e0 329b8851fccSafresh1 330b8851fccSafresh1is($CLASS->new(1)->bdiv("0.5")->bsstr(), "2e+0", 331b8851fccSafresh1 qq|$CLASS->new(1)->bdiv("0.5")->bsstr()|); 332b8851fccSafresh1 333b8851fccSafresh1############################################################################### 334b8851fccSafresh1# [perl #30609] bug with $x -= $x not being 0, but 2*$x 335b8851fccSafresh1 336b8851fccSafresh1$x = $CLASS->new(3); 337b8851fccSafresh1$x -= $x; 338b8851fccSafresh1is($x, 0, qq|\$x = $CLASS->new(3); \$x -= \$x;|); 339b8851fccSafresh1 340b8851fccSafresh1$x = $CLASS->new(-3); 341b8851fccSafresh1$x -= $x; 342b8851fccSafresh1is($x, 0, qq|\$x = $CLASS->new(-3); \$x -= \$x;|); 343b8851fccSafresh1 344b8851fccSafresh1$x = $CLASS->new(3); 345b8851fccSafresh1$x += $x; 346b8851fccSafresh1is($x, 6, qq|\$x = $CLASS->new(3); \$x += \$x;|); 347b8851fccSafresh1 348b8851fccSafresh1$x = $CLASS->new(-3); 349b8851fccSafresh1$x += $x; 350b8851fccSafresh1is($x, -6, qq|\$x = $CLASS->new(-3); \$x += \$x;|); 351b8851fccSafresh1 352b8851fccSafresh1$x = $CLASS->new("NaN"); 353b8851fccSafresh1$x -= $x; 354b8851fccSafresh1is($x->is_nan(), 1, qq|\$x = $CLASS->new("NaN"); \$x -= \$x;|); 355b8851fccSafresh1 356b8851fccSafresh1$x = $CLASS->new("inf"); 357b8851fccSafresh1$x -= $x; 358b8851fccSafresh1is($x->is_nan(), 1, qq|\$x = $CLASS->new("inf"); \$x -= \$x;|); 359b8851fccSafresh1 360b8851fccSafresh1$x = $CLASS->new("-inf"); 361b8851fccSafresh1$x -= $x; 362b8851fccSafresh1is($x->is_nan(), 1, qq|\$x = $CLASS->new("-inf"); \$x -= \$x;|); 363b8851fccSafresh1 364b8851fccSafresh1$x = $CLASS->new("NaN"); 365b8851fccSafresh1$x += $x; 366b8851fccSafresh1is($x->is_nan(), 1, qq|\$x = $CLASS->new("NaN"); \$x += \$x;|); 367b8851fccSafresh1 368b8851fccSafresh1$x = $CLASS->new("inf"); 369b8851fccSafresh1$x += $x; 370b8851fccSafresh1is($x->is_inf(), 1, qq|\$x = $CLASS->new("inf"); \$x += \$x;|); 371b8851fccSafresh1 372b8851fccSafresh1$x = $CLASS->new("-inf"); 373b8851fccSafresh1$x += $x; 374b8851fccSafresh1is($x->is_inf("-"), 1, qq|\$x = $CLASS->new("-inf"); \$x += \$x;|); 375b8851fccSafresh1 376b8851fccSafresh1$x = $CLASS->new("3.14"); 377b8851fccSafresh1$x -= $x; 378b8851fccSafresh1is($x, 0, qq|\$x = $CLASS->new("3.14"); \$x -= \$x;|); 379b8851fccSafresh1 380b8851fccSafresh1$x = $CLASS->new("-3.14"); 381b8851fccSafresh1$x -= $x; 382b8851fccSafresh1is($x, 0, qq|\$x = $CLASS->new("-3.14"); \$x -= \$x;|); 383b8851fccSafresh1 384b8851fccSafresh1$x = $CLASS->new("3.14"); 385b8851fccSafresh1$x += $x; 386b8851fccSafresh1is($x, "6.28", qq|$x = $CLASS->new("3.14"); $x += $x;|); 387b8851fccSafresh1 388b8851fccSafresh1$x = $CLASS->new("-3.14"); 389b8851fccSafresh1$x += $x; 390b8851fccSafresh1is($x, "-6.28", qq|$x = $CLASS->new("-3.14"); $x += $x;|); 391b8851fccSafresh1 392b8851fccSafresh1$x = $CLASS->new("3.14"); 393b8851fccSafresh1$x *= $x; 394b8851fccSafresh1is($x, "9.8596", qq|$x = $CLASS->new("3.14"); $x *= $x;|); 395b8851fccSafresh1 396b8851fccSafresh1$x = $CLASS->new("-3.14"); 397b8851fccSafresh1$x *= $x; 398b8851fccSafresh1is($x, "9.8596", qq|$x = $CLASS->new("-3.14"); $x *= $x;|); 399b8851fccSafresh1 400b8851fccSafresh1$x = $CLASS->new("3.14"); 401b8851fccSafresh1$x /= $x; 402b8851fccSafresh1is($x, "1", qq|$x = $CLASS->new("3.14"); $x /= $x;|); 403b8851fccSafresh1 404b8851fccSafresh1$x = $CLASS->new("-3.14"); 405b8851fccSafresh1$x /= $x; 406b8851fccSafresh1is($x, "1", qq|$x = $CLASS->new("-3.14"); $x /= $x;|); 407b8851fccSafresh1 408b8851fccSafresh1$x = $CLASS->new("3.14"); 409b8851fccSafresh1$x %= $x; 410b8851fccSafresh1is($x, "0", qq|$x = $CLASS->new("3.14"); $x %= $x;|); 411b8851fccSafresh1 412b8851fccSafresh1$x = $CLASS->new("-3.14"); 413b8851fccSafresh1$x %= $x; 414b8851fccSafresh1is($x, "0", qq|$x = $CLASS->new("-3.14"); $x %= $x;|); 415b8851fccSafresh1 416b8851fccSafresh1############################################################################### 417b8851fccSafresh1# the following two were reported by "kenny" via hotmail.com: 418b8851fccSafresh1 419b8851fccSafresh1#perl -MMath::BigFloat -wle 'print Math::BigFloat->new(0)->bpow(".1")' 420b8851fccSafresh1#Use of uninitialized value in numeric le (<=) at BigFloat.pm line 1851. 421b8851fccSafresh1 422b8851fccSafresh1$x = $CLASS->new(0); 423b8851fccSafresh1$y = $CLASS->new("0.1"); 424b8851fccSafresh1is($x ** $y, 0, 425b8851fccSafresh1 qq|\$x = $CLASS->new(0); \$y = $CLASS->new("0.1"); \$x ** \$y|); 426b8851fccSafresh1 427b8851fccSafresh1#perl -MMath::BigFloat -lwe 'print Math::BigFloat->new(".222222222222222222222222222222222222222222")->bceil()' 428b8851fccSafresh1#Use of uninitialized value in numeric le (<=) at BigFloat.pm line 1851. 429b8851fccSafresh1 430b8851fccSafresh1$x = $CLASS->new(".222222222222222222222222222222222222222222"); 431b8851fccSafresh1is($x->bceil(), 1, 432b8851fccSafresh1 qq|$x = $CLASS->new(".222222222222222222222222222222222222222222");| . 433b8851fccSafresh1 qq| $x->bceil();|); 434b8851fccSafresh1 435b8851fccSafresh1############################################################################### 436b8851fccSafresh1# test **=, <<=, >>= 437b8851fccSafresh1 438b8851fccSafresh1# ((2**148)+1)/17 439b8851fccSafresh1$x = $CLASS->new(2); 440b8851fccSafresh1$x **= 148; 441b8851fccSafresh1$x++; 442b8851fccSafresh1$x->bdiv(17, 60)->bfloor(); 443b8851fccSafresh1$x->accuracy(undef); 444b8851fccSafresh1is($x, "20988936657440586486151264256610222593863921", 445b8851fccSafresh1 "value of ((2**148)+1)/17"); 446b8851fccSafresh1is($x->length(), length("20988936657440586486151264256610222593863921"), 447b8851fccSafresh1 "number of digits in ((2**148)+1)/17"); 448b8851fccSafresh1 449b8851fccSafresh1$x = $CLASS->new("2"); 450b8851fccSafresh1$y = $CLASS->new("18"); 451b8851fccSafresh1is($x <<= $y, 2 << 18, 452b8851fccSafresh1 qq|\$x = $CLASS->new("2"); \$y = $CLASS->new("18");| 453b8851fccSafresh1 . q| $x <<= $y|); 454b8851fccSafresh1is($x, 2 << 18, 455b8851fccSafresh1 qq|\$x = $CLASS->new("2"); \$y = $CLASS->new("18");| 456b8851fccSafresh1 . q| $x <<= $y; $x|); 457b8851fccSafresh1is($x >>= $y, 2, 458b8851fccSafresh1 qq|\$x = $CLASS->new("2"); \$y = $CLASS->new("18");| 459b8851fccSafresh1 . q| $x <<= $y; $x >>= $y|); 460b8851fccSafresh1is($x, 2, 461b8851fccSafresh1 qq|\$x = $CLASS->new("2"); \$y = $CLASS->new("18");| 462b8851fccSafresh1 . q| $x <<= $y; $x >>= $y; $x|); 463b8851fccSafresh1 464b8851fccSafresh1$x = $CLASS->new("2"); 465b8851fccSafresh1$y = $CLASS->new("18.2"); 466b8851fccSafresh1 4679f11ffb7Safresh1# 2 * (2 ** int(18.2)); 468b8851fccSafresh1$x <<= $y; 469b8851fccSafresh1is($x->copy()->bfround(-9), "602248.763144685", 470b8851fccSafresh1 qq|\$x = $CLASS->new("2"); \$y = $CLASS->new("18.2");| . 471b8851fccSafresh1 q| $x <<= $y; $x->copy()->bfround(-9);|); 472b8851fccSafresh1 473b8851fccSafresh1# 2 * (2 ** 18.2) / (2 ** 18.2) => 2 474b8851fccSafresh1is($x >>= $y, 2, 475b8851fccSafresh1 qq|\$x = $CLASS->new("2"); \$y = $CLASS->new("18.2");| . 476b8851fccSafresh1 q| $x <<= $y; $x->copy()->bfround(-9); $x >>= $y|); 477b8851fccSafresh1is($x, 2, 478b8851fccSafresh1 qq|\$x = $CLASS->new("2"); \$y = $CLASS->new("18.2");| . 479b8851fccSafresh1 q| $x <<= $y; $x->copy()->bfround(-9); $x >>= $y; $x|); 480b8851fccSafresh1 481b8851fccSafresh1__DATA__ 482b8851fccSafresh1 483b8851fccSafresh1&bgcd 484b8851fccSafresh1inf:12:NaN 485b8851fccSafresh1-inf:12:NaN 486b8851fccSafresh112:inf:NaN 487b8851fccSafresh112:-inf:NaN 488b8851fccSafresh1inf:inf:NaN 489b8851fccSafresh1inf:-inf:NaN 490b8851fccSafresh1-inf:-inf:NaN 491b8851fccSafresh1abc:abc:NaN 492b8851fccSafresh1abc:+0:NaN 493b8851fccSafresh1+0:abc:NaN 494b8851fccSafresh1+0:+0:0 495b8851fccSafresh1+0:+1:1 496b8851fccSafresh1+1:+0:1 497b8851fccSafresh1+1:+1:1 498b8851fccSafresh1+2:+3:1 499b8851fccSafresh1+3:+2:1 500b8851fccSafresh1-3:+2:1 501b8851fccSafresh1-3:-2:1 502b8851fccSafresh1-144:-60:12 503b8851fccSafresh1144:-60:12 504b8851fccSafresh1144:60:12 505b8851fccSafresh1100:625:25 506b8851fccSafresh14096:81:1 507b8851fccSafresh11034:804:2 508b8851fccSafresh127:90:56:1 509b8851fccSafresh127:90:54:9 510b8851fccSafresh1 511b8851fccSafresh1&blcm 512b8851fccSafresh1abc:abc:NaN 513b8851fccSafresh1abc:+0:NaN 514b8851fccSafresh1+0:abc:NaN 515b8851fccSafresh1+0:+0:NaN 516b8851fccSafresh1+1:+0:0 517b8851fccSafresh1+0:+1:0 518b8851fccSafresh1+27:+90:270 519b8851fccSafresh1+1034:+804:415668 520b8851fccSafresh1$div_scale = 40 521b8851fccSafresh1 522b8851fccSafresh1&bcos 523eac174f2Safresh1NaN:10:NaN 524eac174f2Safresh1+inf:10:NaN 525eac174f2Safresh1-inf:10:NaN 526b8851fccSafresh11.2:10:0.3623577545 527b8851fccSafresh12.4:12:-0.737393715541 528*e0680481Safresh10:10:1.000000000 529*e0680481Safresh10:20:1.0000000000000000000 530b8851fccSafresh11:10:0.5403023059 531b8851fccSafresh11:12:0.540302305868 532b8851fccSafresh1 533b8851fccSafresh1&bsin 534eac174f2Safresh1NaN:10:NaN 535eac174f2Safresh1+inf:10:NaN 536eac174f2Safresh1-inf:10:NaN 537b8851fccSafresh11:10:0.8414709848 538b8851fccSafresh10:10:0 539b8851fccSafresh10:20:0 540b8851fccSafresh12.1:12:0.863209366649 541b8851fccSafresh11.2:13:0.9320390859672 542b8851fccSafresh10.2:13:0.1986693307951 543b8851fccSafresh13.2:12:-0.0583741434276 544b8851fccSafresh1 545b8851fccSafresh1&batan 546b8851fccSafresh1NaN:10:NaN 547b8851fccSafresh1inf:14:1.5707963267949 548b8851fccSafresh1-inf:14:-1.5707963267949 549b8851fccSafresh10:14:0 550b8851fccSafresh10:10:0 551b8851fccSafresh10.1:14:0.099668652491162 552b8851fccSafresh10.2:13:0.1973955598499 553b8851fccSafresh10.2:14:0.19739555984988 554b8851fccSafresh10.5:14:0.46364760900081 555b8851fccSafresh11:14:0.78539816339744 556b8851fccSafresh1-1:14:-0.78539816339744 557b8851fccSafresh11.5:14:0.98279372324732 558b8851fccSafresh12.0:14:1.1071487177941 559b8851fccSafresh12.5:14:1.1902899496825 560b8851fccSafresh13.0:14:1.2490457723982 561b8851fccSafresh16.0:14:1.4056476493803 562b8851fccSafresh112:14:1.4876550949064 563b8851fccSafresh124:14:1.5291537476963 564b8851fccSafresh148:14:1.5499660067587 565b8851fccSafresh1 566b8851fccSafresh1&batan2 567b8851fccSafresh1 568b8851fccSafresh1NaN:1:10:NaN 569b8851fccSafresh1NaN:NaN:10:NaN 570b8851fccSafresh11:NaN:10:NaN 571b8851fccSafresh1 572b8851fccSafresh1-inf:-inf:14:-2.3561944901923 573b8851fccSafresh1-inf:-1:14:-1.5707963267949 574b8851fccSafresh1-inf:0:14:-1.5707963267949 575b8851fccSafresh1-inf:+1:14:-1.5707963267949 576b8851fccSafresh1-inf:+inf:14:-0.78539816339745 577b8851fccSafresh1 578b8851fccSafresh1-1:-inf:14:-3.1415926535898 579b8851fccSafresh1-1:-1:14:-2.3561944901923 580b8851fccSafresh1-1:0:14:-1.5707963267949 581b8851fccSafresh1-1:+1:14:-0.78539816339745 582b8851fccSafresh1-1:+inf:14:0 583b8851fccSafresh1 584b8851fccSafresh10:-inf:14:3.1415926535898 585b8851fccSafresh10:-1:14:3.1415926535898 586b8851fccSafresh10:0:14:0 587b8851fccSafresh10:+1:14:0 588b8851fccSafresh10:+inf:14:0 589b8851fccSafresh1 590b8851fccSafresh1+1:-inf:14:3.1415926535898 591b8851fccSafresh1+1:-1:14:2.3561944901923 592b8851fccSafresh1+1:0:14:1.5707963267949 593b8851fccSafresh1+1:+1:14:0.78539816339745 594b8851fccSafresh1+1:+inf:14:0 595b8851fccSafresh1 596b8851fccSafresh1+inf:-inf:14:2.3561944901923 597b8851fccSafresh1+inf:-1:14:1.5707963267949 598b8851fccSafresh1+inf:0:14:1.5707963267949 599b8851fccSafresh1+inf:+1:14:1.5707963267949 600b8851fccSafresh1+inf:+inf:14:0.78539816339745 601b8851fccSafresh1 602b8851fccSafresh11:5:13:0.1973955598499 603b8851fccSafresh11:5:14:0.19739555984988 604b8851fccSafresh10:2:14:0 605b8851fccSafresh15:0:14:1.5707963267949 606b8851fccSafresh1-1:0:11:-1.5707963268 607b8851fccSafresh1-2:0:77:-1.5707963267948966192313216916397514420985846996875529104874722961539082031431 608b8851fccSafresh12:0:77:1.5707963267948966192313216916397514420985846996875529104874722961539082031431 609b8851fccSafresh1-1:5:14:-0.19739555984988 610b8851fccSafresh11:5:14:0.19739555984988 611b8851fccSafresh1-1:8:14:-0.12435499454676 612b8851fccSafresh11:8:14:0.12435499454676 613b8851fccSafresh1# test an argument X > 1 and one X < 1 614b8851fccSafresh11:2:24:0.463647609000806116214256 615b8851fccSafresh12:1:14:1.1071487177941 616b8851fccSafresh1-2:1:14:-1.1071487177941 617b8851fccSafresh1 618b8851fccSafresh1&bpi 619b8851fccSafresh1150:3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940813 620b8851fccSafresh177:3.1415926535897932384626433832795028841971693993751058209749445923078164062862 621b8851fccSafresh1+0:3.141592653589793238462643383279502884197 622b8851fccSafresh111:3.1415926536 623b8851fccSafresh1 624b8851fccSafresh1&bnok 625b8851fccSafresh1+inf:10:inf 626b8851fccSafresh1NaN:NaN:NaN 627b8851fccSafresh1NaN:1:NaN 628b8851fccSafresh11:NaN:NaN 629b8851fccSafresh11:1:1 630b8851fccSafresh1# k > n 631b8851fccSafresh11:2:0 632b8851fccSafresh12:3:0 633b8851fccSafresh1# k < 0 634b8851fccSafresh11:-2:0 635b8851fccSafresh1# 7 over 3 = 35 636b8851fccSafresh17:3:35 637b8851fccSafresh17:6:7 638b8851fccSafresh1100:90:17310309456440 639b8851fccSafresh1100:95:75287520 640b8851fccSafresh12:0:1 641b8851fccSafresh17:0:1 642b8851fccSafresh12:1:2 643b8851fccSafresh1 644b8851fccSafresh1&blog 645b8851fccSafresh10::-inf 646b8851fccSafresh1-1::NaN 647b8851fccSafresh1-2::NaN 648b8851fccSafresh1# base > 0, base != 1 649b8851fccSafresh12:-1:NaN 650b8851fccSafresh12:0:0 651b8851fccSafresh12:1:NaN 652b8851fccSafresh1# log(1) 653b8851fccSafresh11::0 654b8851fccSafresh11:1:NaN 655b8851fccSafresh11:2:0 656b8851fccSafresh12::0.6931471805599453094172321214581765680755 657b8851fccSafresh12.718281828::0.9999999998311266953289851340574956564911 658b8851fccSafresh1$div_scale = 20 659b8851fccSafresh12.718281828::0.99999999983112669533 660b8851fccSafresh1$div_scale = 15 661b8851fccSafresh1123::4.81218435537242 662b8851fccSafresh110::2.30258509299405 663b8851fccSafresh11000::6.90775527898214 664b8851fccSafresh1100::4.60517018598809 665b8851fccSafresh12::0.693147180559945 666b8851fccSafresh13.1415::1.14470039286086 667b8851fccSafresh112345::9.42100640177928 668b8851fccSafresh10.001::-6.90775527898214 669b8851fccSafresh1# bug until v1.71: 670b8851fccSafresh110:10:1 671b8851fccSafresh1100:100:1 672b8851fccSafresh1# reset for further tests 673b8851fccSafresh1$div_scale = 40 674b8851fccSafresh11::0 675b8851fccSafresh1 676b8851fccSafresh1&brsft 6779f11ffb7Safresh1invalid:2:NaN 678b8851fccSafresh10:2:0 679b8851fccSafresh11:1:0.5 680b8851fccSafresh12:1:1 681b8851fccSafresh14:1:2 682b8851fccSafresh1123:1:61.5 683b8851fccSafresh132:3:4 684b8851fccSafresh1 685b8851fccSafresh1&blsft 6869f11ffb7Safresh1invalid:0:NaN 687b8851fccSafresh12:1:4 688b8851fccSafresh14:3:32 689b8851fccSafresh15:3:40 690b8851fccSafresh11:2:4 691b8851fccSafresh10:5:0 692b8851fccSafresh1 693b8851fccSafresh1&bnorm 694b8851fccSafresh11:1 695b8851fccSafresh1-0:0 6969f11ffb7Safresh1invalid:NaN 697b8851fccSafresh1+inf:inf 698b8851fccSafresh1-inf:-inf 699b8851fccSafresh1123:123 700b8851fccSafresh1-123.4567:-123.4567 701b8851fccSafresh1# invalid inputs 702b8851fccSafresh1.2E-3.:NaN 703b8851fccSafresh11e3e4:NaN 704b8851fccSafresh1# strange, but valid 705b8851fccSafresh1.2E2:20 706b8851fccSafresh11.E3:1000 707b8851fccSafresh1# some inputs that result in zero 708b8851fccSafresh10e0:0 709b8851fccSafresh1+0e0:0 710b8851fccSafresh1+0e+0:0 711b8851fccSafresh1-0e+0:0 712b8851fccSafresh10e-0:0 713b8851fccSafresh1-0e-0:0 714b8851fccSafresh1+0e-0:0 715b8851fccSafresh1000:0 716b8851fccSafresh100e2:0 717b8851fccSafresh100e02:0 718b8851fccSafresh1000e002:0 719b8851fccSafresh1000e1230:0 720b8851fccSafresh100e-3:0 721b8851fccSafresh100e+3:0 722b8851fccSafresh100e-03:0 723b8851fccSafresh100e+03:0 724b8851fccSafresh1-000:0 725b8851fccSafresh1-00e2:0 726b8851fccSafresh1-00e02:0 727b8851fccSafresh1-000e002:0 728b8851fccSafresh1-000e1230:0 729b8851fccSafresh1-00e-3:0 730b8851fccSafresh1-00e+3:0 731b8851fccSafresh1-00e-03:0 732b8851fccSafresh1-00e+03:0 733b8851fccSafresh1 734b8851fccSafresh1&as_number 735b8851fccSafresh10:0 736b8851fccSafresh11:1 737b8851fccSafresh11.2:1 738b8851fccSafresh12.345:2 739b8851fccSafresh1-2:-2 740b8851fccSafresh1-123.456:-123 741b8851fccSafresh1-200:-200 742b8851fccSafresh1-inf:-inf 743b8851fccSafresh1inf:inf 744b8851fccSafresh1NaN:NaN 745b8851fccSafresh171243225429896467497217836789578596379:71243225429896467497217836789578596379 746b8851fccSafresh1# test for bug in brsft() not handling cases that return 0 747b8851fccSafresh10.000641:0 748b8851fccSafresh10.0006412:0 749b8851fccSafresh10.00064123:0 750b8851fccSafresh10.000641234:0 751b8851fccSafresh10.0006412345:0 752b8851fccSafresh10.00064123456:0 753b8851fccSafresh10.000641234567:0 754b8851fccSafresh10.0006412345678:0 755b8851fccSafresh10.00064123456789:0 756b8851fccSafresh10.1:0 757b8851fccSafresh10.01:0 758b8851fccSafresh10.001:0 759b8851fccSafresh10.0001:0 760b8851fccSafresh10.00001:0 761b8851fccSafresh10.000001:0 762b8851fccSafresh10.0000001:0 763b8851fccSafresh10.00000001:0 764b8851fccSafresh10.000000001:0 765b8851fccSafresh10.0000000001:0 766b8851fccSafresh10.00000000001:0 767b8851fccSafresh10.12345:0 768b8851fccSafresh10.123456:0 769b8851fccSafresh10.1234567:0 770b8851fccSafresh10.12345678:0 771b8851fccSafresh10.123456789:0 772b8851fccSafresh1 773b8851fccSafresh1&binf 774b8851fccSafresh11:+:inf 775b8851fccSafresh12:-:-inf 776b8851fccSafresh13:abc:inf 777b8851fccSafresh1 778b8851fccSafresh1&as_hex 7799f11ffb7Safresh1128:0x80 7809f11ffb7Safresh1-128:-0x80 7819f11ffb7Safresh10:0x0 7829f11ffb7Safresh1-0:0x0 7839f11ffb7Safresh11:0x1 7849f11ffb7Safresh10x123456789123456789:0x123456789123456789 785b8851fccSafresh1+inf:inf 786b8851fccSafresh1-inf:-inf 7879f11ffb7Safresh1invalid:NaN 788b8851fccSafresh1 789b8851fccSafresh1&as_bin 7909f11ffb7Safresh1128:0b10000000 7919f11ffb7Safresh1-128:-0b10000000 7929f11ffb7Safresh10:0b0 7939f11ffb7Safresh1-0:0b0 7949f11ffb7Safresh11:0b1 7959f11ffb7Safresh10b1010111101010101010110110110110110101:0b1010111101010101010110110110110110101 7969f11ffb7Safresh10x123456789123456789:0b100100011010001010110011110001001000100100011010001010110011110001001 797b8851fccSafresh1+inf:inf 798b8851fccSafresh1-inf:-inf 7999f11ffb7Safresh1invalid:NaN 8009f11ffb7Safresh1 8019f11ffb7Safresh1&as_oct 8029f11ffb7Safresh1128:0200 8039f11ffb7Safresh1-128:-0200 8049f11ffb7Safresh10:00 8059f11ffb7Safresh1-0:00 8069f11ffb7Safresh11:01 8079f11ffb7Safresh10b1010111101010101010110110110110110101:01275252666665 8089f11ffb7Safresh10x123456789123456789:044321263611044321263611 8099f11ffb7Safresh1+inf:inf 8109f11ffb7Safresh1-inf:-inf 8119f11ffb7Safresh1invalid:NaN 8129f11ffb7Safresh1 8139f11ffb7Safresh1&to_hex 8149f11ffb7Safresh1128:80 8159f11ffb7Safresh1-128:-80 8169f11ffb7Safresh10:0 8179f11ffb7Safresh1-0:0 8189f11ffb7Safresh11:1 8199f11ffb7Safresh10x123456789123456789:123456789123456789 8209f11ffb7Safresh1+inf:inf 8219f11ffb7Safresh1-inf:-inf 8229f11ffb7Safresh1invalid:NaN 8239f11ffb7Safresh1 8249f11ffb7Safresh1&to_bin 8259f11ffb7Safresh1128:10000000 8269f11ffb7Safresh1-128:-10000000 8279f11ffb7Safresh10:0 8289f11ffb7Safresh1-0:0 8299f11ffb7Safresh11:1 8309f11ffb7Safresh10b1010111101010101010110110110110110101:1010111101010101010110110110110110101 8319f11ffb7Safresh10x123456789123456789:100100011010001010110011110001001000100100011010001010110011110001001 8329f11ffb7Safresh1+inf:inf 8339f11ffb7Safresh1-inf:-inf 8349f11ffb7Safresh1invalid:NaN 8359f11ffb7Safresh1 8369f11ffb7Safresh1&to_oct 8379f11ffb7Safresh1128:200 8389f11ffb7Safresh1-128:-200 8399f11ffb7Safresh10:0 8409f11ffb7Safresh1-0:0 8419f11ffb7Safresh11:1 8429f11ffb7Safresh10b1010111101010101010110110110110110101:1275252666665 8439f11ffb7Safresh10x123456789123456789:44321263611044321263611 8449f11ffb7Safresh1+inf:inf 8459f11ffb7Safresh1-inf:-inf 8469f11ffb7Safresh1invalid:NaN 847b8851fccSafresh1 848b8851fccSafresh1&numify 849b8851fccSafresh1# uses bsstr() so 5 => 5e+0 to be compatible w/ Perls output 850b8851fccSafresh10:0 851b8851fccSafresh1+1:1 852b8851fccSafresh11234:1234 853b8851fccSafresh1-5:-5 854b8851fccSafresh1100:100 855b8851fccSafresh1-100:-100 856b8851fccSafresh1 857b8851fccSafresh1&bnan 858b8851fccSafresh1abc:NaN 859b8851fccSafresh12:NaN 860b8851fccSafresh1-2:NaN 861b8851fccSafresh10:NaN 862b8851fccSafresh1 863b8851fccSafresh1&bone 864b8851fccSafresh12:+:1 865b8851fccSafresh1-2:-:-1 866b8851fccSafresh1-2:+:1 867b8851fccSafresh12:-:-1 868b8851fccSafresh10::1 869b8851fccSafresh1-2::1 870b8851fccSafresh1abc::1 871*e0680481Safresh12::1 872b8851fccSafresh1 873b8851fccSafresh1&bsstr 874b8851fccSafresh1+inf:inf 875b8851fccSafresh1-inf:-inf 876b8851fccSafresh1abcfsstr:NaN 877b8851fccSafresh1-abcfsstr:NaN 878b8851fccSafresh11234.567:1234567e-3 879b8851fccSafresh1123:123e+0 880b8851fccSafresh1-5:-5e+0 881b8851fccSafresh1-100:-1e+2 882b8851fccSafresh1 883b8851fccSafresh1&bstr 884b8851fccSafresh1+inf:::inf 885b8851fccSafresh1-inf:::-inf 886b8851fccSafresh1abcfstr:::NaN 887b8851fccSafresh11234.567:9::1234.56700 888b8851fccSafresh11234.567::-6:1234.567000 889b8851fccSafresh112345:5::12345 890b8851fccSafresh10.001234:6::0.00123400 891b8851fccSafresh10.001234::-8:0.00123400 892b8851fccSafresh10:4::0 893b8851fccSafresh10::-4:0.0000 894b8851fccSafresh1 895b8851fccSafresh1&bnorm 896b8851fccSafresh1inf:inf 897b8851fccSafresh1+inf:inf 898b8851fccSafresh1-inf:-inf 899b8851fccSafresh1+infinity:inf 900b8851fccSafresh1+-inf:NaN 901b8851fccSafresh1abc:NaN 902b8851fccSafresh1 1 a:NaN 903b8851fccSafresh11bcd2:NaN 904b8851fccSafresh111111b:NaN 905b8851fccSafresh1+1z:NaN 906b8851fccSafresh1-1z:NaN 907b8851fccSafresh10e999:0 908b8851fccSafresh10e-999:0 909b8851fccSafresh1-0e999:0 910b8851fccSafresh1-0e-999:0 911b8851fccSafresh10:0 912b8851fccSafresh1+0:0 913b8851fccSafresh1+00:0 914b8851fccSafresh1+0_0_0:0 915b8851fccSafresh1000000_0000000_00000:0 916b8851fccSafresh1-0:0 917b8851fccSafresh1-0000:0 918b8851fccSafresh1+1:1 919b8851fccSafresh1+01:1 920b8851fccSafresh1+001:1 921b8851fccSafresh1+00000100000:100000 922b8851fccSafresh1123456789:123456789 923b8851fccSafresh1-1:-1 924b8851fccSafresh1-01:-1 925b8851fccSafresh1-001:-1 926b8851fccSafresh1-123456789:-123456789 927b8851fccSafresh1-00000100000:-100000 928b8851fccSafresh1123.456a:NaN 929b8851fccSafresh1123.456:123.456 930b8851fccSafresh10.01:0.01 931b8851fccSafresh1.002:0.002 932b8851fccSafresh1+.2:0.2 933b8851fccSafresh1-0.0003:-0.0003 934b8851fccSafresh1-.0000000004:-0.0000000004 935b8851fccSafresh1123456E2:12345600 936b8851fccSafresh1123456E-2:1234.56 937b8851fccSafresh1-123456E2:-12345600 938b8851fccSafresh1-123456E-2:-1234.56 939b8851fccSafresh11e1:10 940b8851fccSafresh12e-11:0.00000000002 941b8851fccSafresh1# exercise _split 942b8851fccSafresh1 .02e-1:0.002 943b8851fccSafresh1 000001:1 944b8851fccSafresh1 -00001:-1 945b8851fccSafresh1 -1:-1 946b8851fccSafresh1 000.01:0.01 947b8851fccSafresh1 -000.0023:-0.0023 948b8851fccSafresh1 1.1e1:11 949b8851fccSafresh1-3e111:-3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 950b8851fccSafresh1-4e-1111:-0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004 951b8851fccSafresh1 952b8851fccSafresh1&bpow 953b46d8ef2Safresh1# 954b8851fccSafresh1abc:123.456:NaN 955b8851fccSafresh1123.456:abc:NaN 956b46d8ef2Safresh1# 957b46d8ef2Safresh1-inf:-inf:0 958b46d8ef2Safresh1-inf:-3:0 959b46d8ef2Safresh1-inf:-2:0 960b46d8ef2Safresh1-inf:-1.5:0 961b46d8ef2Safresh1-inf:-1:0 962b46d8ef2Safresh1-inf:-0.5:0 963b46d8ef2Safresh1-inf:0:NaN 964b46d8ef2Safresh1-inf:0.5:inf # directed infinity 965b46d8ef2Safresh1-inf:1:-inf 966b46d8ef2Safresh1-inf:1.5:inf # directed infinity 967b46d8ef2Safresh1-inf:2:inf 968b46d8ef2Safresh1-inf:3:-inf 969b46d8ef2Safresh1-inf:inf:inf # complex infinity 970b46d8ef2Safresh1-inf:NaN:NaN 971b46d8ef2Safresh1# 972b46d8ef2Safresh1-3:-inf:0 973b46d8ef2Safresh1-3:-3:-0.03703703703703703703703703703703703703704 974b46d8ef2Safresh1-3:-2:0.1111111111111111111111111111111111111111 975b46d8ef2Safresh1-3:-1.5:NaN 976b46d8ef2Safresh1-3:-1:-0.3333333333333333333333333333333333333333 977b46d8ef2Safresh1-3:-0.5:NaN 978b46d8ef2Safresh1-3:0:1 979b46d8ef2Safresh1-3:0.5:NaN 980b46d8ef2Safresh1-3:1:-3 981b46d8ef2Safresh1-3:1.5:NaN 982b8851fccSafresh1-3:2:9 983b8851fccSafresh1-3:3:-27 984b46d8ef2Safresh1-3:inf:inf # complex infinity 985b46d8ef2Safresh1-3:NaN:NaN 986b46d8ef2Safresh1# 987b46d8ef2Safresh1-2:-inf:0 988b46d8ef2Safresh1-2:-3:-0.125 989b46d8ef2Safresh1-2:-2:0.25 990b46d8ef2Safresh1-2:-1.5:NaN 991b46d8ef2Safresh1-2:-1:-0.5 992b46d8ef2Safresh1-2:-0.5:NaN 993b46d8ef2Safresh1-2:0:1 994b46d8ef2Safresh1-2:0.5:NaN 995b46d8ef2Safresh1-2:1:-2 996b46d8ef2Safresh1-2:1.5:NaN 997b46d8ef2Safresh1-2:2:4 998b46d8ef2Safresh1-2:3:-8 999b46d8ef2Safresh1-2:inf:inf # complex infinity 1000b46d8ef2Safresh1-2:NaN:NaN 1001b46d8ef2Safresh1# 1002b46d8ef2Safresh1-1.5:-inf:0 1003b46d8ef2Safresh1-1.5:-3:-0.2962962962962962962962962962962962962963 1004b46d8ef2Safresh1-1.5:-2:0.4444444444444444444444444444444444444444 1005b46d8ef2Safresh1-1.5:-1.5:NaN 1006b46d8ef2Safresh1-1.5:-1:-0.6666666666666666666666666666666666666667 1007b46d8ef2Safresh1-1.5:-0.5:NaN 1008b46d8ef2Safresh1-1.5:0:1 1009b46d8ef2Safresh1-1.5:0.5:NaN 1010b46d8ef2Safresh1-1.5:1:-1.5 1011b46d8ef2Safresh1-1.5:1.5:NaN 1012b46d8ef2Safresh1-1.5:2:2.25 1013b46d8ef2Safresh1-1.5:3:-3.375 1014b46d8ef2Safresh1-1.5:inf:inf # complex infinity 1015b46d8ef2Safresh1-1.5:NaN:NaN 1016b46d8ef2Safresh1# 1017b46d8ef2Safresh1-1:-inf:NaN 1018b46d8ef2Safresh1-1:-3:-1 1019b46d8ef2Safresh1-1:-2:1 1020b46d8ef2Safresh1-1:-1.5:NaN 1021b46d8ef2Safresh1-1:-1:-1 1022b46d8ef2Safresh1-1:-0.5:NaN 1023b46d8ef2Safresh1-1:0:1 1024b46d8ef2Safresh1-1:0.5:NaN 1025b46d8ef2Safresh1-1:1:-1 1026b46d8ef2Safresh1-1:1.5:NaN 1027b46d8ef2Safresh1-1:2:1 1028b46d8ef2Safresh1-1:3:-1 1029b46d8ef2Safresh1-1:inf:NaN 1030b46d8ef2Safresh1-1:NaN:NaN 1031b46d8ef2Safresh1# 1032b46d8ef2Safresh1-0.5:-inf:inf # complex infinity 1033b46d8ef2Safresh1-0.5:-3:-8 1034b46d8ef2Safresh1-0.5:-2:4 1035b46d8ef2Safresh1-0.5:-1.5:NaN 1036b46d8ef2Safresh1-0.5:-1:-2 1037b46d8ef2Safresh1-0.5:-0.5:NaN 1038b46d8ef2Safresh1-0.5:0:1 1039b46d8ef2Safresh1-0.5:0.5:NaN 1040b46d8ef2Safresh1-0.5:1:-0.5 1041b46d8ef2Safresh1-0.5:1.5:NaN 1042b46d8ef2Safresh1-0.5:2:0.25 1043b46d8ef2Safresh1-0.5:3:-0.125 1044b46d8ef2Safresh1-0.5:inf:0 1045b46d8ef2Safresh1-0.5:NaN:NaN 1046b46d8ef2Safresh1# 1047b46d8ef2Safresh10:-inf:inf # complex infinity 1048b46d8ef2Safresh10:-3:inf # complex infinity 1049b46d8ef2Safresh10:-2:inf # complex infinity 1050b46d8ef2Safresh10:-1.5:inf # complex infinity 1051b46d8ef2Safresh10:-1:inf # complex infinity 1052b46d8ef2Safresh10:-0.5:inf # complex infinity 1053b46d8ef2Safresh10:0:1 1054b46d8ef2Safresh10:0.5:0 1055b46d8ef2Safresh10:1:0 1056b46d8ef2Safresh10:1.5:0 1057b46d8ef2Safresh10:2:0 1058b46d8ef2Safresh10:3:0 1059b46d8ef2Safresh10:inf:0 1060b46d8ef2Safresh10:NaN:NaN 1061b46d8ef2Safresh1# 1062b46d8ef2Safresh10.5:-inf:inf 1063b46d8ef2Safresh10.5:-3:8 1064b46d8ef2Safresh10.5:-2:4 1065b46d8ef2Safresh10.5:-1.5:2.828427124746190097603377448419396157139 1066b46d8ef2Safresh10.5:-1:2 1067b46d8ef2Safresh10.5:-0.5:1.41421356237309504880168872420969807857 1068b46d8ef2Safresh10.5:0:1 1069b46d8ef2Safresh10.5:0.5:0.7071067811865475244008443621048490392848 1070b46d8ef2Safresh10.5:1:0.5 1071b46d8ef2Safresh10.5:1.5:0.3535533905932737622004221810524245196424 1072b46d8ef2Safresh10.5:2:0.25 1073b46d8ef2Safresh10.5:3:0.125 1074b46d8ef2Safresh10.5:inf:0 1075b46d8ef2Safresh10.5:NaN:NaN 1076b46d8ef2Safresh1# 1077b46d8ef2Safresh11:-inf:1 1078b46d8ef2Safresh11:-3:1 1079b46d8ef2Safresh11:-2:1 1080b46d8ef2Safresh11:-1.5:1 1081b46d8ef2Safresh11:-1:1 1082b46d8ef2Safresh11:-0.5:1 1083b46d8ef2Safresh11:0:1 1084b46d8ef2Safresh11:0.5:1 1085b46d8ef2Safresh11:1:1 1086b46d8ef2Safresh11:1.5:1 1087b46d8ef2Safresh11:2:1 1088b46d8ef2Safresh11:3:1 1089b46d8ef2Safresh11:inf:1 1090b46d8ef2Safresh11:NaN:NaN 1091b46d8ef2Safresh1# 1092b46d8ef2Safresh11.5:-inf:0 1093b46d8ef2Safresh11.5:-3:0.2962962962962962962962962962962962962963 1094b46d8ef2Safresh11.5:-2:0.4444444444444444444444444444444444444444 1095b46d8ef2Safresh11.5:-1.5:0.5443310539518173551549520166013091982147 1096b46d8ef2Safresh11.5:-1:0.6666666666666666666666666666666666666667 1097b46d8ef2Safresh11.5:-0.5:0.816496580927726032732428024901963797322 1098b46d8ef2Safresh11.5:0:1 1099b46d8ef2Safresh11.5:0.5:1.224744871391589049098642037352945695983 1100b46d8ef2Safresh11.5:1:1.5 1101b46d8ef2Safresh11.5:1.5:1.837117307087383573647963056029418543974 1102b46d8ef2Safresh11.5:2:2.25 1103b46d8ef2Safresh11.5:3:3.375 1104b46d8ef2Safresh11.5:inf:inf 1105b46d8ef2Safresh11.5:NaN:NaN 1106b46d8ef2Safresh1# 1107b46d8ef2Safresh12:-inf:0 1108b46d8ef2Safresh12:-3:0.125 1109b46d8ef2Safresh12:-2:0.25 1110b46d8ef2Safresh12:-1.5:0.3535533905932737622004221810524245196424 1111b46d8ef2Safresh12:-1:0.5 1112b46d8ef2Safresh12:-0.5:0.7071067811865475244008443621048490392848 1113b46d8ef2Safresh12:0:1 1114b8851fccSafresh12:0.5:1.41421356237309504880168872420969807857 1115b46d8ef2Safresh12:1:2 1116b46d8ef2Safresh12:1.5:2.828427124746190097603377448419396157139 1117b46d8ef2Safresh12:2:4 1118b46d8ef2Safresh12:3:8 1119b46d8ef2Safresh12:inf:inf 1120b46d8ef2Safresh12:NaN:NaN 1121b46d8ef2Safresh1# 1122b46d8ef2Safresh13:-inf:0 1123b46d8ef2Safresh13:-3:0.03703703703703703703703703703703703703704 1124b46d8ef2Safresh13:-2:0.1111111111111111111111111111111111111111 1125b46d8ef2Safresh13:-1.5:0.1924500897298752548363829268339858185492 1126b46d8ef2Safresh13:-1:0.3333333333333333333333333333333333333333 1127b46d8ef2Safresh13:-0.5:0.5773502691896257645091487805019574556476 1128b46d8ef2Safresh13:0:1 1129b46d8ef2Safresh13:0.5:1.732050807568877293527446341505872366943 1130b46d8ef2Safresh13:1:3 1131b46d8ef2Safresh13:1.5:5.196152422706631880582339024517617100828 1132b46d8ef2Safresh13:2:9 1133b46d8ef2Safresh13:3:27 1134b46d8ef2Safresh13:inf:inf 1135b46d8ef2Safresh13:NaN:NaN 1136b46d8ef2Safresh1# 1137b46d8ef2Safresh1inf:-inf:0 1138b46d8ef2Safresh1inf:-3:0 1139b46d8ef2Safresh1inf:-2:0 1140b46d8ef2Safresh1inf:-1.5:0 1141b46d8ef2Safresh1inf:-1:0 1142b46d8ef2Safresh1inf:-0.5:0 1143b46d8ef2Safresh1inf:0:NaN 1144b46d8ef2Safresh1inf:0.5:inf 1145b46d8ef2Safresh1inf:1:inf 1146b46d8ef2Safresh1inf:1.5:inf 1147b46d8ef2Safresh1inf:2:inf 1148b46d8ef2Safresh1inf:3:inf 1149b46d8ef2Safresh1inf:inf:inf 1150b46d8ef2Safresh1inf:NaN:NaN 1151b46d8ef2Safresh1# 1152b46d8ef2Safresh1NaN:-inf:NaN 1153b46d8ef2Safresh1NaN:-3:NaN 1154b46d8ef2Safresh1NaN:-2:NaN 1155b46d8ef2Safresh1NaN:-1.5:NaN 1156b46d8ef2Safresh1NaN:-1:NaN 1157b46d8ef2Safresh1NaN:-0.5:NaN 1158b46d8ef2Safresh1NaN:0:NaN 1159b46d8ef2Safresh1NaN:0.5:NaN 1160b46d8ef2Safresh1NaN:1:NaN 1161b46d8ef2Safresh1NaN:1.5:NaN 1162b46d8ef2Safresh1NaN:2:NaN 1163b46d8ef2Safresh1NaN:3:NaN 1164b46d8ef2Safresh1NaN:inf:NaN 1165b46d8ef2Safresh1NaN:NaN:NaN 1166b46d8ef2Safresh1# 1167b46d8ef2Safresh1123.456:2:15241.383936 1168b46d8ef2Safresh1128:-2:0.00006103515625 1169b46d8ef2Safresh1# 1170b46d8ef2Safresh1+inf:123.45:inf 1171b46d8ef2Safresh1-inf:123.45:inf # directed infinity 1172b46d8ef2Safresh1+inf:-123.45:0 1173b46d8ef2Safresh1-inf:-123.45:0 1174b8851fccSafresh1#2:0.2:1.148698354997035006798626946777927589444 1175b8851fccSafresh1#6:1.5:14.6969384566990685891837044482353483518 1176b8851fccSafresh1$div_scale = 20 1177b8851fccSafresh1#62.5:12.5:26447206647554886213592.3959144 1178b8851fccSafresh1$div_scale = 40 1179b8851fccSafresh1 1180b8851fccSafresh1&bneg 11819f11ffb7Safresh1invalid:NaN 1182b8851fccSafresh1+inf:-inf 1183b8851fccSafresh1-inf:inf 1184b8851fccSafresh1+0:0 1185b8851fccSafresh1+1:-1 1186b8851fccSafresh1-1:1 1187b8851fccSafresh1+123456789:-123456789 1188b8851fccSafresh1-123456789:123456789 1189b8851fccSafresh1+123.456789:-123.456789 1190b8851fccSafresh1-123456.789:123456.789 1191b8851fccSafresh1 1192b8851fccSafresh1&babs 11939f11ffb7Safresh1invalid:NaN 1194b8851fccSafresh1+inf:inf 1195b8851fccSafresh1-inf:inf 1196b8851fccSafresh1+0:0 1197b8851fccSafresh1+1:1 1198b8851fccSafresh1-1:1 1199b8851fccSafresh1+123456789:123456789 1200b8851fccSafresh1-123456789:123456789 1201b8851fccSafresh1+123.456789:123.456789 1202b8851fccSafresh1-123456.789:123456.789 1203b8851fccSafresh1 1204b8851fccSafresh1&bround 1205b8851fccSafresh1$round_mode = "trunc" 1206b8851fccSafresh1+inf:5:inf 1207b8851fccSafresh1-inf:5:-inf 1208b8851fccSafresh10:5:0 12099f11ffb7Safresh1invalid:5:NaN 1210b8851fccSafresh1+10123456789:5:10123000000 1211b8851fccSafresh1-10123456789:5:-10123000000 1212b8851fccSafresh1+10123456789.123:5:10123000000 1213b8851fccSafresh1-10123456789.123:5:-10123000000 1214b8851fccSafresh1+10123456789:9:10123456700 1215b8851fccSafresh1-10123456789:9:-10123456700 1216b8851fccSafresh1+101234500:6:101234000 1217b8851fccSafresh1-101234500:6:-101234000 1218b8851fccSafresh1$round_mode = "zero" 1219b8851fccSafresh1+20123456789:5:20123000000 1220b8851fccSafresh1-20123456789:5:-20123000000 1221b8851fccSafresh1+20123456789.123:5:20123000000 1222b8851fccSafresh1-20123456789.123:5:-20123000000 1223b8851fccSafresh1+20123456789:9:20123456800 1224b8851fccSafresh1-20123456789:9:-20123456800 1225b8851fccSafresh1+201234500:6:201234000 1226b8851fccSafresh1-201234500:6:-201234000 1227b8851fccSafresh1$round_mode = "+inf" 1228b8851fccSafresh1+30123456789:5:30123000000 1229b8851fccSafresh1-30123456789:5:-30123000000 1230b8851fccSafresh1+30123456789.123:5:30123000000 1231b8851fccSafresh1-30123456789.123:5:-30123000000 1232b8851fccSafresh1+30123456789:9:30123456800 1233b8851fccSafresh1-30123456789:9:-30123456800 1234b8851fccSafresh1+301234500:6:301235000 1235b8851fccSafresh1-301234500:6:-301234000 1236b8851fccSafresh1$round_mode = "-inf" 1237b8851fccSafresh1+40123456789:5:40123000000 1238b8851fccSafresh1-40123456789:5:-40123000000 1239b8851fccSafresh1+40123456789.123:5:40123000000 1240b8851fccSafresh1-40123456789.123:5:-40123000000 1241b8851fccSafresh1+40123456789:9:40123456800 1242b8851fccSafresh1-40123456789:9:-40123456800 1243b8851fccSafresh1+401234500:6:401234000 1244b8851fccSafresh1-401234500:6:-401235000 1245b8851fccSafresh1$round_mode = "odd" 1246b8851fccSafresh1+50123456789:5:50123000000 1247b8851fccSafresh1-50123456789:5:-50123000000 1248b8851fccSafresh1+50123456789.123:5:50123000000 1249b8851fccSafresh1-50123456789.123:5:-50123000000 1250b8851fccSafresh1+50123456789:9:50123456800 1251b8851fccSafresh1-50123456789:9:-50123456800 1252b8851fccSafresh1+501234500:6:501235000 1253b8851fccSafresh1-501234500:6:-501235000 1254b8851fccSafresh1$round_mode = "even" 1255b8851fccSafresh1+60123456789:5:60123000000 1256b8851fccSafresh1-60123456789:5:-60123000000 1257b8851fccSafresh1+60123456789:9:60123456800 1258b8851fccSafresh1-60123456789:9:-60123456800 1259b8851fccSafresh1+601234500:6:601234000 1260b8851fccSafresh1-601234500:6:-601234000 1261b8851fccSafresh1+60123456789.0123:5:60123000000 1262b8851fccSafresh1-60123456789.0123:5:-60123000000 1263b8851fccSafresh1$round_mode = "common" 1264b8851fccSafresh1+60123456789:5:60123000000 1265b8851fccSafresh1-60123456789:5:-60123000000 1266b8851fccSafresh1+60123456789:6:60123500000 1267b8851fccSafresh1-60123456789:6:-60123500000 1268b8851fccSafresh1+60123456789:9:60123456800 1269b8851fccSafresh1-60123456789:9:-60123456800 1270b8851fccSafresh1+601234500:6:601235000 1271b8851fccSafresh1-601234500:6:-601235000 1272b8851fccSafresh1+601234400:6:601234000 1273b8851fccSafresh1-601234400:6:-601234000 1274b8851fccSafresh1+601234600:6:601235000 1275b8851fccSafresh1-601234600:6:-601235000 1276b8851fccSafresh1+601234300:6:601234000 1277b8851fccSafresh1+60123456789.0123:5:60123000000 1278b8851fccSafresh1-60123456789.0123:5:-60123000000 1279b8851fccSafresh1 1280b8851fccSafresh1&bfround 1281b8851fccSafresh1$round_mode = "trunc" 1282b8851fccSafresh1+inf:5:inf 1283b8851fccSafresh1-inf:5:-inf 1284b8851fccSafresh10:5:0 12859f11ffb7Safresh1invalid:5:NaN 1286b8851fccSafresh1+1.23:-1:1.2 1287b8851fccSafresh1+1.234:-1:1.2 1288b8851fccSafresh1+1.2345:-1:1.2 1289b8851fccSafresh1+1.23:-2:1.23 1290b8851fccSafresh1+1.234:-2:1.23 1291b8851fccSafresh1+1.2345:-2:1.23 1292b8851fccSafresh1+1.23:-3:1.230 1293b8851fccSafresh1+1.234:-3:1.234 1294b8851fccSafresh1+1.2345:-3:1.234 1295b8851fccSafresh1-1.23:-1:-1.2 1296b8851fccSafresh1+1.27:-1:1.2 1297b8851fccSafresh1-1.27:-1:-1.2 1298b8851fccSafresh1+1.25:-1:1.2 1299b8851fccSafresh1-1.25:-1:-1.2 1300b8851fccSafresh1+1.35:-1:1.3 1301b8851fccSafresh1-1.35:-1:-1.3 1302b8851fccSafresh1-0.0061234567890:-1:0.0 1303b8851fccSafresh1-0.0061:-1:0.0 1304b8851fccSafresh1-0.00612:-1:0.0 1305b8851fccSafresh1-0.00612:-2:0.00 1306b8851fccSafresh1-0.006:-1:0.0 1307b8851fccSafresh1-0.006:-2:0.00 1308b8851fccSafresh1-0.0006:-2:0.00 1309b8851fccSafresh1-0.0006:-3:0.000 1310b8851fccSafresh1-0.0065:-3:/-0\.006|-6e-03 1311b8851fccSafresh1-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03 1312b8851fccSafresh1-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03 1313b8851fccSafresh10.05:0:0 1314b8851fccSafresh10.5:0:0 1315b8851fccSafresh10.51:0:0 1316b8851fccSafresh10.41:0:0 1317b8851fccSafresh1$round_mode = "zero" 1318b8851fccSafresh1+2.23:-1:/2.2(?:0{5}\d+)? 1319b8851fccSafresh1-2.23:-1:/-2.2(?:0{5}\d+)? 1320b8851fccSafresh1+2.27:-1:/2.(?:3|29{5}\d+) 1321b8851fccSafresh1-2.27:-1:/-2.(?:3|29{5}\d+) 1322b8851fccSafresh1+2.25:-1:/2.2(?:0{5}\d+)? 1323b8851fccSafresh1-2.25:-1:/-2.2(?:0{5}\d+)? 1324b8851fccSafresh1+2.35:-1:/2.(?:3|29{5}\d+) 1325b8851fccSafresh1-2.35:-1:/-2.(?:3|29{5}\d+) 1326b8851fccSafresh1-0.0065:-1:0.0 1327b8851fccSafresh1-0.0065:-2:/-0\.01|-1e-02 1328b8851fccSafresh1-0.0065:-3:/-0\.006|-6e-03 1329b8851fccSafresh1-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03 1330b8851fccSafresh1-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03 1331b8851fccSafresh10.05:0:0 1332b8851fccSafresh10.5:0:0 1333b8851fccSafresh10.51:0:1 1334b8851fccSafresh10.41:0:0 1335b8851fccSafresh1$round_mode = "+inf" 1336b8851fccSafresh1+3.23:-1:/3.2(?:0{5}\d+)? 1337b8851fccSafresh1-3.23:-1:/-3.2(?:0{5}\d+)? 1338b8851fccSafresh1+3.27:-1:/3.(?:3|29{5}\d+) 1339b8851fccSafresh1-3.27:-1:/-3.(?:3|29{5}\d+) 1340b8851fccSafresh1+3.25:-1:/3.(?:3|29{5}\d+) 1341b8851fccSafresh1-3.25:-1:/-3.2(?:0{5}\d+)? 1342b8851fccSafresh1+3.35:-1:/3.(?:4|39{5}\d+) 1343b8851fccSafresh1-3.35:-1:/-3.(?:3|29{5}\d+) 1344b8851fccSafresh1-0.0065:-1:0.0 1345b8851fccSafresh1-0.0065:-2:/-0\.01|-1e-02 1346b8851fccSafresh1-0.0065:-3:/-0\.006|-6e-03 1347b8851fccSafresh1-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03 1348b8851fccSafresh1-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03 1349b8851fccSafresh10.05:0:0 1350b8851fccSafresh10.5:0:1 1351b8851fccSafresh10.51:0:1 1352b8851fccSafresh10.41:0:0 1353b8851fccSafresh1$round_mode = "-inf" 1354b8851fccSafresh1+4.23:-1:/4.2(?:0{5}\d+)? 1355b8851fccSafresh1-4.23:-1:/-4.2(?:0{5}\d+)? 1356b8851fccSafresh1+4.27:-1:/4.(?:3|29{5}\d+) 1357b8851fccSafresh1-4.27:-1:/-4.(?:3|29{5}\d+) 1358b8851fccSafresh1+4.25:-1:/4.2(?:0{5}\d+)? 1359b8851fccSafresh1-4.25:-1:/-4.(?:3|29{5}\d+) 1360b8851fccSafresh1+4.35:-1:/4.(?:3|29{5}\d+) 1361b8851fccSafresh1-4.35:-1:/-4.(?:4|39{5}\d+) 1362b8851fccSafresh1-0.0065:-1:0.0 1363b8851fccSafresh1-0.0065:-2:/-0\.01|-1e-02 1364b8851fccSafresh1-0.0065:-3:/-0\.007|-7e-03 1365b8851fccSafresh1-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03 1366b8851fccSafresh1-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03 1367b8851fccSafresh10.05:0:0 1368b8851fccSafresh10.5:0:0 1369b8851fccSafresh10.51:0:1 1370b8851fccSafresh10.41:0:0 1371b8851fccSafresh1$round_mode = "odd" 1372b8851fccSafresh1+5.23:-1:/5.2(?:0{5}\d+)? 1373b8851fccSafresh1-5.23:-1:/-5.2(?:0{5}\d+)? 1374b8851fccSafresh1+5.27:-1:/5.(?:3|29{5}\d+) 1375b8851fccSafresh1-5.27:-1:/-5.(?:3|29{5}\d+) 1376b8851fccSafresh1+5.25:-1:/5.(?:3|29{5}\d+) 1377b8851fccSafresh1-5.25:-1:/-5.(?:3|29{5}\d+) 1378b8851fccSafresh1+5.35:-1:/5.(?:3|29{5}\d+) 1379b8851fccSafresh1-5.35:-1:/-5.(?:3|29{5}\d+) 1380b8851fccSafresh1-0.0065:-1:0.0 1381b8851fccSafresh1-0.0065:-2:/-0\.01|-1e-02 1382b8851fccSafresh1-0.0065:-3:/-0\.007|-7e-03 1383b8851fccSafresh1-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03 1384b8851fccSafresh1-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03 1385b8851fccSafresh10.05:0:0 1386b8851fccSafresh10.5:0:1 1387b8851fccSafresh10.51:0:1 1388b8851fccSafresh10.41:0:0 1389b8851fccSafresh1$round_mode = "even" 1390b8851fccSafresh1+6.23:-1:/6.2(?:0{5}\d+)? 1391b8851fccSafresh1-6.23:-1:/-6.2(?:0{5}\d+)? 1392b8851fccSafresh1+6.27:-1:/6.(?:3|29{5}\d+) 1393b8851fccSafresh1-6.27:-1:/-6.(?:3|29{5}\d+) 1394b8851fccSafresh1+6.25:-1:/6.(?:2(?:0{5}\d+)?|29{5}\d+) 1395b8851fccSafresh1-6.25:-1:/-6.(?:2(?:0{5}\d+)?|29{5}\d+) 1396b8851fccSafresh1+6.35:-1:/6.(?:4|39{5}\d+|29{8}\d+) 1397b8851fccSafresh1-6.35:-1:/-6.(?:4|39{5}\d+|29{8}\d+) 1398b8851fccSafresh1-0.0065:-1:0.0 1399b8851fccSafresh1-0.0065:-2:/-0\.01|-1e-02 1400b8851fccSafresh1-0.0065:-3:/-0\.006|-7e-03 1401b8851fccSafresh1-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03 1402b8851fccSafresh1-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03 1403b8851fccSafresh10.05:0:0 1404b8851fccSafresh10.5:0:0 1405b8851fccSafresh10.51:0:1 1406b8851fccSafresh10.41:0:0 1407b8851fccSafresh10.01234567:-3:0.012 1408b8851fccSafresh10.01234567:-4:0.0123 1409b8851fccSafresh10.01234567:-5:0.01235 1410b8851fccSafresh10.01234567:-6:0.012346 1411b8851fccSafresh10.01234567:-7:0.0123457 1412b8851fccSafresh10.01234567:-8:0.01234567 1413b8851fccSafresh10.01234567:-9:0.012345670 1414b8851fccSafresh10.01234567:-12:0.012345670000 1415b8851fccSafresh1 1416b8851fccSafresh1&bcmp 14179f11ffb7Safresh1invalid:invalid: 14189f11ffb7Safresh1invalid:+0: 14199f11ffb7Safresh1+0:invalid: 1420b8851fccSafresh1+0:+0:0 1421b8851fccSafresh1-1:+0:-1 1422b8851fccSafresh1+0:-1:1 1423b8851fccSafresh1+1:+0:1 1424b8851fccSafresh1+0:+1:-1 1425b8851fccSafresh1-1:+1:-1 1426b8851fccSafresh1+1:-1:1 1427b8851fccSafresh1-1:-1:0 1428b8851fccSafresh1+1:+1:0 1429b8851fccSafresh1-1.1:0:-1 1430b8851fccSafresh1+0:-1.1:1 1431b8851fccSafresh1+1.1:+0:1 1432b8851fccSafresh1+0:+1.1:-1 1433b8851fccSafresh1+123:+123:0 1434b8851fccSafresh1+123:+12:1 1435b8851fccSafresh1+12:+123:-1 1436b8851fccSafresh1-123:-123:0 1437b8851fccSafresh1-123:-12:-1 1438b8851fccSafresh1-12:-123:1 1439b8851fccSafresh1+123:+124:-1 1440b8851fccSafresh1+124:+123:1 1441b8851fccSafresh1-123:-124:1 1442b8851fccSafresh1-124:-123:-1 1443b8851fccSafresh10:0.01:-1 1444b8851fccSafresh10:0.0001:-1 1445b8851fccSafresh10:-0.0001:1 1446b8851fccSafresh10:-0.1:1 1447b8851fccSafresh10.1:0:1 1448b8851fccSafresh10.00001:0:1 1449b8851fccSafresh1-0.0001:0:-1 1450b8851fccSafresh1-0.1:0:-1 1451b8851fccSafresh10:0.0001234:-1 1452b8851fccSafresh10:-0.0001234:1 1453b8851fccSafresh10.0001234:0:1 1454b8851fccSafresh1-0.0001234:0:-1 1455b8851fccSafresh10.0001:0.0005:-1 1456b8851fccSafresh10.0005:0.0001:1 1457b8851fccSafresh10.005:0.0001:1 1458b8851fccSafresh10.001:0.0005:1 1459b8851fccSafresh10.000001:0.0005:-1 1460b8851fccSafresh10.00000123:0.0005:-1 1461b8851fccSafresh10.00512:0.0001:1 1462b8851fccSafresh10.005:0.000112:1 1463b8851fccSafresh10.00123:0.0005:1 1464b8851fccSafresh11.5:2:-1 1465b8851fccSafresh12:1.5:1 1466b8851fccSafresh11.54321:234:-1 1467b8851fccSafresh1234:1.54321:1 1468b8851fccSafresh11e1234567890987654321:1e1234567890987654320:1 1469b8851fccSafresh11e-1234567890987654321:1e-1234567890987654320:-1 1470b8851fccSafresh1# infinity 1471b8851fccSafresh1-inf:5432112345:-1 1472b8851fccSafresh1+inf:5432112345:1 1473b8851fccSafresh1-inf:-5432112345:-1 1474b8851fccSafresh1+inf:-5432112345:1 1475b8851fccSafresh1-inf:54321.12345:-1 1476b8851fccSafresh1+inf:54321.12345:1 1477b8851fccSafresh1-inf:-54321.12345:-1 1478b8851fccSafresh1+inf:-54321.12345:1 1479b8851fccSafresh1+inf:+inf:0 1480b8851fccSafresh1-inf:-inf:0 1481b8851fccSafresh1+inf:-inf:1 1482b8851fccSafresh1-inf:+inf:-1 1483b8851fccSafresh1# return undef 1484b8851fccSafresh1+inf:NaN: 1485b8851fccSafresh1NaN:inf: 1486b8851fccSafresh1-inf:NaN: 1487b8851fccSafresh1NaN:-inf: 1488b8851fccSafresh1 1489b8851fccSafresh1&bacmp 14909f11ffb7Safresh1invalid:invalid: 14919f11ffb7Safresh1invalid:+0: 14929f11ffb7Safresh1+0:invalid: 1493b8851fccSafresh1+0:+0:0 1494b8851fccSafresh1-1:+0:1 1495b8851fccSafresh1+0:-1:-1 1496b8851fccSafresh1+1:+0:1 1497b8851fccSafresh1+0:+1:-1 1498b8851fccSafresh1-1:+1:0 1499b8851fccSafresh1+1:-1:0 1500b8851fccSafresh1-1:-1:0 1501b8851fccSafresh1+1:+1:0 1502b8851fccSafresh1-1.1:0:1 1503b8851fccSafresh1+0:-1.1:-1 1504b8851fccSafresh1+1.1:+0:1 1505b8851fccSafresh1+0:+1.1:-1 1506b8851fccSafresh1+123:+123:0 1507b8851fccSafresh1+123:+12:1 1508b8851fccSafresh1+12:+123:-1 1509b8851fccSafresh1-123:-123:0 1510b8851fccSafresh1-123:-12:1 1511b8851fccSafresh1-12:-123:-1 1512b8851fccSafresh1+123:+124:-1 1513b8851fccSafresh1+124:+123:1 1514b8851fccSafresh1-123:-124:-1 1515b8851fccSafresh1-124:-123:1 1516b8851fccSafresh10:0.01:-1 1517b8851fccSafresh10:0.0001:-1 1518b8851fccSafresh10:-0.0001:-1 1519b8851fccSafresh10:-0.1:-1 1520b8851fccSafresh10.1:0:1 1521b8851fccSafresh10.00001:0:1 1522b8851fccSafresh1-0.0001:0:1 1523b8851fccSafresh1-0.1:0:1 1524b8851fccSafresh10:0.0001234:-1 1525b8851fccSafresh10:-0.0001234:-1 1526b8851fccSafresh10.0001234:0:1 1527b8851fccSafresh1-0.0001234:0:1 1528b8851fccSafresh10.0001:0.0005:-1 1529b8851fccSafresh10.0005:0.0001:1 1530b8851fccSafresh10.005:0.0001:1 1531b8851fccSafresh10.001:0.0005:1 1532b8851fccSafresh10.000001:0.0005:-1 1533b8851fccSafresh10.00000123:0.0005:-1 1534b8851fccSafresh10.00512:0.0001:1 1535b8851fccSafresh10.005:0.000112:1 1536b8851fccSafresh10.00123:0.0005:1 1537b8851fccSafresh11.5:2:-1 1538b8851fccSafresh12:1.5:1 1539b8851fccSafresh11.54321:234:-1 1540b8851fccSafresh1234:1.54321:1 1541b8851fccSafresh1# infinity 1542b8851fccSafresh1-inf:5432112345:1 1543b8851fccSafresh1+inf:5432112345:1 1544b8851fccSafresh1-inf:-5432112345:1 1545b8851fccSafresh1+inf:-5432112345:1 1546b8851fccSafresh1-inf:54321.12345:1 1547b8851fccSafresh1+inf:54321.12345:1 1548b8851fccSafresh1-inf:-54321.12345:1 1549b8851fccSafresh1+inf:-54321.12345:1 1550b8851fccSafresh1+inf:+inf:0 1551b8851fccSafresh1-inf:-inf:0 1552b8851fccSafresh1+inf:-inf:0 1553b8851fccSafresh1-inf:+inf:0 1554b8851fccSafresh15:inf:-1 1555b8851fccSafresh1-1:inf:-1 1556b8851fccSafresh15:-inf:-1 1557b8851fccSafresh1-1:-inf:-1 1558b8851fccSafresh1# return undef 15599f11ffb7Safresh1+inf:invalid: 15609f11ffb7Safresh1invalid:inf: 15619f11ffb7Safresh1-inf:invalid: 15629f11ffb7Safresh1invalid:-inf: 1563b8851fccSafresh1 1564b8851fccSafresh1&bdec 15659f11ffb7Safresh1invalid:NaN 1566b8851fccSafresh1+inf:inf 1567b8851fccSafresh1-inf:-inf 1568b8851fccSafresh1+0:-1 1569b8851fccSafresh1+1:0 1570b8851fccSafresh1-1:-2 1571b8851fccSafresh11.23:0.23 1572b8851fccSafresh1-1.23:-2.23 1573b8851fccSafresh1100:99 1574b8851fccSafresh1101:100 1575b8851fccSafresh1-100:-101 1576b8851fccSafresh1-99:-100 1577b8851fccSafresh1-98:-99 1578b8851fccSafresh199:98 1579b8851fccSafresh1 1580b8851fccSafresh1&binc 15819f11ffb7Safresh1invalid:NaN 1582b8851fccSafresh1+inf:inf 1583b8851fccSafresh1-inf:-inf 1584b8851fccSafresh1+0:1 1585b8851fccSafresh1+1:2 1586b8851fccSafresh1-1:0 1587b8851fccSafresh11.23:2.23 1588b8851fccSafresh1-1.23:-0.23 1589b8851fccSafresh1100:101 1590b8851fccSafresh1-100:-99 1591b8851fccSafresh1-99:-98 1592b8851fccSafresh1-101:-100 1593b8851fccSafresh199:100 1594b8851fccSafresh1 1595b8851fccSafresh1&badd 1596b8851fccSafresh1abc:abc:NaN 1597b8851fccSafresh1abc:+0:NaN 1598b8851fccSafresh1+0:abc:NaN 1599b8851fccSafresh1+inf:-inf:NaN 1600b8851fccSafresh1-inf:+inf:NaN 1601b8851fccSafresh1+inf:+inf:inf 1602b8851fccSafresh1-inf:-inf:-inf 16039f11ffb7Safresh1invalid:+inf:NaN 16049f11ffb7Safresh1invalid:+inf:NaN 16059f11ffb7Safresh1+inf:invalid:NaN 16069f11ffb7Safresh1-inf:invalid:NaN 1607b8851fccSafresh1+0:+0:0 1608b8851fccSafresh1+1:+0:1 1609b8851fccSafresh1+0:+1:1 1610b8851fccSafresh1+1:+1:2 1611b8851fccSafresh1-1:+0:-1 1612b8851fccSafresh1+0:-1:-1 1613b8851fccSafresh1-1:-1:-2 1614b8851fccSafresh1-1:+1:0 1615b8851fccSafresh1+1:-1:0 1616b8851fccSafresh1+9:+1:10 1617b8851fccSafresh1+99:+1:100 1618b8851fccSafresh1+999:+1:1000 1619b8851fccSafresh1+9999:+1:10000 1620b8851fccSafresh1+99999:+1:100000 1621b8851fccSafresh1+999999:+1:1000000 1622b8851fccSafresh1+9999999:+1:10000000 1623b8851fccSafresh1+99999999:+1:100000000 1624b8851fccSafresh1+999999999:+1:1000000000 1625b8851fccSafresh1+9999999999:+1:10000000000 1626b8851fccSafresh1+99999999999:+1:100000000000 1627b8851fccSafresh1+10:-1:9 1628b8851fccSafresh1+100:-1:99 1629b8851fccSafresh1+1000:-1:999 1630b8851fccSafresh1+10000:-1:9999 1631b8851fccSafresh1+100000:-1:99999 1632b8851fccSafresh1+1000000:-1:999999 1633b8851fccSafresh1+10000000:-1:9999999 1634b8851fccSafresh1+100000000:-1:99999999 1635b8851fccSafresh1+1000000000:-1:999999999 1636b8851fccSafresh1+10000000000:-1:9999999999 1637b8851fccSafresh1+123456789:+987654321:1111111110 1638b8851fccSafresh1-123456789:+987654321:864197532 1639b8851fccSafresh1-123456789:-987654321:-1111111110 1640b8851fccSafresh1+123456789:-987654321:-864197532 1641b8851fccSafresh10.001234:0.0001234:0.0013574 1642b8851fccSafresh1 1643b8851fccSafresh1&bsub 1644b8851fccSafresh1abc:abc:NaN 1645b8851fccSafresh1abc:+0:NaN 1646b8851fccSafresh1+0:abc:NaN 1647b8851fccSafresh1+inf:-inf:inf 1648b8851fccSafresh1-inf:+inf:-inf 1649b8851fccSafresh1+inf:+inf:NaN 1650b8851fccSafresh1-inf:-inf:NaN 16519f11ffb7Safresh1invalid:+inf:NaN 16529f11ffb7Safresh1invalid:+inf:NaN 16539f11ffb7Safresh1+inf:invalid:NaN 16549f11ffb7Safresh1-inf:invalid:NaN 1655b8851fccSafresh1+0:+0:0 1656b8851fccSafresh1+1:+0:1 1657b8851fccSafresh1+0:+1:-1 1658b8851fccSafresh1+1:+1:0 1659b8851fccSafresh1-1:+0:-1 1660b8851fccSafresh1+0:-1:1 1661b8851fccSafresh1-1:-1:0 1662b8851fccSafresh1-1:+1:-2 1663b8851fccSafresh1+1:-1:2 1664b8851fccSafresh1+9:+1:8 1665b8851fccSafresh1+99:+1:98 1666b8851fccSafresh1+999:+1:998 1667b8851fccSafresh1+9999:+1:9998 1668b8851fccSafresh1+99999:+1:99998 1669b8851fccSafresh1+999999:+1:999998 1670b8851fccSafresh1+9999999:+1:9999998 1671b8851fccSafresh1+99999999:+1:99999998 1672b8851fccSafresh1+999999999:+1:999999998 1673b8851fccSafresh1+9999999999:+1:9999999998 1674b8851fccSafresh1+99999999999:+1:99999999998 1675b8851fccSafresh1+10:-1:11 1676b8851fccSafresh1+100:-1:101 1677b8851fccSafresh1+1000:-1:1001 1678b8851fccSafresh1+10000:-1:10001 1679b8851fccSafresh1+100000:-1:100001 1680b8851fccSafresh1+1000000:-1:1000001 1681b8851fccSafresh1+10000000:-1:10000001 1682b8851fccSafresh1+100000000:-1:100000001 1683b8851fccSafresh1+1000000000:-1:1000000001 1684b8851fccSafresh1+10000000000:-1:10000000001 1685b8851fccSafresh1+123456789:+987654321:-864197532 1686b8851fccSafresh1-123456789:+987654321:-1111111110 1687b8851fccSafresh1-123456789:-987654321:864197532 1688b8851fccSafresh1+123456789:-987654321:1111111110 1689b8851fccSafresh1 1690b8851fccSafresh1&bmuladd 1691b8851fccSafresh1abc:abc:0:NaN 1692b8851fccSafresh1abc:+0:0:NaN 1693b8851fccSafresh1+0:abc:0:NaN 1694b8851fccSafresh1+0:0:abc:NaN 16959f11ffb7Safresh1invalid:+inf:0:NaN 16969f11ffb7Safresh1invalid:-inf:0:NaN 16979f11ffb7Safresh1-inf:invalid:0:NaN 16989f11ffb7Safresh1+inf:invalid:0:NaN 1699b8851fccSafresh1+inf:+inf:0:inf 1700b8851fccSafresh1+inf:-inf:0:-inf 1701b8851fccSafresh1-inf:+inf:0:-inf 1702b8851fccSafresh1-inf:-inf:0:inf 1703b8851fccSafresh1+0:+0:0:0 1704b8851fccSafresh1+0:+1:0:0 1705b8851fccSafresh1+1:+0:0:0 1706b8851fccSafresh1+0:-1:0:0 1707b8851fccSafresh1-1:+0:0:0 1708b8851fccSafresh1123456789123456789:0:0:0 1709b8851fccSafresh10:123456789123456789:0:0 1710b8851fccSafresh1-1:-1:0:1 1711b8851fccSafresh1-1:-1:0:1 1712b8851fccSafresh1-1:+1:0:-1 1713b8851fccSafresh1+1:-1:0:-1 1714b8851fccSafresh1+1:+1:0:1 1715b8851fccSafresh1+2:+3:0:6 1716b8851fccSafresh1-2:+3:0:-6 1717b8851fccSafresh1+2:-3:0:-6 1718b8851fccSafresh1-2:-3:0:6 1719b8851fccSafresh1111:111:0:12321 1720b8851fccSafresh110101:10101:0:102030201 1721b8851fccSafresh11001001:1001001:0:1002003002001 1722b8851fccSafresh1100010001:100010001:0:10002000300020001 1723b8851fccSafresh110000100001:10000100001:0:100002000030000200001 1724b8851fccSafresh111111111111:9:0:99999999999 1725b8851fccSafresh122222222222:9:0:199999999998 1726b8851fccSafresh133333333333:9:0:299999999997 1727b8851fccSafresh144444444444:9:0:399999999996 1728b8851fccSafresh155555555555:9:0:499999999995 1729b8851fccSafresh166666666666:9:0:599999999994 1730b8851fccSafresh177777777777:9:0:699999999993 1731b8851fccSafresh188888888888:9:0:799999999992 1732b8851fccSafresh199999999999:9:0:899999999991 1733b8851fccSafresh111111111111:9:1:100000000000 1734b8851fccSafresh122222222222:9:1:199999999999 1735b8851fccSafresh133333333333:9:1:299999999998 1736b8851fccSafresh144444444444:9:1:399999999997 1737b8851fccSafresh155555555555:9:1:499999999996 1738b8851fccSafresh166666666666:9:1:599999999995 1739b8851fccSafresh177777777777:9:1:699999999994 1740b8851fccSafresh188888888888:9:1:799999999993 1741b8851fccSafresh199999999999:9:1:899999999992 1742b8851fccSafresh1-3:-4:-5:7 1743b8851fccSafresh13:-4:-5:-17 1744b8851fccSafresh1-3:4:-5:-17 1745b8851fccSafresh13:4:-5:7 1746b8851fccSafresh1-3:4:5:-7 1747b8851fccSafresh13:-4:5:-7 1748b8851fccSafresh19999999999999999999:10000000000000000000:1234567890:99999999999999999990000000001234567890 1749b8851fccSafresh13.2:5.7:8.9:27.14 1750b8851fccSafresh1-3.2:5.197:6.05:-10.5804 1751b8851fccSafresh1 1752b8851fccSafresh1&bmodpow 1753b8851fccSafresh13:4:8:1 1754b8851fccSafresh13:4:7:4 1755b8851fccSafresh13:4:7:4 1756b8851fccSafresh177777:777:123456789:99995084 1757b8851fccSafresh13.2:6.2:5.2:2.970579856718063040273642739529400818 1758b8851fccSafresh1 1759b8851fccSafresh1&bmul 1760b8851fccSafresh1abc:abc:NaN 1761b8851fccSafresh1abc:+0:NaN 1762b8851fccSafresh1+0:abc:NaN 17639f11ffb7Safresh1+inf:invalid:NaN 17649f11ffb7Safresh1+inf:invalid:NaN 17659f11ffb7Safresh1invalid:+inf:NaN 17669f11ffb7Safresh1invalid:-inf:NaN 1767b8851fccSafresh1+inf:+inf:inf 1768b8851fccSafresh1+inf:-inf:-inf 1769b8851fccSafresh1+inf:-inf:-inf 1770b8851fccSafresh1+inf:+inf:inf 1771b8851fccSafresh1+inf:123.34:inf 1772b8851fccSafresh1+inf:-123.34:-inf 1773b8851fccSafresh1-inf:123.34:-inf 1774b8851fccSafresh1-inf:-123.34:inf 1775b8851fccSafresh1123.34:+inf:inf 1776b8851fccSafresh1-123.34:+inf:-inf 1777b8851fccSafresh1123.34:-inf:-inf 1778b8851fccSafresh1-123.34:-inf:inf 1779b8851fccSafresh1+0:+0:0 1780b8851fccSafresh1+0:+1:0 1781b8851fccSafresh1+1:+0:0 1782b8851fccSafresh1+0:-1:0 1783b8851fccSafresh1-1:+0:0 1784b8851fccSafresh1+123456789123456789:+0:0 1785b8851fccSafresh1+0:+123456789123456789:0 1786b8851fccSafresh1-1:-1:1 1787b8851fccSafresh1-1:+1:-1 1788b8851fccSafresh1+1:-1:-1 1789b8851fccSafresh1+1:+1:1 1790b8851fccSafresh1+2:+3:6 1791b8851fccSafresh1-2:+3:-6 1792b8851fccSafresh1+2:-3:-6 1793b8851fccSafresh1-2:-3:6 1794b8851fccSafresh1+111:+111:12321 1795b8851fccSafresh1+10101:+10101:102030201 1796b8851fccSafresh1+1001001:+1001001:1002003002001 1797b8851fccSafresh1+100010001:+100010001:10002000300020001 1798b8851fccSafresh1+10000100001:+10000100001:100002000030000200001 1799b8851fccSafresh1+11111111111:+9:99999999999 1800b8851fccSafresh1+22222222222:+9:199999999998 1801b8851fccSafresh1+33333333333:+9:299999999997 1802b8851fccSafresh1+44444444444:+9:399999999996 1803b8851fccSafresh1+55555555555:+9:499999999995 1804b8851fccSafresh1+66666666666:+9:599999999994 1805b8851fccSafresh1+77777777777:+9:699999999993 1806b8851fccSafresh1+88888888888:+9:799999999992 1807b8851fccSafresh1+99999999999:+9:899999999991 1808b8851fccSafresh16:120:720 1809b8851fccSafresh110:10000:100000 1810b8851fccSafresh1 1811b8851fccSafresh1&bdiv-list 1812b8851fccSafresh10:0:NaN,0 1813b8851fccSafresh10:1:0,0 1814b8851fccSafresh19:4:2,1 1815b8851fccSafresh19:5:1,4 1816b8851fccSafresh1# bug in v1.74 with bdiv in list context, when $y is 1 or -1 1817b8851fccSafresh12.1:-1:-2.1,0 1818b8851fccSafresh12.1:1:2.1,0 1819b8851fccSafresh1-2.1:-1:2.1,0 1820b8851fccSafresh1-2.1:1:-2.1,0 1821b8851fccSafresh1 1822b8851fccSafresh1&bdiv 1823b8851fccSafresh1$div_scale = 40; $round_mode = "even" 1824b8851fccSafresh1abc:abc:NaN 1825b8851fccSafresh1abc:+1:abc:NaN 1826b8851fccSafresh1+1:abc:NaN 1827b8851fccSafresh1-1:abc:NaN 1828b8851fccSafresh10:abc:NaN 1829b8851fccSafresh1+0:+0:NaN 1830b8851fccSafresh1+0:+1:0 1831b8851fccSafresh1+1:+0:inf 1832b8851fccSafresh1+3214:+0:inf 1833b8851fccSafresh1+0:-1:0 1834b8851fccSafresh1-1:+0:-inf 1835b8851fccSafresh1-3214:+0:-inf 1836b8851fccSafresh1+1:+1:1 1837b8851fccSafresh1-1:-1:1 1838b8851fccSafresh1+1:-1:-1 1839b8851fccSafresh1-1:+1:-1 1840b8851fccSafresh1+1:+2:0.5 1841b8851fccSafresh1+2:+1:2 1842b8851fccSafresh1123:+inf:0 1843b8851fccSafresh1123:-inf:0 1844b8851fccSafresh1+10:+5:2 1845b8851fccSafresh1+100:+4:25 1846b8851fccSafresh1+1000:+8:125 1847b8851fccSafresh1+10000:+16:625 1848b8851fccSafresh1+10000:-16:-625 1849b8851fccSafresh1+999999999999:+9:111111111111 1850b8851fccSafresh1+999999999999:+99:10101010101 1851b8851fccSafresh1+999999999999:+999:1001001001 1852b8851fccSafresh1+999999999999:+9999:100010001 1853b8851fccSafresh1+999999999999999:+99999:10000100001 1854b8851fccSafresh1+1000000000:+9:111111111.1111111111111111111111111111111 1855b8851fccSafresh1+2000000000:+9:222222222.2222222222222222222222222222222 1856b8851fccSafresh1+3000000000:+9:333333333.3333333333333333333333333333333 1857b8851fccSafresh1+4000000000:+9:444444444.4444444444444444444444444444444 1858b8851fccSafresh1+5000000000:+9:555555555.5555555555555555555555555555556 1859b8851fccSafresh1+6000000000:+9:666666666.6666666666666666666666666666667 1860b8851fccSafresh1+7000000000:+9:777777777.7777777777777777777777777777778 1861b8851fccSafresh1+8000000000:+9:888888888.8888888888888888888888888888889 1862b8851fccSafresh1+9000000000:+9:1000000000 1863b8851fccSafresh1+35500000:+113:314159.2920353982300884955752212389380531 1864b8851fccSafresh1+71000000:+226:314159.2920353982300884955752212389380531 1865b8851fccSafresh1+106500000:+339:314159.2920353982300884955752212389380531 1866b8851fccSafresh1+1000000000:+3:333333333.3333333333333333333333333333333 1867b8851fccSafresh12:25.024996000799840031993601279744051189762:0.07992009269196593320152084692285869265447 1868b8851fccSafresh1123456:1:123456 1869b8851fccSafresh1$div_scale = 20 1870b8851fccSafresh1+1000000000:+9:111111111.11111111111 1871b8851fccSafresh1+2000000000:+9:222222222.22222222222 1872b8851fccSafresh1+3000000000:+9:333333333.33333333333 1873b8851fccSafresh1+4000000000:+9:444444444.44444444444 1874b8851fccSafresh1+5000000000:+9:555555555.55555555556 1875b8851fccSafresh1+6000000000:+9:666666666.66666666667 1876b8851fccSafresh1+7000000000:+9:777777777.77777777778 1877b8851fccSafresh1+8000000000:+9:888888888.88888888889 1878b8851fccSafresh1+9000000000:+9:1000000000 1879b8851fccSafresh11:10:0.1 1880b8851fccSafresh11:100:0.01 1881b8851fccSafresh11:1000:0.001 1882b8851fccSafresh11:10000:0.0001 1883b8851fccSafresh11:504:0.001984126984126984127 1884b8851fccSafresh12:1.987654321:1.0062111801179738436 1885b8851fccSafresh1123456789.123456789123456789123456789:1:123456789.12345678912 1886b8851fccSafresh1# the next two cases are the "old" behaviour, but are now (>v0.01) different 1887b8851fccSafresh1#+35500000:+113:314159.292035398230088 1888b8851fccSafresh1#+71000000:+226:314159.292035398230088 1889b8851fccSafresh1+35500000:+113:314159.29203539823009 1890b8851fccSafresh1+71000000:+226:314159.29203539823009 1891b8851fccSafresh1+106500000:+339:314159.29203539823009 1892b8851fccSafresh1+1000000000:+3:333333333.33333333333 1893b8851fccSafresh1$div_scale = 1 1894b8851fccSafresh1# round to accuracy 1 after bdiv 1895b8851fccSafresh1+124:+3:40 1896b8851fccSafresh1123456789.1234:1:100000000 1897b8851fccSafresh1# reset scale for further tests 1898b8851fccSafresh1$div_scale = 40 1899b8851fccSafresh1 1900b8851fccSafresh1&bmod 1901b8851fccSafresh1+9:4:1 1902b8851fccSafresh1+9:5:4 1903b8851fccSafresh1+9000:56:40 1904b8851fccSafresh1+56:9000:56 1905b8851fccSafresh1# inf handling, see table in doc 1906b8851fccSafresh10:inf:0 1907b8851fccSafresh10:-inf:0 1908b8851fccSafresh15:inf:5 1909b8851fccSafresh15:-inf:-inf 1910b8851fccSafresh1-5:inf:inf 1911b8851fccSafresh1-5:-inf:-5 1912b8851fccSafresh1inf:5:NaN 1913b8851fccSafresh1-inf:5:NaN 1914b8851fccSafresh1inf:-5:NaN 1915b8851fccSafresh1-inf:-5:NaN 1916b8851fccSafresh15:5:0 1917b8851fccSafresh1-5:-5:0 1918b8851fccSafresh1inf:inf:NaN 1919b8851fccSafresh1-inf:-inf:NaN 1920b8851fccSafresh1-inf:inf:NaN 1921b8851fccSafresh1inf:-inf:NaN 1922b8851fccSafresh18:0:8 1923b8851fccSafresh1inf:0:inf 1924b8851fccSafresh1-inf:0:-inf 1925b8851fccSafresh1-8:0:-8 1926b8851fccSafresh10:0:0 1927b8851fccSafresh1abc:abc:NaN 1928b8851fccSafresh1abc:1:abc:NaN 1929b8851fccSafresh11:abc:NaN 1930b8851fccSafresh10:1:0 1931b8851fccSafresh11:0:1 1932b8851fccSafresh10:-1:0 1933b8851fccSafresh1-1:0:-1 1934b8851fccSafresh11:1:0 1935b8851fccSafresh1-1:-1:0 1936b8851fccSafresh11:-1:0 1937b8851fccSafresh1-1:1:0 1938b8851fccSafresh11:2:1 1939b8851fccSafresh12:1:0 1940b8851fccSafresh11000000000:9:1 1941b8851fccSafresh12000000000:9:2 1942b8851fccSafresh13000000000:9:3 1943b8851fccSafresh14000000000:9:4 1944b8851fccSafresh15000000000:9:5 1945b8851fccSafresh16000000000:9:6 1946b8851fccSafresh17000000000:9:7 1947b8851fccSafresh18000000000:9:8 1948b8851fccSafresh19000000000:9:0 1949b8851fccSafresh135500000:113:33 1950b8851fccSafresh171000000:226:66 1951b8851fccSafresh1106500000:339:99 1952b8851fccSafresh11000000000:3:1 1953b8851fccSafresh110:5:0 1954b8851fccSafresh1100:4:0 1955b8851fccSafresh11000:8:0 1956b8851fccSafresh110000:16:0 1957b8851fccSafresh1999999999999:9:0 1958b8851fccSafresh1999999999999:99:0 1959b8851fccSafresh1999999999999:999:0 1960b8851fccSafresh1999999999999:9999:0 1961b8851fccSafresh1999999999999999:99999:0 1962b8851fccSafresh1-9:+5:1 1963b8851fccSafresh1+9:-5:-1 1964b8851fccSafresh1-9:-5:-4 1965b8851fccSafresh1-5:3:1 1966b8851fccSafresh1-2:3:1 1967b8851fccSafresh14:3:1 1968b8851fccSafresh11:3:1 1969b8851fccSafresh1-5:-3:-2 1970b8851fccSafresh1-2:-3:-2 1971b8851fccSafresh14:-3:-2 1972b8851fccSafresh11:-3:-2 1973b8851fccSafresh14095:4095:0 1974b8851fccSafresh1100041000510123:3:0 1975b8851fccSafresh1152403346:12345:4321 1976b8851fccSafresh187654321:87654321:0 1977b8851fccSafresh1# now some floating point tests 1978b8851fccSafresh1123:2.5:0.5 1979b8851fccSafresh11230:2.5:0 1980b8851fccSafresh1123.4:2.5:0.9 1981b8851fccSafresh1123e1:25:5 1982b8851fccSafresh1-2.1:1:0.9 1983b8851fccSafresh12.1:1:0.1 1984b8851fccSafresh1-2.1:-1:-0.1 1985b8851fccSafresh12.1:-1:-0.9 1986b8851fccSafresh1-3:1:0 1987b8851fccSafresh13:1:0 1988b8851fccSafresh1-3:-1:0 1989b8851fccSafresh13:-1:0 1990b8851fccSafresh1 1991b8851fccSafresh1&bfac 1992eac174f2Safresh1invalid:NaN 1993b8851fccSafresh1+inf:inf 1994b8851fccSafresh1-inf:NaN 1995eac174f2Safresh1-1:NaN 1996b8851fccSafresh10:1 1997b8851fccSafresh11:1 1998b8851fccSafresh12:2 1999b8851fccSafresh13:6 2000b8851fccSafresh14:24 2001b8851fccSafresh15:120 2002b8851fccSafresh16:720 2003eac174f2Safresh17:5040 2004eac174f2Safresh18:40320 2005eac174f2Safresh19:362880 2006b8851fccSafresh110:3628800 2007b8851fccSafresh111:39916800 2008b8851fccSafresh112:479001600 2009eac174f2Safresh120:2432902008176640000 2010eac174f2Safresh122:1124000727777607680000 2011eac174f2Safresh169:171122452428141311372468338881272839092270544893520369393648040923257279754140647424000000000000000 2012b8851fccSafresh1 20139f11ffb7Safresh1&bdfac 20149f11ffb7Safresh1NaN:NaN 20159f11ffb7Safresh1+inf:inf 20169f11ffb7Safresh1-inf:NaN 2017eac174f2Safresh1-2:NaN 2018eac174f2Safresh1-1:1 20199f11ffb7Safresh10:1 20209f11ffb7Safresh11:1 20219f11ffb7Safresh12:2 20229f11ffb7Safresh13:3 20239f11ffb7Safresh14:8 20249f11ffb7Safresh15:15 20259f11ffb7Safresh16:48 20269f11ffb7Safresh17:105 20279f11ffb7Safresh18:384 20289f11ffb7Safresh19:945 20299f11ffb7Safresh110:3840 20309f11ffb7Safresh111:10395 20319f11ffb7Safresh112:46080 20329f11ffb7Safresh1 2033eac174f2Safresh1&btfac 2034eac174f2Safresh1NaN:NaN 2035eac174f2Safresh1+inf:inf 2036eac174f2Safresh1-inf:NaN 2037eac174f2Safresh1-3:NaN 2038eac174f2Safresh1-2:1 2039eac174f2Safresh1-1:1 2040eac174f2Safresh10:1 2041eac174f2Safresh11:1 2042eac174f2Safresh12:2 2043eac174f2Safresh13:3 2044eac174f2Safresh14:4 2045eac174f2Safresh15:10 2046eac174f2Safresh16:18 2047eac174f2Safresh17:28 2048eac174f2Safresh18:80 2049eac174f2Safresh19:162 2050eac174f2Safresh110:280 2051eac174f2Safresh111:880 2052eac174f2Safresh112:1944 2053eac174f2Safresh1 2054eac174f2Safresh1&bmfac 2055eac174f2Safresh1 2056eac174f2Safresh17:-inf:NaN 2057eac174f2Safresh17:-1:NaN 2058eac174f2Safresh17:0:NaN 2059eac174f2Safresh17:2.5:NaN 2060eac174f2Safresh17:inf:7 2061eac174f2Safresh17:NaN:NaN 2062eac174f2Safresh1 2063eac174f2Safresh1NaN:1:NaN 2064eac174f2Safresh1+inf:1:inf 2065eac174f2Safresh1-inf:1:NaN 2066eac174f2Safresh1-1:1:NaN 2067eac174f2Safresh10:1:1 2068eac174f2Safresh11:1:1 2069eac174f2Safresh12:1:2 2070eac174f2Safresh13:1:6 2071eac174f2Safresh14:1:24 2072eac174f2Safresh15:1:120 2073eac174f2Safresh16:1:720 2074eac174f2Safresh17:1:5040 2075eac174f2Safresh18:1:40320 2076eac174f2Safresh19:1:362880 2077eac174f2Safresh110:1:3628800 2078eac174f2Safresh1 2079eac174f2Safresh1NaN:2:NaN 2080eac174f2Safresh1+inf:2:inf 2081eac174f2Safresh1-inf:2:NaN 2082eac174f2Safresh1-2:2:NaN 2083eac174f2Safresh1-1:2:1 2084eac174f2Safresh10:2:1 2085eac174f2Safresh11:2:1 2086eac174f2Safresh12:2:2 2087eac174f2Safresh13:2:3 2088eac174f2Safresh14:2:8 2089eac174f2Safresh15:2:15 2090eac174f2Safresh16:2:48 2091eac174f2Safresh17:2:105 2092eac174f2Safresh18:2:384 2093eac174f2Safresh19:2:945 2094eac174f2Safresh110:2:3840 2095eac174f2Safresh1 2096eac174f2Safresh1NaN:3:NaN 2097eac174f2Safresh1+inf:3:inf 2098eac174f2Safresh1-inf:3:NaN 2099eac174f2Safresh1-3:3:NaN 2100eac174f2Safresh1-2:3:1 2101eac174f2Safresh1-1:3:1 2102eac174f2Safresh10:3:1 2103eac174f2Safresh11:3:1 2104eac174f2Safresh12:3:2 2105eac174f2Safresh13:3:3 2106eac174f2Safresh14:3:4 2107eac174f2Safresh15:3:10 2108eac174f2Safresh16:3:18 2109eac174f2Safresh17:3:28 2110eac174f2Safresh18:3:80 2111eac174f2Safresh19:3:162 2112eac174f2Safresh110:3:280 2113eac174f2Safresh1 2114eac174f2Safresh1NaN:4:NaN 2115eac174f2Safresh1+inf:4:inf 2116eac174f2Safresh1-inf:4:NaN 2117eac174f2Safresh1-4:4:NaN 2118eac174f2Safresh1-3:4:1 2119eac174f2Safresh1-2:4:1 2120eac174f2Safresh1-1:4:1 2121eac174f2Safresh10:4:1 2122eac174f2Safresh11:4:1 2123eac174f2Safresh12:4:2 2124eac174f2Safresh13:4:3 2125eac174f2Safresh14:4:4 2126eac174f2Safresh15:4:5 2127eac174f2Safresh16:4:12 2128eac174f2Safresh17:4:21 2129eac174f2Safresh18:4:32 2130eac174f2Safresh19:4:45 2131eac174f2Safresh110:4:120 2132eac174f2Safresh1 2133eac174f2Safresh1NaN:5:NaN 2134eac174f2Safresh1+inf:5:inf 2135eac174f2Safresh1-inf:5:NaN 2136eac174f2Safresh1-5:5:NaN 2137eac174f2Safresh1-4:5:1 2138eac174f2Safresh1-3:5:1 2139eac174f2Safresh1-2:5:1 2140eac174f2Safresh1-1:5:1 2141eac174f2Safresh10:5:1 2142eac174f2Safresh11:5:1 2143eac174f2Safresh12:5:2 2144eac174f2Safresh13:5:3 2145eac174f2Safresh14:5:4 2146eac174f2Safresh15:5:5 2147eac174f2Safresh16:5:6 2148eac174f2Safresh17:5:14 2149eac174f2Safresh18:5:24 2150eac174f2Safresh19:5:36 2151eac174f2Safresh110:5:50 2152eac174f2Safresh1 2153b8851fccSafresh1&broot 2154b8851fccSafresh1# sqrt() 2155b8851fccSafresh1+0:2:0 2156b8851fccSafresh1+1:2:1 2157b8851fccSafresh1-1:2:NaN 2158b8851fccSafresh1# -$x ** (1/2) => -$y, but not in broot() 2159b8851fccSafresh1-123.456:2:NaN 2160b8851fccSafresh1+inf:2:inf 2161b8851fccSafresh1-inf:2:NaN 2162b8851fccSafresh12:2:1.41421356237309504880168872420969807857 2163b8851fccSafresh1-2:2:NaN 2164b8851fccSafresh14:2:2 2165b8851fccSafresh19:2:3 2166b8851fccSafresh116:2:4 2167b8851fccSafresh1100:2:10 2168b8851fccSafresh1123.456:2:11.11107555549866648462149404118219234119 2169b8851fccSafresh115241.38393:2:123.4559999756998444766131352122991626468 2170b8851fccSafresh11.44:2:1.2 2171b8851fccSafresh112:2:3.464101615137754587054892683011744733886 2172b8851fccSafresh10.49:2:0.7 2173b8851fccSafresh10.0049:2:0.07 2174b8851fccSafresh1# invalid ones 2175b8851fccSafresh11:NaN:NaN 2176b8851fccSafresh1-1:NaN:NaN 2177b8851fccSafresh10:NaN:NaN 2178b8851fccSafresh1-inf:NaN:NaN 2179b8851fccSafresh1+inf:NaN:NaN 2180b8851fccSafresh1NaN:0:NaN 2181b8851fccSafresh1NaN:2:NaN 2182b8851fccSafresh1NaN:inf:NaN 2183b8851fccSafresh1NaN:inf:NaN 2184b8851fccSafresh112:-inf:NaN 2185b8851fccSafresh112:inf:NaN 2186b8851fccSafresh1+0:0:NaN 2187b8851fccSafresh1+1:0:NaN 2188b8851fccSafresh1-1:0:NaN 2189b8851fccSafresh1-2:0:NaN 2190b8851fccSafresh1-123.45:0:NaN 2191b8851fccSafresh1+inf:0:NaN 2192b8851fccSafresh112:1:12 2193b8851fccSafresh1-12:1:NaN 2194b8851fccSafresh18:-1:NaN 2195b8851fccSafresh1-8:-1:NaN 2196b8851fccSafresh1# cubic root 2197b8851fccSafresh18:3:2 2198b8851fccSafresh1-8:3:NaN 2199b8851fccSafresh1# fourths root 2200b8851fccSafresh116:4:2 2201b8851fccSafresh181:4:3 2202b8851fccSafresh1# see t/bigroot() for more tests 2203b8851fccSafresh1 2204b8851fccSafresh1&bsqrt 2205b8851fccSafresh1+0:0 2206b8851fccSafresh1-1:NaN 2207b8851fccSafresh1-2:NaN 2208b8851fccSafresh1-16:NaN 2209b8851fccSafresh1-123.45:NaN 2210b8851fccSafresh1nanbsqrt:NaN 2211b8851fccSafresh1+inf:inf 2212b8851fccSafresh1-inf:NaN 2213b8851fccSafresh11:1 2214b8851fccSafresh12:1.41421356237309504880168872420969807857 2215b8851fccSafresh14:2 2216b8851fccSafresh19:3 2217b8851fccSafresh116:4 2218b8851fccSafresh1100:10 2219b8851fccSafresh1123.456:11.11107555549866648462149404118219234119 2220b8851fccSafresh115241.38393:123.4559999756998444766131352122991626468 2221b8851fccSafresh11.44:1.2 2222b8851fccSafresh1# sqrt(1.44) = 1.2, sqrt(e10) = e5 => 12e4 2223b8851fccSafresh11.44E10:120000 2224b8851fccSafresh12e10:141421.356237309504880168872420969807857 2225b8851fccSafresh1144e20:120000000000 2226b8851fccSafresh1# proved to be an endless loop under 7-9 2227b8851fccSafresh112:3.464101615137754587054892683011744733886 2228b8851fccSafresh10.49:0.7 2229b8851fccSafresh10.0049:0.07 2230b8851fccSafresh1 2231b8851fccSafresh1&is_nan 2232b8851fccSafresh1123:0 2233b8851fccSafresh1abc:1 2234b8851fccSafresh1NaN:1 2235b8851fccSafresh1-123:0 2236b8851fccSafresh1 2237b8851fccSafresh1&is_inf 2238b8851fccSafresh1+inf::1 2239b8851fccSafresh1-inf::1 2240b8851fccSafresh1abc::0 2241b8851fccSafresh11::0 2242b8851fccSafresh1NaN::0 2243b8851fccSafresh1-1::0 2244b8851fccSafresh1+inf:-:0 2245b8851fccSafresh1+inf:+:1 2246b8851fccSafresh1-inf:-:1 2247b8851fccSafresh1-inf:+:0 2248b8851fccSafresh1-inf:-inf:1 2249b8851fccSafresh1-inf:+inf:0 2250b8851fccSafresh1+inf:-inf:0 2251b8851fccSafresh1+inf:+inf:1 2252b8851fccSafresh1+iNfInItY::1 2253b8851fccSafresh1-InFiNiTy::1 2254b8851fccSafresh1 2255b8851fccSafresh1&is_odd 2256b8851fccSafresh1abc:0 2257b8851fccSafresh10:0 2258b8851fccSafresh1-1:1 2259b8851fccSafresh1-3:1 2260b8851fccSafresh11:1 2261b8851fccSafresh13:1 2262b8851fccSafresh11000001:1 2263b8851fccSafresh11000002:0 2264b8851fccSafresh1+inf:0 2265b8851fccSafresh1-inf:0 2266b8851fccSafresh1123.45:0 2267b8851fccSafresh1-123.45:0 2268b8851fccSafresh12:0 2269b8851fccSafresh1 2270b8851fccSafresh1&is_int 22719f11ffb7Safresh1invalid:0 2272b8851fccSafresh10:1 2273b8851fccSafresh11:1 2274b8851fccSafresh12:1 2275b8851fccSafresh1-2:1 2276b8851fccSafresh1-1:1 2277b8851fccSafresh1-inf:0 2278b8851fccSafresh1+inf:0 2279b8851fccSafresh1123.4567:0 2280b8851fccSafresh1-0.1:0 2281b8851fccSafresh1-0.002:0 2282b8851fccSafresh1 2283b8851fccSafresh1&is_even 2284b8851fccSafresh1abc:0 2285b8851fccSafresh10:1 2286b8851fccSafresh1-1:0 2287b8851fccSafresh1-3:0 2288b8851fccSafresh11:0 2289b8851fccSafresh13:0 2290b8851fccSafresh11000001:0 2291b8851fccSafresh11000002:1 2292b8851fccSafresh12:1 2293b8851fccSafresh1+inf:0 2294b8851fccSafresh1-inf:0 2295b8851fccSafresh1123.456:0 2296b8851fccSafresh1-123.456:0 2297b8851fccSafresh10.01:0 2298b8851fccSafresh1-0.01:0 2299b8851fccSafresh1120:1 2300b8851fccSafresh11200:1 2301b8851fccSafresh1-1200:1 2302b8851fccSafresh1 2303b8851fccSafresh1&is_positive 2304b8851fccSafresh10:0 2305b8851fccSafresh11:1 2306b8851fccSafresh1-1:0 2307b8851fccSafresh1-123:0 2308b8851fccSafresh1NaN:0 2309b8851fccSafresh1-inf:0 2310b8851fccSafresh1+inf:1 2311b8851fccSafresh1 2312b8851fccSafresh1&is_negative 2313b8851fccSafresh10:0 2314b8851fccSafresh11:0 2315b8851fccSafresh1-1:1 2316b8851fccSafresh1-123:1 2317b8851fccSafresh1NaN:0 2318b8851fccSafresh1-inf:1 2319b8851fccSafresh1+inf:0 2320b8851fccSafresh1 232156d68f1eSafresh1&is_non_positive 232256d68f1eSafresh10:1 232356d68f1eSafresh11:0 232456d68f1eSafresh1-1:1 232556d68f1eSafresh1NaN:0 232656d68f1eSafresh1-inf:1 232756d68f1eSafresh1+inf:0 232856d68f1eSafresh1 232956d68f1eSafresh1&is_non_negative 233056d68f1eSafresh10:1 233156d68f1eSafresh11:1 233256d68f1eSafresh1-1:0 233356d68f1eSafresh1NaN:0 233456d68f1eSafresh1-inf:0 233556d68f1eSafresh1+inf:1 233656d68f1eSafresh1 2337b8851fccSafresh1&parts 2338b8851fccSafresh10:0 0 2339b8851fccSafresh11:1 0 2340b8851fccSafresh1123:123 0 2341b8851fccSafresh1-123:-123 0 2342b8851fccSafresh1-1200:-12 2 23439f11ffb7Safresh1invalid:NaN NaN 2344b8851fccSafresh1+inf:inf inf 2345b8851fccSafresh1-inf:-inf inf 2346b8851fccSafresh1 2347b8851fccSafresh1&exponent 2348b8851fccSafresh10:0 2349b8851fccSafresh11:0 2350b8851fccSafresh1123:0 2351b8851fccSafresh1-123:0 2352b8851fccSafresh1-1200:2 2353b8851fccSafresh1+inf:inf 2354b8851fccSafresh1-inf:inf 23559f11ffb7Safresh1invalid:NaN 2356b8851fccSafresh1 2357b8851fccSafresh1&mantissa 2358b8851fccSafresh10:0 2359b8851fccSafresh11:1 2360b8851fccSafresh1123:123 2361b8851fccSafresh1-123:-123 2362b8851fccSafresh1-1200:-12 2363b8851fccSafresh1+inf:inf 2364b8851fccSafresh1-inf:-inf 23659f11ffb7Safresh1invalid:NaN 2366b8851fccSafresh1 2367b8851fccSafresh1&length 2368b8851fccSafresh1123:3 2369b8851fccSafresh1-123:3 2370b8851fccSafresh10:1 2371b8851fccSafresh11:1 2372b8851fccSafresh112345678901234567890:20 2373b8851fccSafresh1 2374b8851fccSafresh1&is_zero 23759f11ffb7Safresh1invalid:0 2376b8851fccSafresh1+inf:0 2377b8851fccSafresh1-inf:0 2378b8851fccSafresh10:1 2379b8851fccSafresh1-1:0 2380b8851fccSafresh11:0 2381b8851fccSafresh1 2382b8851fccSafresh1&is_one 23839f11ffb7Safresh1invalid:0 2384b8851fccSafresh1+inf:0 2385b8851fccSafresh1-inf:0 2386b8851fccSafresh10:0 2387b8851fccSafresh12:0 2388b8851fccSafresh11:1 2389b8851fccSafresh1-1:0 2390b8851fccSafresh1-2:0 2391b8851fccSafresh1 2392b8851fccSafresh1&bfloor 2393b8851fccSafresh10:0 2394b8851fccSafresh1abc:NaN 2395b8851fccSafresh1+inf:inf 2396b8851fccSafresh1-inf:-inf 2397b8851fccSafresh11:1 2398b8851fccSafresh1-51:-51 2399b8851fccSafresh1-51.2:-52 2400b8851fccSafresh112.2:12 2401b8851fccSafresh10.12345:0 2402b8851fccSafresh10.123456:0 2403b8851fccSafresh10.1234567:0 2404b8851fccSafresh10.12345678:0 2405b8851fccSafresh10.123456789:0 2406b8851fccSafresh1 2407b8851fccSafresh1&bceil 2408b8851fccSafresh10:0 2409b8851fccSafresh1abc:NaN 2410b8851fccSafresh1+inf:inf 2411b8851fccSafresh1-inf:-inf 2412b8851fccSafresh11:1 2413b8851fccSafresh1-51:-51 2414b8851fccSafresh1-51.2:-51 2415b8851fccSafresh112.2:13 2416b8851fccSafresh1-0.4:0 2417b8851fccSafresh1 2418b8851fccSafresh1&bint 2419b8851fccSafresh10:0 2420b8851fccSafresh1NaN:NaN 2421b8851fccSafresh1+inf:inf 2422b8851fccSafresh1-inf:-inf 2423b8851fccSafresh11:1 2424b8851fccSafresh1-51:-51 2425b8851fccSafresh1-51.2:-51 2426b8851fccSafresh112.2:12 2427b8851fccSafresh1-0.4:0 2428b8851fccSafresh1# overloaded functions 2429b8851fccSafresh1 2430b8851fccSafresh1&log 2431b8851fccSafresh1-1:NaN 2432b8851fccSafresh10:-inf 2433b8851fccSafresh11:0 2434b8851fccSafresh12:0.6931471805599453094172321214581765680755 2435b8851fccSafresh13:1.098612288668109691395245236922525704647 2436b8851fccSafresh1123456789:18.63140176616801803319393334796320420971 2437b8851fccSafresh11234567890987654321:41.657252696908474880343847955484513481 2438b8851fccSafresh1-inf:inf 2439b8851fccSafresh1inf:inf 2440b8851fccSafresh1NaN:NaN 2441b8851fccSafresh1 2442b8851fccSafresh1&exp 2443b8851fccSafresh1 2444b8851fccSafresh1&sin 2445b8851fccSafresh1 2446b8851fccSafresh1&cos 2447b8851fccSafresh1 2448b8851fccSafresh1&atan2 2449b8851fccSafresh1 2450b8851fccSafresh1&int 2451b8851fccSafresh1 2452b8851fccSafresh1&neg 2453b8851fccSafresh1 2454b8851fccSafresh1&abs 2455b8851fccSafresh1 2456b8851fccSafresh1&sqrt 2457