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.