Subscribe

Issue No.02 - February (2009 vol.58)

pp: 148-162

John Harrison , Intel Corporation, Hillsboro

Cristina Anderson , Intel Corporation, Hillsboro

Ping Tak Peter Tang , Intel Corporation, Hillsboro

Eric Schneider , Intel Corporation, Hillsboro

Evgeny Gvozdev , Intel Corporation, Hillsboro

DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/TC.2008.209

ABSTRACT

The IEEE Standard 754-1985 for Binary Floating-Point Arithmetic [19] was revised [20], and an important addition is the definition of decimal floating-point arithmetic [8], [24]. This is intended mainly to provide a robust reliable framework for financial applications that are often subject to legal requirements concerning rounding and precision of the results, because the binary floating-point arithmetic may introduce small but unacceptable errors. Using binary floating-point calculations to emulate decimal calculations in order to correct this issue has led to the existence of numerous proprietary software packages, each with its own characteristics and capabilities. The IEEE 754R decimal arithmetic should unify the ways decimal floating-point calculations are carried out on various platforms. New algorithms and properties are presented in this paper, which are used in a software implementation of the IEEE 754R decimal floating-point arithmetic, with emphasis on using binary operations efficiently. The focus is on rounding techniques for decimal values stored in binary format, but algorithms are outlined for the more important or interesting operations of addition, multiplication, and division, including the case of nonhomogeneous operands, as well as conversions between binary and decimal floating-point formats. Performance results are included for a wider range of operations, showing promise that our approach is viable for applications that require decimal floating-point calculations. This paper extends an earlier publication [6].

INDEX TERMS

Computer arithmetic, multiple-precision arithmetic, floating-point arithmetic, decimal floating-point, computer arithmetic, correct rounding, binary-decimal conversion.

CITATION

John Harrison, Cristina Anderson, Ping Tak Peter Tang, Eric Schneider, Evgeny Gvozdev, "A Software Implementation of the IEEE 754R Decimal Floating-Point Arithmetic Using the Binary Encoding Format",

*IEEE Transactions on Computers*, vol.58, no. 2, pp. 148-162, February 2009, doi:10.1109/TC.2008.209REFERENCES

- [1] G. Bohlender and T. Teufel, “A Decimal Floating-Point Processor for Optimal Arithmetic,”
Computer Arithmetic: Scientific Computation and Programming Languages, pp. 31-58, Teubner Stuttgart, 1987.- [2] S. Boldo and G. Melquiond, “When Double Rounding Is Odd,”
Proc. 17th IMACS World Congress, Scientific Computation, Applied Math. and Simulation, 2005.- [3] W. Buchholz, “Fingers or Fists? (The Choice of Decimal or Binary Representation),”
Comm. ACM, vol. 2, no. 12, pp. 3-11, 1959.- [4] F.Y. Busaba, C.A. Krygowski, W.H. Li, E.M. Schwarz, and S.R. Carlough, “The IBM z900 Decimal Arithmetic Unit,”
Proc. 35th Asilomar Conf. Signals, Systems and Computers, vol. 2, p. 1335, Nov. 2001.- [5] M.S. Cohen, T.E. Hull, and V.C. Hamacher, “CADAC: A Controlled-Precision Decimal Arithmetic Unit,”
IEEE Trans. Computers, vol. 32, no. 4, pp. 370-377, Apr. 1983.- [6] M. Cornea, C. Anderson, J. Harrison, P.T.P. Tang, E. Schneider, and C. Tsen, “An Implementation of the IEEE 754R Decimal Floating-Point Arithmetic Using the Binary Encoding Format,”
Proc. 18th IEEE Symp. Computer Arithmetic (ARITH '07), pp. 29-37, 2007.- [7] M.F. Cowlishaw, “Densely Packed Decimal Encoding,”
IEE Proc.—Computers and Digital Techniques, vol. 149, pp. 102-104, May 2002.- [8] M.F. Cowlishaw, “Decimal Floating-Point: Algorism for Computers,”
Proc. 16th IEEE Symp. Computer Arithmetic (ARITH '03), pp.104-111, June 2003.- [9] M.F. Cowlishaw,
The decNumber Library, http://www2.hursley. ibm.com/decimaldecnumber.pdf , 2006.- [10] A.Y. Duale, M.H. Decker, H.-G. Zipperer, M. Aharoni, and T.J. Bohizic, “Decimal Floating-Point in z9: An Implementation and Testing Perspective,”
IBM J. Research and Development, http://www.research.ibm.com/journal/rd/511 duale.html, 2007.- [11] M.A. Erle, J.M. Linebarger, and M.J. Schulte, “Potential Speedup Using Decimal Floating-Point Hardware,”
Proc. 36th Asilomar Conf. Signals, Systems, and Computers, pp. 1073-1077, Nov. 2002.- [12] M.A. Erle and M.J. Schulte, “Decimal Multiplication via Carry-Save Addition,”
Proc. IEEE 14th Int'l Conf. Application-Specific Systems, Architectures, and Processors (ASAP '03), pp. 348-358, June 2003.- [13] European Commission,
The Introduction of the Euro and the Rounding of Currency Amounts, http://europa.eu.int/comm/economy_finance/ publications/euro_papers/2001eup22en.pdf , Mar. 1998.- [14] S.A. Figueroa, “When Is Double Rounding Innocuous?”
ACM SIGNUM Newsletter, vol. 20, no. 3, pp. 21-26, 1995.- [15] D. Goldberg, “What Every Computer Scientist Should Know aboutFloating-Point Arithmetic,”
ACM Computing Surveys, vol. 23, pp. 5-48, 1991.- [16] G. Gray, “UNIVAC I Instruction Set,”
Unisys History Newsletter, vol. 2, no. 3, 2001.- [17] T. Horel and G. Lauterbach, “UltraSPARC-III: Designing Third-Generation 64-Bit Performance,”
IEEE Micro, vol. 19, no. 3, pp.73-85, May/June 1999.- [18] IBM Corp.,
The Telco Benchmark, http://www2.hursley.ibm.com/decimaltelco.html , Mar. 1998.- [19]
ANSI/IEEE Standard for Floating-Point Arithmetic 754-1985. IEEE, 1985.- [20]
Draft Standard for Floating-Point Arithmetic P754, Draft 1.2.5., IEEE, http://www.validlab.com/754R/drafts/archive 2006-10-04.pdf, Oct. 2006.- [21]
ISO 1989:2002 Programming Languages—COBOL, ISO Standards, JTC 1/SC 22, 2002.- [22]
C# Language Specification, Standard ECMA-334, http://www.ecma-international.org/publications/ files/ECMA-STEcma-334.pdf, 2005.- [23] Sun Corp.,
Class BigDecimal, http://java.sun.com/j2se/1.4.2/docs/api/ java/mathBigDecimal.html, 2008.- [24] P. Tang, “Binary-Integer Decimal Encoding for Decimal Floating Point,” technical report, Intel Corp., http://754r.ucbtest.org/issues/decimalbid_rationale.pdf .
- [25]
XML Scheme Part 2: Datatypes Second Edition, World Wide Web Consortium (W3C) recommendation, http://www.w3.org/Tr/2004REC-xmlschema-2-20041028 /, Oct. 2004.- [26] L. Wang, “Processor Support for Decimal Floating-Point Arithmetic,” technical report, Electrical and Computer Eng. Dept., Univ. of Wisconsin, Madison, year?
- [27] M.H. Weik,
The ENIAC Story, http://ftp:.arl.mil/~mike/comphisteniac-story.html , 2007. |