MeshKit  1.0
GeomPredicates.cpp File Reference
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <sys/time.h>
Include dependency graph for GeomPredicates.cpp:

Go to the source code of this file.

Namespaces

namespace  QM

Defines

#define INEXACT   volatile
#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)

Functions

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

Variables

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

Define Documentation

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

Definition at line 146 of file GeomPredicates.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 
)
Value:
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 295 of file GeomPredicates.cpp.

#define Eight_One_Sum (   a7,
  a6,
  a5,
  a4,
  a3,
  a2,
  a1,
  a0,
  b,
  x8,
  x7,
  x6,
  x5,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Value:
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 283 of file GeomPredicates.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 
)
Value:
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 288 of file GeomPredicates.cpp.

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

Definition at line 174 of file GeomPredicates.cpp.

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

Definition at line 170 of file GeomPredicates.cpp.

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

Definition at line 166 of file GeomPredicates.cpp.

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

Definition at line 162 of file GeomPredicates.cpp.

#define Four_Four_Sum (   a3,
  a2,
  a1,
  a0,
  b4,
  b3,
  b1,
  b0,
  x7,
  x6,
  x5,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Value:
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 278 of file GeomPredicates.cpp.

#define Four_One_Product (   a3,
  a2,
  a1,
  a0,
  b,
  x7,
  x6,
  x5,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Value:
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 311 of file GeomPredicates.cpp.

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

Definition at line 270 of file GeomPredicates.cpp.

#define Four_Two_Sum (   a3,
  a2,
  a1,
  a0,
  b1,
  b0,
  x5,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Value:
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 274 of file GeomPredicates.cpp.

#define INEXACT   volatile

Definition at line 132 of file GeomPredicates.cpp.

#define NARROWRAND   narrowdoublerand

Definition at line 137 of file GeomPredicates.cpp.

#define REAL   double /* float or double */

Definition at line 134 of file GeomPredicates.cpp.

#define REALPRINT   doubleprint

Definition at line 135 of file GeomPredicates.cpp.

#define REALRAND   doublerand

Definition at line 136 of file GeomPredicates.cpp.

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

Definition at line 200 of file GeomPredicates.cpp.

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

Definition at line 247 of file GeomPredicates.cpp.

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

Definition at line 241 of file GeomPredicates.cpp.

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

Definition at line 196 of file GeomPredicates.cpp.

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

Definition at line 189 of file GeomPredicates.cpp.

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

Definition at line 258 of file GeomPredicates.cpp.

#define Two_One_Product (   a1,
  a0,
  b,
  x3,
  x2,
  x1,
  x0 
)
Value:
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 304 of file GeomPredicates.cpp.

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

Definition at line 254 of file GeomPredicates.cpp.

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

Definition at line 214 of file GeomPredicates.cpp.

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

Definition at line 232 of file GeomPredicates.cpp.

#define Two_Product_Presplit (   a,
  b,
  bhi,
  blo,
  x,
 
)
Value:
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 221 of file GeomPredicates.cpp.

#define Two_Product_Tail (   a,
  b,
  x,
 
)
Value:
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 206 of file GeomPredicates.cpp.

#define Two_Square (   a1,
  a0,
  x5,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Value:
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 354 of file GeomPredicates.cpp.

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

Definition at line 185 of file GeomPredicates.cpp.

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

Definition at line 178 of file GeomPredicates.cpp.

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

Definition at line 266 of file GeomPredicates.cpp.

#define Two_Two_Product (   a1,
  a0,
  b1,
  b0,
  x7,
  x6,
  x5,
  x4,
  x3,
  x2,
  x1,
  x0 
)
Value:
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 324 of file GeomPredicates.cpp.

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

Definition at line 262 of file GeomPredicates.cpp.

#define UNIFORMRAND   uniformdoublerand

Definition at line 138 of file GeomPredicates.cpp.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines