Searching Critical Values for Floating-Point Programs

Programs with floating-point computations are often derived from mathematical models or designed with the semantics of the real numbers in mind. However, for a given input, the computed path with floating-point numbers may significantly differ from the pa

  • PDF / 232,828 Bytes
  • 9 Pages / 439.37 x 666.142 pts Page_size
  • 50 Downloads / 188 Views

DOWNLOAD

REPORT


tion

In numerous applications, programs with floating-point computations are derived from mathematical models over the real numbers. However, computations on floating-point numbers are different from calculations in an idealised semantics1 of real numbers [8]. For some values of the input variables, the result of a sequence of operations over the floating-point numbers can be significantly different from the result of the corresponding mathematical operations over the real numbers. As a consequence, the computed path with floating-point numbers may differ from the path corresponding to the same computation with real numbers. This can entail wrong outputs and dangerous decisions of critical systems. That’s why identifying these values is a crucial issue for programs controlling critical systems. Abstract interpretation based error analysis [3] of finite precision implementations computes an over-approximation of the errors due to floating-point operations. The point is that state-of-the-art tools [6] may generate numerous false alarms. In [16], we introduced a hybrid approach combining abstract interpretation and constraint programming techniques that reduces the number of false alarms. However, the remaining false alarms are very embarrassing since we cannot know whether the predicted unstable behaviors will occur with actual data. 1

That’s to say, computations as close as possible to the mathematical semantics of the real numbers; for instance, computations with arbitrary precision or computer algebra systems.

c IFIP International Federation for Information Processing 2016  Published by Springer International Publishing AG 2016. All Rights Reserved F. Wotawa et al. (Eds.): ICTSS 2016, LNCS 9976, pp. 209–217, 2016. DOI: 10.1007/978-3-319-47443-4 13

210

H. Collavizza et al.

More formally, consider a program P , a set of intervals I defining the expected input values of P , and an output variable x of P on which depend critical decisions, e.g., activating an anti-lock braking system. Let [xR , xR ] be a sharp approximation over the set of real numbers R of the domain of variable x for any input of P . [xF , xF ] stands for the domain of variable x in the over-approximation computed over the set of floating-point F for input values of I. The range [xR , xR ] can be determined by calculation or from physical limits. It includes a small tolerance to take into account approximation errors, e.g. measurement, statistical, or even floating-point arithmetic errors. This tolerance – specified by the user – defines an acceptable loss of accuracy between the value computed over the floating-point numbers and the value calculated over the real numbers. Values outside the interval [xR , xR ] can lead a program to misbehave, e.g. take a wrong branch in the control flow. The problem we address in this paper consists of verifying whether there exist critical values in I for which the program can actually produce a result value of x inside the suspicious intervals [xF , xR ) and (xR , xF ]. To handle this problem, we introduce a new constraint-