[PPL-devel] [GIT] ppl/ppl(floating_point): Added some documentation.
Fabio Bossi
bossi at cs.unipr.it
Tue Sep 8 16:43:36 CEST 2009
Module: ppl/ppl
Branch: floating_point
Commit: 4a1d25bd5a05e759dcc4d1f6a0b9f1204435bda7
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=4a1d25bd5a05e759dcc4d1f6a0b9f1204435bda7
Author: Fabio Bossi <bossi at cs.unipr.it>
Date: Tue Sep 8 16:29:40 2009 +0200
Added some documentation.
---
doc/definitions.dox | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++
doc/ppl.sty | 1 -
2 files changed, 71 insertions(+), 1 deletions(-)
diff --git a/doc/definitions.dox b/doc/definitions.dox
index ff19299..4da0008 100644
--- a/doc/definitions.dox
+++ b/doc/definitions.dox
@@ -2594,6 +2594,77 @@ to see that the widening operator is actually compatible with
a given convergence certificate. If such a requirement is not met,
then an extrapolation operator will be obtained.
+\section floating_point Analysis of floating point computations
+
+This section describes the PPL abstract domains that are used for
+approximating floating point computations in software analysis. We follow
+the approch described in \ref Min04 "[Min04]" and more detailedly in
+\ref Min05 "[Min05]". We will denote by \f$\cV\f$ the set of all floating
+point variables in the analyzed program. We will also denote by
+\f$\mathbb{F}_a\f$ the set of floating point numbers in the format used by the
+analyzer (that is, the machine running the PPL) and by \f$\mathbb{F}_t\f$
+the set of floating point numbers in the format used by the machine that is
+expected to run the analyzed program. Recall that floating point numbers
+include the infinities \f$-\infty\f$ and \f$+\infty\f$.
+
+\subsection interval_linear_forms Linear forms with interval coefficients
+
+Generic concrete <EM>floating point expressions</EM> on \f$\mathbb{F}_t\f$ are
+represented by the \link Parma_Polyhedra_Library::Floating_Point_Expression
+\c Floating_Point_Expression \endlink abstract class. Its concrete derivate
+classes are:
+ - \link Parma_Polyhedra_Library::Constant_Floating_Point_Expression \c
+ Constant_Floating_Point_Expression \endlink,
+ - \link Parma_Polyhedra_Library::Variable_Floating_Point_Expression \c
+ Variable_Floating_Point_Expression \endlink,
+ - \link Parma_Polyhedra_Library::Opposite_Floating_Point_Expression \c
+ Variable_Floating_Point_Expression \endlink, that is the negation
+ (unary minus) of a floating point expression,
+ - \link Parma_Polyhedra_Library::Sum_Floating_Point_Expression \c
+ Sum_Floating_Point_Expression \endlink, that is the sum of two floating
+ point expressions,
+ - \link Parma_Polyhedra_Library::Difference_Floating_Point_Expression \c
+ Difference_Floating_Point_Expression \endlink, that is the difference of
+ two floating point expressions,
+ - \link Parma_Polyhedra_Library::Multiplication_Floating_Point_Expression \c
+ Multiplication_Floating_Point_Expression \endlink, that is the product of
+ two floating point expressions, and
+ - \link Parma_Polyhedra_Library::Division_Floating_Point_Expression \c
+ Division_Floating_Point_Expression \endlink, that is the division of
+ two floating point expressions.
+
+The set of all the possible values in \f$\mathbb{F}_t\f$ of a floating point
+expression at a given program point in a given abstract store can be
+overapproximated by a <EM>linear form</EM> with interval coefficients, that is
+a linear expression of this kind:
+
+\f[
+ i + \sum_{v \in \cV}i_{v}v,
+\f]
+
+where all \f$v\f$ are free floating point variables and \f$i\f$ and all
+\f$i_{v}\f$ are elements of \f$\mathbb{I}_a\f$, defined as the set of all
+intervals with boundaries in \f$\mathbb{F}_a\f$. This operation is called
+<EM>linearization</EM> and is performed by the method linearize of floating
+point expression classes.
+
+Even though the intervals may be open, we will always use closed intervals
+in the documentation for the sake of simplicity, with the exception of unbounded
+intervals that have \f$\infty\f$ boundaries. We denote the set of all linear
+forms on \f$\mathbb{F}_a\f$ by \f$\mathbb{L}_a\f$.
+
+A <EM>(composite) floating point abstract store</EM> is used to associate each
+floating point variable with its currently known approximation. The store is
+composed by two parts:
+ - an <EM>interval abstract store</EM> \f$\fund{\rho,\cV,\mathbb{I}_a}\f$
+ associating each variable with its current approximating interval, and
+ - a <EM>linear form abstract store</EM> \f$\fund{\rho,\cV,\mathbb{L}_a}\f$
+ associating each variable with its current approximating linear form.
+
+Both stores are represented by maps of the Standard Template Library and are
+needed for performing linearization. Please see the documentation of floating
+point expression classes for more information.
+
\section use_of_library Using the Library
\subsection A_Note_on_the_Implementation_of_the_Operators A Note on the Implementation of the Operators
diff --git a/doc/ppl.sty b/doc/ppl.sty
index 0015104..87b3207 100644
--- a/doc/ppl.sty
+++ b/doc/ppl.sty
@@ -191,4 +191,3 @@
\newcommand*{\adlf}{\boxminus^{\#}_{\mathbf{f}}}
\newcommand*{\adivlf}{\boxslash^{\#}_{\mathbf{f}}}
\newcommand*{\amlf}{\boxtimes^{\#}_{\mathbf{f}}}
-
More information about the PPL-devel
mailing list