ChangeLog for complex-kahan.fs Unattributed changes are by David N. Williams. The last revision date in the source file may reflect cosmetic changes not recorded here. Version 1.0.3 9Dec10 * Added COMPLEX, COMPLEXES, and COMPLEX+. 10Dec10 * Revised calculation of BITS/FLOAT and made it visible. * Added double extended constants. 11Dec10 * Fixed incorrectly rounded double version of T2P1. 12Dec10 * Adjustments for iForth FASINH and FLNP1. Version 1.0.2 18Aug09 * Fixed FLOATING-EXT and FLOATING-STACK environmental queries to guarantee an ABORT when the floating- point stack is not separate. 25Nov10 * Revised SIGNBIT to return well-formed flag. * Added .F[BL|-] and .F[+|-]I and revised Z. and ZS. to use them. Definitions same as in complex.fs. 27Nov10 * Replaced bootstrapped [UN] by Forth 200x [UNDEFINED]. * Upper cased: ZVARIABLE ZCONSTANT ZLITERAL * Removed blank trailing "i" in Z. and ZS.. 28Nov10 * Replaced refs to pfe FPIEEE by IEEEFP, with renamings and functional adjustments according to the Forth 200x IEEE-FP proposal. 29Nov10 * Reviewed Kahan algorithm for |Z| and ZSSQS in light of new GET-FFLAGS and SET-FFLAGS, and simplified. * Simplified conditional definition of Z2* and Z2/. Version 1.0.1 28Jun09 * Renamed FPFRAME{ and }FRAME as FPFRAME>R and R>FRAME to avoid conflict with FSL array naming. Version 1.0 18May09 * Added ABORT when bits/float is neither 32 nor 64. * Renamed Inf as +Inf. Version 0.8.10 20Sep08 * Renamed F-ROT as -FROT. * Added ZROT, -ZROT, and ZLITERAL. 21Sep08 * Added list of words and url's for references. * Replaced 0. by 0 0 . * Renamed constants with (...) to use [...]. 22Sep08 * Removed EXIT from ZLITERAL throw phrase. 4Mar09 * Renamed NONAME as FNONAME to avoid name clash with gforth. * Revised ZCONSTANT based on Anton Ertl's portable definition of CONSTANT, which doesn't use DOES>. 15Mar09 * Added a comment that NaN fconstants are quiet. * Added a disclaimer for the signs of NaN's produced by words like Z^. * Renamed NaN as +NaN. * Replaced "0e 0e 0e z/f" by "+NaN +NaN" in ZBOX. 18Mar09 * Revised machine parameters so they're defined only if floats are 64 or 32 bits. Version 0.8.9 24Apr05 * Renamed minimal words in more telegraphic jvn style. Renamed (-I)* as -I*. * Added formula comments to inverse functions. Version 0.8.8 26Jan05 * Added use of the FPIEEE-EXT environment when available to implement floating-point exception parts of Kahan's algorithms. Added to |Z|, ARG. 28Jan05 * Finished adding optional ZSSQS. * Discovered that Kahan's EPSILON is machar's EPSNEG, instead of EPS. 29Jan05 * Added optional overflow/underflow avoidance to ZSQRT. 30Jan05 * Added ZLNS. After checking *many* possibilities, puzzled why zln.fs doesn't give the same results as with the pfe COMPLEX-EXT environment. 31Jan05 * Traced the reason to the difference between C-compiled "x*x + y*y" and "FDUP F* FSWAP FDUP F* F+". The former apparently keeps things in registers enough to benefit from the G4/PPC guard bit, while the latter moves everything back and forth in memory. 6Feb05 * Added conditional FPIEEE versions of F2* and F2/. * Changed INFINITY to INF, which is defined as an fconstant, for systems whose floating point number interpretation doesn't include it. Added constants for -INF and NAN as well. 12Feb05 * Replaced ZCOSH with more accurate version that preserves signed zero on the real axis. 15Feb05 * Removed all references to Z=0, etc., in favor of 0E 0E, etc. Version 0.8.7 14Jan05 * Fixed bug in not to be reached branch of ZBOX. 15Jan05 * Fixed sign of zero output bug in imaginary part of Z. and ZS. * Changed ZBOX to conserve signs for all cases, contrary to Kahan, p. 198, but in agreement with its use in ARG, p. 199. Version 0.8.6 13Jan05 * Demoted Z*F, Z/F, F*Z, F/Z to synonyms for new mixed mode nomenclature ZF*, ZF/, FZ*, FZ/, to be settled later. Added remaining Kahan minimal computation words ZIF*, ZIF/, IFZ*, IFZ/. Versions 0.8.3-0.8.5 13Jan05 * Skipped to synchronize with pfe. Version 0.8.2 5Mar03 * Release with changes under 0.8.1. Passes all our tests, including those for signed zero. But the more exotic tests are incomplete. 28Nov04 * Removed missing Z*IF and IF*Z and a duplicate Z*F from comments. For completeness, Z*IF, IF*Z, I/Z, IF/Z, and Z/IF should be added. Version 0.8.1 22Feb03 * Replaced Z. and ZS. with jvn's code for Krishna Myneni's suggestion to factor out the sign of the imaginary part. * Added raw single precision constants R2P1 and T2P1, used in |Z|. 24Feb04 * Added sign of zero output in Z. and ZS.. Version 0.8.0 16Jan03 * Start by moving Kahan versions out of complex.fs, our mods to Julian V. Noble's complex.f. 22Jan03 * Added ZF*, FZ*, ZF/, FZ/. * Fixed COPYSIGN to work with -0. 23Jan03 * Added ZBOX. * Painfully computed Kahan constants R2P1 and T2P1. 2Feb03 * Installed less painful system for exact constants. 4Feb03 * Added SIGNBIT, and revamped COPYSIGN. 5Feb03 * Added portable F=. * Debugged ZATANH. Hard! 7Feb03 * Added cheap flocals. Rewrote |Z|, tested accuracy. 8Feb03 * Added Kahan algorithm for ZTANH 9Feb03 * Rewrote inverse functions with cheap locals. Did formal tests. 11Feb03 * Added Kahan algorithm for ZSQRT 12Feb03 * Added Kahan algorithms for ARG and ZLN. 14Feb03 * Fixed signed zero treatment for ZSINH, various others. 15Feb03 * Tested ZLN accuracy. 17Feb03 * Revised F=. * Changed names ZX+, etc., to X+, etc. 18Feb03 * Changed names of ZF*, FZ*, ZF/, FZ/ to Z*F, F*Z, Z/F, F/Z. 20Feb03 * Release.