MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
Référence du fichier robustpredicates.cc
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
Graphe des dépendances par inclusion de robustpredicates.cc:

Aller au code source de ce fichier.

Espaces de nommage

 robustPredicates
 

Macros

#define INEXACT   /* Nothing */
 
#define REAL   double /* float or double */
 
#define REALPRINT   doubleprint
 
#define REALRAND   doublerand
 
#define NARROWRAND   narrowdoublerand
 
#define UNIFORMRAND   uniformdoublerand
 
#define Absolute(a)   ((a) >= 0.0 ? (a) : -(a))
 
#define Fast_Two_Sum_Tail(a, b, x, y)
 
#define Fast_Two_Sum(a, b, x, y)
 
#define Fast_Two_Diff_Tail(a, b, x, y)
 
#define Fast_Two_Diff(a, b, x, y)
 
#define Two_Sum_Tail(a, b, x, y)
 
#define Two_Sum(a, b, x, y)
 
#define Two_Diff_Tail(a, b, x, y)
 
#define Two_Diff(a, b, x, y)
 
#define Split(a, ahi, alo)
 
#define Two_Product_Tail(a, b, x, y)
 
#define Two_Product(a, b, x, y)
 
#define Two_Product_Presplit(a, b, bhi, blo, x, y)
 
#define Two_Product_2Presplit(a, ahi, alo, b, bhi, blo, x, y)
 
#define Square_Tail(a, x, y)
 
#define Square(a, x, y)
 
#define Two_One_Sum(a1, a0, b, x2, x1, x0)
 
#define Two_One_Diff(a1, a0, b, x2, x1, x0)
 
#define Two_Two_Sum(a1, a0, b1, b0, x3, x2, x1, x0)
 
#define Two_Two_Diff(a1, a0, b1, b0, 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 Four_Four_Sum(a3, a2, a1, a0, b4, b3, b1, b0, 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 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 Two_One_Product(a1, a0, b, x3, x2, x1, x0)
 
#define Four_One_Product(a3, a2, a1, a0, b, x7, x6, x5, x4, x3, x2, x1, x0)
 
#define Two_Two_Product(a1, a0, b1, b0, x7, x6, x5, x4, x3, x2, x1, x0)
 
#define Two_Square(a1, a0, x5, x4, x3, x2, x1, x0)
 

Fonctions

REAL robustPredicates::exactinit ()
 
int robustPredicates::grow_expansion (int elen, REAL *e, REAL b, REAL *h)
 
int robustPredicates::grow_expansion_zeroelim (int elen, REAL *e, REAL b, REAL *h)
 
int robustPredicates::expansion_sum (int elen, REAL *e, int flen, REAL *f, REAL *h)
 
int robustPredicates::expansion_sum_zeroelim1 (int elen, REAL *e, int flen, REAL *f, REAL *h)
 
int robustPredicates::expansion_sum_zeroelim2 (int elen, REAL *e, int flen, REAL *f, REAL *h)
 
int robustPredicates::fast_expansion_sum (int elen, REAL *e, int flen, REAL *f, REAL *h)
 
int robustPredicates::fast_expansion_sum_zeroelim (int elen, REAL *e, int flen, REAL *f, REAL *h)
 
int robustPredicates::linear_expansion_sum (int elen, REAL *e, int flen, REAL *f, REAL *h)
 
int robustPredicates::linear_expansion_sum_zeroelim (int elen, REAL *e, int flen, REAL *f, REAL *h)
 
int robustPredicates::scale_expansion (int elen, REAL *e, REAL b, REAL *h)
 
int robustPredicates::scale_expansion_zeroelim (int elen, REAL *e, REAL b, REAL *h)
 
int robustPredicates::compress (int elen, REAL *e, REAL *h)
 
REAL robustPredicates::estimate (int elen, REAL *e)
 
REAL robustPredicates::orient2dfast (REAL *pa, REAL *pb, REAL *pc)
 
REAL robustPredicates::orient2dexact (REAL *pa, REAL *pb, REAL *pc)
 
REAL robustPredicates::orient2dslow (REAL *pa, REAL *pb, REAL *pc)
 
REAL robustPredicates::orient2dadapt (REAL *pa, REAL *pb, REAL *pc, REAL detsum)
 
REAL robustPredicates::orient2d (REAL *pa, REAL *pb, REAL *pc)
 
REAL robustPredicates::orient3dfast (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 
REAL robustPredicates::orient3dexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 
REAL robustPredicates::orient3dslow (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 
REAL robustPredicates::orient3dadapt (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL permanent)
 
REAL robustPredicates::orient3d (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 
REAL robustPredicates::incirclefast (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 
REAL robustPredicates::incircleexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 
REAL robustPredicates::incircleslow (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 
REAL robustPredicates::incircleadapt (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL permanent)
 
REAL robustPredicates::incircle (REAL *pa, REAL *pb, REAL *pc, REAL *pd)
 
REAL robustPredicates::inspherefast (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
 
REAL robustPredicates::insphereexact (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
 
REAL robustPredicates::insphereslow (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
 
REAL robustPredicates::insphereadapt (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe, REAL permanent)
 
REAL robustPredicates::insphere (REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe)
 

Variables

static REAL robustPredicates::splitter
 
static REAL robustPredicates::epsilon
 
static REAL robustPredicates::resulterrbound
 
static REAL robustPredicates::ccwerrboundA
 
static REAL robustPredicates::ccwerrboundB
 
static REAL robustPredicates::ccwerrboundC
 
static REAL robustPredicates::o3derrboundA
 
static REAL robustPredicates::o3derrboundB
 
static REAL robustPredicates::o3derrboundC
 
static REAL robustPredicates::iccerrboundA
 
static REAL robustPredicates::iccerrboundB
 
static REAL robustPredicates::iccerrboundC
 
static REAL robustPredicates::isperrboundA
 
static REAL robustPredicates::isperrboundB
 
static REAL robustPredicates::isperrboundC
 

Documentation des macros

◆ Absolute

#define Absolute (   a)    ((a) >= 0.0 ? (a) : -(a))

Définition à la ligne 153 du fichier robustpredicates.cc.

◆ Eight_Four_Sum

#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 
)
Valeur :
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)

Définition à la ligne 302 du fichier robustpredicates.cc.

◆ Eight_One_Sum

#define Eight_One_Sum (   a7,
  a6,
  a5,
  a4,
  a3,
  a2,
  a1,
  a0,
  b,
  x8,
  x7,
  x6,
  x5,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Valeur :
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)

Définition à la ligne 290 du fichier robustpredicates.cc.

◆ Eight_Two_Sum

#define Eight_Two_Sum (   a7,
  a6,
  a5,
  a4,
  a3,
  a2,
  a1,
  a0,
  b1,
  b0,
  x9,
  x8,
  x7,
  x6,
  x5,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Valeur :
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)

Définition à la ligne 295 du fichier robustpredicates.cc.

◆ Fast_Two_Diff

#define Fast_Two_Diff (   a,
  b,
  x,
 
)
Valeur :
x = (REAL) (a - b); \
Fast_Two_Diff_Tail(a, b, x, y)

Définition à la ligne 181 du fichier robustpredicates.cc.

◆ Fast_Two_Diff_Tail

#define Fast_Two_Diff_Tail (   a,
  b,
  x,
 
)
Valeur :
bvirt = a - x; \
y = bvirt - b

Définition à la ligne 177 du fichier robustpredicates.cc.

◆ Fast_Two_Sum

#define Fast_Two_Sum (   a,
  b,
  x,
 
)
Valeur :
x = (REAL) (a + b); \
Fast_Two_Sum_Tail(a, b, x, y)

Définition à la ligne 173 du fichier robustpredicates.cc.

◆ Fast_Two_Sum_Tail

#define Fast_Two_Sum_Tail (   a,
  b,
  x,
 
)
Valeur :
bvirt = x - a; \
y = b - bvirt

Définition à la ligne 169 du fichier robustpredicates.cc.

◆ Four_Four_Sum

#define Four_Four_Sum (   a3,
  a2,
  a1,
  a0,
  b4,
  b3,
  b1,
  b0,
  x7,
  x6,
  x5,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Valeur :
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)

Définition à la ligne 285 du fichier robustpredicates.cc.

◆ Four_One_Product

#define Four_One_Product (   a3,
  a2,
  a1,
  a0,
  b,
  x7,
  x6,
  x5,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Valeur :
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)

Définition à la ligne 318 du fichier robustpredicates.cc.

◆ Four_One_Sum

#define Four_One_Sum (   a3,
  a2,
  a1,
  a0,
  b,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Valeur :
Two_One_Sum(a1, a0, b , _j, x1, x0); \
Two_One_Sum(a3, a2, _j, x4, x3, x2)

Définition à la ligne 277 du fichier robustpredicates.cc.

◆ Four_Two_Sum

#define Four_Two_Sum (   a3,
  a2,
  a1,
  a0,
  b1,
  b0,
  x5,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Valeur :
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)

Définition à la ligne 281 du fichier robustpredicates.cc.

◆ INEXACT

#define INEXACT   /* Nothing */

Définition à la ligne 138 du fichier robustpredicates.cc.

◆ NARROWRAND

#define NARROWRAND   narrowdoublerand

Définition à la ligne 144 du fichier robustpredicates.cc.

◆ REAL

#define REAL   double /* float or double */

Définition à la ligne 141 du fichier robustpredicates.cc.

◆ REALPRINT

#define REALPRINT   doubleprint

Définition à la ligne 142 du fichier robustpredicates.cc.

◆ REALRAND

#define REALRAND   doublerand

Définition à la ligne 143 du fichier robustpredicates.cc.

◆ Split

#define Split (   a,
  ahi,
  alo 
)
Valeur :
c = (REAL) (splitter * a); \
abig = (REAL) (c - a); \
ahi = c - abig; \
alo = a - ahi

Définition à la ligne 207 du fichier robustpredicates.cc.

◆ Square

#define Square (   a,
  x,
 
)
Valeur :
x = (REAL) (a * a); \
Square_Tail(a, x, y)

Définition à la ligne 254 du fichier robustpredicates.cc.

◆ Square_Tail

#define Square_Tail (   a,
  x,
 
)
Valeur :
Split(a, ahi, alo); \
err1 = x - (ahi * ahi); \
err3 = err1 - ((ahi + ahi) * alo); \
y = (alo * alo) - err3

Définition à la ligne 248 du fichier robustpredicates.cc.

◆ Two_Diff

#define Two_Diff (   a,
  b,
  x,
 
)
Valeur :
x = (REAL) (a - b); \
Two_Diff_Tail(a, b, x, y)

Définition à la ligne 203 du fichier robustpredicates.cc.

◆ Two_Diff_Tail

#define Two_Diff_Tail (   a,
  b,
  x,
 
)
Valeur :
bvirt = (REAL) (a - x); \
avirt = x + bvirt; \
bround = bvirt - b; \
around = a - avirt; \
y = around + bround

Définition à la ligne 196 du fichier robustpredicates.cc.

◆ Two_One_Diff

#define Two_One_Diff (   a1,
  a0,
  b,
  x2,
  x1,
  x0 
)
Valeur :
Two_Diff(a0, b , _i, x0); \
Two_Sum( a1, _i, x2, x1)

Définition à la ligne 265 du fichier robustpredicates.cc.

◆ Two_One_Product

#define Two_One_Product (   a1,
  a0,
  b,
  x3,
  x2,
  x1,
  x0 
)
Valeur :
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)

Définition à la ligne 311 du fichier robustpredicates.cc.

◆ Two_One_Sum

#define Two_One_Sum (   a1,
  a0,
  b,
  x2,
  x1,
  x0 
)
Valeur :
Two_Sum(a0, b , _i, x0); \
Two_Sum(a1, _i, x2, x1)

Définition à la ligne 261 du fichier robustpredicates.cc.

◆ Two_Product

#define Two_Product (   a,
  b,
  x,
 
)
Valeur :
x = (REAL) (a * b); \
Two_Product_Tail(a, b, x, y)

Définition à la ligne 221 du fichier robustpredicates.cc.

◆ Two_Product_2Presplit

#define Two_Product_2Presplit (   a,
  ahi,
  alo,
  b,
  bhi,
  blo,
  x,
 
)
Valeur :
x = (REAL) (a * b); \
err1 = x - (ahi * bhi); \
err2 = err1 - (alo * bhi); \
err3 = err2 - (ahi * blo); \
y = (alo * blo) - err3

Définition à la ligne 239 du fichier robustpredicates.cc.

◆ Two_Product_Presplit

#define Two_Product_Presplit (   a,
  b,
  bhi,
  blo,
  x,
 
)
Valeur :
x = (REAL) (a * b); \
Split(a, ahi, alo); \
err1 = x - (ahi * bhi); \
err2 = err1 - (alo * bhi); \
err3 = err2 - (ahi * blo); \
y = (alo * blo) - err3

Définition à la ligne 228 du fichier robustpredicates.cc.

◆ Two_Product_Tail

#define Two_Product_Tail (   a,
  b,
  x,
 
)
Valeur :
Split(a, ahi, alo); \
Split(b, bhi, blo); \
err1 = x - (ahi * bhi); \
err2 = err1 - (alo * bhi); \
err3 = err2 - (ahi * blo); \
y = (alo * blo) - err3

Définition à la ligne 213 du fichier robustpredicates.cc.

◆ Two_Square

#define Two_Square (   a1,
  a0,
  x5,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Valeur :
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)

Définition à la ligne 361 du fichier robustpredicates.cc.

◆ Two_Sum

#define Two_Sum (   a,
  b,
  x,
 
)
Valeur :
x = (REAL) (a + b); \
Two_Sum_Tail(a, b, x, y)

Définition à la ligne 192 du fichier robustpredicates.cc.

◆ Two_Sum_Tail

#define Two_Sum_Tail (   a,
  b,
  x,
 
)
Valeur :
bvirt = (REAL) (x - a); \
avirt = x - bvirt; \
bround = b - bvirt; \
around = a - avirt; \
y = around + bround

Définition à la ligne 185 du fichier robustpredicates.cc.

◆ Two_Two_Diff

#define Two_Two_Diff (   a1,
  a0,
  b1,
  b0,
  x3,
  x2,
  x1,
  x0 
)
Valeur :
Two_One_Diff(a1, a0, b0, _j, _0, x0); \
Two_One_Diff(_j, _0, b1, x3, x2, x1)

Définition à la ligne 273 du fichier robustpredicates.cc.

◆ Two_Two_Product

#define Two_Two_Product (   a1,
  a0,
  b1,
  b0,
  x7,
  x6,
  x5,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Valeur :
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)

Définition à la ligne 331 du fichier robustpredicates.cc.

◆ Two_Two_Sum

#define Two_Two_Sum (   a1,
  a0,
  b1,
  b0,
  x3,
  x2,
  x1,
  x0 
)
Valeur :
Two_One_Sum(a1, a0, b0, _j, _0, x0); \
Two_One_Sum(_j, _0, b1, x3, x2, x1)

Définition à la ligne 269 du fichier robustpredicates.cc.

◆ UNIFORMRAND

#define UNIFORMRAND   uniformdoublerand

Définition à la ligne 145 du fichier robustpredicates.cc.

a
#define a(i, j)
Two_One_Sum
#define Two_One_Sum(a1, a0, b, x2, x1, x0)
Definition: robustpredicates.cc:261
robustPredicates::splitter
static REAL splitter
Definition: robustpredicates.cc:370
Two_Sum
#define Two_Sum(a, b, x, y)
Definition: robustpredicates.cc:192
REAL
#define REAL
Definition: robustpredicates.cc:141
Square
#define Square(a, x, y)
Definition: robustpredicates.cc:254
Split
#define Split(a, ahi, alo)
Definition: robustpredicates.cc:207
Four_One_Sum
#define Four_One_Sum(a3, a2, a1, a0, b, x4, x3, x2, x1, x0)
Definition: robustpredicates.cc:277
Two_Diff
#define Two_Diff(a, b, x, y)
Definition: robustpredicates.cc:203
Four_Two_Sum
#define Four_Two_Sum(a3, a2, a1, a0, b1, b0, x5, x4, x3, x2, x1, x0)
Definition: robustpredicates.cc:281
Two_One_Diff
#define Two_One_Diff(a1, a0, b, x2, x1, x0)
Definition: robustpredicates.cc:265
Eight_One_Sum
#define Eight_One_Sum(a7, a6, a5, a4, a3, a2, a1, a0, b, x8, x7, x6, x5, x4, x3, x2, x1, x0)
Definition: robustpredicates.cc:290
Eight_Two_Sum
#define Eight_Two_Sum(a7, a6, a5, a4, a3, a2, a1, a0, b1, b0, x9, x8, x7, x6, x5, x4, x3, x2, x1, x0)
Definition: robustpredicates.cc:295