Floating-Point Computation with Just Enough Accuracy

  • Hank Dietz
  • Bill Dieter
  • Randy Fisher
  • Kungyen Chang
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3991)


Most mathematical formulae are defined in terms of operations on real numbers, but computers can only operate on numeric values with finite precision and range. Using floating-point values as real numbers does not clearly identify the precision with which each value must be represented. Too little precision yields inaccurate results; too much wastes computational resources.

The popularity of multimedia applications has made fast hardware support for low-precision floating-point arithmetic common in Digital Signal Processors (DSPs), SIMD Within A Register (SWAR) instruction set extensions for general purpose processors, and in Graphics Processing Units (GPUs). In this paper, we describe a simple approach by which the speed of these low-precision operations can be speculatively employed to meet user-specified accuracy constraints. Where the native precision(s) yield insufficient accuracy, a simple technique is used to efficiently synthesize enhanced precision using pairs of native values.


  1. 1.
    Dietz, H.G., Fisher, R.J.: Compiling for SIMD within a register. In: Chatterjee, S., Prins, J.F., Carter, L., Ferrante, J., Li, Z., Sehr, D., Yew, P.C. (eds.) Languages and Compilers for Parallel Computing, pp. 290–304. Springer, Heidelberg (1999)Google Scholar
  2. 2.
    Bailey, D.H., Hida, Y., Jeyabalan, K., Li, X.S., Thompson, B.: Multiprecision software directory (2006),
  3. 3.
    Dekker, T.J.: A floating-point technique for extending the available precision. Numer. Math. 18, 224–242 (1971)zbMATHCrossRefMathSciNetGoogle Scholar
  4. 4.
    Linnainmaa, S.: Software for doubled-precision floating-point computations. ACM Trans. Math. Softw. 7(3), 272–283 (1981)zbMATHCrossRefMathSciNetGoogle Scholar
  5. 5.
    IEEE: IEEE Standard for Binary Floating Point Arithmetic Std. 754-1985 (1985)Google Scholar
  6. 6.
    Texas Instruments: TMS320C3x User’s Guide (2004)Google Scholar
  7. 7.
    Advanced Micro Devices: 3DNow! Technology Manual (2000)Google Scholar
  8. 8.
    Bailey, D.H.: Algorithm 719; Multiprecision translation and execution of FORTRAN programs. ACM Trans. Math. Softw. 19(3), 288–319 (1993)zbMATHCrossRefGoogle Scholar
  9. 9.
    Advanced Micro Devices: AMD Athlon Processor x86 Code Optimization Guide (2002)Google Scholar
  10. 10.
    Intel: Intel Pentium 4 and Intel Xeon Processor Optimization Reference Manual (2002)Google Scholar
  11. 11.
    Advanced Micro Devices: AMD64 Architecture Programmer’s Manual Volume 5: 64-Bit Media and x87 Floating-Point Instructions (2003)Google Scholar
  12. 12.
    Klimovitski, A.: Using SSE and SSE2: Misconceptions and reality. Intel Developer UPDATE Magazine (2001)Google Scholar
  13. 13.
    Smith, K.B., Bik, A.J.C., Tian, X.: Support for the Intel Pentium 4 processor with hyper-threading technology in Intel 8.0 compilers. Intel Technology Journal 08 (2004) ISSN 1535-864XGoogle Scholar
  14. 14.
    Advanced Micro Devices: AMD64 Architecture Programmer’s Manual Volume 4: 128-Bit Media Instructions (2003)Google Scholar
  15. 15.
    Freescale Semiconductor: AltiVec Technology Programming Interface Manual (1999)Google Scholar
  16. 16.
    Microsoft: DirectX Graphics Reference (2006)Google Scholar
  17. 17.
    Silicon Graphics, Inc: OpenGL Extension Registry (2003)Google Scholar
  18. 18.
    Fisher, R.J., Dietz, H.G.: The Scc Compiler: SWARing at MMX and 3DNow. In: Carter, L., Ferrante, J. (eds.) Languages and Compilers for Parallel Computing, pp. 399–414. Springer, Heidelberg (2000)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Hank Dietz
    • 1
  • Bill Dieter
    • 1
  • Randy Fisher
    • 1
  • Kungyen Chang
    • 1
  1. 1.Department of Electrical & Computer EngineeringUniversity of Kentucky 

Personalised recommendations