robust-predicates 2.0.2 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/incircle.js +388 -550
- package/esm/insphere.js +307 -488
- package/esm/orient2d.js +32 -53
- package/esm/orient3d.js +265 -798
- package/esm/util.js +23 -11
- package/index.d.ts +49 -0
- package/package.json +27 -21
- package/umd/incircle.js +408 -560
- package/umd/incircle.min.js +1 -1
- package/umd/insphere.js +330 -496
- package/umd/insphere.min.js +1 -1
- package/umd/orient2d.js +38 -55
- package/umd/orient2d.min.js +1 -1
- package/umd/orient3d.js +281 -808
- package/umd/orient3d.min.js +1 -1
- package/umd/predicates.js +1056 -1929
- package/umd/predicates.min.js +1 -1
package/umd/incircle.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
4
|
-
(global = global || self, factory(global.predicates = {}));
|
|
5
|
-
}(this, function (exports) { 'use strict';
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.predicates = {}));
|
|
5
|
+
}(this, (function (exports) { 'use strict';
|
|
6
6
|
|
|
7
7
|
const epsilon = 1.1102230246251565e-16;
|
|
8
8
|
const splitter = 134217729;
|
|
9
9
|
const resulterrbound = (3 + 8 * epsilon) * epsilon;
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
// fast_expansion_sum_zeroelim routine from oritinal code
|
|
12
|
+
function sum(elen, e, flen, f, h) {
|
|
12
13
|
let Q, Qnew, hh, bvirt;
|
|
13
14
|
let enow = e[0];
|
|
14
15
|
let fnow = f[0];
|
|
@@ -22,7 +23,7 @@ function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
|
|
|
22
23
|
fnow = f[++findex];
|
|
23
24
|
}
|
|
24
25
|
let hindex = 0;
|
|
25
|
-
if (
|
|
26
|
+
if (eindex < elen && findex < flen) {
|
|
26
27
|
if ((fnow > enow) === (fnow > -enow)) {
|
|
27
28
|
Qnew = enow + Q;
|
|
28
29
|
hh = Q - (Qnew - enow);
|
|
@@ -36,7 +37,7 @@ function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
|
|
|
36
37
|
if (hh !== 0) {
|
|
37
38
|
h[hindex++] = hh;
|
|
38
39
|
}
|
|
39
|
-
while (
|
|
40
|
+
while (eindex < elen && findex < flen) {
|
|
40
41
|
if ((fnow > enow) === (fnow > -enow)) {
|
|
41
42
|
Qnew = Q + enow;
|
|
42
43
|
bvirt = Qnew - Q;
|
|
@@ -80,24 +81,30 @@ function fast_expansion_sum_zeroelim(elen, e, flen, f, h) {
|
|
|
80
81
|
return hindex;
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
function
|
|
84
|
+
function sum_three(alen, a, blen, b, clen, c, tmp, out) {
|
|
85
|
+
return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// scale_expansion_zeroelim routine from oritinal code
|
|
89
|
+
function scale(elen, e, b, h) {
|
|
84
90
|
let Q, sum, hh, product1, product0;
|
|
85
91
|
let bvirt, c, ahi, alo, bhi, blo;
|
|
86
92
|
|
|
87
93
|
c = splitter * b;
|
|
88
94
|
bhi = c - (c - b);
|
|
89
95
|
blo = b - bhi;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
96
|
+
let enow = e[0];
|
|
97
|
+
Q = enow * b;
|
|
98
|
+
c = splitter * enow;
|
|
99
|
+
ahi = c - (c - enow);
|
|
100
|
+
alo = enow - ahi;
|
|
94
101
|
hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);
|
|
95
102
|
let hindex = 0;
|
|
96
103
|
if (hh !== 0) {
|
|
97
104
|
h[hindex++] = hh;
|
|
98
105
|
}
|
|
99
|
-
for (let
|
|
100
|
-
|
|
106
|
+
for (let i = 1; i < elen; i++) {
|
|
107
|
+
enow = e[i];
|
|
101
108
|
product1 = enow * b;
|
|
102
109
|
c = splitter * enow;
|
|
103
110
|
ahi = c - (c - enow);
|
|
@@ -115,7 +122,7 @@ function scale_expansion_zeroelim(elen, e, b, h) {
|
|
|
115
122
|
h[hindex++] = hh;
|
|
116
123
|
}
|
|
117
124
|
}
|
|
118
|
-
if (Q !== 0
|
|
125
|
+
if (Q !== 0 || hindex === 0) {
|
|
119
126
|
h[hindex++] = Q;
|
|
120
127
|
}
|
|
121
128
|
return hindex;
|
|
@@ -138,67 +145,17 @@ const iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;
|
|
|
138
145
|
const bc = vec(4);
|
|
139
146
|
const ca = vec(4);
|
|
140
147
|
const ab = vec(4);
|
|
141
|
-
const axbc = vec(8);
|
|
142
|
-
const axxbc = vec(16);
|
|
143
|
-
const aybc = vec(8);
|
|
144
|
-
const ayybc = vec(16);
|
|
145
|
-
const adet = vec(32);
|
|
146
|
-
const bxca = vec(8);
|
|
147
|
-
const bxxca = vec(16);
|
|
148
|
-
const byca = vec(8);
|
|
149
|
-
const byyca = vec(16);
|
|
150
|
-
const bdet = vec(32);
|
|
151
|
-
const cxab = vec(8);
|
|
152
|
-
const cxxab = vec(16);
|
|
153
|
-
const cyab = vec(8);
|
|
154
|
-
const cyyab = vec(16);
|
|
155
|
-
const cdet = vec(32);
|
|
156
|
-
const abdet = vec(64);
|
|
157
|
-
const fin1 = vec(1152);
|
|
158
|
-
const fin2 = vec(1152);
|
|
159
148
|
const aa = vec(4);
|
|
160
149
|
const bb = vec(4);
|
|
161
150
|
const cc = vec(4);
|
|
162
151
|
const u = vec(4);
|
|
163
152
|
const v = vec(4);
|
|
164
|
-
const temp8 = vec(8);
|
|
165
|
-
const temp16a = vec(16);
|
|
166
|
-
const temp16b = vec(16);
|
|
167
|
-
const temp16c = vec(16);
|
|
168
|
-
const temp32a = vec(32);
|
|
169
|
-
const temp32b = vec(32);
|
|
170
|
-
const temp48 = vec(48);
|
|
171
|
-
const temp64 = vec(64);
|
|
172
|
-
const axtbb = vec(8);
|
|
173
|
-
const axtcc = vec(8);
|
|
174
|
-
const aytbb = vec(8);
|
|
175
|
-
const aytcc = vec(8);
|
|
176
|
-
const bxtaa = vec(8);
|
|
177
|
-
const bxtcc = vec(8);
|
|
178
|
-
const bytaa = vec(8);
|
|
179
|
-
const bytcc = vec(8);
|
|
180
|
-
const cxtaa = vec(8);
|
|
181
|
-
const cxtbb = vec(8);
|
|
182
|
-
const cytaa = vec(8);
|
|
183
|
-
const cytbb = vec(8);
|
|
184
153
|
const axtbc = vec(8);
|
|
185
154
|
const aytbc = vec(8);
|
|
186
155
|
const bxtca = vec(8);
|
|
187
156
|
const bytca = vec(8);
|
|
188
157
|
const cxtab = vec(8);
|
|
189
158
|
const cytab = vec(8);
|
|
190
|
-
const axtbct = vec(16);
|
|
191
|
-
const aytbct = vec(16);
|
|
192
|
-
const bxtcat = vec(16);
|
|
193
|
-
const bytcat = vec(16);
|
|
194
|
-
const cxtabt = vec(16);
|
|
195
|
-
const cytabt = vec(16);
|
|
196
|
-
const axtbctt = vec(8);
|
|
197
|
-
const aytbctt = vec(8);
|
|
198
|
-
const bxtcatt = vec(8);
|
|
199
|
-
const bytcatt = vec(8);
|
|
200
|
-
const cxtabtt = vec(8);
|
|
201
|
-
const cytabtt = vec(8);
|
|
202
159
|
const abt = vec(8);
|
|
203
160
|
const bct = vec(8);
|
|
204
161
|
const cat = vec(8);
|
|
@@ -206,28 +163,33 @@ const abtt = vec(4);
|
|
|
206
163
|
const bctt = vec(4);
|
|
207
164
|
const catt = vec(4);
|
|
208
165
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
166
|
+
const _8 = vec(8);
|
|
167
|
+
const _16 = vec(16);
|
|
168
|
+
const _16b = vec(16);
|
|
169
|
+
const _16c = vec(16);
|
|
170
|
+
const _32 = vec(32);
|
|
171
|
+
const _32b = vec(32);
|
|
172
|
+
const _48 = vec(48);
|
|
173
|
+
const _64 = vec(64);
|
|
174
|
+
|
|
175
|
+
let fin = vec(1152);
|
|
176
|
+
let fin2 = vec(1152);
|
|
177
|
+
|
|
178
|
+
function finadd(finlen, a, alen) {
|
|
179
|
+
finlen = sum(finlen, fin, a, alen, fin2);
|
|
180
|
+
const tmp = fin; fin = fin2; fin2 = tmp;
|
|
181
|
+
return finlen;
|
|
182
|
+
}
|
|
214
183
|
|
|
184
|
+
function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
185
|
+
let finlen;
|
|
215
186
|
let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;
|
|
216
|
-
let adxadx1, adyady1, bdxbdx1, bdybdy1, cdxcdx1, cdycdy1;
|
|
217
|
-
let adxadx0, adyady0, bdxbdx0, bdybdy0, cdxcdx0, cdycdy0;
|
|
218
|
-
let aa3, bb3, cc3;
|
|
219
|
-
let ti1, tj1;
|
|
220
|
-
let ti0, tj0;
|
|
221
|
-
let u3, v3;
|
|
222
|
-
let temp8len, temp16alen, temp16blen, temp16clen;
|
|
223
|
-
let temp32alen, temp32blen, temp48len, temp64len;
|
|
224
187
|
let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;
|
|
225
188
|
let abtlen, bctlen, catlen;
|
|
226
189
|
let abttlen, bcttlen, cattlen;
|
|
227
|
-
let
|
|
228
|
-
let negate;
|
|
190
|
+
let n1, n0;
|
|
229
191
|
|
|
230
|
-
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0;
|
|
192
|
+
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
|
|
231
193
|
|
|
232
194
|
const adx = ax - dx;
|
|
233
195
|
const bdx = bx - dx;
|
|
@@ -236,115 +198,107 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
236
198
|
const bdy = by - dy;
|
|
237
199
|
const cdy = cy - dy;
|
|
238
200
|
|
|
239
|
-
|
|
201
|
+
s1 = bdx * cdy;
|
|
240
202
|
c = splitter * bdx;
|
|
241
203
|
ahi = c - (c - bdx);
|
|
242
204
|
alo = bdx - ahi;
|
|
243
205
|
c = splitter * cdy;
|
|
244
206
|
bhi = c - (c - cdy);
|
|
245
207
|
blo = cdy - bhi;
|
|
246
|
-
|
|
247
|
-
|
|
208
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
209
|
+
t1 = cdx * bdy;
|
|
248
210
|
c = splitter * cdx;
|
|
249
211
|
ahi = c - (c - cdx);
|
|
250
212
|
alo = cdx - ahi;
|
|
251
213
|
c = splitter * bdy;
|
|
252
214
|
bhi = c - (c - bdy);
|
|
253
215
|
blo = bdy - bhi;
|
|
254
|
-
|
|
255
|
-
_i =
|
|
256
|
-
bvirt =
|
|
257
|
-
bc[0] =
|
|
258
|
-
_j =
|
|
259
|
-
bvirt = _j -
|
|
260
|
-
_0 =
|
|
261
|
-
_i = _0 -
|
|
216
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
217
|
+
_i = s0 - t0;
|
|
218
|
+
bvirt = s0 - _i;
|
|
219
|
+
bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
220
|
+
_j = s1 + _i;
|
|
221
|
+
bvirt = _j - s1;
|
|
222
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
223
|
+
_i = _0 - t1;
|
|
262
224
|
bvirt = _0 - _i;
|
|
263
|
-
bc[1] = _0 - (_i + bvirt) + (bvirt -
|
|
264
|
-
|
|
265
|
-
bvirt =
|
|
266
|
-
bc[2] = _j - (
|
|
267
|
-
bc[3] =
|
|
268
|
-
|
|
269
|
-
const axxbclen = scale_expansion_zeroelim(axbclen, axbc, adx, axxbc);
|
|
270
|
-
const aybclen = scale_expansion_zeroelim(4, bc, ady, aybc);
|
|
271
|
-
const ayybclen = scale_expansion_zeroelim(aybclen, aybc, ady, ayybc);
|
|
272
|
-
const alen = fast_expansion_sum_zeroelim(axxbclen, axxbc, ayybclen, ayybc, adet);
|
|
273
|
-
|
|
274
|
-
cdxady1 = cdx * ady;
|
|
225
|
+
bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
226
|
+
u3 = _j + _i;
|
|
227
|
+
bvirt = u3 - _j;
|
|
228
|
+
bc[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
229
|
+
bc[3] = u3;
|
|
230
|
+
s1 = cdx * ady;
|
|
275
231
|
c = splitter * cdx;
|
|
276
232
|
ahi = c - (c - cdx);
|
|
277
233
|
alo = cdx - ahi;
|
|
278
234
|
c = splitter * ady;
|
|
279
235
|
bhi = c - (c - ady);
|
|
280
236
|
blo = ady - bhi;
|
|
281
|
-
|
|
282
|
-
|
|
237
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
238
|
+
t1 = adx * cdy;
|
|
283
239
|
c = splitter * adx;
|
|
284
240
|
ahi = c - (c - adx);
|
|
285
241
|
alo = adx - ahi;
|
|
286
242
|
c = splitter * cdy;
|
|
287
243
|
bhi = c - (c - cdy);
|
|
288
244
|
blo = cdy - bhi;
|
|
289
|
-
|
|
290
|
-
_i =
|
|
291
|
-
bvirt =
|
|
292
|
-
ca[0] =
|
|
293
|
-
_j =
|
|
294
|
-
bvirt = _j -
|
|
295
|
-
_0 =
|
|
296
|
-
_i = _0 -
|
|
245
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
246
|
+
_i = s0 - t0;
|
|
247
|
+
bvirt = s0 - _i;
|
|
248
|
+
ca[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
249
|
+
_j = s1 + _i;
|
|
250
|
+
bvirt = _j - s1;
|
|
251
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
252
|
+
_i = _0 - t1;
|
|
297
253
|
bvirt = _0 - _i;
|
|
298
|
-
ca[1] = _0 - (_i + bvirt) + (bvirt -
|
|
299
|
-
|
|
300
|
-
bvirt =
|
|
301
|
-
ca[2] = _j - (
|
|
302
|
-
ca[3] =
|
|
303
|
-
|
|
304
|
-
const bxxcalen = scale_expansion_zeroelim(bxcalen, bxca, bdx, bxxca);
|
|
305
|
-
const bycalen = scale_expansion_zeroelim(4, ca, bdy, byca);
|
|
306
|
-
const byycalen = scale_expansion_zeroelim(bycalen, byca, bdy, byyca);
|
|
307
|
-
const blen = fast_expansion_sum_zeroelim(bxxcalen, bxxca, byycalen, byyca, bdet);
|
|
308
|
-
|
|
309
|
-
adxbdy1 = adx * bdy;
|
|
254
|
+
ca[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
255
|
+
u3 = _j + _i;
|
|
256
|
+
bvirt = u3 - _j;
|
|
257
|
+
ca[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
258
|
+
ca[3] = u3;
|
|
259
|
+
s1 = adx * bdy;
|
|
310
260
|
c = splitter * adx;
|
|
311
261
|
ahi = c - (c - adx);
|
|
312
262
|
alo = adx - ahi;
|
|
313
263
|
c = splitter * bdy;
|
|
314
264
|
bhi = c - (c - bdy);
|
|
315
265
|
blo = bdy - bhi;
|
|
316
|
-
|
|
317
|
-
|
|
266
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
267
|
+
t1 = bdx * ady;
|
|
318
268
|
c = splitter * bdx;
|
|
319
269
|
ahi = c - (c - bdx);
|
|
320
270
|
alo = bdx - ahi;
|
|
321
271
|
c = splitter * ady;
|
|
322
272
|
bhi = c - (c - ady);
|
|
323
273
|
blo = ady - bhi;
|
|
324
|
-
|
|
325
|
-
_i =
|
|
326
|
-
bvirt =
|
|
327
|
-
ab[0] =
|
|
328
|
-
_j =
|
|
329
|
-
bvirt = _j -
|
|
330
|
-
_0 =
|
|
331
|
-
_i = _0 -
|
|
274
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
275
|
+
_i = s0 - t0;
|
|
276
|
+
bvirt = s0 - _i;
|
|
277
|
+
ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
278
|
+
_j = s1 + _i;
|
|
279
|
+
bvirt = _j - s1;
|
|
280
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
281
|
+
_i = _0 - t1;
|
|
332
282
|
bvirt = _0 - _i;
|
|
333
|
-
ab[1] = _0 - (_i + bvirt) + (bvirt -
|
|
334
|
-
|
|
335
|
-
bvirt =
|
|
336
|
-
ab[2] = _j - (
|
|
337
|
-
ab[3] =
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
283
|
+
ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
284
|
+
u3 = _j + _i;
|
|
285
|
+
bvirt = u3 - _j;
|
|
286
|
+
ab[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
287
|
+
ab[3] = u3;
|
|
288
|
+
|
|
289
|
+
finlen = sum(
|
|
290
|
+
sum(
|
|
291
|
+
sum(
|
|
292
|
+
scale(scale(4, bc, adx, _8), _8, adx, _16), _16,
|
|
293
|
+
scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32,
|
|
294
|
+
sum(
|
|
295
|
+
scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16,
|
|
296
|
+
scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64,
|
|
297
|
+
sum(
|
|
298
|
+
scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16,
|
|
299
|
+
scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);
|
|
300
|
+
|
|
301
|
+
let det = estimate(finlen, fin);
|
|
348
302
|
let errbound = iccerrboundB * permanent;
|
|
349
303
|
if (det >= errbound || -det >= errbound) {
|
|
350
304
|
return det;
|
|
@@ -378,269 +332,215 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
378
332
|
return det;
|
|
379
333
|
}
|
|
380
334
|
|
|
381
|
-
finnow = fin1;
|
|
382
|
-
finother = fin2;
|
|
383
|
-
|
|
384
335
|
if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {
|
|
385
|
-
|
|
336
|
+
s1 = adx * adx;
|
|
386
337
|
c = splitter * adx;
|
|
387
338
|
ahi = c - (c - adx);
|
|
388
339
|
alo = adx - ahi;
|
|
389
|
-
|
|
390
|
-
|
|
340
|
+
s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);
|
|
341
|
+
t1 = ady * ady;
|
|
391
342
|
c = splitter * ady;
|
|
392
343
|
ahi = c - (c - ady);
|
|
393
344
|
alo = ady - ahi;
|
|
394
|
-
|
|
395
|
-
_i =
|
|
396
|
-
bvirt = _i -
|
|
397
|
-
aa[0] =
|
|
398
|
-
_j =
|
|
399
|
-
bvirt = _j -
|
|
400
|
-
_0 =
|
|
401
|
-
_i = _0 +
|
|
345
|
+
t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);
|
|
346
|
+
_i = s0 + t0;
|
|
347
|
+
bvirt = _i - s0;
|
|
348
|
+
aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);
|
|
349
|
+
_j = s1 + _i;
|
|
350
|
+
bvirt = _j - s1;
|
|
351
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
352
|
+
_i = _0 + t1;
|
|
402
353
|
bvirt = _i - _0;
|
|
403
|
-
aa[1] = _0 - (_i - bvirt) + (
|
|
404
|
-
|
|
405
|
-
bvirt =
|
|
406
|
-
aa[2] = _j - (
|
|
407
|
-
aa[3] =
|
|
354
|
+
aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);
|
|
355
|
+
u3 = _j + _i;
|
|
356
|
+
bvirt = u3 - _j;
|
|
357
|
+
aa[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
358
|
+
aa[3] = u3;
|
|
408
359
|
}
|
|
409
360
|
if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {
|
|
410
|
-
|
|
361
|
+
s1 = bdx * bdx;
|
|
411
362
|
c = splitter * bdx;
|
|
412
363
|
ahi = c - (c - bdx);
|
|
413
364
|
alo = bdx - ahi;
|
|
414
|
-
|
|
415
|
-
|
|
365
|
+
s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);
|
|
366
|
+
t1 = bdy * bdy;
|
|
416
367
|
c = splitter * bdy;
|
|
417
368
|
ahi = c - (c - bdy);
|
|
418
369
|
alo = bdy - ahi;
|
|
419
|
-
|
|
420
|
-
_i =
|
|
421
|
-
bvirt = _i -
|
|
422
|
-
bb[0] =
|
|
423
|
-
_j =
|
|
424
|
-
bvirt = _j -
|
|
425
|
-
_0 =
|
|
426
|
-
_i = _0 +
|
|
370
|
+
t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);
|
|
371
|
+
_i = s0 + t0;
|
|
372
|
+
bvirt = _i - s0;
|
|
373
|
+
bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);
|
|
374
|
+
_j = s1 + _i;
|
|
375
|
+
bvirt = _j - s1;
|
|
376
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
377
|
+
_i = _0 + t1;
|
|
427
378
|
bvirt = _i - _0;
|
|
428
|
-
bb[1] = _0 - (_i - bvirt) + (
|
|
429
|
-
|
|
430
|
-
bvirt =
|
|
431
|
-
bb[2] = _j - (
|
|
432
|
-
bb[3] =
|
|
379
|
+
bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);
|
|
380
|
+
u3 = _j + _i;
|
|
381
|
+
bvirt = u3 - _j;
|
|
382
|
+
bb[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
383
|
+
bb[3] = u3;
|
|
433
384
|
}
|
|
434
385
|
if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {
|
|
435
|
-
|
|
386
|
+
s1 = cdx * cdx;
|
|
436
387
|
c = splitter * cdx;
|
|
437
388
|
ahi = c - (c - cdx);
|
|
438
389
|
alo = cdx - ahi;
|
|
439
|
-
|
|
440
|
-
|
|
390
|
+
s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);
|
|
391
|
+
t1 = cdy * cdy;
|
|
441
392
|
c = splitter * cdy;
|
|
442
393
|
ahi = c - (c - cdy);
|
|
443
394
|
alo = cdy - ahi;
|
|
444
|
-
|
|
445
|
-
_i =
|
|
446
|
-
bvirt = _i -
|
|
447
|
-
cc[0] =
|
|
448
|
-
_j =
|
|
449
|
-
bvirt = _j -
|
|
450
|
-
_0 =
|
|
451
|
-
_i = _0 +
|
|
395
|
+
t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);
|
|
396
|
+
_i = s0 + t0;
|
|
397
|
+
bvirt = _i - s0;
|
|
398
|
+
cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);
|
|
399
|
+
_j = s1 + _i;
|
|
400
|
+
bvirt = _j - s1;
|
|
401
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
402
|
+
_i = _0 + t1;
|
|
452
403
|
bvirt = _i - _0;
|
|
453
|
-
cc[1] = _0 - (_i - bvirt) + (
|
|
454
|
-
|
|
455
|
-
bvirt =
|
|
456
|
-
cc[2] = _j - (
|
|
457
|
-
cc[3] =
|
|
404
|
+
cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);
|
|
405
|
+
u3 = _j + _i;
|
|
406
|
+
bvirt = u3 - _j;
|
|
407
|
+
cc[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
408
|
+
cc[3] = u3;
|
|
458
409
|
}
|
|
459
410
|
|
|
460
411
|
if (adxtail !== 0) {
|
|
461
|
-
axtbclen =
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
const axtbblen = scale_expansion_zeroelim(4, bb, adxtail, axtbb);
|
|
468
|
-
temp16clen = scale_expansion_zeroelim(axtbblen, axtbb, -cdy, temp16c);
|
|
469
|
-
|
|
470
|
-
temp32alen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32a);
|
|
471
|
-
temp48len = fast_expansion_sum_zeroelim(temp16clen, temp16c, temp32alen, temp32a, temp48);
|
|
472
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
|
|
473
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
412
|
+
axtbclen = scale(4, bc, adxtail, axtbc);
|
|
413
|
+
finlen = finadd(finlen, sum_three(
|
|
414
|
+
scale(axtbclen, axtbc, 2 * adx, _16), _16,
|
|
415
|
+
scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b,
|
|
416
|
+
scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);
|
|
474
417
|
}
|
|
475
418
|
if (adytail !== 0) {
|
|
476
|
-
aytbclen =
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
const aytcclen = scale_expansion_zeroelim(4, cc, adytail, aytcc);
|
|
483
|
-
temp16clen = scale_expansion_zeroelim(aytcclen, aytcc, -bdx, temp16c);
|
|
484
|
-
|
|
485
|
-
temp32alen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32a);
|
|
486
|
-
temp48len = fast_expansion_sum_zeroelim(temp16clen, temp16c, temp32alen, temp32a, temp48);
|
|
487
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
|
|
488
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
419
|
+
aytbclen = scale(4, bc, adytail, aytbc);
|
|
420
|
+
finlen = finadd(finlen, sum_three(
|
|
421
|
+
scale(aytbclen, aytbc, 2 * ady, _16), _16,
|
|
422
|
+
scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b,
|
|
423
|
+
scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);
|
|
489
424
|
}
|
|
490
425
|
if (bdxtail !== 0) {
|
|
491
|
-
bxtcalen =
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
const bxtcclen = scale_expansion_zeroelim(4, cc, bdxtail, bxtcc);
|
|
498
|
-
temp16clen = scale_expansion_zeroelim(bxtcclen, bxtcc, -ady, temp16c);
|
|
499
|
-
|
|
500
|
-
temp32alen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32a);
|
|
501
|
-
temp48len = fast_expansion_sum_zeroelim(temp16clen, temp16c, temp32alen, temp32a, temp48);
|
|
502
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
|
|
503
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
426
|
+
bxtcalen = scale(4, ca, bdxtail, bxtca);
|
|
427
|
+
finlen = finadd(finlen, sum_three(
|
|
428
|
+
scale(bxtcalen, bxtca, 2 * bdx, _16), _16,
|
|
429
|
+
scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b,
|
|
430
|
+
scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);
|
|
504
431
|
}
|
|
505
432
|
if (bdytail !== 0) {
|
|
506
|
-
bytcalen =
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
const bytaalen = scale_expansion_zeroelim(4, aa, bdytail, bytaa);
|
|
513
|
-
temp16clen = scale_expansion_zeroelim(bytaalen, bytaa, -cdx, temp16c);
|
|
514
|
-
|
|
515
|
-
temp32alen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32a);
|
|
516
|
-
temp48len = fast_expansion_sum_zeroelim(temp16clen, temp16c, temp32alen, temp32a, temp48);
|
|
517
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
|
|
518
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
433
|
+
bytcalen = scale(4, ca, bdytail, bytca);
|
|
434
|
+
finlen = finadd(finlen, sum_three(
|
|
435
|
+
scale(bytcalen, bytca, 2 * bdy, _16), _16,
|
|
436
|
+
scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b,
|
|
437
|
+
scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);
|
|
519
438
|
}
|
|
520
439
|
if (cdxtail !== 0) {
|
|
521
|
-
cxtablen =
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
const cxtaalen = scale_expansion_zeroelim(4, aa, cdxtail, cxtaa);
|
|
528
|
-
temp16clen = scale_expansion_zeroelim(cxtaalen, cxtaa, -bdy, temp16c);
|
|
529
|
-
|
|
530
|
-
temp32alen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32a);
|
|
531
|
-
temp48len = fast_expansion_sum_zeroelim(temp16clen, temp16c, temp32alen, temp32a, temp48);
|
|
532
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
|
|
533
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
440
|
+
cxtablen = scale(4, ab, cdxtail, cxtab);
|
|
441
|
+
finlen = finadd(finlen, sum_three(
|
|
442
|
+
scale(cxtablen, cxtab, 2 * cdx, _16), _16,
|
|
443
|
+
scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b,
|
|
444
|
+
scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);
|
|
534
445
|
}
|
|
535
446
|
if (cdytail !== 0) {
|
|
536
|
-
cytablen =
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
const cytbblen = scale_expansion_zeroelim(4, bb, cdytail, cytbb);
|
|
543
|
-
temp16clen = scale_expansion_zeroelim(cytbblen, cytbb, -adx, temp16c);
|
|
544
|
-
|
|
545
|
-
temp32alen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32a);
|
|
546
|
-
temp48len = fast_expansion_sum_zeroelim(temp16clen, temp16c, temp32alen, temp32a, temp48);
|
|
547
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp48len, temp48, finother);
|
|
548
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
447
|
+
cytablen = scale(4, ab, cdytail, cytab);
|
|
448
|
+
finlen = finadd(finlen, sum_three(
|
|
449
|
+
scale(cytablen, cytab, 2 * cdy, _16), _16,
|
|
450
|
+
scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b,
|
|
451
|
+
scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);
|
|
549
452
|
}
|
|
550
453
|
|
|
551
454
|
if (adxtail !== 0 || adytail !== 0) {
|
|
552
455
|
if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {
|
|
553
|
-
|
|
456
|
+
s1 = bdxtail * cdy;
|
|
554
457
|
c = splitter * bdxtail;
|
|
555
458
|
ahi = c - (c - bdxtail);
|
|
556
459
|
alo = bdxtail - ahi;
|
|
557
460
|
c = splitter * cdy;
|
|
558
461
|
bhi = c - (c - cdy);
|
|
559
462
|
blo = cdy - bhi;
|
|
560
|
-
|
|
561
|
-
|
|
463
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
464
|
+
t1 = bdx * cdytail;
|
|
562
465
|
c = splitter * bdx;
|
|
563
466
|
ahi = c - (c - bdx);
|
|
564
467
|
alo = bdx - ahi;
|
|
565
468
|
c = splitter * cdytail;
|
|
566
469
|
bhi = c - (c - cdytail);
|
|
567
470
|
blo = cdytail - bhi;
|
|
568
|
-
|
|
569
|
-
_i =
|
|
570
|
-
bvirt = _i -
|
|
571
|
-
u[0] =
|
|
572
|
-
_j =
|
|
573
|
-
bvirt = _j -
|
|
574
|
-
_0 =
|
|
575
|
-
_i = _0 +
|
|
471
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
472
|
+
_i = s0 + t0;
|
|
473
|
+
bvirt = _i - s0;
|
|
474
|
+
u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
|
|
475
|
+
_j = s1 + _i;
|
|
476
|
+
bvirt = _j - s1;
|
|
477
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
478
|
+
_i = _0 + t1;
|
|
576
479
|
bvirt = _i - _0;
|
|
577
|
-
u[1] = _0 - (_i - bvirt) + (
|
|
480
|
+
u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
|
|
578
481
|
u3 = _j + _i;
|
|
579
482
|
bvirt = u3 - _j;
|
|
580
483
|
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
581
484
|
u[3] = u3;
|
|
582
|
-
|
|
583
|
-
ti1 = cdxtail * negate;
|
|
485
|
+
s1 = cdxtail * -bdy;
|
|
584
486
|
c = splitter * cdxtail;
|
|
585
487
|
ahi = c - (c - cdxtail);
|
|
586
488
|
alo = cdxtail - ahi;
|
|
587
|
-
c = splitter *
|
|
588
|
-
bhi = c - (c -
|
|
589
|
-
blo =
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
tj1 = cdx * negate;
|
|
489
|
+
c = splitter * -bdy;
|
|
490
|
+
bhi = c - (c - -bdy);
|
|
491
|
+
blo = -bdy - bhi;
|
|
492
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
493
|
+
t1 = cdx * -bdytail;
|
|
593
494
|
c = splitter * cdx;
|
|
594
495
|
ahi = c - (c - cdx);
|
|
595
496
|
alo = cdx - ahi;
|
|
596
|
-
c = splitter *
|
|
597
|
-
bhi = c - (c -
|
|
598
|
-
blo =
|
|
599
|
-
|
|
600
|
-
_i =
|
|
601
|
-
bvirt = _i -
|
|
602
|
-
v[0] =
|
|
603
|
-
_j =
|
|
604
|
-
bvirt = _j -
|
|
605
|
-
_0 =
|
|
606
|
-
_i = _0 +
|
|
497
|
+
c = splitter * -bdytail;
|
|
498
|
+
bhi = c - (c - -bdytail);
|
|
499
|
+
blo = -bdytail - bhi;
|
|
500
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
501
|
+
_i = s0 + t0;
|
|
502
|
+
bvirt = _i - s0;
|
|
503
|
+
v[0] = s0 - (_i - bvirt) + (t0 - bvirt);
|
|
504
|
+
_j = s1 + _i;
|
|
505
|
+
bvirt = _j - s1;
|
|
506
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
507
|
+
_i = _0 + t1;
|
|
607
508
|
bvirt = _i - _0;
|
|
608
|
-
v[1] = _0 - (_i - bvirt) + (
|
|
609
|
-
|
|
610
|
-
bvirt =
|
|
611
|
-
v[2] = _j - (
|
|
612
|
-
v[3] =
|
|
613
|
-
bctlen =
|
|
614
|
-
|
|
615
|
-
ti1 = bdxtail * cdytail;
|
|
509
|
+
v[1] = _0 - (_i - bvirt) + (t1 - bvirt);
|
|
510
|
+
u3 = _j + _i;
|
|
511
|
+
bvirt = u3 - _j;
|
|
512
|
+
v[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
513
|
+
v[3] = u3;
|
|
514
|
+
bctlen = sum(4, u, 4, v, bct);
|
|
515
|
+
s1 = bdxtail * cdytail;
|
|
616
516
|
c = splitter * bdxtail;
|
|
617
517
|
ahi = c - (c - bdxtail);
|
|
618
518
|
alo = bdxtail - ahi;
|
|
619
519
|
c = splitter * cdytail;
|
|
620
520
|
bhi = c - (c - cdytail);
|
|
621
521
|
blo = cdytail - bhi;
|
|
622
|
-
|
|
623
|
-
|
|
522
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
523
|
+
t1 = cdxtail * bdytail;
|
|
624
524
|
c = splitter * cdxtail;
|
|
625
525
|
ahi = c - (c - cdxtail);
|
|
626
526
|
alo = cdxtail - ahi;
|
|
627
527
|
c = splitter * bdytail;
|
|
628
528
|
bhi = c - (c - bdytail);
|
|
629
529
|
blo = bdytail - bhi;
|
|
630
|
-
|
|
631
|
-
_i =
|
|
632
|
-
bvirt =
|
|
633
|
-
bctt[0] =
|
|
634
|
-
_j =
|
|
635
|
-
bvirt = _j -
|
|
636
|
-
_0 =
|
|
637
|
-
_i = _0 -
|
|
530
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
531
|
+
_i = s0 - t0;
|
|
532
|
+
bvirt = s0 - _i;
|
|
533
|
+
bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
534
|
+
_j = s1 + _i;
|
|
535
|
+
bvirt = _j - s1;
|
|
536
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
537
|
+
_i = _0 - t1;
|
|
638
538
|
bvirt = _0 - _i;
|
|
639
|
-
bctt[1] = _0 - (_i + bvirt) + (bvirt -
|
|
640
|
-
|
|
641
|
-
bvirt =
|
|
642
|
-
bctt[2] = _j - (
|
|
643
|
-
bctt[3] =
|
|
539
|
+
bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
540
|
+
u3 = _j + _i;
|
|
541
|
+
bvirt = u3 - _j;
|
|
542
|
+
bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
543
|
+
bctt[3] = u3;
|
|
644
544
|
bcttlen = 4;
|
|
645
545
|
} else {
|
|
646
546
|
bct[0] = 0;
|
|
@@ -648,149 +548,130 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
648
548
|
bctt[0] = 0;
|
|
649
549
|
bcttlen = 1;
|
|
650
550
|
}
|
|
651
|
-
|
|
652
551
|
if (adxtail !== 0) {
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
552
|
+
const len = scale(bctlen, bct, adxtail, _16c);
|
|
553
|
+
finlen = finadd(finlen, sum(
|
|
554
|
+
scale(axtbclen, axtbc, adxtail, _16), _16,
|
|
555
|
+
scale(len, _16c, 2 * adx, _32), _32, _48), _48);
|
|
556
|
+
|
|
557
|
+
const len2 = scale(bcttlen, bctt, adxtail, _8);
|
|
558
|
+
finlen = finadd(finlen, sum_three(
|
|
559
|
+
scale(len2, _8, 2 * adx, _16), _16,
|
|
560
|
+
scale(len2, _8, adxtail, _16b), _16b,
|
|
561
|
+
scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);
|
|
659
562
|
|
|
660
563
|
if (bdytail !== 0) {
|
|
661
|
-
|
|
662
|
-
temp16alen = scale_expansion_zeroelim(temp8len, temp8, bdytail, temp16a);
|
|
663
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp16alen, temp16a, finother);
|
|
664
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
564
|
+
finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16);
|
|
665
565
|
}
|
|
666
566
|
if (cdytail !== 0) {
|
|
667
|
-
|
|
668
|
-
temp16alen = scale_expansion_zeroelim(temp8len, temp8, cdytail, temp16a);
|
|
669
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp16alen, temp16a, finother);
|
|
670
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
567
|
+
finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16);
|
|
671
568
|
}
|
|
672
|
-
|
|
673
|
-
temp32alen = scale_expansion_zeroelim(axtbctlen, axtbct, adxtail, temp32a);
|
|
674
|
-
const axtbcttlen = scale_expansion_zeroelim(bcttlen, bctt, adxtail, axtbctt);
|
|
675
|
-
temp16alen = scale_expansion_zeroelim(axtbcttlen, axtbctt, 2 * adx, temp16a);
|
|
676
|
-
temp16blen = scale_expansion_zeroelim(axtbcttlen, axtbctt, adxtail, temp16b);
|
|
677
|
-
temp32blen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32b);
|
|
678
|
-
temp64len = fast_expansion_sum_zeroelim(temp32alen, temp32a, temp32blen, temp32b, temp64);
|
|
679
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp64len, temp64, finother);
|
|
680
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
681
569
|
}
|
|
682
|
-
|
|
683
570
|
if (adytail !== 0) {
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
temp16blen = scale_expansion_zeroelim(aytbcttlen, aytbctt, adytail, temp16b);
|
|
695
|
-
temp32blen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32b);
|
|
696
|
-
temp64len = fast_expansion_sum_zeroelim(temp32alen, temp32a, temp32blen, temp32b, temp64);
|
|
697
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp64len, temp64, finother);
|
|
698
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
571
|
+
const len = scale(bctlen, bct, adytail, _16c);
|
|
572
|
+
finlen = finadd(finlen, sum(
|
|
573
|
+
scale(aytbclen, aytbc, adytail, _16), _16,
|
|
574
|
+
scale(len, _16c, 2 * ady, _32), _32, _48), _48);
|
|
575
|
+
|
|
576
|
+
const len2 = scale(bcttlen, bctt, adytail, _8);
|
|
577
|
+
finlen = finadd(finlen, sum_three(
|
|
578
|
+
scale(len2, _8, 2 * ady, _16), _16,
|
|
579
|
+
scale(len2, _8, adytail, _16b), _16b,
|
|
580
|
+
scale(len, _16c, adytail, _32), _32, _32b, _64), _64);
|
|
699
581
|
}
|
|
700
582
|
}
|
|
701
583
|
if (bdxtail !== 0 || bdytail !== 0) {
|
|
702
584
|
if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {
|
|
703
|
-
|
|
585
|
+
s1 = cdxtail * ady;
|
|
704
586
|
c = splitter * cdxtail;
|
|
705
587
|
ahi = c - (c - cdxtail);
|
|
706
588
|
alo = cdxtail - ahi;
|
|
707
589
|
c = splitter * ady;
|
|
708
590
|
bhi = c - (c - ady);
|
|
709
591
|
blo = ady - bhi;
|
|
710
|
-
|
|
711
|
-
|
|
592
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
593
|
+
t1 = cdx * adytail;
|
|
712
594
|
c = splitter * cdx;
|
|
713
595
|
ahi = c - (c - cdx);
|
|
714
596
|
alo = cdx - ahi;
|
|
715
597
|
c = splitter * adytail;
|
|
716
598
|
bhi = c - (c - adytail);
|
|
717
599
|
blo = adytail - bhi;
|
|
718
|
-
|
|
719
|
-
_i =
|
|
720
|
-
bvirt = _i -
|
|
721
|
-
u[0] =
|
|
722
|
-
_j =
|
|
723
|
-
bvirt = _j -
|
|
724
|
-
_0 =
|
|
725
|
-
_i = _0 +
|
|
600
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
601
|
+
_i = s0 + t0;
|
|
602
|
+
bvirt = _i - s0;
|
|
603
|
+
u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
|
|
604
|
+
_j = s1 + _i;
|
|
605
|
+
bvirt = _j - s1;
|
|
606
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
607
|
+
_i = _0 + t1;
|
|
726
608
|
bvirt = _i - _0;
|
|
727
|
-
u[1] = _0 - (_i - bvirt) + (
|
|
609
|
+
u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
|
|
728
610
|
u3 = _j + _i;
|
|
729
611
|
bvirt = u3 - _j;
|
|
730
612
|
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
731
613
|
u[3] = u3;
|
|
732
|
-
|
|
733
|
-
|
|
614
|
+
n1 = -cdy;
|
|
615
|
+
n0 = -cdytail;
|
|
616
|
+
s1 = adxtail * n1;
|
|
734
617
|
c = splitter * adxtail;
|
|
735
618
|
ahi = c - (c - adxtail);
|
|
736
619
|
alo = adxtail - ahi;
|
|
737
|
-
c = splitter *
|
|
738
|
-
bhi = c - (c -
|
|
739
|
-
blo =
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
tj1 = adx * negate;
|
|
620
|
+
c = splitter * n1;
|
|
621
|
+
bhi = c - (c - n1);
|
|
622
|
+
blo = n1 - bhi;
|
|
623
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
624
|
+
t1 = adx * n0;
|
|
743
625
|
c = splitter * adx;
|
|
744
626
|
ahi = c - (c - adx);
|
|
745
627
|
alo = adx - ahi;
|
|
746
|
-
c = splitter *
|
|
747
|
-
bhi = c - (c -
|
|
748
|
-
blo =
|
|
749
|
-
|
|
750
|
-
_i =
|
|
751
|
-
bvirt = _i -
|
|
752
|
-
v[0] =
|
|
753
|
-
_j =
|
|
754
|
-
bvirt = _j -
|
|
755
|
-
_0 =
|
|
756
|
-
_i = _0 +
|
|
628
|
+
c = splitter * n0;
|
|
629
|
+
bhi = c - (c - n0);
|
|
630
|
+
blo = n0 - bhi;
|
|
631
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
632
|
+
_i = s0 + t0;
|
|
633
|
+
bvirt = _i - s0;
|
|
634
|
+
v[0] = s0 - (_i - bvirt) + (t0 - bvirt);
|
|
635
|
+
_j = s1 + _i;
|
|
636
|
+
bvirt = _j - s1;
|
|
637
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
638
|
+
_i = _0 + t1;
|
|
757
639
|
bvirt = _i - _0;
|
|
758
|
-
v[1] = _0 - (_i - bvirt) + (
|
|
759
|
-
|
|
760
|
-
bvirt =
|
|
761
|
-
v[2] = _j - (
|
|
762
|
-
v[3] =
|
|
763
|
-
catlen =
|
|
764
|
-
|
|
765
|
-
ti1 = cdxtail * adytail;
|
|
640
|
+
v[1] = _0 - (_i - bvirt) + (t1 - bvirt);
|
|
641
|
+
u3 = _j + _i;
|
|
642
|
+
bvirt = u3 - _j;
|
|
643
|
+
v[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
644
|
+
v[3] = u3;
|
|
645
|
+
catlen = sum(4, u, 4, v, cat);
|
|
646
|
+
s1 = cdxtail * adytail;
|
|
766
647
|
c = splitter * cdxtail;
|
|
767
648
|
ahi = c - (c - cdxtail);
|
|
768
649
|
alo = cdxtail - ahi;
|
|
769
650
|
c = splitter * adytail;
|
|
770
651
|
bhi = c - (c - adytail);
|
|
771
652
|
blo = adytail - bhi;
|
|
772
|
-
|
|
773
|
-
|
|
653
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
654
|
+
t1 = adxtail * cdytail;
|
|
774
655
|
c = splitter * adxtail;
|
|
775
656
|
ahi = c - (c - adxtail);
|
|
776
657
|
alo = adxtail - ahi;
|
|
777
658
|
c = splitter * cdytail;
|
|
778
659
|
bhi = c - (c - cdytail);
|
|
779
660
|
blo = cdytail - bhi;
|
|
780
|
-
|
|
781
|
-
_i =
|
|
782
|
-
bvirt =
|
|
783
|
-
catt[0] =
|
|
784
|
-
_j =
|
|
785
|
-
bvirt = _j -
|
|
786
|
-
_0 =
|
|
787
|
-
_i = _0 -
|
|
661
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
662
|
+
_i = s0 - t0;
|
|
663
|
+
bvirt = s0 - _i;
|
|
664
|
+
catt[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
665
|
+
_j = s1 + _i;
|
|
666
|
+
bvirt = _j - s1;
|
|
667
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
668
|
+
_i = _0 - t1;
|
|
788
669
|
bvirt = _0 - _i;
|
|
789
|
-
catt[1] = _0 - (_i + bvirt) + (bvirt -
|
|
790
|
-
|
|
791
|
-
bvirt =
|
|
792
|
-
catt[2] = _j - (
|
|
793
|
-
catt[3] =
|
|
670
|
+
catt[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
671
|
+
u3 = _j + _i;
|
|
672
|
+
bvirt = u3 - _j;
|
|
673
|
+
catt[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
674
|
+
catt[3] = u3;
|
|
794
675
|
cattlen = 4;
|
|
795
676
|
} else {
|
|
796
677
|
cat[0] = 0;
|
|
@@ -798,147 +679,130 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
798
679
|
catt[0] = 0;
|
|
799
680
|
cattlen = 1;
|
|
800
681
|
}
|
|
801
|
-
|
|
802
682
|
if (bdxtail !== 0) {
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
683
|
+
const len = scale(catlen, cat, bdxtail, _16c);
|
|
684
|
+
finlen = finadd(finlen, sum(
|
|
685
|
+
scale(bxtcalen, bxtca, bdxtail, _16), _16,
|
|
686
|
+
scale(len, _16c, 2 * bdx, _32), _32, _48), _48);
|
|
687
|
+
|
|
688
|
+
const len2 = scale(cattlen, catt, bdxtail, _8);
|
|
689
|
+
finlen = finadd(finlen, sum_three(
|
|
690
|
+
scale(len2, _8, 2 * bdx, _16), _16,
|
|
691
|
+
scale(len2, _8, bdxtail, _16b), _16b,
|
|
692
|
+
scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64);
|
|
693
|
+
|
|
809
694
|
if (cdytail !== 0) {
|
|
810
|
-
|
|
811
|
-
temp16alen = scale_expansion_zeroelim(temp8len, temp8, cdytail, temp16a);
|
|
812
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp16alen, temp16a, finother);
|
|
813
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
695
|
+
finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16);
|
|
814
696
|
}
|
|
815
697
|
if (adytail !== 0) {
|
|
816
|
-
|
|
817
|
-
temp16alen = scale_expansion_zeroelim(temp8len, temp8, adytail, temp16a);
|
|
818
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp16alen, temp16a, finother);
|
|
819
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
698
|
+
finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16);
|
|
820
699
|
}
|
|
821
|
-
|
|
822
|
-
temp32alen = scale_expansion_zeroelim(bxtcatlen, bxtcat, bdxtail, temp32a);
|
|
823
|
-
const bxtcattlen = scale_expansion_zeroelim(cattlen, catt, bdxtail, bxtcatt);
|
|
824
|
-
temp16alen = scale_expansion_zeroelim(bxtcattlen, bxtcatt, 2 * bdx, temp16a);
|
|
825
|
-
temp16blen = scale_expansion_zeroelim(bxtcattlen, bxtcatt, bdxtail, temp16b);
|
|
826
|
-
temp32blen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32b);
|
|
827
|
-
temp64len = fast_expansion_sum_zeroelim(temp32alen, temp32a, temp32blen, temp32b, temp64);
|
|
828
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp64len, temp64, finother);
|
|
829
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
830
700
|
}
|
|
831
701
|
if (bdytail !== 0) {
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
temp16blen = scale_expansion_zeroelim(bytcattlen, bytcatt, bdytail, temp16b);
|
|
843
|
-
temp32blen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32b);
|
|
844
|
-
temp64len = fast_expansion_sum_zeroelim(temp32alen, temp32a, temp32blen, temp32b, temp64);
|
|
845
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp64len, temp64, finother);
|
|
846
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
702
|
+
const len = scale(catlen, cat, bdytail, _16c);
|
|
703
|
+
finlen = finadd(finlen, sum(
|
|
704
|
+
scale(bytcalen, bytca, bdytail, _16), _16,
|
|
705
|
+
scale(len, _16c, 2 * bdy, _32), _32, _48), _48);
|
|
706
|
+
|
|
707
|
+
const len2 = scale(cattlen, catt, bdytail, _8);
|
|
708
|
+
finlen = finadd(finlen, sum_three(
|
|
709
|
+
scale(len2, _8, 2 * bdy, _16), _16,
|
|
710
|
+
scale(len2, _8, bdytail, _16b), _16b,
|
|
711
|
+
scale(len, _16c, bdytail, _32), _32, _32b, _64), _64);
|
|
847
712
|
}
|
|
848
713
|
}
|
|
849
714
|
if (cdxtail !== 0 || cdytail !== 0) {
|
|
850
715
|
if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {
|
|
851
|
-
|
|
716
|
+
s1 = adxtail * bdy;
|
|
852
717
|
c = splitter * adxtail;
|
|
853
718
|
ahi = c - (c - adxtail);
|
|
854
719
|
alo = adxtail - ahi;
|
|
855
720
|
c = splitter * bdy;
|
|
856
721
|
bhi = c - (c - bdy);
|
|
857
722
|
blo = bdy - bhi;
|
|
858
|
-
|
|
859
|
-
|
|
723
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
724
|
+
t1 = adx * bdytail;
|
|
860
725
|
c = splitter * adx;
|
|
861
726
|
ahi = c - (c - adx);
|
|
862
727
|
alo = adx - ahi;
|
|
863
728
|
c = splitter * bdytail;
|
|
864
729
|
bhi = c - (c - bdytail);
|
|
865
730
|
blo = bdytail - bhi;
|
|
866
|
-
|
|
867
|
-
_i =
|
|
868
|
-
bvirt = _i -
|
|
869
|
-
u[0] =
|
|
870
|
-
_j =
|
|
871
|
-
bvirt = _j -
|
|
872
|
-
_0 =
|
|
873
|
-
_i = _0 +
|
|
731
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
732
|
+
_i = s0 + t0;
|
|
733
|
+
bvirt = _i - s0;
|
|
734
|
+
u[0] = s0 - (_i - bvirt) + (t0 - bvirt);
|
|
735
|
+
_j = s1 + _i;
|
|
736
|
+
bvirt = _j - s1;
|
|
737
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
738
|
+
_i = _0 + t1;
|
|
874
739
|
bvirt = _i - _0;
|
|
875
|
-
u[1] = _0 - (_i - bvirt) + (
|
|
740
|
+
u[1] = _0 - (_i - bvirt) + (t1 - bvirt);
|
|
876
741
|
u3 = _j + _i;
|
|
877
742
|
bvirt = u3 - _j;
|
|
878
743
|
u[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
879
744
|
u[3] = u3;
|
|
880
|
-
|
|
881
|
-
|
|
745
|
+
n1 = -ady;
|
|
746
|
+
n0 = -adytail;
|
|
747
|
+
s1 = bdxtail * n1;
|
|
882
748
|
c = splitter * bdxtail;
|
|
883
749
|
ahi = c - (c - bdxtail);
|
|
884
750
|
alo = bdxtail - ahi;
|
|
885
|
-
c = splitter *
|
|
886
|
-
bhi = c - (c -
|
|
887
|
-
blo =
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
tj1 = bdx * negate;
|
|
751
|
+
c = splitter * n1;
|
|
752
|
+
bhi = c - (c - n1);
|
|
753
|
+
blo = n1 - bhi;
|
|
754
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
755
|
+
t1 = bdx * n0;
|
|
891
756
|
c = splitter * bdx;
|
|
892
757
|
ahi = c - (c - bdx);
|
|
893
758
|
alo = bdx - ahi;
|
|
894
|
-
c = splitter *
|
|
895
|
-
bhi = c - (c -
|
|
896
|
-
blo =
|
|
897
|
-
|
|
898
|
-
_i =
|
|
899
|
-
bvirt = _i -
|
|
900
|
-
v[0] =
|
|
901
|
-
_j =
|
|
902
|
-
bvirt = _j -
|
|
903
|
-
_0 =
|
|
904
|
-
_i = _0 +
|
|
759
|
+
c = splitter * n0;
|
|
760
|
+
bhi = c - (c - n0);
|
|
761
|
+
blo = n0 - bhi;
|
|
762
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
763
|
+
_i = s0 + t0;
|
|
764
|
+
bvirt = _i - s0;
|
|
765
|
+
v[0] = s0 - (_i - bvirt) + (t0 - bvirt);
|
|
766
|
+
_j = s1 + _i;
|
|
767
|
+
bvirt = _j - s1;
|
|
768
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
769
|
+
_i = _0 + t1;
|
|
905
770
|
bvirt = _i - _0;
|
|
906
|
-
v[1] = _0 - (_i - bvirt) + (
|
|
907
|
-
|
|
908
|
-
bvirt =
|
|
909
|
-
v[2] = _j - (
|
|
910
|
-
v[3] =
|
|
911
|
-
abtlen =
|
|
912
|
-
|
|
913
|
-
ti1 = adxtail * bdytail;
|
|
771
|
+
v[1] = _0 - (_i - bvirt) + (t1 - bvirt);
|
|
772
|
+
u3 = _j + _i;
|
|
773
|
+
bvirt = u3 - _j;
|
|
774
|
+
v[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
775
|
+
v[3] = u3;
|
|
776
|
+
abtlen = sum(4, u, 4, v, abt);
|
|
777
|
+
s1 = adxtail * bdytail;
|
|
914
778
|
c = splitter * adxtail;
|
|
915
779
|
ahi = c - (c - adxtail);
|
|
916
780
|
alo = adxtail - ahi;
|
|
917
781
|
c = splitter * bdytail;
|
|
918
782
|
bhi = c - (c - bdytail);
|
|
919
783
|
blo = bdytail - bhi;
|
|
920
|
-
|
|
921
|
-
|
|
784
|
+
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
785
|
+
t1 = bdxtail * adytail;
|
|
922
786
|
c = splitter * bdxtail;
|
|
923
787
|
ahi = c - (c - bdxtail);
|
|
924
788
|
alo = bdxtail - ahi;
|
|
925
789
|
c = splitter * adytail;
|
|
926
790
|
bhi = c - (c - adytail);
|
|
927
791
|
blo = adytail - bhi;
|
|
928
|
-
|
|
929
|
-
_i =
|
|
930
|
-
bvirt =
|
|
931
|
-
abtt[0] =
|
|
932
|
-
_j =
|
|
933
|
-
bvirt = _j -
|
|
934
|
-
_0 =
|
|
935
|
-
_i = _0 -
|
|
792
|
+
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
793
|
+
_i = s0 - t0;
|
|
794
|
+
bvirt = s0 - _i;
|
|
795
|
+
abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
796
|
+
_j = s1 + _i;
|
|
797
|
+
bvirt = _j - s1;
|
|
798
|
+
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
799
|
+
_i = _0 - t1;
|
|
936
800
|
bvirt = _0 - _i;
|
|
937
|
-
abtt[1] = _0 - (_i + bvirt) + (bvirt -
|
|
938
|
-
|
|
939
|
-
bvirt =
|
|
940
|
-
abtt[2] = _j - (
|
|
941
|
-
abtt[3] =
|
|
801
|
+
abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
802
|
+
u3 = _j + _i;
|
|
803
|
+
bvirt = u3 - _j;
|
|
804
|
+
abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);
|
|
805
|
+
abtt[3] = u3;
|
|
942
806
|
abttlen = 4;
|
|
943
807
|
} else {
|
|
944
808
|
abt[0] = 0;
|
|
@@ -946,56 +810,40 @@ function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {
|
|
|
946
810
|
abtt[0] = 0;
|
|
947
811
|
abttlen = 1;
|
|
948
812
|
}
|
|
949
|
-
|
|
950
813
|
if (cdxtail !== 0) {
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
814
|
+
const len = scale(abtlen, abt, cdxtail, _16c);
|
|
815
|
+
finlen = finadd(finlen, sum(
|
|
816
|
+
scale(cxtablen, cxtab, cdxtail, _16), _16,
|
|
817
|
+
scale(len, _16c, 2 * cdx, _32), _32, _48), _48);
|
|
818
|
+
|
|
819
|
+
const len2 = scale(abttlen, abtt, cdxtail, _8);
|
|
820
|
+
finlen = finadd(finlen, sum_three(
|
|
821
|
+
scale(len2, _8, 2 * cdx, _16), _16,
|
|
822
|
+
scale(len2, _8, cdxtail, _16b), _16b,
|
|
823
|
+
scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64);
|
|
824
|
+
|
|
957
825
|
if (adytail !== 0) {
|
|
958
|
-
|
|
959
|
-
temp16alen = scale_expansion_zeroelim(temp8len, temp8, adytail, temp16a);
|
|
960
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp16alen, temp16a, finother);
|
|
961
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
826
|
+
finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16);
|
|
962
827
|
}
|
|
963
828
|
if (bdytail !== 0) {
|
|
964
|
-
|
|
965
|
-
temp16alen = scale_expansion_zeroelim(temp8len, temp8, bdytail, temp16a);
|
|
966
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp16alen, temp16a, finother);
|
|
967
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
829
|
+
finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);
|
|
968
830
|
}
|
|
969
|
-
|
|
970
|
-
temp32alen = scale_expansion_zeroelim(cxtabtlen, cxtabt, cdxtail, temp32a);
|
|
971
|
-
const cxtabttlen = scale_expansion_zeroelim(abttlen, abtt, cdxtail, cxtabtt);
|
|
972
|
-
temp16alen = scale_expansion_zeroelim(cxtabttlen, cxtabtt, 2 * cdx, temp16a);
|
|
973
|
-
temp16blen = scale_expansion_zeroelim(cxtabttlen, cxtabtt, cdxtail, temp16b);
|
|
974
|
-
temp32blen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32b);
|
|
975
|
-
temp64len = fast_expansion_sum_zeroelim(temp32alen, temp32a, temp32blen, temp32b, temp64);
|
|
976
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp64len, temp64, finother);
|
|
977
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
978
831
|
}
|
|
979
832
|
if (cdytail !== 0) {
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
temp16blen = scale_expansion_zeroelim(cytabttlen, cytabtt, cdytail, temp16b);
|
|
991
|
-
temp32blen = fast_expansion_sum_zeroelim(temp16alen, temp16a, temp16blen, temp16b, temp32b);
|
|
992
|
-
temp64len = fast_expansion_sum_zeroelim(temp32alen, temp32a, temp32blen, temp32b, temp64);
|
|
993
|
-
finlength = fast_expansion_sum_zeroelim(finlength, finnow, temp64len, temp64, finother);
|
|
994
|
-
finswap = finnow; finnow = finother; finother = finswap;
|
|
833
|
+
const len = scale(abtlen, abt, cdytail, _16c);
|
|
834
|
+
finlen = finadd(finlen, sum(
|
|
835
|
+
scale(cytablen, cytab, cdytail, _16), _16,
|
|
836
|
+
scale(len, _16c, 2 * cdy, _32), _32, _48), _48);
|
|
837
|
+
|
|
838
|
+
const len2 = scale(abttlen, abtt, cdytail, _8);
|
|
839
|
+
finlen = finadd(finlen, sum_three(
|
|
840
|
+
scale(len2, _8, 2 * cdy, _16), _16,
|
|
841
|
+
scale(len2, _8, cdytail, _16b), _16b,
|
|
842
|
+
scale(len, _16c, cdytail, _32), _32, _32b, _64), _64);
|
|
995
843
|
}
|
|
996
844
|
}
|
|
997
845
|
|
|
998
|
-
return
|
|
846
|
+
return fin[finlen - 1];
|
|
999
847
|
}
|
|
1000
848
|
|
|
1001
849
|
function incircle(ax, ay, bx, by, cx, cy, dx, dy) {
|
|
@@ -1059,4 +907,4 @@ exports.incirclefast = incirclefast;
|
|
|
1059
907
|
|
|
1060
908
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
1061
909
|
|
|
1062
|
-
}));
|
|
910
|
+
})));
|