Provided by: libppl-dev_1.2-2build4_amd64 bug

NAME

       libppl_c - the C interface of the Parma Polyhedra Library

SYNOPSIS

       #include <ppl_c.h>

       cc file.c -lppl

DESCRIPTION

       This  is a short overview on how to use the Parma Polyhedra Library (PPL) in your C programs on Unix-like
       operating systems.  Note that the PPL has interfaces also for C++, Java, OCaml and  a  number  of  Prolog
       systems:  look  elsewhere  for  documentation  on  those.   Note  also that the present document does not
       describe the library functionality, its classes or its methods and functions:  see  The  Parma  Polyhedra
       Library  User's  Manual  (version 1.2) and The Parma Polyhedra Library C Language Interface User's Manual
       (version 1.2) for this kind of information.

INCLUDING THE HEADER FILE

       The C interface of the PPL has only one header file, named ppl_c.h.  So your  program  should  contain  a
       directive of the form

       #include <ppl_c.h>

       Of  course, you must make sure you installed the PPL in a place where the compiler can find it, either by
       itself or with the help of a suitable -Idir command line option (see the file INSTALL for information  on
       how to configure the library so that it is installed in the place of your choice).

INITIALIZING AND FINALIZING THE LIBRARY

       In order to initialize the Parma Polyhedra Library you must call the function

       int ppl_initialize(void)

       before using any of its functionalities.  It is also a good norm to call the function

       int ppl_finalize(void)

       when you are done with the library.

USING THE LIBRARY

       Keeping  in  mind that there is no substitute for a careful reading of The Parma Polyhedra Library User's
       Manual (version 1.2) and The Parma Polyhedra Library C Language Interface User's Manual (version 1.2) you
       can  find  examples  of  use  in  the  directories  interfaces/C/tests  and demos/ppl_lpsol of the source
       distribution.

LINKING WITH THE LIBRARY

       Linking with the C interface of the Parma Polyhedra Library is best done using  the  C  compiler  itself:
       usually,  specifying  the -lppl_c command line option is enough.  In fact, if you use a shared version of
       the library, this automatically records the dependency from the PPL core and the GMP libraries, something
       that the linker ought to deal with gracefully.  Otherwise you will have to add -lppl -lgmpxx -lgmp to the
       command line.  Things are more complex if you installed the PPL into some  nonstandard  place.   In  this
       case you will have to use the -Ldir option and, if you use a shared version of the library, possible take
       further steps: see the documentation of your system for more information on  this  subject  (the  Program
       Library HOWTO is especially valuable for GNU/Linux users).

RETURN VALUES

       All  the PPL C interface functions return an int: a negative value means that an error occurred.  See The
       Parma Polyhedra Library C Language Interface User's Manual (version 1.2) for the error codes.

IMPLEMENTING MEMORY-GUARDED COMPUTATIONS

       One of the interesting features of the Parma Polyhedra Library is the possibility  to  implement  memory-
       guarded  computations.   The  idea  is  that  you can limit the amount of virtual memory available to the
       process, launch a PPL computation, and be ready to be returned a PPL_ERROR_OUT_OF_MEMORY error code.  You
       can  then  take  the  appropriate  corrective  measures  (e.g., simplify the polyhedra and/or select less
       precise though less complex algorithms), and restart the computation.  In order to do  that,  you  should
       define  alternative memory allocation functions for GMP that throw std::bad_alloc upon memory exhaustion.
       See libppl(3) for instructions on how to do that.

USING NATIVE FLOATING POINT NUMBERS

       At initialization time, the Parma Polyhedra Library sets the FPU rounding mode in a way that  allows  its
       floating-point-based  computations  to  be  conservative  (i.e.,  possibly  approximated but correct) and
       reasonably efficient.  In case your application itself uses native floating point numbers and relies on a
       particular  rounding  mode  (if  you  are in doubt, assume that it does rely on round-to-nearest to be in
       effect), you should use the function

       int ppl_restore_pre_PPL_rounding()

       after the PPL initialization and before using native floating point numbers in the application.  If  your
       application  does  not  use any floating-point-based PPL abstraction, no further measure should be taken.
       Otherwise, it is imperative to call the function

       int ppl_set_rounding_for_PPL()

       before invoking any PPL interface related to such abstractions.

SEE ALSO

       ppl-config(1)

       libppl(3)

       Roberto Bagnara, Patricia M. Hill, and Enea  Zaffanella.   The  Parma  Polyhedra  Library  User's  Manual
       (version 1.2), available (in several formats) at http://bugseng.com/products/ppl/ .

       Roberto Bagnara, Patricia M. Hill, and Enea Zaffanella.  The Parma Polyhedra Library C Language Interface
       User's Manual (version 1.2), available (in several formats) at http://bugseng.com/products/ppl/ .

       David    A.    Wheeler.     Program    Library    HOWTO,    available    (in    several    formats)    at
       http://www.dwheeler.com/program-library/ .

AVAILABILITY

       The  latest  version  of  the  Parma  Polyhedra  Library  and  all  the  documentation  is  available  at
       http://bugseng.com/products/ppl/ .

AUTHOR

       See the file CREDITS in the source distribution or use the command ppl-config --credits  for  a  list  of
       contributors.

REPORTING BUGS

       Report bugs to <ppl-devel@cs.unipr.it>.

COPYRIGHT AND NO WARRANTY

       Copyright  (C)  2001-2010  Roberto  Bagnara  <bagnara@cs.unipr.it>  Copyright  (C)  2010-2016 BUGSENG srl
       (http://bugseng.com)
       This is free software; see the file COPYING in the source distribution  or  use  the  command  ppl-config
       --copying  to  obtain  the  copying  conditions.   There  is NO warranty; not even for MERCHANTABILITY or
       FITNESS FOR A PARTICULAR PURPOSE.