Changelog for the forth-gmpfr distribution: gmpfr.fs gmpfr-test.fs libgmp-test.fs libgmp-gforth.gs libmfpr-gforth.fs libgmp-iforth.frt libmpfr-iforth.frt libgmp-pfe.fs libmpfr-pfe.fs bindlib.fs btester.fs btester-errors.fs qtester.fs qtester-errors.fs mftester.fs mftester-errors.fs rftester.fs rftester-errors.fs See gmplib-ext.log for version 0.7.0 and earlier of gmplib-ext.c and gmplib-test.fs, which became libgmp-pfe.c and libgmp-test.fs in subsequent versions. The application files complex-rf.fs complex-rf-test.fs zgamma-rf.fs are included in the forth-gmpfr distribution, but their changelogs are to be found in the individual files. Unattributed changes are by David N. Williams. Revision dates in source files may be more recent than the most recent date here, when only cosmetic changes have been made. Version 0.9.2 9Sep20 * Rewrote CAN-PROVIDE to default to true and make non-immediate constants. * Added [ ... ] around the formerly immediate constants in free-accs. * Replaced PROVIDE in gmpfr-test.fs by CONSTANT with IMMEDIATE. 18Jan21 * Updated all testers to version 1.4.3 from 1.4.0. Renamed *-AA= as *-A=. 28Jan21 * Updated to libgmp 6.2.1 and libmpfr 4.1.0. 5Feb21 * Rewrote README. 6Feb21 * Released. Version 0.9.1 NEVER RELEASED Updated pfe to 64 bits with gcc 9.2.0, libgmp from 5.0.1 to 6.0.2, mpfr from 3.0.1 to 4.0.2. 6Dec19 * Added clever rfsign@ conditional on 64 bits to gmpfr.fs. 8Dec19 * In libgmp-pfe.fs: Removed unused #define ulong. Replaced __gmp_const by const, per updated gcc and mgpfr.h. 10Dec19 * Added version constants to libgmp-pfe.fs and libmpfr-pfe.fs and tested with 64-bit pfe. 11Dec19 * Renamed FORTH-GMPFR-LIBRARY as FORTH-GMPFR-VERSION-S, and shortened the text to simply "0.9.1". 12Dec19 * Added to gmpfr-test.fs: UNUM>S GMP-VERSION-S NUMS>VERSION-S Also tests and display of version data. * Replaced deprecated mpfr_root by mpfr_rootn_ui in libmpfr-pfe.fs and gmpfr.fs. No change to gmpfr-test.fs. 13Dec19 * Renamed: old new old new mfa-free free-mfa rfa-reinit reinit-rfa rfa-free free-rfa rfx-reinit reinit-rfx rfx-free free-rfx * Added public word: free-accs * Added tests for the free-xxx words above. 3Jan20 * Fixed a "sprinkling of rounding" bug in libmpfr-iforth.frt reported by George Koslowski, by replacing mpfr_rsxint_round with mpfr_rint_round. * Replace AliasedExtern versions of mpfr_set_emin and mpfr_set_emax by Extern versions. * Removed all references to mpfr_root, deprecated since libgmp 4.0.0, in favor of mpfr_rootn_ui. No change needed for gmpfr.fs. 5Jan20 * Added version constants to libmpfr-iforth.c. * Replaced AliasedExtern: by Extern: where possible in libmpfr-iforth.frt. Not possible in libgmp-iforth.frt because of __func_name. 8Jan20 * Used t{...}t in tests instead of ={...]= with FREE-BSPACE, etc., to avoid a problem with deallocated memory. * Replaced sxint return by void * in mpfr_print_rnd_mode and mpfr_get_version in libmpfr-iforth.frt. * Added DARWIN? and LINUX? conditionals in libgmp-iforth.frt and libmpfr-iforth.frt to select .dylib or .so. 12Jan20 * Added mpfr_stdout to libmpfr-pfe.fs. Need to update gforth and iForth. Version 0.9.0 2Jan12 * Tested with libgmp 5.0.2, and libmpfr 3.1.0 with latest patches, OS X Lion and Snow Leopard, gcc 4.2.1. Passed with gforth 32/64, iForth 32/64, pfe 32. 6Jan12 * Revised gmpfr-test.fs to use BITS/LONG instead of BITS/CELL to select tests, because of problems encountered by Marcel Hendrix with iForth and libgmp/libmpfr on 64-bit Windows, where long is 32 instead of 64 bits. 8Jan12 * Got gmpfr working with iForth 32/64 on Lion, with sxint support in dynlibs.frt 2.01 and miscutil 3.12. 10Jan12 * Bug revealed when freeing of constants was uncommented in complex-rf-test.fs; gmpfr.fs and complex-rf.fs need to have constants make extra copies of externs to prevent multiple freeing of mpfr objects. Revised: BCONSTANT QCONSTANT MFCONSTANT RFCONSTANT ZCONSTANT 11Jan12 * Added tests to gmpfr-test.fs for constants defined by constants. 12Jan12 * Changed license from GPL 2.1 to GPL 3, except in string libraries. * Released. 13Jan12 * Replaced FLOAT+ by CELL+ in Z*, complex-rf.fs. Thanks to Marcel Hendrix. 25Jan18 * Renamed: old new mfarel- mfa-reldiff mfrel- mf-reldiff The gmp and mpfr functions mpf_reldiff() and mpfr_reldiff() use the definition reldiff = |ref - meas| / ref, instead of the commonly defined relative_change = (meas - ref) / |ref|. The previous gmpfr words mfarel-, mf-rel-, rfa-reldiff, and rf-reldiff inverted the order of GNU arguments, to produce a result consistent with the relative change, up to sign. That was a bad idea, being the only known case in forth-gmpfr where the order of Forth stack picture arguments had differed from the gmp and mpfr order, and is now fixed. It is planned to implement relative_change in a future version of forth-gmpfr with words using "rel-" in their names. The words in this and expected future versions with "reldiff" in their names follow the GNU specification. * Updated MFT-REL= and RFT-REL= in mftester.fs and rftester.fs 1.4.0 to use revised reldiff's. * Revised reldiff tests in gmpfr-test.fs for new names and ordering, and added a test for each of the four to nail down the sign. 26Jan18 * Added helpers in gmpfr-test.fs for defining test numbers of all four types, and used them to unclutter some of the tests. 27Jan18 * Added missing tests for MFVARIABLE and RFVARIABLE. 03Feb18 * Regenerated the four testers with updated templates tester.tmpl and fptester.tmpl, which include reploacing -ERROR with -TOLERANCE. * Did the same renaming in gmpfr-test.fs. Version 0.8.8 16Jun11 * Fixed typo in MAKE-RFSPACE: /MPF should have been /MPFR. The two happen to coincide for 32-bit ABI's. This bug was the main hindrance to getting gmpfr to work with the OS X 64-bit ABI. * Fixed bug in mpfr_lgamma binding for 64 bits for gforth and iForth. 17Jun11 * Added long return versions of comparisons to libmpfr_macros.c, and bindings to libmpfr-iforth.frt, for 64 bits. * All tests pass for both 32 and 64 bits, for OS X intel. Universal libs work with gforth, iForth, and pfe. 19Jun11 * Reorganized binding files for gforth and iForth. * Renamed files: old new libgmp_macros.c libgmp-iforth.c libmpfr_macros.c libmpfr-iforth.c. mklibgmp_macros-osx mklibgmp-iforth-osx mklibgmp_macros-linux mklibgmp-iforth-linux mklibmpfr_macros-osx mklibmpfr-iforth-osx mklibmpfr_macros-linux mklibmpfr-iforth-linux 21Jun11 * Confirmed with clean builds that gmpfr-test.fs passes for: gforth OS X ppc 32 and intel 32/64, linux 32 iForth OS X intel 32/64 pfe OS X ppc 32 and intel 32, linux 32 23Jun11 * George Kozlowski figured out how to modify iForth with a new sxint type to handle int returns in 64 bits. 29Jun11 * Hanno Schwalm added sxint support to iForth's dynlibs.frt 2.01 and miscutil.frt 3.12. Changes to libgmp-iforth and libmpfr-iforth to go in next version of forth-gmpfr. Version 0.8.7 4Jun11 * Renamed: old new free-brecs clear-bspace free-qrecs clear-qspace free-mfrecs clear-mfspace free-rfrecs clear-rfspace DEFAULT-/BBUF DEFAULT-/BSPACE DEFAULT-/BBUF DEFAULT-/BSPACE DEFAULT-/QBUF DEFAULT-/QSPACE DEFAULT-/MFBUF DEFAULT-/MFSPACE DEFAULT-/RFBUF DEFAULT-/RFSPACE * Added: free-bspace free-qspace free-mfspace free-rfspace 5Jun11 * Added -mz-ws, used by rf" to purge whitespace, and tests. * Replaced wff by 0<>. * Revised MZBUF-s= in gmpfr-test to check null termination. 6Jun11 * Revised [MZ"] and MZ" to output ( addr len). 14Jun11 * Fixed message in gmpfr-test.fs which said two lines of randoms should be identical when they should be distinct. Thanks to George Kozlowski. Version 0.8.6 9May11 * Renamed rfcomplex as complex-rf. 11May11 * Revised word set selection scheme with variant of Bruce McFarling's [CHECK]. Renamed flags: old new BSTACK-INCLUDED MULTI-INTEGERS QSTACK-INCLUDED MULTI-RATIONALS MFSTACK-INCLUDED MULTI-FLOATS RFSTACK-INCLUDED RELIABLE-FLOATS RANDOMS-INCLUDED RANDOMS 12May11 * Renamed: old new +0>rfa 0>rfa +nan>rfa nan>rfa +inf>rfa inf>rfa * Added: set-IEEE-754 0>b 0>q 0>mf 0>rf -0>rf nan>rf -nan>rf inf>rf -inf>rf * Updated complex-rf files accordingly. 13Mqy11 * Added zgamma-rf.fs to the distribution. Version 0.8.5 7May11 * Renamed: old new set-mfprecision set-default-mfprecision get-mfprecision get-default-mfprecision set-rfprecision set-default-rfprecision get-rfprecision get-default-rfprecision * Added: set-output-mfprecision get-output-mfprecision set-output-rfprecision get-output-rfprecision b, q, mf, rf, * Released rfcomplex.fs and rfcomplex-test.fs 1.0.4. Version 0.8.4 28Mar11 * Started words using libmpfr-gforth.fs bindings for tests. * Added logic to select file components. 31Mar11 * Added: brot -brot bexchange qrot -qrot qexchange mfrot -mfrot mfexchange 3Apr11 * Added RFT-DISPLAY-PRECISION and RFT-RF. 13Apr11 * Added default error constants to mftester and rftester. 19April * Added parentheses to names of former mf., mfa., rf., rfa. Old names now used for words that use PRECISION for printout. * In rftester-errors, removed RFT-DISPLAY-PRECISION and replaced RFT-RF. by rf., which uses PRECISION. 20Apr11 * Glossary almost done, tests pass with 32-bit gforth, osx-ppc. 21Apr11 * Tests pass with 32-bit gforth, linux-intel and osx-intel. * Addded 32/64-bit conditionals to libgmp-gforth.fs. * Started libmpfr-iforth.frt. 22Apr11 * Finished libmpfr-iforth.frt. Added libmpfr_macros.frt. * Tests pass with 32-bit iForth, osx-intel. 23Apr11 * Started bindlib-pfe.fs, to autogenerate C from pfe binding descriptions. The analog of libcc for gforth and dynlibs for iForth. 29Apr11 * Finished bindlib=pfe.fs. 30Apr11 * Finished libmpfr-pfe.fs binding file. Autogenerated libmpfr-pfe.c passed tests. 1May11 * Finished and tested libgmp-pfe.fs, with autogenerated libgmp-pfe.c. Forth-gmpfr passes with gforth, iForth, and pfe under OS X for 32 bits. 2May11 * DROP'd flags left over from executing SET-RFEMAX and SET-RFEMIN in gmpfr.fs and gmpfr-test.fs. * Released. 3May11 * Removed duplicate RFA-SQRT in gmpfr.fs. * Added stack selection switches to gmpfr-test.fs and reordered tests accordingly. 5May11 * Renamed bindlib-pfe.fs as bindlib.fs. * Added tests for reliable float aborts to gmpfr-test.fs. 6May11 * Fixed stack effect for RF-ATAN2. * Started rfcomplex.fs and rfcomplex-test.fs. Version 0.8.0 25Mar11 * Started libmpfr-gforth.fs, for mpfr 5.0.1. 26Mar11 * Renamed distribution as forth-gmpfr. old new gmp.fs gmpfr.fs gmp-test.fs gmpfr-test.fs gmp.log gmpfr.log * Replaced "gmplib" prefixes in file names with "libgmp" prefixes. * Imitated mftester to make rftester.fs and rftester-errors.fs. 27Mar11 * Finished libmpfr-gforth.fs. Loads under OS X Leopard (ppc). * Released current gmp snapshot, without mpfr bindings. Version 0.7.1 23Mar11 * Added conditional -ROT def to gmp.fs, suggested by Sergey on c.l.f. 24Mar11 * Added gmp_version to libgmp-gforth.fs, libgmp-iforth.frt, libgmp_macros.fs. 25Mar11 * Released. Version 0.7.0 16Mar11 * Major renaming of arithmetic words. Still not entirely satisfied with the hyphenation policy. * Added buffer overflow checks for printing words. * Added gmp_macros to gmplib-gforth. 17Mar11 * Added missing bindings to gmplib-gforth. * Works with gforth ppc. Difficulties with gforth intel, because of 64-bit issue. Learned from Charles Turner on the iForth list how to do a universal 32/64 build of libgmp for OS X. 18Mar11 * Fixed iForth issues with libgmp int returns for 64 bits not sign extending, by supplying casts in libgmp_macros.c. * Added tests with negative answers for everything that can give them. Fortunately there were already enough to catch the basic problem. * Gforth and iForth now the same for intel 64 bits. Still some failed tests. 19Mar11 * Fixed embarrassing garbage collection bug in G@, revealed because the 64-bit tests triggered a gc in a btester B@, not present with 32 bits. Embarrassing because the gcrstack-test was supposed to be really comprehensive. The bug was not present in the Zettel bignum B@, the ancestor of G@. * Fixed one-off errors in: 0BT-A 0QT-A 0MFT-A * Passed 64-bit tests. 20Mar11 * Lots of wordsmithing. * Added exception tests. * Committed to mercurial as a release. * Successful build of libgmp 5.0.1 under linux. * Tests pass with pfe and linux. Gforth fails because of lib path. 21Mar11 * Posted distribution and made preliminary announcement on iForth list. 22Mar11 * Main problem with gforth was an outdated libcc.fs. Updated gforth for OS X and linux, and it all works. * Posted multiprecision web page, announced in comp.lang.forth. Settled on forth-gmp as name of distribution. Version 0.6.0 4Mar11 * Big bump in version number. * Revised B" to make a dynamic record in interpret mode, and to restore bspace on invalid big num exception. Garbage collection is a nice replacement for transience. * Updated MF" to imitate B". * Added default precision words. * Added missing iForth bindings. 5Mar11 * Added constants to libgmp_macros.c. 7Mar11 * Precision words and mf accumulator precision flow. * Added MAKE-MFSPACE to simplify the user interface. * Extracted factor from MF" to help with getting other numbers directly into dynamic mf records and onto the mfstack. * Everything so far works with pfe and iForth. 8Mar11 * Added integer conversions for bstack and accumulator. * Factored B", like MF". 9Mar11 * Finished mf arithmetic. 10Mar11 * Started rationals, wrote qtester and qtester-errors. * Added MAKE-BSPACE. * Finished rationals through accumulator arithmetic. * Added more missing iForth bindings. Tests passed. 11Mar11 * Added rationals stack arithmetic. * Added mixed stack words. 12Mar11 * Added mixed accumulator words, and mixed num den words. 13Mar11 * Started and finished randoms. 14Mar11 * All gmp words implemented and tested with pfe and iForth. 15Mar11 * Fixed a hard to find bug introduced by cleanup. The gcrstack and gmp copy and initialization code seems solid. * Added sizeof_gmp_randstate to libgmp_macros.frt. Version 0.5.3 20Feb11 * Changed "bn" prefix to "b"; btester can now be used with both gmp and Zettel bignums. * Integer add/subtract finished. * Started iForth bindings. 21Feb11 * Added multiply, add-multiply, subtract-multiply. 22Feb11 * Added accumulator and bstack division words. Finally removed arithmetic on the supplemental accumulator. 24Feb11 * Added FREE-BCONSTANTS, and revised BCONSTANT to build a linked list for it. * Did gforth bindings. Not passing tests yet. 25Feb11 * Gforth passes with OS X ppc. Have to sort out 64-bit default for libgmp build vs. 32-bit gforth on OS X intel. 26Feb11 * Added a third accumulator for gcd, etc. * The iForth list came through; staring iForth bindings for real. 27Feb11 * Adopted names for binding files: gmplib-ext.c gmplib-iForth.frt gmplib-gforth.fs * iForth passes gmplib tests. 28Feb11 * Wrote libmgmp_acros.c for iForth, added bindings to gmplib-iForth.frt. * iForth passes gmp-test. 1Mar11 * Finished number theoretic functions. Very time consuming. * Finished logic and bits. 2Mar11 * Started floating point. * Wrote mftester and mftester-errors. 3Mar11 * Made MF" write a dynamic mf in intepreter mode. * Default precision not to be used in gcrstack internals, only by client words that create new records, whether dynamic or external. Basic flow of precision changes to be through accumulator. * Added some accumulator and stack arithmetic. Only one accumulator each needed for floats and rationals. Version 0.5.2 8Feb11 * Removed accumulator from gcrstack, put BNA, BNX, and BNY in gmp. * Removed arithmetic on BNX and BNY. Extra accumulators just for results. * Revised BNCONSTANT to use GS>EXTERN. 9Feb11 * Added: BN+ BN- 20Feb11 * Bindings mostly finished for pfe. No more binding test development. Switching to stack tests. Version 0.5.1 7Feb11 * Finished basic integer stuff, bnspace and bnstack, string input and output, comparisons needed for testing, and: BN" BN. BNCONSTANT Version 0.5.0 2Feb11 * Started gmp.fs and gmp-test.fs. 5Feb11 * Imitated xtester to write bntester and bntester-errors, version 1.5.0.