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/incircle.js +388 -550
- package/esm/insphere.js +307 -488
- package/esm/orient2d.js +32 -53
- package/esm/orient3d.js +265 -798
- package/esm/util.js +23 -11
- package/index.d.ts +49 -0
- package/package.json +27 -21
- package/umd/incircle.js +408 -560
- package/umd/incircle.min.js +1 -1
- package/umd/insphere.js +330 -496
- package/umd/insphere.min.js +1 -1
- package/umd/orient2d.js +38 -55
- package/umd/orient2d.min.js +1 -1
- package/umd/orient3d.js +281 -808
- package/umd/orient3d.min.js +1 -1
- package/umd/predicates.js +1056 -1929
- package/umd/predicates.min.js +1 -1
package/umd/insphere.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
4
|
-
(global = global || self, factory(global.predicates = {}));
|
|
5
|
-
}(this, function (exports) { 'use strict';
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.predicates = {}));
|
|
5
|
+
}(this, (function (exports) { 'use strict';
|
|
6
6
|
|
|
7
7
|
const epsilon = 1.1102230246251565e-16;
|
|
8
8
|
const splitter = 134217729;
|
|
9
9
|
const resulterrbound = (3 + 8 * epsilon) * epsilon;
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
// fast_expansion_sum_zeroelim routine from oritinal code
|
|
12
|
+
function sum(elen, e, flen, f, h) {
|
|
12
13
|
let Q, Qnew, hh, bvirt;
|
|
13
14
|
let enow = e[0];
|
|
14
15
|
let fnow = f[0];
|
|
@@ -22,7 +23,7 @@ function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
|
|
|
22
23
|
fnow = f[++findex];
|
|
23
24
|
}
|
|
24
25
|
let hindex = 0;
|
|
25
|
-
if (
|
|
26
|
+
if (eindex < elen && findex < flen) {
|
|
26
27
|
if ((fnow > enow) === (fnow > -enow)) {
|
|
27
28
|
Qnew = enow + Q;
|
|
28
29
|
hh = Q - (Qnew - enow);
|
|
@@ -36,7 +37,7 @@ function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
|
|
|
36
37
|
if (hh !== 0) {
|
|
37
38
|
h[hindex++] = hh;
|
|
38
39
|
}
|
|
39
|
-
while (
|
|
40
|
+
while (eindex < elen && findex < flen) {
|
|
40
41
|
if ((fnow > enow) === (fnow > -enow)) {
|
|
41
42
|
Qnew = Q + enow;
|
|
42
43
|
bvirt = Qnew - Q;
|
|
@@ -80,24 +81,30 @@ function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
|
|
|
80
81
|
return hindex;
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
function
|
|
84
|
+
function sum_three(alen, a, blen, b, clen, c, tmp, out) {
|
|
85
|
+
return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// scale_expansion_zeroelim routine from oritinal code
|
|
89
|
+
function scale(elen, e, b, h) {
|
|
84
90
|
let Q, sum, hh, product1, product0;
|
|
85
91
|
let bvirt, c, ahi, alo, bhi, blo;
|
|
86
92
|
|
|
87
93
|
c = splitter * b;
|
|
88
94
|
bhi = c - (c - b);
|
|
89
95
|
blo = b - bhi;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
96
|
+
let enow = e[0];
|
|
97
|
+
Q = enow * b;
|
|
98
|
+
c = splitter * enow;
|
|
99
|
+
ahi = c - (c - enow);
|
|
100
|
+
alo = enow - ahi;
|
|
94
101
|
hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);
|
|
95
102
|
let hindex = 0;
|
|
96
103
|
if (hh !== 0) {
|
|
97
104
|
h[hindex++] = hh;
|
|
98
105
|
}
|
|
99
|
-
for (let
|
|
100
|
-
|
|
106
|
+
for (let i = 1; i < elen; i++) {
|
|
107
|
+
enow = e[i];
|
|
101
108
|
product1 = enow * b;
|
|
102
109
|
c = splitter * enow;
|
|
103
110
|
ahi = c - (c - enow);
|
|
@@ -115,12 +122,17 @@ function scale_expansion_zeroelim(elen, e, b, h) {
|
|
|
115
122
|
h[hindex++] = hh;
|
|
116
123
|
}
|
|
117
124
|
}
|
|
118
|
-
if (Q !== 0
|
|
125
|
+
if (Q !== 0 || hindex === 0) {
|
|
119
126
|
h[hindex++] = Q;
|
|
120
127
|
}
|
|
121
128
|
return hindex;
|
|
122
129
|
}
|
|
123
130
|
|
|
131
|
+
function negate(elen, e) {
|
|
132
|
+
for (let i = 0; i < elen; i++) e[i] = -e[i];
|
|
133
|
+
return elen;
|
|
134
|
+
}
|
|
135
|
+
|
|
124
136
|
function estimate(elen, e) {
|
|
125
137
|
let Q = e[0];
|
|
126
138
|
for (let i = 1; i < elen; i++) Q += e[i];
|
|
@@ -145,9 +157,7 @@ const bd = vec(4);
|
|
|
145
157
|
const ce = vec(4);
|
|
146
158
|
const da = vec(4);
|
|
147
159
|
const eb = vec(4);
|
|
148
|
-
|
|
149
|
-
const temp8b = vec(8);
|
|
150
|
-
const temp16 = vec(16);
|
|
160
|
+
|
|
151
161
|
const abc = vec(24);
|
|
152
162
|
const bcd = vec(24);
|
|
153
163
|
const cde = vec(24);
|
|
@@ -158,18 +168,7 @@ const bce = vec(24);
|
|
|
158
168
|
const cda = vec(24);
|
|
159
169
|
const deb = vec(24);
|
|
160
170
|
const eac = vec(24);
|
|
161
|
-
|
|
162
|
-
const temp48b = vec(48);
|
|
163
|
-
const abcd = vec(96);
|
|
164
|
-
const bcde = vec(96);
|
|
165
|
-
const cdea = vec(96);
|
|
166
|
-
const deab = vec(96);
|
|
167
|
-
const eabc = vec(96);
|
|
168
|
-
const temp192 = vec(192);
|
|
169
|
-
const det384x = vec(384);
|
|
170
|
-
const det384y = vec(384);
|
|
171
|
-
const det384z = vec(384);
|
|
172
|
-
const detxy = vec(768);
|
|
171
|
+
|
|
173
172
|
const adet = vec(1152);
|
|
174
173
|
const bdet = vec(1152);
|
|
175
174
|
const cdet = vec(1152);
|
|
@@ -180,481 +179,375 @@ const cddet = vec(2304);
|
|
|
180
179
|
const cdedet = vec(3456);
|
|
181
180
|
const deter = vec(5760);
|
|
182
181
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
182
|
+
const _8 = vec(8);
|
|
183
|
+
const _8b = vec(8);
|
|
184
|
+
const _8c = vec(8);
|
|
185
|
+
const _16 = vec(16);
|
|
186
|
+
const _24 = vec(24);
|
|
187
|
+
const _48 = vec(48);
|
|
188
|
+
const _48b = vec(48);
|
|
189
|
+
const _96 = vec(96);
|
|
190
|
+
const _192 = vec(192);
|
|
191
|
+
const _384x = vec(384);
|
|
192
|
+
const _384y = vec(384);
|
|
193
|
+
const _384z = vec(384);
|
|
194
|
+
const _768 = vec(768);
|
|
195
|
+
|
|
196
|
+
function sum_three_scale(a, b, c, az, bz, cz, out) {
|
|
197
|
+
return sum_three(
|
|
198
|
+
scale(4, a, az, _8), _8,
|
|
199
|
+
scale(4, b, bz, _8b), _8b,
|
|
200
|
+
scale(4, c, cz, _8c), _8c, _16, out);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {
|
|
204
|
+
const len = sum(
|
|
205
|
+
sum(alen, a, blen, b, _48), _48,
|
|
206
|
+
negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);
|
|
197
207
|
|
|
198
|
-
|
|
208
|
+
return sum_three(
|
|
209
|
+
scale(scale(len, _96, x, _192), _192, x, _384x), _384x,
|
|
210
|
+
scale(scale(len, _96, y, _192), _192, y, _384y), _384y,
|
|
211
|
+
scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {
|
|
215
|
+
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
|
|
199
216
|
|
|
200
|
-
|
|
217
|
+
s1 = ax * by;
|
|
201
218
|
c = splitter * ax;
|
|
202
219
|
ahi = c - (c - ax);
|
|
203
220
|
alo = ax - ahi;
|
|
204
221
|
c = splitter * by;
|
|
205
222
|
bhi = c - (c - by);
|
|
206
223
|
blo = by - bhi;
|
|
207
|
-
|
|
208
|
-
|
|
224
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
225
|
+
t1 = bx * ay;
|
|
209
226
|
c = splitter * bx;
|
|
210
227
|
ahi = c - (c - bx);
|
|
211
228
|
alo = bx - ahi;
|
|
212
229
|
c = splitter * ay;
|
|
213
230
|
bhi = c - (c - ay);
|
|
214
231
|
blo = ay - bhi;
|
|
215
|
-
|
|
216
|
-
_i =
|
|
217
|
-
bvirt =
|
|
218
|
-
ab[0] =
|
|
219
|
-
_j =
|
|
220
|
-
bvirt = _j -
|
|
221
|
-
_0 =
|
|
222
|
-
_i = _0 -
|
|
232
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
233
|
+
_i = s0 - t0;
|
|
234
|
+
bvirt = s0 - _i;
|
|
235
|
+
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
236
|
+
_j = s1 + _i;
|
|
237
|
+
bvirt = _j - s1;
|
|
238
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
239
|
+
_i = _0 - t1;
|
|
223
240
|
bvirt = _0 - _i;
|
|
224
|
-
ab[1] = _0 - (_i + bvirt) + (bvirt -
|
|
225
|
-
|
|
226
|
-
bvirt =
|
|
227
|
-
ab[2] = _j - (
|
|
228
|
-
|
|
229
|
-
|
|
241
|
+
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
242
|
+
u3 = _j + _i;
|
|
243
|
+
bvirt = u3 - _j;
|
|
244
|
+
ab[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
245
|
+
ab[3] = u3;
|
|
246
|
+
s1 = bx * cy;
|
|
230
247
|
c = splitter * bx;
|
|
231
248
|
ahi = c - (c - bx);
|
|
232
249
|
alo = bx - ahi;
|
|
233
250
|
c = splitter * cy;
|
|
234
251
|
bhi = c - (c - cy);
|
|
235
252
|
blo = cy - bhi;
|
|
236
|
-
|
|
237
|
-
|
|
253
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
254
|
+
t1 = cx * by;
|
|
238
255
|
c = splitter * cx;
|
|
239
256
|
ahi = c - (c - cx);
|
|
240
257
|
alo = cx - ahi;
|
|
241
258
|
c = splitter * by;
|
|
242
259
|
bhi = c - (c - by);
|
|
243
260
|
blo = by - bhi;
|
|
244
|
-
|
|
245
|
-
_i =
|
|
246
|
-
bvirt =
|
|
247
|
-
bc[0] =
|
|
248
|
-
_j =
|
|
249
|
-
bvirt = _j -
|
|
250
|
-
_0 =
|
|
251
|
-
_i = _0 -
|
|
261
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
262
|
+
_i = s0 - t0;
|
|
263
|
+
bvirt = s0 - _i;
|
|
264
|
+
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
265
|
+
_j = s1 + _i;
|
|
266
|
+
bvirt = _j - s1;
|
|
267
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
268
|
+
_i = _0 - t1;
|
|
252
269
|
bvirt = _0 - _i;
|
|
253
|
-
bc[1] = _0 - (_i + bvirt) + (bvirt -
|
|
254
|
-
|
|
255
|
-
bvirt =
|
|
256
|
-
bc[2] = _j - (
|
|
257
|
-
|
|
258
|
-
|
|
270
|
+
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
271
|
+
u3 = _j + _i;
|
|
272
|
+
bvirt = u3 - _j;
|
|
273
|
+
bc[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
274
|
+
bc[3] = u3;
|
|
275
|
+
s1 = cx * dy;
|
|
259
276
|
c = splitter * cx;
|
|
260
277
|
ahi = c - (c - cx);
|
|
261
278
|
alo = cx - ahi;
|
|
262
279
|
c = splitter * dy;
|
|
263
280
|
bhi = c - (c - dy);
|
|
264
281
|
blo = dy - bhi;
|
|
265
|
-
|
|
266
|
-
|
|
282
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
283
|
+
t1 = dx * cy;
|
|
267
284
|
c = splitter * dx;
|
|
268
285
|
ahi = c - (c - dx);
|
|
269
286
|
alo = dx - ahi;
|
|
270
287
|
c = splitter * cy;
|
|
271
288
|
bhi = c - (c - cy);
|
|
272
289
|
blo = cy - bhi;
|
|
273
|
-
|
|
274
|
-
_i =
|
|
275
|
-
bvirt =
|
|
276
|
-
cd[0] =
|
|
277
|
-
_j =
|
|
278
|
-
bvirt = _j -
|
|
279
|
-
_0 =
|
|
280
|
-
_i = _0 -
|
|
290
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
291
|
+
_i = s0 - t0;
|
|
292
|
+
bvirt = s0 - _i;
|
|
293
|
+
cd[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
294
|
+
_j = s1 + _i;
|
|
295
|
+
bvirt = _j - s1;
|
|
296
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
297
|
+
_i = _0 - t1;
|
|
281
298
|
bvirt = _0 - _i;
|
|
282
|
-
cd[1] = _0 - (_i + bvirt) + (bvirt -
|
|
283
|
-
|
|
284
|
-
bvirt =
|
|
285
|
-
cd[2] = _j - (
|
|
286
|
-
|
|
287
|
-
|
|
299
|
+
cd[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
300
|
+
u3 = _j + _i;
|
|
301
|
+
bvirt = u3 - _j;
|
|
302
|
+
cd[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
303
|
+
cd[3] = u3;
|
|
304
|
+
s1 = dx * ey;
|
|
288
305
|
c = splitter * dx;
|
|
289
306
|
ahi = c - (c - dx);
|
|
290
307
|
alo = dx - ahi;
|
|
291
308
|
c = splitter * ey;
|
|
292
309
|
bhi = c - (c - ey);
|
|
293
310
|
blo = ey - bhi;
|
|
294
|
-
|
|
295
|
-
|
|
311
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
312
|
+
t1 = ex * dy;
|
|
296
313
|
c = splitter * ex;
|
|
297
314
|
ahi = c - (c - ex);
|
|
298
315
|
alo = ex - ahi;
|
|
299
316
|
c = splitter * dy;
|
|
300
317
|
bhi = c - (c - dy);
|
|
301
318
|
blo = dy - bhi;
|
|
302
|
-
|
|
303
|
-
_i =
|
|
304
|
-
bvirt =
|
|
305
|
-
de[0] =
|
|
306
|
-
_j =
|
|
307
|
-
bvirt = _j -
|
|
308
|
-
_0 =
|
|
309
|
-
_i = _0 -
|
|
319
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
320
|
+
_i = s0 - t0;
|
|
321
|
+
bvirt = s0 - _i;
|
|
322
|
+
de[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
323
|
+
_j = s1 + _i;
|
|
324
|
+
bvirt = _j - s1;
|
|
325
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
326
|
+
_i = _0 - t1;
|
|
310
327
|
bvirt = _0 - _i;
|
|
311
|
-
de[1] = _0 - (_i + bvirt) + (bvirt -
|
|
312
|
-
|
|
313
|
-
bvirt =
|
|
314
|
-
de[2] = _j - (
|
|
315
|
-
|
|
316
|
-
|
|
328
|
+
de[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
329
|
+
u3 = _j + _i;
|
|
330
|
+
bvirt = u3 - _j;
|
|
331
|
+
de[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
332
|
+
de[3] = u3;
|
|
333
|
+
s1 = ex * ay;
|
|
317
334
|
c = splitter * ex;
|
|
318
335
|
ahi = c - (c - ex);
|
|
319
336
|
alo = ex - ahi;
|
|
320
337
|
c = splitter * ay;
|
|
321
338
|
bhi = c - (c - ay);
|
|
322
339
|
blo = ay - bhi;
|
|
323
|
-
|
|
324
|
-
|
|
340
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
341
|
+
t1 = ax * ey;
|
|
325
342
|
c = splitter * ax;
|
|
326
343
|
ahi = c - (c - ax);
|
|
327
344
|
alo = ax - ahi;
|
|
328
345
|
c = splitter * ey;
|
|
329
346
|
bhi = c - (c - ey);
|
|
330
347
|
blo = ey - bhi;
|
|
331
|
-
|
|
332
|
-
_i =
|
|
333
|
-
bvirt =
|
|
334
|
-
ea[0] =
|
|
335
|
-
_j =
|
|
336
|
-
bvirt = _j -
|
|
337
|
-
_0 =
|
|
338
|
-
_i = _0 -
|
|
348
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
349
|
+
_i = s0 - t0;
|
|
350
|
+
bvirt = s0 - _i;
|
|
351
|
+
ea[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
352
|
+
_j = s1 + _i;
|
|
353
|
+
bvirt = _j - s1;
|
|
354
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
355
|
+
_i = _0 - t1;
|
|
339
356
|
bvirt = _0 - _i;
|
|
340
|
-
ea[1] = _0 - (_i + bvirt) + (bvirt -
|
|
341
|
-
|
|
342
|
-
bvirt =
|
|
343
|
-
ea[2] = _j - (
|
|
344
|
-
|
|
345
|
-
|
|
357
|
+
ea[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
358
|
+
u3 = _j + _i;
|
|
359
|
+
bvirt = u3 - _j;
|
|
360
|
+
ea[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
361
|
+
ea[3] = u3;
|
|
362
|
+
s1 = ax * cy;
|
|
346
363
|
c = splitter * ax;
|
|
347
364
|
ahi = c - (c - ax);
|
|
348
365
|
alo = ax - ahi;
|
|
349
366
|
c = splitter * cy;
|
|
350
367
|
bhi = c - (c - cy);
|
|
351
368
|
blo = cy - bhi;
|
|
352
|
-
|
|
353
|
-
|
|
369
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
370
|
+
t1 = cx * ay;
|
|
354
371
|
c = splitter * cx;
|
|
355
372
|
ahi = c - (c - cx);
|
|
356
373
|
alo = cx - ahi;
|
|
357
374
|
c = splitter * ay;
|
|
358
375
|
bhi = c - (c - ay);
|
|
359
376
|
blo = ay - bhi;
|
|
360
|
-
|
|
361
|
-
_i =
|
|
362
|
-
bvirt =
|
|
363
|
-
ac[0] =
|
|
364
|
-
_j =
|
|
365
|
-
bvirt = _j -
|
|
366
|
-
_0 =
|
|
367
|
-
_i = _0 -
|
|
377
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
378
|
+
_i = s0 - t0;
|
|
379
|
+
bvirt = s0 - _i;
|
|
380
|
+
ac[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
381
|
+
_j = s1 + _i;
|
|
382
|
+
bvirt = _j - s1;
|
|
383
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
384
|
+
_i = _0 - t1;
|
|
368
385
|
bvirt = _0 - _i;
|
|
369
|
-
ac[1] = _0 - (_i + bvirt) + (bvirt -
|
|
370
|
-
|
|
371
|
-
bvirt =
|
|
372
|
-
ac[2] = _j - (
|
|
373
|
-
|
|
374
|
-
|
|
386
|
+
ac[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
387
|
+
u3 = _j + _i;
|
|
388
|
+
bvirt = u3 - _j;
|
|
389
|
+
ac[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
390
|
+
ac[3] = u3;
|
|
391
|
+
s1 = bx * dy;
|
|
375
392
|
c = splitter * bx;
|
|
376
393
|
ahi = c - (c - bx);
|
|
377
394
|
alo = bx - ahi;
|
|
378
395
|
c = splitter * dy;
|
|
379
396
|
bhi = c - (c - dy);
|
|
380
397
|
blo = dy - bhi;
|
|
381
|
-
|
|
382
|
-
|
|
398
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
399
|
+
t1 = dx * by;
|
|
383
400
|
c = splitter * dx;
|
|
384
401
|
ahi = c - (c - dx);
|
|
385
402
|
alo = dx - ahi;
|
|
386
403
|
c = splitter * by;
|
|
387
404
|
bhi = c - (c - by);
|
|
388
405
|
blo = by - bhi;
|
|
389
|
-
|
|
390
|
-
_i =
|
|
391
|
-
bvirt =
|
|
392
|
-
bd[0] =
|
|
393
|
-
_j =
|
|
394
|
-
bvirt = _j -
|
|
395
|
-
_0 =
|
|
396
|
-
_i = _0 -
|
|
406
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
407
|
+
_i = s0 - t0;
|
|
408
|
+
bvirt = s0 - _i;
|
|
409
|
+
bd[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
410
|
+
_j = s1 + _i;
|
|
411
|
+
bvirt = _j - s1;
|
|
412
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
413
|
+
_i = _0 - t1;
|
|
397
414
|
bvirt = _0 - _i;
|
|
398
|
-
bd[1] = _0 - (_i + bvirt) + (bvirt -
|
|
399
|
-
|
|
400
|
-
bvirt =
|
|
401
|
-
bd[2] = _j - (
|
|
402
|
-
|
|
403
|
-
|
|
415
|
+
bd[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
416
|
+
u3 = _j + _i;
|
|
417
|
+
bvirt = u3 - _j;
|
|
418
|
+
bd[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
419
|
+
bd[3] = u3;
|
|
420
|
+
s1 = cx * ey;
|
|
404
421
|
c = splitter * cx;
|
|
405
422
|
ahi = c - (c - cx);
|
|
406
423
|
alo = cx - ahi;
|
|
407
424
|
c = splitter * ey;
|
|
408
425
|
bhi = c - (c - ey);
|
|
409
426
|
blo = ey - bhi;
|
|
410
|
-
|
|
411
|
-
|
|
427
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
428
|
+
t1 = ex * cy;
|
|
412
429
|
c = splitter * ex;
|
|
413
430
|
ahi = c - (c - ex);
|
|
414
431
|
alo = ex - ahi;
|
|
415
432
|
c = splitter * cy;
|
|
416
433
|
bhi = c - (c - cy);
|
|
417
434
|
blo = cy - bhi;
|
|
418
|
-
|
|
419
|
-
_i =
|
|
420
|
-
bvirt =
|
|
421
|
-
ce[0] =
|
|
422
|
-
_j =
|
|
423
|
-
bvirt = _j -
|
|
424
|
-
_0 =
|
|
425
|
-
_i = _0 -
|
|
435
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
436
|
+
_i = s0 - t0;
|
|
437
|
+
bvirt = s0 - _i;
|
|
438
|
+
ce[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
439
|
+
_j = s1 + _i;
|
|
440
|
+
bvirt = _j - s1;
|
|
441
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
442
|
+
_i = _0 - t1;
|
|
426
443
|
bvirt = _0 - _i;
|
|
427
|
-
ce[1] = _0 - (_i + bvirt) + (bvirt -
|
|
428
|
-
|
|
429
|
-
bvirt =
|
|
430
|
-
ce[2] = _j - (
|
|
431
|
-
|
|
432
|
-
|
|
444
|
+
ce[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
445
|
+
u3 = _j + _i;
|
|
446
|
+
bvirt = u3 - _j;
|
|
447
|
+
ce[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
448
|
+
ce[3] = u3;
|
|
449
|
+
s1 = dx * ay;
|
|
433
450
|
c = splitter * dx;
|
|
434
451
|
ahi = c - (c - dx);
|
|
435
452
|
alo = dx - ahi;
|
|
436
453
|
c = splitter * ay;
|
|
437
454
|
bhi = c - (c - ay);
|
|
438
455
|
blo = ay - bhi;
|
|
439
|
-
|
|
440
|
-
|
|
456
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
457
|
+
t1 = ax * dy;
|
|
441
458
|
c = splitter * ax;
|
|
442
459
|
ahi = c - (c - ax);
|
|
443
460
|
alo = ax - ahi;
|
|
444
461
|
c = splitter * dy;
|
|
445
462
|
bhi = c - (c - dy);
|
|
446
463
|
blo = dy - bhi;
|
|
447
|
-
|
|
448
|
-
_i =
|
|
449
|
-
bvirt =
|
|
450
|
-
da[0] =
|
|
451
|
-
_j =
|
|
452
|
-
bvirt = _j -
|
|
453
|
-
_0 =
|
|
454
|
-
_i = _0 -
|
|
464
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
465
|
+
_i = s0 - t0;
|
|
466
|
+
bvirt = s0 - _i;
|
|
467
|
+
da[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
468
|
+
_j = s1 + _i;
|
|
469
|
+
bvirt = _j - s1;
|
|
470
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
471
|
+
_i = _0 - t1;
|
|
455
472
|
bvirt = _0 - _i;
|
|
456
|
-
da[1] = _0 - (_i + bvirt) + (bvirt -
|
|
457
|
-
|
|
458
|
-
bvirt =
|
|
459
|
-
da[2] = _j - (
|
|
460
|
-
|
|
461
|
-
|
|
473
|
+
da[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
474
|
+
u3 = _j + _i;
|
|
475
|
+
bvirt = u3 - _j;
|
|
476
|
+
da[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
477
|
+
da[3] = u3;
|
|
478
|
+
s1 = ex * by;
|
|
462
479
|
c = splitter * ex;
|
|
463
480
|
ahi = c - (c - ex);
|
|
464
481
|
alo = ex - ahi;
|
|
465
482
|
c = splitter * by;
|
|
466
483
|
bhi = c - (c - by);
|
|
467
484
|
blo = by - bhi;
|
|
468
|
-
|
|
469
|
-
|
|
485
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
486
|
+
t1 = bx * ey;
|
|
470
487
|
c = splitter * bx;
|
|
471
488
|
ahi = c - (c - bx);
|
|
472
489
|
alo = bx - ahi;
|
|
473
490
|
c = splitter * ey;
|
|
474
491
|
bhi = c - (c - ey);
|
|
475
492
|
blo = ey - bhi;
|
|
476
|
-
|
|
477
|
-
_i =
|
|
478
|
-
bvirt =
|
|
479
|
-
eb[0] =
|
|
480
|
-
_j =
|
|
481
|
-
bvirt = _j -
|
|
482
|
-
_0 =
|
|
483
|
-
_i = _0 -
|
|
493
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
494
|
+
_i = s0 - t0;
|
|
495
|
+
bvirt = s0 - _i;
|
|
496
|
+
eb[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
497
|
+
_j = s1 + _i;
|
|
498
|
+
bvirt = _j - s1;
|
|
499
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
500
|
+
_i = _0 - t1;
|
|
484
501
|
bvirt = _0 - _i;
|
|
485
|
-
eb[1] = _0 - (_i + bvirt) + (bvirt -
|
|
486
|
-
|
|
487
|
-
bvirt =
|
|
488
|
-
eb[2] = _j - (
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
const
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
const
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
temp8blen = scale_expansion_zeroelim(4, da, -ez, temp8b);
|
|
510
|
-
temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
|
|
511
|
-
temp8alen = scale_expansion_zeroelim(4, de, az, temp8a);
|
|
512
|
-
const dealen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, dea);
|
|
513
|
-
|
|
514
|
-
temp8alen = scale_expansion_zeroelim(4, ab, ez, temp8a);
|
|
515
|
-
temp8blen = scale_expansion_zeroelim(4, eb, -az, temp8b);
|
|
516
|
-
temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
|
|
517
|
-
temp8alen = scale_expansion_zeroelim(4, ea, bz, temp8a);
|
|
518
|
-
const eablen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, eab);
|
|
519
|
-
|
|
520
|
-
temp8alen = scale_expansion_zeroelim(4, bd, az, temp8a);
|
|
521
|
-
temp8blen = scale_expansion_zeroelim(4, da, bz, temp8b);
|
|
522
|
-
temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
|
|
523
|
-
temp8alen = scale_expansion_zeroelim(4, ab, dz, temp8a);
|
|
524
|
-
const abdlen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, abd);
|
|
525
|
-
|
|
526
|
-
temp8alen = scale_expansion_zeroelim(4, ce, bz, temp8a);
|
|
527
|
-
temp8blen = scale_expansion_zeroelim(4, eb, cz, temp8b);
|
|
528
|
-
temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
|
|
529
|
-
temp8alen = scale_expansion_zeroelim(4, bc, ez, temp8a);
|
|
530
|
-
const bcelen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, bce);
|
|
531
|
-
|
|
532
|
-
temp8alen = scale_expansion_zeroelim(4, da, cz, temp8a);
|
|
533
|
-
temp8blen = scale_expansion_zeroelim(4, ac, dz, temp8b);
|
|
534
|
-
temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
|
|
535
|
-
temp8alen = scale_expansion_zeroelim(4, cd, az, temp8a);
|
|
536
|
-
const cdalen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, cda);
|
|
537
|
-
|
|
538
|
-
temp8alen = scale_expansion_zeroelim(4, eb, dz, temp8a);
|
|
539
|
-
temp8blen = scale_expansion_zeroelim(4, bd, ez, temp8b);
|
|
540
|
-
temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
|
|
541
|
-
temp8alen = scale_expansion_zeroelim(4, de, bz, temp8a);
|
|
542
|
-
const deblen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, deb);
|
|
543
|
-
|
|
544
|
-
temp8alen = scale_expansion_zeroelim(4, ac, ez, temp8a);
|
|
545
|
-
temp8blen = scale_expansion_zeroelim(4, ce, az, temp8b);
|
|
546
|
-
temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
|
|
547
|
-
temp8alen = scale_expansion_zeroelim(4, ea, cz, temp8a);
|
|
548
|
-
const eaclen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, eac);
|
|
549
|
-
|
|
550
|
-
temp48alen = fast_expansion_sum_zeroelim(cdelen, cde, bcelen, bce, temp48a);
|
|
551
|
-
temp48blen = fast_expansion_sum_zeroelim(deblen, deb, bcdlen, bcd, temp48b);
|
|
552
|
-
for (i = 0; i < temp48blen; i++) {
|
|
553
|
-
temp48b[i] = -temp48b[i];
|
|
554
|
-
}
|
|
555
|
-
const bcdelen = fast_expansion_sum_zeroelim(temp48alen, temp48a, temp48blen, temp48b, bcde);
|
|
556
|
-
xlen = scale_expansion_zeroelim(bcdelen, bcde, ax, temp192);
|
|
557
|
-
xlen = scale_expansion_zeroelim(xlen, temp192, ax, det384x);
|
|
558
|
-
ylen = scale_expansion_zeroelim(bcdelen, bcde, ay, temp192);
|
|
559
|
-
ylen = scale_expansion_zeroelim(ylen, temp192, ay, det384y);
|
|
560
|
-
zlen = scale_expansion_zeroelim(bcdelen, bcde, az, temp192);
|
|
561
|
-
zlen = scale_expansion_zeroelim(zlen, temp192, az, det384z);
|
|
562
|
-
xylen = fast_expansion_sum_zeroelim(xlen, det384x, ylen, det384y, detxy);
|
|
563
|
-
const alen = fast_expansion_sum_zeroelim(xylen, detxy, zlen, det384z, adet);
|
|
564
|
-
|
|
565
|
-
temp48alen = fast_expansion_sum_zeroelim(dealen, dea, cdalen, cda, temp48a);
|
|
566
|
-
temp48blen = fast_expansion_sum_zeroelim(eaclen, eac, cdelen, cde, temp48b);
|
|
567
|
-
for (i = 0; i < temp48blen; i++) {
|
|
568
|
-
temp48b[i] = -temp48b[i];
|
|
569
|
-
}
|
|
570
|
-
const cdealen = fast_expansion_sum_zeroelim(temp48alen, temp48a, temp48blen, temp48b, cdea);
|
|
571
|
-
xlen = scale_expansion_zeroelim(cdealen, cdea, bx, temp192);
|
|
572
|
-
xlen = scale_expansion_zeroelim(xlen, temp192, bx, det384x);
|
|
573
|
-
ylen = scale_expansion_zeroelim(cdealen, cdea, by, temp192);
|
|
574
|
-
ylen = scale_expansion_zeroelim(ylen, temp192, by, det384y);
|
|
575
|
-
zlen = scale_expansion_zeroelim(cdealen, cdea, bz, temp192);
|
|
576
|
-
zlen = scale_expansion_zeroelim(zlen, temp192, bz, det384z);
|
|
577
|
-
xylen = fast_expansion_sum_zeroelim(xlen, det384x, ylen, det384y, detxy);
|
|
578
|
-
const blen = fast_expansion_sum_zeroelim(xylen, detxy, zlen, det384z, bdet);
|
|
579
|
-
|
|
580
|
-
temp48alen = fast_expansion_sum_zeroelim(eablen, eab, deblen, deb, temp48a);
|
|
581
|
-
temp48blen = fast_expansion_sum_zeroelim(abdlen, abd, dealen, dea, temp48b);
|
|
582
|
-
for (i = 0; i < temp48blen; i++) {
|
|
583
|
-
temp48b[i] = -temp48b[i];
|
|
584
|
-
}
|
|
585
|
-
const deablen = fast_expansion_sum_zeroelim(temp48alen, temp48a, temp48blen, temp48b, deab);
|
|
586
|
-
xlen = scale_expansion_zeroelim(deablen, deab, cx, temp192);
|
|
587
|
-
xlen = scale_expansion_zeroelim(xlen, temp192, cx, det384x);
|
|
588
|
-
ylen = scale_expansion_zeroelim(deablen, deab, cy, temp192);
|
|
589
|
-
ylen = scale_expansion_zeroelim(ylen, temp192, cy, det384y);
|
|
590
|
-
zlen = scale_expansion_zeroelim(deablen, deab, cz, temp192);
|
|
591
|
-
zlen = scale_expansion_zeroelim(zlen, temp192, cz, det384z);
|
|
592
|
-
xylen = fast_expansion_sum_zeroelim(xlen, det384x, ylen, det384y, detxy);
|
|
593
|
-
const clen = fast_expansion_sum_zeroelim(xylen, detxy, zlen, det384z, cdet);
|
|
594
|
-
|
|
595
|
-
temp48alen = fast_expansion_sum_zeroelim(abclen, abc, eaclen, eac, temp48a);
|
|
596
|
-
temp48blen = fast_expansion_sum_zeroelim(bcelen, bce, eablen, eab, temp48b);
|
|
597
|
-
for (i = 0; i < temp48blen; i++) {
|
|
598
|
-
temp48b[i] = -temp48b[i];
|
|
599
|
-
}
|
|
600
|
-
const eabclen = fast_expansion_sum_zeroelim(temp48alen, temp48a, temp48blen, temp48b, eabc);
|
|
601
|
-
xlen = scale_expansion_zeroelim(eabclen, eabc, dx, temp192);
|
|
602
|
-
xlen = scale_expansion_zeroelim(xlen, temp192, dx, det384x);
|
|
603
|
-
ylen = scale_expansion_zeroelim(eabclen, eabc, dy, temp192);
|
|
604
|
-
ylen = scale_expansion_zeroelim(ylen, temp192, dy, det384y);
|
|
605
|
-
zlen = scale_expansion_zeroelim(eabclen, eabc, dz, temp192);
|
|
606
|
-
zlen = scale_expansion_zeroelim(zlen, temp192, dz, det384z);
|
|
607
|
-
xylen = fast_expansion_sum_zeroelim(xlen, det384x, ylen, det384y, detxy);
|
|
608
|
-
const dlen = fast_expansion_sum_zeroelim(xylen, detxy, zlen, det384z, ddet);
|
|
609
|
-
|
|
610
|
-
temp48alen = fast_expansion_sum_zeroelim(bcdlen, bcd, abdlen, abd, temp48a);
|
|
611
|
-
temp48blen = fast_expansion_sum_zeroelim(cdalen, cda, abclen, abc, temp48b);
|
|
612
|
-
for (i = 0; i < temp48blen; i++) {
|
|
613
|
-
temp48b[i] = -temp48b[i];
|
|
614
|
-
}
|
|
615
|
-
const abcdlen = fast_expansion_sum_zeroelim(temp48alen, temp48a, temp48blen, temp48b, abcd);
|
|
616
|
-
xlen = scale_expansion_zeroelim(abcdlen, abcd, ex, temp192);
|
|
617
|
-
xlen = scale_expansion_zeroelim(xlen, temp192, ex, det384x);
|
|
618
|
-
ylen = scale_expansion_zeroelim(abcdlen, abcd, ey, temp192);
|
|
619
|
-
ylen = scale_expansion_zeroelim(ylen, temp192, ey, det384y);
|
|
620
|
-
zlen = scale_expansion_zeroelim(abcdlen, abcd, ez, temp192);
|
|
621
|
-
zlen = scale_expansion_zeroelim(zlen, temp192, ez, det384z);
|
|
622
|
-
xylen = fast_expansion_sum_zeroelim(xlen, det384x, ylen, det384y, detxy);
|
|
623
|
-
const elen = fast_expansion_sum_zeroelim(xylen, detxy, zlen, det384z, edet);
|
|
624
|
-
|
|
625
|
-
const ablen = fast_expansion_sum_zeroelim(alen, adet, blen, bdet, abdet);
|
|
626
|
-
const cdlen = fast_expansion_sum_zeroelim(clen, cdet, dlen, ddet, cddet);
|
|
627
|
-
cdelen = fast_expansion_sum_zeroelim(cdlen, cddet, elen, edet, cdedet);
|
|
628
|
-
const deterlen = fast_expansion_sum_zeroelim(ablen, abdet, cdelen, cdedet, deter);
|
|
502
|
+
eb[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
503
|
+
u3 = _j + _i;
|
|
504
|
+
bvirt = u3 - _j;
|
|
505
|
+
eb[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
506
|
+
eb[3] = u3;
|
|
507
|
+
|
|
508
|
+
const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);
|
|
509
|
+
const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);
|
|
510
|
+
const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);
|
|
511
|
+
const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);
|
|
512
|
+
const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);
|
|
513
|
+
const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);
|
|
514
|
+
const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);
|
|
515
|
+
const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);
|
|
516
|
+
const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);
|
|
517
|
+
const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);
|
|
518
|
+
|
|
519
|
+
const deterlen = sum_three(
|
|
520
|
+
liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet,
|
|
521
|
+
liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet,
|
|
522
|
+
sum_three(
|
|
523
|
+
liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet,
|
|
524
|
+
liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet,
|
|
525
|
+
liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);
|
|
629
526
|
|
|
630
527
|
return deter[deterlen - 1];
|
|
631
528
|
}
|
|
632
529
|
|
|
633
|
-
const temp8c = vec(8);
|
|
634
|
-
const temp24 = vec(24);
|
|
635
|
-
const temp48 = vec(48);
|
|
636
530
|
const xdet = vec(96);
|
|
637
531
|
const ydet = vec(96);
|
|
638
532
|
const zdet = vec(96);
|
|
639
|
-
const
|
|
640
|
-
|
|
533
|
+
const fin = vec(1152);
|
|
534
|
+
|
|
535
|
+
function liftadapt(a, b, c, az, bz, cz, x, y, z, out) {
|
|
536
|
+
const len = sum_three_scale(a, b, c, az, bz, cz, _24);
|
|
537
|
+
return sum_three(
|
|
538
|
+
scale(scale(len, _24, x, _48), _48, x, xdet), xdet,
|
|
539
|
+
scale(scale(len, _24, y, _48), _48, y, ydet), ydet,
|
|
540
|
+
scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);
|
|
541
|
+
}
|
|
641
542
|
|
|
642
543
|
function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {
|
|
643
|
-
let aexbey1, bexaey1, bexcey1, cexbey1;
|
|
644
|
-
let cexdey1, dexcey1, dexaey1, aexdey1;
|
|
645
|
-
let aexcey1, cexaey1, bexdey1, dexbey1;
|
|
646
|
-
let aexbey0, bexaey0, bexcey0, cexbey0;
|
|
647
|
-
let cexdey0, dexcey0, dexaey0, aexdey0;
|
|
648
|
-
let aexcey0, cexaey0, bexdey0, dexbey0;
|
|
649
544
|
let ab3, bc3, cd3, da3, ac3, bd3;
|
|
650
|
-
let temp8alen, temp8blen, temp8clen, temp16len, temp24len, temp48len;
|
|
651
|
-
let xlen, ylen, zlen, xylen;
|
|
652
545
|
|
|
653
546
|
let aextail, bextail, cextail, dextail;
|
|
654
547
|
let aeytail, beytail, ceytail, deytail;
|
|
655
548
|
let aeztail, beztail, ceztail, deztail;
|
|
656
549
|
|
|
657
|
-
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0;
|
|
550
|
+
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;
|
|
658
551
|
|
|
659
552
|
const aex = ax - ex;
|
|
660
553
|
const bex = bx - ex;
|
|
@@ -669,247 +562,190 @@ function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, e
|
|
|
669
562
|
const cez = cz - ez;
|
|
670
563
|
const dez = dz - ez;
|
|
671
564
|
|
|
672
|
-
|
|
565
|
+
s1 = aex * bey;
|
|
673
566
|
c = splitter * aex;
|
|
674
567
|
ahi = c - (c - aex);
|
|
675
568
|
alo = aex - ahi;
|
|
676
569
|
c = splitter * bey;
|
|
677
570
|
bhi = c - (c - bey);
|
|
678
571
|
blo = bey - bhi;
|
|
679
|
-
|
|
680
|
-
|
|
572
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
573
|
+
t1 = bex * aey;
|
|
681
574
|
c = splitter * bex;
|
|
682
575
|
ahi = c - (c - bex);
|
|
683
576
|
alo = bex - ahi;
|
|
684
577
|
c = splitter * aey;
|
|
685
578
|
bhi = c - (c - aey);
|
|
686
579
|
blo = aey - bhi;
|
|
687
|
-
|
|
688
|
-
_i =
|
|
689
|
-
bvirt =
|
|
690
|
-
ab[0] =
|
|
691
|
-
_j =
|
|
692
|
-
bvirt = _j -
|
|
693
|
-
_0 =
|
|
694
|
-
_i = _0 -
|
|
580
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
581
|
+
_i = s0 - t0;
|
|
582
|
+
bvirt = s0 - _i;
|
|
583
|
+
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
584
|
+
_j = s1 + _i;
|
|
585
|
+
bvirt = _j - s1;
|
|
586
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
587
|
+
_i = _0 - t1;
|
|
695
588
|
bvirt = _0 - _i;
|
|
696
|
-
ab[1] = _0 - (_i + bvirt) + (bvirt -
|
|
589
|
+
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
697
590
|
ab3 = _j + _i;
|
|
698
591
|
bvirt = ab3 - _j;
|
|
699
592
|
ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);
|
|
700
593
|
ab[3] = ab3;
|
|
701
|
-
|
|
702
|
-
bexcey1 = bex * cey;
|
|
594
|
+
s1 = bex * cey;
|
|
703
595
|
c = splitter * bex;
|
|
704
596
|
ahi = c - (c - bex);
|
|
705
597
|
alo = bex - ahi;
|
|
706
598
|
c = splitter * cey;
|
|
707
599
|
bhi = c - (c - cey);
|
|
708
600
|
blo = cey - bhi;
|
|
709
|
-
|
|
710
|
-
|
|
601
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
602
|
+
t1 = cex * bey;
|
|
711
603
|
c = splitter * cex;
|
|
712
604
|
ahi = c - (c - cex);
|
|
713
605
|
alo = cex - ahi;
|
|
714
606
|
c = splitter * bey;
|
|
715
607
|
bhi = c - (c - bey);
|
|
716
608
|
blo = bey - bhi;
|
|
717
|
-
|
|
718
|
-
_i =
|
|
719
|
-
bvirt =
|
|
720
|
-
bc[0] =
|
|
721
|
-
_j =
|
|
722
|
-
bvirt = _j -
|
|
723
|
-
_0 =
|
|
724
|
-
_i = _0 -
|
|
609
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
610
|
+
_i = s0 - t0;
|
|
611
|
+
bvirt = s0 - _i;
|
|
612
|
+
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
613
|
+
_j = s1 + _i;
|
|
614
|
+
bvirt = _j - s1;
|
|
615
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
616
|
+
_i = _0 - t1;
|
|
725
617
|
bvirt = _0 - _i;
|
|
726
|
-
bc[1] = _0 - (_i + bvirt) + (bvirt -
|
|
618
|
+
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
727
619
|
bc3 = _j + _i;
|
|
728
620
|
bvirt = bc3 - _j;
|
|
729
621
|
bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);
|
|
730
622
|
bc[3] = bc3;
|
|
731
|
-
|
|
732
|
-
cexdey1 = cex * dey;
|
|
623
|
+
s1 = cex * dey;
|
|
733
624
|
c = splitter * cex;
|
|
734
625
|
ahi = c - (c - cex);
|
|
735
626
|
alo = cex - ahi;
|
|
736
627
|
c = splitter * dey;
|
|
737
628
|
bhi = c - (c - dey);
|
|
738
629
|
blo = dey - bhi;
|
|
739
|
-
|
|
740
|
-
|
|
630
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
631
|
+
t1 = dex * cey;
|
|
741
632
|
c = splitter * dex;
|
|
742
633
|
ahi = c - (c - dex);
|
|
743
634
|
alo = dex - ahi;
|
|
744
635
|
c = splitter * cey;
|
|
745
636
|
bhi = c - (c - cey);
|
|
746
637
|
blo = cey - bhi;
|
|
747
|
-
|
|
748
|
-
_i =
|
|
749
|
-
bvirt =
|
|
750
|
-
cd[0] =
|
|
751
|
-
_j =
|
|
752
|
-
bvirt = _j -
|
|
753
|
-
_0 =
|
|
754
|
-
_i = _0 -
|
|
638
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
639
|
+
_i = s0 - t0;
|
|
640
|
+
bvirt = s0 - _i;
|
|
641
|
+
cd[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
642
|
+
_j = s1 + _i;
|
|
643
|
+
bvirt = _j - s1;
|
|
644
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
645
|
+
_i = _0 - t1;
|
|
755
646
|
bvirt = _0 - _i;
|
|
756
|
-
cd[1] = _0 - (_i + bvirt) + (bvirt -
|
|
647
|
+
cd[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
757
648
|
cd3 = _j + _i;
|
|
758
649
|
bvirt = cd3 - _j;
|
|
759
650
|
cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);
|
|
760
651
|
cd[3] = cd3;
|
|
761
|
-
|
|
762
|
-
dexaey1 = dex * aey;
|
|
652
|
+
s1 = dex * aey;
|
|
763
653
|
c = splitter * dex;
|
|
764
654
|
ahi = c - (c - dex);
|
|
765
655
|
alo = dex - ahi;
|
|
766
656
|
c = splitter * aey;
|
|
767
657
|
bhi = c - (c - aey);
|
|
768
658
|
blo = aey - bhi;
|
|
769
|
-
|
|
770
|
-
|
|
659
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
660
|
+
t1 = aex * dey;
|
|
771
661
|
c = splitter * aex;
|
|
772
662
|
ahi = c - (c - aex);
|
|
773
663
|
alo = aex - ahi;
|
|
774
664
|
c = splitter * dey;
|
|
775
665
|
bhi = c - (c - dey);
|
|
776
666
|
blo = dey - bhi;
|
|
777
|
-
|
|
778
|
-
_i =
|
|
779
|
-
bvirt =
|
|
780
|
-
da[0] =
|
|
781
|
-
_j =
|
|
782
|
-
bvirt = _j -
|
|
783
|
-
_0 =
|
|
784
|
-
_i = _0 -
|
|
667
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
668
|
+
_i = s0 - t0;
|
|
669
|
+
bvirt = s0 - _i;
|
|
670
|
+
da[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
671
|
+
_j = s1 + _i;
|
|
672
|
+
bvirt = _j - s1;
|
|
673
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
674
|
+
_i = _0 - t1;
|
|
785
675
|
bvirt = _0 - _i;
|
|
786
|
-
da[1] = _0 - (_i + bvirt) + (bvirt -
|
|
676
|
+
da[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
787
677
|
da3 = _j + _i;
|
|
788
678
|
bvirt = da3 - _j;
|
|
789
679
|
da[2] = _j - (da3 - bvirt) + (_i - bvirt);
|
|
790
680
|
da[3] = da3;
|
|
791
|
-
|
|
792
|
-
aexcey1 = aex * cey;
|
|
681
|
+
s1 = aex * cey;
|
|
793
682
|
c = splitter * aex;
|
|
794
683
|
ahi = c - (c - aex);
|
|
795
684
|
alo = aex - ahi;
|
|
796
685
|
c = splitter * cey;
|
|
797
686
|
bhi = c - (c - cey);
|
|
798
687
|
blo = cey - bhi;
|
|
799
|
-
|
|
800
|
-
|
|
688
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
689
|
+
t1 = cex * aey;
|
|
801
690
|
c = splitter * cex;
|
|
802
691
|
ahi = c - (c - cex);
|
|
803
692
|
alo = cex - ahi;
|
|
804
693
|
c = splitter * aey;
|
|
805
694
|
bhi = c - (c - aey);
|
|
806
695
|
blo = aey - bhi;
|
|
807
|
-
|
|
808
|
-
_i =
|
|
809
|
-
bvirt =
|
|
810
|
-
ac[0] =
|
|
811
|
-
_j =
|
|
812
|
-
bvirt = _j -
|
|
813
|
-
_0 =
|
|
814
|
-
_i = _0 -
|
|
696
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
697
|
+
_i = s0 - t0;
|
|
698
|
+
bvirt = s0 - _i;
|
|
699
|
+
ac[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
700
|
+
_j = s1 + _i;
|
|
701
|
+
bvirt = _j - s1;
|
|
702
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
703
|
+
_i = _0 - t1;
|
|
815
704
|
bvirt = _0 - _i;
|
|
816
|
-
ac[1] = _0 - (_i + bvirt) + (bvirt -
|
|
705
|
+
ac[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
817
706
|
ac3 = _j + _i;
|
|
818
707
|
bvirt = ac3 - _j;
|
|
819
708
|
ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);
|
|
820
709
|
ac[3] = ac3;
|
|
821
|
-
|
|
822
|
-
bexdey1 = bex * dey;
|
|
710
|
+
s1 = bex * dey;
|
|
823
711
|
c = splitter * bex;
|
|
824
712
|
ahi = c - (c - bex);
|
|
825
713
|
alo = bex - ahi;
|
|
826
714
|
c = splitter * dey;
|
|
827
715
|
bhi = c - (c - dey);
|
|
828
716
|
blo = dey - bhi;
|
|
829
|
-
|
|
830
|
-
|
|
717
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
718
|
+
t1 = dex * bey;
|
|
831
719
|
c = splitter * dex;
|
|
832
720
|
ahi = c - (c - dex);
|
|
833
721
|
alo = dex - ahi;
|
|
834
722
|
c = splitter * bey;
|
|
835
723
|
bhi = c - (c - bey);
|
|
836
724
|
blo = bey - bhi;
|
|
837
|
-
|
|
838
|
-
_i =
|
|
839
|
-
bvirt =
|
|
840
|
-
bd[0] =
|
|
841
|
-
_j =
|
|
842
|
-
bvirt = _j -
|
|
843
|
-
_0 =
|
|
844
|
-
_i = _0 -
|
|
725
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
726
|
+
_i = s0 - t0;
|
|
727
|
+
bvirt = s0 - _i;
|
|
728
|
+
bd[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
729
|
+
_j = s1 + _i;
|
|
730
|
+
bvirt = _j - s1;
|
|
731
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
732
|
+
_i = _0 - t1;
|
|
845
733
|
bvirt = _0 - _i;
|
|
846
|
-
bd[1] = _0 - (_i + bvirt) + (bvirt -
|
|
734
|
+
bd[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
847
735
|
bd3 = _j + _i;
|
|
848
736
|
bvirt = bd3 - _j;
|
|
849
737
|
bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);
|
|
850
738
|
bd[3] = bd3;
|
|
851
739
|
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
temp48len = scale_expansion_zeroelim(temp24len, temp24, aey, temp48);
|
|
860
|
-
ylen = scale_expansion_zeroelim(temp48len, temp48, -aey, ydet);
|
|
861
|
-
temp48len = scale_expansion_zeroelim(temp24len, temp24, aez, temp48);
|
|
862
|
-
zlen = scale_expansion_zeroelim(temp48len, temp48, -aez, zdet);
|
|
863
|
-
xylen = fast_expansion_sum_zeroelim(xlen, xdet, ylen, ydet, xydet);
|
|
864
|
-
const alen = fast_expansion_sum_zeroelim(xylen, xydet, zlen, zdet, adet);
|
|
865
|
-
|
|
866
|
-
temp8alen = scale_expansion_zeroelim(4, da, cez, temp8a);
|
|
867
|
-
temp8blen = scale_expansion_zeroelim(4, ac, dez, temp8b);
|
|
868
|
-
temp8clen = scale_expansion_zeroelim(4, cd, aez, temp8c);
|
|
869
|
-
temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
|
|
870
|
-
temp24len = fast_expansion_sum_zeroelim(temp8clen, temp8c, temp16len, temp16, temp24);
|
|
871
|
-
temp48len = scale_expansion_zeroelim(temp24len, temp24, bex, temp48);
|
|
872
|
-
xlen = scale_expansion_zeroelim(temp48len, temp48, bex, xdet);
|
|
873
|
-
temp48len = scale_expansion_zeroelim(temp24len, temp24, bey, temp48);
|
|
874
|
-
ylen = scale_expansion_zeroelim(temp48len, temp48, bey, ydet);
|
|
875
|
-
temp48len = scale_expansion_zeroelim(temp24len, temp24, bez, temp48);
|
|
876
|
-
zlen = scale_expansion_zeroelim(temp48len, temp48, bez, zdet);
|
|
877
|
-
xylen = fast_expansion_sum_zeroelim(xlen, xdet, ylen, ydet, xydet);
|
|
878
|
-
const blen = fast_expansion_sum_zeroelim(xylen, xydet, zlen, zdet, bdet);
|
|
879
|
-
|
|
880
|
-
temp8alen = scale_expansion_zeroelim(4, ab, dez, temp8a);
|
|
881
|
-
temp8blen = scale_expansion_zeroelim(4, bd, aez, temp8b);
|
|
882
|
-
temp8clen = scale_expansion_zeroelim(4, da, bez, temp8c);
|
|
883
|
-
temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
|
|
884
|
-
temp24len = fast_expansion_sum_zeroelim(temp8clen, temp8c, temp16len, temp16, temp24);
|
|
885
|
-
temp48len = scale_expansion_zeroelim(temp24len, temp24, cex, temp48);
|
|
886
|
-
xlen = scale_expansion_zeroelim(temp48len, temp48, -cex, xdet);
|
|
887
|
-
temp48len = scale_expansion_zeroelim(temp24len, temp24, cey, temp48);
|
|
888
|
-
ylen = scale_expansion_zeroelim(temp48len, temp48, -cey, ydet);
|
|
889
|
-
temp48len = scale_expansion_zeroelim(temp24len, temp24, cez, temp48);
|
|
890
|
-
zlen = scale_expansion_zeroelim(temp48len, temp48, -cez, zdet);
|
|
891
|
-
xylen = fast_expansion_sum_zeroelim(xlen, xdet, ylen, ydet, xydet);
|
|
892
|
-
const clen = fast_expansion_sum_zeroelim(xylen, xydet, zlen, zdet, cdet);
|
|
893
|
-
|
|
894
|
-
temp8alen = scale_expansion_zeroelim(4, bc, aez, temp8a);
|
|
895
|
-
temp8blen = scale_expansion_zeroelim(4, ac, -bez, temp8b);
|
|
896
|
-
temp8clen = scale_expansion_zeroelim(4, ab, cez, temp8c);
|
|
897
|
-
temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
|
|
898
|
-
temp24len = fast_expansion_sum_zeroelim(temp8clen, temp8c, temp16len, temp16, temp24);
|
|
899
|
-
temp48len = scale_expansion_zeroelim(temp24len, temp24, dex, temp48);
|
|
900
|
-
xlen = scale_expansion_zeroelim(temp48len, temp48, dex, xdet);
|
|
901
|
-
temp48len = scale_expansion_zeroelim(temp24len, temp24, dey, temp48);
|
|
902
|
-
ylen = scale_expansion_zeroelim(temp48len, temp48, dey, ydet);
|
|
903
|
-
temp48len = scale_expansion_zeroelim(temp24len, temp24, dez, temp48);
|
|
904
|
-
zlen = scale_expansion_zeroelim(temp48len, temp48, dez, zdet);
|
|
905
|
-
xylen = fast_expansion_sum_zeroelim(xlen, xdet, ylen, ydet, xydet);
|
|
906
|
-
const dlen = fast_expansion_sum_zeroelim(xylen, xydet, zlen, zdet, ddet);
|
|
740
|
+
const finlen = sum(
|
|
741
|
+
sum(
|
|
742
|
+
negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,
|
|
743
|
+
liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,
|
|
744
|
+
sum(
|
|
745
|
+
negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,
|
|
746
|
+
liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);
|
|
907
747
|
|
|
908
|
-
|
|
909
|
-
const cdlen = fast_expansion_sum_zeroelim(clen, cdet, dlen, ddet, cddet);
|
|
910
|
-
const finlength = fast_expansion_sum_zeroelim(ablen, abdet, cdlen, cddet, fin1);
|
|
911
|
-
|
|
912
|
-
let det = estimate(finlength, fin1);
|
|
748
|
+
let det = estimate(finlen, fin);
|
|
913
749
|
let errbound = isperrboundB * permanent;
|
|
914
750
|
if (det >= errbound || -det >= errbound) {
|
|
915
751
|
return det;
|
|
@@ -999,7 +835,6 @@ function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {
|
|
|
999
835
|
const dexaey = dex * aey;
|
|
1000
836
|
const aexdey = aex * dey;
|
|
1001
837
|
const da = dexaey - aexdey;
|
|
1002
|
-
|
|
1003
838
|
const aexcey = aex * cey;
|
|
1004
839
|
const cexaey = cex * aey;
|
|
1005
840
|
const ac = aexcey - cexaey;
|
|
@@ -1066,7 +901,6 @@ function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz
|
|
|
1066
901
|
const bc = bex * cey - cex * bey;
|
|
1067
902
|
const cd = cex * dey - dex * cey;
|
|
1068
903
|
const da = dex * aey - aex * dey;
|
|
1069
|
-
|
|
1070
904
|
const ac = aex * cey - cex * aey;
|
|
1071
905
|
const bd = bex * dey - dex * bey;
|
|
1072
906
|
|
|
@@ -1088,4 +922,4 @@ exports.inspherefast = inspherefast;
|
|
|
1088
922
|
|
|
1089
923
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
1090
924
|
|
|
1091
|
-
}));
|
|
925
|
+
})));
|