libppl_c man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

libppl_c(3)		       libppl_c overview		   libppl_c(3)

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.0) and The Parma Polyhedra Library C Language
       Interface User's Manual (version 1.0) 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	 suit‐
       able -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.0) and  The	 Parma
       Polyhedra  Library C Language Interface User's Manual (version 1.0) 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  com‐
       mand  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.0) 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 round‐
       ing mode in a way that allows its floating-point-based computations  to
       be  conservative	 (i.e., possibly approximated but correct) and reason‐
       ably 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.0), 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.0),
       available (in several formats) at http://bugseng.com/products/ppl/ .

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

AVAILABILITY
       The  latest version of the Parma Polyhedra Library and all the documen‐
       tation 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-2013 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 condi‐
       tions.  There is NO warranty; not even for MERCHANTABILITY  or  FITNESS
       FOR A PARTICULAR PURPOSE.

PPL 1.0				   June 2012			   libppl_c(3)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net