#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "tetgen.h"
Defines | |
#define | INEXACT |
#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 | |
REAL | 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) |
#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)
#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)
#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)
#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)
#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)
#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)
#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)
#define INEXACT |
#define NARROWRAND narrowdoublerand |
#define REALPRINT doubleprint |
#define REALRAND doublerand |
#define Split | ( | a, | ||
ahi, | ||||
alo | ||||
) |
#define Two_One_Diff | ( | a1, | ||
a0, | ||||
b, | ||||
x2, | ||||
x1, | ||||
x0 | ||||
) |
#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)
#define Two_One_Sum | ( | a1, | ||
a0, | ||||
b, | ||||
x2, | ||||
x1, | ||||
x0 | ||||
) |
#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)
#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)
#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)
#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)
#define UNIFORMRAND uniformdoublerand |
int compress | ( | int | elen, | |
REAL * | e, | |||
REAL * | h | |||
) |
REAL estimate | ( | int | elen, | |
REAL * | e | |||
) |
REAL exactinit | ( | ) |
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 grow_expansion | ( | int | elen, | |
REAL * | e, | |||
REAL | b, | |||
REAL * | h | |||
) |
int grow_expansion_zeroelim | ( | int | elen, | |
REAL * | e, | |||
REAL | b, | |||
REAL * | h | |||
) |
REAL incircle | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL * | pd | |||
) |
REAL incircleadapt | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL * | pd, | |||
REAL | permanent | |||
) |
REAL incircleexact | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL * | pd | |||
) |
REAL incirclefast | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL * | pd | |||
) |
REAL incircleslow | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL * | pd | |||
) |
REAL insphere | ( | 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 insphereexact | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL * | pd, | |||
REAL * | pe | |||
) |
REAL inspherefast | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL * | pd, | |||
REAL * | pe | |||
) |
REAL insphereslow | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL * | pd, | |||
REAL * | pe | |||
) |
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 | |||
) |
REAL orient2d | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc | |||
) |
REAL orient2dadapt | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL | detsum | |||
) |
REAL orient2dexact | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc | |||
) |
REAL orient2dfast | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc | |||
) |
REAL orient2dslow | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc | |||
) |
REAL orient3d | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL * | pd | |||
) |
REAL orient3dadapt | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL * | pd, | |||
REAL | permanent | |||
) |
REAL orient3dexact | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL * | pd | |||
) |
REAL orient3dfast | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL * | pd | |||
) |
REAL orient3dslow | ( | REAL * | pa, | |
REAL * | pb, | |||
REAL * | pc, | |||
REAL * | pd | |||
) |
int scale_expansion | ( | int | elen, | |
REAL * | e, | |||
REAL | b, | |||
REAL * | h | |||
) |
int scale_expansion_zeroelim | ( | int | elen, | |
REAL * | e, | |||
REAL | b, | |||
REAL * | h | |||
) |