robust-predicates 2.0.2 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/util.js CHANGED
@@ -2,7 +2,8 @@ export const epsilon = 1.1102230246251565e-16;
2
2
  export const splitter = 134217729;
3
3
  export const resulterrbound = (3 + 8 * epsilon) * epsilon;
4
4
 
5
- export function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
5
+ // fast_expansion_sum_zeroelim routine from oritinal code
6
+ export function sum(elen, e, flen, f, h) {
6
7
  let Q, Qnew, hh, bvirt;
7
8
  let enow = e[0];
8
9
  let fnow = f[0];
@@ -16,7 +17,7 @@ export function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
16
17
  fnow = f[++findex];
17
18
  }
18
19
  let hindex = 0;
19
- if ((eindex < elen) && (findex < flen)) {
20
+ if (eindex < elen && findex < flen) {
20
21
  if ((fnow > enow) === (fnow > -enow)) {
21
22
  Qnew = enow + Q;
22
23
  hh = Q - (Qnew - enow);
@@ -30,7 +31,7 @@ export function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
30
31
  if (hh !== 0) {
31
32
  h[hindex++] = hh;
32
33
  }
33
- while ((eindex < elen) && (findex < flen)) {
34
+ while (eindex < elen && findex < flen) {
34
35
  if ((fnow > enow) === (fnow > -enow)) {
35
36
  Qnew = Q + enow;
36
37
  bvirt = Qnew - Q;
@@ -74,24 +75,30 @@ export function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
74
75
  return hindex;
75
76
  }
76
77
 
77
- export function scale_expansion_zeroelim(elen, e, b, h) {
78
+ export function sum_three(alen, a, blen, b, clen, c, tmp, out) {
79
+ return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);
80
+ }
81
+
82
+ // scale_expansion_zeroelim routine from oritinal code
83
+ export function scale(elen, e, b, h) {
78
84
  let Q, sum, hh, product1, product0;
79
85
  let bvirt, c, ahi, alo, bhi, blo;
80
86
 
81
87
  c = splitter * b;
82
88
  bhi = c - (c - b);
83
89
  blo = b - bhi;
84
- Q = e[0] * b;
85
- c = splitter * e[0];
86
- ahi = c - (c - e[0]);
87
- alo = e[0] - ahi;
90
+ let enow = e[0];
91
+ Q = enow * b;
92
+ c = splitter * enow;
93
+ ahi = c - (c - enow);
94
+ alo = enow - ahi;
88
95
  hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);
89
96
  let hindex = 0;
90
97
  if (hh !== 0) {
91
98
  h[hindex++] = hh;
92
99
  }
93
- for (let eindex = 1; eindex < elen; eindex++) {
94
- const enow = e[eindex];
100
+ for (let i = 1; i < elen; i++) {
101
+ enow = e[i];
95
102
  product1 = enow * b;
96
103
  c = splitter * enow;
97
104
  ahi = c - (c - enow);
@@ -109,12 +116,17 @@ export function scale_expansion_zeroelim(elen, e, b, h) {
109
116
  h[hindex++] = hh;
110
117
  }
111
118
  }
112
- if (Q !== 0.0 || hindex === 0) {
119
+ if (Q !== 0 || hindex === 0) {
113
120
  h[hindex++] = Q;
114
121
  }
115
122
  return hindex;
116
123
  }
117
124
 
125
+ export function negate(elen, e) {
126
+ for (let i = 0; i < elen; i++) e[i] = -e[i];
127
+ return elen;
128
+ }
129
+
118
130
  export function estimate(elen, e) {
119
131
  let Q = e[0];
120
132
  for (let i = 1; i < elen; i++) Q += e[i];
package/index.d.ts ADDED
@@ -0,0 +1,49 @@
1
+ export as namespace predicates;
2
+
3
+ export function orient2d(
4
+ ax: number, ay: number,
5
+ bx: number, by: number,
6
+ cx: number, cy: number): number;
7
+
8
+ export function orient2dfast(
9
+ ax: number, ay: number,
10
+ bx: number, by: number,
11
+ cx: number, cy: number): number;
12
+
13
+ export function incircle(
14
+ ax: number, ay: number,
15
+ bx: number, by: number,
16
+ cx: number, cy: number,
17
+ dx: number, dy: number): number;
18
+
19
+ export function incirclefast(
20
+ ax: number, ay: number,
21
+ bx: number, by: number,
22
+ cx: number, cy: number,
23
+ dx: number, dy: number): number;
24
+
25
+ export function orient3d(
26
+ ax: number, ay: number, az: number,
27
+ bx: number, by: number, bz: number,
28
+ cx: number, cy: number, cz: number,
29
+ dx: number, dy: number, dz: number): number;
30
+
31
+ export function orient3dfast(
32
+ ax: number, ay: number, az: number,
33
+ bx: number, by: number, bz: number,
34
+ cx: number, cy: number, cz: number,
35
+ dx: number, dy: number, dz: number): number;
36
+
37
+ export function insphere(
38
+ ax: number, ay: number, az: number,
39
+ bx: number, by: number, bz: number,
40
+ cx: number, cy: number, cz: number,
41
+ dx: number, dy: number, dz: number,
42
+ ex: number, ey: number, ez: number): number;
43
+
44
+ export function inspherefast(
45
+ ax: number, ay: number, az: number,
46
+ bx: number, by: number, bz: number,
47
+ cx: number, cy: number, cz: number,
48
+ dx: number, dy: number, dz: number,
49
+ ex: number, ey: number, ez: number): number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "robust-predicates",
3
- "version": "2.0.2",
3
+ "version": "3.0.1",
4
4
  "description": "Fast robust predicates for computational geometry",
5
5
  "keywords": [
6
6
  "computational geometry",
@@ -8,46 +8,55 @@
8
8
  ],
9
9
  "author": "Vladimir Agafonkin",
10
10
  "license": "Unlicense",
11
- "main": "umd/predicates.js",
11
+ "type": "module",
12
+ "main": "index.js",
12
13
  "unpkg": "umd/predicates.min.js",
13
14
  "module": "index.js",
15
+ "exports": "./index.js",
14
16
  "types": "index.d.ts",
15
17
  "scripts": {
16
18
  "build": "mkdirp esm && node compile.js",
17
19
  "lint": "eslint *.js src test/test.js",
18
- "test": "npm run lint && npm run build && node -r esm test/test.js",
19
- "cov": "rm -rf node_modules/.cache/esm && nyc --require esm -r lcov -r text node test/test.js",
20
- "bench": "node -r esm bench.js",
20
+ "test": "npm run lint && npm run build && node test/test.js",
21
+ "cov": "c8 node test/test.js",
22
+ "bench": "node bench.js",
21
23
  "prepublishOnly": "npm run test && rollup -c"
22
24
  },
23
25
  "devDependencies": {
24
- "eslint": "^6.3.0",
26
+ "c8": "^7.7.0",
27
+ "eslint": "^7.23.0",
25
28
  "eslint-config-mourner": "^3.0.0",
26
- "esm": "^3.2.25",
27
- "mkdirp": "^0.5.1",
29
+ "mkdirp": "^1.0.4",
28
30
  "nextafter": "^1.0.0",
29
- "nyc": "^14.1.1",
30
31
  "robust-in-sphere": "^1.1.3",
31
32
  "robust-orientation": "^1.1.3",
32
- "rollup": "^1.20.3",
33
- "rollup-plugin-terser": "^5.1.1",
34
- "tape": "^4.11.0",
35
- "terser": "^4.2.1"
33
+ "rollup": "^2.44.0",
34
+ "rollup-plugin-terser": "^7.0.2",
35
+ "tape": "^5.2.2",
36
+ "terser": "^5.6.1"
36
37
  },
37
38
  "files": [
38
39
  "index.js",
40
+ "index.d.ts",
39
41
  "esm",
40
42
  "umd"
41
43
  ],
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "https://github.com/mourner/robust-predicates.git"
47
+ },
42
48
  "eslintConfig": {
43
49
  "extends": "mourner",
50
+ "parserOptions": {
51
+ "ecmaVersion": 2020
52
+ },
44
53
  "rules": {
45
54
  "camelcase": 0,
46
55
  "new-cap": 0,
47
56
  "no-unused-vars": [
48
57
  2,
49
58
  {
50
- "varsIgnorePattern": "splitter|bvirt|c|[ab]hi|[ab]lo|_[ijk0]"
59
+ "varsIgnorePattern": "splitter|bvirt|c|[ab]hi|[ab]lo|_[ijk0]|u3|[st][01]"
51
60
  }
52
61
  ],
53
62
  "no-lonely-if": 0
@@ -56,16 +65,13 @@
56
65
  "$Fast_Two_Sum": false,
57
66
  "$Two_Sum": false,
58
67
  "$Two_Diff_Tail": false,
59
- "$Two_Diff": false,
60
68
  "$Split": false,
61
69
  "$Two_Product": false,
62
70
  "$Two_Product_Presplit": false,
63
- "$Square": false,
64
- "$Two_One_Sum": false,
65
- "$Two_One_Diff": false,
66
- "$Two_Two_Sum": false,
67
- "$Two_Two_Diff": false,
68
- "$Two_One_Product": false
71
+ "$Two_One_Product": false,
72
+ "$Cross_Product": false,
73
+ "$Square_Sum": false,
74
+ "$Two_Product_Sum": false
69
75
  }
70
76
  }
71
77
  }