[PPL-devel] [GIT] ppl/ppl(floating_point): More additions and corrections to the documentation.
Fabio Bossi
bossi at cs.unipr.it
Thu Sep 10 14:26:33 CEST 2009
Module: ppl/ppl
Branch: floating_point
Commit: 49fe8476c87649b90e3780631bcdfb72486b03c8
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=49fe8476c87649b90e3780631bcdfb72486b03c8
Author: Fabio Bossi <bossi at cs.unipr.it>
Date: Thu Sep 10 14:18:14 2009 +0200
More additions and corrections to the documentation.
---
src/Difference_Floating_Point_Expression.defs.hh | 3 +-
src/Opposite_Floating_Point_Expression.defs.hh | 76 +++++++++++++++++-----
src/Sum_Floating_Point_Expression.defs.hh | 7 ++-
3 files changed, 67 insertions(+), 19 deletions(-)
diff --git a/src/Difference_Floating_Point_Expression.defs.hh b/src/Difference_Floating_Point_Expression.defs.hh
index 29c923b..473d2d7 100644
--- a/src/Difference_Floating_Point_Expression.defs.hh
+++ b/src/Difference_Floating_Point_Expression.defs.hh
@@ -86,7 +86,8 @@ namespace Parma_Polyhedra_Library {
follows:
\f[
\linexpr{e_{1} \ominus e_{2}}
- \left \langle \rho^{\#}, \rho^{\#}_l \right \rangle =
+ \left \langle \rho^{\#}, \rho^{\#}_l \right \rangle
+ =
\linexpr{e_{1}}\left \langle \rho^{\#}, \rho^{\#}_l \right \rangle
\adlf
\linexpr{e_{2}}\left \langle \rho^{\#}, \rho^{\#}_l \right \rangle
diff --git a/src/Opposite_Floating_Point_Expression.defs.hh b/src/Opposite_Floating_Point_Expression.defs.hh
index 16245bf..67dde22 100644
--- a/src/Opposite_Floating_Point_Expression.defs.hh
+++ b/src/Opposite_Floating_Point_Expression.defs.hh
@@ -45,13 +45,41 @@ namespace Parma_Polyhedra_Library {
/*! \brief
A generic Opposite Floating Point Expression.
+
\ingroup PPL_CXX_interface
+ \par Template type parameters
+
- The class template type parameter \p FP_Interval_Type represents the type
of the intervals used in the abstract domain.
- - The class template type parameter \p FP_Format represents the format
- of the floating point variable used in the concrete domain.
- */
+ - The class template type parameter \p FP_Format represents the floating
+ point format used in the concrete domain.
+
+ \par Linearization of opposite floating-point expressions
+
+ Let \f$i + \sum_{v \in \cV}i_{v}v \f$ be an interval linear form and
+ let \f$\adlf\f$ be a sound unary operator on linear forms such that:
+
+ \f[
+ \adlf
+ \left(i + \sum_{v \in \cV}i_{v}v\right)
+ =
+ \left(\adifp i\right) +
+ \sum_{v \in \cV}\left(\adifp i_{v} \right)v,
+ \f]
+
+ Given a floating point expression \f$\ominus e\f$ and a composite
+ abstract store \f$\left \langle \rho^{\#}, \rho^{\#}_l \right \rangle\f$,
+ we construct the interval linear form
+ \f$\linexpr{\ominus e}\left \langle \rho^{\#}, \rho^{\#}_l \right \rangle\f$
+ as follows:
+ \f[
+ \linexpr{\ominus e} \left \langle \rho^{\#}, \rho^{\#}_l \right \rangle
+ =
+ \adlf
+ \linexpr{e} \left \langle \rho^{\#}, \rho^{\#}_l \right \rangle.
+ \f]
+*/
template <typename FP_Interval_Type, typename FP_Format>
class Opposite_Floating_Point_Expression
: public Floating_Point_Expression<FP_Interval_Type, FP_Format> {
@@ -74,12 +102,16 @@ public:
Floating_Point_Expression<FP_Interval_Type, FP_Format>::
FP_Interval_Abstract_Store FP_Interval_Abstract_Store;
+ /* \brief
+ Alias for the std::map<dimension_type, FP_Linear_Form> from
+ Floating_Point_Expression.
+ */
typedef typename
Floating_Point_Expression<FP_Interval_Type, FP_Format>::
FP_Linear_Form_Abstract_Store FP_Linear_Form_Abstract_Store;
/* \brief
- Alias for the P_Interval_Type::boundary_type from
+ Alias for the FP_Interval_Type::boundary_type from
Floating_Point_Expression.
*/
typedef typename
@@ -87,7 +119,7 @@ public:
boundary_type;
/* \brief
- Alias for the P_Interval_Type::info_type from Floating_Point_Expression.
+ Alias for the FP_Interval_Type::info_type from Floating_Point_Expression.
*/
typedef typename
Floating_Point_Expression<FP_Interval_Type, FP_Format>::info_type info_type;
@@ -95,9 +127,8 @@ public:
//! \name Constructors and Destructor
//@{
/*! \brief
- Constructor with a parameter: builds the opposite floating point
- expression from \p op corresponding to the floating point expression
- -\p op.
+ Constructor with one parameter: builds the opposite floating point
+ expression \f$\ominus\f$ \p op.
*/
explicit Opposite_Floating_Point_Expression(
Floating_Point_Expression<FP_Interval_Type, FP_Format>* const op);
@@ -107,14 +138,27 @@ public:
//@} // Constructors and Destructor
- /* \brief
- Returns a linear form in the abstract store \p store that simply
- represents the opposite of the operand linearization.
+ // FIXME: Modify documentation when exceptions are fixed
+ /*! \brief
+ Linearizes the expression in a given astract store.
+
+ Makes \p result become the linearization of \p *this in the given
+ composite abstract store.
+
+ \param int_store The interval abstract store.
+ \param lf_store The linear form abstract store.
+ \param result The modified linear form.
- \param int_store The interval abstract store.
- \param lf_store The linear form abstract store.
- \param result The modified linear form.
+ \exception Parma_Polyhedra_Library::Linearization_Failed
+ Thrown if linearization fails for some reason.
+ Note that all variables occuring in the expression represented
+ by \p operand MUST have an associated value in \p int_store.
+ If this precondition is not met, calling the method
+ causes an undefined behavior.
+
+ See the class description for a detailed explanation of how \p result
+ is computed.
*/
void linearize(const FP_Interval_Abstract_Store& int_store,
const FP_Linear_Form_Abstract_Store& lf_store,
@@ -127,7 +171,7 @@ private:
#ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
/*! \brief
- Copy constructor: temporary inhibited.
+ Inhibited copy constructor.
*/
#endif // PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
Opposite_Floating_Point_Expression(
@@ -135,7 +179,7 @@ private:
#ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
/*! \brief
- Assignment operator: temporary inhibited.
+ Inhibited assignment operator.
*/
#endif // PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
Opposite_Floating_Point_Expression& operator=(
diff --git a/src/Sum_Floating_Point_Expression.defs.hh b/src/Sum_Floating_Point_Expression.defs.hh
index 9ae586e..22724ff 100644
--- a/src/Sum_Floating_Point_Expression.defs.hh
+++ b/src/Sum_Floating_Point_Expression.defs.hh
@@ -72,10 +72,13 @@ namespace Parma_Polyhedra_Library {
Given an expression \f$e_{1} \oplus e_{2}\f$ and a composite
abstract store \f$\left \langle \rho^{\#}, \rho^{\#}_l \right \rangle\f$,
we construct the interval linear form
- \f$\linexpr{e_{1} \oplus e_{2}}\left ( \rho^{\#}, \rho^{\#}_l \right )\f$
+ \f$\linexpr{e_{1} \oplus e_{2}}
+ \left \langle \rho^{\#}, \rho^{\#}_l \right \rangle\f$
as follows:
\f[
- \linexpr{e_{1} \oplus e_{2}}\left ( \rho^{\#}, \rho^{\#}_l \right ) =
+ \linexpr{e_{1} \oplus e_{2}}
+ \left \langle \rho^{\#}, \rho^{\#}_l \right \rangle
+ =
\linexpr{e_{1}}\left \langle \rho^{\#}, \rho^{\#}_l \right \rangle
\aslf
\linexpr{e_{2}}\left \langle \rho^{\#}, \rho^{\#}_l \right \rangle
More information about the PPL-devel
mailing list