Brunobkr/llama.cpp_AlgMor24_github
ΩFFFΣLLIa • llama.cpp • AlgMor24 ██████╗ ███████╗███████╗███████╗██╗ ██╗ ██╗ █████╗ ██╔═══██╗██╔════╝██╔════╝██╔════╝██║ ██║ ██║██╔══██╗ ██║ ██║█████╗ █████╗ █████╗ ██║ ██║ ██║███████║ ██║ ██║██╔══╝ ██╔══╝ ██╔══╝ ██║ ██║ ██║██╔══██║ ╚██████╔╝██║ ██║ ███████╗███████╗███████╗██║██║ ██║ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚══════╝╚═╝╚═╝ ╚═╝ High-Performance LLM / VLM Inference & Autonomous Agentic Ecosystem… See the full description on the dataset page: https://huggingface.co/datasets/Brunobkr/llama.cpp_AlgMor24_github.
03.1k
1import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale} from './util.js';2 3const iccerrboundA = (10 + 96 * epsilon) * epsilon;4const iccerrboundB = (4 + 48 * epsilon) * epsilon;5const iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;6 7const bc = vec(4);8const ca = vec(4);9const ab = vec(4);10const aa = vec(4);11const bb = vec(4);12const cc = vec(4);13const u = vec(4);14const v = vec(4);15const axtbc = vec(8);16const aytbc = vec(8);17const bxtca = vec(8);18const bytca = vec(8);19const cxtab = vec(8);20const cytab = vec(8);21const abt = vec(8);22const bct = vec(8);23const cat = vec(8);24const abtt = vec(4);25const bctt = vec(4);26const catt = vec(4);27 28const _8 = vec(8);29const _16 = vec(16);30const _16b = vec(16);31const _16c = vec(16);32const _32 = vec(32);33const _32b = vec(32);34const _48 = vec(48);35const _64 = vec(64);36 37let fin = vec(1152);38let fin2 = vec(1152);39 40function finadd(finlen, a, alen) {41 finlen = sum(finlen, fin, a, alen, fin2);42 const tmp = fin; fin = fin2; fin2 = tmp;43 return finlen;44}45 46function incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {47 let finlen;48 let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;49 let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;50 let abtlen, bctlen, catlen;51 let abttlen, bcttlen, cattlen;52 let n1, n0;53 54 let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;55 56 const adx = ax - dx;57 const bdx = bx - dx;58 const cdx = cx - dx;59 const ady = ay - dy;60 const bdy = by - dy;61 const cdy = cy - dy;62 63 s1 = bdx * cdy;64 c = splitter * bdx;65 ahi = c - (c - bdx);66 alo = bdx - ahi;67 c = splitter * cdy;68 bhi = c - (c - cdy);69 blo = cdy - bhi;70 s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);71 t1 = cdx * bdy;72 c = splitter * cdx;73 ahi = c - (c - cdx);74 alo = cdx - ahi;75 c = splitter * bdy;76 bhi = c - (c - bdy);77 blo = bdy - bhi;78 t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);79 _i = s0 - t0;80 bvirt = s0 - _i;81 bc[0] = s0 - (_i + bvirt) + (bvirt - t0);82 _j = s1 + _i;83 bvirt = _j - s1;84 _0 = s1 - (_j - bvirt) + (_i - bvirt);85 _i = _0 - t1;86 bvirt = _0 - _i;87 bc[1] = _0 - (_i + bvirt) + (bvirt - t1);88 u3 = _j + _i;89 bvirt = u3 - _j;90 bc[2] = _j - (u3 - bvirt) + (_i - bvirt);91 bc[3] = u3;92 s1 = cdx * ady;93 c = splitter * cdx;94 ahi = c - (c - cdx);95 alo = cdx - ahi;96 c = splitter * ady;97 bhi = c - (c - ady);98 blo = ady - bhi;99 s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);100 t1 = adx * cdy;101 c = splitter * adx;102 ahi = c - (c - adx);103 alo = adx - ahi;104 c = splitter * cdy;105 bhi = c - (c - cdy);106 blo = cdy - bhi;107 t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);108 _i = s0 - t0;109 bvirt = s0 - _i;110 ca[0] = s0 - (_i + bvirt) + (bvirt - t0);111 _j = s1 + _i;112 bvirt = _j - s1;113 _0 = s1 - (_j - bvirt) + (_i - bvirt);114 _i = _0 - t1;115 bvirt = _0 - _i;116 ca[1] = _0 - (_i + bvirt) + (bvirt - t1);117 u3 = _j + _i;118 bvirt = u3 - _j;119 ca[2] = _j - (u3 - bvirt) + (_i - bvirt);120 ca[3] = u3;121 s1 = adx * bdy;122 c = splitter * adx;123 ahi = c - (c - adx);124 alo = adx - ahi;125 c = splitter * bdy;126 bhi = c - (c - bdy);127 blo = bdy - bhi;128 s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);129 t1 = bdx * ady;130 c = splitter * bdx;131 ahi = c - (c - bdx);132 alo = bdx - ahi;133 c = splitter * ady;134 bhi = c - (c - ady);135 blo = ady - bhi;136 t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);137 _i = s0 - t0;138 bvirt = s0 - _i;139 ab[0] = s0 - (_i + bvirt) + (bvirt - t0);140 _j = s1 + _i;141 bvirt = _j - s1;142 _0 = s1 - (_j - bvirt) + (_i - bvirt);143 _i = _0 - t1;144 bvirt = _0 - _i;145 ab[1] = _0 - (_i + bvirt) + (bvirt - t1);146 u3 = _j + _i;147 bvirt = u3 - _j;148 ab[2] = _j - (u3 - bvirt) + (_i - bvirt);149 ab[3] = u3;150 151 finlen = sum(152 sum(153 sum(154 scale(scale(4, bc, adx, _8), _8, adx, _16), _16,155 scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32,156 sum(157 scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16,158 scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64,159 sum(160 scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16,161 scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);162 163 let det = estimate(finlen, fin);164 let errbound = iccerrboundB * permanent;165 if (det >= errbound || -det >= errbound) {166 return det;167 }168 169 bvirt = ax - adx;170 adxtail = ax - (adx + bvirt) + (bvirt - dx);171 bvirt = ay - ady;172 adytail = ay - (ady + bvirt) + (bvirt - dy);173 bvirt = bx - bdx;174 bdxtail = bx - (bdx + bvirt) + (bvirt - dx);175 bvirt = by - bdy;176 bdytail = by - (bdy + bvirt) + (bvirt - dy);177 bvirt = cx - cdx;178 cdxtail = cx - (cdx + bvirt) + (bvirt - dx);179 bvirt = cy - cdy;180 cdytail = cy - (cdy + bvirt) + (bvirt - dy);181 if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) {182 return det;183 }184 185 errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det);186 det += ((adx * adx + ady * ady) * ((bdx * cdytail + cdy * bdxtail) - (bdy * cdxtail + cdx * bdytail)) +187 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx)) +188 ((bdx * bdx + bdy * bdy) * ((cdx * adytail + ady * cdxtail) - (cdy * adxtail + adx * cdytail)) +189 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) +190 ((cdx * cdx + cdy * cdy) * ((adx * bdytail + bdy * adxtail) - (ady * bdxtail + bdx * adytail)) +191 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));192 193 if (det >= errbound || -det >= errbound) {194 return det;195 }196 197 if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {198 s1 = adx * adx;199 c = splitter * adx;200 ahi = c - (c - adx);201 alo = adx - ahi;202 s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);203 t1 = ady * ady;204 c = splitter * ady;205 ahi = c - (c - ady);206 alo = ady - ahi;207 t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);208 _i = s0 + t0;209 bvirt = _i - s0;210 aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);211 _j = s1 + _i;212 bvirt = _j - s1;213 _0 = s1 - (_j - bvirt) + (_i - bvirt);214 _i = _0 + t1;215 bvirt = _i - _0;216 aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);217 u3 = _j + _i;218 bvirt = u3 - _j;219 aa[2] = _j - (u3 - bvirt) + (_i - bvirt);220 aa[3] = u3;221 }222 if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {223 s1 = bdx * bdx;224 c = splitter * bdx;225 ahi = c - (c - bdx);226 alo = bdx - ahi;227 s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);228 t1 = bdy * bdy;229 c = splitter * bdy;230 ahi = c - (c - bdy);231 alo = bdy - ahi;232 t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);233 _i = s0 + t0;234 bvirt = _i - s0;235 bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);236 _j = s1 + _i;237 bvirt = _j - s1;238 _0 = s1 - (_j - bvirt) + (_i - bvirt);239 _i = _0 + t1;240 bvirt = _i - _0;241 bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);242 u3 = _j + _i;243 bvirt = u3 - _j;244 bb[2] = _j - (u3 - bvirt) + (_i - bvirt);245 bb[3] = u3;246 }247 if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {248 s1 = cdx * cdx;249 c = splitter * cdx;250 ahi = c - (c - cdx);251 alo = cdx - ahi;252 s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);253 t1 = cdy * cdy;254 c = splitter * cdy;255 ahi = c - (c - cdy);256 alo = cdy - ahi;257 t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);258 _i = s0 + t0;259 bvirt = _i - s0;260 cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);261 _j = s1 + _i;262 bvirt = _j - s1;263 _0 = s1 - (_j - bvirt) + (_i - bvirt);264 _i = _0 + t1;265 bvirt = _i - _0;266 cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);267 u3 = _j + _i;268 bvirt = u3 - _j;269 cc[2] = _j - (u3 - bvirt) + (_i - bvirt);270 cc[3] = u3;271 }272 273 if (adxtail !== 0) {274 axtbclen = scale(4, bc, adxtail, axtbc);275 finlen = finadd(finlen, sum_three(276 scale(axtbclen, axtbc, 2 * adx, _16), _16,277 scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b,278 scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);279 }280 if (adytail !== 0) {281 aytbclen = scale(4, bc, adytail, aytbc);282 finlen = finadd(finlen, sum_three(283 scale(aytbclen, aytbc, 2 * ady, _16), _16,284 scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b,285 scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);286 }287 if (bdxtail !== 0) {288 bxtcalen = scale(4, ca, bdxtail, bxtca);289 finlen = finadd(finlen, sum_three(290 scale(bxtcalen, bxtca, 2 * bdx, _16), _16,291 scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b,292 scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);293 }294 if (bdytail !== 0) {295 bytcalen = scale(4, ca, bdytail, bytca);296 finlen = finadd(finlen, sum_three(297 scale(bytcalen, bytca, 2 * bdy, _16), _16,298 scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b,299 scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);300 }301 if (cdxtail !== 0) {302 cxtablen = scale(4, ab, cdxtail, cxtab);303 finlen = finadd(finlen, sum_three(304 scale(cxtablen, cxtab, 2 * cdx, _16), _16,305 scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b,306 scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);307 }308 if (cdytail !== 0) {309 cytablen = scale(4, ab, cdytail, cytab);310 finlen = finadd(finlen, sum_three(311 scale(cytablen, cytab, 2 * cdy, _16), _16,312 scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b,313 scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);314 }315 316 if (adxtail !== 0 || adytail !== 0) {317 if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {318 s1 = bdxtail * cdy;319 c = splitter * bdxtail;320 ahi = c - (c - bdxtail);321 alo = bdxtail - ahi;322 c = splitter * cdy;323 bhi = c - (c - cdy);324 blo = cdy - bhi;325 s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);326 t1 = bdx * cdytail;327 c = splitter * bdx;328 ahi = c - (c - bdx);329 alo = bdx - ahi;330 c = splitter * cdytail;331 bhi = c - (c - cdytail);332 blo = cdytail - bhi;333 t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);334 _i = s0 + t0;335 bvirt = _i - s0;336 u[0] = s0 - (_i - bvirt) + (t0 - bvirt);337 _j = s1 + _i;338 bvirt = _j - s1;339 _0 = s1 - (_j - bvirt) + (_i - bvirt);340 _i = _0 + t1;341 bvirt = _i - _0;342 u[1] = _0 - (_i - bvirt) + (t1 - bvirt);343 u3 = _j + _i;344 bvirt = u3 - _j;345 u[2] = _j - (u3 - bvirt) + (_i - bvirt);346 u[3] = u3;347 s1 = cdxtail * -bdy;348 c = splitter * cdxtail;349 ahi = c - (c - cdxtail);350 alo = cdxtail - ahi;351 c = splitter * -bdy;352 bhi = c - (c - -bdy);353 blo = -bdy - bhi;354 s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);355 t1 = cdx * -bdytail;356 c = splitter * cdx;357 ahi = c - (c - cdx);358 alo = cdx - ahi;359 c = splitter * -bdytail;360 bhi = c - (c - -bdytail);361 blo = -bdytail - bhi;362 t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);363 _i = s0 + t0;364 bvirt = _i - s0;365 v[0] = s0 - (_i - bvirt) + (t0 - bvirt);366 _j = s1 + _i;367 bvirt = _j - s1;368 _0 = s1 - (_j - bvirt) + (_i - bvirt);369 _i = _0 + t1;370 bvirt = _i - _0;371 v[1] = _0 - (_i - bvirt) + (t1 - bvirt);372 u3 = _j + _i;373 bvirt = u3 - _j;374 v[2] = _j - (u3 - bvirt) + (_i - bvirt);375 v[3] = u3;376 bctlen = sum(4, u, 4, v, bct);377 s1 = bdxtail * cdytail;378 c = splitter * bdxtail;379 ahi = c - (c - bdxtail);380 alo = bdxtail - ahi;381 c = splitter * cdytail;382 bhi = c - (c - cdytail);383 blo = cdytail - bhi;384 s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);385 t1 = cdxtail * bdytail;386 c = splitter * cdxtail;387 ahi = c - (c - cdxtail);388 alo = cdxtail - ahi;389 c = splitter * bdytail;390 bhi = c - (c - bdytail);391 blo = bdytail - bhi;392 t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);393 _i = s0 - t0;394 bvirt = s0 - _i;395 bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);396 _j = s1 + _i;397 bvirt = _j - s1;398 _0 = s1 - (_j - bvirt) + (_i - bvirt);399 _i = _0 - t1;400 bvirt = _0 - _i;401 bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);402 u3 = _j + _i;403 bvirt = u3 - _j;404 bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);405 bctt[3] = u3;406 bcttlen = 4;407 } else {408 bct[0] = 0;409 bctlen = 1;410 bctt[0] = 0;411 bcttlen = 1;412 }413 if (adxtail !== 0) {414 const len = scale(bctlen, bct, adxtail, _16c);415 finlen = finadd(finlen, sum(416 scale(axtbclen, axtbc, adxtail, _16), _16,417 scale(len, _16c, 2 * adx, _32), _32, _48), _48);418 419 const len2 = scale(bcttlen, bctt, adxtail, _8);420 finlen = finadd(finlen, sum_three(421 scale(len2, _8, 2 * adx, _16), _16,422 scale(len2, _8, adxtail, _16b), _16b,423 scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);424 425 if (bdytail !== 0) {426 finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16);427 }428 if (cdytail !== 0) {429 finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16);430 }431 }432 if (adytail !== 0) {433 const len = scale(bctlen, bct, adytail, _16c);434 finlen = finadd(finlen, sum(435 scale(aytbclen, aytbc, adytail, _16), _16,436 scale(len, _16c, 2 * ady, _32), _32, _48), _48);437 438 const len2 = scale(bcttlen, bctt, adytail, _8);439 finlen = finadd(finlen, sum_three(440 scale(len2, _8, 2 * ady, _16), _16,441 scale(len2, _8, adytail, _16b), _16b,442 scale(len, _16c, adytail, _32), _32, _32b, _64), _64);443 }444 }445 if (bdxtail !== 0 || bdytail !== 0) {446 if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {447 s1 = cdxtail * ady;448 c = splitter * cdxtail;449 ahi = c - (c - cdxtail);450 alo = cdxtail - ahi;451 c = splitter * ady;452 bhi = c - (c - ady);453 blo = ady - bhi;454 s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);455 t1 = cdx * adytail;456 c = splitter * cdx;457 ahi = c - (c - cdx);458 alo = cdx - ahi;459 c = splitter * adytail;460 bhi = c - (c - adytail);461 blo = adytail - bhi;462 t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);463 _i = s0 + t0;464 bvirt = _i - s0;465 u[0] = s0 - (_i - bvirt) + (t0 - bvirt);466 _j = s1 + _i;467 bvirt = _j - s1;468 _0 = s1 - (_j - bvirt) + (_i - bvirt);469 _i = _0 + t1;470 bvirt = _i - _0;471 u[1] = _0 - (_i - bvirt) + (t1 - bvirt);472 u3 = _j + _i;473 bvirt = u3 - _j;474 u[2] = _j - (u3 - bvirt) + (_i - bvirt);475 u[3] = u3;476 n1 = -cdy;477 n0 = -cdytail;478 s1 = adxtail * n1;479 c = splitter * adxtail;480 ahi = c - (c - adxtail);481 alo = adxtail - ahi;482 c = splitter * n1;483 bhi = c - (c - n1);484 blo = n1 - bhi;485 s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);486 t1 = adx * n0;487 c = splitter * adx;488 ahi = c - (c - adx);489 alo = adx - ahi;490 c = splitter * n0;491 bhi = c - (c - n0);492 blo = n0 - bhi;493 t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);494 _i = s0 + t0;495 bvirt = _i - s0;496 v[0] = s0 - (_i - bvirt) + (t0 - bvirt);497 _j = s1 + _i;498 bvirt = _j - s1;499 _0 = s1 - (_j - bvirt) + (_i - bvirt);500 _i = _0 + t1;501 bvirt = _i - _0;502 v[1] = _0 - (_i - bvirt) + (t1 - bvirt);503 u3 = _j + _i;504 bvirt = u3 - _j;505 v[2] = _j - (u3 - bvirt) + (_i - bvirt);506 v[3] = u3;507 catlen = sum(4, u, 4, v, cat);508 s1 = cdxtail * adytail;509 c = splitter * cdxtail;510 ahi = c - (c - cdxtail);511 alo = cdxtail - ahi;512 c = splitter * adytail;513 bhi = c - (c - adytail);514 blo = adytail - bhi;515 s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);516 t1 = adxtail * cdytail;517 c = splitter * adxtail;518 ahi = c - (c - adxtail);519 alo = adxtail - ahi;520 c = splitter * cdytail;521 bhi = c - (c - cdytail);522 blo = cdytail - bhi;523 t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);524 _i = s0 - t0;525 bvirt = s0 - _i;526 catt[0] = s0 - (_i + bvirt) + (bvirt - t0);527 _j = s1 + _i;528 bvirt = _j - s1;529 _0 = s1 - (_j - bvirt) + (_i - bvirt);530 _i = _0 - t1;531 bvirt = _0 - _i;532 catt[1] = _0 - (_i + bvirt) + (bvirt - t1);533 u3 = _j + _i;534 bvirt = u3 - _j;535 catt[2] = _j - (u3 - bvirt) + (_i - bvirt);536 catt[3] = u3;537 cattlen = 4;538 } else {539 cat[0] = 0;540 catlen = 1;541 catt[0] = 0;542 cattlen = 1;543 }544 if (bdxtail !== 0) {545 const len = scale(catlen, cat, bdxtail, _16c);546 finlen = finadd(finlen, sum(547 scale(bxtcalen, bxtca, bdxtail, _16), _16,548 scale(len, _16c, 2 * bdx, _32), _32, _48), _48);549 550 const len2 = scale(cattlen, catt, bdxtail, _8);551 finlen = finadd(finlen, sum_three(552 scale(len2, _8, 2 * bdx, _16), _16,553 scale(len2, _8, bdxtail, _16b), _16b,554 scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64);555 556 if (cdytail !== 0) {557 finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16);558 }559 if (adytail !== 0) {560 finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16);561 }562 }563 if (bdytail !== 0) {564 const len = scale(catlen, cat, bdytail, _16c);565 finlen = finadd(finlen, sum(566 scale(bytcalen, bytca, bdytail, _16), _16,567 scale(len, _16c, 2 * bdy, _32), _32, _48), _48);568 569 const len2 = scale(cattlen, catt, bdytail, _8);570 finlen = finadd(finlen, sum_three(571 scale(len2, _8, 2 * bdy, _16), _16,572 scale(len2, _8, bdytail, _16b), _16b,573 scale(len, _16c, bdytail, _32), _32, _32b, _64), _64);574 }575 }576 if (cdxtail !== 0 || cdytail !== 0) {577 if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {578 s1 = adxtail * bdy;579 c = splitter * adxtail;580 ahi = c - (c - adxtail);581 alo = adxtail - ahi;582 c = splitter * bdy;583 bhi = c - (c - bdy);584 blo = bdy - bhi;585 s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);586 t1 = adx * bdytail;587 c = splitter * adx;588 ahi = c - (c - adx);589 alo = adx - ahi;590 c = splitter * bdytail;591 bhi = c - (c - bdytail);592 blo = bdytail - bhi;593 t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);594 _i = s0 + t0;595 bvirt = _i - s0;596 u[0] = s0 - (_i - bvirt) + (t0 - bvirt);597 _j = s1 + _i;598 bvirt = _j - s1;599 _0 = s1 - (_j - bvirt) + (_i - bvirt);600 _i = _0 + t1;601 bvirt = _i - _0;602 u[1] = _0 - (_i - bvirt) + (t1 - bvirt);603 u3 = _j + _i;604 bvirt = u3 - _j;605 u[2] = _j - (u3 - bvirt) + (_i - bvirt);606 u[3] = u3;607 n1 = -ady;608 n0 = -adytail;609 s1 = bdxtail * n1;610 c = splitter * bdxtail;611 ahi = c - (c - bdxtail);612 alo = bdxtail - ahi;613 c = splitter * n1;614 bhi = c - (c - n1);615 blo = n1 - bhi;616 s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);617 t1 = bdx * n0;618 c = splitter * bdx;619 ahi = c - (c - bdx);620 alo = bdx - ahi;621 c = splitter * n0;622 bhi = c - (c - n0);623 blo = n0 - bhi;624 t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);625 _i = s0 + t0;626 bvirt = _i - s0;627 v[0] = s0 - (_i - bvirt) + (t0 - bvirt);628 _j = s1 + _i;629 bvirt = _j - s1;630 _0 = s1 - (_j - bvirt) + (_i - bvirt);631 _i = _0 + t1;632 bvirt = _i - _0;633 v[1] = _0 - (_i - bvirt) + (t1 - bvirt);634 u3 = _j + _i;635 bvirt = u3 - _j;636 v[2] = _j - (u3 - bvirt) + (_i - bvirt);637 v[3] = u3;638 abtlen = sum(4, u, 4, v, abt);639 s1 = adxtail * bdytail;640 c = splitter * adxtail;641 ahi = c - (c - adxtail);642 alo = adxtail - ahi;643 c = splitter * bdytail;644 bhi = c - (c - bdytail);645 blo = bdytail - bhi;646 s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);647 t1 = bdxtail * adytail;648 c = splitter * bdxtail;649 ahi = c - (c - bdxtail);650 alo = bdxtail - ahi;651 c = splitter * adytail;652 bhi = c - (c - adytail);653 blo = adytail - bhi;654 t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);655 _i = s0 - t0;656 bvirt = s0 - _i;657 abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);658 _j = s1 + _i;659 bvirt = _j - s1;660 _0 = s1 - (_j - bvirt) + (_i - bvirt);661 _i = _0 - t1;662 bvirt = _0 - _i;663 abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);664 u3 = _j + _i;665 bvirt = u3 - _j;666 abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);667 abtt[3] = u3;668 abttlen = 4;669 } else {670 abt[0] = 0;671 abtlen = 1;672 abtt[0] = 0;673 abttlen = 1;674 }675 if (cdxtail !== 0) {676 const len = scale(abtlen, abt, cdxtail, _16c);677 finlen = finadd(finlen, sum(678 scale(cxtablen, cxtab, cdxtail, _16), _16,679 scale(len, _16c, 2 * cdx, _32), _32, _48), _48);680 681 const len2 = scale(abttlen, abtt, cdxtail, _8);682 finlen = finadd(finlen, sum_three(683 scale(len2, _8, 2 * cdx, _16), _16,684 scale(len2, _8, cdxtail, _16b), _16b,685 scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64);686 687 if (adytail !== 0) {688 finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16);689 }690 if (bdytail !== 0) {691 finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);692 }693 }694 if (cdytail !== 0) {695 const len = scale(abtlen, abt, cdytail, _16c);696 finlen = finadd(finlen, sum(697 scale(cytablen, cytab, cdytail, _16), _16,698 scale(len, _16c, 2 * cdy, _32), _32, _48), _48);699 700 const len2 = scale(abttlen, abtt, cdytail, _8);701 finlen = finadd(finlen, sum_three(702 scale(len2, _8, 2 * cdy, _16), _16,703 scale(len2, _8, cdytail, _16b), _16b,704 scale(len, _16c, cdytail, _32), _32, _32b, _64), _64);705 }706 }707 708 return fin[finlen - 1];709}710 711export function incircle(ax, ay, bx, by, cx, cy, dx, dy) {712 const adx = ax - dx;713 const bdx = bx - dx;714 const cdx = cx - dx;715 const ady = ay - dy;716 const bdy = by - dy;717 const cdy = cy - dy;718 719 const bdxcdy = bdx * cdy;720 const cdxbdy = cdx * bdy;721 const alift = adx * adx + ady * ady;722 723 const cdxady = cdx * ady;724 const adxcdy = adx * cdy;725 const blift = bdx * bdx + bdy * bdy;726 727 const adxbdy = adx * bdy;728 const bdxady = bdx * ady;729 const clift = cdx * cdx + cdy * cdy;730 731 const det =732 alift * (bdxcdy - cdxbdy) +733 blift * (cdxady - adxcdy) +734 clift * (adxbdy - bdxady);735 736 const permanent =737 (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift +738 (Math.abs(cdxady) + Math.abs(adxcdy)) * blift +739 (Math.abs(adxbdy) + Math.abs(bdxady)) * clift;740 741 const errbound = iccerrboundA * permanent;742 743 if (det > errbound || -det > errbound) {744 return det;745 }746 return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);747}748 749export function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {750 const adx = ax - dx;751 const ady = ay - dy;752 const bdx = bx - dx;753 const bdy = by - dy;754 const cdx = cx - dx;755 const cdy = cy - dy;756 757 const abdet = adx * bdy - bdx * ady;758 const bcdet = bdx * cdy - cdx * bdy;759 const cadet = cdx * ady - adx * cdy;760 const alift = adx * adx + ady * ady;761 const blift = bdx * bdx + bdy * bdy;762 const clift = cdx * cdx + cdy * cdy;763 764 return alift * bcdet + blift * cadet + clift * abdet;765}766 