1N/A# include this file into another for subclass testing
1N/A
1N/A# This file is nearly identical to bigintpm.t, except that certain results
1N/A# are _requird_ to be different due to "upgrading" or "promoting" to BigFloat.
1N/A# The reverse is not true, any unmarked results can be either BigInt or
1N/A# BigFloat, depending on how good the internal optimization is (e.g. it
1N/A# is usually desirable to have 2 ** 2 return a BigInt, not a BigFloat).
1N/A
1N/A# Results that are required to be BigFloat are marked with C<^> at the end.
1N/A
1N/A# Please note that the testcount goes up by two for each extra result marked
1N/A# with ^, since then we test whether it has the proper class and that it left
1N/A# the upgrade variable alone.
1N/A
1N/Amy $version = ${"$class\::VERSION"};
1N/A
1N/A##############################################################################
1N/A# for testing inheritance of _swap
1N/A
1N/Apackage Math::Foo;
1N/A
1N/Ause Math::BigInt lib => $main::CL;
1N/Ause vars qw/@ISA/;
1N/A@ISA = (qw/Math::BigInt/);
1N/A
1N/Ause overload
1N/A# customized overload for sub, since original does not use swap there
1N/A'-' => sub { my @a = ref($_[0])->_swap(@_);
1N/A $a[0]->bsub($a[1])};
1N/A
1N/Asub _swap
1N/A {
1N/A # a fake _swap, which reverses the params
1N/A my $self = shift; # for override in subclass
1N/A if ($_[2])
1N/A {
1N/A my $c = ref ($_[0] ) || 'Math::Foo';
1N/A return ( $_[0]->copy(), $_[1] );
1N/A }
1N/A else
1N/A {
1N/A return ( Math::Foo->new($_[1]), $_[0] );
1N/A }
1N/A }
1N/A
1N/A##############################################################################
1N/Apackage main;
1N/A
1N/Amy $CALC = $class->config()->{lib}; ok ($CALC,$CL);
1N/A
1N/Amy ($f,$z,$a,$exp,@a,$m,$e,$round_mode,$expected_class);
1N/A
1N/Awhile (<DATA>)
1N/A {
1N/A chomp;
1N/A next if /^#/; # skip comments
1N/A if (s/^&//)
1N/A {
1N/A $f = $_; next;
1N/A }
1N/A elsif (/^\$/)
1N/A {
1N/A $round_mode = $_; $round_mode =~ s/^\$/$class\->/; next;
1N/A }
1N/A
1N/A @args = split(/:/,$_,99); $ans = pop(@args);
1N/A $expected_class = $class;
1N/A if ($ans =~ /\^$/)
1N/A {
1N/A $expected_class = $ECL; $ans =~ s/\^$//;
1N/A }
1N/A $try = "\$x = $class->new(\"$args[0]\");";
1N/A if ($f eq "bnorm")
1N/A {
1N/A $try = "\$x = $class->bnorm(\"$args[0]\");";
1N/A # some is_xxx tests
1N/A } elsif ($f =~ /^is_(zero|one|odd|even|negative|positive|nan|int)$/) {
1N/A $try .= "\$x->$f();";
1N/A } elsif ($f eq "as_hex") {
1N/A $try .= '$x->as_hex();';
1N/A } elsif ($f eq "as_bin") {
1N/A $try .= '$x->as_bin();';
1N/A } elsif ($f eq "is_inf") {
1N/A $try .= "\$x->is_inf('$args[1]');";
1N/A } elsif ($f eq "binf") {
1N/A $try .= "\$x->binf('$args[1]');";
1N/A } elsif ($f eq "bone") {
1N/A $try .= "\$x->bone('$args[1]');";
1N/A # some unary ops
1N/A } elsif ($f =~ /^b(nan|floor|ceil|sstr|neg|abs|inc|dec|not|sqrt|fac)$/) {
1N/A $try .= "\$x->$f();";
1N/A } elsif ($f eq "length") {
1N/A $try .= '$x->length();';
1N/A } elsif ($f eq "exponent"){
1N/A # ->bstr() to see if an object is returned
1N/A $try .= '$x = $x->exponent()->bstr();';
1N/A } elsif ($f eq "mantissa"){
1N/A # ->bstr() to see if an object is returned
1N/A $try .= '$x = $x->mantissa()->bstr();';
1N/A } elsif ($f eq "parts"){
1N/A $try .= '($m,$e) = $x->parts();';
1N/A # ->bstr() to see if an object is returned
1N/A $try .= '$m = $m->bstr(); $m = "NaN" if !defined $m;';
1N/A $try .= '$e = $e->bstr(); $e = "NaN" if !defined $e;';
1N/A $try .= '"$m,$e";';
1N/A } else {
1N/A if ($args[1] !~ /\./)
1N/A {
1N/A $try .= "\$y = $class->new(\"$args[1]\");"; # BigInt
1N/A }
1N/A else
1N/A {
1N/A $try .= "\$y = $ECL->new(\"$args[1]\");"; # BigFloat
1N/A }
1N/A if ($f eq "bcmp")
1N/A {
1N/A $try .= '$x <=> $y;';
1N/A } elsif ($f eq "bround") {
1N/A $try .= "$round_mode; \$x->bround(\$y);";
1N/A } elsif ($f eq "broot") {
1N/A $try .= "\$x->broot(\$y);";
1N/A } elsif ($f eq "bacmp"){
1N/A $try .= '$x->bacmp($y);';
1N/A } elsif ($f eq "badd"){
1N/A $try .= '$x + $y;';
1N/A } elsif ($f eq "bsub"){
1N/A $try .= '$x - $y;';
1N/A } elsif ($f eq "bmul"){
1N/A $try .= '$x * $y;';
1N/A } elsif ($f eq "bdiv"){
1N/A $try .= '$x / $y;';
1N/A } elsif ($f eq "bdiv-list"){
1N/A $try .= 'join (",",$x->bdiv($y));';
1N/A # overload via x=
1N/A } elsif ($f =~ /^.=$/){
1N/A $try .= "\$x $f \$y;";
1N/A # overload via x
1N/A } elsif ($f =~ /^.$/){
1N/A $try .= "\$x $f \$y;";
1N/A } elsif ($f eq "bmod"){
1N/A $try .= '$x % $y;';
1N/A } elsif ($f eq "bgcd")
1N/A {
1N/A if (defined $args[2])
1N/A {
1N/A $try .= " \$z = $class->new('$args[2]'); ";
1N/A }
1N/A $try .= "$class\::bgcd(\$x, \$y";
1N/A $try .= ", \$z" if (defined $args[2]);
1N/A $try .= " );";
1N/A }
1N/A elsif ($f eq "blcm")
1N/A {
1N/A if (defined $args[2])
1N/A {
1N/A $try .= " \$z = $class->new('$args[2]'); ";
1N/A }
1N/A $try .= "$class\::blcm(\$x, \$y";
1N/A $try .= ", \$z" if (defined $args[2]);
1N/A $try .= " );";
1N/A }elsif ($f eq "blsft"){
1N/A if (defined $args[2])
1N/A {
1N/A $try .= "\$x->blsft(\$y,$args[2]);";
1N/A }
1N/A else
1N/A {
1N/A $try .= "\$x << \$y;";
1N/A }
1N/A }elsif ($f eq "brsft"){
1N/A if (defined $args[2])
1N/A {
1N/A $try .= "\$x->brsft(\$y,$args[2]);";
1N/A }
1N/A else
1N/A {
1N/A $try .= "\$x >> \$y;";
1N/A }
1N/A }elsif ($f eq "band"){
1N/A $try .= "\$x & \$y;";
1N/A }elsif ($f eq "bior"){
1N/A $try .= "\$x | \$y;";
1N/A }elsif ($f eq "bxor"){
1N/A $try .= "\$x ^ \$y;";
1N/A }elsif ($f eq "bpow"){
1N/A $try .= "\$x ** \$y;";
1N/A }elsif ($f eq "digit"){
1N/A $try = "\$x = $class->new('$args[0]'); \$x->digit($args[1]);";
1N/A } else { warn "Unknown op '$f'"; }
1N/A } # end else all other ops
1N/A
1N/A $ans1 = eval $try;
1N/A # convert hex/binary targets to decimal
1N/A if ($ans =~ /^(0x0x|0b0b)/)
1N/A {
1N/A $ans =~ s/^0[xb]//; $ans = Math::BigInt->new($ans)->bstr();
1N/A }
1N/A if ($ans eq "")
1N/A {
1N/A ok_undef ($ans1);
1N/A }
1N/A else
1N/A {
1N/A # print "try: $try ans: $ans1 $ans\n";
1N/A print "# Tried: '$try'\n" if !ok ($ans1, $ans);
1N/A if ($expected_class ne $class)
1N/A {
1N/A ok (ref($ans1),$expected_class); # also checks that it really is ref!
1N/A ok ($Math::BigInt::upgrade,'Math::BigFloat'); # still okay?
1N/A }
1N/A }
1N/A # check internal state of number objects
1N/A is_valid($ans1,$f) if ref $ans1;
1N/A } # endwhile data tests
1N/Aclose DATA;
1N/A
1N/Amy $warn = ''; $SIG{__WARN__} = sub { $warn = shift; };
1N/A
1N/A# these should not warn
1N/A$warn = ''; eval "\$z = 3.17 <= \$y"; ok ($z, 1); ok ($warn, '');
1N/A$warn = ''; eval "\$z = \$y >= 3.17"; ok ($z, 1); ok ($warn, '');
1N/A
1N/A# all tests done
1N/A
1N/A1;
1N/A
1N/A###############################################################################
1N/A###############################################################################
1N/A# Perl 5.005 does not like ok ($x,undef)
1N/A
1N/Asub ok_undef
1N/A {
1N/A my $x = shift;
1N/A
1N/A ok (1,1) and return if !defined $x;
1N/A ok ($x,'undef');
1N/A }
1N/A
1N/A###############################################################################
1N/A# sub to check validity of a BigInt internally, to ensure that no op leaves a
1N/A# number object in an invalid state (f.i. "-0")
1N/A
1N/Asub is_valid
1N/A {
1N/A my ($x,$f,$c) = @_;
1N/A
1N/A # The checks here are loosened a bit to allow BigInt or BigFloats to pass
1N/A
1N/A my $e = 0; # error?
1N/A # ok as reference?
1N/A # $e = "Not a reference to $c" if (ref($x) || '') ne $c;
1N/A
1N/A # has ok sign?
1N/A $e = "Illegal sign $x->{sign} (expected: '+', '-', '-inf', '+inf' or 'NaN'"
1N/A if $e eq '0' && $x->{sign} !~ /^(\+|-|\+inf|-inf|NaN)$/;
1N/A
1N/A $e = "-0 is invalid!" if $e ne '0' && $x->{sign} eq '-' && $x == 0;
1N/A #$e = $CALC->_check($x->{value}) if $e eq '0';
1N/A
1N/A # test done, see if error did crop up
1N/A ok (1,1), return if ($e eq '0');
1N/A
1N/A ok (1,$e." after op '$f'");
1N/A }
1N/A
1N/A__DATA__
1N/A&.=
1N/A1234:-345:1234-345
1N/A&+=
1N/A1:2:3
1N/A-1:-2:-3
1N/A&-=
1N/A1:2:-1
1N/A-1:-2:1
1N/A&*=
1N/A2:3:6
1N/A-1:5:-5
1N/A&%=
1N/A100:3:1
1N/A8:9:8
1N/A&/=
1N/A100:3:33.33333333333333333333333333333333333333
1N/A-8:2:-4
1N/A&|=
1N/A2:1:3
1N/A&&=
1N/A5:7:5
1N/A&^=
1N/A5:7:2
1N/A&is_negative
1N/A0:0
1N/A-1:1
1N/A1:0
1N/A+inf:0
1N/A-inf:1
1N/ANaNneg:0
1N/A&is_positive
1N/A0:1
1N/A-1:0
1N/A1:1
1N/A+inf:1
1N/A-inf:0
1N/ANaNneg:0
1N/A&is_odd
1N/Aabc:0
1N/A0:0
1N/A1:1
1N/A3:1
1N/A-1:1
1N/A-3:1
1N/A10000001:1
1N/A10000002:0
1N/A2:0
1N/A120:0
1N/A121:1
1N/A&is_int
1N/ANaN:0
1N/Ainf:0
1N/A-inf:0
1N/A1:1
1N/A12:1
1N/A123e12:1
1N/A&is_even
1N/Aabc:0
1N/A0:1
1N/A1:0
1N/A3:0
1N/A-1:0
1N/A-3:0
1N/A10000001:0
1N/A10000002:1
1N/A2:1
1N/A120:1
1N/A121:0
1N/A&bacmp
1N/A+0:-0:0
1N/A+0:+1:-1
1N/A-1:+1:0
1N/A+1:-1:0
1N/A-1:+2:-1
1N/A+2:-1:1
1N/A-123456789:+987654321:-1
1N/A+123456789:-987654321:-1
1N/A+987654321:+123456789:1
1N/A-987654321:+123456789:1
1N/A-123:+4567889:-1
1N/A# NaNs
1N/AacmpNaN:123:
1N/A123:acmpNaN:
1N/AacmpNaN:acmpNaN:
1N/A# infinity
1N/A+inf:+inf:0
1N/A-inf:-inf:0
1N/A+inf:-inf:0
1N/A-inf:+inf:0
1N/A+inf:123:1
1N/A-inf:123:1
1N/A+inf:-123:1
1N/A-inf:-123:1
1N/A# return undef
1N/A+inf:NaN:
1N/ANaN:inf:
1N/A-inf:NaN:
1N/ANaN:-inf:
1N/A&bnorm
1N/A123:123
1N/A12.3:12.3^
1N/A# binary input
1N/A0babc:NaN
1N/A0b123:NaN
1N/A0b0:0
1N/A-0b0:0
1N/A-0b1:-1
1N/A0b0001:1
1N/A0b001:1
1N/A0b011:3
1N/A0b101:5
1N/A0b1001:9
1N/A0b10001:17
1N/A0b100001:33
1N/A0b1000001:65
1N/A0b10000001:129
1N/A0b100000001:257
1N/A0b1000000001:513
1N/A0b10000000001:1025
1N/A0b100000000001:2049
1N/A0b1000000000001:4097
1N/A0b10000000000001:8193
1N/A0b100000000000001:16385
1N/A0b1000000000000001:32769
1N/A0b10000000000000001:65537
1N/A0b100000000000000001:131073
1N/A0b1000000000000000001:262145
1N/A0b10000000000000000001:524289
1N/A0b100000000000000000001:1048577
1N/A0b1000000000000000000001:2097153
1N/A0b10000000000000000000001:4194305
1N/A0b100000000000000000000001:8388609
1N/A0b1000000000000000000000001:16777217
1N/A0b10000000000000000000000001:33554433
1N/A0b100000000000000000000000001:67108865
1N/A0b1000000000000000000000000001:134217729
1N/A0b10000000000000000000000000001:268435457
1N/A0b100000000000000000000000000001:536870913
1N/A0b1000000000000000000000000000001:1073741825
1N/A0b10000000000000000000000000000001:2147483649
1N/A0b100000000000000000000000000000001:4294967297
1N/A0b1000000000000000000000000000000001:8589934593
1N/A0b10000000000000000000000000000000001:17179869185
1N/A0b_101:NaN
1N/A0b1_0_1:5
1N/A0b0_0_0_1:1
1N/A# hex input
1N/A-0x0:0
1N/A0xabcdefgh:NaN
1N/A0x1234:4660
1N/A0xabcdef:11259375
1N/A-0xABCDEF:-11259375
1N/A-0x1234:-4660
1N/A0x12345678:305419896
1N/A0x1_2_3_4_56_78:305419896
1N/A0xa_b_c_d_e_f:11259375
1N/A0x_123:NaN
1N/A0x9:9
1N/A0x11:17
1N/A0x21:33
1N/A0x41:65
1N/A0x81:129
1N/A0x101:257
1N/A0x201:513
1N/A0x401:1025
1N/A0x801:2049
1N/A0x1001:4097
1N/A0x2001:8193
1N/A0x4001:16385
1N/A0x8001:32769
1N/A0x10001:65537
1N/A0x20001:131073
1N/A0x40001:262145
1N/A0x80001:524289
1N/A0x100001:1048577
1N/A0x200001:2097153
1N/A0x400001:4194305
1N/A0x800001:8388609
1N/A0x1000001:16777217
1N/A0x2000001:33554433
1N/A0x4000001:67108865
1N/A0x8000001:134217729
1N/A0x10000001:268435457
1N/A0x20000001:536870913
1N/A0x40000001:1073741825
1N/A0x80000001:2147483649
1N/A0x100000001:4294967297
1N/A0x200000001:8589934593
1N/A0x400000001:17179869185
1N/A0x800000001:34359738369
1N/A# inf input
1N/Ainf:inf
1N/A+inf:inf
1N/A-inf:-inf
1N/A0inf:NaN
1N/A# abnormal input
1N/A:NaN
1N/Aabc:NaN
1N/A 1 a:NaN
1N/A1bcd2:NaN
1N/A11111b:NaN
1N/A+1z:NaN
1N/A-1z:NaN
1N/A# only one underscore between two digits
1N/A_123:NaN
1N/A_123_:NaN
1N/A123_:NaN
1N/A1__23:NaN
1N/A1E1__2:NaN
1N/A1_E12:NaN
1N/A1E_12:NaN
1N/A1_E_12:NaN
1N/A+_1E12:NaN
1N/A+0_1E2:100
1N/A+0_0_1E2:100
1N/A-0_0_1E2:-100
1N/A-0_0_1E+0_0_2:-100
1N/AE1:NaN
1N/AE23:NaN
1N/A1.23E1:12.3^
1N/A1.23E-1:0.123^
1N/A# bug with two E's in number beeing valid
1N/A1e2e3:NaN
1N/A1e2r:NaN
1N/A1e2.0:NaN
1N/A# leading zeros
1N/A012:12
1N/A0123:123
1N/A01234:1234
1N/A012345:12345
1N/A0123456:123456
1N/A01234567:1234567
1N/A012345678:12345678
1N/A0123456789:123456789
1N/A01234567891:1234567891
1N/A012345678912:12345678912
1N/A0123456789123:123456789123
1N/A01234567891234:1234567891234
1N/A# normal input
1N/A0:0
1N/A+0:0
1N/A+00:0
1N/A+000:0
1N/A000000000000000000:0
1N/A-0:0
1N/A-0000:0
1N/A+1:1
1N/A+01:1
1N/A+001:1
1N/A+00000100000:100000
1N/A123456789:123456789
1N/A-1:-1
1N/A-01:-1
1N/A-001:-1
1N/A-123456789:-123456789
1N/A-00000100000:-100000
1N/A1_2_3:123
1N/A10000000000E-1_0:1
1N/A1E2:100
1N/A1E1:10
1N/A1E0:1
1N/A1.23E2:123
1N/A100E-1:10
1N/A# floating point input
1N/A# .2e2:20
1N/A1.E3:1000
1N/A1.01E2:101
1N/A1010E-1:101
1N/A-1010E0:-1010
1N/A-1010E1:-10100
1N/A1234.00:1234
1N/A# non-integer numbers
1N/A-1010E-2:-10.1^
1N/A-1.01E+1:-10.1^
1N/A-1.01E-1:-0.101^
1N/A&bnan
1N/A1:NaN
1N/A2:NaN
1N/Aabc:NaN
1N/A&bone
1N/A2:+:1
1N/A2:-:-1
1N/AboneNaN:-:-1
1N/AboneNaN:+:1
1N/A2:abc:1
1N/A3::1
1N/A&binf
1N/A1:+:inf
1N/A2:-:-inf
1N/A3:abc:inf
1N/A&is_nan
1N/A123:0
1N/Aabc:1
1N/ANaN:1
1N/A-123:0
1N/A&is_inf
1N/A+inf::1
1N/A-inf::1
1N/Aabc::0
1N/A1::0
1N/ANaN::0
1N/A-1::0
1N/A+inf:-:0
1N/A+inf:+:1
1N/A-inf:-:1
1N/A-inf:+:0
1N/A# it must be exactly /^[+-]inf$/
1N/A+infinity::0
1N/A-infinity::0
1N/A&blsft
1N/Aabc:abc:NaN
1N/A+2:+2:8
1N/A+1:+32:4294967296
1N/A+1:+48:281474976710656
1N/A+8:-2:NaN
1N/A# excercise base 10
1N/A+12345:4:10:123450000
1N/A-1234:0:10:-1234
1N/A+1234:0:10:1234
1N/A+2:2:10:200
1N/A+12:2:10:1200
1N/A+1234:-3:10:NaN
1N/A1234567890123:12:10:1234567890123000000000000
1N/A&brsft
1N/Aabc:abc:NaN
1N/A+8:+2:2
1N/A+4294967296:+32:1
1N/A+281474976710656:+48:1
1N/A+2:-2:NaN
1N/A# excercise base 10
1N/A-1234:0:10:-1234
1N/A+1234:0:10:1234
1N/A+200:2:10:2
1N/A+1234:3:10:1
1N/A+1234:2:10:12
1N/A+1234:-3:10:NaN
1N/A310000:4:10:31
1N/A12300000:5:10:123
1N/A1230000000000:10:10:123
1N/A09876123456789067890:12:10:9876123
1N/A1234561234567890123:13:10:123456
1N/A&bsstr
1N/A1e+34:1e+34
1N/A123.456E3:123456e+0
1N/A100:1e+2
1N/Aabc:NaN
1N/A&bneg
1N/AbnegNaN:NaN
1N/A+inf:-inf
1N/A-inf:inf
1N/Aabd:NaN
1N/A0:0
1N/A1:-1
1N/A-1:1
1N/A+123456789:-123456789
1N/A-123456789:123456789
1N/A&babs
1N/AbabsNaN:NaN
1N/A+inf:inf
1N/A-inf:inf
1N/A0:0
1N/A1:1
1N/A-1:1
1N/A+123456789:123456789
1N/A-123456789:123456789
1N/A&bcmp
1N/AbcmpNaN:bcmpNaN:
1N/AbcmpNaN:0:
1N/A0:bcmpNaN:
1N/A0:0:0
1N/A-1:0:-1
1N/A0:-1:1
1N/A1:0:1
1N/A0:1:-1
1N/A-1:1:-1
1N/A1:-1:1
1N/A-1:-1:0
1N/A1:1:0
1N/A123:123:0
1N/A123:12:1
1N/A12:123:-1
1N/A-123:-123:0
1N/A-123:-12:-1
1N/A-12:-123:1
1N/A123:124:-1
1N/A124:123:1
1N/A-123:-124:1
1N/A-124:-123:-1
1N/A100:5:1
1N/A-123456789:987654321:-1
1N/A+123456789:-987654321:1
1N/A-987654321:123456789:-1
1N/A-inf:5432112345:-1
1N/A+inf:5432112345:1
1N/A-inf:-5432112345:-1
1N/A+inf:-5432112345:1
1N/A+inf:+inf:0
1N/A-inf:-inf:0
1N/A+inf:-inf:1
1N/A-inf:+inf:-1
1N/A5:inf:-1
1N/A5:inf:-1
1N/A-5:-inf:1
1N/A-5:-inf:1
1N/A# return undef
1N/A+inf:NaN:
1N/ANaN:inf:
1N/A-inf:NaN:
1N/ANaN:-inf:
1N/A&binc
1N/Aabc:NaN
1N/A+inf:inf
1N/A-inf:-inf
1N/A+0:1
1N/A+1:2
1N/A-1:0
1N/A&bdec
1N/Aabc:NaN
1N/A+inf:inf
1N/A-inf:-inf
1N/A+0:-1
1N/A+1:0
1N/A-1:-2
1N/A&badd
1N/Aabc:abc:NaN
1N/Aabc:0:NaN
1N/A+0:abc:NaN
1N/A+inf:-inf:NaN
1N/A-inf:+inf:NaN
1N/A+inf:+inf:inf
1N/A-inf:-inf:-inf
1N/AbaddNaN:+inf:NaN
1N/AbaddNaN:+inf:NaN
1N/A+inf:baddNaN:NaN
1N/A-inf:baddNaN:NaN
1N/A0:0:0
1N/A1:0:1
1N/A0:1:1
1N/A1:1:2
1N/A-1:0:-1
1N/A0:-1:-1
1N/A-1:-1:-2
1N/A-1:+1:0
1N/A+1:-1:0
1N/A+9:+1:10
1N/A+99:+1:100
1N/A+999:+1:1000
1N/A+9999:+1:10000
1N/A+99999:+1:100000
1N/A+999999:+1:1000000
1N/A+9999999:+1:10000000
1N/A+99999999:+1:100000000
1N/A+999999999:+1:1000000000
1N/A+9999999999:+1:10000000000
1N/A+99999999999:+1:100000000000
1N/A+10:-1:9
1N/A+100:-1:99
1N/A+1000:-1:999
1N/A+10000:-1:9999
1N/A+100000:-1:99999
1N/A+1000000:-1:999999
1N/A+10000000:-1:9999999
1N/A+100000000:-1:99999999
1N/A+1000000000:-1:999999999
1N/A+10000000000:-1:9999999999
1N/A+123456789:987654321:1111111110
1N/A-123456789:987654321:864197532
1N/A-123456789:-987654321:-1111111110
1N/A+123456789:-987654321:-864197532
1N/A2:2.5:4.5^
1N/A-123:-1.5:-124.5^
1N/A-1.2:1:-0.2^
1N/A&bsub
1N/Aabc:abc:NaN
1N/Aabc:+0:NaN
1N/A+0:abc:NaN
1N/A+inf:-inf:inf
1N/A-inf:+inf:-inf
1N/A+inf:+inf:NaN
1N/A-inf:-inf:NaN
1N/A+0:+0:0
1N/A+1:+0:1
1N/A+0:+1:-1
1N/A+1:+1:0
1N/A-1:+0:-1
1N/A+0:-1:1
1N/A-1:-1:0
1N/A-1:+1:-2
1N/A+1:-1:2
1N/A+9:+1:8
1N/A+99:+1:98
1N/A+999:+1:998
1N/A+9999:+1:9998
1N/A+99999:+1:99998
1N/A+999999:+1:999998
1N/A+9999999:+1:9999998
1N/A+99999999:+1:99999998
1N/A+999999999:+1:999999998
1N/A+9999999999:+1:9999999998
1N/A+99999999999:+1:99999999998
1N/A+10:-1:11
1N/A+100:-1:101
1N/A+1000:-1:1001
1N/A+10000:-1:10001
1N/A+100000:-1:100001
1N/A+1000000:-1:1000001
1N/A+10000000:-1:10000001
1N/A+100000000:-1:100000001
1N/A+1000000000:-1:1000000001
1N/A+10000000000:-1:10000000001
1N/A+123456789:+987654321:-864197532
1N/A-123456789:+987654321:-1111111110
1N/A-123456789:-987654321:864197532
1N/A+123456789:-987654321:1111111110
1N/A&bmul
1N/Aabc:abc:NaN
1N/Aabc:+0:NaN
1N/A+0:abc:NaN
1N/ANaNmul:+inf:NaN
1N/ANaNmul:-inf:NaN
1N/A-inf:NaNmul:NaN
1N/A+inf:NaNmul:NaN
1N/A+inf:+inf:inf
1N/A+inf:-inf:-inf
1N/A-inf:+inf:-inf
1N/A-inf:-inf:inf
1N/A+0:+0:0
1N/A+0:+1:0
1N/A+1:+0:0
1N/A+0:-1:0
1N/A-1:+0:0
1N/A123456789123456789:0:0
1N/A0:123456789123456789:0
1N/A-1:-1:1
1N/A-1:+1:-1
1N/A+1:-1:-1
1N/A+1:+1:1
1N/A+2:+3:6
1N/A-2:+3:-6
1N/A+2:-3:-6
1N/A-2:-3:6
1N/A111:111:12321
1N/A10101:10101:102030201
1N/A1001001:1001001:1002003002001
1N/A100010001:100010001:10002000300020001
1N/A10000100001:10000100001:100002000030000200001
1N/A11111111111:9:99999999999
1N/A22222222222:9:199999999998
1N/A33333333333:9:299999999997
1N/A44444444444:9:399999999996
1N/A55555555555:9:499999999995
1N/A66666666666:9:599999999994
1N/A77777777777:9:699999999993
1N/A88888888888:9:799999999992
1N/A99999999999:9:899999999991
1N/A+25:+25:625
1N/A+12345:+12345:152399025
1N/A+99999:+11111:1111088889
1N/A9999:10000:99990000
1N/A99999:100000:9999900000
1N/A999999:1000000:999999000000
1N/A9999999:10000000:99999990000000
1N/A99999999:100000000:9999999900000000
1N/A999999999:1000000000:999999999000000000
1N/A9999999999:10000000000:99999999990000000000
1N/A99999999999:100000000000:9999999999900000000000
1N/A999999999999:1000000000000:999999999999000000000000
1N/A9999999999999:10000000000000:99999999999990000000000000
1N/A99999999999999:100000000000000:9999999999999900000000000000
1N/A999999999999999:1000000000000000:999999999999999000000000000000
1N/A9999999999999999:10000000000000000:99999999999999990000000000000000
1N/A99999999999999999:100000000000000000:9999999999999999900000000000000000
1N/A999999999999999999:1000000000000000000:999999999999999999000000000000000000
1N/A9999999999999999999:10000000000000000000:99999999999999999990000000000000000000
1N/A3:3.5:10.5^
1N/A3.5:3:10.5^
1N/A&bdiv-list
1N/A100:20:5,0
1N/A4095:4095:1,0
1N/A-4095:-4095:1,0
1N/A4095:-4095:-1,0
1N/A-4095:4095:-1,0
1N/A123:2:61.5,1
1N/A9:5:1.8,4
1N/A9:4:2.25,1
1N/A# inf handling and general remainder
1N/A5:8:0.625,5
1N/A0:8:0,0
1N/A11:2:5.5,1
1N/A11:-2:-5.5,-1
1N/A-11:2:-5.5,1
1N/A# see table in documentation in MBI
1N/A0:inf:0,0
1N/A0:-inf:0,0
1N/A5:inf:0,5
1N/A5:-inf:0,5
1N/A-5:inf:0,-5
1N/A-5:-inf:0,-5
1N/Ainf:5:inf,0
1N/A-inf:5:-inf,0
1N/Ainf:-5:-inf,0
1N/A-inf:-5:inf,0
1N/A5:5:1,0
1N/A-5:-5:1,0
1N/Ainf:inf:NaN,NaN
1N/A-inf:-inf:NaN,NaN
1N/A-inf:inf:NaN,NaN
1N/Ainf:-inf:NaN,NaN
1N/A8:0:inf,8
1N/Ainf:0:inf,inf
1N/A# exceptions to reminder rule
1N/A-8:0:-inf,-8
1N/A-inf:0:-inf,-inf
1N/A0:0:NaN,NaN
1N/A&bdiv
1N/Aabc:abc:NaN
1N/Aabc:1:NaN
1N/A1:abc:NaN
1N/A0:0:NaN
1N/A# inf handling (see table in doc)
1N/A0:inf:0
1N/A0:-inf:0
1N/A5:inf:0
1N/A5:-inf:0
1N/A-5:inf:0
1N/A-5:-inf:0
1N/Ainf:5:inf
1N/A-inf:5:-inf
1N/Ainf:-5:-inf
1N/A-inf:-5:inf
1N/A5:5:1
1N/A-5:-5:1
1N/Ainf:inf:NaN
1N/A-inf:-inf:NaN
1N/A-inf:inf:NaN
1N/Ainf:-inf:NaN
1N/A8:0:inf
1N/Ainf:0:inf
1N/A-8:0:-inf
1N/A-inf:0:-inf
1N/A0:0:NaN
1N/A11:2:5.5^
1N/A-11:-2:5.5^
1N/A-11:2:-5.5^
1N/A11:-2:-5.5^
1N/A0:1:0
1N/A0:-1:0
1N/A1:1:1
1N/A-1:-1:1
1N/A1:-1:-1
1N/A-1:1:-1
1N/A1:2:0.5^
1N/A2:1:2
1N/A1000000000:9:111111111.1111111111111111111111111111111^
1N/A2000000000:9:222222222.2222222222222222222222222222222^
1N/A3000000000:9:333333333.3333333333333333333333333333333^
1N/A4000000000:9:444444444.4444444444444444444444444444444^
1N/A5000000000:9:555555555.5555555555555555555555555555556^
1N/A6000000000:9:666666666.6666666666666666666666666666667^
1N/A7000000000:9:777777777.7777777777777777777777777777778^
1N/A8000000000:9:888888888.8888888888888888888888888888889^
1N/A9000000000:9:1000000000
1N/A35500000:113:314159.2920353982300884955752212389380531^
1N/A71000000:226:314159.2920353982300884955752212389380531^
1N/A106500000:339:314159.2920353982300884955752212389380531^
1N/A1000000000:3:333333333.3333333333333333333333333333333^
1N/A+10:+5:2
1N/A+100:+4:25
1N/A+1000:+8:125
1N/A+10000:+16:625
1N/A999999999999:9:111111111111
1N/A999999999999:99:10101010101
1N/A999999999999:999:1001001001
1N/A999999999999:9999:100010001
1N/A999999999999999:99999:10000100001
1N/A+1111088889:99999:11111
1N/A-5:-3:1.666666666666666666666666666666666666667^
1N/A-5:3:-1.666666666666666666666666666666666666667^
1N/A4:3:1.333333333333333333333333333333333333333^
1N/A4:-3:-1.333333333333333333333333333333333333333^
1N/A1:3:0.3333333333333333333333333333333333333333^
1N/A1:-3:-0.3333333333333333333333333333333333333333^
1N/A-2:-3:0.6666666666666666666666666666666666666667^
1N/A-2:3:-0.6666666666666666666666666666666666666667^
1N/A8:5:1.6^
1N/A-8:5:-1.6^
1N/A14:-3:-4.666666666666666666666666666666666666667^
1N/A-14:3:-4.666666666666666666666666666666666666667^
1N/A-14:-3:4.666666666666666666666666666666666666667^
1N/A14:3:4.666666666666666666666666666666666666667^
1N/A# bug in Calc with '99999' vs $BASE-1
1N/A#10000000000000000000000000000000000000000000000000000000000000000000000000000000000:10000000375084540248994272022843165711074:999999962491547381984643365663244474111576
1N/A12:24:0.5^
1N/A&bmod
1N/A# inf handling, see table in doc
1N/A0:inf:0
1N/A0:-inf:0
1N/A5:inf:5
1N/A5:-inf:5
1N/A-5:inf:-5
1N/A-5:-inf:-5
1N/Ainf:5:0
1N/A-inf:5:0
1N/Ainf:-5:0
1N/A-inf:-5:0
1N/A5:5:0
1N/A-5:-5:0
1N/Ainf:inf:NaN
1N/A-inf:-inf:NaN
1N/A-inf:inf:NaN
1N/Ainf:-inf:NaN
1N/A8:0:8
1N/Ainf:0:inf
1N/A# exceptions to reminder rule
1N/A-inf:0:-inf
1N/A-8:0:-8
1N/A0:0:NaN
1N/Aabc:abc:NaN
1N/Aabc:1:abc:NaN
1N/A1:abc:NaN
1N/A0:0:NaN
1N/A0:1:0
1N/A1:0:1
1N/A0:-1:0
1N/A-1:0:-1
1N/A1:1:0
1N/A-1:-1:0
1N/A1:-1:0
1N/A-1:1:0
1N/A1:2:1
1N/A2:1:0
1N/A1000000000:9:1
1N/A2000000000:9:2
1N/A3000000000:9:3
1N/A4000000000:9:4
1N/A5000000000:9:5
1N/A6000000000:9:6
1N/A7000000000:9:7
1N/A8000000000:9:8
1N/A9000000000:9:0
1N/A35500000:113:33
1N/A71000000:226:66
1N/A106500000:339:99
1N/A1000000000:3:1
1N/A10:5:0
1N/A100:4:0
1N/A1000:8:0
1N/A10000:16:0
1N/A999999999999:9:0
1N/A999999999999:99:0
1N/A999999999999:999:0
1N/A999999999999:9999:0
1N/A999999999999999:99999:0
1N/A-9:+5:1
1N/A+9:-5:-1
1N/A-9:-5:-4
1N/A-5:3:1
1N/A-2:3:1
1N/A4:3:1
1N/A1:3:1
1N/A-5:-3:-2
1N/A-2:-3:-2
1N/A4:-3:-2
1N/A1:-3:-2
1N/A4095:4095:0
1N/A100041000510123:3:0
1N/A152403346:12345:4321
1N/A9:5:4
1N/A&bgcd
1N/Aabc:abc:NaN
1N/Aabc:+0:NaN
1N/A+0:abc:NaN
1N/A+0:+0:0
1N/A+0:+1:1
1N/A+1:+0:1
1N/A+1:+1:1
1N/A+2:+3:1
1N/A+3:+2:1
1N/A-3:+2:1
1N/A100:625:25
1N/A4096:81:1
1N/A1034:804:2
1N/A27:90:56:1
1N/A27:90:54:9
1N/A&blcm
1N/Aabc:abc:NaN
1N/Aabc:+0:NaN
1N/A+0:abc:NaN
1N/A+0:+0:NaN
1N/A+1:+0:0
1N/A+0:+1:0
1N/A+27:+90:270
1N/A+1034:+804:415668
1N/A&band
1N/Aabc:abc:NaN
1N/Aabc:0:NaN
1N/A0:abc:NaN
1N/A1:2:0
1N/A3:2:2
1N/A+8:+2:0
1N/A+281474976710656:0:0
1N/A+281474976710656:1:0
1N/A+281474976710656:+281474976710656:281474976710656
1N/A-2:-3:-4
1N/A-1:-1:-1
1N/A-6:-6:-6
1N/A-7:-4:-8
1N/A-7:4:0
1N/A-4:7:4
1N/A# equal arguments are treated special, so also do some test with unequal ones
1N/A0xFFFF:0xFFFF:0x0xFFFF
1N/A0xFFFFFF:0xFFFFFF:0x0xFFFFFF
1N/A0xFFFFFFFF:0xFFFFFFFF:0x0xFFFFFFFF
1N/A0xFFFFFFFFFF:0xFFFFFFFFFF:0x0xFFFFFFFFFF
1N/A0xFFFFFFFFFFFF:0xFFFFFFFFFFFF:0x0xFFFFFFFFFFFF
1N/A0xF0F0:0xF0F0:0x0xF0F0
1N/A0x0F0F:0x0F0F:0x0x0F0F
1N/A0xF0F0F0:0xF0F0F0:0x0xF0F0F0
1N/A0x0F0F0F:0x0F0F0F:0x0x0F0F0F
1N/A0xF0F0F0F0:0xF0F0F0F0:0x0xF0F0F0F0
1N/A0x0F0F0F0F:0x0F0F0F0F:0x0x0F0F0F0F
1N/A0xF0F0F0F0F0:0xF0F0F0F0F0:0x0xF0F0F0F0F0
1N/A0x0F0F0F0F0F:0x0F0F0F0F0F:0x0x0F0F0F0F0F
1N/A0xF0F0F0F0F0F0:0xF0F0F0F0F0F0:0x0xF0F0F0F0F0F0
1N/A0x0F0F0F0F0F0F:0x0F0F0F0F0F0F:0x0x0F0F0F0F0F0F
1N/A0x1F0F0F0F0F0F:0x3F0F0F0F0F0F:0x0x1F0F0F0F0F0F
1N/A&bior
1N/Aabc:abc:NaN
1N/Aabc:0:NaN
1N/A0:abc:NaN
1N/A1:2:3
1N/A+8:+2:10
1N/A+281474976710656:0:281474976710656
1N/A+281474976710656:1:281474976710657
1N/A+281474976710656:281474976710656:281474976710656
1N/A-2:-3:-1
1N/A-1:-1:-1
1N/A-6:-6:-6
1N/A-7:4:-3
1N/A-4:7:-1
1N/A# equal arguments are treated special, so also do some test with unequal ones
1N/A0xFFFF:0xFFFF:0x0xFFFF
1N/A0xFFFFFF:0xFFFFFF:0x0xFFFFFF
1N/A0xFFFFFFFF:0xFFFFFFFF:0x0xFFFFFFFF
1N/A0xFFFFFFFFFF:0xFFFFFFFFFF:0x0xFFFFFFFFFF
1N/A0xFFFFFFFFFFFF:0xFFFFFFFFFFFF:0x0xFFFFFFFFFFFF
1N/A0:0xFFFF:0x0xFFFF
1N/A0:0xFFFFFF:0x0xFFFFFF
1N/A0:0xFFFFFFFF:0x0xFFFFFFFF
1N/A0:0xFFFFFFFFFF:0x0xFFFFFFFFFF
1N/A0:0xFFFFFFFFFFFF:0x0xFFFFFFFFFFFF
1N/A0xFFFF:0:0x0xFFFF
1N/A0xFFFFFF:0:0x0xFFFFFF
1N/A0xFFFFFFFF:0:0x0xFFFFFFFF
1N/A0xFFFFFFFFFF:0:0x0xFFFFFFFFFF
1N/A0xFFFFFFFFFFFF:0:0x0xFFFFFFFFFFFF
1N/A0xF0F0:0xF0F0:0x0xF0F0
1N/A0x0F0F:0x0F0F:0x0x0F0F
1N/A0xF0F0:0x0F0F:0x0xFFFF
1N/A0xF0F0F0:0xF0F0F0:0x0xF0F0F0
1N/A0x0F0F0F:0x0F0F0F:0x0x0F0F0F
1N/A0x0F0F0F:0xF0F0F0:0x0xFFFFFF
1N/A0xF0F0F0F0:0xF0F0F0F0:0x0xF0F0F0F0
1N/A0x0F0F0F0F:0x0F0F0F0F:0x0x0F0F0F0F
1N/A0x0F0F0F0F:0xF0F0F0F0:0x0xFFFFFFFF
1N/A0xF0F0F0F0F0:0xF0F0F0F0F0:0x0xF0F0F0F0F0
1N/A0x0F0F0F0F0F:0x0F0F0F0F0F:0x0x0F0F0F0F0F
1N/A0x0F0F0F0F0F:0xF0F0F0F0F0:0x0xFFFFFFFFFF
1N/A0xF0F0F0F0F0F0:0xF0F0F0F0F0F0:0x0xF0F0F0F0F0F0
1N/A0x0F0F0F0F0F0F:0x0F0F0F0F0F0F:0x0x0F0F0F0F0F0F
1N/A0x0F0F0F0F0F0F:0xF0F0F0F0F0F0:0x0xFFFFFFFFFFFF
1N/A0x1F0F0F0F0F0F:0xF0F0F0F0F0F0:0x0xFFFFFFFFFFFF
1N/A&bxor
1N/Aabc:abc:NaN
1N/Aabc:0:NaN
1N/A0:abc:NaN
1N/A1:2:3
1N/A+8:+2:10
1N/A+281474976710656:0:281474976710656
1N/A+281474976710656:1:281474976710657
1N/A+281474976710656:281474976710656:0
1N/A-2:-3:3
1N/A-1:-1:0
1N/A-6:-6:0
1N/A-7:4:-3
1N/A-4:7:-5
1N/A4:-7:-3
1N/A-4:-7:5
1N/A# equal arguments are treated special, so also do some test with unequal ones
1N/A0xFFFF:0xFFFF:0
1N/A0xFFFFFF:0xFFFFFF:0
1N/A0xFFFFFFFF:0xFFFFFFFF:0
1N/A0xFFFFFFFFFF:0xFFFFFFFFFF:0
1N/A0xFFFFFFFFFFFF:0xFFFFFFFFFFFF:0
1N/A0:0xFFFF:0x0xFFFF
1N/A0:0xFFFFFF:0x0xFFFFFF
1N/A0:0xFFFFFFFF:0x0xFFFFFFFF
1N/A0:0xFFFFFFFFFF:0x0xFFFFFFFFFF
1N/A0:0xFFFFFFFFFFFF:0x0xFFFFFFFFFFFF
1N/A0xFFFF:0:0x0xFFFF
1N/A0xFFFFFF:0:0x0xFFFFFF
1N/A0xFFFFFFFF:0:0x0xFFFFFFFF
1N/A0xFFFFFFFFFF:0:0x0xFFFFFFFFFF
1N/A0xFFFFFFFFFFFF:0:0x0xFFFFFFFFFFFF
1N/A0xF0F0:0xF0F0:0
1N/A0x0F0F:0x0F0F:0
1N/A0xF0F0:0x0F0F:0x0xFFFF
1N/A0xF0F0F0:0xF0F0F0:0
1N/A0x0F0F0F:0x0F0F0F:0
1N/A0x0F0F0F:0xF0F0F0:0x0xFFFFFF
1N/A0xF0F0F0F0:0xF0F0F0F0:0
1N/A0x0F0F0F0F:0x0F0F0F0F:0
1N/A0x0F0F0F0F:0xF0F0F0F0:0x0xFFFFFFFF
1N/A0xF0F0F0F0F0:0xF0F0F0F0F0:0
1N/A0x0F0F0F0F0F:0x0F0F0F0F0F:0
1N/A0x0F0F0F0F0F:0xF0F0F0F0F0:0x0xFFFFFFFFFF
1N/A0xF0F0F0F0F0F0:0xF0F0F0F0F0F0:0
1N/A0x0F0F0F0F0F0F:0x0F0F0F0F0F0F:0
1N/A0x0F0F0F0F0F0F:0xF0F0F0F0F0F0:0x0xFFFFFFFFFFFF
1N/A&bnot
1N/Aabc:NaN
1N/A+0:-1
1N/A+8:-9
1N/A+281474976710656:-281474976710657
1N/A-1:0
1N/A-2:1
1N/A-12:11
1N/A&digit
1N/A0:0:0
1N/A12:0:2
1N/A12:1:1
1N/A123:0:3
1N/A123:1:2
1N/A123:2:1
1N/A123:-1:1
1N/A123:-2:2
1N/A123:-3:3
1N/A123456:0:6
1N/A123456:1:5
1N/A123456:2:4
1N/A123456:3:3
1N/A123456:4:2
1N/A123456:5:1
1N/A123456:-1:1
1N/A123456:-2:2
1N/A123456:-3:3
1N/A100000:-3:0
1N/A100000:0:0
1N/A100000:1:0
1N/A&mantissa
1N/Aabc:NaN
1N/A1e4:1
1N/A2e0:2
1N/A123:123
1N/A-1:-1
1N/A-2:-2
1N/A+inf:inf
1N/A-inf:-inf
1N/A&exponent
1N/Aabc:NaN
1N/A1e4:4
1N/A2e0:0
1N/A123:0
1N/A-1:0
1N/A-2:0
1N/A0:1
1N/A+inf:inf
1N/A-inf:inf
1N/A&parts
1N/Aabc:NaN,NaN
1N/A1e4:1,4
1N/A2e0:2,0
1N/A123:123,0
1N/A-1:-1,0
1N/A-2:-2,0
1N/A0:0,1
1N/A+inf:inf,inf
1N/A-inf:-inf,inf
1N/A&bfac
1N/A-1:NaN
1N/ANaNfac:NaN
1N/A+inf:inf
1N/A-inf:NaN
1N/A0:1
1N/A1:1
1N/A2:2
1N/A3:6
1N/A4:24
1N/A5:120
1N/A6:720
1N/A10:3628800
1N/A11:39916800
1N/A12:479001600
1N/A&bpow
1N/Aabc:12:NaN
1N/A12:abc:NaN
1N/A0:0:1
1N/A0:1:0
1N/A0:2:0
1N/A0:-1:inf
1N/A0:-2:inf
1N/A1:0:1
1N/A1:1:1
1N/A1:2:1
1N/A1:3:1
1N/A1:-1:1
1N/A1:-2:1
1N/A1:-3:1
1N/A2:0:1
1N/A2:1:2
1N/A2:2:4
1N/A2:3:8
1N/A3:3:27
1N/A2:-1:NaN
1N/A-2:-1:NaN
1N/A2:-2:NaN
1N/A-2:-2:NaN
1N/A+inf:1234500012:inf
1N/A-inf:1234500012:-inf
1N/A+inf:-12345000123:inf
1N/A-inf:-12345000123:-inf
1N/A# 1 ** -x => 1 / (1 ** x)
1N/A-1:0:1
1N/A-2:0:1
1N/A-1:1:-1
1N/A-1:2:1
1N/A-1:3:-1
1N/A-1:4:1
1N/A-1:5:-1
1N/A-1:-1:-1
1N/A-1:-2:1
1N/A-1:-3:-1
1N/A-1:-4:1
1N/A-2:2:4
1N/A-2:3:-8
1N/A-2:4:16
1N/A-2:5:-32
1N/A-3:2:9
1N/A-3:3:-27
1N/A-3:4:81
1N/A-3:5:-243
1N/A10:2:100
1N/A10:3:1000
1N/A10:4:10000
1N/A10:5:100000
1N/A10:6:1000000
1N/A10:7:10000000
1N/A10:8:100000000
1N/A10:9:1000000000
1N/A10:20:100000000000000000000
1N/A123456:2:15241383936
1N/A#2:0.5:1.41^
1N/A&length
1N/A100:3
1N/A10:2
1N/A1:1
1N/A0:1
1N/A12345:5
1N/A10000000000000000:17
1N/A-123:3
1N/A215960156869840440586892398248:30
1N/A# broot always upgrades
1N/A&broot
1N/A144:2:12^
1N/A123:2:11.09053650640941716205160010260993291846^
1N/A# bsqrt always upgrades
1N/A&bsqrt
1N/A145:12.04159457879229548012824103037860805243^
1N/A144:12^
1N/A143:11.95826074310139802112984075619561661399^
1N/A16:4
1N/A170:13.03840481040529742916594311485836883306^
1N/A169:13
1N/A168:12.96148139681572046193193487217599331541^
1N/A4:2
1N/A3:1.732050807568877293527446341505872366943^
1N/A2:1.41421356237309504880168872420969807857^
1N/A9:3
1N/A12:3.464101615137754587054892683011744733886^
1N/A256:16
1N/A100000000:10000
1N/A4000000000000:2000000
1N/A152399026:12345.00004050222755607815159966235881398^
1N/A152399025:12345
1N/A152399024:12344.99995949777231103967404745303741942^
1N/A1:1
1N/A0:0
1N/A-2:NaN
1N/A-123:NaN
1N/ANan:NaN
1N/A+inf:inf
1N/A-inf:NaN
1N/A&bround
1N/A$round_mode('trunc')
1N/A0:12:0
1N/ANaNbround:12:NaN
1N/A+inf:12:inf
1N/A-inf:12:-inf
1N/A1234:0:1234
1N/A1234:2:1200
1N/A123456:4:123400
1N/A123456:5:123450
1N/A123456:6:123456
1N/A+10123456789:5:10123000000
1N/A-10123456789:5:-10123000000
1N/A+10123456789:9:10123456700
1N/A-10123456789:9:-10123456700
1N/A+101234500:6:101234000
1N/A-101234500:6:-101234000
1N/A#+101234500:-4:101234000
1N/A#-101234500:-4:-101234000
1N/A$round_mode('zero')
1N/A+20123456789:5:20123000000
1N/A-20123456789:5:-20123000000
1N/A+20123456789:9:20123456800
1N/A-20123456789:9:-20123456800
1N/A+201234500:6:201234000
1N/A-201234500:6:-201234000
1N/A#+201234500:-4:201234000
1N/A#-201234500:-4:-201234000
1N/A+12345000:4:12340000
1N/A-12345000:4:-12340000
1N/A$round_mode('+inf')
1N/A+30123456789:5:30123000000
1N/A-30123456789:5:-30123000000
1N/A+30123456789:9:30123456800
1N/A-30123456789:9:-30123456800
1N/A+301234500:6:301235000
1N/A-301234500:6:-301234000
1N/A#+301234500:-4:301235000
1N/A#-301234500:-4:-301234000
1N/A+12345000:4:12350000
1N/A-12345000:4:-12340000
1N/A$round_mode('-inf')
1N/A+40123456789:5:40123000000
1N/A-40123456789:5:-40123000000
1N/A+40123456789:9:40123456800
1N/A-40123456789:9:-40123456800
1N/A+401234500:6:401234000
1N/A+401234500:6:401234000
1N/A#-401234500:-4:-401235000
1N/A#-401234500:-4:-401235000
1N/A+12345000:4:12340000
1N/A-12345000:4:-12350000
1N/A$round_mode('odd')
1N/A+50123456789:5:50123000000
1N/A-50123456789:5:-50123000000
1N/A+50123456789:9:50123456800
1N/A-50123456789:9:-50123456800
1N/A+501234500:6:501235000
1N/A-501234500:6:-501235000
1N/A#+501234500:-4:501235000
1N/A#-501234500:-4:-501235000
1N/A+12345000:4:12350000
1N/A-12345000:4:-12350000
1N/A$round_mode('even')
1N/A+60123456789:5:60123000000
1N/A-60123456789:5:-60123000000
1N/A+60123456789:9:60123456800
1N/A-60123456789:9:-60123456800
1N/A+601234500:6:601234000
1N/A-601234500:6:-601234000
1N/A#+601234500:-4:601234000
1N/A#-601234500:-4:-601234000
1N/A#-601234500:-9:0
1N/A#-501234500:-9:0
1N/A#-601234500:-8:0
1N/A#-501234500:-8:0
1N/A+1234567:7:1234567
1N/A+1234567:6:1234570
1N/A+12345000:4:12340000
1N/A-12345000:4:-12340000
1N/A&is_zero
1N/A0:1
1N/ANaNzero:0
1N/A+inf:0
1N/A-inf:0
1N/A123:0
1N/A-1:0
1N/A1:0
1N/A&is_one
1N/A0:0
1N/ANaNone:0
1N/A+inf:0
1N/A-inf:0
1N/A1:1
1N/A2:0
1N/A-1:0
1N/A-2:0
1N/A# floor and ceil tests are pretty pointless in integer space...but play safe
1N/A&bfloor
1N/A0:0
1N/ANaNfloor:NaN
1N/A+inf:inf
1N/A-inf:-inf
1N/A-1:-1
1N/A-2:-2
1N/A2:2
1N/A3:3
1N/Aabc:NaN
1N/A&bceil
1N/ANaNceil:NaN
1N/A+inf:inf
1N/A-inf:-inf
1N/A0:0
1N/A-1:-1
1N/A-2:-2
1N/A2:2
1N/A3:3
1N/Aabc:NaN
1N/A&as_hex
1N/A128:0x80
1N/A-128:-0x80
1N/A0:0x0
1N/A-0:0x0
1N/A1:0x1
1N/A0x123456789123456789:0x123456789123456789
1N/A+inf:inf
1N/A-inf:-inf
1N/ANaNas_hex:NaN
1N/A&as_bin
1N/A128:0b10000000
1N/A-128:-0b10000000
1N/A0:0b0
1N/A-0:0b0
1N/A1:0b1
1N/A0b1010111101010101010110110110110110101:0b1010111101010101010110110110110110101
1N/A+inf:inf
1N/A-inf:-inf
1N/ANaNas_bin:NaN