How to read floating point numbers accurately
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 2 (3rd ed.): seminumerical algorithms
The art of computer programming, volume 2 (3rd ed.): seminumerical algorithms
Structured Programming with go to Statements
ACM Computing Surveys (CSUR)
Communicating sequential processes
Communications of the ACM
Communications of the ACM
Binary conversion, with fixed decimal precision, of a decimal fraction
Communications of the ACM
A Discipline of Programming
PASCAL user manual and report
Draft proposed ANS FORTRAN BSR X3.9 X3J3/76
ACM SIGPLAN Notices
How to read floating point numbers accurately
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
HOPL-II The second ACM SIGPLAN conference on History of programming languages
Compiler transformations for high-performance computing
ACM Computing Surveys (CSUR)
Printing floating-point numbers quickly and accurately
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Revised report on the algorithmic language scheme
ACM SIGPLAN Lisp Pointers
How to read floating point numbers accurately
ACM SIGPLAN Notices - Best of PLDI 1979-1999
How to print floating-point numbers accurately
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Systematic IEEE rounding method for high-speed floating-point multipliers
IEEE Transactions on Very Large Scale Integration (VLSI) Systems
History of programming languages---II
The development of Chez Scheme
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
MPFR: A multiple-precision binary floating-point library with correct rounding
ACM Transactions on Mathematical Software (TOMS)
The pitfalls of verifying floating-point computations
ACM Transactions on Programming Languages and Systems (TOPLAS)
IBM Journal of Research and Development
Printing floating-point numbers quickly and accurately with integers
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Hi-index | 0.00 |
We present algorithms for accurately converting floating-point numbers to decimal representation. The key idea is to carry along with the computation an explicit representation of the required rounding accuracy.We begin with the simpler problem of converting fixed-point fractions. A modification of the well-known algorithm for radix-conversion of fixed-point fractions by multiplication explicitly determines when to terminate the conversion process; a variable number of digits are produced. The algorithm has these properties:No information is lost; the original fraction can be recovered from the output by rounding.No “garbage digits” are produced.The output is correctly rounded.It is never necessary to propagate carries on rounding.We then derive two algorithms for free-formal output of floating-point numbers. The first simply scales the given floating-point number to an appropriate fractional range and then applies the algorithm for fractions. This is quite fast and simple to code but has inaccuracies stemming from round-off errors and oversimplification. The second algorithm guarantees mathematical accuracy by using multiple-precision integer arithmetic and handling special cases. Both algorithms produce no more digits than necessary (intuitively, the “1.3 prints as 1.2999999” problem does not occur).Finally, we modify the free-format conversion algorithm for use in fixed-format applications. Information may be lost if the fixed format provides too few digit positions, but the output is always correctly rounded. On the other hand, no “garbage digits” are ever produced, even if the fixed format specifies too many digit positions (intuitively, the “4/3 prints as 1.333333328366279602” problem does not occur).