Filtered_kernel<CK>is a kernel that uses the filtering technique based on interval arithmetic from [BBP01] to achieve exact and efficient predicates. In addition, a few selected important predicates are implemented using the formally proved, semi-static, filtering techniques from [MP05].

The geometric constructions are exactly those of the kernel CK, which means that they are not necessarily exact.

Is Model for the Concepts


#include <CGAL/Filtered_kernel.h>


typedef EK Exact_kernel; The type of the exact kernel.
typedef FK Approximate_kernel; The type of the approximate "filtering" kernel.


The following example shows how to produce a kernel whose geometric objects and constructions are those of Simple_cartesian<double> but the predicates are exact.

#include <CGAL/Simple_cartesian.h>
#include <CGAL/Filtered_kernel.h>

typedef CGAL::Simple_cartesian<double> CK;
typedef CGAL::Filtered_kernel<CK> K;


The implementation uses CGAL::Filtered_predicate<EP, FP, C2E, C2F> over each predicate of the kernel traits interface. Additionally, faster static filters are used for a few selected critical predicates. The static filters can be disabled by compiling with -DCGAL_NO_STATIC_FILTERS.