|
ABSTRACT
Current critical systems often use a lot of floating-point computations, and thus the testing or static analysis of programs containing floating-point operators has become a priority. However, correctly defining the semantics of common implementations of floating-point is tricky, because semantics may change according to many factors beyond source-code level, such as choices made by compilers. We here give concrete examples of problems that can appear and solutions for implementing in analysis software.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Advanced Micro Devices. 2005. AMD64 Architecture Programmer's Manual Volume 1: Application Programming, 3.10 ed. Advanced Micro Devices.
|
| |
2
|
|
| |
3
|
Balakrishnan, G. and Reps, T. W. 2004. Analyzing memory accesses in x86 executables. In Proceedings of the International Conference on Computer Construction. Lecture Notes in Computer Science, vol. 2985. Springer-Verlag, New York.
|
| |
4
|
Bruno Blanchet , Patrick Cousot , Radhia Cousot , Jérôme Feret , Laurent Mauborgne , Antoine Miné , David Monniaux , Xavier Rival, Design and implementation of a special-purpose static program analyzer for safety-critical real-time embedded software, The essence of computation: complexity, analysis, transformation, Springer-Verlag New York, Inc., New York, NY, 2002
|
 |
5
|
Bruno Blanchet , Patrick Cousot , Radhia Cousot , Jérome Feret , Laurent Mauborgne , Antoine Miné , David Monniaux , Xavier Rival, A static analyzer for large safety-critical software, Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation, June 09-11, 2003, San Diego, California, USA
|
 |
6
|
P. Caspi , D. Pilaud , N. Halbwachs , J. A. Plaice, LUSTRE: a declarative language for real-time programming, Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, p.178-188, January 21-23, 1987, Munich, West Germany
[doi> 10.1145/41625.41641]
|
 |
7
|
|
| |
8
|
|
| |
9
|
Cousot, P. 1997. Constructive design of a hierarchy of semantics of a transition system by abstract interpretation. Electronic Notes in Theoretical Computer Science 6, Elsevier, 77--102.
|
| |
10
|
|
| |
11
|
|
| |
12
|
Cousot, P., Cousot, R., Feret, J., Mauborgne, L., Miné, A., Monniaux, D., and Rival, X. 2005. The ASTRÉE analyzer. In European Symposium on Programming (ESOP). Lecture Notes in Computer Science, vol. 3444, Springer-Verlag, New York, 21--30.
|
| |
13
|
|
| |
14
|
|
| |
15
|
Free Software Foundation. 2005a. Documentation for gcj (gcc 4.1.1). Free Software Foundation, Boston, MA.
|
| |
16
|
Free Software Foundation. 2005b. The GNU compiler collection. Free Software Foundation, Boston, MA.
|
| |
17
|
Freescale Semiconductor, Inc. 2001a. MPC750 RISC Microprocessor Family User's Manual. Freescale Semiconductor, Inc. MPC750UM/D.
|
| |
18
|
Freescale Semiconductor, Inc. 2001b. Programming Environments Manual for 32-Bit Implementations of the PowerPC Architecture. Freescale Semiconductor, Inc. MPCFPE32B/AD.
|
 |
19
|
|
| |
20
|
|
| |
21
|
|
| |
22
|
James Gosling , Bill Joy , Guy Steele , Gilad Bracha, Java Language Specification, Second Edition: The Java Series, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 2000
|
| |
23
|
|
 |
24
|
|
| |
25
|
IEC 1989. International Standard—Binary Floating-Point Arithmetic for Microprocessor Systems, 2nd ed. IEC. IEC-60559.
|
| |
26
|
IEEE 1985. IEEE Standard for Binary Floating-Point Arithmetic for Microprocessor Systems. IEEE. ANSI/IEEE Std 754-1985.
|
| |
27
|
Intel Corp. 1997. Intel Architecture Software Developer's Manual Volume 1: Basic Architecture. Intel Corp. order number 243190.
|
| |
28
|
Intel Corp. 2005. IA-32 Intel Architecture Software Developer's Manual Volume 1: Basic Architecture. Intel Corp. order number 253665-017.
|
| |
29
|
ISO/IEC 1999. International Standard—Programming Languages—C. ISO/IEC 9899:1999.
|
| |
30
|
Java Grande Forum Panel. 1998. Java grande forum report: Making java work for high-end computing. http://www.javagrande.org/sc98/sc98grande.pdf.
|
| |
31
|
Kahan, W. 1987. Branch cuts for complex elementary functions, or much ado about nothing's sign bit. In The State of the Art in Numerical Analysis, A. Iserles and M. Powell, Eds. Clarendon Press, Oxford, UK, 165--211.
|
| |
32
|
Kahan, W. and Darcy, J. D. 1998. How Java's floating-point hurts everyone everywhere. http://www.cs.berkeley.edu/~wkahan/JAVAhurt.pdf.
|
| |
33
|
Leroy, X., Doligez, D., Garrigue, J., Rémy, D., and Vouillon, J. 2005. The Objective Caml System Release 3.09: Documentation and user's manual. INRIA.
|
| |
34
|
Lions, J.-L., Lbeck, L., Fauquembergue, J.-L., Kahn, G., Kubbat, W., Levedag, S., Mazzini, L., Merle, D., and O'Halloran C. 1996. Ariane 5: Flight 501 failure, report by the inquiry board. Tech. rep., European Space Agency (ESA) and Centre national d'études spatiales (CNES).
|
| |
35
|
|
| |
36
|
|
| |
37
|
|
| |
38
|
|
| |
39
|
|
| |
40
|
Miné, A. 2004a. Domaines numériques abstraits faiblement relationnels. Ph.D. dissertation, École polytechnique.
|
| |
41
|
Miné, A. 2004b. Relational abstract domains for the detection of floating-point run-time errors. In European Symposium on Programming (ESOP). Lecture Notes in Computer Science, vol. 2986, Springer-Verlag, New York, 3--17.
|
| |
42
|
Muller, J.-M. 2005. On the definition of ulp(x). Tech. Rep. 2005-09, École normale supérieure de Lyon - Laboratoire de l'Informatique du Parallélisme.
|
| |
43
|
Rice, H. G. 1953. Classes of recursively enumerable sets and their decision problems. Trans. Amer. Math. Soc. 74, 2 (Mar.), 358--366.
|
| |
44
|
|
| |
45
|
|
 |
46
|
|
| |
47
|
Sun Microsystems. 2001. Numerical Computation Guide. Sun Microsystems, Inc., Santa Clara, CA.
|
| |
48
|
Weisstein, E. W. 2005. Continued fraction. MathWorld, http://mathworld.wolfram.com.
|
| |
49
|
|
INDEX TERMS
Primary Classification:
D.
Software
D.2
SOFTWARE ENGINEERING
D.2.4
Software/Program Verification
Additional Classification:
F.
Theory of Computation
F.3
LOGICS AND MEANINGS OF PROGRAMS
F.3.1
Specifying and Verifying and Reasoning about Programs
Subjects:
Mechanical verification
F.3.2
Semantics of Programming Languages
Subjects:
Program analysis
G.
Mathematics of Computing
G.1
NUMERICAL ANALYSIS
G.1.0
General
Subjects:
Interval arithmetic;
Computer arithmetic
Keywords:
AMD64,
Abstract interpretation,
Embedded software,
FPU,
Floating point,
IA32,
IEEE-754,
PowerPC,
Program testing,
Rounding,
Safety-Critical Software,
Static analysis,
Verification,
x87
REVIEW
"Bernard Kuc : Reviewer"
Working within the quantitative analytics group of an investment bank, I see floating-point inconsistencies as an often-recurring problem. With any valuation or risk difference having to be explained and justified, releasing new versions of the an
more...
|