Hello community, here is the log from the commit of package perl-Math-BigInt for openSUSE:Factory checked in at 2017-03-31 15:08:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Math-BigInt (Old) and /work/SRC/openSUSE:Factory/.perl-Math-BigInt.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "perl-Math-BigInt" Fri Mar 31 15:08:23 2017 rev:31 rq:482419 version:1.999811 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Math-BigInt/perl-Math-BigInt.changes 2017-02-15 10:06:49.616636155 +0100 +++ /work/SRC/openSUSE:Factory/.perl-Math-BigInt.new/perl-Math-BigInt.changes 2017-03-31 15:08:27.141165376 +0200 @@ -1,0 +2,49 @@ +Fri Mar 17 06:58:23 UTC 2017 - coolo@suse.com + +- updated to 1.999811 + see /usr/share/doc/packages/perl-Math-BigInt/CHANGES + + 2017-03-15 v1.999811 pjacklam + + * Fix an old in the Math::BigFloat methods as_hex(), as_oct(), and as_bin() + methods resulting in loss of accuracy. This bug was introduced in bug in + Math-BigInt-1.76. Due to a naive copy and paste by me, and lack of tests, + this bug was also present in the newer to_hex(), to_oct(), and to_bin() + methods. This shows the bug, as it did not print "0xffff...": + + print Math::BigFloat -> from_hex("f" x 30) -> as_hex(); + + * Fix incorrect formatting in the output from the Math::BigFloat methods + to_hex(), to_oct(), and to_bin() when the output was zero. A prefix was + added when it shouldn't have been. + + * Add tests to bigintpm.inc and bigfltpm.inc for better testing of as_hex(), + as_oct(), and as_bin() as well as to_hex(), to_oct(), and to_bin(). + + * "Synchronize" tests and code formatting in bigintpm.inc and bigfltpm.inc. + +------------------------------------------------------------------- +Fri Mar 3 06:57:10 UTC 2017 - coolo@suse.com + +- updated to 1.999810 + see /usr/share/doc/packages/perl-Math-BigInt/CHANGES + + 2017-03-01 v1.999810 pjacklam + + * CPAN RT #120240 revealed that the problems with undefined values is still + present. After a close examination, I believe the only way to get this + really working is to to make blog() call objectify() differently depending + on whether the base for the logarithm is undefined or not. That way we can + avoid objectify() converting the undefined value to a zero. Ideally, we + should warn about undefined values when used in any other context, but we'll + handle that in a later release. See also the related changelog entry for + v1.999801. + + * Fix the way the argument count is computed in objectify(). When an argument + count of 0 is given, it means that we should objectify all input arguments. + However, it turned out that the actual argument count was computed + incorrectly. + + * Fix CPAN RT #120242 rearding c3 method resolution. + +------------------------------------------------------------------- Old: ---- Math-BigInt-1.999809.tar.gz New: ---- Math-BigInt-1.999811.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Math-BigInt.spec ++++++ --- /var/tmp/diff_new_pack.ho2bGh/_old 2017-03-31 15:08:27.753078865 +0200 +++ /var/tmp/diff_new_pack.ho2bGh/_new 2017-03-31 15:08:27.757078299 +0200 @@ -17,14 +17,14 @@ Name: perl-Math-BigInt -Version: 1.999809 +Version: 1.999811 Release: 0 %define cpan_name Math-BigInt Summary: Arbitrary size integer/float math package License: Artistic-1.0 or GPL-1.0+ Group: Development/Libraries/Perl Url: http://search.cpan.org/dist/Math-BigInt/ -Source0: http://www.cpan.org/authors/id/P/PJ/PJACKLAM/%{cpan_name}-%{version}.tar.gz +Source0: https://cpan.metacpan.org/authors/id/P/PJ/PJACKLAM/%{cpan_name}-%{version}.tar.gz Source1: cpanspec.yml BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -64,6 +64,7 @@ %files -f %{name}.files %defattr(-,root,root,755) -%doc BUGS CHANGES CREDITS examples GOALS HISTORY LICENSE NEW README TODO +%doc BUGS CHANGES CREDITS examples GOALS HISTORY NEW README TODO +%license LICENSE %changelog ++++++ Math-BigInt-1.999809.tar.gz -> Math-BigInt-1.999811.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/CHANGES new/Math-BigInt-1.999811/CHANGES --- old/Math-BigInt-1.999809/CHANGES 2017-02-10 12:01:15.000000000 +0100 +++ new/Math-BigInt-1.999811/CHANGES 2017-03-15 11:21:43.000000000 +0100 @@ -1,3 +1,40 @@ +2017-03-15 v1.999811 pjacklam + + * Fix an old in the Math::BigFloat methods as_hex(), as_oct(), and as_bin() + methods resulting in loss of accuracy. This bug was introduced in bug in + Math-BigInt-1.76. Due to a naive copy and paste by me, and lack of tests, + this bug was also present in the newer to_hex(), to_oct(), and to_bin() + methods. This shows the bug, as it did not print "0xffff...": + + print Math::BigFloat -> from_hex("f" x 30) -> as_hex(); + + * Fix incorrect formatting in the output from the Math::BigFloat methods + to_hex(), to_oct(), and to_bin() when the output was zero. A prefix was + added when it shouldn't have been. + + * Add tests to bigintpm.inc and bigfltpm.inc for better testing of as_hex(), + as_oct(), and as_bin() as well as to_hex(), to_oct(), and to_bin(). + + * "Synchronize" tests and code formatting in bigintpm.inc and bigfltpm.inc. + +2017-03-01 v1.999810 pjacklam + + * CPAN RT #120240 revealed that the problems with undefined values is still + present. After a close examination, I believe the only way to get this + really working is to to make blog() call objectify() differently depending + on whether the base for the logarithm is undefined or not. That way we can + avoid objectify() converting the undefined value to a zero. Ideally, we + should warn about undefined values when used in any other context, but we'll + handle that in a later release. See also the related changelog entry for + v1.999801. + + * Fix the way the argument count is computed in objectify(). When an argument + count of 0 is given, it means that we should objectify all input arguments. + However, it turned out that the actual argument count was computed + incorrectly. + + * Fix CPAN RT #120242 rearding c3 method resolution. + 2017-02-10 v1.999809 pjacklam * When a new method is added to Math::BigInt or Math::BigFloat, and this new diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/MANIFEST.SKIP new/Math-BigInt-1.999811/MANIFEST.SKIP --- old/Math-BigInt-1.999809/MANIFEST.SKIP 2016-07-11 13:08:02.000000000 +0200 +++ new/Math-BigInt-1.999811/MANIFEST.SKIP 2017-03-01 12:54:11.000000000 +0100 @@ -10,3 +10,4 @@ \.*tmp .*\.patch\z ^Math-BigInt- +~\z diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/META.json new/Math-BigInt-1.999811/META.json --- old/Math-BigInt-1.999809/META.json 2017-02-10 12:06:49.000000000 +0100 +++ new/Math-BigInt-1.999811/META.json 2017-03-15 11:25:23.000000000 +0100 @@ -39,6 +39,6 @@ } }, "release_status" : "stable", - "version" : "1.999809", + "version" : "1.999811", "x_serialization_backend" : "JSON::PP version 2.27400" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/META.yml new/Math-BigInt-1.999811/META.yml --- old/Math-BigInt-1.999809/META.yml 2017-02-10 12:06:47.000000000 +0100 +++ new/Math-BigInt-1.999811/META.yml 2017-03-15 11:25:20.000000000 +0100 @@ -21,5 +21,5 @@ Math::Complex: '1.39' Test::More: '0.94' perl: '5.006001' -version: '1.999809' +version: '1.999811' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/SIGNATURE new/Math-BigInt-1.999811/SIGNATURE --- old/Math-BigInt-1.999809/SIGNATURE 2017-02-10 12:06:53.000000000 +0100 +++ new/Math-BigInt-1.999811/SIGNATURE 2017-03-15 11:26:48.000000000 +0100 @@ -15,15 +15,15 @@ Hash: SHA1 SHA1 20104176cd4b0623c201cdb2c9583056898b2afc BUGS -SHA1 427947bca6aaab32da506d0dff040b01c0cefb37 CHANGES +SHA1 3688157c3c5e324465ac2a102b4ca0368874bc62 CHANGES SHA1 a40e6f05bfd2a3e0542cf9e4971b1d48100eb2fd CREDITS SHA1 8d0b726d78afa344fb12508e1b027079699570e4 GOALS SHA1 fe61299e80a1dca48fbaa33f0869e3238ec07c70 HISTORY SHA1 d7c83d8f89b92a3262a01eb2778d39402e77263a LICENSE SHA1 66ec462f7cac003832200f3132b2426d5b1c4edd MANIFEST -SHA1 86df44fbe1ea7a68897113f0e327d0f0c25b91e3 MANIFEST.SKIP -SHA1 84f0993213e2fbd080c9c66017e4e3d8825b14e5 META.json -SHA1 b2b0aa6dbb414625563c42f0e7411dd3f4e080c3 META.yml +SHA1 5e76f3cc33453fc0617509755b82695402ca81c5 MANIFEST.SKIP +SHA1 3814f79c63b8f54416fd59033e199fbdf9ef9bbb META.json +SHA1 37e9b7a5b2d6102fe58eb6e98cc40d93ca76b7d6 META.yml SHA1 64057848e0b32a6dc4666981c40443fad32197ff Makefile.PL SHA1 4e2191d1724e699862efc5350f480c8e02755112 NEW SHA1 813c62e6d3edd18b7b634765ecbd75b2cd6389a0 README @@ -31,21 +31,21 @@ SHA1 a8ffc7d3270e481c9d24603a74ba2c0f46cae0e3 examples/1000.txt SHA1 3295c03031e6a50199c1acc743a3f3276e6ae59d examples/bigprimes.pl SHA1 989bfc0ad145d0f42b1eb65e83d9de018a7ee150 examples/prime.pl -SHA1 707e4ea0932aab1bd3d8314b539344a20753446d lib/Math/BigFloat.pm -SHA1 3e54ce7b99815eaad5d0a27574ea3bbb7fca4e93 lib/Math/BigInt.pm -SHA1 ba034b5b2f2167bc9a16bf051282dcf394abe7c2 lib/Math/BigInt/Calc.pm -SHA1 40cfd23d1bbe9da59e0e42187aeb345c9e2ca97b lib/Math/BigInt/CalcEmu.pm -SHA1 b8ef5b71c4d65e813a096823dd5e67d936db8667 lib/Math/BigInt/Lib.pm +SHA1 c7dbeb239c255749eac2a61266830bcdba464f66 lib/Math/BigFloat.pm +SHA1 95ecb2c5618146b7cf8e42260567dd8c23246ede lib/Math/BigInt.pm +SHA1 1c5c504e33b3bbf83ccc4448f5b839b7c7f4a5a5 lib/Math/BigInt/Calc.pm +SHA1 5c8bcc7494ea09bbe4345f950a3f7bf890b0e478 lib/Math/BigInt/CalcEmu.pm +SHA1 41b9aa1fd37a233e9d7af2de0d09b9e0f1ff551b lib/Math/BigInt/Lib.pm SHA1 385cc7ed3bf3e6290640b9880445ca9a3dea629e t/00sig.t SHA1 062a7e33e6697b19e002cdb11f3c648fe6669139 t/01load.t SHA1 b2ed9206ca5b69ec3b8bbf850bf4b6dfde518e7e t/02pod.t SHA1 47c879490e1a6229d0464805679c67660af7b4b3 t/03podcov.t -SHA1 a323fbde83f97abdedc14ff923a2ecabb1333e2d t/Math/BigFloat/Subclass.pm +SHA1 ed28da618fe54da4ab6262d2459896b61c38b597 t/Math/BigFloat/Subclass.pm SHA1 079c95d9ecb1e4c0a863c60d66c15c407b162ad9 t/Math/BigInt/BareCalc.pm SHA1 e8bff535d485feb97b03fe8217f3446a28d82fe8 t/Math/BigInt/Lib/Minimal.pm SHA1 e7eef054ec92ff5d259edfb9b39c932db74ffad3 t/Math/BigInt/Lib/TestUtil.pm SHA1 54f99a0bf52a848dbf34e459daef0df4694e543a t/Math/BigInt/Scalar.pm -SHA1 69c77dbdb12adb852836eaebb0c6957154de4e19 t/Math/BigInt/Subclass.pm +SHA1 3f15444c9efd2720beab72481ce950192932794f t/Math/BigInt/Subclass.pm SHA1 6d11459530fb13a9e3c490cc3cb9040f9b78cdb4 t/_e_math.t SHA1 0d67c764487923bd2427c7ac20778308bea548d6 t/alias.inc SHA1 bcf4632983c6b52fcc7d694a60899576a4ec8fbe t/author-batan-mbf.t @@ -155,8 +155,8 @@ SHA1 75a086f2d747b58afb4fb2de412b2217b2cf11f0 t/author-numify-mbf.t SHA1 dc386a2bd21a363c42f3dcbf7e9745632cd3d633 t/author-numify-mbi.t SHA1 096ed0c89fca2f4be7ee211521dbc74a2cd39eaf t/author-relop-mbi-mbf.t -SHA1 9bcf9f3a49e5e1bee5223ad95548affb1d2bc02e t/bare_mbf.t -SHA1 2a141825c46936a62db3568227923e7153c982ec t/bare_mbi.t +SHA1 590c5c6aae1b8af3a65115f2cc511994a08d44fd t/bare_mbf.t +SHA1 4730c87b2161836f3ad9fc20c836fcb8680779db t/bare_mbi.t SHA1 f172265d69c5dc6879cb650b5ba1f34374104616 t/bare_mif.t SHA1 75daf2820044e03c6a073e2633122c1182da018c t/bdstr-mbf.t SHA1 7e5d1349b113ad024efe066e42a50bc9ff595550 t/bdstr-mbi.t @@ -164,11 +164,11 @@ SHA1 ed5547fcac28f575d1bbd2e3e5f6fe5f6146c321 t/bestr-mbi.t SHA1 96bd46866ad45ceed4eedc1c33a3105ee1ae2bc5 t/bfib-mbi.t SHA1 e6bd71c0d21c7199106b5580e2fbd186b6b01d29 t/big_pi_e.t -SHA1 709cef0e13fd2a85f007482877bfdcf42bf5f8d4 t/bigfltpm.inc -SHA1 b79b49c9653b1ab538753a9857d3bd1dc134f1a0 t/bigfltpm.t +SHA1 b6e1b050cc36155e07df1e6f3b495c9f8a15a192 t/bigfltpm.inc +SHA1 9ce986af92d35f94702607dcb4346e4f242a42b2 t/bigfltpm.t SHA1 b601bb8f081b3e2c5626995e66f3fe1cdef8af6e t/bigintc.t -SHA1 f05bb12c2eaafa41b4409146cc160d37d8424670 t/bigintpm.inc -SHA1 635900d55b826d5221ef77bc760f498718e77810 t/bigintpm.t +SHA1 b27b994895f5f08dc63f93ce42b5952520f29820 t/bigintpm.inc +SHA1 ebc6a2433d3cafabb0ee182e59fd3627145e8f46 t/bigintpm.t SHA1 9aac2eda0e723298c8f9ddadffde39a8c16fb171 t/bigints.t SHA1 3f4bf6d2717d47117ab987cc6ff8d38991cdd383 t/biglog.t SHA1 128c6cb0ef562637e7b44bafa83188b058392392 t/bigroot.t @@ -179,7 +179,7 @@ SHA1 c97164e3ae794f8d2f141be42e5f7af4f2dd674b t/bsstr-mbi.t SHA1 dcaf0d82455c9a814da942383cbceb2da7ad3a4c t/calling-class-methods.t SHA1 63e873c5cdcccfb338fb9220d33904027865e9cf t/calling-instance-methods.t -SHA1 0b78fc72dafd67450fac6f35b8cd2ef312523fcd t/calling.t +SHA1 738f639a5d08f788760977c8838e51ecf2663f6a t/calling.t SHA1 c403d1c64ae6c3b803fc8cd0d10a1df15219057f t/config.t SHA1 af01ecfb6f43bb518c67185eb063c196e2dbdc48 t/const_mbf.t SHA1 17eb15c35392945a5b3ed2b711f7d166fca294de t/constant.t @@ -221,28 +221,28 @@ SHA1 a23c4c5027ff03a39504f43936de66606bb11703 t/sparts-mbf.t SHA1 f766d72f97efd1328b8bc18edd0f9a2b5550c870 t/sparts-mbi.t SHA1 ab253275ec4288308f6ea6ecf0744e24cb3c356a t/sub_ali.t -SHA1 7b25cae704b5574d658858700ff3624fc563e722 t/sub_mbf.t -SHA1 c5d499796b7ceafad0e228828619514df4773df4 t/sub_mbi.t +SHA1 3a71b6973d0621a741e13dcd5390000c6c576086 t/sub_mbf.t +SHA1 e094f0cfd091f662cbc1f67a0a31705e41c9232c t/sub_mbi.t SHA1 8a1adad6483302054e1c14af6e09fb72e8bfec91 t/sub_mif.t SHA1 b9f56157a8517bce2e7b1bae4c989d58546f5b2c t/trap.t SHA1 308a86ca4f8be1884927b2f2303f6af1cdc75403 t/upgrade.inc SHA1 bf2b5c05eabe003ec82a46e0ae931f609ec3b896 t/upgrade.t SHA1 df0e45b746691e397ed8e80d88df15459b349483 t/upgrade2.t -SHA1 12b27f15d45fd7dd1c69b5b678373fcba7e6a04d t/upgradef.t +SHA1 257bcadfc428cc61445eb24c57b515449c24e636 t/upgradef.t SHA1 69b741efceefd35226a10e8daccf30805bbfb447 t/use.t SHA1 4929caee039e617d8ced7339e8e99b8a18330b56 t/use_lib1.t SHA1 32d44e17e2a03d0c5abe72b1414e79bf02ea821e t/use_lib2.t SHA1 ccc05714cf95f7394dd51a0bf976e74e8f62dfe7 t/use_lib3.t SHA1 5b4760d5c552d8857a665180a444a98fb5017ca2 t/use_lib4.t SHA1 6f8e43710067bed0b0872fafdeb751c9a68732c4 t/use_mbfw.t -SHA1 0a82a7eb45e422b6fb8301400fdd98f8a3ec5886 t/with_sub.t +SHA1 d54fb22dd59d13eab7ee2cc04d05bba5401a5099 t/with_sub.t -----BEGIN PGP SIGNATURE----- -iQEcBAEBAgAGBQJYnZ7KAAoJEGcmPl2fr166Hy8H/ihoEd++XQ6mgj2tw71IEgTq -IyJoUAhd7YsXBB1lRbpq3uGKUifvY/BBtTShdp+eGOS/bd5SFtBavw0npyyrBMCI -wtDgH57B5lexpV0RW4irkQqM48sHWC74HXhc/Wv66d2q7k6Z+IOed+r4po3kGz9a -rVOC67Lu7d/8Cl0OoW6GSbwtMbzva7JyFT85Q8F1TLGxT7uuxiPLXq5+ky0OmEbz -tFwjUFLQK37zRawb0hbMJztnMYCg7KvfkWSyTtXjg+XT/+txXUP3udGULM/pywco -Xi4Su2I60Cn67NM5WX1tYNwvxU4ULsx6kJiesGvHuR5x6DQ7S4dmMHkeSnn5PHo= -=LUnS +iQEcBAEBAgAGBQJYyRaUAAoJEGcmPl2fr166VZUIAJBK4p/1MTcOr0f3QqGRs9Y1 +yiTLJBajV7sFJCmo+7erQYpZs+qrwP5O4ycLuAmFH0J4g63Cdnfe8PQx2JD91LCO +6jK+88ZgJomcORdKhKfK+SniMpY3VaY/FwWHAK1K+nLmWbS1I8hVwoEuS1FAbhlk +ydFKpak9JIEHjPsgsZjAo1thK560+MJnphRFixa7uFsYMtd72UkQdG7HngTTCx6I +mnoaPWb0fFxisApXB8JhNMKCS4TZSiodBJEWoBMhwGtBkn4Szw3Jy7XUrZ9r+RWa +NkPdF5dF5dq/4YaN4N6RMeIG5FQK3B0NWsJSQWnivtESe6Zai79C/NpTLpv0Iek= +=wZed -----END PGP SIGNATURE----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/lib/Math/BigFloat.pm new/Math-BigInt-1.999811/lib/Math/BigFloat.pm --- old/Math-BigInt-1.999809/lib/Math/BigFloat.pm 2017-02-06 16:38:47.000000000 +0100 +++ new/Math-BigInt-1.999811/lib/Math/BigFloat.pm 2017-03-15 10:37:34.000000000 +0100 @@ -19,7 +19,7 @@ use Carp (); use Math::BigInt (); -our $VERSION = '1.999809'; +our $VERSION = '1.999811'; require Exporter; our @ISA = qw/Math::BigInt/; @@ -2143,16 +2143,24 @@ } sub blog { - my ($class, $x, $base, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(2, @_); - - # If called as $x -> blog() or $x -> blog(undef), don't objectify the - # undefined base, since undef signals that the base is Euler's number. - #unless (ref($x) && !defined($base)) { - # # objectify is costly, so avoid it - # if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) { - # ($class, $x, $base, $a, $p, $r) = objectify(2, @_); - # } - #} + # Return the logarithm of the operand. If a second operand is defined, that + # value is used as the base, otherwise the base is assumed to be Euler's + # constant. + + my ($class, $x, $base, $a, $p, $r); + + # Don't objectify the base, since an undefined base, as in $x->blog() or + # $x->blog(undef) signals that the base is Euler's number. + + if (!ref($_[0]) && $_[0] =~ /^[A-Za-z]|::/) { + # E.g., Math::BigFloat->blog(256, 2) + ($class, $x, $base, $a, $p, $r) = + defined $_[2] ? objectify(2, @_) : objectify(1, @_); + } else { + # E.g., Math::BigFloat::blog(256, 2) or $x->blog(2) + ($class, $x, $base, $a, $p, $r) = + defined $_[1] ? objectify(2, @_) : objectify(1, @_); + } return $x if $x->modify('blog'); @@ -4033,10 +4041,11 @@ sub to_hex { # return number as hexadecimal string (only for integers defined) + my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_); return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc - return '0x0' if $x->is_zero(); + return '0' if $x->is_zero(); return $nan if $x->{_es} ne '+'; # how to do 1e-1 in hex? @@ -4044,12 +4053,13 @@ if (! $MBI->_is_zero($x->{_e})) { # > 0 $z = $MBI->_lsft($z, $x->{_e}, 10); } - $z = Math::BigInt->new($x->{sign} . $MBI->_num($z)); - $z->to_hex(); + my $str = $MBI->_to_hex($z); + return $x->{sign} eq '-' ? "-$str" : $str; } sub to_oct { # return number as octal digit string (only for integers defined) + my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_); return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc @@ -4061,16 +4071,17 @@ if (! $MBI->_is_zero($x->{_e})) { # > 0 $z = $MBI->_lsft($z, $x->{_e}, 10); } - $z = Math::BigInt->new($x->{sign} . $MBI->_num($z)); - $z->to_oct(); + my $str = $MBI->_to_oct($z); + return $x->{sign} eq '-' ? "-$str" : $str; } sub to_bin { # return number as binary digit string (only for integers defined) + my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_); return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc - return '0b0' if $x->is_zero(); + return '0' if $x->is_zero(); return $nan if $x->{_es} ne '+'; # how to do 1e-1 in binary? @@ -4078,12 +4089,13 @@ if (! $MBI->_is_zero($x->{_e})) { # > 0 $z = $MBI->_lsft($z, $x->{_e}, 10); } - $z = Math::BigInt->new($x->{sign} . $MBI->_num($z)); - $z->to_bin(); + my $str = $MBI->_to_bin($z); + return $x->{sign} eq '-' ? "-$str" : $str; } sub as_hex { # return number as hexadecimal string (only for integers defined) + my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_); return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc @@ -4095,16 +4107,17 @@ if (! $MBI->_is_zero($x->{_e})) { # > 0 $z = $MBI->_lsft($z, $x->{_e}, 10); } - $z = Math::BigInt->new($x->{sign} . $MBI->_num($z)); - $z->as_hex(); + my $str = $MBI->_as_hex($z); + return $x->{sign} eq '-' ? "-$str" : $str; } sub as_oct { # return number as octal digit string (only for integers defined) + my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_); return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc - return '0' if $x->is_zero(); + return '00' if $x->is_zero(); return $nan if $x->{_es} ne '+'; # how to do 1e-1 in octal? @@ -4112,12 +4125,13 @@ if (! $MBI->_is_zero($x->{_e})) { # > 0 $z = $MBI->_lsft($z, $x->{_e}, 10); } - $z = Math::BigInt->new($x->{sign} . $MBI->_num($z)); - $z->as_oct(); + my $str = $MBI->_as_oct($z); + return $x->{sign} eq '-' ? "-$str" : $str; } sub as_bin { # return number as binary digit string (only for integers defined) + my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_); return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc @@ -4129,8 +4143,8 @@ if (! $MBI->_is_zero($x->{_e})) { # > 0 $z = $MBI->_lsft($z, $x->{_e}, 10); } - $z = Math::BigInt->new($x->{sign} . $MBI->_num($z)); - $z->as_bin(); + my $str = $MBI->_as_bin($z); + return $x->{sign} eq '-' ? "-$str" : $str; } sub numify { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/lib/Math/BigInt/Calc.pm new/Math-BigInt-1.999811/lib/Math/BigInt/Calc.pm --- old/Math-BigInt-1.999809/lib/Math/BigInt/Calc.pm 2017-02-06 16:38:37.000000000 +0100 +++ new/Math-BigInt-1.999811/lib/Math/BigInt/Calc.pm 2017-03-15 10:37:26.000000000 +0100 @@ -7,7 +7,7 @@ use Carp; use Math::BigInt::Lib; -our $VERSION = '1.999809'; +our $VERSION = '1.999811'; our @ISA = ('Math::BigInt::Lib'); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/lib/Math/BigInt/CalcEmu.pm new/Math-BigInt-1.999811/lib/Math/BigInt/CalcEmu.pm --- old/Math-BigInt-1.999809/lib/Math/BigInt/CalcEmu.pm 2017-02-06 16:38:34.000000000 +0100 +++ new/Math-BigInt-1.999811/lib/Math/BigInt/CalcEmu.pm 2017-03-15 10:37:19.000000000 +0100 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '1.999809'; +our $VERSION = '1.999811'; package Math::BigInt; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/lib/Math/BigInt/Lib.pm new/Math-BigInt-1.999811/lib/Math/BigInt/Lib.pm --- old/Math-BigInt-1.999809/lib/Math/BigInt/Lib.pm 2017-02-06 16:38:12.000000000 +0100 +++ new/Math-BigInt-1.999811/lib/Math/BigInt/Lib.pm 2017-03-15 10:37:16.000000000 +0100 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '1.999809'; +our $VERSION = '1.999811'; use Carp; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/lib/Math/BigInt.pm new/Math-BigInt-1.999811/lib/Math/BigInt.pm --- old/Math-BigInt-1.999809/lib/Math/BigInt.pm 2017-02-10 10:34:43.000000000 +0100 +++ new/Math-BigInt-1.999811/lib/Math/BigInt.pm 2017-03-15 10:37:31.000000000 +0100 @@ -20,7 +20,7 @@ use Carp (); -our $VERSION = '1.999809'; +our $VERSION = '1.999811'; our @ISA = qw(Exporter); our @EXPORT_OK = qw(objectify bgcd blcm); @@ -2385,14 +2385,19 @@ # value is used as the base, otherwise the base is assumed to be Euler's # constant. + my ($class, $x, $base, @r); + # Don't objectify the base, since an undefined base, as in $x->blog() or # $x->blog(undef) signals that the base is Euler's number. - # set up parameters - my ($class, $x, $base, @r) = (undef, @_); - # objectify is costly, so avoid it - if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) { - ($class, $x, $base, @r) = objectify(2, @_); + if (!ref($_[0]) && $_[0] =~ /^[A-Za-z]|::/) { + # E.g., Math::BigInt->blog(256, 2) + ($class, $x, $base, @r) = + defined $_[2] ? objectify(2, @_) : objectify(1, @_); + } else { + # E.g., Math::BigInt::blog(256, 2) or $x->blog(2) + ($class, $x, $base, @r) = + defined $_[1] ? objectify(2, @_) : objectify(1, @_); } return $x if $x->modify('blog'); @@ -3750,7 +3755,8 @@ # Class->badd(Class->(1), 2); => classname x (scalar), ref x, scalar y # Math::BigInt::badd(1, 2); => scalar x, scalar y - # A shortcut for the common case $x->unary_op(): + # A shortcut for the common case $x->unary_op(), in which case the argument + # list is (0, $x) or (1, $x). return (ref($_[1]), $_[1]) if @_ == 2 && ($_[0] || 0) == 1 && ref($_[1]); @@ -3763,7 +3769,6 @@ # Get the number of arguments to objectify. my $count = shift; - $count ||= @_; # Initialize the output array. @@ -3773,17 +3778,18 @@ # class name. Otherwise, if the first argument looks like a class name, # then use that as our class name. Otherwise, use the default class name. - { - if (ref($a[0])) { # reference? - unshift @a, ref($a[0]); - last; - } - if ($a[0] =~ /^[A-Z].*::/) { # string with class name? - last; - } - unshift @a, $class; # default class name + my $class; + if (ref($a[0])) { # reference? + $class = ref($a[0]); + } elsif ($a[0] =~ /^[A-Z].*::/) { # string with class name? + $class = shift @a; + } else { + $class = __PACKAGE__; # default class name } + $count ||= @a; + unshift @a, $class; + no strict 'refs'; # What we upgrade to, if anything. @@ -3801,12 +3807,6 @@ for my $i (1 .. $count) { - # Don't do anything with undefs. This special treatment is necessary - # because blog() might have a second operand which is undef, to signify - # that the default Euler base should be used. - - next unless defined $a[$i]; - my $ref = ref $a[$i]; # Perl scalars are fed to the appropriate constructor. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/t/Math/BigFloat/Subclass.pm new/Math-BigInt-1.999811/t/Math/BigFloat/Subclass.pm --- old/Math-BigInt-1.999809/t/Math/BigFloat/Subclass.pm 2016-07-11 13:08:05.000000000 +0200 +++ new/Math-BigInt-1.999811/t/Math/BigFloat/Subclass.pm 2017-02-28 09:16:32.000000000 +0100 @@ -14,9 +14,9 @@ our ($accuracy, $precision, $round_mode, $div_scale); -our @ISA = qw(Exporter Math::BigFloat); +our @ISA = qw(Math::BigFloat Exporter); -our $VERSION = "0.06"; +our $VERSION = "0.07"; use overload; # inherit overload from BigInt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/t/Math/BigInt/Subclass.pm new/Math-BigInt-1.999811/t/Math/BigInt/Subclass.pm --- old/Math-BigInt-1.999809/t/Math/BigInt/Subclass.pm 2016-07-11 13:08:05.000000000 +0200 +++ new/Math-BigInt-1.999811/t/Math/BigInt/Subclass.pm 2017-02-28 09:16:33.000000000 +0100 @@ -14,10 +14,10 @@ our $lib; our ($accuracy, $precision, $round_mode, $div_scale); -our @ISA = qw(Exporter Math::BigInt); +our @ISA = qw(Math::BigInt Exporter); our @EXPORT_OK = qw(bgcd objectify); -our $VERSION = "0.05"; +our $VERSION = "0.06"; use overload; # inherit overload from BigInt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/t/bare_mbf.t new/Math-BigInt-1.999811/t/bare_mbf.t --- old/Math-BigInt-1.999809/t/bare_mbf.t 2016-12-31 09:38:11.000000000 +0100 +++ new/Math-BigInt-1.999811/t/bare_mbf.t 2017-03-14 18:01:36.000000000 +0100 @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 2436; +use Test::More tests => 2482; use lib 't'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/t/bare_mbi.t new/Math-BigInt-1.999811/t/bare_mbi.t --- old/Math-BigInt-1.999809/t/bare_mbi.t 2016-11-21 14:31:19.000000000 +0100 +++ new/Math-BigInt-1.999811/t/bare_mbi.t 2017-03-14 18:01:36.000000000 +0100 @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 3913; # tests in require'd file +use Test::More tests => 3942; # tests in require'd file use lib 't'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/t/bigfltpm.inc new/Math-BigInt-1.999811/t/bigfltpm.inc --- old/Math-BigInt-1.999809/t/bigfltpm.inc 2016-12-31 09:27:09.000000000 +0100 +++ new/Math-BigInt-1.999811/t/bigfltpm.inc 2017-03-14 17:35:31.000000000 +0100 @@ -23,7 +23,6 @@ if (/^\$/) { $setup = $_; $setup =~ s/\$/\$${CLASS}::/g; # round_mode, div_scale - #print "\$setup== $setup\n"; next; } @@ -38,7 +37,7 @@ $try = qq|\$x = $CLASS->new("$args[0]");|; if ($f eq "bnorm") { $try .= qq| \$x;|; - } elsif ($f =~ /^is_(zero|one|negative|positive|odd|even|nan|int)$/) { + } elsif ($f =~ /^is_(zero|one|odd|even|negative|positive|nan|int)$/) { $try .= qq| \$x->$f();|; } elsif ($f eq "is_inf") { $try .= qq| \$x->is_inf("$args[1]");|; @@ -50,8 +49,12 @@ $try .= qq| \$x->accuracy($args[1]); \$x->precision($args[2]);|; $try .= ' $x->bstr();'; # some unary ops - } elsif ($f =~ /^b(nan|sstr|neg|floor|ceil|int|abs)$/) { + } elsif ($f =~ /^b(nan|floor|ceil|int|sstr|neg|abs|sgn|inc|dec|not|sqrt|exp|fac)$/) { $try .= qq| \$x->$f();|; + } elsif ($f =~ /^(numify|length|as_number)$/) { + $try .= qq| \$x->$f();|; + } elsif ($f =~ /^(to|as)_(hex|oct|bin)$/) { + $try .= " \$x->$f();"; # overloaded functions } elsif ($f =~ /^(log|exp|sin|cos|atan2|int|neg|abs|sqrt)$/) { $try .= qq| \$x = $f(\$x);|; @@ -65,14 +68,8 @@ } elsif ($f eq "mantissa") { # ->bstr() to see if an object is returned $try .= ' $x->mantissa()->bstr();'; - } elsif ($f =~ /^(numify|length|as_number|as_hex|as_bin)$/) { - $try .= qq| \$x->$f();|; } elsif ($f eq "bpi") { $try .= qq| $CLASS->bpi(\$x);|; - } elsif ($f eq "binc") { - $try .= ' $x->binc();'; - } elsif ($f eq "bdec") { - $try .= ' $x->bdec();'; } elsif ($f eq "bround") { $try .= qq| $setup; \$x->bround($args[1]);|; } elsif ($f eq "bfround") { @@ -666,7 +663,7 @@ 1::0 &brsft -NaNbrsft:2:NaN +invalid:2:NaN 0:2:0 1:1:0.5 2:1:1 @@ -675,7 +672,7 @@ 32:3:4 &blsft -NaNblsft:0:NaN +invalid:0:NaN 2:1:4 4:3:32 5:3:40 @@ -685,7 +682,7 @@ &bnorm 1:1 -0:0 -bnormNaN:NaN +invalid:NaN +inf:inf -inf:-inf 123:123 @@ -771,20 +768,74 @@ 3:abc:inf &as_hex +128:0x80 +-128:-0x80 +0:0x0 +-0:0x0 +1:0x1 +0x123456789123456789:0x123456789123456789 +inf:inf -inf:-inf -hexNaN:NaN -0:0x0 -5:0x5 --5:-0x5 +invalid:NaN &as_bin +128:0b10000000 +-128:-0b10000000 +0:0b0 +-0:0b0 +1:0b1 +0b1010111101010101010110110110110110101:0b1010111101010101010110110110110110101 +0x123456789123456789:0b100100011010001010110011110001001000100100011010001010110011110001001 +inf:inf -inf:-inf -hexNaN:NaN -0:0b0 -5:0b101 --5:-0b101 +invalid:NaN + +&as_oct +128:0200 +-128:-0200 +0:00 +-0:00 +1:01 +0b1010111101010101010110110110110110101:01275252666665 +0x123456789123456789:044321263611044321263611 ++inf:inf +-inf:-inf +invalid:NaN + +&to_hex +128:80 +-128:-80 +0:0 +-0:0 +1:1 +0x123456789123456789:123456789123456789 ++inf:inf +-inf:-inf +invalid:NaN + +&to_bin +128:10000000 +-128:-10000000 +0:0 +-0:0 +1:1 +0b1010111101010101010110110110110110101:1010111101010101010110110110110110101 +0x123456789123456789:100100011010001010110011110001001000100100011010001010110011110001001 ++inf:inf +-inf:-inf +invalid:NaN + +&to_oct +128:200 +-128:-200 +0:0 +-0:0 +1:1 +0b1010111101010101010110110110110110101:1275252666665 +0x123456789123456789:44321263611044321263611 ++inf:inf +-inf:-inf +invalid:NaN &numify # uses bsstr() so 5 => 5e+0 to be compatible w/ Perls output @@ -936,7 +987,7 @@ $div_scale = 40 &bneg -bnegNaN:NaN +invalid:NaN +inf:-inf -inf:inf +0:0 @@ -948,7 +999,7 @@ -123456.789:123456.789 &babs -babsNaN:NaN +invalid:NaN +inf:inf -inf:inf +0:0 @@ -964,7 +1015,7 @@ +inf:5:inf -inf:5:-inf 0:5:0 -NaNfround:5:NaN +invalid:5:NaN +10123456789:5:10123000000 -10123456789:5:-10123000000 +10123456789.123:5:10123000000 @@ -1040,7 +1091,7 @@ +inf:5:inf -inf:5:-inf 0:5:0 -NaNffround:5:NaN +invalid:5:NaN +1.23:-1:1.2 +1.234:-1:1.2 +1.2345:-1:1.2 @@ -1172,9 +1223,9 @@ 0.01234567:-12:0.012345670000 &bcmp -bcmpNaN:bcmpNaN: -bcmpNaN:+0: -+0:bcmpNaN: +invalid:invalid: +invalid:+0: ++0:invalid: +0:+0:0 -1:+0:-1 +0:-1:1 @@ -1245,9 +1296,9 @@ NaN:-inf: &bacmp -bcmpNaN:bcmpNaN: -bcmpNaN:+0: -+0:bcmpNaN: +invalid:invalid: +invalid:+0: ++0:invalid: +0:+0:0 -1:+0:1 +0:-1:-1 @@ -1314,13 +1365,13 @@ 5:-inf:-1 -1:-inf:-1 # return undef -+inf:bacmpNaN: -bacmpNaN:inf: --inf:bacmpNaN: -bacmpNaN:-inf: ++inf:invalid: +invalid:inf: +-inf:invalid: +invalid:-inf: &bdec -bdecNaN:NaN +invalid:NaN +inf:inf -inf:-inf +0:-1 @@ -1336,7 +1387,7 @@ 99:98 &binc -bincNaN:NaN +invalid:NaN +inf:inf -inf:-inf +0:1 @@ -1358,10 +1409,10 @@ -inf:+inf:NaN +inf:+inf:inf -inf:-inf:-inf -baddNaN:+inf:NaN -baddNaN:+inf:NaN -+inf:baddNaN:NaN --inf:baddNaN:NaN +invalid:+inf:NaN +invalid:+inf:NaN ++inf:invalid:NaN +-inf:invalid:NaN +0:+0:0 +1:+0:1 +0:+1:1 @@ -1406,10 +1457,10 @@ -inf:+inf:-inf +inf:+inf:NaN -inf:-inf:NaN -baddNaN:+inf:NaN -baddNaN:+inf:NaN -+inf:baddNaN:NaN --inf:baddNaN:NaN +invalid:+inf:NaN +invalid:+inf:NaN ++inf:invalid:NaN +-inf:invalid:NaN +0:+0:0 +1:+0:1 +0:+1:-1 @@ -1450,10 +1501,10 @@ abc:+0:0:NaN +0:abc:0:NaN +0:0:abc:NaN -NaNmul:+inf:0:NaN -NaNmul:-inf:0:NaN --inf:NaNmul:0:NaN -+inf:NaNmul:0:NaN +invalid:+inf:0:NaN +invalid:-inf:0:NaN +-inf:invalid:0:NaN ++inf:invalid:0:NaN +inf:+inf:0:inf +inf:-inf:0:-inf -inf:+inf:0:-inf @@ -1518,10 +1569,10 @@ abc:abc:NaN abc:+0:NaN +0:abc:NaN -+inf:NaNmul:NaN -+inf:NaNmul:NaN -NaNmul:+inf:NaN -NaNmul:-inf:NaN ++inf:invalid:NaN ++inf:invalid:NaN +invalid:+inf:NaN +invalid:-inf:NaN +inf:+inf:inf +inf:-inf:-inf +inf:-inf:-inf @@ -1899,7 +1950,7 @@ 2:0 &is_int -NaNis_int:0 +invalid:0 0:1 1:1 2:1 @@ -1955,7 +2006,7 @@ 123:123 0 -123:-123 0 -1200:-12 2 -NaNparts:NaN NaN +invalid:NaN NaN +inf:inf inf -inf:-inf inf @@ -1967,7 +2018,7 @@ -1200:2 +inf:inf -inf:inf -NaNexponent:NaN +invalid:NaN &mantissa 0:0 @@ -1977,7 +2028,7 @@ -1200:-12 +inf:inf -inf:-inf -NaNmantissa:NaN +invalid:NaN &length 123:3 @@ -1987,7 +2038,7 @@ 12345678901234567890:20 &is_zero -NaNzero:0 +invalid:0 +inf:0 -inf:0 0:1 @@ -1995,7 +2046,7 @@ 1:0 &is_one -NaNone:0 +invalid:0 +inf:0 -inf:0 0:0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/t/bigfltpm.t new/Math-BigInt-1.999811/t/bigfltpm.t --- old/Math-BigInt-1.999809/t/bigfltpm.t 2016-12-31 09:38:32.000000000 +0100 +++ new/Math-BigInt-1.999811/t/bigfltpm.t 2017-03-14 17:35:00.000000000 +0100 @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 2436 # tests in require'd file +use Test::More tests => 2482 # tests in require'd file + 19; # tests in this file use Math::BigInt only => 'Calc'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/t/bigintpm.inc new/Math-BigInt-1.999811/t/bigintpm.inc --- old/Math-BigInt-1.999809/t/bigintpm.inc 2016-12-31 10:05:26.000000000 +0100 +++ new/Math-BigInt-1.999811/t/bigintpm.inc 2017-03-14 17:35:31.000000000 +0100 @@ -77,29 +77,27 @@ } elsif ($f eq "bone") { $try .= qq| \$x->bone("$args[1]");|; # some unary ops - } elsif ($f =~ /^b(nan|floor|ceil|int|sstr|neg|abs|sgn|inc|dec|not|sqrt|fac)$/) { + } elsif ($f =~ /^b(nan|floor|ceil|int|sstr|neg|abs|sgn|inc|dec|not|sqrt|exp|fac)$/) { $try .= " \$x->$f();"; - # overloaded functions - } elsif ($f =~ /^(log|exp|sin|cos|atan2|int|neg|abs|sqrt)$/) { - $try .= " \$x = $f(\$x);"; } elsif ($f =~ /^(numify|length|stringify)$/) { $try .= " \$x->$f();"; } elsif ($f =~ /^(to|as)_(hex|oct|bin)$/) { $try .= " \$x->$f();"; - } elsif ($f eq "exponent") { - # ->bstr() to see if an object is returned - $try .= ' $x = $x->exponent()->bstr();'; - } elsif ($f eq "mantissa") { - # ->bstr() to see if an object is returned - $try .= ' $x = $x->mantissa()->bstr();'; + # overloaded functions + } elsif ($f =~ /^(log|exp|sin|cos|atan2|int|neg|abs|sqrt)$/) { + $try .= " \$x = $f(\$x);"; } elsif ($f eq "parts") { $try .= ' ($m, $e) = $x->parts();'; # ->bstr() to see if an object is returned $try .= ' $m = $m->bstr(); $m = "NaN" if !defined $m;'; $try .= ' $e = $e->bstr(); $e = "NaN" if !defined $e;'; $try .= ' "$m,$e";'; - } elsif ($f eq "bexp") { - $try .= " \$x->bexp();"; + } elsif ($f eq "exponent") { + # ->bstr() to see if an object is returned + $try .= ' $x = $x->exponent()->bstr();'; + } elsif ($f eq "mantissa") { + # ->bstr() to see if an object is returned + $try .= ' $x = $x->mantissa()->bstr();'; } elsif ($f eq "bpi") { $try .= " $CLASS\->bpi(\$x);"; } else { @@ -997,9 +995,9 @@ &blog # -NaNlog:2:NaN -122:NaNlog:NaN -NaNlog1:NaNlog:NaN +invalid:2:NaN +122:invalid:NaN +invalid:invalid:NaN # 122:inf:0 inf:122:inf @@ -1069,7 +1067,7 @@ 1:0 +inf:0 -inf:1 -NaNneg:0 +invalid:0 &is_positive 0:0 @@ -1077,12 +1075,12 @@ 1:1 +inf:1 -inf:0 -NaNneg:0 +invalid:0 &is_int -inf:0 +inf:0 -NaNis_int:0 +invalid:0 1:1 0:1 123e12:1 @@ -1126,9 +1124,9 @@ -987654321:+123456789:1 -123:+4567889:-1 # NaNs -acmpNaN:123: -123:acmpNaN: -acmpNaN:acmpNaN: +invalid:123: +123:invalid: +invalid:invalid: # infinity +inf:+inf:0 -inf:-inf:0 @@ -1390,8 +1388,8 @@ &bone 2:+:1 2:-:-1 -boneNaN:-:-1 -boneNaN:+:1 +invalid:-:-1 +invalid:+:1 2:abc:1 3::1 @@ -1500,7 +1498,7 @@ -100:-100 &bneg -bnegNaN:NaN +invalid:NaN +inf:-inf -inf:inf abd:NaN @@ -1511,7 +1509,7 @@ -123456789:123456789 &babs -babsNaN:NaN +invalid:NaN +inf:inf -inf:inf 0:0 @@ -1529,9 +1527,9 @@ -123456789:-1 &bcmp -bcmpNaN:bcmpNaN: -bcmpNaN:0: -0:bcmpNaN: +invalid:invalid: +invalid:0: +0:invalid: 0:0:0 -1:0:-1 0:-1:1 @@ -1597,10 +1595,10 @@ -inf:+inf:NaN +inf:+inf:inf -inf:-inf:-inf -baddNaN:+inf:NaN -baddNaN:+inf:NaN -+inf:baddNaN:NaN --inf:baddNaN:NaN +invalid:+inf:NaN +invalid:+inf:NaN ++inf:invalid:NaN +-inf:invalid:NaN 0:0:0 1:0:1 0:1:1 @@ -1724,10 +1722,10 @@ abc:+0:0:NaN +0:abc:0:NaN +0:0:abc:NaN -NaNmul:+inf:0:NaN -NaNmul:-inf:0:NaN --inf:NaNmul:0:NaN -+inf:NaNmul:0:NaN +invalid:+inf:0:NaN +invalid:-inf:0:NaN +-inf:invalid:0:NaN ++inf:invalid:0:NaN +inf:+inf:0:inf +inf:-inf:0:-inf -inf:+inf:0:-inf @@ -1784,10 +1782,10 @@ abc:abc:NaN abc:+0:NaN +0:abc:NaN -NaNmul:+inf:NaN -NaNmul:-inf:NaN --inf:NaNmul:NaN -+inf:NaNmul:NaN +invalid:+inf:NaN +invalid:-inf:NaN +-inf:invalid:NaN ++inf:invalid:NaN +inf:+inf:inf +inf:-inf:-inf -inf:+inf:-inf @@ -2814,7 +2812,7 @@ &bfac -1:NaN -NaNfac:NaN +invalid:NaN +inf:inf -inf:NaN 0:1 @@ -3084,7 +3082,7 @@ &bround $round_mode("trunc") 0:12:0 -NaNbround:12:NaN +invalid:12:NaN +inf:12:inf -inf:12:-inf 1234:0:1234 @@ -3185,7 +3183,7 @@ &is_zero 0:1 -NaNzero:0 +invalid:0 +inf:0 -inf:0 123:0 @@ -3194,7 +3192,7 @@ &is_one 0:0 -NaNone:0 +invalid:0 +inf:0 -inf:0 1:1 @@ -3205,7 +3203,7 @@ # floor, ceil, and int are pretty pointless in integer space, but play safe &bfloor 0:0 -NaNfloor:NaN +invalid:NaN +inf:inf -inf:-inf -1:-1 @@ -3215,7 +3213,7 @@ abc:NaN &bceil -NaNceil:NaN +invalid:NaN +inf:inf -inf:-inf 0:0 @@ -3244,7 +3242,7 @@ 0x123456789123456789:0x123456789123456789 +inf:inf -inf:-inf -NaNas_hex:NaN +invalid:NaN &as_bin 128:0b10000000 @@ -3256,7 +3254,7 @@ 0x123456789123456789:0b100100011010001010110011110001001000100100011010001010110011110001001 +inf:inf -inf:-inf -NaNas_bin:NaN +invalid:NaN &as_oct 128:0200 @@ -3268,7 +3266,42 @@ 0x123456789123456789:044321263611044321263611 +inf:inf -inf:-inf -NaNas_oct:NaN +invalid:NaN + +&to_hex +128:80 +-128:-80 +0:0 +-0:0 +1:1 +0x123456789123456789:123456789123456789 ++inf:inf +-inf:-inf +invalid:NaN + +&to_bin +128:10000000 +-128:-10000000 +0:0 +-0:0 +1:1 +0b1010111101010101010110110110110110101:1010111101010101010110110110110110101 +0x123456789123456789:100100011010001010110011110001001000100100011010001010110011110001001 ++inf:inf +-inf:-inf +invalid:NaN + +&to_oct +128:200 +-128:-200 +0:0 +-0:0 +1:1 +0b1010111101010101010110110110110110101:1275252666665 +0x123456789123456789:44321263611044321263611 ++inf:inf +-inf:-inf +invalid:NaN # overloaded functions &log diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/t/bigintpm.t new/Math-BigInt-1.999811/t/bigintpm.t --- old/Math-BigInt-1.999809/t/bigintpm.t 2016-11-23 15:01:53.000000000 +0100 +++ new/Math-BigInt-1.999811/t/bigintpm.t 2017-03-14 17:35:00.000000000 +0100 @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 3913 # tests in require'd file +use Test::More tests => 3942 # tests in require'd file + 20; # tests in this file use Math::BigInt only => 'Calc'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/t/calling.t new/Math-BigInt-1.999811/t/calling.t --- old/Math-BigInt-1.999809/t/calling.t 2017-02-06 16:38:08.000000000 +0100 +++ new/Math-BigInt-1.999811/t/calling.t 2017-03-15 10:37:06.000000000 +0100 @@ -6,7 +6,7 @@ use warnings; use lib 't'; -my $VERSION = '1.999809'; # adjust manually to match latest release +my $VERSION = '1.999811'; # adjust manually to match latest release use Test::More tests => 5; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/t/sub_mbf.t new/Math-BigInt-1.999811/t/sub_mbf.t --- old/Math-BigInt-1.999809/t/sub_mbf.t 2016-12-31 09:58:03.000000000 +0100 +++ new/Math-BigInt-1.999811/t/sub_mbf.t 2017-03-14 18:00:12.000000000 +0100 @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 2436 # tests in require'd file +use Test::More tests => 2482 # tests in require'd file + 6; # tests in this file use lib 't'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/t/sub_mbi.t new/Math-BigInt-1.999811/t/sub_mbi.t --- old/Math-BigInt-1.999809/t/sub_mbi.t 2016-07-11 13:08:07.000000000 +0200 +++ new/Math-BigInt-1.999811/t/sub_mbi.t 2017-03-14 18:00:12.000000000 +0100 @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 3913 # tests in require'd file +use Test::More tests => 3942 # tests in require'd file + 5; # tests in this file use lib 't'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/t/upgradef.t new/Math-BigInt-1.999811/t/upgradef.t --- old/Math-BigInt-1.999809/t/upgradef.t 2016-07-11 13:08:07.000000000 +0200 +++ new/Math-BigInt-1.999811/t/upgradef.t 2017-02-28 09:16:33.000000000 +0100 @@ -10,7 +10,7 @@ use Math::BigFloat; require Exporter; -our @ISA = qw/Exporter Math::BigFloat/; +our @ISA = qw/Math::BigFloat Exporter/; use overload; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Math-BigInt-1.999809/t/with_sub.t new/Math-BigInt-1.999811/t/with_sub.t --- old/Math-BigInt-1.999809/t/with_sub.t 2016-12-31 09:38:45.000000000 +0100 +++ new/Math-BigInt-1.999811/t/with_sub.t 2017-03-14 18:56:45.000000000 +0100 @@ -5,7 +5,7 @@ use strict; use warnings; -use Test::More tests => 2436 # tests in require'd file +use Test::More tests => 2482 # tests in require'd file + 1; # tests in this file use Math::BigFloat with => 'Math::BigInt::Subclass',