40 #ifndef GEOGRAM_NUMERICS_PCK
41 #define GEOGRAM_NUMERICS_PCK
45 #include <geogram/basic/logger.h>
99 class GEOGRAM_API PredicateStats {
101 PredicateStats(
const char* name);
112 static void show_all_stats();
114 static PredicateStats* first_;
115 PredicateStats* next_;
117 std::atomic<Numeric::int64> invoke_count_;
118 std::atomic<Numeric::int64> exact_count_;
119 std::atomic<Numeric::int64> SOS_count_;
133 static void show_all_stats() {
134 Logger::out(
"Stats") <<
"Compiled without PCK_STAT (no stats)"
145 #define SOS_result(x) [&]()->Sign { return Sign(x); }
170 class POINT,
class COMPARE,
171 class FUNC1,
class FUNC2,
class FUNC3,
class FUNC4
174 const POINT& p1, FUNC1 sos_p1,
175 const POINT& p2, FUNC2 sos_p2,
176 const POINT& p3, FUNC3 sos_p3,
177 const POINT& p4, FUNC4 sos_p4
179 static constexpr
int N = 4;
181 const POINT* p[N] = {&p1, &p2, &p3, &p4};
184 [compare](
const POINT* A,
const POINT* B)->
bool{
185 return compare(*A,*B);
188 for(
int i=0; i<N; ++i) {
#define geo_assert_not_reached
Sets a non reachable point in the program.
Logs statistics for predicates. The statistics are displayed on exit if the command line flag "sys:st...
Common include file, providing basic definitions. Should be included before anything else by all head...
void show_stats()
Displays some statistics about predicates, including the number of calls, the number of exact arithme...
Sign SOS(COMPARE compare, const POINT &p1, FUNC1 sos_p1, const POINT &p2, FUNC2 sos_p2, const POINT &p3, FUNC3 sos_p3, const POINT &p4, FUNC4 sos_p4)
template for writing symbolic perturbation in predicates
Global Vorpaline namespace.
void geo_argused(const T &)
Suppresses compiler warnings about unused parameters.
Sign
Integer constants that represent the sign of a value.
void sort(const ITERATOR &begin, const ITERATOR &end)
Sorts elements in parallel.
Types and functions for numbers manipulation.