[PPL-devel] [GIT] ppl/ppl(floating_point): More documentation.
Fabio Bossi
bossi at cs.unipr.it
Wed Sep 9 10:16:56 CEST 2009
Module: ppl/ppl
Branch: floating_point
Commit: faab1d298643299aa7cd3a38aa02c33f643946ff
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=faab1d298643299aa7cd3a38aa02c33f643946ff
Author: Fabio Bossi <bossi at cs.unipr.it>
Date: Wed Sep 9 10:19:02 2009 +0200
More documentation.
---
doc/definitions.dox | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 52 insertions(+), 1 deletions(-)
diff --git a/doc/definitions.dox b/doc/definitions.dox
index 8aba517..aaa0f11 100644
--- a/doc/definitions.dox
+++ b/doc/definitions.dox
@@ -2653,6 +2653,50 @@ 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$.
+The \link Parma_Polyhedra_Library::Linear_Form \c Linear_Form \endlink class
+provides common algebraic operations on linear forms: you can add or
+subtract two linear forms, and multiply or divide a linear form by a scalar.
+We are writing only about interval linear forms in this section, so our
+scalars will always be intervals with floating point boundaries.
+The operations on interval linear forms are intuitively defined as follows:
+
+\f[
+
+ \left(i + \sum_{v \in V}i_{v}v\right)
+ \aslf
+ \left(i' + \sum_{v \in V}i'_{v}v\right)
+ =
+ \left(i \asifp i'\right) +
+ \sum_{v \in V}\left(i_{v} \asifp i'_{v}\right)v,
+
+ \left(i + \sum_{v \in V}i_{v}v\right)
+ \adlf
+ \left(i' + \sum_{v \in V}i'_{v}v\right)
+ =
+ \left(i \adifp i'\right) +
+ \sum_{v \in V}\left(i_{v} \adifp i'_{v}\right)v,
+
+ i
+ \amlf
+ \left(i' + \sum_{v \in V}i'_{v}v\right)
+ =
+ \left(i \amifp i'\right) +
+ \sum_{v \in V}\left(i \amifp i'_{v}\right)v,
+
+ \left(i + \sum_{v \in V}i_{v}v\right)
+ \adivlf
+ i'
+ =
+ \left(i \adivifp i'\right) +
+ \sum_{v \in V}\left(i_{v} \adivifp i'\right)v.
+
+\f]
+
+Where \f$\asifp, \adifp, \amifp,\f$ and \f$\adivifp\f$ are the corresponding
+operations on intervals. Note that these operations always round the
+interval's lower bound towards \f$-\infty\f$ and the upper bound towards
+\f$+\infty\f$ in order to obtain a correct overapproximation.
+
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:
@@ -2662,9 +2706,16 @@ composed by two parts:
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
+required by the linearize method. Please see the documentation of floating
point expression classes for more information.
+The linearization of a floating point expression \f$e\f$ in the composite
+abstract store \f$\left \langle \rho, \rho_l \right \rangle\f$ will be denoted
+by \f$\f$. There are two ways a linearization attempt can fail:
+ - whenever an interval boundary overflows to \f$+\infty\f$ or \f$-\infty\f$,
+ and
+ - when we try to divide by an interval that contains \f$0\f$.
+
\section use_of_library Using the Library
\subsection A_Note_on_the_Implementation_of_the_Operators A Note on the Implementation of the Operators
More information about the PPL-devel
mailing list