mirror of
https://review.haiku-os.org/buildtools
synced 2025-02-14 17:57:39 +01:00
* these are dependencies for gcc 4 Graphite engine build. * CLooG 0.18.0 includes ISL 0.11.1 which is the backend that the build script enables. * PPL is needed by GCC build even if it isn't the chosen backend.
163 lines
5.9 KiB
Groff
163 lines
5.9 KiB
Groff
.TH libppl_c "3" "February 2011" "PPL 0.11.1" "libppl_c overview"
|
|
|
|
.SH NAME
|
|
libppl_c \- the C interface of the Parma Polyhedra Library
|
|
.SH SYNOPSIS
|
|
.B #include <ppl_c.h>
|
|
.sp
|
|
cc file.c
|
|
.B -lppl
|
|
|
|
.SH 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
|
|
.IR "The Parma Polyhedra Library User's Manual (version 0.11.1)"
|
|
and
|
|
.IR "The Parma Polyhedra Library C Language Interface User's Manual (version 0.11.1)"
|
|
for this kind of information.
|
|
|
|
.SH "INCLUDING THE HEADER FILE"
|
|
The C interface of the PPL has only one header file, named
|
|
\fIppl_c.h\fP. So your program should contain a directive of the form
|
|
.sp
|
|
.B #include <ppl_c.h>
|
|
.sp
|
|
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
|
|
.B -Idir
|
|
command line option (see the file \fIINSTALL\fP for information
|
|
on how to configure the library so that it is installed in the
|
|
place of your choice).
|
|
|
|
.SH "INITIALIZING AND FINALIZING THE LIBRARY"
|
|
In order to initialize the Parma Polyhedra Library you must
|
|
call the function
|
|
.sp
|
|
.B int ppl_initialize(void)
|
|
.sp
|
|
before using any of its functionalities.
|
|
It is also a good norm to call the function
|
|
.sp
|
|
.B int ppl_finalize(void)
|
|
.sp
|
|
when you are done with the library.
|
|
|
|
.SH "USING THE LIBRARY"
|
|
Keeping in mind that there is no substitute for a careful reading of
|
|
.IR "The Parma Polyhedra Library User's Manual (version 0.11.1)"
|
|
and
|
|
.IR "The Parma Polyhedra Library C Language Interface User's Manual (version 0.11.1)"
|
|
you can find examples of use in the directories
|
|
.B interfaces/C/tests
|
|
and
|
|
.B demos/ppl_lpsol
|
|
of the source distribution.
|
|
|
|
.SH "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
|
|
.B -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
|
|
.B -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
|
|
.B -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
|
|
.IR "Program Library HOWTO"
|
|
is especially valuable for GNU/Linux users).
|
|
|
|
.SH "RETURN VALUES"
|
|
All the PPL C interface functions return an int: a negative value means
|
|
that an error occurred. See
|
|
.IR "The Parma Polyhedra Library C Language Interface User's Manual (version 0.11.1)"
|
|
for the error codes.
|
|
|
|
.SH "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
|
|
.B 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
|
|
.B std::bad_alloc
|
|
upon memory exhaustion.
|
|
See \fB\f(BIlibppl\fB\|(3)\fR for instructions on how to do that.
|
|
|
|
.SH "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
|
|
.sp
|
|
.B int ppl_restore_pre_PPL_rounding()
|
|
.sp
|
|
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
|
|
.sp
|
|
.B int ppl_set_rounding_for_PPL()
|
|
.sp
|
|
before invoking any PPL interface related to such abstractions.
|
|
|
|
|
|
.SH "SEE ALSO"
|
|
.BR ppl-config(1)
|
|
.sp
|
|
.BR libppl(3)
|
|
.sp
|
|
Roberto Bagnara, Patricia M. Hill, and Enea Zaffanella.
|
|
.IR "The Parma Polyhedra Library User's Manual (version 0.11.1)",
|
|
available (in several formats) at
|
|
\fBhttp://www.cs.unipr.it/ppl/\fR .
|
|
.sp
|
|
Roberto Bagnara, Patricia M. Hill, and Enea Zaffanella.
|
|
.IR "The Parma Polyhedra Library C Language Interface User's Manual (version 0.11.1)",
|
|
available (in several formats) at
|
|
\fBhttp://www.cs.unipr.it/ppl/\fR .
|
|
.sp
|
|
David A. Wheeler.
|
|
.IR "Program Library HOWTO",
|
|
available (in several formats) at
|
|
\fBhttp://www.dwheeler.com/program-library/\fR .
|
|
|
|
.SH AVAILABILITY
|
|
The latest version of the Parma Polyhedra Library and all the documentation
|
|
is available at \fBhttp://www.cs.unipr.it/ppl/\fR .
|
|
|
|
.SH AUTHOR
|
|
See the file \fBCREDITS\fR in the source distribution or use the command
|
|
\fBppl\-config \-\-credits\fR for a list of contributors.
|
|
|
|
.SH "REPORTING BUGS"
|
|
Report bugs to <ppl\-devel@cs.unipr.it>.
|
|
|
|
.SH COPYRIGHT
|
|
Copyright (C) 2001\-2010 Roberto Bagnara <bagnara@cs.unipr.it>
|
|
Copyright (C) 2010\-2011 BUGSENG srl (http://bugseng.com)
|
|
.br
|
|
This is free software; see the file \fBCOPYING\fR in the source
|
|
distribution or use the command \fBppl\-config \-\-copying\fR to
|
|
obtain the copying conditions. There is NO warranty; not even for
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|