Provided by: libppl-dev_1.2-8.1build5_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.

PPL 1.2                                           February 2016                                      libppl_c(3)