Project 44: Arithmetic specification Pasadena 1984: =============== (Hull - Cody): Should WG 2.5 try to agree on recommended specifications for floating point arithmetic and related functions? They could look something like the following: The arithmetic must be well documented and the documentation should include (1) base, precision, minexp, maxexp (2) accuracy - results of 4 arithmetic operations rounded to nearest (nearest even in case of a tie) [ref. to IEEE] - but, if not, at least explain how results are obtained and, in any event, provide rreb (for relative round off error bound) such that fl(a op b) = (a op b)(1+eps) where |eps| <= rreb and rreb is at most 1 or 2 ulps (units in the last place). (3) in case an exception (overflow, underflow, indeterminate, or zerodivide) arises, - the type of exception should be made known - provision should be made for continuing with the computations All the above applies both at the hardware level and at the language level. At the language level, the 5 parameters (base, precision, mine; maxexp, rreb) may also be made available through environment enquires! Certain related operators should also be available. These include - relational operators (there should be exact) - mod (should be exact for all floating arguments - but can raise an exception, except overflow) - div (can raise integeroverflow) - setexp, getexp (the latter can raise overflow or underflow) - conversions to and from integer (integeroverflow may be raised in conversion to integer, a rounding error may occur in conversion from integer) - flow, ceil, round (may raise integeroverflow) - I/O conversions (rounded) The group votes on the usefulness of such a document : 12 yes, 0 no and 4 abstentions. Cody, Lawson and Hull agree to prepare a document. They will circulate it to Smith, Ford, Aird, Einarsson, Feldman, Reid, Paul. Sophia-Antipolis 1985: ====================== Floating point validation package (Ford) ---------------------------------------- A package for testing floating-point arithmetic has been developed at NAG Central Office, in collaboration with Dr. B.A. Wichmann of the National Physical Laboratory. The testing strategy is similar to that used by Dr. N.L. Schryer (A.T. & T. Bell Laboratories) in his program FPTST, but includes a number of extensions. The Brown model of floating-point arithmetic is used to provide a generally applicable criterion of correctness, but the package can also check for conformity with certain specific rounding rules. Values must be supplied to the package for the basic parameters of the model: base, precision, and minimum and maximum exponent. The following operations are tested: addition, subtraction, multiplication, division, square root, negation, absolute value, and comparisons. The package (called FPV) has been written in both Fortran and Pascal versions. If desired, the operation of the package can be split into two phases: generation of a file of test data, followed by execution of the tests (possibly on a different machine). This makes it easier to test arithmetic on small microcomputers, and in other languages (e.g. Ada, Basic), since only the program for the second phase need be translated. The package is being prepared for marketing by NAG. It has already detected errors in floating-point arithmetic on the following systems: DEC VAX-11 (Software for G- floating and H-floating formats): ICL 2988: Cray-1 (double precision routines in COS 1.14). Como 1987: ========== Hull: An algorithm for specifying arithmetic and other basic operations such as div and mod and the directed roundings was presented, but no decision was made on where this might head. Stanford 1988: ============== T. Hull will provide a closing document for this project. Jerusalem 1990: =============== Hull suggested merging [44] and [54] with [63] (Vouk). Accepted. Project [44] closed.