- updated to 2.005003
see /usr/share/doc/packages/perl-Math-BigInt/CHANGES
2.005003 2025-04-13
* Add new methods to_fp80() and from_fp80() for encoding and decoding values in
the x86 extended-precision 80 bit format.
2.005002 2025-03-28
* Fix the handling of read-only objects in bblsft() and bbrsft() in
Math::BigFloat and Math::BigRat.
2.005001 2025-03-25
New:
* Add new method bperm() to Math::BigInt, Math::BigFloat, and Math::BigRat.
* Add the following methods to Math::BigRat and Math::BigFloat:
bilog2(), bilog10(), bclog2(), bclog10(), bfib(), blucas(),
from_bytes(), from_base(), to_bytes(), to_ieee754()
* Add method bmuladd(), bgcd(), and blcm() to Math::BigRat.
* Add method bpi() to Math::BigRat. It returns a rational approximation of PI
accurate to the specified accuracy or precision, or the default accuracy if
no accuracy is specified.
* Add methods bdstr(), bnstr(), and bestr() to Math::BigRat.
* Add support for rounding in Math::BigFloat methods bdstr(), bestr(), bnstr(),
and bestr().
* Add method from_ieee754() to Math::BigInt and Math::BigRat, including
documentation. In Math::BigInt, from_ieee754() is similar to the other
from_xxx() methods in that way that it returns a NaN if the input is a finite
non-integer.
* Add new backend library method _scmp() for doing signed comparison.
Changes/Improvements:
* Method new() now always returns a new object, as would be expected.
* Make bgcd() in Math::BigRat and Math::BigFloat support non-integer arguments.
Now, bgcd(0.8, 1.2) in Math::BigFloat returns 0.4, and bgcd(4/5, 6/5) in
Math::BigRat returns 2/5.
* Make blcm(0, 0) work the same way in Math::BigInt, Math::BigRat, and
Math::BigFloat. Now blcm(0, 0) is always 0.
* Correct the documentation for is_inf(), bceil() and bfloor()
* Methods bdiv() and bmod() are now aliases to bfdiv() and bfmod(),
respectively. (This doesn't change the behaviour of bdiv() and bmod().)
* Math::BigFloat methods bfmod() and btmod() are faster than before.
* Improve documentation for bnok().
* Improve upgrading and downgrading, e.g., use $class->upgrade() rather than
just $upgrade, since the former works better for sublasses.
Fixes:
* Add missing calls to modify().
* All boolean methods now return 1 or 0. Some would return 1 or "".
* Harmonise methods in different classes so they behave similarly, at least to
the extent possible.
* Fix bug in Math::BigInt->bfib() causing sign to be incorrect for some of the
output values when bfib() was called in list context with a negative input.
* Correct miscellaneous typos and errors in the documentation.
2.004001 2025-02-12
* Improve upgrading and downgrading.
- Upgrading and downgrading is more consistent.
- Upgrading and downgrading now keeps the reference, so in the following
example, $x changes from being a Math::BigInt with a value of 2 to a
Math::BigFloat with the value 1.4142...
perl -Mbignum -le '$x = 2; $x -> bsqrt(); print $x'
* Fix bug in Math::BigFloat->bdiv(): in list context, bdiv() would do floored
division, except when the denominator was 1. Now, bdiv() always does floored
division.
OBS-URL: https://build.opensuse.org/request/show/1276521
OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Math-BigInt?expand=0&rev=104
- updated to 2.003001
see /usr/share/doc/packages/perl-Math-BigInt/CHANGES
2.003001 2023-12-26
* Add configuration methods trap_inf() and trap_nan(). Previously it was only
possible to modify these properties by using the config() method.
* Fix CPAN RT #150796 so that config() no longer modifies the input when it is
a hash ref.
* Fix CPAN RT #150797 so that both accuracy and precision can be set
simultaneously with config().
* Add the following methods to Math::BigInt
- bilog2() base 2 logarithm rounded downwards, i.e., int(log2(x))
- bilog10() base 10 logarithm rounded downwards, i.e., int(log10(x))
- bclog2() base 2 logarithm rounded upwards, i.e., ceil(log2(x))
- bclog10() base 10 logarithm rounded upwards, i.e., ceil(log10(x))
* Add the following backend library methods to Math::BigInt::Lib. These
methods do the core computations for the corresponding methods in
Math::BigInt (see above).
- _ilog2() base 2 logarithm rounded downwards
- _ilog10() base 10 logarithm rounded downwards
- _clog2() base 2 logarithm rounded upwards
- _clog10() base 10 logarithm rounded upwards
2.002001 2023-12-09
* Fix CPAN RT #150523
2.002000 2023-12-02
* Fix bug in Math::BigFloat method bsin(). It can now handle any argument to
any precision. Also improve downgrading. This fixes CPAN RT #150590 and the
bsin() part of CPAN RT #107604.
* Fix bug in Math::BigFloat method bexp(). Specifying precision (rather than
accuracy) used to give a NaN. Also improve downgrading.
* Improve upgrading in Math::BigInt methods bsin() and bcos(). They now
upgrade only when necessary.
2.001001 2023-11-21
* Fix CPAN RT #150469
2.001000 2023-11-13
* Fix rounding bug in bsqrt() in Math::BigInt. Also make bsqrt() upgrade only
when necessary.
* Simplify and speed up bsqrt() (for computing the square root) in
Math::BigFloat. The computation time now mainly depends on the desired
accuracy, not the number of digits in the significand.
* Add support for using "div_scale" as import parameter, like this
use Math::BigFloat div_scale => 80;
* Add better argument checking when the "div_scale" value is set by the
user.
2.000000 2023-10-29
* Merge the Math-BigRat distribution into the Math-BigInt distribution. This
merge eliminates the problems that users have experienced when incompatible
versions of the two distributions have been installed. This fixes CPAN RT
#143228.
* Add method from_dec() to Math::BigRat to make Math::BigRat more consistent
with Math::BigInt and Math::BigFloat.
* To be consistent with Math::BigInt and Math::BigFloat, make it possible to
use "require" with Math::BigRat, e.g.,
require Math::BigRat;
$x = Math::BigRat -> bone();
* Fix cases where "require" doesn't work for Math::BigInt and Math::BigFloat,
and add tests to verify that "require" works for Math::BigInt, Math::BigRat,
and Math::BigFloat.
* Add methods bblsft() and bbrsft() to Math::BigRat to make Math::BigRat
consistent with Math::BigInt and Math::BigFloat. These methods do bitwise
left and right shift, respectively.
* Fix bug in to_oct() and to_bin() in Math::BigFloat. They called to_hex()
when upgrading, but should have called to_oct() and to_bin(), respectively.
* Add to_hex(), to_oct(), to_bin() to Math::BigRat.
* Add new method binv() to Math::BigInt, Math::BigFloat, and Math::BigRat.
* Improve as_float() and as_rat().
* POD updates.
OBS-URL: https://build.opensuse.org/request/show/1136594
OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Math-BigInt?expand=0&rev=94
- updated to 1.999842
see /usr/share/doc/packages/perl-Math-BigInt/CHANGES
1.999842 2023-09-27
* Fix a bug causing Math::BigInt and Math::BigFloat to be caught in an endless
recursion. The bug was introduced when trying to fix
https://github.com/pjacklam/p5-Math-BigInt/issues/8
* Allow div_scale to be 0. It is not documented what div_scale <= 0 means, but
there are modules that set div_scale to 0 (e.g., Astro::Units) and fail
their tests if this is not supported.
1.999841 2023-09-21
* Remove development files that were accidentally included in the
distribution.
1.999840 2023-09-18
* Add methods bblsft() and bbrsft(), which do bitwise left and right shift,
respectively. The binary operators for bitwise left and right shift, "<<"
and ">>", now call the methods bblsft() and bbrsft(), respectively.
While this behaviour is consistent with how "<<" and ">>" work on floating
point numbers in core Perl, it changes how "<<" and ">>" worked on
Math::BigFloat objects. This is a corner case, but any code currently using
"<<" and ">>" on Math::BigFloat objects might need to be modified as follows
$x >>= $y should be changed to $x -> brsft($y)
$x <<= $y should be changed to $x -> blsft($y)
$x >> $y should be changed to $x -> copy() -> brsft($y)
$x << $y should be changed to $x -> copy() -> blsft($y)
* Improve blsft() and brsft(). They now support negative shift values, an
arbitrarily large base, and have better handling of cases involving NaN.
OBS-URL: https://build.opensuse.org/request/show/1114098
OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Math-BigInt?expand=0&rev=92
- updated to 1.999836
see /usr/share/doc/packages/perl-Math-BigInt/CHANGES
1.999836 2022-06-24
* Improve compatibility with older versions of the Math-BigRat distribution.
Math-BigInt version 1.999835 works with Math-BigRat version 0.2623 and newer.
Math-BigInt version 1.999836 works with Math-BigRat version 0.2618 and newer.
* Re-enable upgrading in Math::BigFloat->bdiv().
* Fix an error in the enabling/disabling of upgrading/downgrading.
* Fix typos and other formatting errors.
OBS-URL: https://build.opensuse.org/request/show/985261
OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Math-BigInt?expand=0&rev=84
- updated to 1.999835
see /usr/share/doc/packages/perl-Math-BigInt/CHANGES
1.999835 2022-05-24
* Fix bug related to upgrading in Math::BigInt->brsft(). This bug
only showed up in Perl versions 5.16 and older.
1.999834 2022-05-23
* Further improvements to upgrading and downgrading.
1.999833 2022-05-23
* Fix Math::BigFloat->bpi(). The previous attempt at correcting it
wasn't sufficient. Added test to verify the fix.
* Correct the formatting in the CHANGES file.
1.999832 2022-05-21
* Improve as_int(), as_float(), and as_rat() so that they return a
Math::BigInt, Math::BigFloat, and Math::BigRat, respectivly,
regardless of upgrading and downgrading.
* Improve stringification method bsstr() so that it handles upgrading
and downgrading better.
* Fix Math::BigFloat->bpi(), which unfortunately didn't handle
downgrading.
* Avoid unnecessary downgrading/upgrading.
* Add missed cases where downgrading/upgrading should be performed.
* Avoid unnecessary stringification.
OBS-URL: https://build.opensuse.org/request/show/979962
OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Math-BigInt?expand=0&rev=82
- updated to 1.999829
see /usr/share/doc/packages/perl-Math-BigInt/CHANGES
1.999829 2021-12-29
* Improve methods div_scale() and round_mode() so they work better with
subclasses. This fixes CPAN RT #125430.
* Make div_scale() accept a Math::Big(Int|Float|Rat) object as input. This
fixes CPAN RT #140599.
1.999828 2021-12-17
* Add new methods numerator(), denominator(), and fparts().
* Fix bug in to_ieee754(). Avoid that the significand overflows.
* Improve bpow(). Avoid unnecessary upgrading.
* Fix typos and improve wording.
OBS-URL: https://build.opensuse.org/request/show/946030
OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Math-BigInt?expand=0&rev=77
- updated to 1.999827
see /usr/share/doc/packages/perl-Math-BigInt/CHANGES
1.999827 2021-10-03
* Improve error message for missing library argument.
* Skip tests that don't work on older Perls. Also skip tests that compare
floating point numbers.
1.999826 2021-10-01
* Improve documentation related to floating point literals.
* Skip tests that fail due to Perl's broken handling of floating point literals
before v5.32.0.
1.999825 2021-09-28
* Make Math::BigInt accept integers regardless of whether they are written as
decimal, binary, octal, or hexadecimal integers or decimal, binary, octal, or
hexadecimal floating point number.
* When numeric constants are overloaded (with the ":constant" option) in
Math::BigInt, every numeric constant that represent an integer is converted
to an object regardless of how it is written. All finite non-integers are
converted to a NaN.
* When numeric constants are overloaded (with the ":constant" option) in
Math::BigFloat, every numeric constant is converted to an object regardless
of how it is written.
* Add method from_dec() (cf. from_bin(), from_oct(), and from_hex()). It is
like new() except that it does not accept anything but a string representing a
finite decimal number.
OBS-URL: https://build.opensuse.org/request/show/923767
OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Math-BigInt?expand=0&rev=76
- updated to 1.999824
see /usr/share/doc/packages/perl-Math-BigInt/CHANGES
1.999824 2021-09-20
* Don't allow mixing math libraries. Use the first backend math library that is
successfully loaded, and ignore any further attempts at loading a different
backend library. This is a solution to the re-occurring problem of using
objects using different math libraries.
* Add missing documentation.
* Miscellaneous minor improvements.
OBS-URL: https://build.opensuse.org/request/show/921750
OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Math-BigInt?expand=0&rev=75
- updated to 1.999823
see /usr/share/doc/packages/perl-Math-BigInt/CHANGES
1.999823 2021-07-12
* Improve the handling of the backend libraries. Provide more useful warnings
and error messages. Update the documentation.
1.999822 2021-07-09
* Make the from_hex(), from_oct(), and from_bin() methods consistent with
CORE::oct(), which does not require a leading "0" before the letter ("x",
"o", or "b").
* Make the from_oct() and new() methods accept octal numbers with prefix
"0o", "0O", "o" (lowercase letter o), and "O" (capital letter O).
* Make the from_bin() and new() methods accept binary numbers with
prefix "0b", "0B", "b", and "B".
* Make the from_hex() and new() methods accept hexadecimal numbers with
prefix "0x", "0X", "x", and "X".
* Update test files to match with the above.
1.999821 2021-07-06
* Make new() and from_hex() accept the "0X" prefix, not just the "0x" prefix,
but not accept just "X" or "x". Now, "0XFF" returns 255, not NaN.
* Make new() and from_bin() accept the "0B" prefix, not just the "0b" prefix, but
not accept just "B" or "b". Now, "0B1111" returns 255, not NaN.
* Make new() and from_oct() accept the "0o" and "0O" prefixes, but not accept
just "O" (capital letter O) or "o" (lowercase letter o). Now, "0o377" and
"0O377" return 255, not NaN. Also intepret floating point numbers with a
leading zero and a binary exponent as an octal number, so that "01.4p0"
returns 1.5, not NaN. There is still no ambiguety, since decimal floating
point numbers use "e" or "E" before the exponent, and binary and hexadecimal
floating point numbers use a "0b"/"0B" or "0x"/"0x" prefix, respectively.
1.999820 2021-07-06
* Fix bug and improve error messages in Math::BigInt::import().
1.999819 2021-07-02
* Add method btfac() (triple factorial) and bmfac() (multi-factorial),
including tests and documentation.
* Add missing and correct erroneous documentation for bfac() (factorial)
and bdfac() (double factorial). Also correct handling of special cases
and add tests for these cases.
* Fix error in bsin() and bcos() causing them to hang indefinitely if the
invocand is +/-inf.
* Make it possible for the end user to specify the base length used internally
in Math::BigInt::Calc.
OBS-URL: https://build.opensuse.org/request/show/906075
OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Math-BigInt?expand=0&rev=74
- updated to 1.999817
see /usr/share/doc/packages/perl-Math-BigInt/CHANGES
1.999817 2019-10-11
* Avoid non-integers in intermediate computations in Math::BigInt::Calc. This
causes errors due to rounding issues, e.g., 47265625999999999 / 1000000000
is 47265626 with double precision.
* Remove api_version() and the corresponding test file. There is no need to
check which methods are supported by a backend library now that each backend
library is a subclass of Math::BigInt::Lib. Methods not provided in the
backend library are provided by the parent class.
* Add to_ieee745() and from_ieee754().
* Add backermann() and ackermann() for the Ackermann function.
* Add buparrow() and uparrow() for Knuth's up-arrow notation.
* Add information about the github repository.
* Update links in SUPPORT section in POD.
* Fix bpow(). It returned NaN when it should truncate to zero.
* Make blsft() in Math::BigInt allow bases up until the largest unsigned
integer.
* Make _lsft() in Math::BigInt::Calc handle an arbitrarily large base.
* Add new methods bdigitsum() and digitsum() to Math::BigInt. Add new method
_digitsum() to Math::BigInt::Lib.
* Add new methods is_non_negative() and is_non_positive().
* Extend the default collation sequence used by to_base() and from_base() to
all the 94 printable ASCII characters except blank/space.
* Make new() in Math::BigFloat handle octal floating point numbers.
* Slightly more robust t/01load.t.
* Remove unused variables.
* Miscellaneous code cleanup.
OBS-URL: https://build.opensuse.org/request/show/737899
OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Math-BigInt?expand=0&rev=70
- 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.
- 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
OBS-URL: https://build.opensuse.org/request/show/482418
OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-Math-BigInt?expand=0&rev=63