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/umd/predicates.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
- function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
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 ((eindex < elen) && (findex < flen)) {
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 ((eindex < elen) && (findex < flen)) {
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 scale_expansion_zeroelim(elen, e, b, h) {
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
- Q = e[0] * b;
91
- c = splitter * e[0];
92
- ahi = c - (c - e[0]);
93
- alo = e[0] - ahi;
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 eindex = 1; eindex < elen; eindex++) {
100
- const enow = e[eindex];
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.0 || hindex === 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];
@@ -139,53 +151,52 @@ const B = vec(4);
139
151
  const C1 = vec(8);
140
152
  const C2 = vec(12);
141
153
  const D = vec(16);
142
- const u = vec(4);
154
+ const u$2 = vec(4);
143
155
 
144
156
  function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {
145
157
  let acxtail, acytail, bcxtail, bcytail;
146
- let detleft, detright, detlefttail, detrighttail;
147
- let B3, u3, s1, t1, s0, t0;
148
- let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0;
158
+ let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
149
159
 
150
160
  const acx = ax - cx;
151
161
  const bcx = bx - cx;
152
162
  const acy = ay - cy;
153
163
  const bcy = by - cy;
154
164
 
155
- detleft = acx * bcy;
165
+ s1 = acx * bcy;
156
166
  c = splitter * acx;
157
167
  ahi = c - (c - acx);
158
168
  alo = acx - ahi;
159
169
  c = splitter * bcy;
160
170
  bhi = c - (c - bcy);
161
171
  blo = bcy - bhi;
162
- detlefttail = alo * blo - (detleft - ahi * bhi - alo * bhi - ahi * blo);
163
- detright = acy * bcx;
172
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
173
+ t1 = acy * bcx;
164
174
  c = splitter * acy;
165
175
  ahi = c - (c - acy);
166
176
  alo = acy - ahi;
167
177
  c = splitter * bcx;
168
178
  bhi = c - (c - bcx);
169
179
  blo = bcx - bhi;
170
- detrighttail = alo * blo - (detright - ahi * bhi - alo * bhi - ahi * blo);
171
-
172
- _i = detlefttail - detrighttail;
173
- bvirt = detlefttail - _i;
174
- B[0] = detlefttail - (_i + bvirt) + (bvirt - detrighttail);
175
- _j = detleft + _i;
176
- bvirt = _j - detleft;
177
- _0 = detleft - (_j - bvirt) + (_i - bvirt);
178
- _i = _0 - detright;
180
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
181
+ _i = s0 - t0;
182
+ bvirt = s0 - _i;
183
+ B[0] = s0 - (_i + bvirt) + (bvirt - t0);
184
+ _j = s1 + _i;
185
+ bvirt = _j - s1;
186
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
187
+ _i = _0 - t1;
179
188
  bvirt = _0 - _i;
180
- B[1] = _0 - (_i + bvirt) + (bvirt - detright);
181
- B3 = _j + _i;
182
- bvirt = B3 - _j;
183
- B[2] = _j - (B3 - bvirt) + (_i - bvirt);
184
- B[3] = B3;
189
+ B[1] = _0 - (_i + bvirt) + (bvirt - t1);
190
+ u3 = _j + _i;
191
+ bvirt = u3 - _j;
192
+ B[2] = _j - (u3 - bvirt) + (_i - bvirt);
193
+ B[3] = u3;
185
194
 
186
195
  let det = estimate(4, B);
187
196
  let errbound = ccwerrboundB * detsum;
188
- if (det >= errbound || -det >= errbound) return det;
197
+ if (det >= errbound || -det >= errbound) {
198
+ return det;
199
+ }
189
200
 
190
201
  bvirt = ax - acx;
191
202
  acxtail = ax - (acx + bvirt) + (bvirt - cx);
@@ -196,13 +207,13 @@ function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {
196
207
  bvirt = by - bcy;
197
208
  bcytail = by - (bcy + bvirt) + (bvirt - cy);
198
209
 
199
- if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) return det;
210
+ if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {
211
+ return det;
212
+ }
200
213
 
201
214
  errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);
202
215
  det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);
203
- if (det >= errbound || -det >= errbound) {
204
- return det;
205
- }
216
+ if (det >= errbound || -det >= errbound) return det;
206
217
 
207
218
  s1 = acxtail * bcy;
208
219
  c = splitter * acxtail;
@@ -222,18 +233,18 @@ function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {
222
233
  t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
223
234
  _i = s0 - t0;
224
235
  bvirt = s0 - _i;
225
- u[0] = s0 - (_i + bvirt) + (bvirt - t0);
236
+ u$2[0] = s0 - (_i + bvirt) + (bvirt - t0);
226
237
  _j = s1 + _i;
227
238
  bvirt = _j - s1;
228
239
  _0 = s1 - (_j - bvirt) + (_i - bvirt);
229
240
  _i = _0 - t1;
230
241
  bvirt = _0 - _i;
231
- u[1] = _0 - (_i + bvirt) + (bvirt - t1);
242
+ u$2[1] = _0 - (_i + bvirt) + (bvirt - t1);
232
243
  u3 = _j + _i;
233
244
  bvirt = u3 - _j;
234
- u[2] = _j - (u3 - bvirt) + (_i - bvirt);
235
- u[3] = u3;
236
- const C1length = fast_expansion_sum_zeroelim(4, B, 4, u, C1);
245
+ u$2[2] = _j - (u3 - bvirt) + (_i - bvirt);
246
+ u$2[3] = u3;
247
+ const C1len = sum(4, B, 4, u$2, C1);
237
248
 
238
249
  s1 = acx * bcytail;
239
250
  c = splitter * acx;
@@ -253,18 +264,18 @@ function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {
253
264
  t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
254
265
  _i = s0 - t0;
255
266
  bvirt = s0 - _i;
256
- u[0] = s0 - (_i + bvirt) + (bvirt - t0);
267
+ u$2[0] = s0 - (_i + bvirt) + (bvirt - t0);
257
268
  _j = s1 + _i;
258
269
  bvirt = _j - s1;
259
270
  _0 = s1 - (_j - bvirt) + (_i - bvirt);
260
271
  _i = _0 - t1;
261
272
  bvirt = _0 - _i;
262
- u[1] = _0 - (_i + bvirt) + (bvirt - t1);
273
+ u$2[1] = _0 - (_i + bvirt) + (bvirt - t1);
263
274
  u3 = _j + _i;
264
275
  bvirt = u3 - _j;
265
- u[2] = _j - (u3 - bvirt) + (_i - bvirt);
266
- u[3] = u3;
267
- const C2length = fast_expansion_sum_zeroelim(C1length, C1, 4, u, C2);
276
+ u$2[2] = _j - (u3 - bvirt) + (_i - bvirt);
277
+ u$2[3] = u3;
278
+ const C2len = sum(C1len, C1, 4, u$2, C2);
268
279
 
269
280
  s1 = acxtail * bcytail;
270
281
  c = splitter * acxtail;
@@ -284,48 +295,31 @@ function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {
284
295
  t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
285
296
  _i = s0 - t0;
286
297
  bvirt = s0 - _i;
287
- u[0] = s0 - (_i + bvirt) + (bvirt - t0);
298
+ u$2[0] = s0 - (_i + bvirt) + (bvirt - t0);
288
299
  _j = s1 + _i;
289
300
  bvirt = _j - s1;
290
301
  _0 = s1 - (_j - bvirt) + (_i - bvirt);
291
302
  _i = _0 - t1;
292
303
  bvirt = _0 - _i;
293
- u[1] = _0 - (_i + bvirt) + (bvirt - t1);
304
+ u$2[1] = _0 - (_i + bvirt) + (bvirt - t1);
294
305
  u3 = _j + _i;
295
306
  bvirt = u3 - _j;
296
- u[2] = _j - (u3 - bvirt) + (_i - bvirt);
297
- u[3] = u3;
298
- const Dlength = fast_expansion_sum_zeroelim(C2length, C2, 4, u, D);
307
+ u$2[2] = _j - (u3 - bvirt) + (_i - bvirt);
308
+ u$2[3] = u3;
309
+ const Dlen = sum(C2len, C2, 4, u$2, D);
299
310
 
300
- return D[Dlength - 1];
311
+ return D[Dlen - 1];
301
312
  }
302
313
 
303
314
  function orient2d(ax, ay, bx, by, cx, cy) {
304
315
  const detleft = (ay - cy) * (bx - cx);
305
316
  const detright = (ax - cx) * (by - cy);
306
317
  const det = detleft - detright;
307
- let detsum;
308
-
309
- if (detleft > 0) {
310
- if (detright <= 0) {
311
- return det;
312
- }
313
- detsum = detleft + detright;
314
-
315
- } else if (detleft < 0) {
316
- if (detright >= 0) {
317
- return det;
318
- }
319
- detsum = -detleft - detright;
320
318
 
321
- } else {
322
- return det;
323
- }
319
+ if (detleft === 0 || detright === 0 || (detleft > 0) !== (detright > 0)) return det;
324
320
 
325
- const errbound = ccwerrboundA * detsum;
326
- if (det >= errbound || -det >= errbound) {
327
- return det;
328
- }
321
+ const detsum = Math.abs(detleft + detright);
322
+ if (Math.abs(det) >= ccwerrboundA * detsum) return det;
329
323
 
330
324
  return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);
331
325
  }
@@ -338,59 +332,210 @@ const o3derrboundA = (7 + 56 * epsilon) * epsilon;
338
332
  const o3derrboundB = (3 + 28 * epsilon) * epsilon;
339
333
  const o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;
340
334
 
341
- const bc = vec(4);
342
- const ca = vec(4);
343
- const ab = vec(4);
344
- const adet = vec(8);
345
- const bdet = vec(8);
346
- const cdet = vec(8);
347
- const abdet = vec(16);
348
- const fin1 = vec(192);
349
- const fin2 = vec(192);
335
+ const bc$2 = vec(4);
336
+ const ca$1 = vec(4);
337
+ const ab$2 = vec(4);
350
338
  const at_b = vec(4);
351
339
  const at_c = vec(4);
352
340
  const bt_c = vec(4);
353
341
  const bt_a = vec(4);
354
342
  const ct_a = vec(4);
355
343
  const ct_b = vec(4);
356
- const bct = vec(8);
357
- const cat = vec(8);
358
- const abt = vec(8);
344
+ const bct$1 = vec(8);
345
+ const cat$1 = vec(8);
346
+ const abt$1 = vec(8);
359
347
  const u$1 = vec(4);
360
- const v = vec(12);
361
- const w = vec(16);
362
348
 
363
- function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {
364
- let bdxcdy1, cdxbdy1, cdxady1, adxcdy1, adxbdy1, bdxady1;
365
- let bdxcdy0, cdxbdy0, cdxady0, adxcdy0, adxbdy0, bdxady0;
366
- let bc3, ca3, ab3;
367
- let finnow, finother, finswap;
368
- let finlength;
349
+ const _8$2 = vec(8);
350
+ const _8b$1 = vec(8);
351
+ const _16$2 = vec(8);
352
+ const _12 = vec(12);
353
+
354
+ let fin$2 = vec(192);
355
+ let fin2$1 = vec(192);
356
+
357
+ function finadd$1(finlen, alen, a) {
358
+ finlen = sum(finlen, fin$2, alen, a, fin2$1);
359
+ const tmp = fin$2; fin$2 = fin2$1; fin2$1 = tmp;
360
+ return finlen;
361
+ }
362
+
363
+ function tailinit(xtail, ytail, ax, ay, bx, by, a, b) {
364
+ let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3, negate;
365
+ if (xtail === 0) {
366
+ if (ytail === 0) {
367
+ a[0] = 0;
368
+ b[0] = 0;
369
+ return 1;
370
+ } else {
371
+ negate = -ytail;
372
+ s1 = negate * ax;
373
+ c = splitter * negate;
374
+ ahi = c - (c - negate);
375
+ alo = negate - ahi;
376
+ c = splitter * ax;
377
+ bhi = c - (c - ax);
378
+ blo = ax - bhi;
379
+ a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
380
+ a[1] = s1;
381
+ s1 = ytail * bx;
382
+ c = splitter * ytail;
383
+ ahi = c - (c - ytail);
384
+ alo = ytail - ahi;
385
+ c = splitter * bx;
386
+ bhi = c - (c - bx);
387
+ blo = bx - bhi;
388
+ b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
389
+ b[1] = s1;
390
+ return 2;
391
+ }
392
+ } else {
393
+ if (ytail === 0) {
394
+ s1 = xtail * ay;
395
+ c = splitter * xtail;
396
+ ahi = c - (c - xtail);
397
+ alo = xtail - ahi;
398
+ c = splitter * ay;
399
+ bhi = c - (c - ay);
400
+ blo = ay - bhi;
401
+ a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
402
+ a[1] = s1;
403
+ negate = -xtail;
404
+ s1 = negate * by;
405
+ c = splitter * negate;
406
+ ahi = c - (c - negate);
407
+ alo = negate - ahi;
408
+ c = splitter * by;
409
+ bhi = c - (c - by);
410
+ blo = by - bhi;
411
+ b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
412
+ b[1] = s1;
413
+ return 2;
414
+ } else {
415
+ s1 = xtail * ay;
416
+ c = splitter * xtail;
417
+ ahi = c - (c - xtail);
418
+ alo = xtail - ahi;
419
+ c = splitter * ay;
420
+ bhi = c - (c - ay);
421
+ blo = ay - bhi;
422
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
423
+ t1 = ytail * ax;
424
+ c = splitter * ytail;
425
+ ahi = c - (c - ytail);
426
+ alo = ytail - ahi;
427
+ c = splitter * ax;
428
+ bhi = c - (c - ax);
429
+ blo = ax - bhi;
430
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
431
+ _i = s0 - t0;
432
+ bvirt = s0 - _i;
433
+ a[0] = s0 - (_i + bvirt) + (bvirt - t0);
434
+ _j = s1 + _i;
435
+ bvirt = _j - s1;
436
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
437
+ _i = _0 - t1;
438
+ bvirt = _0 - _i;
439
+ a[1] = _0 - (_i + bvirt) + (bvirt - t1);
440
+ u3 = _j + _i;
441
+ bvirt = u3 - _j;
442
+ a[2] = _j - (u3 - bvirt) + (_i - bvirt);
443
+ a[3] = u3;
444
+ s1 = ytail * bx;
445
+ c = splitter * ytail;
446
+ ahi = c - (c - ytail);
447
+ alo = ytail - ahi;
448
+ c = splitter * bx;
449
+ bhi = c - (c - bx);
450
+ blo = bx - bhi;
451
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
452
+ t1 = xtail * by;
453
+ c = splitter * xtail;
454
+ ahi = c - (c - xtail);
455
+ alo = xtail - ahi;
456
+ c = splitter * by;
457
+ bhi = c - (c - by);
458
+ blo = by - bhi;
459
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
460
+ _i = s0 - t0;
461
+ bvirt = s0 - _i;
462
+ b[0] = s0 - (_i + bvirt) + (bvirt - t0);
463
+ _j = s1 + _i;
464
+ bvirt = _j - s1;
465
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
466
+ _i = _0 - t1;
467
+ bvirt = _0 - _i;
468
+ b[1] = _0 - (_i + bvirt) + (bvirt - t1);
469
+ u3 = _j + _i;
470
+ bvirt = u3 - _j;
471
+ b[2] = _j - (u3 - bvirt) + (_i - bvirt);
472
+ b[3] = u3;
473
+ return 4;
474
+ }
475
+ }
476
+ }
477
+
478
+ function tailadd(finlen, a, b, k, z) {
479
+ let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;
480
+ s1 = a * b;
481
+ c = splitter * a;
482
+ ahi = c - (c - a);
483
+ alo = a - ahi;
484
+ c = splitter * b;
485
+ bhi = c - (c - b);
486
+ blo = b - bhi;
487
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
488
+ c = splitter * k;
489
+ bhi = c - (c - k);
490
+ blo = k - bhi;
491
+ _i = s0 * k;
492
+ c = splitter * s0;
493
+ ahi = c - (c - s0);
494
+ alo = s0 - ahi;
495
+ u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
496
+ _j = s1 * k;
497
+ c = splitter * s1;
498
+ ahi = c - (c - s1);
499
+ alo = s1 - ahi;
500
+ _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
501
+ _k = _i + _0;
502
+ bvirt = _k - _i;
503
+ u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
504
+ u3 = _j + _k;
505
+ u$1[2] = _k - (u3 - _j);
506
+ u$1[3] = u3;
507
+ finlen = finadd$1(finlen, 4, u$1);
508
+ if (z !== 0) {
509
+ c = splitter * z;
510
+ bhi = c - (c - z);
511
+ blo = z - bhi;
512
+ _i = s0 * z;
513
+ c = splitter * s0;
514
+ ahi = c - (c - s0);
515
+ alo = s0 - ahi;
516
+ u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
517
+ _j = s1 * z;
518
+ c = splitter * s1;
519
+ ahi = c - (c - s1);
520
+ alo = s1 - ahi;
521
+ _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
522
+ _k = _i + _0;
523
+ bvirt = _k - _i;
524
+ u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
525
+ u3 = _j + _k;
526
+ u$1[2] = _k - (u3 - _j);
527
+ u$1[3] = u3;
528
+ finlen = finadd$1(finlen, 4, u$1);
529
+ }
530
+ return finlen;
531
+ }
369
532
 
533
+ function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {
534
+ let finlen;
370
535
  let adxtail, bdxtail, cdxtail;
371
536
  let adytail, bdytail, cdytail;
372
537
  let adztail, bdztail, cdztail;
373
- let at_blarge, at_clarge;
374
- let bt_clarge, bt_alarge;
375
- let ct_alarge, ct_blarge;
376
- let at_blen, at_clen, bt_clen, bt_alen, ct_alen, ct_blen;
377
- let bdxt_cdy1, cdxt_bdy1, cdxt_ady1;
378
- let adxt_cdy1, adxt_bdy1, bdxt_ady1;
379
- let bdxt_cdy0, cdxt_bdy0, cdxt_ady0;
380
- let adxt_cdy0, adxt_bdy0, bdxt_ady0;
381
- let bdyt_cdx1, cdyt_bdx1, cdyt_adx1;
382
- let adyt_cdx1, adyt_bdx1, bdyt_adx1;
383
- let bdyt_cdx0, cdyt_bdx0, cdyt_adx0;
384
- let adyt_cdx0, adyt_bdx0, bdyt_adx0;
385
- let bdxt_cdyt1, cdxt_bdyt1, cdxt_adyt1;
386
- let adxt_cdyt1, adxt_bdyt1, bdxt_adyt1;
387
- let bdxt_cdyt0, cdxt_bdyt0, cdxt_adyt0;
388
- let adxt_cdyt0, adxt_bdyt0, bdxt_adyt0;
389
- let u3;
390
- let vlength, wlength;
391
- let negate;
392
-
393
- let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0;
538
+ let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
394
539
 
395
540
  const adx = ax - dx;
396
541
  const bdx = bx - dx;
@@ -402,103 +547,101 @@ function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent
402
547
  const bdz = bz - dz;
403
548
  const cdz = cz - dz;
404
549
 
405
- bdxcdy1 = bdx * cdy;
550
+ s1 = bdx * cdy;
406
551
  c = splitter * bdx;
407
552
  ahi = c - (c - bdx);
408
553
  alo = bdx - ahi;
409
554
  c = splitter * cdy;
410
555
  bhi = c - (c - cdy);
411
556
  blo = cdy - bhi;
412
- bdxcdy0 = alo * blo - (bdxcdy1 - ahi * bhi - alo * bhi - ahi * blo);
413
- cdxbdy1 = cdx * bdy;
557
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
558
+ t1 = cdx * bdy;
414
559
  c = splitter * cdx;
415
560
  ahi = c - (c - cdx);
416
561
  alo = cdx - ahi;
417
562
  c = splitter * bdy;
418
563
  bhi = c - (c - bdy);
419
564
  blo = bdy - bhi;
420
- cdxbdy0 = alo * blo - (cdxbdy1 - ahi * bhi - alo * bhi - ahi * blo);
421
- _i = bdxcdy0 - cdxbdy0;
422
- bvirt = bdxcdy0 - _i;
423
- bc[0] = bdxcdy0 - (_i + bvirt) + (bvirt - cdxbdy0);
424
- _j = bdxcdy1 + _i;
425
- bvirt = _j - bdxcdy1;
426
- _0 = bdxcdy1 - (_j - bvirt) + (_i - bvirt);
427
- _i = _0 - cdxbdy1;
565
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
566
+ _i = s0 - t0;
567
+ bvirt = s0 - _i;
568
+ bc$2[0] = s0 - (_i + bvirt) + (bvirt - t0);
569
+ _j = s1 + _i;
570
+ bvirt = _j - s1;
571
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
572
+ _i = _0 - t1;
428
573
  bvirt = _0 - _i;
429
- bc[1] = _0 - (_i + bvirt) + (bvirt - cdxbdy1);
430
- bc3 = _j + _i;
431
- bvirt = bc3 - _j;
432
- bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);
433
- bc[3] = bc3;
434
- const alen = scale_expansion_zeroelim(4, bc, adz, adet);
435
-
436
- cdxady1 = cdx * ady;
574
+ bc$2[1] = _0 - (_i + bvirt) + (bvirt - t1);
575
+ u3 = _j + _i;
576
+ bvirt = u3 - _j;
577
+ bc$2[2] = _j - (u3 - bvirt) + (_i - bvirt);
578
+ bc$2[3] = u3;
579
+ s1 = cdx * ady;
437
580
  c = splitter * cdx;
438
581
  ahi = c - (c - cdx);
439
582
  alo = cdx - ahi;
440
583
  c = splitter * ady;
441
584
  bhi = c - (c - ady);
442
585
  blo = ady - bhi;
443
- cdxady0 = alo * blo - (cdxady1 - ahi * bhi - alo * bhi - ahi * blo);
444
- adxcdy1 = adx * cdy;
586
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
587
+ t1 = adx * cdy;
445
588
  c = splitter * adx;
446
589
  ahi = c - (c - adx);
447
590
  alo = adx - ahi;
448
591
  c = splitter * cdy;
449
592
  bhi = c - (c - cdy);
450
593
  blo = cdy - bhi;
451
- adxcdy0 = alo * blo - (adxcdy1 - ahi * bhi - alo * bhi - ahi * blo);
452
- _i = cdxady0 - adxcdy0;
453
- bvirt = cdxady0 - _i;
454
- ca[0] = cdxady0 - (_i + bvirt) + (bvirt - adxcdy0);
455
- _j = cdxady1 + _i;
456
- bvirt = _j - cdxady1;
457
- _0 = cdxady1 - (_j - bvirt) + (_i - bvirt);
458
- _i = _0 - adxcdy1;
594
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
595
+ _i = s0 - t0;
596
+ bvirt = s0 - _i;
597
+ ca$1[0] = s0 - (_i + bvirt) + (bvirt - t0);
598
+ _j = s1 + _i;
599
+ bvirt = _j - s1;
600
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
601
+ _i = _0 - t1;
459
602
  bvirt = _0 - _i;
460
- ca[1] = _0 - (_i + bvirt) + (bvirt - adxcdy1);
461
- ca3 = _j + _i;
462
- bvirt = ca3 - _j;
463
- ca[2] = _j - (ca3 - bvirt) + (_i - bvirt);
464
- ca[3] = ca3;
465
- const blen = scale_expansion_zeroelim(4, ca, bdz, bdet);
466
-
467
- adxbdy1 = adx * bdy;
603
+ ca$1[1] = _0 - (_i + bvirt) + (bvirt - t1);
604
+ u3 = _j + _i;
605
+ bvirt = u3 - _j;
606
+ ca$1[2] = _j - (u3 - bvirt) + (_i - bvirt);
607
+ ca$1[3] = u3;
608
+ s1 = adx * bdy;
468
609
  c = splitter * adx;
469
610
  ahi = c - (c - adx);
470
611
  alo = adx - ahi;
471
612
  c = splitter * bdy;
472
613
  bhi = c - (c - bdy);
473
614
  blo = bdy - bhi;
474
- adxbdy0 = alo * blo - (adxbdy1 - ahi * bhi - alo * bhi - ahi * blo);
475
- bdxady1 = bdx * ady;
615
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
616
+ t1 = bdx * ady;
476
617
  c = splitter * bdx;
477
618
  ahi = c - (c - bdx);
478
619
  alo = bdx - ahi;
479
620
  c = splitter * ady;
480
621
  bhi = c - (c - ady);
481
622
  blo = ady - bhi;
482
- bdxady0 = alo * blo - (bdxady1 - ahi * bhi - alo * bhi - ahi * blo);
483
- _i = adxbdy0 - bdxady0;
484
- bvirt = adxbdy0 - _i;
485
- ab[0] = adxbdy0 - (_i + bvirt) + (bvirt - bdxady0);
486
- _j = adxbdy1 + _i;
487
- bvirt = _j - adxbdy1;
488
- _0 = adxbdy1 - (_j - bvirt) + (_i - bvirt);
489
- _i = _0 - bdxady1;
623
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
624
+ _i = s0 - t0;
625
+ bvirt = s0 - _i;
626
+ ab$2[0] = s0 - (_i + bvirt) + (bvirt - t0);
627
+ _j = s1 + _i;
628
+ bvirt = _j - s1;
629
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
630
+ _i = _0 - t1;
490
631
  bvirt = _0 - _i;
491
- ab[1] = _0 - (_i + bvirt) + (bvirt - bdxady1);
492
- ab3 = _j + _i;
493
- bvirt = ab3 - _j;
494
- ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);
495
- ab[3] = ab3;
496
- const clen = scale_expansion_zeroelim(4, ab, cdz, cdet);
632
+ ab$2[1] = _0 - (_i + bvirt) + (bvirt - t1);
633
+ u3 = _j + _i;
634
+ bvirt = u3 - _j;
635
+ ab$2[2] = _j - (u3 - bvirt) + (_i - bvirt);
636
+ ab$2[3] = u3;
497
637
 
498
- const ablen = fast_expansion_sum_zeroelim(alen, adet, blen, bdet, abdet);
499
- finlength = fast_expansion_sum_zeroelim(ablen, abdet, clen, cdet, fin1);
638
+ finlen = sum(
639
+ sum(
640
+ scale(4, bc$2, adz, _8$2), _8$2,
641
+ scale(4, ca$1, bdz, _8b$1), _8b$1, _16$2), _16$2,
642
+ scale(4, ab$2, cdz, _8$2), _8$2, fin$2);
500
643
 
501
- let det = estimate(finlength, fin1);
644
+ let det = estimate(finlen, fin$2);
502
645
  let errbound = o3derrboundB * permanent;
503
646
  if (det >= errbound || -det >= errbound) {
504
647
  return det;
@@ -538,737 +681,58 @@ function orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent
538
681
  return det;
539
682
  }
540
683
 
541
- finnow = fin1;
542
- finother = fin2;
543
-
544
- if (adxtail === 0) {
545
- if (adytail === 0) {
546
- at_b[0] = 0;
547
- at_blen = 1;
548
- at_c[0] = 0;
549
- at_clen = 1;
550
- } else {
551
- negate = -adytail;
552
- at_blarge = negate * bdx;
553
- c = splitter * negate;
554
- ahi = c - (c - negate);
555
- alo = negate - ahi;
556
- c = splitter * bdx;
557
- bhi = c - (c - bdx);
558
- blo = bdx - bhi;
559
- at_b[0] = alo * blo - (at_blarge - ahi * bhi - alo * bhi - ahi * blo);
560
- at_b[1] = at_blarge;
561
- at_blen = 2;
562
- at_clarge = adytail * cdx;
563
- c = splitter * adytail;
564
- ahi = c - (c - adytail);
565
- alo = adytail - ahi;
566
- c = splitter * cdx;
567
- bhi = c - (c - cdx);
568
- blo = cdx - bhi;
569
- at_c[0] = alo * blo - (at_clarge - ahi * bhi - alo * bhi - ahi * blo);
570
- at_c[1] = at_clarge;
571
- at_clen = 2;
572
- }
573
- } else {
574
- if (adytail === 0) {
575
- at_blarge = adxtail * bdy;
576
- c = splitter * adxtail;
577
- ahi = c - (c - adxtail);
578
- alo = adxtail - ahi;
579
- c = splitter * bdy;
580
- bhi = c - (c - bdy);
581
- blo = bdy - bhi;
582
- at_b[0] = alo * blo - (at_blarge - ahi * bhi - alo * bhi - ahi * blo);
583
- at_b[1] = at_blarge;
584
- at_blen = 2;
585
- negate = -adxtail;
586
- at_clarge = negate * cdy;
587
- c = splitter * negate;
588
- ahi = c - (c - negate);
589
- alo = negate - ahi;
590
- c = splitter * cdy;
591
- bhi = c - (c - cdy);
592
- blo = cdy - bhi;
593
- at_c[0] = alo * blo - (at_clarge - ahi * bhi - alo * bhi - ahi * blo);
594
- at_c[1] = at_clarge;
595
- at_clen = 2;
596
- } else {
597
- adxt_bdy1 = adxtail * bdy;
598
- c = splitter * adxtail;
599
- ahi = c - (c - adxtail);
600
- alo = adxtail - ahi;
601
- c = splitter * bdy;
602
- bhi = c - (c - bdy);
603
- blo = bdy - bhi;
604
- adxt_bdy0 = alo * blo - (adxt_bdy1 - ahi * bhi - alo * bhi - ahi * blo);
605
- adyt_bdx1 = adytail * bdx;
606
- c = splitter * adytail;
607
- ahi = c - (c - adytail);
608
- alo = adytail - ahi;
609
- c = splitter * bdx;
610
- bhi = c - (c - bdx);
611
- blo = bdx - bhi;
612
- adyt_bdx0 = alo * blo - (adyt_bdx1 - ahi * bhi - alo * bhi - ahi * blo);
613
- _i = adxt_bdy0 - adyt_bdx0;
614
- bvirt = adxt_bdy0 - _i;
615
- at_b[0] = adxt_bdy0 - (_i + bvirt) + (bvirt - adyt_bdx0);
616
- _j = adxt_bdy1 + _i;
617
- bvirt = _j - adxt_bdy1;
618
- _0 = adxt_bdy1 - (_j - bvirt) + (_i - bvirt);
619
- _i = _0 - adyt_bdx1;
620
- bvirt = _0 - _i;
621
- at_b[1] = _0 - (_i + bvirt) + (bvirt - adyt_bdx1);
622
- at_blarge = _j + _i;
623
- bvirt = at_blarge - _j;
624
- at_b[2] = _j - (at_blarge - bvirt) + (_i - bvirt);
625
- at_b[3] = at_blarge;
626
- at_blen = 4;
627
- adyt_cdx1 = adytail * cdx;
628
- c = splitter * adytail;
629
- ahi = c - (c - adytail);
630
- alo = adytail - ahi;
631
- c = splitter * cdx;
632
- bhi = c - (c - cdx);
633
- blo = cdx - bhi;
634
- adyt_cdx0 = alo * blo - (adyt_cdx1 - ahi * bhi - alo * bhi - ahi * blo);
635
- adxt_cdy1 = adxtail * cdy;
636
- c = splitter * adxtail;
637
- ahi = c - (c - adxtail);
638
- alo = adxtail - ahi;
639
- c = splitter * cdy;
640
- bhi = c - (c - cdy);
641
- blo = cdy - bhi;
642
- adxt_cdy0 = alo * blo - (adxt_cdy1 - ahi * bhi - alo * bhi - ahi * blo);
643
- _i = adyt_cdx0 - adxt_cdy0;
644
- bvirt = adyt_cdx0 - _i;
645
- at_c[0] = adyt_cdx0 - (_i + bvirt) + (bvirt - adxt_cdy0);
646
- _j = adyt_cdx1 + _i;
647
- bvirt = _j - adyt_cdx1;
648
- _0 = adyt_cdx1 - (_j - bvirt) + (_i - bvirt);
649
- _i = _0 - adxt_cdy1;
650
- bvirt = _0 - _i;
651
- at_c[1] = _0 - (_i + bvirt) + (bvirt - adxt_cdy1);
652
- at_clarge = _j + _i;
653
- bvirt = at_clarge - _j;
654
- at_c[2] = _j - (at_clarge - bvirt) + (_i - bvirt);
655
- at_c[3] = at_clarge;
656
- at_clen = 4;
657
- }
658
- }
659
- if (bdxtail === 0) {
660
- if (bdytail === 0) {
661
- bt_c[0] = 0;
662
- bt_clen = 1;
663
- bt_a[0] = 0;
664
- bt_alen = 1;
665
- } else {
666
- negate = -bdytail;
667
- bt_clarge = negate * cdx;
668
- c = splitter * negate;
669
- ahi = c - (c - negate);
670
- alo = negate - ahi;
671
- c = splitter * cdx;
672
- bhi = c - (c - cdx);
673
- blo = cdx - bhi;
674
- bt_c[0] = alo * blo - (bt_clarge - ahi * bhi - alo * bhi - ahi * blo);
675
- bt_c[1] = bt_clarge;
676
- bt_clen = 2;
677
- bt_alarge = bdytail * adx;
678
- c = splitter * bdytail;
679
- ahi = c - (c - bdytail);
680
- alo = bdytail - ahi;
681
- c = splitter * adx;
682
- bhi = c - (c - adx);
683
- blo = adx - bhi;
684
- bt_a[0] = alo * blo - (bt_alarge - ahi * bhi - alo * bhi - ahi * blo);
685
- bt_a[1] = bt_alarge;
686
- bt_alen = 2;
687
- }
688
- } else {
689
- if (bdytail === 0) {
690
- bt_clarge = bdxtail * cdy;
691
- c = splitter * bdxtail;
692
- ahi = c - (c - bdxtail);
693
- alo = bdxtail - ahi;
694
- c = splitter * cdy;
695
- bhi = c - (c - cdy);
696
- blo = cdy - bhi;
697
- bt_c[0] = alo * blo - (bt_clarge - ahi * bhi - alo * bhi - ahi * blo);
698
- bt_c[1] = bt_clarge;
699
- bt_clen = 2;
700
- negate = -bdxtail;
701
- bt_alarge = negate * ady;
702
- c = splitter * negate;
703
- ahi = c - (c - negate);
704
- alo = negate - ahi;
705
- c = splitter * ady;
706
- bhi = c - (c - ady);
707
- blo = ady - bhi;
708
- bt_a[0] = alo * blo - (bt_alarge - ahi * bhi - alo * bhi - ahi * blo);
709
- bt_a[1] = bt_alarge;
710
- bt_alen = 2;
711
- } else {
712
- bdxt_cdy1 = bdxtail * cdy;
713
- c = splitter * bdxtail;
714
- ahi = c - (c - bdxtail);
715
- alo = bdxtail - ahi;
716
- c = splitter * cdy;
717
- bhi = c - (c - cdy);
718
- blo = cdy - bhi;
719
- bdxt_cdy0 = alo * blo - (bdxt_cdy1 - ahi * bhi - alo * bhi - ahi * blo);
720
- bdyt_cdx1 = bdytail * cdx;
721
- c = splitter * bdytail;
722
- ahi = c - (c - bdytail);
723
- alo = bdytail - ahi;
724
- c = splitter * cdx;
725
- bhi = c - (c - cdx);
726
- blo = cdx - bhi;
727
- bdyt_cdx0 = alo * blo - (bdyt_cdx1 - ahi * bhi - alo * bhi - ahi * blo);
728
- _i = bdxt_cdy0 - bdyt_cdx0;
729
- bvirt = bdxt_cdy0 - _i;
730
- bt_c[0] = bdxt_cdy0 - (_i + bvirt) + (bvirt - bdyt_cdx0);
731
- _j = bdxt_cdy1 + _i;
732
- bvirt = _j - bdxt_cdy1;
733
- _0 = bdxt_cdy1 - (_j - bvirt) + (_i - bvirt);
734
- _i = _0 - bdyt_cdx1;
735
- bvirt = _0 - _i;
736
- bt_c[1] = _0 - (_i + bvirt) + (bvirt - bdyt_cdx1);
737
- bt_clarge = _j + _i;
738
- bvirt = bt_clarge - _j;
739
- bt_c[2] = _j - (bt_clarge - bvirt) + (_i - bvirt);
740
- bt_c[3] = bt_clarge;
741
- bt_clen = 4;
742
- bdyt_adx1 = bdytail * adx;
743
- c = splitter * bdytail;
744
- ahi = c - (c - bdytail);
745
- alo = bdytail - ahi;
746
- c = splitter * adx;
747
- bhi = c - (c - adx);
748
- blo = adx - bhi;
749
- bdyt_adx0 = alo * blo - (bdyt_adx1 - ahi * bhi - alo * bhi - ahi * blo);
750
- bdxt_ady1 = bdxtail * ady;
751
- c = splitter * bdxtail;
752
- ahi = c - (c - bdxtail);
753
- alo = bdxtail - ahi;
754
- c = splitter * ady;
755
- bhi = c - (c - ady);
756
- blo = ady - bhi;
757
- bdxt_ady0 = alo * blo - (bdxt_ady1 - ahi * bhi - alo * bhi - ahi * blo);
758
- _i = bdyt_adx0 - bdxt_ady0;
759
- bvirt = bdyt_adx0 - _i;
760
- bt_a[0] = bdyt_adx0 - (_i + bvirt) + (bvirt - bdxt_ady0);
761
- _j = bdyt_adx1 + _i;
762
- bvirt = _j - bdyt_adx1;
763
- _0 = bdyt_adx1 - (_j - bvirt) + (_i - bvirt);
764
- _i = _0 - bdxt_ady1;
765
- bvirt = _0 - _i;
766
- bt_a[1] = _0 - (_i + bvirt) + (bvirt - bdxt_ady1);
767
- bt_alarge = _j + _i;
768
- bvirt = bt_alarge - _j;
769
- bt_a[2] = _j - (bt_alarge - bvirt) + (_i - bvirt);
770
- bt_a[3] = bt_alarge;
771
- bt_alen = 4;
772
- }
773
- }
774
- if (cdxtail === 0) {
775
- if (cdytail === 0) {
776
- ct_a[0] = 0;
777
- ct_alen = 1;
778
- ct_b[0] = 0;
779
- ct_blen = 1;
780
- } else {
781
- negate = -cdytail;
782
- ct_alarge = negate * adx;
783
- c = splitter * negate;
784
- ahi = c - (c - negate);
785
- alo = negate - ahi;
786
- c = splitter * adx;
787
- bhi = c - (c - adx);
788
- blo = adx - bhi;
789
- ct_a[0] = alo * blo - (ct_alarge - ahi * bhi - alo * bhi - ahi * blo);
790
- ct_a[1] = ct_alarge;
791
- ct_alen = 2;
792
- ct_blarge = cdytail * bdx;
793
- c = splitter * cdytail;
794
- ahi = c - (c - cdytail);
795
- alo = cdytail - ahi;
796
- c = splitter * bdx;
797
- bhi = c - (c - bdx);
798
- blo = bdx - bhi;
799
- ct_b[0] = alo * blo - (ct_blarge - ahi * bhi - alo * bhi - ahi * blo);
800
- ct_b[1] = ct_blarge;
801
- ct_blen = 2;
802
- }
803
- } else {
804
- if (cdytail === 0) {
805
- ct_alarge = cdxtail * ady;
806
- c = splitter * cdxtail;
807
- ahi = c - (c - cdxtail);
808
- alo = cdxtail - ahi;
809
- c = splitter * ady;
810
- bhi = c - (c - ady);
811
- blo = ady - bhi;
812
- ct_a[0] = alo * blo - (ct_alarge - ahi * bhi - alo * bhi - ahi * blo);
813
- ct_a[1] = ct_alarge;
814
- ct_alen = 2;
815
- negate = -cdxtail;
816
- ct_blarge = negate * bdy;
817
- c = splitter * negate;
818
- ahi = c - (c - negate);
819
- alo = negate - ahi;
820
- c = splitter * bdy;
821
- bhi = c - (c - bdy);
822
- blo = bdy - bhi;
823
- ct_b[0] = alo * blo - (ct_blarge - ahi * bhi - alo * bhi - ahi * blo);
824
- ct_b[1] = ct_blarge;
825
- ct_blen = 2;
826
- } else {
827
- cdxt_ady1 = cdxtail * ady;
828
- c = splitter * cdxtail;
829
- ahi = c - (c - cdxtail);
830
- alo = cdxtail - ahi;
831
- c = splitter * ady;
832
- bhi = c - (c - ady);
833
- blo = ady - bhi;
834
- cdxt_ady0 = alo * blo - (cdxt_ady1 - ahi * bhi - alo * bhi - ahi * blo);
835
- cdyt_adx1 = cdytail * adx;
836
- c = splitter * cdytail;
837
- ahi = c - (c - cdytail);
838
- alo = cdytail - ahi;
839
- c = splitter * adx;
840
- bhi = c - (c - adx);
841
- blo = adx - bhi;
842
- cdyt_adx0 = alo * blo - (cdyt_adx1 - ahi * bhi - alo * bhi - ahi * blo);
843
- _i = cdxt_ady0 - cdyt_adx0;
844
- bvirt = cdxt_ady0 - _i;
845
- ct_a[0] = cdxt_ady0 - (_i + bvirt) + (bvirt - cdyt_adx0);
846
- _j = cdxt_ady1 + _i;
847
- bvirt = _j - cdxt_ady1;
848
- _0 = cdxt_ady1 - (_j - bvirt) + (_i - bvirt);
849
- _i = _0 - cdyt_adx1;
850
- bvirt = _0 - _i;
851
- ct_a[1] = _0 - (_i + bvirt) + (bvirt - cdyt_adx1);
852
- ct_alarge = _j + _i;
853
- bvirt = ct_alarge - _j;
854
- ct_a[2] = _j - (ct_alarge - bvirt) + (_i - bvirt);
855
- ct_a[3] = ct_alarge;
856
- ct_alen = 4;
857
- cdyt_bdx1 = cdytail * bdx;
858
- c = splitter * cdytail;
859
- ahi = c - (c - cdytail);
860
- alo = cdytail - ahi;
861
- c = splitter * bdx;
862
- bhi = c - (c - bdx);
863
- blo = bdx - bhi;
864
- cdyt_bdx0 = alo * blo - (cdyt_bdx1 - ahi * bhi - alo * bhi - ahi * blo);
865
- cdxt_bdy1 = cdxtail * bdy;
866
- c = splitter * cdxtail;
867
- ahi = c - (c - cdxtail);
868
- alo = cdxtail - ahi;
869
- c = splitter * bdy;
870
- bhi = c - (c - bdy);
871
- blo = bdy - bhi;
872
- cdxt_bdy0 = alo * blo - (cdxt_bdy1 - ahi * bhi - alo * bhi - ahi * blo);
873
- _i = cdyt_bdx0 - cdxt_bdy0;
874
- bvirt = cdyt_bdx0 - _i;
875
- ct_b[0] = cdyt_bdx0 - (_i + bvirt) + (bvirt - cdxt_bdy0);
876
- _j = cdyt_bdx1 + _i;
877
- bvirt = _j - cdyt_bdx1;
878
- _0 = cdyt_bdx1 - (_j - bvirt) + (_i - bvirt);
879
- _i = _0 - cdxt_bdy1;
880
- bvirt = _0 - _i;
881
- ct_b[1] = _0 - (_i + bvirt) + (bvirt - cdxt_bdy1);
882
- ct_blarge = _j + _i;
883
- bvirt = ct_blarge - _j;
884
- ct_b[2] = _j - (ct_blarge - bvirt) + (_i - bvirt);
885
- ct_b[3] = ct_blarge;
886
- ct_blen = 4;
887
- }
888
- }
684
+ const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);
685
+ const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);
686
+ const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);
889
687
 
890
- const bctlen = fast_expansion_sum_zeroelim(bt_clen, bt_c, ct_blen, ct_b, bct);
891
- wlength = scale_expansion_zeroelim(bctlen, bct, adz, w);
892
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, wlength, w, finother);
893
- finswap = finnow; finnow = finother; finother = finswap;
688
+ const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct$1);
689
+ finlen = finadd$1(finlen, scale(bctlen, bct$1, adz, _16$2), _16$2);
894
690
 
895
- const catlen = fast_expansion_sum_zeroelim(ct_alen, ct_a, at_clen, at_c, cat);
896
- wlength = scale_expansion_zeroelim(catlen, cat, bdz, w);
897
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, wlength, w, finother);
898
- finswap = finnow; finnow = finother; finother = finswap;
691
+ const catlen = sum(ct_len, ct_a, at_len, at_c, cat$1);
692
+ finlen = finadd$1(finlen, scale(catlen, cat$1, bdz, _16$2), _16$2);
899
693
 
900
- const abtlen = fast_expansion_sum_zeroelim(at_blen, at_b, bt_alen, bt_a, abt);
901
- wlength = scale_expansion_zeroelim(abtlen, abt, cdz, w);
902
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, wlength, w, finother);
903
- finswap = finnow; finnow = finother; finother = finswap;
694
+ const abtlen = sum(at_len, at_b, bt_len, bt_a, abt$1);
695
+ finlen = finadd$1(finlen, scale(abtlen, abt$1, cdz, _16$2), _16$2);
904
696
 
905
697
  if (adztail !== 0) {
906
- vlength = scale_expansion_zeroelim(4, bc, adztail, v);
907
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, vlength, v, finother);
908
- finswap = finnow; finnow = finother; finother = finswap;
698
+ finlen = finadd$1(finlen, scale(4, bc$2, adztail, _12), _12);
699
+ finlen = finadd$1(finlen, scale(bctlen, bct$1, adztail, _16$2), _16$2);
909
700
  }
910
701
  if (bdztail !== 0) {
911
- vlength = scale_expansion_zeroelim(4, ca, bdztail, v);
912
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, vlength, v, finother);
913
- finswap = finnow; finnow = finother; finother = finswap;
702
+ finlen = finadd$1(finlen, scale(4, ca$1, bdztail, _12), _12);
703
+ finlen = finadd$1(finlen, scale(catlen, cat$1, bdztail, _16$2), _16$2);
914
704
  }
915
705
  if (cdztail !== 0) {
916
- vlength = scale_expansion_zeroelim(4, ab, cdztail, v);
917
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, vlength, v, finother);
918
- finswap = finnow; finnow = finother; finother = finswap;
706
+ finlen = finadd$1(finlen, scale(4, ab$2, cdztail, _12), _12);
707
+ finlen = finadd$1(finlen, scale(abtlen, abt$1, cdztail, _16$2), _16$2);
919
708
  }
920
709
 
921
710
  if (adxtail !== 0) {
922
711
  if (bdytail !== 0) {
923
- adxt_bdyt1 = adxtail * bdytail;
924
- c = splitter * adxtail;
925
- ahi = c - (c - adxtail);
926
- alo = adxtail - ahi;
927
- c = splitter * bdytail;
928
- bhi = c - (c - bdytail);
929
- blo = bdytail - bhi;
930
- adxt_bdyt0 = alo * blo - (adxt_bdyt1 - ahi * bhi - alo * bhi - ahi * blo);
931
- c = splitter * cdz;
932
- bhi = c - (c - cdz);
933
- blo = cdz - bhi;
934
- _i = adxt_bdyt0 * cdz;
935
- c = splitter * adxt_bdyt0;
936
- ahi = c - (c - adxt_bdyt0);
937
- alo = adxt_bdyt0 - ahi;
938
- u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
939
- _j = adxt_bdyt1 * cdz;
940
- c = splitter * adxt_bdyt1;
941
- ahi = c - (c - adxt_bdyt1);
942
- alo = adxt_bdyt1 - ahi;
943
- _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
944
- _k = _i + _0;
945
- bvirt = _k - _i;
946
- u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
947
- u3 = _j + _k;
948
- u$1[2] = _k - (u3 - _j);
949
- u$1[3] = u3;
950
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, 4, u$1, finother);
951
- finswap = finnow; finnow = finother; finother = finswap;
952
- if (cdztail !== 0) {
953
- c = splitter * cdztail;
954
- bhi = c - (c - cdztail);
955
- blo = cdztail - bhi;
956
- _i = adxt_bdyt0 * cdztail;
957
- c = splitter * adxt_bdyt0;
958
- ahi = c - (c - adxt_bdyt0);
959
- alo = adxt_bdyt0 - ahi;
960
- u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
961
- _j = adxt_bdyt1 * cdztail;
962
- c = splitter * adxt_bdyt1;
963
- ahi = c - (c - adxt_bdyt1);
964
- alo = adxt_bdyt1 - ahi;
965
- _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
966
- _k = _i + _0;
967
- bvirt = _k - _i;
968
- u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
969
- u3 = _j + _k;
970
- u$1[2] = _k - (u3 - _j);
971
- u$1[3] = u3;
972
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, 4, u$1, finother);
973
- finswap = finnow; finnow = finother; finother = finswap;
974
- }
712
+ finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);
975
713
  }
976
714
  if (cdytail !== 0) {
977
- negate = -adxtail;
978
- adxt_cdyt1 = negate * cdytail;
979
- c = splitter * negate;
980
- ahi = c - (c - negate);
981
- alo = negate - ahi;
982
- c = splitter * cdytail;
983
- bhi = c - (c - cdytail);
984
- blo = cdytail - bhi;
985
- adxt_cdyt0 = alo * blo - (adxt_cdyt1 - ahi * bhi - alo * bhi - ahi * blo);
986
- c = splitter * bdz;
987
- bhi = c - (c - bdz);
988
- blo = bdz - bhi;
989
- _i = adxt_cdyt0 * bdz;
990
- c = splitter * adxt_cdyt0;
991
- ahi = c - (c - adxt_cdyt0);
992
- alo = adxt_cdyt0 - ahi;
993
- u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
994
- _j = adxt_cdyt1 * bdz;
995
- c = splitter * adxt_cdyt1;
996
- ahi = c - (c - adxt_cdyt1);
997
- alo = adxt_cdyt1 - ahi;
998
- _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
999
- _k = _i + _0;
1000
- bvirt = _k - _i;
1001
- u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
1002
- u3 = _j + _k;
1003
- u$1[2] = _k - (u3 - _j);
1004
- u$1[3] = u3;
1005
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, 4, u$1, finother);
1006
- finswap = finnow; finnow = finother; finother = finswap;
1007
- if (bdztail !== 0) {
1008
- c = splitter * bdztail;
1009
- bhi = c - (c - bdztail);
1010
- blo = bdztail - bhi;
1011
- _i = adxt_cdyt0 * bdztail;
1012
- c = splitter * adxt_cdyt0;
1013
- ahi = c - (c - adxt_cdyt0);
1014
- alo = adxt_cdyt0 - ahi;
1015
- u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
1016
- _j = adxt_cdyt1 * bdztail;
1017
- c = splitter * adxt_cdyt1;
1018
- ahi = c - (c - adxt_cdyt1);
1019
- alo = adxt_cdyt1 - ahi;
1020
- _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
1021
- _k = _i + _0;
1022
- bvirt = _k - _i;
1023
- u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
1024
- u3 = _j + _k;
1025
- u$1[2] = _k - (u3 - _j);
1026
- u$1[3] = u3;
1027
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, 4, u$1, finother);
1028
- finswap = finnow; finnow = finother; finother = finswap;
1029
- }
715
+ finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);
1030
716
  }
1031
717
  }
1032
718
  if (bdxtail !== 0) {
1033
719
  if (cdytail !== 0) {
1034
- bdxt_cdyt1 = bdxtail * cdytail;
1035
- c = splitter * bdxtail;
1036
- ahi = c - (c - bdxtail);
1037
- alo = bdxtail - ahi;
1038
- c = splitter * cdytail;
1039
- bhi = c - (c - cdytail);
1040
- blo = cdytail - bhi;
1041
- bdxt_cdyt0 = alo * blo - (bdxt_cdyt1 - ahi * bhi - alo * bhi - ahi * blo);
1042
- c = splitter * adz;
1043
- bhi = c - (c - adz);
1044
- blo = adz - bhi;
1045
- _i = bdxt_cdyt0 * adz;
1046
- c = splitter * bdxt_cdyt0;
1047
- ahi = c - (c - bdxt_cdyt0);
1048
- alo = bdxt_cdyt0 - ahi;
1049
- u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
1050
- _j = bdxt_cdyt1 * adz;
1051
- c = splitter * bdxt_cdyt1;
1052
- ahi = c - (c - bdxt_cdyt1);
1053
- alo = bdxt_cdyt1 - ahi;
1054
- _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
1055
- _k = _i + _0;
1056
- bvirt = _k - _i;
1057
- u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
1058
- u3 = _j + _k;
1059
- u$1[2] = _k - (u3 - _j);
1060
- u$1[3] = u3;
1061
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, 4, u$1, finother);
1062
- finswap = finnow; finnow = finother; finother = finswap;
1063
- if (adztail !== 0) {
1064
- c = splitter * adztail;
1065
- bhi = c - (c - adztail);
1066
- blo = adztail - bhi;
1067
- _i = bdxt_cdyt0 * adztail;
1068
- c = splitter * bdxt_cdyt0;
1069
- ahi = c - (c - bdxt_cdyt0);
1070
- alo = bdxt_cdyt0 - ahi;
1071
- u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
1072
- _j = bdxt_cdyt1 * adztail;
1073
- c = splitter * bdxt_cdyt1;
1074
- ahi = c - (c - bdxt_cdyt1);
1075
- alo = bdxt_cdyt1 - ahi;
1076
- _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
1077
- _k = _i + _0;
1078
- bvirt = _k - _i;
1079
- u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
1080
- u3 = _j + _k;
1081
- u$1[2] = _k - (u3 - _j);
1082
- u$1[3] = u3;
1083
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, 4, u$1, finother);
1084
- finswap = finnow; finnow = finother; finother = finswap;
1085
- }
720
+ finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);
1086
721
  }
1087
722
  if (adytail !== 0) {
1088
- negate = -bdxtail;
1089
- bdxt_adyt1 = negate * adytail;
1090
- c = splitter * negate;
1091
- ahi = c - (c - negate);
1092
- alo = negate - ahi;
1093
- c = splitter * adytail;
1094
- bhi = c - (c - adytail);
1095
- blo = adytail - bhi;
1096
- bdxt_adyt0 = alo * blo - (bdxt_adyt1 - ahi * bhi - alo * bhi - ahi * blo);
1097
- c = splitter * cdz;
1098
- bhi = c - (c - cdz);
1099
- blo = cdz - bhi;
1100
- _i = bdxt_adyt0 * cdz;
1101
- c = splitter * bdxt_adyt0;
1102
- ahi = c - (c - bdxt_adyt0);
1103
- alo = bdxt_adyt0 - ahi;
1104
- u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
1105
- _j = bdxt_adyt1 * cdz;
1106
- c = splitter * bdxt_adyt1;
1107
- ahi = c - (c - bdxt_adyt1);
1108
- alo = bdxt_adyt1 - ahi;
1109
- _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
1110
- _k = _i + _0;
1111
- bvirt = _k - _i;
1112
- u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
1113
- u3 = _j + _k;
1114
- u$1[2] = _k - (u3 - _j);
1115
- u$1[3] = u3;
1116
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, 4, u$1, finother);
1117
- finswap = finnow; finnow = finother; finother = finswap;
1118
- if (cdztail !== 0) {
1119
- c = splitter * cdztail;
1120
- bhi = c - (c - cdztail);
1121
- blo = cdztail - bhi;
1122
- _i = bdxt_adyt0 * cdztail;
1123
- c = splitter * bdxt_adyt0;
1124
- ahi = c - (c - bdxt_adyt0);
1125
- alo = bdxt_adyt0 - ahi;
1126
- u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
1127
- _j = bdxt_adyt1 * cdztail;
1128
- c = splitter * bdxt_adyt1;
1129
- ahi = c - (c - bdxt_adyt1);
1130
- alo = bdxt_adyt1 - ahi;
1131
- _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
1132
- _k = _i + _0;
1133
- bvirt = _k - _i;
1134
- u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
1135
- u3 = _j + _k;
1136
- u$1[2] = _k - (u3 - _j);
1137
- u$1[3] = u3;
1138
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, 4, u$1, finother);
1139
- finswap = finnow; finnow = finother; finother = finswap;
1140
- }
723
+ finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);
1141
724
  }
1142
725
  }
1143
726
  if (cdxtail !== 0) {
1144
727
  if (adytail !== 0) {
1145
- cdxt_adyt1 = cdxtail * adytail;
1146
- c = splitter * cdxtail;
1147
- ahi = c - (c - cdxtail);
1148
- alo = cdxtail - ahi;
1149
- c = splitter * adytail;
1150
- bhi = c - (c - adytail);
1151
- blo = adytail - bhi;
1152
- cdxt_adyt0 = alo * blo - (cdxt_adyt1 - ahi * bhi - alo * bhi - ahi * blo);
1153
- c = splitter * bdz;
1154
- bhi = c - (c - bdz);
1155
- blo = bdz - bhi;
1156
- _i = cdxt_adyt0 * bdz;
1157
- c = splitter * cdxt_adyt0;
1158
- ahi = c - (c - cdxt_adyt0);
1159
- alo = cdxt_adyt0 - ahi;
1160
- u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
1161
- _j = cdxt_adyt1 * bdz;
1162
- c = splitter * cdxt_adyt1;
1163
- ahi = c - (c - cdxt_adyt1);
1164
- alo = cdxt_adyt1 - ahi;
1165
- _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
1166
- _k = _i + _0;
1167
- bvirt = _k - _i;
1168
- u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
1169
- u3 = _j + _k;
1170
- u$1[2] = _k - (u3 - _j);
1171
- u$1[3] = u3;
1172
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, 4, u$1, finother);
1173
- finswap = finnow; finnow = finother; finother = finswap;
1174
- if (bdztail !== 0) {
1175
- c = splitter * bdztail;
1176
- bhi = c - (c - bdztail);
1177
- blo = bdztail - bhi;
1178
- _i = cdxt_adyt0 * bdztail;
1179
- c = splitter * cdxt_adyt0;
1180
- ahi = c - (c - cdxt_adyt0);
1181
- alo = cdxt_adyt0 - ahi;
1182
- u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
1183
- _j = cdxt_adyt1 * bdztail;
1184
- c = splitter * cdxt_adyt1;
1185
- ahi = c - (c - cdxt_adyt1);
1186
- alo = cdxt_adyt1 - ahi;
1187
- _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
1188
- _k = _i + _0;
1189
- bvirt = _k - _i;
1190
- u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
1191
- u3 = _j + _k;
1192
- u$1[2] = _k - (u3 - _j);
1193
- u$1[3] = u3;
1194
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, 4, u$1, finother);
1195
- finswap = finnow; finnow = finother; finother = finswap;
1196
- }
728
+ finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);
1197
729
  }
1198
730
  if (bdytail !== 0) {
1199
- negate = -cdxtail;
1200
- cdxt_bdyt1 = negate * bdytail;
1201
- c = splitter * negate;
1202
- ahi = c - (c - negate);
1203
- alo = negate - ahi;
1204
- c = splitter * bdytail;
1205
- bhi = c - (c - bdytail);
1206
- blo = bdytail - bhi;
1207
- cdxt_bdyt0 = alo * blo - (cdxt_bdyt1 - ahi * bhi - alo * bhi - ahi * blo);
1208
- c = splitter * adz;
1209
- bhi = c - (c - adz);
1210
- blo = adz - bhi;
1211
- _i = cdxt_bdyt0 * adz;
1212
- c = splitter * cdxt_bdyt0;
1213
- ahi = c - (c - cdxt_bdyt0);
1214
- alo = cdxt_bdyt0 - ahi;
1215
- u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
1216
- _j = cdxt_bdyt1 * adz;
1217
- c = splitter * cdxt_bdyt1;
1218
- ahi = c - (c - cdxt_bdyt1);
1219
- alo = cdxt_bdyt1 - ahi;
1220
- _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
1221
- _k = _i + _0;
1222
- bvirt = _k - _i;
1223
- u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
1224
- u3 = _j + _k;
1225
- u$1[2] = _k - (u3 - _j);
1226
- u$1[3] = u3;
1227
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, 4, u$1, finother);
1228
- finswap = finnow; finnow = finother; finother = finswap;
1229
- if (adztail !== 0) {
1230
- c = splitter * adztail;
1231
- bhi = c - (c - adztail);
1232
- blo = adztail - bhi;
1233
- _i = cdxt_bdyt0 * adztail;
1234
- c = splitter * cdxt_bdyt0;
1235
- ahi = c - (c - cdxt_bdyt0);
1236
- alo = cdxt_bdyt0 - ahi;
1237
- u$1[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);
1238
- _j = cdxt_bdyt1 * adztail;
1239
- c = splitter * cdxt_bdyt1;
1240
- ahi = c - (c - cdxt_bdyt1);
1241
- alo = cdxt_bdyt1 - ahi;
1242
- _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);
1243
- _k = _i + _0;
1244
- bvirt = _k - _i;
1245
- u$1[1] = _i - (_k - bvirt) + (_0 - bvirt);
1246
- u3 = _j + _k;
1247
- u$1[2] = _k - (u3 - _j);
1248
- u$1[3] = u3;
1249
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, 4, u$1, finother);
1250
- finswap = finnow; finnow = finother; finother = finswap;
1251
- }
731
+ finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);
1252
732
  }
1253
733
  }
1254
734
 
1255
- if (adztail !== 0) {
1256
- wlength = scale_expansion_zeroelim(bctlen, bct, adztail, w);
1257
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, wlength, w, finother);
1258
- finswap = finnow; finnow = finother; finother = finswap;
1259
- }
1260
- if (bdztail !== 0) {
1261
- wlength = scale_expansion_zeroelim(catlen, cat, bdztail, w);
1262
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, wlength, w, finother);
1263
- finswap = finnow; finnow = finother; finother = finswap;
1264
- }
1265
- if (cdztail !== 0) {
1266
- wlength = scale_expansion_zeroelim(abtlen, abt, cdztail, w);
1267
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, wlength, w, finother);
1268
- finswap = finnow; finnow = finother; finother = finswap;
1269
- }
1270
-
1271
- return finnow[finlength - 1];
735
+ return fin$2[finlen - 1];
1272
736
  }
1273
737
 
1274
738
  function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {
@@ -1330,98 +794,53 @@ const iccerrboundB = (4 + 48 * epsilon) * epsilon;
1330
794
  const iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;
1331
795
 
1332
796
  const bc$1 = vec(4);
1333
- const ca$1 = vec(4);
797
+ const ca = vec(4);
1334
798
  const ab$1 = vec(4);
1335
- const axbc = vec(8);
1336
- const axxbc = vec(16);
1337
- const aybc = vec(8);
1338
- const ayybc = vec(16);
1339
- const adet$1 = vec(32);
1340
- const bxca = vec(8);
1341
- const bxxca = vec(16);
1342
- const byca = vec(8);
1343
- const byyca = vec(16);
1344
- const bdet$1 = vec(32);
1345
- const cxab = vec(8);
1346
- const cxxab = vec(16);
1347
- const cyab = vec(8);
1348
- const cyyab = vec(16);
1349
- const cdet$1 = vec(32);
1350
- const abdet$1 = vec(64);
1351
- const fin1$1 = vec(1152);
1352
- const fin2$1 = vec(1152);
1353
799
  const aa = vec(4);
1354
800
  const bb = vec(4);
1355
801
  const cc = vec(4);
1356
- const u$2 = vec(4);
1357
- const v$1 = vec(4);
1358
- const temp8 = vec(8);
1359
- const temp16a = vec(16);
1360
- const temp16b = vec(16);
1361
- const temp16c = vec(16);
1362
- const temp32a = vec(32);
1363
- const temp32b = vec(32);
1364
- const temp48 = vec(48);
1365
- const temp64 = vec(64);
1366
- const axtbb = vec(8);
1367
- const axtcc = vec(8);
1368
- const aytbb = vec(8);
1369
- const aytcc = vec(8);
1370
- const bxtaa = vec(8);
1371
- const bxtcc = vec(8);
1372
- const bytaa = vec(8);
1373
- const bytcc = vec(8);
1374
- const cxtaa = vec(8);
1375
- const cxtbb = vec(8);
1376
- const cytaa = vec(8);
1377
- const cytbb = vec(8);
802
+ const u = vec(4);
803
+ const v = vec(4);
1378
804
  const axtbc = vec(8);
1379
805
  const aytbc = vec(8);
1380
806
  const bxtca = vec(8);
1381
807
  const bytca = vec(8);
1382
808
  const cxtab = vec(8);
1383
809
  const cytab = vec(8);
1384
- const axtbct = vec(16);
1385
- const aytbct = vec(16);
1386
- const bxtcat = vec(16);
1387
- const bytcat = vec(16);
1388
- const cxtabt = vec(16);
1389
- const cytabt = vec(16);
1390
- const axtbctt = vec(8);
1391
- const aytbctt = vec(8);
1392
- const bxtcatt = vec(8);
1393
- const bytcatt = vec(8);
1394
- const cxtabtt = vec(8);
1395
- const cytabtt = vec(8);
1396
- const abt$1 = vec(8);
1397
- const bct$1 = vec(8);
1398
- const cat$1 = vec(8);
810
+ const abt = vec(8);
811
+ const bct = vec(8);
812
+ const cat = vec(8);
1399
813
  const abtt = vec(4);
1400
814
  const bctt = vec(4);
1401
815
  const catt = vec(4);
1402
816
 
1403
- function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
1404
- let bdxcdy1, cdxbdy1, cdxady1, adxcdy1, adxbdy1, bdxady1;
1405
- let bdxcdy0, cdxbdy0, cdxady0, adxcdy0, adxbdy0, bdxady0;
1406
- let bc3, ca3, ab3;
1407
- let finnow, finother, finswap, finlength;
817
+ const _8$1 = vec(8);
818
+ const _16$1 = vec(16);
819
+ const _16b = vec(16);
820
+ const _16c = vec(16);
821
+ const _32 = vec(32);
822
+ const _32b = vec(32);
823
+ const _48$1 = vec(48);
824
+ const _64 = vec(64);
825
+
826
+ let fin$1 = vec(1152);
827
+ let fin2 = vec(1152);
828
+
829
+ function finadd(finlen, a, alen) {
830
+ finlen = sum(finlen, fin$1, a, alen, fin2);
831
+ const tmp = fin$1; fin$1 = fin2; fin2 = tmp;
832
+ return finlen;
833
+ }
1408
834
 
835
+ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
836
+ let finlen;
1409
837
  let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;
1410
- let adxadx1, adyady1, bdxbdx1, bdybdy1, cdxcdx1, cdycdy1;
1411
- let adxadx0, adyady0, bdxbdx0, bdybdy0, cdxcdx0, cdycdy0;
1412
- let aa3, bb3, cc3;
1413
- let ti1, tj1;
1414
- let ti0, tj0;
1415
- let u3, v3;
1416
- let temp8len, temp16alen, temp16blen, temp16clen;
1417
- let temp32alen, temp32blen, temp48len, temp64len;
1418
838
  let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;
1419
839
  let abtlen, bctlen, catlen;
1420
840
  let abttlen, bcttlen, cattlen;
1421
- let abtt3, bctt3, catt3;
1422
- let negate;
841
+ let n1, n0;
1423
842
 
1424
- let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0;
843
+ let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
1425
844
 
1426
845
  const adx = ax - dx;
1427
846
  const bdx = bx - dx;
@@ -1430,115 +849,107 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
1430
849
  const bdy = by - dy;
1431
850
  const cdy = cy - dy;
1432
851
 
1433
- bdxcdy1 = bdx * cdy;
852
+ s1 = bdx * cdy;
1434
853
  c = splitter * bdx;
1435
854
  ahi = c - (c - bdx);
1436
855
  alo = bdx - ahi;
1437
856
  c = splitter * cdy;
1438
857
  bhi = c - (c - cdy);
1439
858
  blo = cdy - bhi;
1440
- bdxcdy0 = alo * blo - (bdxcdy1 - ahi * bhi - alo * bhi - ahi * blo);
1441
- cdxbdy1 = cdx * bdy;
859
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
860
+ t1 = cdx * bdy;
1442
861
  c = splitter * cdx;
1443
862
  ahi = c - (c - cdx);
1444
863
  alo = cdx - ahi;
1445
864
  c = splitter * bdy;
1446
865
  bhi = c - (c - bdy);
1447
866
  blo = bdy - bhi;
1448
- cdxbdy0 = alo * blo - (cdxbdy1 - ahi * bhi - alo * bhi - ahi * blo);
1449
- _i = bdxcdy0 - cdxbdy0;
1450
- bvirt = bdxcdy0 - _i;
1451
- bc$1[0] = bdxcdy0 - (_i + bvirt) + (bvirt - cdxbdy0);
1452
- _j = bdxcdy1 + _i;
1453
- bvirt = _j - bdxcdy1;
1454
- _0 = bdxcdy1 - (_j - bvirt) + (_i - bvirt);
1455
- _i = _0 - cdxbdy1;
867
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
868
+ _i = s0 - t0;
869
+ bvirt = s0 - _i;
870
+ bc$1[0] = s0 - (_i + bvirt) + (bvirt - t0);
871
+ _j = s1 + _i;
872
+ bvirt = _j - s1;
873
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
874
+ _i = _0 - t1;
1456
875
  bvirt = _0 - _i;
1457
- bc$1[1] = _0 - (_i + bvirt) + (bvirt - cdxbdy1);
1458
- bc3 = _j + _i;
1459
- bvirt = bc3 - _j;
1460
- bc$1[2] = _j - (bc3 - bvirt) + (_i - bvirt);
1461
- bc$1[3] = bc3;
1462
- const axbclen = scale_expansion_zeroelim(4, bc$1, adx, axbc);
1463
- const axxbclen = scale_expansion_zeroelim(axbclen, axbc, adx, axxbc);
1464
- const aybclen = scale_expansion_zeroelim(4, bc$1, ady, aybc);
1465
- const ayybclen = scale_expansion_zeroelim(aybclen, aybc, ady, ayybc);
1466
- const alen = fast_expansion_sum_zeroelim(axxbclen, axxbc, ayybclen, ayybc, adet$1);
1467
-
1468
- cdxady1 = cdx * ady;
876
+ bc$1[1] = _0 - (_i + bvirt) + (bvirt - t1);
877
+ u3 = _j + _i;
878
+ bvirt = u3 - _j;
879
+ bc$1[2] = _j - (u3 - bvirt) + (_i - bvirt);
880
+ bc$1[3] = u3;
881
+ s1 = cdx * ady;
1469
882
  c = splitter * cdx;
1470
883
  ahi = c - (c - cdx);
1471
884
  alo = cdx - ahi;
1472
885
  c = splitter * ady;
1473
886
  bhi = c - (c - ady);
1474
887
  blo = ady - bhi;
1475
- cdxady0 = alo * blo - (cdxady1 - ahi * bhi - alo * bhi - ahi * blo);
1476
- adxcdy1 = adx * cdy;
888
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
889
+ t1 = adx * cdy;
1477
890
  c = splitter * adx;
1478
891
  ahi = c - (c - adx);
1479
892
  alo = adx - ahi;
1480
893
  c = splitter * cdy;
1481
894
  bhi = c - (c - cdy);
1482
895
  blo = cdy - bhi;
1483
- adxcdy0 = alo * blo - (adxcdy1 - ahi * bhi - alo * bhi - ahi * blo);
1484
- _i = cdxady0 - adxcdy0;
1485
- bvirt = cdxady0 - _i;
1486
- ca$1[0] = cdxady0 - (_i + bvirt) + (bvirt - adxcdy0);
1487
- _j = cdxady1 + _i;
1488
- bvirt = _j - cdxady1;
1489
- _0 = cdxady1 - (_j - bvirt) + (_i - bvirt);
1490
- _i = _0 - adxcdy1;
896
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
897
+ _i = s0 - t0;
898
+ bvirt = s0 - _i;
899
+ ca[0] = s0 - (_i + bvirt) + (bvirt - t0);
900
+ _j = s1 + _i;
901
+ bvirt = _j - s1;
902
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
903
+ _i = _0 - t1;
1491
904
  bvirt = _0 - _i;
1492
- ca$1[1] = _0 - (_i + bvirt) + (bvirt - adxcdy1);
1493
- ca3 = _j + _i;
1494
- bvirt = ca3 - _j;
1495
- ca$1[2] = _j - (ca3 - bvirt) + (_i - bvirt);
1496
- ca$1[3] = ca3;
1497
- const bxcalen = scale_expansion_zeroelim(4, ca$1, bdx, bxca);
1498
- const bxxcalen = scale_expansion_zeroelim(bxcalen, bxca, bdx, bxxca);
1499
- const bycalen = scale_expansion_zeroelim(4, ca$1, bdy, byca);
1500
- const byycalen = scale_expansion_zeroelim(bycalen, byca, bdy, byyca);
1501
- const blen = fast_expansion_sum_zeroelim(bxxcalen, bxxca, byycalen, byyca, bdet$1);
1502
-
1503
- adxbdy1 = adx * bdy;
905
+ ca[1] = _0 - (_i + bvirt) + (bvirt - t1);
906
+ u3 = _j + _i;
907
+ bvirt = u3 - _j;
908
+ ca[2] = _j - (u3 - bvirt) + (_i - bvirt);
909
+ ca[3] = u3;
910
+ s1 = adx * bdy;
1504
911
  c = splitter * adx;
1505
912
  ahi = c - (c - adx);
1506
913
  alo = adx - ahi;
1507
914
  c = splitter * bdy;
1508
915
  bhi = c - (c - bdy);
1509
916
  blo = bdy - bhi;
1510
- adxbdy0 = alo * blo - (adxbdy1 - ahi * bhi - alo * bhi - ahi * blo);
1511
- bdxady1 = bdx * ady;
917
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
918
+ t1 = bdx * ady;
1512
919
  c = splitter * bdx;
1513
920
  ahi = c - (c - bdx);
1514
921
  alo = bdx - ahi;
1515
922
  c = splitter * ady;
1516
923
  bhi = c - (c - ady);
1517
924
  blo = ady - bhi;
1518
- bdxady0 = alo * blo - (bdxady1 - ahi * bhi - alo * bhi - ahi * blo);
1519
- _i = adxbdy0 - bdxady0;
1520
- bvirt = adxbdy0 - _i;
1521
- ab$1[0] = adxbdy0 - (_i + bvirt) + (bvirt - bdxady0);
1522
- _j = adxbdy1 + _i;
1523
- bvirt = _j - adxbdy1;
1524
- _0 = adxbdy1 - (_j - bvirt) + (_i - bvirt);
1525
- _i = _0 - bdxady1;
925
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
926
+ _i = s0 - t0;
927
+ bvirt = s0 - _i;
928
+ ab$1[0] = s0 - (_i + bvirt) + (bvirt - t0);
929
+ _j = s1 + _i;
930
+ bvirt = _j - s1;
931
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
932
+ _i = _0 - t1;
1526
933
  bvirt = _0 - _i;
1527
- ab$1[1] = _0 - (_i + bvirt) + (bvirt - bdxady1);
1528
- ab3 = _j + _i;
1529
- bvirt = ab3 - _j;
1530
- ab$1[2] = _j - (ab3 - bvirt) + (_i - bvirt);
1531
- ab$1[3] = ab3;
1532
- const cxablen = scale_expansion_zeroelim(4, ab$1, cdx, cxab);
1533
- const cxxablen = scale_expansion_zeroelim(cxablen, cxab, cdx, cxxab);
1534
- const cyablen = scale_expansion_zeroelim(4, ab$1, cdy, cyab);
1535
- const cyyablen = scale_expansion_zeroelim(cyablen, cyab, cdy, cyyab);
1536
- const clen = fast_expansion_sum_zeroelim(cxxablen, cxxab, cyyablen, cyyab, cdet$1);
1537
-
1538
- const ablen = fast_expansion_sum_zeroelim(alen, adet$1, blen, bdet$1, abdet$1);
1539
- finlength = fast_expansion_sum_zeroelim(ablen, abdet$1, clen, cdet$1, fin1$1);
1540
-
1541
- let det = estimate(finlength, fin1$1);
934
+ ab$1[1] = _0 - (_i + bvirt) + (bvirt - t1);
935
+ u3 = _j + _i;
936
+ bvirt = u3 - _j;
937
+ ab$1[2] = _j - (u3 - bvirt) + (_i - bvirt);
938
+ ab$1[3] = u3;
939
+
940
+ finlen = sum(
941
+ sum(
942
+ sum(
943
+ scale(scale(4, bc$1, adx, _8$1), _8$1, adx, _16$1), _16$1,
944
+ scale(scale(4, bc$1, ady, _8$1), _8$1, ady, _16b), _16b, _32), _32,
945
+ sum(
946
+ scale(scale(4, ca, bdx, _8$1), _8$1, bdx, _16$1), _16$1,
947
+ scale(scale(4, ca, bdy, _8$1), _8$1, bdy, _16b), _16b, _32b), _32b, _64), _64,
948
+ sum(
949
+ scale(scale(4, ab$1, cdx, _8$1), _8$1, cdx, _16$1), _16$1,
950
+ scale(scale(4, ab$1, cdy, _8$1), _8$1, cdy, _16b), _16b, _32), _32, fin$1);
951
+
952
+ let det = estimate(finlen, fin$1);
1542
953
  let errbound = iccerrboundB * permanent;
1543
954
  if (det >= errbound || -det >= errbound) {
1544
955
  return det;
@@ -1572,624 +983,518 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
1572
983
  return det;
1573
984
  }
1574
985
 
1575
- finnow = fin1$1;
1576
- finother = fin2$1;
1577
-
1578
986
  if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {
1579
- adxadx1 = adx * adx;
987
+ s1 = adx * adx;
1580
988
  c = splitter * adx;
1581
989
  ahi = c - (c - adx);
1582
990
  alo = adx - ahi;
1583
- adxadx0 = alo * alo - (adxadx1 - ahi * ahi - (ahi + ahi) * alo);
1584
- adyady1 = ady * ady;
991
+ s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);
992
+ t1 = ady * ady;
1585
993
  c = splitter * ady;
1586
994
  ahi = c - (c - ady);
1587
995
  alo = ady - ahi;
1588
- adyady0 = alo * alo - (adyady1 - ahi * ahi - (ahi + ahi) * alo);
1589
- _i = adxadx0 + adyady0;
1590
- bvirt = _i - adxadx0;
1591
- aa[0] = adxadx0 - (_i - bvirt) + (adyady0 - bvirt);
1592
- _j = adxadx1 + _i;
1593
- bvirt = _j - adxadx1;
1594
- _0 = adxadx1 - (_j - bvirt) + (_i - bvirt);
1595
- _i = _0 + adyady1;
996
+ t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);
997
+ _i = s0 + t0;
998
+ bvirt = _i - s0;
999
+ aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);
1000
+ _j = s1 + _i;
1001
+ bvirt = _j - s1;
1002
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1003
+ _i = _0 + t1;
1596
1004
  bvirt = _i - _0;
1597
- aa[1] = _0 - (_i - bvirt) + (adyady1 - bvirt);
1598
- aa3 = _j + _i;
1599
- bvirt = aa3 - _j;
1600
- aa[2] = _j - (aa3 - bvirt) + (_i - bvirt);
1601
- aa[3] = aa3;
1005
+ aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);
1006
+ u3 = _j + _i;
1007
+ bvirt = u3 - _j;
1008
+ aa[2] = _j - (u3 - bvirt) + (_i - bvirt);
1009
+ aa[3] = u3;
1602
1010
  }
1603
1011
  if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {
1604
- bdxbdx1 = bdx * bdx;
1012
+ s1 = bdx * bdx;
1605
1013
  c = splitter * bdx;
1606
1014
  ahi = c - (c - bdx);
1607
1015
  alo = bdx - ahi;
1608
- bdxbdx0 = alo * alo - (bdxbdx1 - ahi * ahi - (ahi + ahi) * alo);
1609
- bdybdy1 = bdy * bdy;
1016
+ s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);
1017
+ t1 = bdy * bdy;
1610
1018
  c = splitter * bdy;
1611
1019
  ahi = c - (c - bdy);
1612
1020
  alo = bdy - ahi;
1613
- bdybdy0 = alo * alo - (bdybdy1 - ahi * ahi - (ahi + ahi) * alo);
1614
- _i = bdxbdx0 + bdybdy0;
1615
- bvirt = _i - bdxbdx0;
1616
- bb[0] = bdxbdx0 - (_i - bvirt) + (bdybdy0 - bvirt);
1617
- _j = bdxbdx1 + _i;
1618
- bvirt = _j - bdxbdx1;
1619
- _0 = bdxbdx1 - (_j - bvirt) + (_i - bvirt);
1620
- _i = _0 + bdybdy1;
1021
+ t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);
1022
+ _i = s0 + t0;
1023
+ bvirt = _i - s0;
1024
+ bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);
1025
+ _j = s1 + _i;
1026
+ bvirt = _j - s1;
1027
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1028
+ _i = _0 + t1;
1621
1029
  bvirt = _i - _0;
1622
- bb[1] = _0 - (_i - bvirt) + (bdybdy1 - bvirt);
1623
- bb3 = _j + _i;
1624
- bvirt = bb3 - _j;
1625
- bb[2] = _j - (bb3 - bvirt) + (_i - bvirt);
1626
- bb[3] = bb3;
1030
+ bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);
1031
+ u3 = _j + _i;
1032
+ bvirt = u3 - _j;
1033
+ bb[2] = _j - (u3 - bvirt) + (_i - bvirt);
1034
+ bb[3] = u3;
1627
1035
  }
1628
1036
  if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {
1629
- cdxcdx1 = cdx * cdx;
1037
+ s1 = cdx * cdx;
1630
1038
  c = splitter * cdx;
1631
1039
  ahi = c - (c - cdx);
1632
1040
  alo = cdx - ahi;
1633
- cdxcdx0 = alo * alo - (cdxcdx1 - ahi * ahi - (ahi + ahi) * alo);
1634
- cdycdy1 = cdy * cdy;
1041
+ s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);
1042
+ t1 = cdy * cdy;
1635
1043
  c = splitter * cdy;
1636
1044
  ahi = c - (c - cdy);
1637
1045
  alo = cdy - ahi;
1638
- cdycdy0 = alo * alo - (cdycdy1 - ahi * ahi - (ahi + ahi) * alo);
1639
- _i = cdxcdx0 + cdycdy0;
1640
- bvirt = _i - cdxcdx0;
1641
- cc[0] = cdxcdx0 - (_i - bvirt) + (cdycdy0 - bvirt);
1642
- _j = cdxcdx1 + _i;
1643
- bvirt = _j - cdxcdx1;
1644
- _0 = cdxcdx1 - (_j - bvirt) + (_i - bvirt);
1645
- _i = _0 + cdycdy1;
1046
+ t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);
1047
+ _i = s0 + t0;
1048
+ bvirt = _i - s0;
1049
+ cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);
1050
+ _j = s1 + _i;
1051
+ bvirt = _j - s1;
1052
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1053
+ _i = _0 + t1;
1646
1054
  bvirt = _i - _0;
1647
- cc[1] = _0 - (_i - bvirt) + (cdycdy1 - bvirt);
1648
- cc3 = _j + _i;
1649
- bvirt = cc3 - _j;
1650
- cc[2] = _j - (cc3 - bvirt) + (_i - bvirt);
1651
- cc[3] = cc3;
1055
+ cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);
1056
+ u3 = _j + _i;
1057
+ bvirt = u3 - _j;
1058
+ cc[2] = _j - (u3 - bvirt) + (_i - bvirt);
1059
+ cc[3] = u3;
1652
1060
  }
1653
1061
 
1654
1062
  if (adxtail !== 0) {
1655
- axtbclen = scale_expansion_zeroelim(4, bc$1, adxtail, axtbc);
1656
- temp16alen = scale_expansion_zeroelim(axtbclen, axtbc, 2 * adx, temp16a);
1657
-
1658
- const axtcclen = scale_expansion_zeroelim(4, cc, adxtail, axtcc);
1659
- temp16blen = scale_expansion_zeroelim(axtcclen, axtcc, bdy, temp16b);
1660
-
1661
- const axtbblen = scale_expansion_zeroelim(4, bb, adxtail, axtbb);
1662
- temp16clen = scale_expansion_zeroelim(axtbblen, axtbb, -cdy, temp16c);
1663
-
1664
- temp32alen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32a);
1665
- temp48len = fast_expansion_sum_zeroelim(temp16clen, temp16c, temp32alen, temp32a, temp48);
1666
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
1667
- finswap = finnow; finnow = finother; finother = finswap;
1063
+ axtbclen = scale(4, bc$1, adxtail, axtbc);
1064
+ finlen = finadd(finlen, sum_three(
1065
+ scale(axtbclen, axtbc, 2 * adx, _16$1), _16$1,
1066
+ scale(scale(4, cc, adxtail, _8$1), _8$1, bdy, _16b), _16b,
1067
+ scale(scale(4, bb, adxtail, _8$1), _8$1, -cdy, _16c), _16c, _32, _48$1), _48$1);
1668
1068
  }
1669
1069
  if (adytail !== 0) {
1670
- aytbclen = scale_expansion_zeroelim(4, bc$1, adytail, aytbc);
1671
- temp16alen = scale_expansion_zeroelim(aytbclen, aytbc, 2 * ady, temp16a);
1672
-
1673
- const aytbblen = scale_expansion_zeroelim(4, bb, adytail, aytbb);
1674
- temp16blen = scale_expansion_zeroelim(aytbblen, aytbb, cdx, temp16b);
1675
-
1676
- const aytcclen = scale_expansion_zeroelim(4, cc, adytail, aytcc);
1677
- temp16clen = scale_expansion_zeroelim(aytcclen, aytcc, -bdx, temp16c);
1678
-
1679
- temp32alen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32a);
1680
- temp48len = fast_expansion_sum_zeroelim(temp16clen, temp16c, temp32alen, temp32a, temp48);
1681
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
1682
- finswap = finnow; finnow = finother; finother = finswap;
1070
+ aytbclen = scale(4, bc$1, adytail, aytbc);
1071
+ finlen = finadd(finlen, sum_three(
1072
+ scale(aytbclen, aytbc, 2 * ady, _16$1), _16$1,
1073
+ scale(scale(4, bb, adytail, _8$1), _8$1, cdx, _16b), _16b,
1074
+ scale(scale(4, cc, adytail, _8$1), _8$1, -bdx, _16c), _16c, _32, _48$1), _48$1);
1683
1075
  }
1684
1076
  if (bdxtail !== 0) {
1685
- bxtcalen = scale_expansion_zeroelim(4, ca$1, bdxtail, bxtca);
1686
- temp16alen = scale_expansion_zeroelim(bxtcalen, bxtca, 2 * bdx, temp16a);
1687
-
1688
- const bxtaalen = scale_expansion_zeroelim(4, aa, bdxtail, bxtaa);
1689
- temp16blen = scale_expansion_zeroelim(bxtaalen, bxtaa, cdy, temp16b);
1690
-
1691
- const bxtcclen = scale_expansion_zeroelim(4, cc, bdxtail, bxtcc);
1692
- temp16clen = scale_expansion_zeroelim(bxtcclen, bxtcc, -ady, temp16c);
1693
-
1694
- temp32alen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32a);
1695
- temp48len = fast_expansion_sum_zeroelim(temp16clen, temp16c, temp32alen, temp32a, temp48);
1696
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
1697
- finswap = finnow; finnow = finother; finother = finswap;
1077
+ bxtcalen = scale(4, ca, bdxtail, bxtca);
1078
+ finlen = finadd(finlen, sum_three(
1079
+ scale(bxtcalen, bxtca, 2 * bdx, _16$1), _16$1,
1080
+ scale(scale(4, aa, bdxtail, _8$1), _8$1, cdy, _16b), _16b,
1081
+ scale(scale(4, cc, bdxtail, _8$1), _8$1, -ady, _16c), _16c, _32, _48$1), _48$1);
1698
1082
  }
1699
1083
  if (bdytail !== 0) {
1700
- bytcalen = scale_expansion_zeroelim(4, ca$1, bdytail, bytca);
1701
- temp16alen = scale_expansion_zeroelim(bytcalen, bytca, 2 * bdy, temp16a);
1702
-
1703
- const bytcclen = scale_expansion_zeroelim(4, cc, bdytail, bytcc);
1704
- temp16blen = scale_expansion_zeroelim(bytcclen, bytcc, adx, temp16b);
1705
-
1706
- const bytaalen = scale_expansion_zeroelim(4, aa, bdytail, bytaa);
1707
- temp16clen = scale_expansion_zeroelim(bytaalen, bytaa, -cdx, temp16c);
1708
-
1709
- temp32alen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32a);
1710
- temp48len = fast_expansion_sum_zeroelim(temp16clen, temp16c, temp32alen, temp32a, temp48);
1711
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
1712
- finswap = finnow; finnow = finother; finother = finswap;
1084
+ bytcalen = scale(4, ca, bdytail, bytca);
1085
+ finlen = finadd(finlen, sum_three(
1086
+ scale(bytcalen, bytca, 2 * bdy, _16$1), _16$1,
1087
+ scale(scale(4, cc, bdytail, _8$1), _8$1, adx, _16b), _16b,
1088
+ scale(scale(4, aa, bdytail, _8$1), _8$1, -cdx, _16c), _16c, _32, _48$1), _48$1);
1713
1089
  }
1714
1090
  if (cdxtail !== 0) {
1715
- cxtablen = scale_expansion_zeroelim(4, ab$1, cdxtail, cxtab);
1716
- temp16alen = scale_expansion_zeroelim(cxtablen, cxtab, 2 * cdx, temp16a);
1717
-
1718
- const cxtbblen = scale_expansion_zeroelim(4, bb, cdxtail, cxtbb);
1719
- temp16blen = scale_expansion_zeroelim(cxtbblen, cxtbb, ady, temp16b);
1720
-
1721
- const cxtaalen = scale_expansion_zeroelim(4, aa, cdxtail, cxtaa);
1722
- temp16clen = scale_expansion_zeroelim(cxtaalen, cxtaa, -bdy, temp16c);
1723
-
1724
- temp32alen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32a);
1725
- temp48len = fast_expansion_sum_zeroelim(temp16clen, temp16c, temp32alen, temp32a, temp48);
1726
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
1727
- finswap = finnow; finnow = finother; finother = finswap;
1091
+ cxtablen = scale(4, ab$1, cdxtail, cxtab);
1092
+ finlen = finadd(finlen, sum_three(
1093
+ scale(cxtablen, cxtab, 2 * cdx, _16$1), _16$1,
1094
+ scale(scale(4, bb, cdxtail, _8$1), _8$1, ady, _16b), _16b,
1095
+ scale(scale(4, aa, cdxtail, _8$1), _8$1, -bdy, _16c), _16c, _32, _48$1), _48$1);
1728
1096
  }
1729
1097
  if (cdytail !== 0) {
1730
- cytablen = scale_expansion_zeroelim(4, ab$1, cdytail, cytab);
1731
- temp16alen = scale_expansion_zeroelim(cytablen, cytab, 2 * cdy, temp16a);
1732
-
1733
- const cytaalen = scale_expansion_zeroelim(4, aa, cdytail, cytaa);
1734
- temp16blen = scale_expansion_zeroelim(cytaalen, cytaa, bdx, temp16b);
1735
-
1736
- const cytbblen = scale_expansion_zeroelim(4, bb, cdytail, cytbb);
1737
- temp16clen = scale_expansion_zeroelim(cytbblen, cytbb, -adx, temp16c);
1738
-
1739
- temp32alen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32a);
1740
- temp48len = fast_expansion_sum_zeroelim(temp16clen, temp16c, temp32alen, temp32a, temp48);
1741
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
1742
- finswap = finnow; finnow = finother; finother = finswap;
1098
+ cytablen = scale(4, ab$1, cdytail, cytab);
1099
+ finlen = finadd(finlen, sum_three(
1100
+ scale(cytablen, cytab, 2 * cdy, _16$1), _16$1,
1101
+ scale(scale(4, aa, cdytail, _8$1), _8$1, bdx, _16b), _16b,
1102
+ scale(scale(4, bb, cdytail, _8$1), _8$1, -adx, _16c), _16c, _32, _48$1), _48$1);
1743
1103
  }
1744
1104
 
1745
1105
  if (adxtail !== 0 || adytail !== 0) {
1746
1106
  if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {
1747
- ti1 = bdxtail * cdy;
1107
+ s1 = bdxtail * cdy;
1748
1108
  c = splitter * bdxtail;
1749
1109
  ahi = c - (c - bdxtail);
1750
1110
  alo = bdxtail - ahi;
1751
1111
  c = splitter * cdy;
1752
1112
  bhi = c - (c - cdy);
1753
1113
  blo = cdy - bhi;
1754
- ti0 = alo * blo - (ti1 - ahi * bhi - alo * bhi - ahi * blo);
1755
- tj1 = bdx * cdytail;
1114
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1115
+ t1 = bdx * cdytail;
1756
1116
  c = splitter * bdx;
1757
1117
  ahi = c - (c - bdx);
1758
1118
  alo = bdx - ahi;
1759
1119
  c = splitter * cdytail;
1760
1120
  bhi = c - (c - cdytail);
1761
1121
  blo = cdytail - bhi;
1762
- tj0 = alo * blo - (tj1 - ahi * bhi - alo * bhi - ahi * blo);
1763
- _i = ti0 + tj0;
1764
- bvirt = _i - ti0;
1765
- u$2[0] = ti0 - (_i - bvirt) + (tj0 - bvirt);
1766
- _j = ti1 + _i;
1767
- bvirt = _j - ti1;
1768
- _0 = ti1 - (_j - bvirt) + (_i - bvirt);
1769
- _i = _0 + tj1;
1122
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1123
+ _i = s0 + t0;
1124
+ bvirt = _i - s0;
1125
+ u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
1126
+ _j = s1 + _i;
1127
+ bvirt = _j - s1;
1128
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1129
+ _i = _0 + t1;
1770
1130
  bvirt = _i - _0;
1771
- u$2[1] = _0 - (_i - bvirt) + (tj1 - bvirt);
1131
+ u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
1772
1132
  u3 = _j + _i;
1773
1133
  bvirt = u3 - _j;
1774
- u$2[2] = _j - (u3 - bvirt) + (_i - bvirt);
1775
- u$2[3] = u3;
1776
- negate = -bdy;
1777
- ti1 = cdxtail * negate;
1134
+ u[2] = _j - (u3 - bvirt) + (_i - bvirt);
1135
+ u[3] = u3;
1136
+ s1 = cdxtail * -bdy;
1778
1137
  c = splitter * cdxtail;
1779
1138
  ahi = c - (c - cdxtail);
1780
1139
  alo = cdxtail - ahi;
1781
- c = splitter * negate;
1782
- bhi = c - (c - negate);
1783
- blo = negate - bhi;
1784
- ti0 = alo * blo - (ti1 - ahi * bhi - alo * bhi - ahi * blo);
1785
- negate = -bdytail;
1786
- tj1 = cdx * negate;
1140
+ c = splitter * -bdy;
1141
+ bhi = c - (c - -bdy);
1142
+ blo = -bdy - bhi;
1143
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1144
+ t1 = cdx * -bdytail;
1787
1145
  c = splitter * cdx;
1788
1146
  ahi = c - (c - cdx);
1789
1147
  alo = cdx - ahi;
1790
- c = splitter * negate;
1791
- bhi = c - (c - negate);
1792
- blo = negate - bhi;
1793
- tj0 = alo * blo - (tj1 - ahi * bhi - alo * bhi - ahi * blo);
1794
- _i = ti0 + tj0;
1795
- bvirt = _i - ti0;
1796
- v$1[0] = ti0 - (_i - bvirt) + (tj0 - bvirt);
1797
- _j = ti1 + _i;
1798
- bvirt = _j - ti1;
1799
- _0 = ti1 - (_j - bvirt) + (_i - bvirt);
1800
- _i = _0 + tj1;
1148
+ c = splitter * -bdytail;
1149
+ bhi = c - (c - -bdytail);
1150
+ blo = -bdytail - bhi;
1151
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1152
+ _i = s0 + t0;
1153
+ bvirt = _i - s0;
1154
+ v[0] = s0 - (_i - bvirt) + (t0 - bvirt);
1155
+ _j = s1 + _i;
1156
+ bvirt = _j - s1;
1157
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1158
+ _i = _0 + t1;
1801
1159
  bvirt = _i - _0;
1802
- v$1[1] = _0 - (_i - bvirt) + (tj1 - bvirt);
1803
- v3 = _j + _i;
1804
- bvirt = v3 - _j;
1805
- v$1[2] = _j - (v3 - bvirt) + (_i - bvirt);
1806
- v$1[3] = v3;
1807
- bctlen = fast_expansion_sum_zeroelim(4, u$2, 4, v$1, bct$1);
1808
-
1809
- ti1 = bdxtail * cdytail;
1160
+ v[1] = _0 - (_i - bvirt) + (t1 - bvirt);
1161
+ u3 = _j + _i;
1162
+ bvirt = u3 - _j;
1163
+ v[2] = _j - (u3 - bvirt) + (_i - bvirt);
1164
+ v[3] = u3;
1165
+ bctlen = sum(4, u, 4, v, bct);
1166
+ s1 = bdxtail * cdytail;
1810
1167
  c = splitter * bdxtail;
1811
1168
  ahi = c - (c - bdxtail);
1812
1169
  alo = bdxtail - ahi;
1813
1170
  c = splitter * cdytail;
1814
1171
  bhi = c - (c - cdytail);
1815
1172
  blo = cdytail - bhi;
1816
- ti0 = alo * blo - (ti1 - ahi * bhi - alo * bhi - ahi * blo);
1817
- tj1 = cdxtail * bdytail;
1173
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1174
+ t1 = cdxtail * bdytail;
1818
1175
  c = splitter * cdxtail;
1819
1176
  ahi = c - (c - cdxtail);
1820
1177
  alo = cdxtail - ahi;
1821
1178
  c = splitter * bdytail;
1822
1179
  bhi = c - (c - bdytail);
1823
1180
  blo = bdytail - bhi;
1824
- tj0 = alo * blo - (tj1 - ahi * bhi - alo * bhi - ahi * blo);
1825
- _i = ti0 - tj0;
1826
- bvirt = ti0 - _i;
1827
- bctt[0] = ti0 - (_i + bvirt) + (bvirt - tj0);
1828
- _j = ti1 + _i;
1829
- bvirt = _j - ti1;
1830
- _0 = ti1 - (_j - bvirt) + (_i - bvirt);
1831
- _i = _0 - tj1;
1181
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1182
+ _i = s0 - t0;
1183
+ bvirt = s0 - _i;
1184
+ bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);
1185
+ _j = s1 + _i;
1186
+ bvirt = _j - s1;
1187
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1188
+ _i = _0 - t1;
1832
1189
  bvirt = _0 - _i;
1833
- bctt[1] = _0 - (_i + bvirt) + (bvirt - tj1);
1834
- bctt3 = _j + _i;
1835
- bvirt = bctt3 - _j;
1836
- bctt[2] = _j - (bctt3 - bvirt) + (_i - bvirt);
1837
- bctt[3] = bctt3;
1190
+ bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);
1191
+ u3 = _j + _i;
1192
+ bvirt = u3 - _j;
1193
+ bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);
1194
+ bctt[3] = u3;
1838
1195
  bcttlen = 4;
1839
1196
  } else {
1840
- bct$1[0] = 0;
1197
+ bct[0] = 0;
1841
1198
  bctlen = 1;
1842
1199
  bctt[0] = 0;
1843
1200
  bcttlen = 1;
1844
1201
  }
1845
-
1846
1202
  if (adxtail !== 0) {
1847
- temp16alen = scale_expansion_zeroelim(axtbclen, axtbc, adxtail, temp16a);
1848
- const axtbctlen = scale_expansion_zeroelim(bctlen, bct$1, adxtail, axtbct);
1849
- temp32alen = scale_expansion_zeroelim(axtbctlen, axtbct, 2 * adx, temp32a);
1850
- temp48len = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp32alen, temp32a, temp48);
1851
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
1852
- finswap = finnow; finnow = finother; finother = finswap;
1203
+ const len = scale(bctlen, bct, adxtail, _16c);
1204
+ finlen = finadd(finlen, sum(
1205
+ scale(axtbclen, axtbc, adxtail, _16$1), _16$1,
1206
+ scale(len, _16c, 2 * adx, _32), _32, _48$1), _48$1);
1207
+
1208
+ const len2 = scale(bcttlen, bctt, adxtail, _8$1);
1209
+ finlen = finadd(finlen, sum_three(
1210
+ scale(len2, _8$1, 2 * adx, _16$1), _16$1,
1211
+ scale(len2, _8$1, adxtail, _16b), _16b,
1212
+ scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);
1853
1213
 
1854
1214
  if (bdytail !== 0) {
1855
- temp8len = scale_expansion_zeroelim(4, cc, adxtail, temp8);
1856
- temp16alen = scale_expansion_zeroelim(temp8len, temp8, bdytail, temp16a);
1857
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp16alen, temp16a, finother);
1858
- finswap = finnow; finnow = finother; finother = finswap;
1215
+ finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8$1), _8$1, bdytail, _16$1), _16$1);
1859
1216
  }
1860
1217
  if (cdytail !== 0) {
1861
- temp8len = scale_expansion_zeroelim(4, bb, -adxtail, temp8);
1862
- temp16alen = scale_expansion_zeroelim(temp8len, temp8, cdytail, temp16a);
1863
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp16alen, temp16a, finother);
1864
- finswap = finnow; finnow = finother; finother = finswap;
1218
+ finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8$1), _8$1, cdytail, _16$1), _16$1);
1865
1219
  }
1866
-
1867
- temp32alen = scale_expansion_zeroelim(axtbctlen, axtbct, adxtail, temp32a);
1868
- const axtbcttlen = scale_expansion_zeroelim(bcttlen, bctt, adxtail, axtbctt);
1869
- temp16alen = scale_expansion_zeroelim(axtbcttlen, axtbctt, 2 * adx, temp16a);
1870
- temp16blen = scale_expansion_zeroelim(axtbcttlen, axtbctt, adxtail, temp16b);
1871
- temp32blen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32b);
1872
- temp64len = fast_expansion_sum_zeroelim(temp32alen, temp32a, temp32blen, temp32b, temp64);
1873
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp64len, temp64, finother);
1874
- finswap = finnow; finnow = finother; finother = finswap;
1875
1220
  }
1876
-
1877
1221
  if (adytail !== 0) {
1878
- temp16alen = scale_expansion_zeroelim(aytbclen, aytbc, adytail, temp16a);
1879
- const aytbctlen = scale_expansion_zeroelim(bctlen, bct$1, adytail, aytbct);
1880
- temp32alen = scale_expansion_zeroelim(aytbctlen, aytbct, 2 * ady, temp32a);
1881
- temp48len = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp32alen, temp32a, temp48);
1882
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
1883
- finswap = finnow; finnow = finother; finother = finswap;
1884
-
1885
- temp32alen = scale_expansion_zeroelim(aytbctlen, aytbct, adytail, temp32a);
1886
- const aytbcttlen = scale_expansion_zeroelim(bcttlen, bctt, adytail, aytbctt);
1887
- temp16alen = scale_expansion_zeroelim(aytbcttlen, aytbctt, 2 * ady, temp16a);
1888
- temp16blen = scale_expansion_zeroelim(aytbcttlen, aytbctt, adytail, temp16b);
1889
- temp32blen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32b);
1890
- temp64len = fast_expansion_sum_zeroelim(temp32alen, temp32a, temp32blen, temp32b, temp64);
1891
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp64len, temp64, finother);
1892
- finswap = finnow; finnow = finother; finother = finswap;
1222
+ const len = scale(bctlen, bct, adytail, _16c);
1223
+ finlen = finadd(finlen, sum(
1224
+ scale(aytbclen, aytbc, adytail, _16$1), _16$1,
1225
+ scale(len, _16c, 2 * ady, _32), _32, _48$1), _48$1);
1226
+
1227
+ const len2 = scale(bcttlen, bctt, adytail, _8$1);
1228
+ finlen = finadd(finlen, sum_three(
1229
+ scale(len2, _8$1, 2 * ady, _16$1), _16$1,
1230
+ scale(len2, _8$1, adytail, _16b), _16b,
1231
+ scale(len, _16c, adytail, _32), _32, _32b, _64), _64);
1893
1232
  }
1894
1233
  }
1895
1234
  if (bdxtail !== 0 || bdytail !== 0) {
1896
1235
  if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {
1897
- ti1 = cdxtail * ady;
1236
+ s1 = cdxtail * ady;
1898
1237
  c = splitter * cdxtail;
1899
1238
  ahi = c - (c - cdxtail);
1900
1239
  alo = cdxtail - ahi;
1901
1240
  c = splitter * ady;
1902
1241
  bhi = c - (c - ady);
1903
1242
  blo = ady - bhi;
1904
- ti0 = alo * blo - (ti1 - ahi * bhi - alo * bhi - ahi * blo);
1905
- tj1 = cdx * adytail;
1243
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1244
+ t1 = cdx * adytail;
1906
1245
  c = splitter * cdx;
1907
1246
  ahi = c - (c - cdx);
1908
1247
  alo = cdx - ahi;
1909
1248
  c = splitter * adytail;
1910
1249
  bhi = c - (c - adytail);
1911
1250
  blo = adytail - bhi;
1912
- tj0 = alo * blo - (tj1 - ahi * bhi - alo * bhi - ahi * blo);
1913
- _i = ti0 + tj0;
1914
- bvirt = _i - ti0;
1915
- u$2[0] = ti0 - (_i - bvirt) + (tj0 - bvirt);
1916
- _j = ti1 + _i;
1917
- bvirt = _j - ti1;
1918
- _0 = ti1 - (_j - bvirt) + (_i - bvirt);
1919
- _i = _0 + tj1;
1251
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1252
+ _i = s0 + t0;
1253
+ bvirt = _i - s0;
1254
+ u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
1255
+ _j = s1 + _i;
1256
+ bvirt = _j - s1;
1257
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1258
+ _i = _0 + t1;
1920
1259
  bvirt = _i - _0;
1921
- u$2[1] = _0 - (_i - bvirt) + (tj1 - bvirt);
1260
+ u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
1922
1261
  u3 = _j + _i;
1923
1262
  bvirt = u3 - _j;
1924
- u$2[2] = _j - (u3 - bvirt) + (_i - bvirt);
1925
- u$2[3] = u3;
1926
- negate = -cdy;
1927
- ti1 = adxtail * negate;
1263
+ u[2] = _j - (u3 - bvirt) + (_i - bvirt);
1264
+ u[3] = u3;
1265
+ n1 = -cdy;
1266
+ n0 = -cdytail;
1267
+ s1 = adxtail * n1;
1928
1268
  c = splitter * adxtail;
1929
1269
  ahi = c - (c - adxtail);
1930
1270
  alo = adxtail - ahi;
1931
- c = splitter * negate;
1932
- bhi = c - (c - negate);
1933
- blo = negate - bhi;
1934
- ti0 = alo * blo - (ti1 - ahi * bhi - alo * bhi - ahi * blo);
1935
- negate = -cdytail;
1936
- tj1 = adx * negate;
1271
+ c = splitter * n1;
1272
+ bhi = c - (c - n1);
1273
+ blo = n1 - bhi;
1274
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1275
+ t1 = adx * n0;
1937
1276
  c = splitter * adx;
1938
1277
  ahi = c - (c - adx);
1939
1278
  alo = adx - ahi;
1940
- c = splitter * negate;
1941
- bhi = c - (c - negate);
1942
- blo = negate - bhi;
1943
- tj0 = alo * blo - (tj1 - ahi * bhi - alo * bhi - ahi * blo);
1944
- _i = ti0 + tj0;
1945
- bvirt = _i - ti0;
1946
- v$1[0] = ti0 - (_i - bvirt) + (tj0 - bvirt);
1947
- _j = ti1 + _i;
1948
- bvirt = _j - ti1;
1949
- _0 = ti1 - (_j - bvirt) + (_i - bvirt);
1950
- _i = _0 + tj1;
1279
+ c = splitter * n0;
1280
+ bhi = c - (c - n0);
1281
+ blo = n0 - bhi;
1282
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1283
+ _i = s0 + t0;
1284
+ bvirt = _i - s0;
1285
+ v[0] = s0 - (_i - bvirt) + (t0 - bvirt);
1286
+ _j = s1 + _i;
1287
+ bvirt = _j - s1;
1288
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1289
+ _i = _0 + t1;
1951
1290
  bvirt = _i - _0;
1952
- v$1[1] = _0 - (_i - bvirt) + (tj1 - bvirt);
1953
- v3 = _j + _i;
1954
- bvirt = v3 - _j;
1955
- v$1[2] = _j - (v3 - bvirt) + (_i - bvirt);
1956
- v$1[3] = v3;
1957
- catlen = fast_expansion_sum_zeroelim(4, u$2, 4, v$1, cat$1);
1958
-
1959
- ti1 = cdxtail * adytail;
1291
+ v[1] = _0 - (_i - bvirt) + (t1 - bvirt);
1292
+ u3 = _j + _i;
1293
+ bvirt = u3 - _j;
1294
+ v[2] = _j - (u3 - bvirt) + (_i - bvirt);
1295
+ v[3] = u3;
1296
+ catlen = sum(4, u, 4, v, cat);
1297
+ s1 = cdxtail * adytail;
1960
1298
  c = splitter * cdxtail;
1961
1299
  ahi = c - (c - cdxtail);
1962
1300
  alo = cdxtail - ahi;
1963
1301
  c = splitter * adytail;
1964
1302
  bhi = c - (c - adytail);
1965
1303
  blo = adytail - bhi;
1966
- ti0 = alo * blo - (ti1 - ahi * bhi - alo * bhi - ahi * blo);
1967
- tj1 = adxtail * cdytail;
1304
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1305
+ t1 = adxtail * cdytail;
1968
1306
  c = splitter * adxtail;
1969
1307
  ahi = c - (c - adxtail);
1970
1308
  alo = adxtail - ahi;
1971
1309
  c = splitter * cdytail;
1972
1310
  bhi = c - (c - cdytail);
1973
1311
  blo = cdytail - bhi;
1974
- tj0 = alo * blo - (tj1 - ahi * bhi - alo * bhi - ahi * blo);
1975
- _i = ti0 - tj0;
1976
- bvirt = ti0 - _i;
1977
- catt[0] = ti0 - (_i + bvirt) + (bvirt - tj0);
1978
- _j = ti1 + _i;
1979
- bvirt = _j - ti1;
1980
- _0 = ti1 - (_j - bvirt) + (_i - bvirt);
1981
- _i = _0 - tj1;
1312
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1313
+ _i = s0 - t0;
1314
+ bvirt = s0 - _i;
1315
+ catt[0] = s0 - (_i + bvirt) + (bvirt - t0);
1316
+ _j = s1 + _i;
1317
+ bvirt = _j - s1;
1318
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1319
+ _i = _0 - t1;
1982
1320
  bvirt = _0 - _i;
1983
- catt[1] = _0 - (_i + bvirt) + (bvirt - tj1);
1984
- catt3 = _j + _i;
1985
- bvirt = catt3 - _j;
1986
- catt[2] = _j - (catt3 - bvirt) + (_i - bvirt);
1987
- catt[3] = catt3;
1321
+ catt[1] = _0 - (_i + bvirt) + (bvirt - t1);
1322
+ u3 = _j + _i;
1323
+ bvirt = u3 - _j;
1324
+ catt[2] = _j - (u3 - bvirt) + (_i - bvirt);
1325
+ catt[3] = u3;
1988
1326
  cattlen = 4;
1989
1327
  } else {
1990
- cat$1[0] = 0;
1328
+ cat[0] = 0;
1991
1329
  catlen = 1;
1992
1330
  catt[0] = 0;
1993
1331
  cattlen = 1;
1994
1332
  }
1995
-
1996
1333
  if (bdxtail !== 0) {
1997
- temp16alen = scale_expansion_zeroelim(bxtcalen, bxtca, bdxtail, temp16a);
1998
- const bxtcatlen = scale_expansion_zeroelim(catlen, cat$1, bdxtail, bxtcat);
1999
- temp32alen = scale_expansion_zeroelim(bxtcatlen, bxtcat, 2 * bdx, temp32a);
2000
- temp48len = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp32alen, temp32a, temp48);
2001
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
2002
- finswap = finnow; finnow = finother; finother = finswap;
1334
+ const len = scale(catlen, cat, bdxtail, _16c);
1335
+ finlen = finadd(finlen, sum(
1336
+ scale(bxtcalen, bxtca, bdxtail, _16$1), _16$1,
1337
+ scale(len, _16c, 2 * bdx, _32), _32, _48$1), _48$1);
1338
+
1339
+ const len2 = scale(cattlen, catt, bdxtail, _8$1);
1340
+ finlen = finadd(finlen, sum_three(
1341
+ scale(len2, _8$1, 2 * bdx, _16$1), _16$1,
1342
+ scale(len2, _8$1, bdxtail, _16b), _16b,
1343
+ scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64);
1344
+
2003
1345
  if (cdytail !== 0) {
2004
- temp8len = scale_expansion_zeroelim(4, aa, bdxtail, temp8);
2005
- temp16alen = scale_expansion_zeroelim(temp8len, temp8, cdytail, temp16a);
2006
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp16alen, temp16a, finother);
2007
- finswap = finnow; finnow = finother; finother = finswap;
1346
+ finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8$1), _8$1, cdytail, _16$1), _16$1);
2008
1347
  }
2009
1348
  if (adytail !== 0) {
2010
- temp8len = scale_expansion_zeroelim(4, cc, -bdxtail, temp8);
2011
- temp16alen = scale_expansion_zeroelim(temp8len, temp8, adytail, temp16a);
2012
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp16alen, temp16a, finother);
2013
- finswap = finnow; finnow = finother; finother = finswap;
1349
+ finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8$1), _8$1, adytail, _16$1), _16$1);
2014
1350
  }
2015
-
2016
- temp32alen = scale_expansion_zeroelim(bxtcatlen, bxtcat, bdxtail, temp32a);
2017
- const bxtcattlen = scale_expansion_zeroelim(cattlen, catt, bdxtail, bxtcatt);
2018
- temp16alen = scale_expansion_zeroelim(bxtcattlen, bxtcatt, 2 * bdx, temp16a);
2019
- temp16blen = scale_expansion_zeroelim(bxtcattlen, bxtcatt, bdxtail, temp16b);
2020
- temp32blen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32b);
2021
- temp64len = fast_expansion_sum_zeroelim(temp32alen, temp32a, temp32blen, temp32b, temp64);
2022
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp64len, temp64, finother);
2023
- finswap = finnow; finnow = finother; finother = finswap;
2024
1351
  }
2025
1352
  if (bdytail !== 0) {
2026
- temp16alen = scale_expansion_zeroelim(bytcalen, bytca, bdytail, temp16a);
2027
- const bytcatlen = scale_expansion_zeroelim(catlen, cat$1, bdytail, bytcat);
2028
- temp32alen = scale_expansion_zeroelim(bytcatlen, bytcat, 2 * bdy, temp32a);
2029
- temp48len = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp32alen, temp32a, temp48);
2030
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
2031
- finswap = finnow; finnow = finother; finother = finswap;
2032
-
2033
- temp32alen = scale_expansion_zeroelim(bytcatlen, bytcat, bdytail, temp32a);
2034
- const bytcattlen = scale_expansion_zeroelim(cattlen, catt, bdytail, bytcatt);
2035
- temp16alen = scale_expansion_zeroelim(bytcattlen, bytcatt, 2 * bdy, temp16a);
2036
- temp16blen = scale_expansion_zeroelim(bytcattlen, bytcatt, bdytail, temp16b);
2037
- temp32blen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32b);
2038
- temp64len = fast_expansion_sum_zeroelim(temp32alen, temp32a, temp32blen, temp32b, temp64);
2039
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp64len, temp64, finother);
2040
- finswap = finnow; finnow = finother; finother = finswap;
1353
+ const len = scale(catlen, cat, bdytail, _16c);
1354
+ finlen = finadd(finlen, sum(
1355
+ scale(bytcalen, bytca, bdytail, _16$1), _16$1,
1356
+ scale(len, _16c, 2 * bdy, _32), _32, _48$1), _48$1);
1357
+
1358
+ const len2 = scale(cattlen, catt, bdytail, _8$1);
1359
+ finlen = finadd(finlen, sum_three(
1360
+ scale(len2, _8$1, 2 * bdy, _16$1), _16$1,
1361
+ scale(len2, _8$1, bdytail, _16b), _16b,
1362
+ scale(len, _16c, bdytail, _32), _32, _32b, _64), _64);
2041
1363
  }
2042
1364
  }
2043
1365
  if (cdxtail !== 0 || cdytail !== 0) {
2044
1366
  if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {
2045
- ti1 = adxtail * bdy;
1367
+ s1 = adxtail * bdy;
2046
1368
  c = splitter * adxtail;
2047
1369
  ahi = c - (c - adxtail);
2048
1370
  alo = adxtail - ahi;
2049
1371
  c = splitter * bdy;
2050
1372
  bhi = c - (c - bdy);
2051
1373
  blo = bdy - bhi;
2052
- ti0 = alo * blo - (ti1 - ahi * bhi - alo * bhi - ahi * blo);
2053
- tj1 = adx * bdytail;
1374
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1375
+ t1 = adx * bdytail;
2054
1376
  c = splitter * adx;
2055
1377
  ahi = c - (c - adx);
2056
1378
  alo = adx - ahi;
2057
1379
  c = splitter * bdytail;
2058
1380
  bhi = c - (c - bdytail);
2059
1381
  blo = bdytail - bhi;
2060
- tj0 = alo * blo - (tj1 - ahi * bhi - alo * bhi - ahi * blo);
2061
- _i = ti0 + tj0;
2062
- bvirt = _i - ti0;
2063
- u$2[0] = ti0 - (_i - bvirt) + (tj0 - bvirt);
2064
- _j = ti1 + _i;
2065
- bvirt = _j - ti1;
2066
- _0 = ti1 - (_j - bvirt) + (_i - bvirt);
2067
- _i = _0 + tj1;
1382
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1383
+ _i = s0 + t0;
1384
+ bvirt = _i - s0;
1385
+ u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
1386
+ _j = s1 + _i;
1387
+ bvirt = _j - s1;
1388
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1389
+ _i = _0 + t1;
2068
1390
  bvirt = _i - _0;
2069
- u$2[1] = _0 - (_i - bvirt) + (tj1 - bvirt);
1391
+ u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
2070
1392
  u3 = _j + _i;
2071
1393
  bvirt = u3 - _j;
2072
- u$2[2] = _j - (u3 - bvirt) + (_i - bvirt);
2073
- u$2[3] = u3;
2074
- negate = -ady;
2075
- ti1 = bdxtail * negate;
1394
+ u[2] = _j - (u3 - bvirt) + (_i - bvirt);
1395
+ u[3] = u3;
1396
+ n1 = -ady;
1397
+ n0 = -adytail;
1398
+ s1 = bdxtail * n1;
2076
1399
  c = splitter * bdxtail;
2077
1400
  ahi = c - (c - bdxtail);
2078
1401
  alo = bdxtail - ahi;
2079
- c = splitter * negate;
2080
- bhi = c - (c - negate);
2081
- blo = negate - bhi;
2082
- ti0 = alo * blo - (ti1 - ahi * bhi - alo * bhi - ahi * blo);
2083
- negate = -adytail;
2084
- tj1 = bdx * negate;
1402
+ c = splitter * n1;
1403
+ bhi = c - (c - n1);
1404
+ blo = n1 - bhi;
1405
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1406
+ t1 = bdx * n0;
2085
1407
  c = splitter * bdx;
2086
1408
  ahi = c - (c - bdx);
2087
1409
  alo = bdx - ahi;
2088
- c = splitter * negate;
2089
- bhi = c - (c - negate);
2090
- blo = negate - bhi;
2091
- tj0 = alo * blo - (tj1 - ahi * bhi - alo * bhi - ahi * blo);
2092
- _i = ti0 + tj0;
2093
- bvirt = _i - ti0;
2094
- v$1[0] = ti0 - (_i - bvirt) + (tj0 - bvirt);
2095
- _j = ti1 + _i;
2096
- bvirt = _j - ti1;
2097
- _0 = ti1 - (_j - bvirt) + (_i - bvirt);
2098
- _i = _0 + tj1;
1410
+ c = splitter * n0;
1411
+ bhi = c - (c - n0);
1412
+ blo = n0 - bhi;
1413
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1414
+ _i = s0 + t0;
1415
+ bvirt = _i - s0;
1416
+ v[0] = s0 - (_i - bvirt) + (t0 - bvirt);
1417
+ _j = s1 + _i;
1418
+ bvirt = _j - s1;
1419
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1420
+ _i = _0 + t1;
2099
1421
  bvirt = _i - _0;
2100
- v$1[1] = _0 - (_i - bvirt) + (tj1 - bvirt);
2101
- v3 = _j + _i;
2102
- bvirt = v3 - _j;
2103
- v$1[2] = _j - (v3 - bvirt) + (_i - bvirt);
2104
- v$1[3] = v3;
2105
- abtlen = fast_expansion_sum_zeroelim(4, u$2, 4, v$1, abt$1);
2106
-
2107
- ti1 = adxtail * bdytail;
1422
+ v[1] = _0 - (_i - bvirt) + (t1 - bvirt);
1423
+ u3 = _j + _i;
1424
+ bvirt = u3 - _j;
1425
+ v[2] = _j - (u3 - bvirt) + (_i - bvirt);
1426
+ v[3] = u3;
1427
+ abtlen = sum(4, u, 4, v, abt);
1428
+ s1 = adxtail * bdytail;
2108
1429
  c = splitter * adxtail;
2109
1430
  ahi = c - (c - adxtail);
2110
1431
  alo = adxtail - ahi;
2111
1432
  c = splitter * bdytail;
2112
1433
  bhi = c - (c - bdytail);
2113
1434
  blo = bdytail - bhi;
2114
- ti0 = alo * blo - (ti1 - ahi * bhi - alo * bhi - ahi * blo);
2115
- tj1 = bdxtail * adytail;
1435
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1436
+ t1 = bdxtail * adytail;
2116
1437
  c = splitter * bdxtail;
2117
1438
  ahi = c - (c - bdxtail);
2118
1439
  alo = bdxtail - ahi;
2119
1440
  c = splitter * adytail;
2120
1441
  bhi = c - (c - adytail);
2121
1442
  blo = adytail - bhi;
2122
- tj0 = alo * blo - (tj1 - ahi * bhi - alo * bhi - ahi * blo);
2123
- _i = ti0 - tj0;
2124
- bvirt = ti0 - _i;
2125
- abtt[0] = ti0 - (_i + bvirt) + (bvirt - tj0);
2126
- _j = ti1 + _i;
2127
- bvirt = _j - ti1;
2128
- _0 = ti1 - (_j - bvirt) + (_i - bvirt);
2129
- _i = _0 - tj1;
1443
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1444
+ _i = s0 - t0;
1445
+ bvirt = s0 - _i;
1446
+ abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);
1447
+ _j = s1 + _i;
1448
+ bvirt = _j - s1;
1449
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1450
+ _i = _0 - t1;
2130
1451
  bvirt = _0 - _i;
2131
- abtt[1] = _0 - (_i + bvirt) + (bvirt - tj1);
2132
- abtt3 = _j + _i;
2133
- bvirt = abtt3 - _j;
2134
- abtt[2] = _j - (abtt3 - bvirt) + (_i - bvirt);
2135
- abtt[3] = abtt3;
1452
+ abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);
1453
+ u3 = _j + _i;
1454
+ bvirt = u3 - _j;
1455
+ abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);
1456
+ abtt[3] = u3;
2136
1457
  abttlen = 4;
2137
1458
  } else {
2138
- abt$1[0] = 0;
1459
+ abt[0] = 0;
2139
1460
  abtlen = 1;
2140
1461
  abtt[0] = 0;
2141
1462
  abttlen = 1;
2142
1463
  }
2143
-
2144
1464
  if (cdxtail !== 0) {
2145
- temp16alen = scale_expansion_zeroelim(cxtablen, cxtab, cdxtail, temp16a);
2146
- const cxtabtlen = scale_expansion_zeroelim(abtlen, abt$1, cdxtail, cxtabt);
2147
- temp32alen = scale_expansion_zeroelim(cxtabtlen, cxtabt, 2 * cdx, temp32a);
2148
- temp48len = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp32alen, temp32a, temp48);
2149
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
2150
- finswap = finnow; finnow = finother; finother = finswap;
1465
+ const len = scale(abtlen, abt, cdxtail, _16c);
1466
+ finlen = finadd(finlen, sum(
1467
+ scale(cxtablen, cxtab, cdxtail, _16$1), _16$1,
1468
+ scale(len, _16c, 2 * cdx, _32), _32, _48$1), _48$1);
1469
+
1470
+ const len2 = scale(abttlen, abtt, cdxtail, _8$1);
1471
+ finlen = finadd(finlen, sum_three(
1472
+ scale(len2, _8$1, 2 * cdx, _16$1), _16$1,
1473
+ scale(len2, _8$1, cdxtail, _16b), _16b,
1474
+ scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64);
1475
+
2151
1476
  if (adytail !== 0) {
2152
- temp8len = scale_expansion_zeroelim(4, bb, cdxtail, temp8);
2153
- temp16alen = scale_expansion_zeroelim(temp8len, temp8, adytail, temp16a);
2154
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp16alen, temp16a, finother);
2155
- finswap = finnow; finnow = finother; finother = finswap;
1477
+ finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8$1), _8$1, adytail, _16$1), _16$1);
2156
1478
  }
2157
1479
  if (bdytail !== 0) {
2158
- temp8len = scale_expansion_zeroelim(4, aa, -cdxtail, temp8);
2159
- temp16alen = scale_expansion_zeroelim(temp8len, temp8, bdytail, temp16a);
2160
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp16alen, temp16a, finother);
2161
- finswap = finnow; finnow = finother; finother = finswap;
1480
+ finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8$1), _8$1, bdytail, _16$1), _16$1);
2162
1481
  }
2163
-
2164
- temp32alen = scale_expansion_zeroelim(cxtabtlen, cxtabt, cdxtail, temp32a);
2165
- const cxtabttlen = scale_expansion_zeroelim(abttlen, abtt, cdxtail, cxtabtt);
2166
- temp16alen = scale_expansion_zeroelim(cxtabttlen, cxtabtt, 2 * cdx, temp16a);
2167
- temp16blen = scale_expansion_zeroelim(cxtabttlen, cxtabtt, cdxtail, temp16b);
2168
- temp32blen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32b);
2169
- temp64len = fast_expansion_sum_zeroelim(temp32alen, temp32a, temp32blen, temp32b, temp64);
2170
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp64len, temp64, finother);
2171
- finswap = finnow; finnow = finother; finother = finswap;
2172
1482
  }
2173
1483
  if (cdytail !== 0) {
2174
- temp16alen = scale_expansion_zeroelim(cytablen, cytab, cdytail, temp16a);
2175
- const cytabtlen = scale_expansion_zeroelim(abtlen, abt$1, cdytail, cytabt);
2176
- temp32alen = scale_expansion_zeroelim(cytabtlen, cytabt, 2 * cdy, temp32a);
2177
- temp48len = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp32alen, temp32a, temp48);
2178
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
2179
- finswap = finnow; finnow = finother; finother = finswap;
2180
-
2181
- temp32alen = scale_expansion_zeroelim(cytabtlen, cytabt, cdytail, temp32a);
2182
- const cytabttlen = scale_expansion_zeroelim(abttlen, abtt, cdytail, cytabtt);
2183
- temp16alen = scale_expansion_zeroelim(cytabttlen, cytabtt, 2 * cdy, temp16a);
2184
- temp16blen = scale_expansion_zeroelim(cytabttlen, cytabtt, cdytail, temp16b);
2185
- temp32blen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32b);
2186
- temp64len = fast_expansion_sum_zeroelim(temp32alen, temp32a, temp32blen, temp32b, temp64);
2187
- finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp64len, temp64, finother);
2188
- finswap = finnow; finnow = finother; finother = finswap;
1484
+ const len = scale(abtlen, abt, cdytail, _16c);
1485
+ finlen = finadd(finlen, sum(
1486
+ scale(cytablen, cytab, cdytail, _16$1), _16$1,
1487
+ scale(len, _16c, 2 * cdy, _32), _32, _48$1), _48$1);
1488
+
1489
+ const len2 = scale(abttlen, abtt, cdytail, _8$1);
1490
+ finlen = finadd(finlen, sum_three(
1491
+ scale(len2, _8$1, 2 * cdy, _16$1), _16$1,
1492
+ scale(len2, _8$1, cdytail, _16b), _16b,
1493
+ scale(len, _16c, cdytail, _32), _32, _32b, _64), _64);
2189
1494
  }
2190
1495
  }
2191
1496
 
2192
- return finnow[finlength - 1];
1497
+ return fin$1[finlen - 1];
2193
1498
  }
2194
1499
 
2195
1500
  function incircle(ax, ay, bx, by, cx, cy, dx, dy) {
@@ -2252,8 +1557,8 @@ const isperrboundA = (16 + 224 * epsilon) * epsilon;
2252
1557
  const isperrboundB = (5 + 72 * epsilon) * epsilon;
2253
1558
  const isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;
2254
1559
 
2255
- const ab$2 = vec(4);
2256
- const bc$2 = vec(4);
1560
+ const ab = vec(4);
1561
+ const bc = vec(4);
2257
1562
  const cd = vec(4);
2258
1563
  const de = vec(4);
2259
1564
  const ea = vec(4);
@@ -2262,9 +1567,7 @@ const bd = vec(4);
2262
1567
  const ce = vec(4);
2263
1568
  const da = vec(4);
2264
1569
  const eb = vec(4);
2265
- const temp8a = vec(8);
2266
- const temp8b = vec(8);
2267
- const temp16 = vec(16);
1570
+
2268
1571
  const abc = vec(24);
2269
1572
  const bcd = vec(24);
2270
1573
  const cde = vec(24);
@@ -2275,503 +1578,386 @@ const bce = vec(24);
2275
1578
  const cda = vec(24);
2276
1579
  const deb = vec(24);
2277
1580
  const eac = vec(24);
2278
- const temp48a = vec(48);
2279
- const temp48b = vec(48);
2280
- const abcd = vec(96);
2281
- const bcde = vec(96);
2282
- const cdea = vec(96);
2283
- const deab = vec(96);
2284
- const eabc = vec(96);
2285
- const temp192 = vec(192);
2286
- const det384x = vec(384);
2287
- const det384y = vec(384);
2288
- const det384z = vec(384);
2289
- const detxy = vec(768);
2290
- const adet$2 = vec(1152);
2291
- const bdet$2 = vec(1152);
2292
- const cdet$2 = vec(1152);
1581
+
1582
+ const adet = vec(1152);
1583
+ const bdet = vec(1152);
1584
+ const cdet = vec(1152);
2293
1585
  const ddet = vec(1152);
2294
1586
  const edet = vec(1152);
2295
- const abdet$2 = vec(2304);
1587
+ const abdet = vec(2304);
2296
1588
  const cddet = vec(2304);
2297
1589
  const cdedet = vec(3456);
2298
1590
  const deter = vec(5760);
2299
1591
 
1592
+ const _8 = vec(8);
1593
+ const _8b = vec(8);
1594
+ const _8c = vec(8);
1595
+ const _16 = vec(16);
1596
+ const _24 = vec(24);
1597
+ const _48 = vec(48);
1598
+ const _48b = vec(48);
1599
+ const _96 = vec(96);
1600
+ const _192 = vec(192);
1601
+ const _384x = vec(384);
1602
+ const _384y = vec(384);
1603
+ const _384z = vec(384);
1604
+ const _768 = vec(768);
1605
+
1606
+ function sum_three_scale(a, b, c, az, bz, cz, out) {
1607
+ return sum_three(
1608
+ scale(4, a, az, _8), _8,
1609
+ scale(4, b, bz, _8b), _8b,
1610
+ scale(4, c, cz, _8c), _8c, _16, out);
1611
+ }
1612
+
1613
+ function liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {
1614
+ const len = sum(
1615
+ sum(alen, a, blen, b, _48), _48,
1616
+ negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);
1617
+
1618
+ return sum_three(
1619
+ scale(scale(len, _96, x, _192), _192, x, _384x), _384x,
1620
+ scale(scale(len, _96, y, _192), _192, y, _384y), _384y,
1621
+ scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);
1622
+ }
1623
+
2300
1624
  function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {
2301
- let axby1, bxcy1, cxdy1, dxey1, exay1;
2302
- let bxay1, cxby1, dxcy1, exdy1, axey1;
2303
- let axcy1, bxdy1, cxey1, dxay1, exby1;
2304
- let cxay1, dxby1, excy1, axdy1, bxey1;
2305
- let axby0, bxcy0, cxdy0, dxey0, exay0;
2306
- let bxay0, cxby0, dxcy0, exdy0, axey0;
2307
- let axcy0, bxdy0, cxey0, dxay0, exby0;
2308
- let cxay0, dxby0, excy0, axdy0, bxey0;
2309
- let temp8alen, temp8blen, temp16len;
2310
- let temp48alen, temp48blen;
2311
- let xlen, ylen, zlen;
2312
- let xylen;
2313
- let i;
2314
-
2315
- let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0;
2316
-
2317
- axby1 = ax * by;
1625
+ let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
1626
+
1627
+ s1 = ax * by;
2318
1628
  c = splitter * ax;
2319
1629
  ahi = c - (c - ax);
2320
1630
  alo = ax - ahi;
2321
1631
  c = splitter * by;
2322
1632
  bhi = c - (c - by);
2323
1633
  blo = by - bhi;
2324
- axby0 = alo * blo - (axby1 - ahi * bhi - alo * bhi - ahi * blo);
2325
- bxay1 = bx * ay;
1634
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1635
+ t1 = bx * ay;
2326
1636
  c = splitter * bx;
2327
1637
  ahi = c - (c - bx);
2328
1638
  alo = bx - ahi;
2329
1639
  c = splitter * ay;
2330
1640
  bhi = c - (c - ay);
2331
1641
  blo = ay - bhi;
2332
- bxay0 = alo * blo - (bxay1 - ahi * bhi - alo * bhi - ahi * blo);
2333
- _i = axby0 - bxay0;
2334
- bvirt = axby0 - _i;
2335
- ab$2[0] = axby0 - (_i + bvirt) + (bvirt - bxay0);
2336
- _j = axby1 + _i;
2337
- bvirt = _j - axby1;
2338
- _0 = axby1 - (_j - bvirt) + (_i - bvirt);
2339
- _i = _0 - bxay1;
1642
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1643
+ _i = s0 - t0;
1644
+ bvirt = s0 - _i;
1645
+ ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
1646
+ _j = s1 + _i;
1647
+ bvirt = _j - s1;
1648
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1649
+ _i = _0 - t1;
2340
1650
  bvirt = _0 - _i;
2341
- ab$2[1] = _0 - (_i + bvirt) + (bvirt - bxay1);
2342
- ab$2[3] = _j + _i;
2343
- bvirt = ab$2[3] - _j;
2344
- ab$2[2] = _j - (ab$2[3] - bvirt) + (_i - bvirt);
2345
-
2346
- bxcy1 = bx * cy;
1651
+ ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
1652
+ u3 = _j + _i;
1653
+ bvirt = u3 - _j;
1654
+ ab[2] = _j - (u3 - bvirt) + (_i - bvirt);
1655
+ ab[3] = u3;
1656
+ s1 = bx * cy;
2347
1657
  c = splitter * bx;
2348
1658
  ahi = c - (c - bx);
2349
1659
  alo = bx - ahi;
2350
1660
  c = splitter * cy;
2351
1661
  bhi = c - (c - cy);
2352
1662
  blo = cy - bhi;
2353
- bxcy0 = alo * blo - (bxcy1 - ahi * bhi - alo * bhi - ahi * blo);
2354
- cxby1 = cx * by;
1663
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1664
+ t1 = cx * by;
2355
1665
  c = splitter * cx;
2356
1666
  ahi = c - (c - cx);
2357
1667
  alo = cx - ahi;
2358
1668
  c = splitter * by;
2359
1669
  bhi = c - (c - by);
2360
1670
  blo = by - bhi;
2361
- cxby0 = alo * blo - (cxby1 - ahi * bhi - alo * bhi - ahi * blo);
2362
- _i = bxcy0 - cxby0;
2363
- bvirt = bxcy0 - _i;
2364
- bc$2[0] = bxcy0 - (_i + bvirt) + (bvirt - cxby0);
2365
- _j = bxcy1 + _i;
2366
- bvirt = _j - bxcy1;
2367
- _0 = bxcy1 - (_j - bvirt) + (_i - bvirt);
2368
- _i = _0 - cxby1;
1671
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1672
+ _i = s0 - t0;
1673
+ bvirt = s0 - _i;
1674
+ bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
1675
+ _j = s1 + _i;
1676
+ bvirt = _j - s1;
1677
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1678
+ _i = _0 - t1;
2369
1679
  bvirt = _0 - _i;
2370
- bc$2[1] = _0 - (_i + bvirt) + (bvirt - cxby1);
2371
- bc$2[3] = _j + _i;
2372
- bvirt = bc$2[3] - _j;
2373
- bc$2[2] = _j - (bc$2[3] - bvirt) + (_i - bvirt);
2374
-
2375
- cxdy1 = cx * dy;
1680
+ bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
1681
+ u3 = _j + _i;
1682
+ bvirt = u3 - _j;
1683
+ bc[2] = _j - (u3 - bvirt) + (_i - bvirt);
1684
+ bc[3] = u3;
1685
+ s1 = cx * dy;
2376
1686
  c = splitter * cx;
2377
1687
  ahi = c - (c - cx);
2378
1688
  alo = cx - ahi;
2379
1689
  c = splitter * dy;
2380
1690
  bhi = c - (c - dy);
2381
1691
  blo = dy - bhi;
2382
- cxdy0 = alo * blo - (cxdy1 - ahi * bhi - alo * bhi - ahi * blo);
2383
- dxcy1 = dx * cy;
1692
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1693
+ t1 = dx * cy;
2384
1694
  c = splitter * dx;
2385
1695
  ahi = c - (c - dx);
2386
1696
  alo = dx - ahi;
2387
1697
  c = splitter * cy;
2388
1698
  bhi = c - (c - cy);
2389
1699
  blo = cy - bhi;
2390
- dxcy0 = alo * blo - (dxcy1 - ahi * bhi - alo * bhi - ahi * blo);
2391
- _i = cxdy0 - dxcy0;
2392
- bvirt = cxdy0 - _i;
2393
- cd[0] = cxdy0 - (_i + bvirt) + (bvirt - dxcy0);
2394
- _j = cxdy1 + _i;
2395
- bvirt = _j - cxdy1;
2396
- _0 = cxdy1 - (_j - bvirt) + (_i - bvirt);
2397
- _i = _0 - dxcy1;
1700
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1701
+ _i = s0 - t0;
1702
+ bvirt = s0 - _i;
1703
+ cd[0] = s0 - (_i + bvirt) + (bvirt - t0);
1704
+ _j = s1 + _i;
1705
+ bvirt = _j - s1;
1706
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1707
+ _i = _0 - t1;
2398
1708
  bvirt = _0 - _i;
2399
- cd[1] = _0 - (_i + bvirt) + (bvirt - dxcy1);
2400
- cd[3] = _j + _i;
2401
- bvirt = cd[3] - _j;
2402
- cd[2] = _j - (cd[3] - bvirt) + (_i - bvirt);
2403
-
2404
- dxey1 = dx * ey;
1709
+ cd[1] = _0 - (_i + bvirt) + (bvirt - t1);
1710
+ u3 = _j + _i;
1711
+ bvirt = u3 - _j;
1712
+ cd[2] = _j - (u3 - bvirt) + (_i - bvirt);
1713
+ cd[3] = u3;
1714
+ s1 = dx * ey;
2405
1715
  c = splitter * dx;
2406
1716
  ahi = c - (c - dx);
2407
1717
  alo = dx - ahi;
2408
1718
  c = splitter * ey;
2409
1719
  bhi = c - (c - ey);
2410
1720
  blo = ey - bhi;
2411
- dxey0 = alo * blo - (dxey1 - ahi * bhi - alo * bhi - ahi * blo);
2412
- exdy1 = ex * dy;
1721
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1722
+ t1 = ex * dy;
2413
1723
  c = splitter * ex;
2414
1724
  ahi = c - (c - ex);
2415
1725
  alo = ex - ahi;
2416
1726
  c = splitter * dy;
2417
1727
  bhi = c - (c - dy);
2418
1728
  blo = dy - bhi;
2419
- exdy0 = alo * blo - (exdy1 - ahi * bhi - alo * bhi - ahi * blo);
2420
- _i = dxey0 - exdy0;
2421
- bvirt = dxey0 - _i;
2422
- de[0] = dxey0 - (_i + bvirt) + (bvirt - exdy0);
2423
- _j = dxey1 + _i;
2424
- bvirt = _j - dxey1;
2425
- _0 = dxey1 - (_j - bvirt) + (_i - bvirt);
2426
- _i = _0 - exdy1;
1729
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1730
+ _i = s0 - t0;
1731
+ bvirt = s0 - _i;
1732
+ de[0] = s0 - (_i + bvirt) + (bvirt - t0);
1733
+ _j = s1 + _i;
1734
+ bvirt = _j - s1;
1735
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1736
+ _i = _0 - t1;
2427
1737
  bvirt = _0 - _i;
2428
- de[1] = _0 - (_i + bvirt) + (bvirt - exdy1);
2429
- de[3] = _j + _i;
2430
- bvirt = de[3] - _j;
2431
- de[2] = _j - (de[3] - bvirt) + (_i - bvirt);
2432
-
2433
- exay1 = ex * ay;
1738
+ de[1] = _0 - (_i + bvirt) + (bvirt - t1);
1739
+ u3 = _j + _i;
1740
+ bvirt = u3 - _j;
1741
+ de[2] = _j - (u3 - bvirt) + (_i - bvirt);
1742
+ de[3] = u3;
1743
+ s1 = ex * ay;
2434
1744
  c = splitter * ex;
2435
1745
  ahi = c - (c - ex);
2436
1746
  alo = ex - ahi;
2437
1747
  c = splitter * ay;
2438
1748
  bhi = c - (c - ay);
2439
1749
  blo = ay - bhi;
2440
- exay0 = alo * blo - (exay1 - ahi * bhi - alo * bhi - ahi * blo);
2441
- axey1 = ax * ey;
1750
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1751
+ t1 = ax * ey;
2442
1752
  c = splitter * ax;
2443
1753
  ahi = c - (c - ax);
2444
1754
  alo = ax - ahi;
2445
1755
  c = splitter * ey;
2446
1756
  bhi = c - (c - ey);
2447
1757
  blo = ey - bhi;
2448
- axey0 = alo * blo - (axey1 - ahi * bhi - alo * bhi - ahi * blo);
2449
- _i = exay0 - axey0;
2450
- bvirt = exay0 - _i;
2451
- ea[0] = exay0 - (_i + bvirt) + (bvirt - axey0);
2452
- _j = exay1 + _i;
2453
- bvirt = _j - exay1;
2454
- _0 = exay1 - (_j - bvirt) + (_i - bvirt);
2455
- _i = _0 - axey1;
1758
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1759
+ _i = s0 - t0;
1760
+ bvirt = s0 - _i;
1761
+ ea[0] = s0 - (_i + bvirt) + (bvirt - t0);
1762
+ _j = s1 + _i;
1763
+ bvirt = _j - s1;
1764
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1765
+ _i = _0 - t1;
2456
1766
  bvirt = _0 - _i;
2457
- ea[1] = _0 - (_i + bvirt) + (bvirt - axey1);
2458
- ea[3] = _j + _i;
2459
- bvirt = ea[3] - _j;
2460
- ea[2] = _j - (ea[3] - bvirt) + (_i - bvirt);
2461
-
2462
- axcy1 = ax * cy;
1767
+ ea[1] = _0 - (_i + bvirt) + (bvirt - t1);
1768
+ u3 = _j + _i;
1769
+ bvirt = u3 - _j;
1770
+ ea[2] = _j - (u3 - bvirt) + (_i - bvirt);
1771
+ ea[3] = u3;
1772
+ s1 = ax * cy;
2463
1773
  c = splitter * ax;
2464
1774
  ahi = c - (c - ax);
2465
1775
  alo = ax - ahi;
2466
1776
  c = splitter * cy;
2467
1777
  bhi = c - (c - cy);
2468
1778
  blo = cy - bhi;
2469
- axcy0 = alo * blo - (axcy1 - ahi * bhi - alo * bhi - ahi * blo);
2470
- cxay1 = cx * ay;
1779
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1780
+ t1 = cx * ay;
2471
1781
  c = splitter * cx;
2472
1782
  ahi = c - (c - cx);
2473
1783
  alo = cx - ahi;
2474
1784
  c = splitter * ay;
2475
1785
  bhi = c - (c - ay);
2476
1786
  blo = ay - bhi;
2477
- cxay0 = alo * blo - (cxay1 - ahi * bhi - alo * bhi - ahi * blo);
2478
- _i = axcy0 - cxay0;
2479
- bvirt = axcy0 - _i;
2480
- ac[0] = axcy0 - (_i + bvirt) + (bvirt - cxay0);
2481
- _j = axcy1 + _i;
2482
- bvirt = _j - axcy1;
2483
- _0 = axcy1 - (_j - bvirt) + (_i - bvirt);
2484
- _i = _0 - cxay1;
1787
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1788
+ _i = s0 - t0;
1789
+ bvirt = s0 - _i;
1790
+ ac[0] = s0 - (_i + bvirt) + (bvirt - t0);
1791
+ _j = s1 + _i;
1792
+ bvirt = _j - s1;
1793
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1794
+ _i = _0 - t1;
2485
1795
  bvirt = _0 - _i;
2486
- ac[1] = _0 - (_i + bvirt) + (bvirt - cxay1);
2487
- ac[3] = _j + _i;
2488
- bvirt = ac[3] - _j;
2489
- ac[2] = _j - (ac[3] - bvirt) + (_i - bvirt);
2490
-
2491
- bxdy1 = bx * dy;
1796
+ ac[1] = _0 - (_i + bvirt) + (bvirt - t1);
1797
+ u3 = _j + _i;
1798
+ bvirt = u3 - _j;
1799
+ ac[2] = _j - (u3 - bvirt) + (_i - bvirt);
1800
+ ac[3] = u3;
1801
+ s1 = bx * dy;
2492
1802
  c = splitter * bx;
2493
1803
  ahi = c - (c - bx);
2494
1804
  alo = bx - ahi;
2495
1805
  c = splitter * dy;
2496
1806
  bhi = c - (c - dy);
2497
1807
  blo = dy - bhi;
2498
- bxdy0 = alo * blo - (bxdy1 - ahi * bhi - alo * bhi - ahi * blo);
2499
- dxby1 = dx * by;
1808
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1809
+ t1 = dx * by;
2500
1810
  c = splitter * dx;
2501
1811
  ahi = c - (c - dx);
2502
1812
  alo = dx - ahi;
2503
1813
  c = splitter * by;
2504
1814
  bhi = c - (c - by);
2505
1815
  blo = by - bhi;
2506
- dxby0 = alo * blo - (dxby1 - ahi * bhi - alo * bhi - ahi * blo);
2507
- _i = bxdy0 - dxby0;
2508
- bvirt = bxdy0 - _i;
2509
- bd[0] = bxdy0 - (_i + bvirt) + (bvirt - dxby0);
2510
- _j = bxdy1 + _i;
2511
- bvirt = _j - bxdy1;
2512
- _0 = bxdy1 - (_j - bvirt) + (_i - bvirt);
2513
- _i = _0 - dxby1;
1816
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1817
+ _i = s0 - t0;
1818
+ bvirt = s0 - _i;
1819
+ bd[0] = s0 - (_i + bvirt) + (bvirt - t0);
1820
+ _j = s1 + _i;
1821
+ bvirt = _j - s1;
1822
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1823
+ _i = _0 - t1;
2514
1824
  bvirt = _0 - _i;
2515
- bd[1] = _0 - (_i + bvirt) + (bvirt - dxby1);
2516
- bd[3] = _j + _i;
2517
- bvirt = bd[3] - _j;
2518
- bd[2] = _j - (bd[3] - bvirt) + (_i - bvirt);
2519
-
2520
- cxey1 = cx * ey;
1825
+ bd[1] = _0 - (_i + bvirt) + (bvirt - t1);
1826
+ u3 = _j + _i;
1827
+ bvirt = u3 - _j;
1828
+ bd[2] = _j - (u3 - bvirt) + (_i - bvirt);
1829
+ bd[3] = u3;
1830
+ s1 = cx * ey;
2521
1831
  c = splitter * cx;
2522
1832
  ahi = c - (c - cx);
2523
1833
  alo = cx - ahi;
2524
1834
  c = splitter * ey;
2525
1835
  bhi = c - (c - ey);
2526
1836
  blo = ey - bhi;
2527
- cxey0 = alo * blo - (cxey1 - ahi * bhi - alo * bhi - ahi * blo);
2528
- excy1 = ex * cy;
1837
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1838
+ t1 = ex * cy;
2529
1839
  c = splitter * ex;
2530
1840
  ahi = c - (c - ex);
2531
1841
  alo = ex - ahi;
2532
1842
  c = splitter * cy;
2533
1843
  bhi = c - (c - cy);
2534
1844
  blo = cy - bhi;
2535
- excy0 = alo * blo - (excy1 - ahi * bhi - alo * bhi - ahi * blo);
2536
- _i = cxey0 - excy0;
2537
- bvirt = cxey0 - _i;
2538
- ce[0] = cxey0 - (_i + bvirt) + (bvirt - excy0);
2539
- _j = cxey1 + _i;
2540
- bvirt = _j - cxey1;
2541
- _0 = cxey1 - (_j - bvirt) + (_i - bvirt);
2542
- _i = _0 - excy1;
1845
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1846
+ _i = s0 - t0;
1847
+ bvirt = s0 - _i;
1848
+ ce[0] = s0 - (_i + bvirt) + (bvirt - t0);
1849
+ _j = s1 + _i;
1850
+ bvirt = _j - s1;
1851
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1852
+ _i = _0 - t1;
2543
1853
  bvirt = _0 - _i;
2544
- ce[1] = _0 - (_i + bvirt) + (bvirt - excy1);
2545
- ce[3] = _j + _i;
2546
- bvirt = ce[3] - _j;
2547
- ce[2] = _j - (ce[3] - bvirt) + (_i - bvirt);
2548
-
2549
- dxay1 = dx * ay;
1854
+ ce[1] = _0 - (_i + bvirt) + (bvirt - t1);
1855
+ u3 = _j + _i;
1856
+ bvirt = u3 - _j;
1857
+ ce[2] = _j - (u3 - bvirt) + (_i - bvirt);
1858
+ ce[3] = u3;
1859
+ s1 = dx * ay;
2550
1860
  c = splitter * dx;
2551
1861
  ahi = c - (c - dx);
2552
1862
  alo = dx - ahi;
2553
1863
  c = splitter * ay;
2554
1864
  bhi = c - (c - ay);
2555
1865
  blo = ay - bhi;
2556
- dxay0 = alo * blo - (dxay1 - ahi * bhi - alo * bhi - ahi * blo);
2557
- axdy1 = ax * dy;
1866
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1867
+ t1 = ax * dy;
2558
1868
  c = splitter * ax;
2559
1869
  ahi = c - (c - ax);
2560
1870
  alo = ax - ahi;
2561
1871
  c = splitter * dy;
2562
1872
  bhi = c - (c - dy);
2563
1873
  blo = dy - bhi;
2564
- axdy0 = alo * blo - (axdy1 - ahi * bhi - alo * bhi - ahi * blo);
2565
- _i = dxay0 - axdy0;
2566
- bvirt = dxay0 - _i;
2567
- da[0] = dxay0 - (_i + bvirt) + (bvirt - axdy0);
2568
- _j = dxay1 + _i;
2569
- bvirt = _j - dxay1;
2570
- _0 = dxay1 - (_j - bvirt) + (_i - bvirt);
2571
- _i = _0 - axdy1;
1874
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1875
+ _i = s0 - t0;
1876
+ bvirt = s0 - _i;
1877
+ da[0] = s0 - (_i + bvirt) + (bvirt - t0);
1878
+ _j = s1 + _i;
1879
+ bvirt = _j - s1;
1880
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1881
+ _i = _0 - t1;
2572
1882
  bvirt = _0 - _i;
2573
- da[1] = _0 - (_i + bvirt) + (bvirt - axdy1);
2574
- da[3] = _j + _i;
2575
- bvirt = da[3] - _j;
2576
- da[2] = _j - (da[3] - bvirt) + (_i - bvirt);
2577
-
2578
- exby1 = ex * by;
1883
+ da[1] = _0 - (_i + bvirt) + (bvirt - t1);
1884
+ u3 = _j + _i;
1885
+ bvirt = u3 - _j;
1886
+ da[2] = _j - (u3 - bvirt) + (_i - bvirt);
1887
+ da[3] = u3;
1888
+ s1 = ex * by;
2579
1889
  c = splitter * ex;
2580
1890
  ahi = c - (c - ex);
2581
1891
  alo = ex - ahi;
2582
1892
  c = splitter * by;
2583
1893
  bhi = c - (c - by);
2584
1894
  blo = by - bhi;
2585
- exby0 = alo * blo - (exby1 - ahi * bhi - alo * bhi - ahi * blo);
2586
- bxey1 = bx * ey;
1895
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1896
+ t1 = bx * ey;
2587
1897
  c = splitter * bx;
2588
1898
  ahi = c - (c - bx);
2589
1899
  alo = bx - ahi;
2590
1900
  c = splitter * ey;
2591
1901
  bhi = c - (c - ey);
2592
1902
  blo = ey - bhi;
2593
- bxey0 = alo * blo - (bxey1 - ahi * bhi - alo * bhi - ahi * blo);
2594
- _i = exby0 - bxey0;
2595
- bvirt = exby0 - _i;
2596
- eb[0] = exby0 - (_i + bvirt) + (bvirt - bxey0);
2597
- _j = exby1 + _i;
2598
- bvirt = _j - exby1;
2599
- _0 = exby1 - (_j - bvirt) + (_i - bvirt);
2600
- _i = _0 - bxey1;
1903
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1904
+ _i = s0 - t0;
1905
+ bvirt = s0 - _i;
1906
+ eb[0] = s0 - (_i + bvirt) + (bvirt - t0);
1907
+ _j = s1 + _i;
1908
+ bvirt = _j - s1;
1909
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1910
+ _i = _0 - t1;
2601
1911
  bvirt = _0 - _i;
2602
- eb[1] = _0 - (_i + bvirt) + (bvirt - bxey1);
2603
- eb[3] = _j + _i;
2604
- bvirt = eb[3] - _j;
2605
- eb[2] = _j - (eb[3] - bvirt) + (_i - bvirt);
2606
-
2607
- temp8alen = scale_expansion_zeroelim(4, bc$2, az, temp8a);
2608
- temp8blen = scale_expansion_zeroelim(4, ac, -bz, temp8b);
2609
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
2610
- temp8alen = scale_expansion_zeroelim(4, ab$2, cz, temp8a);
2611
- const abclen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, abc);
2612
-
2613
- temp8alen = scale_expansion_zeroelim(4, cd, bz, temp8a);
2614
- temp8blen = scale_expansion_zeroelim(4, bd, -cz, temp8b);
2615
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
2616
- temp8alen = scale_expansion_zeroelim(4, bc$2, dz, temp8a);
2617
- const bcdlen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, bcd);
2618
-
2619
- temp8alen = scale_expansion_zeroelim(4, de, cz, temp8a);
2620
- temp8blen = scale_expansion_zeroelim(4, ce, -dz, temp8b);
2621
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
2622
- temp8alen = scale_expansion_zeroelim(4, cd, ez, temp8a);
2623
- let cdelen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, cde);
2624
-
2625
- temp8alen = scale_expansion_zeroelim(4, ea, dz, temp8a);
2626
- temp8blen = scale_expansion_zeroelim(4, da, -ez, temp8b);
2627
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
2628
- temp8alen = scale_expansion_zeroelim(4, de, az, temp8a);
2629
- const dealen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, dea);
2630
-
2631
- temp8alen = scale_expansion_zeroelim(4, ab$2, ez, temp8a);
2632
- temp8blen = scale_expansion_zeroelim(4, eb, -az, temp8b);
2633
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
2634
- temp8alen = scale_expansion_zeroelim(4, ea, bz, temp8a);
2635
- const eablen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, eab);
2636
-
2637
- temp8alen = scale_expansion_zeroelim(4, bd, az, temp8a);
2638
- temp8blen = scale_expansion_zeroelim(4, da, bz, temp8b);
2639
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
2640
- temp8alen = scale_expansion_zeroelim(4, ab$2, dz, temp8a);
2641
- const abdlen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, abd);
2642
-
2643
- temp8alen = scale_expansion_zeroelim(4, ce, bz, temp8a);
2644
- temp8blen = scale_expansion_zeroelim(4, eb, cz, temp8b);
2645
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
2646
- temp8alen = scale_expansion_zeroelim(4, bc$2, ez, temp8a);
2647
- const bcelen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, bce);
2648
-
2649
- temp8alen = scale_expansion_zeroelim(4, da, cz, temp8a);
2650
- temp8blen = scale_expansion_zeroelim(4, ac, dz, temp8b);
2651
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
2652
- temp8alen = scale_expansion_zeroelim(4, cd, az, temp8a);
2653
- const cdalen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, cda);
2654
-
2655
- temp8alen = scale_expansion_zeroelim(4, eb, dz, temp8a);
2656
- temp8blen = scale_expansion_zeroelim(4, bd, ez, temp8b);
2657
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
2658
- temp8alen = scale_expansion_zeroelim(4, de, bz, temp8a);
2659
- const deblen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, deb);
2660
-
2661
- temp8alen = scale_expansion_zeroelim(4, ac, ez, temp8a);
2662
- temp8blen = scale_expansion_zeroelim(4, ce, az, temp8b);
2663
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
2664
- temp8alen = scale_expansion_zeroelim(4, ea, cz, temp8a);
2665
- const eaclen = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp16len, temp16, eac);
2666
-
2667
- temp48alen = fast_expansion_sum_zeroelim(cdelen, cde, bcelen, bce, temp48a);
2668
- temp48blen = fast_expansion_sum_zeroelim(deblen, deb, bcdlen, bcd, temp48b);
2669
- for (i = 0; i < temp48blen; i++) {
2670
- temp48b[i] = -temp48b[i];
2671
- }
2672
- const bcdelen = fast_expansion_sum_zeroelim(temp48alen, temp48a, temp48blen, temp48b, bcde);
2673
- xlen = scale_expansion_zeroelim(bcdelen, bcde, ax, temp192);
2674
- xlen = scale_expansion_zeroelim(xlen, temp192, ax, det384x);
2675
- ylen = scale_expansion_zeroelim(bcdelen, bcde, ay, temp192);
2676
- ylen = scale_expansion_zeroelim(ylen, temp192, ay, det384y);
2677
- zlen = scale_expansion_zeroelim(bcdelen, bcde, az, temp192);
2678
- zlen = scale_expansion_zeroelim(zlen, temp192, az, det384z);
2679
- xylen = fast_expansion_sum_zeroelim(xlen, det384x, ylen, det384y, detxy);
2680
- const alen = fast_expansion_sum_zeroelim(xylen, detxy, zlen, det384z, adet$2);
2681
-
2682
- temp48alen = fast_expansion_sum_zeroelim(dealen, dea, cdalen, cda, temp48a);
2683
- temp48blen = fast_expansion_sum_zeroelim(eaclen, eac, cdelen, cde, temp48b);
2684
- for (i = 0; i < temp48blen; i++) {
2685
- temp48b[i] = -temp48b[i];
2686
- }
2687
- const cdealen = fast_expansion_sum_zeroelim(temp48alen, temp48a, temp48blen, temp48b, cdea);
2688
- xlen = scale_expansion_zeroelim(cdealen, cdea, bx, temp192);
2689
- xlen = scale_expansion_zeroelim(xlen, temp192, bx, det384x);
2690
- ylen = scale_expansion_zeroelim(cdealen, cdea, by, temp192);
2691
- ylen = scale_expansion_zeroelim(ylen, temp192, by, det384y);
2692
- zlen = scale_expansion_zeroelim(cdealen, cdea, bz, temp192);
2693
- zlen = scale_expansion_zeroelim(zlen, temp192, bz, det384z);
2694
- xylen = fast_expansion_sum_zeroelim(xlen, det384x, ylen, det384y, detxy);
2695
- const blen = fast_expansion_sum_zeroelim(xylen, detxy, zlen, det384z, bdet$2);
2696
-
2697
- temp48alen = fast_expansion_sum_zeroelim(eablen, eab, deblen, deb, temp48a);
2698
- temp48blen = fast_expansion_sum_zeroelim(abdlen, abd, dealen, dea, temp48b);
2699
- for (i = 0; i < temp48blen; i++) {
2700
- temp48b[i] = -temp48b[i];
2701
- }
2702
- const deablen = fast_expansion_sum_zeroelim(temp48alen, temp48a, temp48blen, temp48b, deab);
2703
- xlen = scale_expansion_zeroelim(deablen, deab, cx, temp192);
2704
- xlen = scale_expansion_zeroelim(xlen, temp192, cx, det384x);
2705
- ylen = scale_expansion_zeroelim(deablen, deab, cy, temp192);
2706
- ylen = scale_expansion_zeroelim(ylen, temp192, cy, det384y);
2707
- zlen = scale_expansion_zeroelim(deablen, deab, cz, temp192);
2708
- zlen = scale_expansion_zeroelim(zlen, temp192, cz, det384z);
2709
- xylen = fast_expansion_sum_zeroelim(xlen, det384x, ylen, det384y, detxy);
2710
- const clen = fast_expansion_sum_zeroelim(xylen, detxy, zlen, det384z, cdet$2);
2711
-
2712
- temp48alen = fast_expansion_sum_zeroelim(abclen, abc, eaclen, eac, temp48a);
2713
- temp48blen = fast_expansion_sum_zeroelim(bcelen, bce, eablen, eab, temp48b);
2714
- for (i = 0; i < temp48blen; i++) {
2715
- temp48b[i] = -temp48b[i];
2716
- }
2717
- const eabclen = fast_expansion_sum_zeroelim(temp48alen, temp48a, temp48blen, temp48b, eabc);
2718
- xlen = scale_expansion_zeroelim(eabclen, eabc, dx, temp192);
2719
- xlen = scale_expansion_zeroelim(xlen, temp192, dx, det384x);
2720
- ylen = scale_expansion_zeroelim(eabclen, eabc, dy, temp192);
2721
- ylen = scale_expansion_zeroelim(ylen, temp192, dy, det384y);
2722
- zlen = scale_expansion_zeroelim(eabclen, eabc, dz, temp192);
2723
- zlen = scale_expansion_zeroelim(zlen, temp192, dz, det384z);
2724
- xylen = fast_expansion_sum_zeroelim(xlen, det384x, ylen, det384y, detxy);
2725
- const dlen = fast_expansion_sum_zeroelim(xylen, detxy, zlen, det384z, ddet);
2726
-
2727
- temp48alen = fast_expansion_sum_zeroelim(bcdlen, bcd, abdlen, abd, temp48a);
2728
- temp48blen = fast_expansion_sum_zeroelim(cdalen, cda, abclen, abc, temp48b);
2729
- for (i = 0; i < temp48blen; i++) {
2730
- temp48b[i] = -temp48b[i];
2731
- }
2732
- const abcdlen = fast_expansion_sum_zeroelim(temp48alen, temp48a, temp48blen, temp48b, abcd);
2733
- xlen = scale_expansion_zeroelim(abcdlen, abcd, ex, temp192);
2734
- xlen = scale_expansion_zeroelim(xlen, temp192, ex, det384x);
2735
- ylen = scale_expansion_zeroelim(abcdlen, abcd, ey, temp192);
2736
- ylen = scale_expansion_zeroelim(ylen, temp192, ey, det384y);
2737
- zlen = scale_expansion_zeroelim(abcdlen, abcd, ez, temp192);
2738
- zlen = scale_expansion_zeroelim(zlen, temp192, ez, det384z);
2739
- xylen = fast_expansion_sum_zeroelim(xlen, det384x, ylen, det384y, detxy);
2740
- const elen = fast_expansion_sum_zeroelim(xylen, detxy, zlen, det384z, edet);
2741
-
2742
- const ablen = fast_expansion_sum_zeroelim(alen, adet$2, blen, bdet$2, abdet$2);
2743
- const cdlen = fast_expansion_sum_zeroelim(clen, cdet$2, dlen, ddet, cddet);
2744
- cdelen = fast_expansion_sum_zeroelim(cdlen, cddet, elen, edet, cdedet);
2745
- const deterlen = fast_expansion_sum_zeroelim(ablen, abdet$2, cdelen, cdedet, deter);
1912
+ eb[1] = _0 - (_i + bvirt) + (bvirt - t1);
1913
+ u3 = _j + _i;
1914
+ bvirt = u3 - _j;
1915
+ eb[2] = _j - (u3 - bvirt) + (_i - bvirt);
1916
+ eb[3] = u3;
1917
+
1918
+ const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);
1919
+ const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);
1920
+ const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);
1921
+ const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);
1922
+ const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);
1923
+ const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);
1924
+ const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);
1925
+ const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);
1926
+ const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);
1927
+ const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);
1928
+
1929
+ const deterlen = sum_three(
1930
+ liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet,
1931
+ liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet,
1932
+ sum_three(
1933
+ liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet,
1934
+ liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet,
1935
+ liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);
2746
1936
 
2747
1937
  return deter[deterlen - 1];
2748
1938
  }
2749
1939
 
2750
- const temp8c = vec(8);
2751
- const temp24 = vec(24);
2752
- const temp48$1 = vec(48);
2753
1940
  const xdet = vec(96);
2754
1941
  const ydet = vec(96);
2755
1942
  const zdet = vec(96);
2756
- const xydet = vec(192);
2757
- const fin1$2 = vec(1152);
1943
+ const fin = vec(1152);
1944
+
1945
+ function liftadapt(a, b, c, az, bz, cz, x, y, z, out) {
1946
+ const len = sum_three_scale(a, b, c, az, bz, cz, _24);
1947
+ return sum_three(
1948
+ scale(scale(len, _24, x, _48), _48, x, xdet), xdet,
1949
+ scale(scale(len, _24, y, _48), _48, y, ydet), ydet,
1950
+ scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);
1951
+ }
2758
1952
 
2759
1953
  function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {
2760
- let aexbey1, bexaey1, bexcey1, cexbey1;
2761
- let cexdey1, dexcey1, dexaey1, aexdey1;
2762
- let aexcey1, cexaey1, bexdey1, dexbey1;
2763
- let aexbey0, bexaey0, bexcey0, cexbey0;
2764
- let cexdey0, dexcey0, dexaey0, aexdey0;
2765
- let aexcey0, cexaey0, bexdey0, dexbey0;
2766
1954
  let ab3, bc3, cd3, da3, ac3, bd3;
2767
- let temp8alen, temp8blen, temp8clen, temp16len, temp24len, temp48len;
2768
- let xlen, ylen, zlen, xylen;
2769
1955
 
2770
1956
  let aextail, bextail, cextail, dextail;
2771
1957
  let aeytail, beytail, ceytail, deytail;
2772
1958
  let aeztail, beztail, ceztail, deztail;
2773
1959
 
2774
- let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0;
1960
+ let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;
2775
1961
 
2776
1962
  const aex = ax - ex;
2777
1963
  const bex = bx - ex;
@@ -2786,247 +1972,190 @@ function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, e
2786
1972
  const cez = cz - ez;
2787
1973
  const dez = dz - ez;
2788
1974
 
2789
- aexbey1 = aex * bey;
1975
+ s1 = aex * bey;
2790
1976
  c = splitter * aex;
2791
1977
  ahi = c - (c - aex);
2792
1978
  alo = aex - ahi;
2793
1979
  c = splitter * bey;
2794
1980
  bhi = c - (c - bey);
2795
1981
  blo = bey - bhi;
2796
- aexbey0 = alo * blo - (aexbey1 - ahi * bhi - alo * bhi - ahi * blo);
2797
- bexaey1 = bex * aey;
1982
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
1983
+ t1 = bex * aey;
2798
1984
  c = splitter * bex;
2799
1985
  ahi = c - (c - bex);
2800
1986
  alo = bex - ahi;
2801
1987
  c = splitter * aey;
2802
1988
  bhi = c - (c - aey);
2803
1989
  blo = aey - bhi;
2804
- bexaey0 = alo * blo - (bexaey1 - ahi * bhi - alo * bhi - ahi * blo);
2805
- _i = aexbey0 - bexaey0;
2806
- bvirt = aexbey0 - _i;
2807
- ab$2[0] = aexbey0 - (_i + bvirt) + (bvirt - bexaey0);
2808
- _j = aexbey1 + _i;
2809
- bvirt = _j - aexbey1;
2810
- _0 = aexbey1 - (_j - bvirt) + (_i - bvirt);
2811
- _i = _0 - bexaey1;
1990
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
1991
+ _i = s0 - t0;
1992
+ bvirt = s0 - _i;
1993
+ ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
1994
+ _j = s1 + _i;
1995
+ bvirt = _j - s1;
1996
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
1997
+ _i = _0 - t1;
2812
1998
  bvirt = _0 - _i;
2813
- ab$2[1] = _0 - (_i + bvirt) + (bvirt - bexaey1);
1999
+ ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
2814
2000
  ab3 = _j + _i;
2815
2001
  bvirt = ab3 - _j;
2816
- ab$2[2] = _j - (ab3 - bvirt) + (_i - bvirt);
2817
- ab$2[3] = ab3;
2818
-
2819
- bexcey1 = bex * cey;
2002
+ ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);
2003
+ ab[3] = ab3;
2004
+ s1 = bex * cey;
2820
2005
  c = splitter * bex;
2821
2006
  ahi = c - (c - bex);
2822
2007
  alo = bex - ahi;
2823
2008
  c = splitter * cey;
2824
2009
  bhi = c - (c - cey);
2825
2010
  blo = cey - bhi;
2826
- bexcey0 = alo * blo - (bexcey1 - ahi * bhi - alo * bhi - ahi * blo);
2827
- cexbey1 = cex * bey;
2011
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
2012
+ t1 = cex * bey;
2828
2013
  c = splitter * cex;
2829
2014
  ahi = c - (c - cex);
2830
2015
  alo = cex - ahi;
2831
2016
  c = splitter * bey;
2832
2017
  bhi = c - (c - bey);
2833
2018
  blo = bey - bhi;
2834
- cexbey0 = alo * blo - (cexbey1 - ahi * bhi - alo * bhi - ahi * blo);
2835
- _i = bexcey0 - cexbey0;
2836
- bvirt = bexcey0 - _i;
2837
- bc$2[0] = bexcey0 - (_i + bvirt) + (bvirt - cexbey0);
2838
- _j = bexcey1 + _i;
2839
- bvirt = _j - bexcey1;
2840
- _0 = bexcey1 - (_j - bvirt) + (_i - bvirt);
2841
- _i = _0 - cexbey1;
2019
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
2020
+ _i = s0 - t0;
2021
+ bvirt = s0 - _i;
2022
+ bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
2023
+ _j = s1 + _i;
2024
+ bvirt = _j - s1;
2025
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
2026
+ _i = _0 - t1;
2842
2027
  bvirt = _0 - _i;
2843
- bc$2[1] = _0 - (_i + bvirt) + (bvirt - cexbey1);
2028
+ bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
2844
2029
  bc3 = _j + _i;
2845
2030
  bvirt = bc3 - _j;
2846
- bc$2[2] = _j - (bc3 - bvirt) + (_i - bvirt);
2847
- bc$2[3] = bc3;
2848
-
2849
- cexdey1 = cex * dey;
2031
+ bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);
2032
+ bc[3] = bc3;
2033
+ s1 = cex * dey;
2850
2034
  c = splitter * cex;
2851
2035
  ahi = c - (c - cex);
2852
2036
  alo = cex - ahi;
2853
2037
  c = splitter * dey;
2854
2038
  bhi = c - (c - dey);
2855
2039
  blo = dey - bhi;
2856
- cexdey0 = alo * blo - (cexdey1 - ahi * bhi - alo * bhi - ahi * blo);
2857
- dexcey1 = dex * cey;
2040
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
2041
+ t1 = dex * cey;
2858
2042
  c = splitter * dex;
2859
2043
  ahi = c - (c - dex);
2860
2044
  alo = dex - ahi;
2861
2045
  c = splitter * cey;
2862
2046
  bhi = c - (c - cey);
2863
2047
  blo = cey - bhi;
2864
- dexcey0 = alo * blo - (dexcey1 - ahi * bhi - alo * bhi - ahi * blo);
2865
- _i = cexdey0 - dexcey0;
2866
- bvirt = cexdey0 - _i;
2867
- cd[0] = cexdey0 - (_i + bvirt) + (bvirt - dexcey0);
2868
- _j = cexdey1 + _i;
2869
- bvirt = _j - cexdey1;
2870
- _0 = cexdey1 - (_j - bvirt) + (_i - bvirt);
2871
- _i = _0 - dexcey1;
2048
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
2049
+ _i = s0 - t0;
2050
+ bvirt = s0 - _i;
2051
+ cd[0] = s0 - (_i + bvirt) + (bvirt - t0);
2052
+ _j = s1 + _i;
2053
+ bvirt = _j - s1;
2054
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
2055
+ _i = _0 - t1;
2872
2056
  bvirt = _0 - _i;
2873
- cd[1] = _0 - (_i + bvirt) + (bvirt - dexcey1);
2057
+ cd[1] = _0 - (_i + bvirt) + (bvirt - t1);
2874
2058
  cd3 = _j + _i;
2875
2059
  bvirt = cd3 - _j;
2876
2060
  cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);
2877
2061
  cd[3] = cd3;
2878
-
2879
- dexaey1 = dex * aey;
2062
+ s1 = dex * aey;
2880
2063
  c = splitter * dex;
2881
2064
  ahi = c - (c - dex);
2882
2065
  alo = dex - ahi;
2883
2066
  c = splitter * aey;
2884
2067
  bhi = c - (c - aey);
2885
2068
  blo = aey - bhi;
2886
- dexaey0 = alo * blo - (dexaey1 - ahi * bhi - alo * bhi - ahi * blo);
2887
- aexdey1 = aex * dey;
2069
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
2070
+ t1 = aex * dey;
2888
2071
  c = splitter * aex;
2889
2072
  ahi = c - (c - aex);
2890
2073
  alo = aex - ahi;
2891
2074
  c = splitter * dey;
2892
2075
  bhi = c - (c - dey);
2893
2076
  blo = dey - bhi;
2894
- aexdey0 = alo * blo - (aexdey1 - ahi * bhi - alo * bhi - ahi * blo);
2895
- _i = dexaey0 - aexdey0;
2896
- bvirt = dexaey0 - _i;
2897
- da[0] = dexaey0 - (_i + bvirt) + (bvirt - aexdey0);
2898
- _j = dexaey1 + _i;
2899
- bvirt = _j - dexaey1;
2900
- _0 = dexaey1 - (_j - bvirt) + (_i - bvirt);
2901
- _i = _0 - aexdey1;
2077
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
2078
+ _i = s0 - t0;
2079
+ bvirt = s0 - _i;
2080
+ da[0] = s0 - (_i + bvirt) + (bvirt - t0);
2081
+ _j = s1 + _i;
2082
+ bvirt = _j - s1;
2083
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
2084
+ _i = _0 - t1;
2902
2085
  bvirt = _0 - _i;
2903
- da[1] = _0 - (_i + bvirt) + (bvirt - aexdey1);
2086
+ da[1] = _0 - (_i + bvirt) + (bvirt - t1);
2904
2087
  da3 = _j + _i;
2905
2088
  bvirt = da3 - _j;
2906
2089
  da[2] = _j - (da3 - bvirt) + (_i - bvirt);
2907
2090
  da[3] = da3;
2908
-
2909
- aexcey1 = aex * cey;
2091
+ s1 = aex * cey;
2910
2092
  c = splitter * aex;
2911
2093
  ahi = c - (c - aex);
2912
2094
  alo = aex - ahi;
2913
2095
  c = splitter * cey;
2914
2096
  bhi = c - (c - cey);
2915
2097
  blo = cey - bhi;
2916
- aexcey0 = alo * blo - (aexcey1 - ahi * bhi - alo * bhi - ahi * blo);
2917
- cexaey1 = cex * aey;
2098
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
2099
+ t1 = cex * aey;
2918
2100
  c = splitter * cex;
2919
2101
  ahi = c - (c - cex);
2920
2102
  alo = cex - ahi;
2921
2103
  c = splitter * aey;
2922
2104
  bhi = c - (c - aey);
2923
2105
  blo = aey - bhi;
2924
- cexaey0 = alo * blo - (cexaey1 - ahi * bhi - alo * bhi - ahi * blo);
2925
- _i = aexcey0 - cexaey0;
2926
- bvirt = aexcey0 - _i;
2927
- ac[0] = aexcey0 - (_i + bvirt) + (bvirt - cexaey0);
2928
- _j = aexcey1 + _i;
2929
- bvirt = _j - aexcey1;
2930
- _0 = aexcey1 - (_j - bvirt) + (_i - bvirt);
2931
- _i = _0 - cexaey1;
2106
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
2107
+ _i = s0 - t0;
2108
+ bvirt = s0 - _i;
2109
+ ac[0] = s0 - (_i + bvirt) + (bvirt - t0);
2110
+ _j = s1 + _i;
2111
+ bvirt = _j - s1;
2112
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
2113
+ _i = _0 - t1;
2932
2114
  bvirt = _0 - _i;
2933
- ac[1] = _0 - (_i + bvirt) + (bvirt - cexaey1);
2115
+ ac[1] = _0 - (_i + bvirt) + (bvirt - t1);
2934
2116
  ac3 = _j + _i;
2935
2117
  bvirt = ac3 - _j;
2936
2118
  ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);
2937
2119
  ac[3] = ac3;
2938
-
2939
- bexdey1 = bex * dey;
2120
+ s1 = bex * dey;
2940
2121
  c = splitter * bex;
2941
2122
  ahi = c - (c - bex);
2942
2123
  alo = bex - ahi;
2943
2124
  c = splitter * dey;
2944
2125
  bhi = c - (c - dey);
2945
2126
  blo = dey - bhi;
2946
- bexdey0 = alo * blo - (bexdey1 - ahi * bhi - alo * bhi - ahi * blo);
2947
- dexbey1 = dex * bey;
2127
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
2128
+ t1 = dex * bey;
2948
2129
  c = splitter * dex;
2949
2130
  ahi = c - (c - dex);
2950
2131
  alo = dex - ahi;
2951
2132
  c = splitter * bey;
2952
2133
  bhi = c - (c - bey);
2953
2134
  blo = bey - bhi;
2954
- dexbey0 = alo * blo - (dexbey1 - ahi * bhi - alo * bhi - ahi * blo);
2955
- _i = bexdey0 - dexbey0;
2956
- bvirt = bexdey0 - _i;
2957
- bd[0] = bexdey0 - (_i + bvirt) + (bvirt - dexbey0);
2958
- _j = bexdey1 + _i;
2959
- bvirt = _j - bexdey1;
2960
- _0 = bexdey1 - (_j - bvirt) + (_i - bvirt);
2961
- _i = _0 - dexbey1;
2135
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
2136
+ _i = s0 - t0;
2137
+ bvirt = s0 - _i;
2138
+ bd[0] = s0 - (_i + bvirt) + (bvirt - t0);
2139
+ _j = s1 + _i;
2140
+ bvirt = _j - s1;
2141
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
2142
+ _i = _0 - t1;
2962
2143
  bvirt = _0 - _i;
2963
- bd[1] = _0 - (_i + bvirt) + (bvirt - dexbey1);
2144
+ bd[1] = _0 - (_i + bvirt) + (bvirt - t1);
2964
2145
  bd3 = _j + _i;
2965
2146
  bvirt = bd3 - _j;
2966
2147
  bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);
2967
2148
  bd[3] = bd3;
2968
2149
 
2969
- temp8alen = scale_expansion_zeroelim(4, cd, bez, temp8a);
2970
- temp8blen = scale_expansion_zeroelim(4, bd, -cez, temp8b);
2971
- temp8clen = scale_expansion_zeroelim(4, bc$2, dez, temp8c);
2972
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
2973
- temp24len = fast_expansion_sum_zeroelim(temp8clen, temp8c, temp16len, temp16, temp24);
2974
- temp48len = scale_expansion_zeroelim(temp24len, temp24, aex, temp48$1);
2975
- xlen = scale_expansion_zeroelim(temp48len, temp48$1, -aex, xdet);
2976
- temp48len = scale_expansion_zeroelim(temp24len, temp24, aey, temp48$1);
2977
- ylen = scale_expansion_zeroelim(temp48len, temp48$1, -aey, ydet);
2978
- temp48len = scale_expansion_zeroelim(temp24len, temp24, aez, temp48$1);
2979
- zlen = scale_expansion_zeroelim(temp48len, temp48$1, -aez, zdet);
2980
- xylen = fast_expansion_sum_zeroelim(xlen, xdet, ylen, ydet, xydet);
2981
- const alen = fast_expansion_sum_zeroelim(xylen, xydet, zlen, zdet, adet$2);
2982
-
2983
- temp8alen = scale_expansion_zeroelim(4, da, cez, temp8a);
2984
- temp8blen = scale_expansion_zeroelim(4, ac, dez, temp8b);
2985
- temp8clen = scale_expansion_zeroelim(4, cd, aez, temp8c);
2986
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
2987
- temp24len = fast_expansion_sum_zeroelim(temp8clen, temp8c, temp16len, temp16, temp24);
2988
- temp48len = scale_expansion_zeroelim(temp24len, temp24, bex, temp48$1);
2989
- xlen = scale_expansion_zeroelim(temp48len, temp48$1, bex, xdet);
2990
- temp48len = scale_expansion_zeroelim(temp24len, temp24, bey, temp48$1);
2991
- ylen = scale_expansion_zeroelim(temp48len, temp48$1, bey, ydet);
2992
- temp48len = scale_expansion_zeroelim(temp24len, temp24, bez, temp48$1);
2993
- zlen = scale_expansion_zeroelim(temp48len, temp48$1, bez, zdet);
2994
- xylen = fast_expansion_sum_zeroelim(xlen, xdet, ylen, ydet, xydet);
2995
- const blen = fast_expansion_sum_zeroelim(xylen, xydet, zlen, zdet, bdet$2);
2996
-
2997
- temp8alen = scale_expansion_zeroelim(4, ab$2, dez, temp8a);
2998
- temp8blen = scale_expansion_zeroelim(4, bd, aez, temp8b);
2999
- temp8clen = scale_expansion_zeroelim(4, da, bez, temp8c);
3000
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
3001
- temp24len = fast_expansion_sum_zeroelim(temp8clen, temp8c, temp16len, temp16, temp24);
3002
- temp48len = scale_expansion_zeroelim(temp24len, temp24, cex, temp48$1);
3003
- xlen = scale_expansion_zeroelim(temp48len, temp48$1, -cex, xdet);
3004
- temp48len = scale_expansion_zeroelim(temp24len, temp24, cey, temp48$1);
3005
- ylen = scale_expansion_zeroelim(temp48len, temp48$1, -cey, ydet);
3006
- temp48len = scale_expansion_zeroelim(temp24len, temp24, cez, temp48$1);
3007
- zlen = scale_expansion_zeroelim(temp48len, temp48$1, -cez, zdet);
3008
- xylen = fast_expansion_sum_zeroelim(xlen, xdet, ylen, ydet, xydet);
3009
- const clen = fast_expansion_sum_zeroelim(xylen, xydet, zlen, zdet, cdet$2);
3010
-
3011
- temp8alen = scale_expansion_zeroelim(4, bc$2, aez, temp8a);
3012
- temp8blen = scale_expansion_zeroelim(4, ac, -bez, temp8b);
3013
- temp8clen = scale_expansion_zeroelim(4, ab$2, cez, temp8c);
3014
- temp16len = fast_expansion_sum_zeroelim(temp8alen, temp8a, temp8blen, temp8b, temp16);
3015
- temp24len = fast_expansion_sum_zeroelim(temp8clen, temp8c, temp16len, temp16, temp24);
3016
- temp48len = scale_expansion_zeroelim(temp24len, temp24, dex, temp48$1);
3017
- xlen = scale_expansion_zeroelim(temp48len, temp48$1, dex, xdet);
3018
- temp48len = scale_expansion_zeroelim(temp24len, temp24, dey, temp48$1);
3019
- ylen = scale_expansion_zeroelim(temp48len, temp48$1, dey, ydet);
3020
- temp48len = scale_expansion_zeroelim(temp24len, temp24, dez, temp48$1);
3021
- zlen = scale_expansion_zeroelim(temp48len, temp48$1, dez, zdet);
3022
- xylen = fast_expansion_sum_zeroelim(xlen, xdet, ylen, ydet, xydet);
3023
- const dlen = fast_expansion_sum_zeroelim(xylen, xydet, zlen, zdet, ddet);
3024
-
3025
- const ablen = fast_expansion_sum_zeroelim(alen, adet$2, blen, bdet$2, abdet$2);
3026
- const cdlen = fast_expansion_sum_zeroelim(clen, cdet$2, dlen, ddet, cddet);
3027
- const finlength = fast_expansion_sum_zeroelim(ablen, abdet$2, cdlen, cddet, fin1$2);
3028
-
3029
- let det = estimate(finlength, fin1$2);
2150
+ const finlen = sum(
2151
+ sum(
2152
+ negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,
2153
+ liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,
2154
+ sum(
2155
+ negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,
2156
+ liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);
2157
+
2158
+ let det = estimate(finlen, fin);
3030
2159
  let errbound = isperrboundB * permanent;
3031
2160
  if (det >= errbound || -det >= errbound) {
3032
2161
  return det;
@@ -3116,7 +2245,6 @@ function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {
3116
2245
  const dexaey = dex * aey;
3117
2246
  const aexdey = aex * dey;
3118
2247
  const da = dexaey - aexdey;
3119
-
3120
2248
  const aexcey = aex * cey;
3121
2249
  const cexaey = cex * aey;
3122
2250
  const ac = aexcey - cexaey;
@@ -3183,7 +2311,6 @@ function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz
3183
2311
  const bc = bex * cey - cex * bey;
3184
2312
  const cd = cex * dey - dex * cey;
3185
2313
  const da = dex * aey - aex * dey;
3186
-
3187
2314
  const ac = aex * cey - cex * aey;
3188
2315
  const bd = bex * dey - dex * bey;
3189
2316
 
@@ -3211,4 +2338,4 @@ exports.orient3dfast = orient3dfast;
3211
2338
 
3212
2339
  Object.defineProperty(exports, '__esModule', { value: true });
3213
2340
 
3214
- }));
2341
+ })));