![]() |
NOTE : The functionality provided by Filtered_exact<CT,ET> is superseeded by Filtered_kernel, hence the use of Filtered_exact<CT,ET> is deprecated. We recommend that users update their code as soon as possible, as we may not guarantee proper functionning of Filtered_exact<CT,ET> in the future.
The class Filtered_exact<CT,ET> is a wrapper type for the number type CT, with the difference that all predicates are specialized such that they are guaranteed to be exact. Speed is achieved via a filtering scheme using interval arithmetic (see Section 44.10). Here are the necessary requirements:
#include <CGAL/Filtered_exact.h>
The following member functions are used to access the numerical value for the different number types:
|
| returns the wrapped value. |
|
| returns the converted value to ET. |
| ||
| returns the converted value to Interval_nt_advanced. |
This type actually has additional parameters for experimental features. They will be documented when they will be considered stable, in a next release.
You might use at the beginning of your program a typedef as follows:
#include<CGAL/Filtered_exact.h> #include<CGAL/leda_real.h> #include<CGAL/double.h> typedef Filtered_exact<double, leda_real> NT;
Or if you are sure that the predicates involved do not use divisions nor square roots:
#include<CGAL/Filtered_exact.h> #include<CGAL/Gmpz.h> #include<CGAL/int.h> typedef Filtered_exact<int, Gmpz> NT;
And if you know that the double variables contain integer values, you can use:
#include<CGAL/Filtered_exact.h> #include<CGAL/Gmpz.h> #include<CGAL/double.h> typedef Filtered_exact<double, Gmpz> NT;
As a general rule, we advise the use of Filtered_exact<double, leda_real>.
The template definition of the low level predicates of CGAL are overloaded for the type Filtered_exact<CT,ET>.
For each predicate file, the overloaded code is generated automatically by the PERL script (scripts/cgal_filtered_predicates_generator.pl) that you can use for your own predicates. This script parses the template functions and generates the overloaded code the following way:
The low level template predicates of CGAL are in files named CGAL/predicates/kernel_ftC2.h (resp. ftC3), the script is used to produce the files CGAL/Arithmetic_filter/predicates/kernel_ftC2.h (resp. ftC3).
At the moment, only the predicates of the Cartesian and Simple_cartesian kernels are supported, as well as the power tests used by the regular triangulations.