[PPL-devel] [GIT] ppl/ppl(master): Started writing the section on approximating bounded arithmetic.
Roberto Bagnara
bagnara at cs.unipr.it
Sat May 16 21:08:34 CEST 2009
Module: ppl/ppl
Branch: master
Commit: f04ae2cea940368690787bf9a370526d497219e7
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=f04ae2cea940368690787bf9a370526d497219e7
Author: Roberto Bagnara <bagnara at cs.unipr.it>
Date: Sat May 16 12:05:35 2009 +0200
Started writing the section on approximating bounded arithmetic.
---
doc/definitions.dox | 56 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 54 insertions(+), 2 deletions(-)
diff --git a/doc/definitions.dox b/doc/definitions.dox
index 83cd6a7..bcb5b61 100644
--- a/doc/definitions.dox
+++ b/doc/definitions.dox
@@ -439,13 +439,65 @@ that are consistent with respect to the desired results.
\section Approximating_Bounded_Arithmetic Approximating Bounded Arithmetic
-FIXME(0.11): to be written.
+The Parma Polyhedra Library provides services that allow to compute
+correct approximations of bounded arithmetic as available in widespread
+programming languages. Supported bit-widths are 8, 16, 32 and 64 bits,
+with some limited support for 128 bits.
+Supported representations are binary unsigned and two's complement signed.
+Supported overflow behaviors are:
+<DL>
+ <DT>Wrapping:</DT>
+ <DD>
+ this means that, for a \f$w\f$-bit bounded integer, the computation
+ happens modulo \f$2^w\f$. In turn, this signifies that the computation
+ happens <EM>as if</EM> the unbounded arithmetic result was computed
+ and then wrapped. For unsigned integers, the wrapping function is
+ simply \f$x \bmod 2^w\f$, most conveniently defined as
+ \f[
+ \mathrm{wrap}_\mathrm{u}(x)
+ \defeq
+ x - 2^w \lfloor x/2^w \rfloor.
+ \f]
+ For signed integers the wrapping function is, instead,
+ \f[
+ \mathrm{wrap}_\mathrm{s}(x)
+ \defeq
+ \begin{cases}
+ \mathrm{wrap}_\mathrm{u}(x),
+ &\text{if $\mathrm{wrap}_\mathrm{u}(x) < 2^{w-1}$;} \\
+ \mathrm{wrap}_\mathrm{u}(x) - 2^w,
+ &\text{otherwise.}
+ \end{cases}
+ \f]
+ </DD>
+ <DT>Undefined:</DT>
+ <DD>
+ this means that the result of the operation resulting in an
+ overflow can take any value. This is useful to partially
+ model systems where overflow has unspecified effects on
+ the computed result.
+ Even though something more serious can happen in the system
+ being analyzed ---due to, e.g., C's undefined behavior---, here we
+ are only concerned with the results of arithmetic operations.
+ It is the responsibility of the analyzer to ensure that other
+ manifestations of undefined behavior are conservatively approximated.
+ </DD>
+ <DT>Impossible:</DT>
+ <DD>
+ this is for the analysis of languages where overflow is trapped
+ before it affects the state, for which, thus, any indication that
+ an overflow may have affected the state is necessarily due to
+ the imprecision of the analysis.
+ </DD>
+</DL>
+
+FIXME(0.11): to be continued.
+\ref SK07 "[SK07]"
\subsection Wrapping_Operator Wrapping Operator
FIXME(0.11): to be written.
-\ref SK07 "[SK07]"
\section convex_polys Convex Polyhedra
More information about the PPL-devel
mailing list