Revision history for Perl module Math::GMPq 0.67 - Correction to t/overload_cross_class.t. Only relevant if a pre-4.19 version of Math::MPFR is loaded. Fixes https://www.cpantesters.org/cpan/report/a75afb86-6d32-1014-b14f-669fb03d33c9 - When overloaded +=, -=, *=, /=, %=, and **= operations return a Math::MPFR object, the bit-precision of that returned Math::MPFR object is the same as the bit-precision of the Math::MPFR object that was provided as an argument. (Previously, these returned objects were given current Math::MPFR default precision.) 0.66 - Correct some some mistakes (introduced in 0.65) in assigning values of some strings. - Allow a leading '+' in both numerator and denominator strings. GMP's mpq_set_str() does not permit this - so this is new behaviour. 0.65 - Enhancements added to Rmpq_set_str - allow some more strings that mpq_set_str will not accept to be passed to Rmpq_set_str. (Details in POD.) - Clarification of OPERATOR OVERLOADING in POD. - Modify t/new.t to allow for old versions (pre 4.15) of Math::MPFR. Fixes: http://www.cpantesters.org/cpan/report/df6770b4-043e-11f0-8390-311d6e8775ea - Add (utility) function mpfr2mpq(). 0.64 - Allow new() to accept a Math::MPFR object as its argument. - Make correction to t/overload_cross_class.t. Fixes (eg) http://www.cpantesters.org/cpan/report/4f91f402-ff5f-11ef-a428-86166e8775ea. 0.63 - Make correction to t/overload_op_eq.t. Fixes (eg) http://www.cpantesters.org/cpan/report/4879e26c-fec7-11ef-9b7a-29fb6d8775ea. 0.62 - Remove $Math::GMPq::RETYPE and all references to it. (The option to turn off the cross-class operator overloading no longer exists.) - Simplify "overloading" documentation. - Allow Math::GMPq to overload cmp ops between Math::GMPq and Math::MPFR objects. Previously this could be handled only by Math::MPFR overloading of the cmp ops. 0.61 - Fix typo in GMPq.xs that caused https://rt.cpan.org/Ticket/Display.html?id=160045. Affected old perls only - circa version 5.16.x (5.18?) and earlier. 0.59 - Rectify omission of Math::GMPz version check in t/overload_mod.t Fixes https://rt.cpan.org/Ticket/Display.html?id=160044 0.58 - Add overloading of '%' and '%='. - Add oveloading of '&', '|', '^', '~', '>>' and '<<' for compatibility with perl and Math::BigRat. - Allow new() to assign strings of the form (eg)'2.014' or '201.4e-2'. In both of those instances the object would be assigned the value '1007/500' - which differs from the value assigned by the NV 2.014. By default, on perls whose NV is 'double', '4535124824762089/2251799813685248 would be assigned ny 2.014. 0.57 - On Windows only: set the constant GMPQ_WIN32_FMT_BUG to 0 if the gmp library was built with -D__USE_MINGW_ANSI_STDIO; else set it to 1. - Fix https://rt.cpan.org/Public/Bug/Display.html?id=158590 Thanks to @twata_1. - Change initial setting of Math::GMPq::RETYPE from 0 to 1. 0.56 - Skip Math::MPFR checks in t/overload_cross_class.t and t/overload_op_eq.t if $Math::MPFR::VERSION < 4.19 - Avoid monitoring PL_markstack_ptr in GMPq.xs and Random/Random.xs 0.55 - Fix bugs in t/overload_op_eq.t 0.54 - Expand cross-class overloading to include +=, -=, *=, /=, and **= operations, conditionally available only when $Math::GMPq::RETYPE has been set to 1. - Simplify overloading of '++' and '--'. 0.53 - Add Random/t/a_v_random.t - Accommodate MS Visual Studio builds 0.52 - Limit test in Makefile.PL for GMPQ_PV_NV_BUG to perl-5.35.9 and earlier. - Enable building on Cywin quadmath builds. (Add '-lquadmath' to LIBS.) 0.51 - Fix bug re inconsistent settings of POK and NOK flag, which manifests itself as (eg): http://www.cpantesters.org/cpan/report/dc52fbe6-900b-11ec-bfc9-d1f1448276d4 It's a bug that rarely bites, and applies mainly (but not only) to perl-5.18.x and earlier. 0.49 - Fix https://github.com/sisyphus/math-decimal64/pull/1 (also aplies to Math::GMPq) Thanks to @hiratara - Remove all references to _MSC_VER 0.48 - Fix Rmpq_cmp_NV for doubledouble NVs. - Fix overloading of comparison operators for doubledouble NVs - Add Rmpq_set_IV and Rmpq_cmp_IV functions. - Add POK_flag(), IOK_flag(), NOK_flag (@EXPORT_OK only) - 2nd and 3rd args to Rmpq_cmp_IV and Rmpq_set_IV must have its IOK flag set. - 2nd arg to Rmpq_cmp_NV and Rmpq_set_NV must have its NOK flag set. 0.47 - Add "use warnings;" to GMPq.pm. - Refactor IV/UV/NV/PV handling inside overload subs. - Fix bug in overload_equiv. (A cast to 'long double' needed to become a cast to '__float128'. - Add Rmpq_get_NV function. - Fix Rmpq_set_NV for doubledouble NVs. - Add '0+' overloading. - Simplify Makefile.PL and README - Replace XS defines NV_IS_FLOAT128 and NV_IS_LONG_DOUBLE with USE_QUADMATH and USE_LONG_DOUBLE (which are already defined by perl headers). 0.46 - Fix bug in t/divby0.t. - Create header file math_gmpq_include.h. - Prototype subroutines listed in 'use subs()'. 0.45 - Fix and test for division by 0. (Now croaks on divby0 instead of crashing.) Fix (and test) Rmpq_z_div for the case when z == 0. 0.44 - Fix bugs in t/z_arith_2.t and t/z_arith_overload.t. (Hadn't checked for Math::GMPz availability.) - In a couple of Newxz() calls, cast "buffer_size + 5" to int. (Previously missed.) 0.43 - Add Rmpq_add_z, Rmpq_sub_z, Rmpq_z_sub, Rmpq_mul_z, Rmpq_div_z, Rmpq_z_div and Rmpq_pow_ui. (With assistance from Trizen.) - Allow overloading of '+', '-', '/', '*' and '**' operations with Math::GMPz objects. - Extend Rmpq_cmp_z to work with Math::GMPq built against earlier (pre 6.1.0) versions of the gmp library. 0.42 - Replace the condition "if(SvNOK(x))" with "if(SvNOK(x) && !SvPOK(x))". See https://github.com/sisyphus/math-gmpz/issues/1 (Thanks trizen.) - Add __float128 support for perls whose NV is __float128 - Remove _Rmpq_set_ld, add Rmpq_set_NV and Rmpq_cmp_NV. - Add _is_infstring, for use with overloaded comparison operators. 0.41 - Remove gmp_v from Math::GMPq::V as we don't want any library functions in that module - Replace SvUV/SvIV/SvNV with SvUVX/SvIVX/SvNVX where appropriate. (In typemap, too.) - In Rmpq_set_si() change prototypes from 'int' to 'long'. (Thanks trizen.) 0.39 - Add Rmpq_integer_p(), though mpq_integer_p() is not currently implemented in gmp. - PREREQ_PM => {'Exporter' => '5.58'} to avoid test failures on pre perl-5.8.4 (Thanks Peter Acklam.) 0.38 - Tweaks to Math::GMPq::gmp_v() and Math::GMPq::V::gmp_v() - Add metadata to Makefile.PL. - No longer define USE_64_BIT_INT if ivtype is 'long'. - Rename USE_64_BIT_INT #define to MATH_GMPQ_NEED_LONG_LONG_INT. - Replace mpq_cmp() with the faster mpq_equal() in overload_equiv and overload_not_equiv. - Add mpq_cmp_z support. (Added in gmp-6.1.0.) - Modify overloaded comparison functions to cover comparison with mpz_t (gmp-6.0.99 and later only) 0.37 - Alter wrap_gmp_sprintf and wrap_gmp_snprintf to take an extra arg (length of buffer to which we write). - Remove Rmpq_sprintf_ret and Rmpq_snprintf_ret. (These now seem pointless in view of the changes to wrap_gmp_sprintf and wrap_gmp_snprintf.) - Add Math::GMPq::__GNU_MP_RELEASE. - Alter V.xs to accommodate the possibility that the global constant gmp_version has not been set in gmp.h. I've assumed this can only happen if the gmp library version is earlier than 4.0.0. (The gmp ChangeLog indicates that this is so.) - No longer include inttypes.h on the basis of USE_LONG_DOUBLE being defined. (Was harmless ... but didn't make much sense.) - Define PERL_NO_GET_CONTEXT (in XS code). 0.36 - Fix test 3i in new.t. (It wasn't allowing for the case where perl was built with long double support, but ivsize was still 4. - Alter the way that strEQ gets hold of HvNAME(SvSTASH(SvRV(sv))) - so that -Wall doesn't emit "null argument" warnings. (Thanks Daniel Kahn Gillmor.) 0.35 - Add Math::GMPq::V - Add overload_inc and overload_dec functions. - Accommodate cross-class overloaded arithmetic with Math::MPFR. 0.33 - Remove 'not' from overloads. Apparently achieved nothing anyway, and 5.16 warns that it's invalid. 0.32 - In the documentation, elaborate on the way that Math::GMPq::get_v() and __GNU_MP_VERSION & friends determine their values. (Thanks Vincent Lefevre.) 0.31 - Fix Random.xs so that it compiles with gmp-4 (not just gmp-5). Thanks Rob Kuo (https://rt.cpan.org/Ticket/Display.html?id=58501) 0.29 - Add random functions. - Add Rmpq_snprintf and Rmpq_snprintf_ret. - If there's no variable to be formatted, Rmpq_(f/s)printf no longer need to be supplied with a dummy variable. - Some buggy tests in printf.t hopefully fixed. 0.28 Requires gmp-4.2.0 or later. In response to bug http://rt.cpan.org/Ticket/Display.html?id=46499: - Amendment to Makefile.PL wrt 'long long' and 'long double' support. - Remove reliance on $Config{use64bitint} in t/new.t and t/out_str.t - Add some MAC OS X notes to README and fix some typos. In response to bug http://rt.cpan.org/Ticket/Display.html?id=46604 - Fix ___GMP__CC() and ___GMP_CFLAGS() so that they return undef if __GMP_CC and __GMP_CFLAGS are not defined by the gmp library. Thanks, Bob Kuo and Jonathan Leto. 0.27 - Requires gmp-4.2.3 0r later. - Add Rmpq_fprintf, Rmpq_sprintf and Rmpq_sprintf_ret. - Change Rmpq_sprintf to return the number of characters written. - Add __GNU_MP_VERSION, __GNU_MP_VERSION_MINOR, __GNU_MP_VERSION_PATCHLEVEL, __GMP_CC and __GMP_CFLAGS - Change Rmpq_printf() so that, like its fprintf and sprintf counterparts, it formats only one variable at a time. 0.24 - Replace the PerlIO* objects stuff in _TRmpfr_* functions (added in 0.23) with FILE* objects ... so that the module will still build on perl 5.6. 0.23 - Add TRmpq_out_str and TRmpq_inp_str. - Rmpq_out_str now takes an optional (leading) string argument - a string that will be prepended to the mpq_out_str() output. - Remove the tests in the Makefile.PL that test for the presence of a suitable compiler and GMP library. 0.11 - Add overloaded int() function - Rewrite new() - Rmpq_out_str() now takes an optional third argument - a string that will be appended to the mpq_out_str() output. Also stdout is fflush()'d each time Rmpq_out_str() is called. - The overload functions and new() can now handle a long double value correctly 0.10 - First CPAN release - No longer assign Exporter and DynaLoader to @Math::GMPq::ISA. - Add support for perls built with use64bitint - add new() function/method to facilitate initialization/assignment