diff options
Diffstat (limited to 'test/math/ieetst.doc')
-rw-r--r-- | test/math/ieetst.doc | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/test/math/ieetst.doc b/test/math/ieetst.doc deleted file mode 100644 index bd5134beb..000000000 --- a/test/math/ieetst.doc +++ /dev/null @@ -1,132 +0,0 @@ - - ieetst, version 0.2 - - This software tests the numerical accuracy of floating point -binary <-> decimal string conversion, as done by your C language -library functions printf() and scanf(), for compliance with the -IEEE arithmetic standards ANSI/IEEE Std 754-1985 and ANSI/IEEE -Std 854-1987. The test covers 32-bit float, 64-bit double, and -80-bit long double precision conversions to and from decimal -ASCII strings. - - The test program checks for proper implementation of the -following specifications of the standards: - - (1) correctly rounded conversions of numbers of the form M * - 10^N, where M and N are integers such that, in double precision, - for example, |M| < 10^17, |N| <= 27. - - (2) binary -> decimal -> binary conversions to be an identity - if a sufficiently large number of decimal digits is requested. - - (3) correctly rounded decimal outputs of less than the maximum - number of digits - - (4) The maximum observed conversion error of numbers outside the - domain covered by (1) is reported by the test program; it is - not supposed to exceed 0.97 ulp. - -There are 10 separate tests. Tests 1 through 6 use values near -2^n and 10^n. Test 7 addresses item (1) above. Test 8 checks -the rounding of exact half-integer numbers. Test 9 is for item -(4) above. Test 10 checks denormal numbers. Tests 8 through 10 -address item (3) using printf formats that produce outputs of 1, -2, 3, ... digits after the decimal point. All tests check, when -appropriate, that the binary output of scanf is the same as the -binary input to printf, item (2). - -Example error messages: - - 0000 0000 0000 1000 8000 3f80 ->printf-> 5.87748296e-39 ->scanf-> - 0000 0000 0000 0000 8000 3f6e is not an identity. - - scanf(-9.9999900000000003e-01) -> 0000 4800 085f ef39 ffff bffe - should be 0000 5000 085f ef39 ffff bffe . - - printf("%.14e", 6.13592315154256467968352E-3) -> 6.13592315154257e-03 - should be 6.13592315154256E-3 . - -Binary values are displayed as four-digit hex groups in the -little-endian format of the internal reference arithmetic. The -least significant 16-bit word is first, the exponent is last. - - The design of the test program requires knowing the binary -data structure of the floating point format under test. For -configuration, check the .h files carefully. All the programs -need to be told via mconf.h if the numeric format is -little-endian (IBMPC) or big-endian (MIEEE). If your system -supports an 80-bit long double precision data type, define -LDOUBLE 1 in ieetst.c; otherwise define LDOUBLE 0. A provision -for DEC PDP-11/VAX numbers is implemented (double precision -only). Conversions for other data structures can be added by -analogy to the ifdefs for DEC. - - Most of the tests rely on comparison with the results of a -portable reference arithmetic, contained in the file ieee.c. -This is configured for an 80-bit significand, to have enough -precision to satisfy the conversion requirements of IEEE 854 for -the extended double format of IEEE 754. The reference arithmetic -includes binary <--> ASCII conversion routines and single <--> -double <--> extended double conversions. A strictly rounded -square root function is given in esqrt.c. Additional functions -are provided by elog.c, eexp.c, etanh.c, epow.c, all of which -call on ieee.c for their arithmetic. Some of the ANSI C -functions are supplied in ieee.c; for example, efloor(), -efrexp(), eldexp(). The functions and the reference arithmetic -are described further in the book _Methods and Programs for -Mathematical Functions_ (Prentice-Hall or Simon & Schuster -International, 1989), by S. L. Moshier. - - As an aid in diagnosis, a calculator program, ecalc.c, is -supplied. It uses ieee.c for its arithmetic. Documentation for -the calculator's user interface is in the file calc100.doc -(calc100 is a fuller featured 100-digit version of ecalc). The -calculator needs to be told by qcalc.h if addresses are 32 bits -long (define LARGEMEM 1) or 16 bits long (define LARGEMEM 0). - - Because the source code of ieee.c is included here, a version -of W. Kahan's PARANOIA is also provided; this has been heavily -modified by substituting subroutine calls to ieee.c in place of -all arithmetic operators. It is important that you use PARANOIA -to check the arithmetic after any modifications you may make to -ieee.c. - - Several systems have been tested with the initial version of -ieetst. Sun 4 (SPARC) passes; DEC VMS C has only a small flaw; -Microsoft flunks; ATT SysVR2 (Motorola) flunks even worse. - - - Files: - -calc100.doc calculator documentaton -descrip.mms part of VAX VMS makefile -drand.c random number generator -ecalc.c calculator -ecalc.opt part of VAX VMS makefile -econst.c constants for reference arithmetic -eexp.c reference exponential function -ehead.h declarations for reference arithmetic routines -elog.c reference logarithm -eparanoi.c floating point arithmetic tester -eparanoi.opt part of VAX VMS makefile -epow.c reference exponentiation -esqrt.c reference square root -etanh.c reference hyperbolic tangent -etodec.c conversions to and from DEC double precision format -ieee.c the reference arithmetic -ieetst.c printf/scanf tester -ieetst.doc this file -ieetst.mak Microsoft make file -ieetst.opt part of VAX VMS makefile -makefile Unix make file -mconf.h definitions for arithmetic format -mtherr.c common error reporter -qcalc.h definitions for calculator - - -This software may be copied freely. - --- Steve Moshier - -v0.1 July, 1992 -v0.2 January, 1993 |