#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "ApproxMVBB/GeometryPredicates/Predicates.hpp"
#include "ApproxMVBB/GeometryPredicates/Rounding.hpp"
#include "ApproxMVBB/GeometryPredicates/PredicatesInit.hpp"
Go to the source code of this file.
Namespaces | |
namespace | GeometryPredicates |
Defines | |
#define | Absolute(a) ((a) >= 0.0 ? (a) : -(a)) |
#define | Eight_Four_Sum(a7, a6, a5, a4, a3, a2, a1, a0, b4, b3, b1, b0, x11, x10, x9, x8, x7, x6, x5, x4, x3, x2, x1, x0) |
#define | Eight_One_Sum(a7, a6, a5, a4, a3, a2, a1, a0, b, x8, x7, x6, x5, x4, x3, x2, x1, x0) |
#define | Eight_Two_Sum(a7, a6, a5, a4, a3, a2, a1, a0, b1, b0, x9, x8, x7, x6, x5, x4, x3, x2, x1, x0) |
#define | Fast_Two_Diff(a, b, x, y) |
#define | Fast_Two_Diff_Tail(a, b, x, y) |
#define | Fast_Two_Sum(a, b, x, y) |
#define | Fast_Two_Sum_Tail(a, b, x, y) |
#define | Four_Four_Sum(a3, a2, a1, a0, b4, b3, b1, b0, x7, x6, x5, x4, x3, x2, x1, x0) |
#define | Four_One_Product(a3, a2, a1, a0, b, x7, x6, x5, x4, x3, x2, x1, x0) |
#define | Four_One_Sum(a3, a2, a1, a0, b, x4, x3, x2, x1, x0) |
#define | Four_Two_Sum(a3, a2, a1, a0, b1, b0, x5, x4, x3, x2, x1, x0) |
#define | Split(a, ahi, alo) |
#define | Square(a, x, y) |
#define | Square_Tail(a, x, y) |
#define | Two_Diff(a, b, x, y) |
#define | Two_Diff_Tail(a, b, x, y) |
#define | Two_One_Diff(a1, a0, b, x2, x1, x0) |
#define | Two_One_Product(a1, a0, b, x3, x2, x1, x0) |
#define | Two_One_Sum(a1, a0, b, x2, x1, x0) |
#define | Two_Product(a, b, x, y) |
#define | Two_Product_2Presplit(a, ahi, alo, b, bhi, blo, x, y) |
#define | Two_Product_Presplit(a, b, bhi, blo, x, y) |
#define | Two_Product_Tail(a, b, x, y) |
#define | Two_Square(a1, a0, x5, x4, x3, x2, x1, x0) |
#define | Two_Sum(a, b, x, y) |
#define | Two_Sum_Tail(a, b, x, y) |
#define | Two_Two_Diff(a1, a0, b1, b0, x3, x2, x1, x0) |
#define | Two_Two_Product(a1, a0, b1, b0, x7, x6, x5, x4, x3, x2, x1, x0) |
#define | Two_Two_Sum(a1, a0, b1, b0, x3, x2, x1, x0) |
#define | USE_PREDICATES_INIT |
Functions | |
static REAL | GeometryPredicates::estimate (int elen, REAL *e) |
static int | GeometryPredicates::fast_expansion_sum_zeroelim (int elen, REAL *e, int flen, REAL *f, REAL *h) |
REAL | GeometryPredicates::incircle (REAL *pa, REAL *pb, REAL *pc, REAL *pd) |
static REAL | GeometryPredicates::incircleadapt (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL permanent) |
REAL | GeometryPredicates::insphere (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) |
static REAL | GeometryPredicates::insphereadapt (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe, REAL permanent) |
static REAL | GeometryPredicates::insphereexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) |
REAL | GeometryPredicates::orient2d (REAL *pa, REAL *pb, REAL *pc) |
static REAL | GeometryPredicates::orient2dadapt (REAL *pa, REAL *pb, REAL *pc, REAL detsum) |
REAL | GeometryPredicates::orient3d (REAL *pa, REAL *pb, REAL *pc, REAL *pd) |
static REAL | GeometryPredicates::orient3dadapt (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL permanent) |
static int | GeometryPredicates::scale_expansion_zeroelim (int elen, REAL *e, REAL b, REAL *h) |
#define Absolute | ( | a | ) | ((a) >= 0.0 ? (a) : -(a)) |
Definition at line 147 of file Predicates.cpp.
#define Eight_Four_Sum | ( | a7, | |
a6, | |||
a5, | |||
a4, | |||
a3, | |||
a2, | |||
a1, | |||
a0, | |||
b4, | |||
b3, | |||
b1, | |||
b0, | |||
x11, | |||
x10, | |||
x9, | |||
x8, | |||
x7, | |||
x6, | |||
x5, | |||
x4, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Eight_Two_Sum(a7, a6, a5, a4, a3, a2, a1, a0, b1, b0, _l, _6, _5, _4, _3, \ _2, _1, _0, x1, x0); \ Eight_Two_Sum(_l, _6, _5, _4, _3, _2, _1, _0, b4, b3, x11, x10, x9, x8, \ x7, x6, x5, x4, x3, x2)
Definition at line 296 of file Predicates.cpp.
#define Eight_One_Sum | ( | a7, | |
a6, | |||
a5, | |||
a4, | |||
a3, | |||
a2, | |||
a1, | |||
a0, | |||
b, | |||
x8, | |||
x7, | |||
x6, | |||
x5, | |||
x4, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Four_One_Sum(a3, a2, a1, a0, b , _j, x3, x2, x1, x0); \ Four_One_Sum(a7, a6, a5, a4, _j, x8, x7, x6, x5, x4)
Definition at line 284 of file Predicates.cpp.
#define Eight_Two_Sum | ( | a7, | |
a6, | |||
a5, | |||
a4, | |||
a3, | |||
a2, | |||
a1, | |||
a0, | |||
b1, | |||
b0, | |||
x9, | |||
x8, | |||
x7, | |||
x6, | |||
x5, | |||
x4, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Eight_One_Sum(a7, a6, a5, a4, a3, a2, a1, a0, b0, _k, _6, _5, _4, _3, _2, \ _1, _0, x0); \ Eight_One_Sum(_k, _6, _5, _4, _3, _2, _1, _0, b1, x9, x8, x7, x6, x5, x4, \ x3, x2, x1)
Definition at line 289 of file Predicates.cpp.
#define Fast_Two_Diff | ( | a, | |
b, | |||
x, | |||
y | |||
) |
x = (REAL) (a - b); \ Fast_Two_Diff_Tail(a, b, x, y)
Definition at line 175 of file Predicates.cpp.
#define Fast_Two_Diff_Tail | ( | a, | |
b, | |||
x, | |||
y | |||
) |
bvirt = a - x; \ y = bvirt - b
Definition at line 171 of file Predicates.cpp.
#define Fast_Two_Sum | ( | a, | |
b, | |||
x, | |||
y | |||
) |
x = (REAL) (a + b); \ Fast_Two_Sum_Tail(a, b, x, y)
Definition at line 167 of file Predicates.cpp.
#define Fast_Two_Sum_Tail | ( | a, | |
b, | |||
x, | |||
y | |||
) |
bvirt = x - a; \ y = b - bvirt
Definition at line 163 of file Predicates.cpp.
#define Four_Four_Sum | ( | a3, | |
a2, | |||
a1, | |||
a0, | |||
b4, | |||
b3, | |||
b1, | |||
b0, | |||
x7, | |||
x6, | |||
x5, | |||
x4, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Four_Two_Sum(a3, a2, a1, a0, b1, b0, _l, _2, _1, _0, x1, x0); \ Four_Two_Sum(_l, _2, _1, _0, b4, b3, x7, x6, x5, x4, x3, x2)
Definition at line 279 of file Predicates.cpp.
#define Four_One_Product | ( | a3, | |
a2, | |||
a1, | |||
a0, | |||
b, | |||
x7, | |||
x6, | |||
x5, | |||
x4, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Split(b, bhi, blo); \ Two_Product_Presplit(a0, b, bhi, blo, _i, x0); \ Two_Product_Presplit(a1, b, bhi, blo, _j, _0); \ Two_Sum(_i, _0, _k, x1); \ Fast_Two_Sum(_j, _k, _i, x2); \ Two_Product_Presplit(a2, b, bhi, blo, _j, _0); \ Two_Sum(_i, _0, _k, x3); \ Fast_Two_Sum(_j, _k, _i, x4); \ Two_Product_Presplit(a3, b, bhi, blo, _j, _0); \ Two_Sum(_i, _0, _k, x5); \ Fast_Two_Sum(_j, _k, x7, x6)
Definition at line 312 of file Predicates.cpp.
#define Four_One_Sum | ( | a3, | |
a2, | |||
a1, | |||
a0, | |||
b, | |||
x4, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Two_One_Sum(a1, a0, b , _j, x1, x0); \ Two_One_Sum(a3, a2, _j, x4, x3, x2)
Definition at line 271 of file Predicates.cpp.
#define Four_Two_Sum | ( | a3, | |
a2, | |||
a1, | |||
a0, | |||
b1, | |||
b0, | |||
x5, | |||
x4, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Four_One_Sum(a3, a2, a1, a0, b0, _k, _2, _1, _0, x0); \ Four_One_Sum(_k, _2, _1, _0, b1, x5, x4, x3, x2, x1)
Definition at line 275 of file Predicates.cpp.
#define Split | ( | a, | |
ahi, | |||
alo | |||
) |
#define Square | ( | a, | |
x, | |||
y | |||
) |
x = (REAL) (a * a); \ Square_Tail(a, x, y)
Definition at line 248 of file Predicates.cpp.
#define Square_Tail | ( | a, | |
x, | |||
y | |||
) |
Split(a, ahi, alo); \ err1 = x - (ahi * ahi); \ err3 = err1 - ((ahi + ahi) * alo); \ y = (alo * alo) - err3
Definition at line 242 of file Predicates.cpp.
#define Two_Diff | ( | a, | |
b, | |||
x, | |||
y | |||
) |
x = (REAL) (a - b); \ Two_Diff_Tail(a, b, x, y)
Definition at line 197 of file Predicates.cpp.
#define Two_Diff_Tail | ( | a, | |
b, | |||
x, | |||
y | |||
) |
bvirt = (REAL) (a - x); \ avirt = x + bvirt; \ bround = bvirt - b; \ around = a - avirt; \ y = around + bround
Definition at line 190 of file Predicates.cpp.
#define Two_One_Diff | ( | a1, | |
a0, | |||
b, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Two_Diff(a0, b , _i, x0); \ Two_Sum( a1, _i, x2, x1)
Definition at line 259 of file Predicates.cpp.
#define Two_One_Product | ( | a1, | |
a0, | |||
b, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Split(b, bhi, blo); \ Two_Product_Presplit(a0, b, bhi, blo, _i, x0); \ Two_Product_Presplit(a1, b, bhi, blo, _j, _0); \ Two_Sum(_i, _0, _k, x1); \ Fast_Two_Sum(_j, _k, x3, x2)
Definition at line 305 of file Predicates.cpp.
#define Two_One_Sum | ( | a1, | |
a0, | |||
b, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Two_Sum(a0, b , _i, x0); \ Two_Sum(a1, _i, x2, x1)
Definition at line 255 of file Predicates.cpp.
#define Two_Product | ( | a, | |
b, | |||
x, | |||
y | |||
) |
x = (REAL) (a * b); \ Two_Product_Tail(a, b, x, y)
Definition at line 215 of file Predicates.cpp.
#define Two_Product_2Presplit | ( | a, | |
ahi, | |||
alo, | |||
b, | |||
bhi, | |||
blo, | |||
x, | |||
y | |||
) |
x = (REAL) (a * b); \ err1 = x - (ahi * bhi); \ err2 = err1 - (alo * bhi); \ err3 = err2 - (ahi * blo); \ y = (alo * blo) - err3
Definition at line 233 of file Predicates.cpp.
#define Two_Product_Presplit | ( | a, | |
b, | |||
bhi, | |||
blo, | |||
x, | |||
y | |||
) |
x = (REAL) (a * b); \ Split(a, ahi, alo); \ err1 = x - (ahi * bhi); \ err2 = err1 - (alo * bhi); \ err3 = err2 - (ahi * blo); \ y = (alo * blo) - err3
Definition at line 222 of file Predicates.cpp.
#define Two_Product_Tail | ( | a, | |
b, | |||
x, | |||
y | |||
) |
Split(a, ahi, alo); \ Split(b, bhi, blo); \ err1 = x - (ahi * bhi); \ err2 = err1 - (alo * bhi); \ err3 = err2 - (ahi * blo); \ y = (alo * blo) - err3
Definition at line 207 of file Predicates.cpp.
#define Two_Square | ( | a1, | |
a0, | |||
x5, | |||
x4, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Square(a0, _j, x0); \ _0 = a0 + a0; \ Two_Product(a1, _0, _k, _1); \ Two_One_Sum(_k, _1, _j, _l, _2, x1); \ Square(a1, _j, _1); \ Two_Two_Sum(_j, _1, _l, _2, x5, x4, x3, x2)
Definition at line 355 of file Predicates.cpp.
#define Two_Sum | ( | a, | |
b, | |||
x, | |||
y | |||
) |
x = (REAL) (a + b); \ Two_Sum_Tail(a, b, x, y)
Definition at line 186 of file Predicates.cpp.
#define Two_Sum_Tail | ( | a, | |
b, | |||
x, | |||
y | |||
) |
bvirt = (REAL) (x - a); \ avirt = x - bvirt; \ bround = b - bvirt; \ around = a - avirt; \ y = around + bround
Definition at line 179 of file Predicates.cpp.
#define Two_Two_Diff | ( | a1, | |
a0, | |||
b1, | |||
b0, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Two_One_Diff(a1, a0, b0, _j, _0, x0); \ Two_One_Diff(_j, _0, b1, x3, x2, x1)
Definition at line 267 of file Predicates.cpp.
#define Two_Two_Product | ( | a1, | |
a0, | |||
b1, | |||
b0, | |||
x7, | |||
x6, | |||
x5, | |||
x4, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Split(a0, a0hi, a0lo); \ Split(b0, bhi, blo); \ Two_Product_2Presplit(a0, a0hi, a0lo, b0, bhi, blo, _i, x0); \ Split(a1, a1hi, a1lo); \ Two_Product_2Presplit(a1, a1hi, a1lo, b0, bhi, blo, _j, _0); \ Two_Sum(_i, _0, _k, _1); \ Fast_Two_Sum(_j, _k, _l, _2); \ Split(b1, bhi, blo); \ Two_Product_2Presplit(a0, a0hi, a0lo, b1, bhi, blo, _i, _0); \ Two_Sum(_1, _0, _k, x1); \ Two_Sum(_2, _k, _j, _1); \ Two_Sum(_l, _j, _m, _2); \ Two_Product_2Presplit(a1, a1hi, a1lo, b1, bhi, blo, _j, _0); \ Two_Sum(_i, _0, _n, _0); \ Two_Sum(_1, _0, _i, x2); \ Two_Sum(_2, _i, _k, _1); \ Two_Sum(_m, _k, _l, _2); \ Two_Sum(_j, _n, _k, _0); \ Two_Sum(_1, _0, _j, x3); \ Two_Sum(_2, _j, _i, _1); \ Two_Sum(_l, _i, _m, _2); \ Two_Sum(_1, _k, _i, x4); \ Two_Sum(_2, _i, _k, x5); \ Two_Sum(_m, _k, x7, x6)
Definition at line 325 of file Predicates.cpp.
#define Two_Two_Sum | ( | a1, | |
a0, | |||
b1, | |||
b0, | |||
x3, | |||
x2, | |||
x1, | |||
x0 | |||
) |
Two_One_Sum(a1, a0, b0, _j, _0, x0); \ Two_One_Sum(_j, _0, b1, x3, x2, x1)
Definition at line 263 of file Predicates.cpp.
#define USE_PREDICATES_INIT |
FPU Control state declaration Use header file generated automatically by PredicatesInit.
Definition at line 133 of file Predicates.cpp.