@mui/x-charts-vendor 7.12.0

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.
Files changed (312) hide show
  1. package/README.md +76 -0
  2. package/d3-color.d.ts +5 -0
  3. package/d3-color.js +7 -0
  4. package/d3-delaunay.d.ts +5 -0
  5. package/d3-delaunay.js +7 -0
  6. package/d3-interpolate.d.ts +5 -0
  7. package/d3-interpolate.js +7 -0
  8. package/d3-scale.d.ts +5 -0
  9. package/d3-scale.js +7 -0
  10. package/d3-shape.d.ts +5 -0
  11. package/d3-shape.js +7 -0
  12. package/d3-time.d.ts +5 -0
  13. package/d3-time.js +7 -0
  14. package/es/d3-array.js +6 -0
  15. package/es/d3-color.js +6 -0
  16. package/es/d3-delaunay.js +6 -0
  17. package/es/d3-format.js +6 -0
  18. package/es/d3-interpolate.js +6 -0
  19. package/es/d3-path.js +6 -0
  20. package/es/d3-scale.js +6 -0
  21. package/es/d3-shape.js +6 -0
  22. package/es/d3-time-format.js +6 -0
  23. package/es/d3-time.js +6 -0
  24. package/es/delaunator.js +6 -0
  25. package/es/internmap.js +6 -0
  26. package/es/robust-predicates.js +6 -0
  27. package/lib/d3-array.js +6 -0
  28. package/lib/d3-color.js +6 -0
  29. package/lib/d3-delaunay.js +6 -0
  30. package/lib/d3-format.js +6 -0
  31. package/lib/d3-interpolate.js +6 -0
  32. package/lib/d3-path.js +6 -0
  33. package/lib/d3-scale.js +6 -0
  34. package/lib/d3-shape.js +6 -0
  35. package/lib/d3-time-format.js +6 -0
  36. package/lib/d3-time.js +6 -0
  37. package/lib/delaunator.js +6 -0
  38. package/lib/internmap.js +6 -0
  39. package/lib/robust-predicates.js +6 -0
  40. package/lib-vendor/d3-array/LICENSE +13 -0
  41. package/lib-vendor/d3-array/dist/d3-array.js +1349 -0
  42. package/lib-vendor/d3-array/dist/d3-array.min.js +777 -0
  43. package/lib-vendor/d3-array/src/array.js +9 -0
  44. package/lib-vendor/d3-array/src/ascending.js +9 -0
  45. package/lib-vendor/d3-array/src/bin.js +126 -0
  46. package/lib-vendor/d3-array/src/bisect.js +15 -0
  47. package/lib-vendor/d3-array/src/bisector.js +59 -0
  48. package/lib-vendor/d3-array/src/blur.js +122 -0
  49. package/lib-vendor/d3-array/src/constant.js +9 -0
  50. package/lib-vendor/d3-array/src/count.js +24 -0
  51. package/lib-vendor/d3-array/src/cross.js +35 -0
  52. package/lib-vendor/d3-array/src/cumsum.js +11 -0
  53. package/lib-vendor/d3-array/src/descending.js +9 -0
  54. package/lib-vendor/d3-array/src/deviation.js +12 -0
  55. package/lib-vendor/d3-array/src/difference.js +16 -0
  56. package/lib-vendor/d3-array/src/disjoint.js +24 -0
  57. package/lib-vendor/d3-array/src/every.js +16 -0
  58. package/lib-vendor/d3-array/src/extent.js +35 -0
  59. package/lib-vendor/d3-array/src/filter.js +17 -0
  60. package/lib-vendor/d3-array/src/fsum.js +77 -0
  61. package/lib-vendor/d3-array/src/greatest.js +31 -0
  62. package/lib-vendor/d3-array/src/greatestIndex.js +23 -0
  63. package/lib-vendor/d3-array/src/group.js +67 -0
  64. package/lib-vendor/d3-array/src/groupSort.js +15 -0
  65. package/lib-vendor/d3-array/src/identity.js +9 -0
  66. package/lib-vendor/d3-array/src/index.js +539 -0
  67. package/lib-vendor/d3-array/src/intersection.js +23 -0
  68. package/lib-vendor/d3-array/src/least.js +31 -0
  69. package/lib-vendor/d3-array/src/leastIndex.js +23 -0
  70. package/lib-vendor/d3-array/src/map.js +11 -0
  71. package/lib-vendor/d3-array/src/max.js +24 -0
  72. package/lib-vendor/d3-array/src/maxIndex.js +26 -0
  73. package/lib-vendor/d3-array/src/mean.js +25 -0
  74. package/lib-vendor/d3-array/src/median.js +16 -0
  75. package/lib-vendor/d3-array/src/merge.js +14 -0
  76. package/lib-vendor/d3-array/src/min.js +24 -0
  77. package/lib-vendor/d3-array/src/minIndex.js +26 -0
  78. package/lib-vendor/d3-array/src/mode.js +33 -0
  79. package/lib-vendor/d3-array/src/nice.js +23 -0
  80. package/lib-vendor/d3-array/src/number.js +26 -0
  81. package/lib-vendor/d3-array/src/pairs.js +21 -0
  82. package/lib-vendor/d3-array/src/permute.js +9 -0
  83. package/lib-vendor/d3-array/src/quantile.js +55 -0
  84. package/lib-vendor/d3-array/src/quickselect.js +47 -0
  85. package/lib-vendor/d3-array/src/range.js +16 -0
  86. package/lib-vendor/d3-array/src/rank.js +30 -0
  87. package/lib-vendor/d3-array/src/reduce.js +28 -0
  88. package/lib-vendor/d3-array/src/reverse.js +10 -0
  89. package/lib-vendor/d3-array/src/scan.js +12 -0
  90. package/lib-vendor/d3-array/src/shuffle.js +20 -0
  91. package/lib-vendor/d3-array/src/some.js +16 -0
  92. package/lib-vendor/d3-array/src/sort.js +45 -0
  93. package/lib-vendor/d3-array/src/subset.js +11 -0
  94. package/lib-vendor/d3-array/src/sum.js +24 -0
  95. package/lib-vendor/d3-array/src/superset.js +28 -0
  96. package/lib-vendor/d3-array/src/threshold/freedmanDiaconis.js +14 -0
  97. package/lib-vendor/d3-array/src/threshold/scott.js +14 -0
  98. package/lib-vendor/d3-array/src/threshold/sturges.js +11 -0
  99. package/lib-vendor/d3-array/src/ticks.js +60 -0
  100. package/lib-vendor/d3-array/src/transpose.js +20 -0
  101. package/lib-vendor/d3-array/src/union.js +16 -0
  102. package/lib-vendor/d3-array/src/variance.js +31 -0
  103. package/lib-vendor/d3-array/src/zip.js +11 -0
  104. package/lib-vendor/d3-color/LICENSE +13 -0
  105. package/lib-vendor/d3-color/dist/d3-color.js +532 -0
  106. package/lib-vendor/d3-color/dist/d3-color.min.js +446 -0
  107. package/lib-vendor/d3-color/src/color.js +366 -0
  108. package/lib-vendor/d3-color/src/cubehelix.js +61 -0
  109. package/lib-vendor/d3-color/src/define.js +16 -0
  110. package/lib-vendor/d3-color/src/index.js +59 -0
  111. package/lib-vendor/d3-color/src/lab.js +117 -0
  112. package/lib-vendor/d3-color/src/math.js +8 -0
  113. package/lib-vendor/d3-delaunay/LICENSE +14 -0
  114. package/lib-vendor/d3-delaunay/dist/d3-delaunay.js +1398 -0
  115. package/lib-vendor/d3-delaunay/dist/d3-delaunay.min.js +853 -0
  116. package/lib-vendor/d3-delaunay/src/delaunay.js +282 -0
  117. package/lib-vendor/d3-delaunay/src/index.js +20 -0
  118. package/lib-vendor/d3-delaunay/src/path.js +43 -0
  119. package/lib-vendor/d3-delaunay/src/polygon.js +24 -0
  120. package/lib-vendor/d3-delaunay/src/voronoi.js +390 -0
  121. package/lib-vendor/d3-format/LICENSE +13 -0
  122. package/lib-vendor/d3-format/dist/d3-format.js +313 -0
  123. package/lib-vendor/d3-format/dist/d3-format.min.js +193 -0
  124. package/lib-vendor/d3-format/src/defaultLocale.js +23 -0
  125. package/lib-vendor/d3-format/src/exponent.js +10 -0
  126. package/lib-vendor/d3-format/src/formatDecimal.js +23 -0
  127. package/lib-vendor/d3-format/src/formatGroup.js +22 -0
  128. package/lib-vendor/d3-format/src/formatNumerals.js +13 -0
  129. package/lib-vendor/d3-format/src/formatPrefixAuto.js +18 -0
  130. package/lib-vendor/d3-format/src/formatRounded.js +14 -0
  131. package/lib-vendor/d3-format/src/formatSpecifier.js +42 -0
  132. package/lib-vendor/d3-format/src/formatTrim.js +25 -0
  133. package/lib-vendor/d3-format/src/formatTypes.js +25 -0
  134. package/lib-vendor/d3-format/src/identity.js +9 -0
  135. package/lib-vendor/d3-format/src/index.js +68 -0
  136. package/lib-vendor/d3-format/src/locale.js +152 -0
  137. package/lib-vendor/d3-format/src/precisionFixed.js +11 -0
  138. package/lib-vendor/d3-format/src/precisionPrefix.js +11 -0
  139. package/lib-vendor/d3-format/src/precisionRound.js +12 -0
  140. package/lib-vendor/d3-interpolate/LICENSE +13 -0
  141. package/lib-vendor/d3-interpolate/dist/d3-interpolate.js +543 -0
  142. package/lib-vendor/d3-interpolate/dist/d3-interpolate.min.js +362 -0
  143. package/lib-vendor/d3-interpolate/src/array.js +28 -0
  144. package/lib-vendor/d3-interpolate/src/basis.js +23 -0
  145. package/lib-vendor/d3-interpolate/src/basisClosed.js +18 -0
  146. package/lib-vendor/d3-interpolate/src/color.js +33 -0
  147. package/lib-vendor/d3-interpolate/src/constant.js +8 -0
  148. package/lib-vendor/d3-interpolate/src/cubehelix.js +32 -0
  149. package/lib-vendor/d3-interpolate/src/date.js +12 -0
  150. package/lib-vendor/d3-interpolate/src/discrete.js +12 -0
  151. package/lib-vendor/d3-interpolate/src/hcl.js +27 -0
  152. package/lib-vendor/d3-interpolate/src/hsl.js +27 -0
  153. package/lib-vendor/d3-interpolate/src/hue.js +14 -0
  154. package/lib-vendor/d3-interpolate/src/index.js +191 -0
  155. package/lib-vendor/d3-interpolate/src/lab.js +22 -0
  156. package/lib-vendor/d3-interpolate/src/number.js +11 -0
  157. package/lib-vendor/d3-interpolate/src/numberArray.js +20 -0
  158. package/lib-vendor/d3-interpolate/src/object.js +26 -0
  159. package/lib-vendor/d3-interpolate/src/piecewise.js +20 -0
  160. package/lib-vendor/d3-interpolate/src/quantize.js +11 -0
  161. package/lib-vendor/d3-interpolate/src/rgb.js +59 -0
  162. package/lib-vendor/d3-interpolate/src/round.js +11 -0
  163. package/lib-vendor/d3-interpolate/src/string.js +75 -0
  164. package/lib-vendor/d3-interpolate/src/transform/decompose.js +31 -0
  165. package/lib-vendor/d3-interpolate/src/transform/index.js +83 -0
  166. package/lib-vendor/d3-interpolate/src/transform/parse.js +25 -0
  167. package/lib-vendor/d3-interpolate/src/value.js +23 -0
  168. package/lib-vendor/d3-interpolate/src/zoom.js +66 -0
  169. package/lib-vendor/d3-path/LICENSE +13 -0
  170. package/lib-vendor/d3-path/dist/d3-path.js +161 -0
  171. package/lib-vendor/d3-path/dist/d3-path.min.js +92 -0
  172. package/lib-vendor/d3-path/src/index.js +24 -0
  173. package/lib-vendor/d3-path/src/path.js +158 -0
  174. package/lib-vendor/d3-scale/LICENSE +13 -0
  175. package/lib-vendor/d3-scale/dist/d3-scale.js +944 -0
  176. package/lib-vendor/d3-scale/dist/d3-scale.min.js +690 -0
  177. package/lib-vendor/d3-scale/src/band.js +87 -0
  178. package/lib-vendor/d3-scale/src/colors.js +11 -0
  179. package/lib-vendor/d3-scale/src/constant.js +11 -0
  180. package/lib-vendor/d3-scale/src/continuous.js +116 -0
  181. package/lib-vendor/d3-scale/src/diverging.js +91 -0
  182. package/lib-vendor/d3-scale/src/identity.js +27 -0
  183. package/lib-vendor/d3-scale/src/index.js +193 -0
  184. package/lib-vendor/d3-scale/src/init.js +38 -0
  185. package/lib-vendor/d3-scale/src/linear.js +67 -0
  186. package/lib-vendor/d3-scale/src/log.js +123 -0
  187. package/lib-vendor/d3-scale/src/nice.js +21 -0
  188. package/lib-vendor/d3-scale/src/number.js +9 -0
  189. package/lib-vendor/d3-scale/src/ordinal.js +44 -0
  190. package/lib-vendor/d3-scale/src/pow.js +44 -0
  191. package/lib-vendor/d3-scale/src/quantile.js +48 -0
  192. package/lib-vendor/d3-scale/src/quantize.js +46 -0
  193. package/lib-vendor/d3-scale/src/radial.js +53 -0
  194. package/lib-vendor/d3-scale/src/sequential.js +90 -0
  195. package/lib-vendor/d3-scale/src/sequentialQuantile.js +38 -0
  196. package/lib-vendor/d3-scale/src/symlog.js +35 -0
  197. package/lib-vendor/d3-scale/src/threshold.js +34 -0
  198. package/lib-vendor/d3-scale/src/tickFormat.js +37 -0
  199. package/lib-vendor/d3-scale/src/time.js +62 -0
  200. package/lib-vendor/d3-scale/src/utcTime.js +13 -0
  201. package/lib-vendor/d3-shape/LICENSE +13 -0
  202. package/lib-vendor/d3-shape/dist/d3-shape.js +2004 -0
  203. package/lib-vendor/d3-shape/dist/d3-shape.min.js +1389 -0
  204. package/lib-vendor/d3-shape/src/arc.js +250 -0
  205. package/lib-vendor/d3-shape/src/area.js +98 -0
  206. package/lib-vendor/d3-shape/src/areaRadial.js +42 -0
  207. package/lib-vendor/d3-shape/src/array.js +12 -0
  208. package/lib-vendor/d3-shape/src/constant.js +11 -0
  209. package/lib-vendor/d3-shape/src/curve/basis.js +62 -0
  210. package/lib-vendor/d3-shape/src/curve/basisClosed.js +70 -0
  211. package/lib-vendor/d3-shape/src/curve/basisOpen.js +54 -0
  212. package/lib-vendor/d3-shape/src/curve/bump.js +81 -0
  213. package/lib-vendor/d3-shape/src/curve/bundle.js +50 -0
  214. package/lib-vendor/d3-shape/src/curve/cardinal.js +69 -0
  215. package/lib-vendor/d3-shape/src/curve/cardinalClosed.js +76 -0
  216. package/lib-vendor/d3-shape/src/curve/cardinalOpen.js +60 -0
  217. package/lib-vendor/d3-shape/src/curve/catmullRom.js +92 -0
  218. package/lib-vendor/d3-shape/src/curve/catmullRomClosed.js +83 -0
  219. package/lib-vendor/d3-shape/src/curve/catmullRomOpen.js +67 -0
  220. package/lib-vendor/d3-shape/src/curve/linear.js +42 -0
  221. package/lib-vendor/d3-shape/src/curve/linearClosed.js +28 -0
  222. package/lib-vendor/d3-shape/src/curve/monotone.js +121 -0
  223. package/lib-vendor/d3-shape/src/curve/natural.js +67 -0
  224. package/lib-vendor/d3-shape/src/curve/radial.js +37 -0
  225. package/lib-vendor/d3-shape/src/curve/step.js +63 -0
  226. package/lib-vendor/d3-shape/src/descending.js +9 -0
  227. package/lib-vendor/d3-shape/src/identity.js +9 -0
  228. package/lib-vendor/d3-shape/src/index.js +436 -0
  229. package/lib-vendor/d3-shape/src/line.js +52 -0
  230. package/lib-vendor/d3-shape/src/lineRadial.js +24 -0
  231. package/lib-vendor/d3-shape/src/link.js +70 -0
  232. package/lib-vendor/d3-shape/src/math.js +26 -0
  233. package/lib-vendor/d3-shape/src/noop.js +7 -0
  234. package/lib-vendor/d3-shape/src/offset/diverging.js +20 -0
  235. package/lib-vendor/d3-shape/src/offset/expand.js +16 -0
  236. package/lib-vendor/d3-shape/src/offset/none.js +15 -0
  237. package/lib-vendor/d3-shape/src/offset/silhouette.js +16 -0
  238. package/lib-vendor/d3-shape/src/offset/wiggle.js +30 -0
  239. package/lib-vendor/d3-shape/src/order/appearance.js +23 -0
  240. package/lib-vendor/d3-shape/src/order/ascending.js +23 -0
  241. package/lib-vendor/d3-shape/src/order/descending.js +11 -0
  242. package/lib-vendor/d3-shape/src/order/insideOut.js +31 -0
  243. package/lib-vendor/d3-shape/src/order/none.js +12 -0
  244. package/lib-vendor/d3-shape/src/order/reverse.js +11 -0
  245. package/lib-vendor/d3-shape/src/path.js +22 -0
  246. package/lib-vendor/d3-shape/src/pie.js +79 -0
  247. package/lib-vendor/d3-shape/src/point.js +13 -0
  248. package/lib-vendor/d3-shape/src/pointRadial.js +9 -0
  249. package/lib-vendor/d3-shape/src/stack.js +55 -0
  250. package/lib-vendor/d3-shape/src/symbol/asterisk.js +21 -0
  251. package/lib-vendor/d3-shape/src/symbol/circle.js +14 -0
  252. package/lib-vendor/d3-shape/src/symbol/cross.js +25 -0
  253. package/lib-vendor/d3-shape/src/symbol/diamond.js +20 -0
  254. package/lib-vendor/d3-shape/src/symbol/diamond2.js +17 -0
  255. package/lib-vendor/d3-shape/src/symbol/plus.js +16 -0
  256. package/lib-vendor/d3-shape/src/symbol/square.js +14 -0
  257. package/lib-vendor/d3-shape/src/symbol/square2.js +17 -0
  258. package/lib-vendor/d3-shape/src/symbol/star.js +28 -0
  259. package/lib-vendor/d3-shape/src/symbol/times.js +16 -0
  260. package/lib-vendor/d3-shape/src/symbol/triangle.js +17 -0
  261. package/lib-vendor/d3-shape/src/symbol/triangle2.js +19 -0
  262. package/lib-vendor/d3-shape/src/symbol/wye.js +32 -0
  263. package/lib-vendor/d3-shape/src/symbol.js +50 -0
  264. package/lib-vendor/d3-time/LICENSE +13 -0
  265. package/lib-vendor/d3-time/dist/d3-time.js +367 -0
  266. package/lib-vendor/d3-time/dist/d3-time.min.js +190 -0
  267. package/lib-vendor/d3-time/src/day.js +30 -0
  268. package/lib-vendor/d3-time/src/duration.js +13 -0
  269. package/lib-vendor/d3-time/src/hour.js +28 -0
  270. package/lib-vendor/d3-time/src/index.js +417 -0
  271. package/lib-vendor/d3-time/src/interval.js +61 -0
  272. package/lib-vendor/d3-time/src/millisecond.js +29 -0
  273. package/lib-vendor/d3-time/src/minute.js +28 -0
  274. package/lib-vendor/d3-time/src/month.js +29 -0
  275. package/lib-vendor/d3-time/src/second.js +18 -0
  276. package/lib-vendor/d3-time/src/ticks.js +41 -0
  277. package/lib-vendor/d3-time/src/week.js +56 -0
  278. package/lib-vendor/d3-time/src/year.js +51 -0
  279. package/lib-vendor/d3-time-format/LICENSE +13 -0
  280. package/lib-vendor/d3-time-format/dist/d3-time-format.js +648 -0
  281. package/lib-vendor/d3-time-format/dist/d3-time-format.min.js +528 -0
  282. package/lib-vendor/d3-time-format/src/defaultLocale.js +32 -0
  283. package/lib-vendor/d3-time-format/src/index.js +60 -0
  284. package/lib-vendor/d3-time-format/src/isoFormat.js +13 -0
  285. package/lib-vendor/d3-time-format/src/isoParse.js +14 -0
  286. package/lib-vendor/d3-time-format/src/locale.js +606 -0
  287. package/lib-vendor/delaunator/LICENSE +15 -0
  288. package/lib-vendor/delaunator/delaunator.js +688 -0
  289. package/lib-vendor/delaunator/delaunator.min.js +316 -0
  290. package/lib-vendor/delaunator/index.js +440 -0
  291. package/lib-vendor/internmap/LICENSE +13 -0
  292. package/lib-vendor/internmap/dist/internmap.js +93 -0
  293. package/lib-vendor/internmap/dist/internmap.min.js +81 -0
  294. package/lib-vendor/internmap/src/index.js +87 -0
  295. package/lib-vendor/robust-predicates/LICENSE +24 -0
  296. package/lib-vendor/robust-predicates/esm/incircle.js +667 -0
  297. package/lib-vendor/robust-predicates/esm/insphere.js +693 -0
  298. package/lib-vendor/robust-predicates/esm/orient2d.js +174 -0
  299. package/lib-vendor/robust-predicates/esm/orient3d.js +422 -0
  300. package/lib-vendor/robust-predicates/esm/util.js +147 -0
  301. package/lib-vendor/robust-predicates/index.js +57 -0
  302. package/lib-vendor/robust-predicates/umd/incircle.js +798 -0
  303. package/lib-vendor/robust-predicates/umd/incircle.min.js +170 -0
  304. package/lib-vendor/robust-predicates/umd/insphere.js +828 -0
  305. package/lib-vendor/robust-predicates/umd/insphere.min.js +223 -0
  306. package/lib-vendor/robust-predicates/umd/orient2d.js +260 -0
  307. package/lib-vendor/robust-predicates/umd/orient2d.min.js +69 -0
  308. package/lib-vendor/robust-predicates/umd/orient3d.js +550 -0
  309. package/lib-vendor/robust-predicates/umd/orient3d.min.js +133 -0
  310. package/lib-vendor/robust-predicates/umd/predicates.js +2073 -0
  311. package/lib-vendor/robust-predicates/umd/predicates.min.js +468 -0
  312. package/package.json +63 -0
@@ -0,0 +1,828 @@
1
+ "use strict";
2
+
3
+ (function (global, factory) {
4
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.predicates = {}));
5
+ })(this, function (exports) {
6
+ 'use strict';
7
+
8
+ const epsilon = 1.1102230246251565e-16;
9
+ const splitter = 134217729;
10
+ const resulterrbound = (3 + 8 * epsilon) * epsilon;
11
+
12
+ // fast_expansion_sum_zeroelim routine from oritinal code
13
+ function sum(elen, e, flen, f, h) {
14
+ let Q, Qnew, hh, bvirt;
15
+ let enow = e[0];
16
+ let fnow = f[0];
17
+ let eindex = 0;
18
+ let findex = 0;
19
+ if (fnow > enow === fnow > -enow) {
20
+ Q = enow;
21
+ enow = e[++eindex];
22
+ } else {
23
+ Q = fnow;
24
+ fnow = f[++findex];
25
+ }
26
+ let hindex = 0;
27
+ if (eindex < elen && findex < flen) {
28
+ if (fnow > enow === fnow > -enow) {
29
+ Qnew = enow + Q;
30
+ hh = Q - (Qnew - enow);
31
+ enow = e[++eindex];
32
+ } else {
33
+ Qnew = fnow + Q;
34
+ hh = Q - (Qnew - fnow);
35
+ fnow = f[++findex];
36
+ }
37
+ Q = Qnew;
38
+ if (hh !== 0) {
39
+ h[hindex++] = hh;
40
+ }
41
+ while (eindex < elen && findex < flen) {
42
+ if (fnow > enow === fnow > -enow) {
43
+ Qnew = Q + enow;
44
+ bvirt = Qnew - Q;
45
+ hh = Q - (Qnew - bvirt) + (enow - bvirt);
46
+ enow = e[++eindex];
47
+ } else {
48
+ Qnew = Q + fnow;
49
+ bvirt = Qnew - Q;
50
+ hh = Q - (Qnew - bvirt) + (fnow - bvirt);
51
+ fnow = f[++findex];
52
+ }
53
+ Q = Qnew;
54
+ if (hh !== 0) {
55
+ h[hindex++] = hh;
56
+ }
57
+ }
58
+ }
59
+ while (eindex < elen) {
60
+ Qnew = Q + enow;
61
+ bvirt = Qnew - Q;
62
+ hh = Q - (Qnew - bvirt) + (enow - bvirt);
63
+ enow = e[++eindex];
64
+ Q = Qnew;
65
+ if (hh !== 0) {
66
+ h[hindex++] = hh;
67
+ }
68
+ }
69
+ while (findex < flen) {
70
+ Qnew = Q + fnow;
71
+ bvirt = Qnew - Q;
72
+ hh = Q - (Qnew - bvirt) + (fnow - bvirt);
73
+ fnow = f[++findex];
74
+ Q = Qnew;
75
+ if (hh !== 0) {
76
+ h[hindex++] = hh;
77
+ }
78
+ }
79
+ if (Q !== 0 || hindex === 0) {
80
+ h[hindex++] = Q;
81
+ }
82
+ return hindex;
83
+ }
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) {
90
+ let Q, sum, hh, product1, product0;
91
+ let bvirt, c, ahi, alo, bhi, blo;
92
+ c = splitter * b;
93
+ bhi = c - (c - b);
94
+ blo = b - bhi;
95
+ let enow = e[0];
96
+ Q = enow * b;
97
+ c = splitter * enow;
98
+ ahi = c - (c - enow);
99
+ alo = enow - ahi;
100
+ hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);
101
+ let hindex = 0;
102
+ if (hh !== 0) {
103
+ h[hindex++] = hh;
104
+ }
105
+ for (let i = 1; i < elen; i++) {
106
+ enow = e[i];
107
+ product1 = enow * b;
108
+ c = splitter * enow;
109
+ ahi = c - (c - enow);
110
+ alo = enow - ahi;
111
+ product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);
112
+ sum = Q + product0;
113
+ bvirt = sum - Q;
114
+ hh = Q - (sum - bvirt) + (product0 - bvirt);
115
+ if (hh !== 0) {
116
+ h[hindex++] = hh;
117
+ }
118
+ Q = product1 + sum;
119
+ hh = sum - (Q - product1);
120
+ if (hh !== 0) {
121
+ h[hindex++] = hh;
122
+ }
123
+ }
124
+ if (Q !== 0 || hindex === 0) {
125
+ h[hindex++] = Q;
126
+ }
127
+ return hindex;
128
+ }
129
+ function negate(elen, e) {
130
+ for (let i = 0; i < elen; i++) e[i] = -e[i];
131
+ return elen;
132
+ }
133
+ function estimate(elen, e) {
134
+ let Q = e[0];
135
+ for (let i = 1; i < elen; i++) Q += e[i];
136
+ return Q;
137
+ }
138
+ function vec(n) {
139
+ return new Float64Array(n);
140
+ }
141
+ const isperrboundA = (16 + 224 * epsilon) * epsilon;
142
+ const isperrboundB = (5 + 72 * epsilon) * epsilon;
143
+ const isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;
144
+ const ab = vec(4);
145
+ const bc = vec(4);
146
+ const cd = vec(4);
147
+ const de = vec(4);
148
+ const ea = vec(4);
149
+ const ac = vec(4);
150
+ const bd = vec(4);
151
+ const ce = vec(4);
152
+ const da = vec(4);
153
+ const eb = vec(4);
154
+ const abc = vec(24);
155
+ const bcd = vec(24);
156
+ const cde = vec(24);
157
+ const dea = vec(24);
158
+ const eab = vec(24);
159
+ const abd = vec(24);
160
+ const bce = vec(24);
161
+ const cda = vec(24);
162
+ const deb = vec(24);
163
+ const eac = vec(24);
164
+ const adet = vec(1152);
165
+ const bdet = vec(1152);
166
+ const cdet = vec(1152);
167
+ const ddet = vec(1152);
168
+ const edet = vec(1152);
169
+ const abdet = vec(2304);
170
+ const cddet = vec(2304);
171
+ const cdedet = vec(3456);
172
+ const deter = vec(5760);
173
+ const _8 = vec(8);
174
+ const _8b = vec(8);
175
+ const _8c = vec(8);
176
+ const _16 = vec(16);
177
+ const _24 = vec(24);
178
+ const _48 = vec(48);
179
+ const _48b = vec(48);
180
+ const _96 = vec(96);
181
+ const _192 = vec(192);
182
+ const _384x = vec(384);
183
+ const _384y = vec(384);
184
+ const _384z = vec(384);
185
+ const _768 = vec(768);
186
+ function sum_three_scale(a, b, c, az, bz, cz, out) {
187
+ return sum_three(scale(4, a, az, _8), _8, scale(4, b, bz, _8b), _8b, scale(4, c, cz, _8c), _8c, _16, out);
188
+ }
189
+ function liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {
190
+ const len = sum(sum(alen, a, blen, b, _48), _48, negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);
191
+ return sum_three(scale(scale(len, _96, x, _192), _192, x, _384x), _384x, scale(scale(len, _96, y, _192), _192, y, _384y), _384y, scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);
192
+ }
193
+ function insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {
194
+ let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;
195
+ s1 = ax * by;
196
+ c = splitter * ax;
197
+ ahi = c - (c - ax);
198
+ alo = ax - ahi;
199
+ c = splitter * by;
200
+ bhi = c - (c - by);
201
+ blo = by - bhi;
202
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
203
+ t1 = bx * ay;
204
+ c = splitter * bx;
205
+ ahi = c - (c - bx);
206
+ alo = bx - ahi;
207
+ c = splitter * ay;
208
+ bhi = c - (c - ay);
209
+ blo = ay - bhi;
210
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
211
+ _i = s0 - t0;
212
+ bvirt = s0 - _i;
213
+ ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
214
+ _j = s1 + _i;
215
+ bvirt = _j - s1;
216
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
217
+ _i = _0 - t1;
218
+ bvirt = _0 - _i;
219
+ ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
220
+ u3 = _j + _i;
221
+ bvirt = u3 - _j;
222
+ ab[2] = _j - (u3 - bvirt) + (_i - bvirt);
223
+ ab[3] = u3;
224
+ s1 = bx * cy;
225
+ c = splitter * bx;
226
+ ahi = c - (c - bx);
227
+ alo = bx - ahi;
228
+ c = splitter * cy;
229
+ bhi = c - (c - cy);
230
+ blo = cy - bhi;
231
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
232
+ t1 = cx * by;
233
+ c = splitter * cx;
234
+ ahi = c - (c - cx);
235
+ alo = cx - ahi;
236
+ c = splitter * by;
237
+ bhi = c - (c - by);
238
+ blo = by - bhi;
239
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
240
+ _i = s0 - t0;
241
+ bvirt = s0 - _i;
242
+ bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
243
+ _j = s1 + _i;
244
+ bvirt = _j - s1;
245
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
246
+ _i = _0 - t1;
247
+ bvirt = _0 - _i;
248
+ bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
249
+ u3 = _j + _i;
250
+ bvirt = u3 - _j;
251
+ bc[2] = _j - (u3 - bvirt) + (_i - bvirt);
252
+ bc[3] = u3;
253
+ s1 = cx * dy;
254
+ c = splitter * cx;
255
+ ahi = c - (c - cx);
256
+ alo = cx - ahi;
257
+ c = splitter * dy;
258
+ bhi = c - (c - dy);
259
+ blo = dy - bhi;
260
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
261
+ t1 = dx * cy;
262
+ c = splitter * dx;
263
+ ahi = c - (c - dx);
264
+ alo = dx - ahi;
265
+ c = splitter * cy;
266
+ bhi = c - (c - cy);
267
+ blo = cy - bhi;
268
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
269
+ _i = s0 - t0;
270
+ bvirt = s0 - _i;
271
+ cd[0] = s0 - (_i + bvirt) + (bvirt - t0);
272
+ _j = s1 + _i;
273
+ bvirt = _j - s1;
274
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
275
+ _i = _0 - t1;
276
+ bvirt = _0 - _i;
277
+ cd[1] = _0 - (_i + bvirt) + (bvirt - t1);
278
+ u3 = _j + _i;
279
+ bvirt = u3 - _j;
280
+ cd[2] = _j - (u3 - bvirt) + (_i - bvirt);
281
+ cd[3] = u3;
282
+ s1 = dx * ey;
283
+ c = splitter * dx;
284
+ ahi = c - (c - dx);
285
+ alo = dx - ahi;
286
+ c = splitter * ey;
287
+ bhi = c - (c - ey);
288
+ blo = ey - bhi;
289
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
290
+ t1 = ex * dy;
291
+ c = splitter * ex;
292
+ ahi = c - (c - ex);
293
+ alo = ex - ahi;
294
+ c = splitter * dy;
295
+ bhi = c - (c - dy);
296
+ blo = dy - bhi;
297
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
298
+ _i = s0 - t0;
299
+ bvirt = s0 - _i;
300
+ de[0] = s0 - (_i + bvirt) + (bvirt - t0);
301
+ _j = s1 + _i;
302
+ bvirt = _j - s1;
303
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
304
+ _i = _0 - t1;
305
+ bvirt = _0 - _i;
306
+ de[1] = _0 - (_i + bvirt) + (bvirt - t1);
307
+ u3 = _j + _i;
308
+ bvirt = u3 - _j;
309
+ de[2] = _j - (u3 - bvirt) + (_i - bvirt);
310
+ de[3] = u3;
311
+ s1 = ex * ay;
312
+ c = splitter * ex;
313
+ ahi = c - (c - ex);
314
+ alo = ex - ahi;
315
+ c = splitter * ay;
316
+ bhi = c - (c - ay);
317
+ blo = ay - bhi;
318
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
319
+ t1 = ax * ey;
320
+ c = splitter * ax;
321
+ ahi = c - (c - ax);
322
+ alo = ax - ahi;
323
+ c = splitter * ey;
324
+ bhi = c - (c - ey);
325
+ blo = ey - bhi;
326
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
327
+ _i = s0 - t0;
328
+ bvirt = s0 - _i;
329
+ ea[0] = s0 - (_i + bvirt) + (bvirt - t0);
330
+ _j = s1 + _i;
331
+ bvirt = _j - s1;
332
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
333
+ _i = _0 - t1;
334
+ bvirt = _0 - _i;
335
+ ea[1] = _0 - (_i + bvirt) + (bvirt - t1);
336
+ u3 = _j + _i;
337
+ bvirt = u3 - _j;
338
+ ea[2] = _j - (u3 - bvirt) + (_i - bvirt);
339
+ ea[3] = u3;
340
+ s1 = ax * cy;
341
+ c = splitter * ax;
342
+ ahi = c - (c - ax);
343
+ alo = ax - ahi;
344
+ c = splitter * cy;
345
+ bhi = c - (c - cy);
346
+ blo = cy - bhi;
347
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
348
+ t1 = cx * ay;
349
+ c = splitter * cx;
350
+ ahi = c - (c - cx);
351
+ alo = cx - ahi;
352
+ c = splitter * ay;
353
+ bhi = c - (c - ay);
354
+ blo = ay - bhi;
355
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
356
+ _i = s0 - t0;
357
+ bvirt = s0 - _i;
358
+ ac[0] = s0 - (_i + bvirt) + (bvirt - t0);
359
+ _j = s1 + _i;
360
+ bvirt = _j - s1;
361
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
362
+ _i = _0 - t1;
363
+ bvirt = _0 - _i;
364
+ ac[1] = _0 - (_i + bvirt) + (bvirt - t1);
365
+ u3 = _j + _i;
366
+ bvirt = u3 - _j;
367
+ ac[2] = _j - (u3 - bvirt) + (_i - bvirt);
368
+ ac[3] = u3;
369
+ s1 = bx * dy;
370
+ c = splitter * bx;
371
+ ahi = c - (c - bx);
372
+ alo = bx - ahi;
373
+ c = splitter * dy;
374
+ bhi = c - (c - dy);
375
+ blo = dy - bhi;
376
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
377
+ t1 = dx * by;
378
+ c = splitter * dx;
379
+ ahi = c - (c - dx);
380
+ alo = dx - ahi;
381
+ c = splitter * by;
382
+ bhi = c - (c - by);
383
+ blo = by - bhi;
384
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
385
+ _i = s0 - t0;
386
+ bvirt = s0 - _i;
387
+ bd[0] = s0 - (_i + bvirt) + (bvirt - t0);
388
+ _j = s1 + _i;
389
+ bvirt = _j - s1;
390
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
391
+ _i = _0 - t1;
392
+ bvirt = _0 - _i;
393
+ bd[1] = _0 - (_i + bvirt) + (bvirt - t1);
394
+ u3 = _j + _i;
395
+ bvirt = u3 - _j;
396
+ bd[2] = _j - (u3 - bvirt) + (_i - bvirt);
397
+ bd[3] = u3;
398
+ s1 = cx * ey;
399
+ c = splitter * cx;
400
+ ahi = c - (c - cx);
401
+ alo = cx - ahi;
402
+ c = splitter * ey;
403
+ bhi = c - (c - ey);
404
+ blo = ey - bhi;
405
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
406
+ t1 = ex * cy;
407
+ c = splitter * ex;
408
+ ahi = c - (c - ex);
409
+ alo = ex - ahi;
410
+ c = splitter * cy;
411
+ bhi = c - (c - cy);
412
+ blo = cy - bhi;
413
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
414
+ _i = s0 - t0;
415
+ bvirt = s0 - _i;
416
+ ce[0] = s0 - (_i + bvirt) + (bvirt - t0);
417
+ _j = s1 + _i;
418
+ bvirt = _j - s1;
419
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
420
+ _i = _0 - t1;
421
+ bvirt = _0 - _i;
422
+ ce[1] = _0 - (_i + bvirt) + (bvirt - t1);
423
+ u3 = _j + _i;
424
+ bvirt = u3 - _j;
425
+ ce[2] = _j - (u3 - bvirt) + (_i - bvirt);
426
+ ce[3] = u3;
427
+ s1 = dx * ay;
428
+ c = splitter * dx;
429
+ ahi = c - (c - dx);
430
+ alo = dx - ahi;
431
+ c = splitter * ay;
432
+ bhi = c - (c - ay);
433
+ blo = ay - bhi;
434
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
435
+ t1 = ax * dy;
436
+ c = splitter * ax;
437
+ ahi = c - (c - ax);
438
+ alo = ax - ahi;
439
+ c = splitter * dy;
440
+ bhi = c - (c - dy);
441
+ blo = dy - bhi;
442
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
443
+ _i = s0 - t0;
444
+ bvirt = s0 - _i;
445
+ da[0] = s0 - (_i + bvirt) + (bvirt - t0);
446
+ _j = s1 + _i;
447
+ bvirt = _j - s1;
448
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
449
+ _i = _0 - t1;
450
+ bvirt = _0 - _i;
451
+ da[1] = _0 - (_i + bvirt) + (bvirt - t1);
452
+ u3 = _j + _i;
453
+ bvirt = u3 - _j;
454
+ da[2] = _j - (u3 - bvirt) + (_i - bvirt);
455
+ da[3] = u3;
456
+ s1 = ex * by;
457
+ c = splitter * ex;
458
+ ahi = c - (c - ex);
459
+ alo = ex - ahi;
460
+ c = splitter * by;
461
+ bhi = c - (c - by);
462
+ blo = by - bhi;
463
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
464
+ t1 = bx * ey;
465
+ c = splitter * bx;
466
+ ahi = c - (c - bx);
467
+ alo = bx - ahi;
468
+ c = splitter * ey;
469
+ bhi = c - (c - ey);
470
+ blo = ey - bhi;
471
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
472
+ _i = s0 - t0;
473
+ bvirt = s0 - _i;
474
+ eb[0] = s0 - (_i + bvirt) + (bvirt - t0);
475
+ _j = s1 + _i;
476
+ bvirt = _j - s1;
477
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
478
+ _i = _0 - t1;
479
+ bvirt = _0 - _i;
480
+ eb[1] = _0 - (_i + bvirt) + (bvirt - t1);
481
+ u3 = _j + _i;
482
+ bvirt = u3 - _j;
483
+ eb[2] = _j - (u3 - bvirt) + (_i - bvirt);
484
+ eb[3] = u3;
485
+ const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);
486
+ const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);
487
+ const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);
488
+ const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);
489
+ const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);
490
+ const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);
491
+ const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);
492
+ const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);
493
+ const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);
494
+ const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);
495
+ const deterlen = sum_three(liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet, liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet, sum_three(liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet, liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet, liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);
496
+ return deter[deterlen - 1];
497
+ }
498
+ const xdet = vec(96);
499
+ const ydet = vec(96);
500
+ const zdet = vec(96);
501
+ const fin = vec(1152);
502
+ function liftadapt(a, b, c, az, bz, cz, x, y, z, out) {
503
+ const len = sum_three_scale(a, b, c, az, bz, cz, _24);
504
+ return sum_three(scale(scale(len, _24, x, _48), _48, x, xdet), xdet, scale(scale(len, _24, y, _48), _48, y, ydet), ydet, scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);
505
+ }
506
+ function insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {
507
+ let ab3, bc3, cd3, da3, ac3, bd3;
508
+ let aextail, bextail, cextail, dextail;
509
+ let aeytail, beytail, ceytail, deytail;
510
+ let aeztail, beztail, ceztail, deztail;
511
+ let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;
512
+ const aex = ax - ex;
513
+ const bex = bx - ex;
514
+ const cex = cx - ex;
515
+ const dex = dx - ex;
516
+ const aey = ay - ey;
517
+ const bey = by - ey;
518
+ const cey = cy - ey;
519
+ const dey = dy - ey;
520
+ const aez = az - ez;
521
+ const bez = bz - ez;
522
+ const cez = cz - ez;
523
+ const dez = dz - ez;
524
+ s1 = aex * bey;
525
+ c = splitter * aex;
526
+ ahi = c - (c - aex);
527
+ alo = aex - ahi;
528
+ c = splitter * bey;
529
+ bhi = c - (c - bey);
530
+ blo = bey - bhi;
531
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
532
+ t1 = bex * aey;
533
+ c = splitter * bex;
534
+ ahi = c - (c - bex);
535
+ alo = bex - ahi;
536
+ c = splitter * aey;
537
+ bhi = c - (c - aey);
538
+ blo = aey - bhi;
539
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
540
+ _i = s0 - t0;
541
+ bvirt = s0 - _i;
542
+ ab[0] = s0 - (_i + bvirt) + (bvirt - t0);
543
+ _j = s1 + _i;
544
+ bvirt = _j - s1;
545
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
546
+ _i = _0 - t1;
547
+ bvirt = _0 - _i;
548
+ ab[1] = _0 - (_i + bvirt) + (bvirt - t1);
549
+ ab3 = _j + _i;
550
+ bvirt = ab3 - _j;
551
+ ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);
552
+ ab[3] = ab3;
553
+ s1 = bex * cey;
554
+ c = splitter * bex;
555
+ ahi = c - (c - bex);
556
+ alo = bex - ahi;
557
+ c = splitter * cey;
558
+ bhi = c - (c - cey);
559
+ blo = cey - bhi;
560
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
561
+ t1 = cex * bey;
562
+ c = splitter * cex;
563
+ ahi = c - (c - cex);
564
+ alo = cex - ahi;
565
+ c = splitter * bey;
566
+ bhi = c - (c - bey);
567
+ blo = bey - bhi;
568
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
569
+ _i = s0 - t0;
570
+ bvirt = s0 - _i;
571
+ bc[0] = s0 - (_i + bvirt) + (bvirt - t0);
572
+ _j = s1 + _i;
573
+ bvirt = _j - s1;
574
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
575
+ _i = _0 - t1;
576
+ bvirt = _0 - _i;
577
+ bc[1] = _0 - (_i + bvirt) + (bvirt - t1);
578
+ bc3 = _j + _i;
579
+ bvirt = bc3 - _j;
580
+ bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);
581
+ bc[3] = bc3;
582
+ s1 = cex * dey;
583
+ c = splitter * cex;
584
+ ahi = c - (c - cex);
585
+ alo = cex - ahi;
586
+ c = splitter * dey;
587
+ bhi = c - (c - dey);
588
+ blo = dey - bhi;
589
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
590
+ t1 = dex * cey;
591
+ c = splitter * dex;
592
+ ahi = c - (c - dex);
593
+ alo = dex - ahi;
594
+ c = splitter * cey;
595
+ bhi = c - (c - cey);
596
+ blo = cey - bhi;
597
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
598
+ _i = s0 - t0;
599
+ bvirt = s0 - _i;
600
+ cd[0] = s0 - (_i + bvirt) + (bvirt - t0);
601
+ _j = s1 + _i;
602
+ bvirt = _j - s1;
603
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
604
+ _i = _0 - t1;
605
+ bvirt = _0 - _i;
606
+ cd[1] = _0 - (_i + bvirt) + (bvirt - t1);
607
+ cd3 = _j + _i;
608
+ bvirt = cd3 - _j;
609
+ cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);
610
+ cd[3] = cd3;
611
+ s1 = dex * aey;
612
+ c = splitter * dex;
613
+ ahi = c - (c - dex);
614
+ alo = dex - ahi;
615
+ c = splitter * aey;
616
+ bhi = c - (c - aey);
617
+ blo = aey - bhi;
618
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
619
+ t1 = aex * dey;
620
+ c = splitter * aex;
621
+ ahi = c - (c - aex);
622
+ alo = aex - ahi;
623
+ c = splitter * dey;
624
+ bhi = c - (c - dey);
625
+ blo = dey - bhi;
626
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
627
+ _i = s0 - t0;
628
+ bvirt = s0 - _i;
629
+ da[0] = s0 - (_i + bvirt) + (bvirt - t0);
630
+ _j = s1 + _i;
631
+ bvirt = _j - s1;
632
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
633
+ _i = _0 - t1;
634
+ bvirt = _0 - _i;
635
+ da[1] = _0 - (_i + bvirt) + (bvirt - t1);
636
+ da3 = _j + _i;
637
+ bvirt = da3 - _j;
638
+ da[2] = _j - (da3 - bvirt) + (_i - bvirt);
639
+ da[3] = da3;
640
+ s1 = aex * cey;
641
+ c = splitter * aex;
642
+ ahi = c - (c - aex);
643
+ alo = aex - ahi;
644
+ c = splitter * cey;
645
+ bhi = c - (c - cey);
646
+ blo = cey - bhi;
647
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
648
+ t1 = cex * aey;
649
+ c = splitter * cex;
650
+ ahi = c - (c - cex);
651
+ alo = cex - ahi;
652
+ c = splitter * aey;
653
+ bhi = c - (c - aey);
654
+ blo = aey - bhi;
655
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
656
+ _i = s0 - t0;
657
+ bvirt = s0 - _i;
658
+ ac[0] = s0 - (_i + bvirt) + (bvirt - t0);
659
+ _j = s1 + _i;
660
+ bvirt = _j - s1;
661
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
662
+ _i = _0 - t1;
663
+ bvirt = _0 - _i;
664
+ ac[1] = _0 - (_i + bvirt) + (bvirt - t1);
665
+ ac3 = _j + _i;
666
+ bvirt = ac3 - _j;
667
+ ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);
668
+ ac[3] = ac3;
669
+ s1 = bex * dey;
670
+ c = splitter * bex;
671
+ ahi = c - (c - bex);
672
+ alo = bex - ahi;
673
+ c = splitter * dey;
674
+ bhi = c - (c - dey);
675
+ blo = dey - bhi;
676
+ s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
677
+ t1 = dex * bey;
678
+ c = splitter * dex;
679
+ ahi = c - (c - dex);
680
+ alo = dex - ahi;
681
+ c = splitter * bey;
682
+ bhi = c - (c - bey);
683
+ blo = bey - bhi;
684
+ t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
685
+ _i = s0 - t0;
686
+ bvirt = s0 - _i;
687
+ bd[0] = s0 - (_i + bvirt) + (bvirt - t0);
688
+ _j = s1 + _i;
689
+ bvirt = _j - s1;
690
+ _0 = s1 - (_j - bvirt) + (_i - bvirt);
691
+ _i = _0 - t1;
692
+ bvirt = _0 - _i;
693
+ bd[1] = _0 - (_i + bvirt) + (bvirt - t1);
694
+ bd3 = _j + _i;
695
+ bvirt = bd3 - _j;
696
+ bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);
697
+ bd[3] = bd3;
698
+ const finlen = sum(sum(negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet, liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet, sum(negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet, liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);
699
+ let det = estimate(finlen, fin);
700
+ let errbound = isperrboundB * permanent;
701
+ if (det >= errbound || -det >= errbound) {
702
+ return det;
703
+ }
704
+ bvirt = ax - aex;
705
+ aextail = ax - (aex + bvirt) + (bvirt - ex);
706
+ bvirt = ay - aey;
707
+ aeytail = ay - (aey + bvirt) + (bvirt - ey);
708
+ bvirt = az - aez;
709
+ aeztail = az - (aez + bvirt) + (bvirt - ez);
710
+ bvirt = bx - bex;
711
+ bextail = bx - (bex + bvirt) + (bvirt - ex);
712
+ bvirt = by - bey;
713
+ beytail = by - (bey + bvirt) + (bvirt - ey);
714
+ bvirt = bz - bez;
715
+ beztail = bz - (bez + bvirt) + (bvirt - ez);
716
+ bvirt = cx - cex;
717
+ cextail = cx - (cex + bvirt) + (bvirt - ex);
718
+ bvirt = cy - cey;
719
+ ceytail = cy - (cey + bvirt) + (bvirt - ey);
720
+ bvirt = cz - cez;
721
+ ceztail = cz - (cez + bvirt) + (bvirt - ez);
722
+ bvirt = dx - dex;
723
+ dextail = dx - (dex + bvirt) + (bvirt - ex);
724
+ bvirt = dy - dey;
725
+ deytail = dy - (dey + bvirt) + (bvirt - ey);
726
+ bvirt = dz - dez;
727
+ deztail = dz - (dez + bvirt) + (bvirt - ez);
728
+ if (aextail === 0 && aeytail === 0 && aeztail === 0 && bextail === 0 && beytail === 0 && beztail === 0 && cextail === 0 && ceytail === 0 && ceztail === 0 && dextail === 0 && deytail === 0 && deztail === 0) {
729
+ return det;
730
+ }
731
+ errbound = isperrboundC * permanent + resulterrbound * Math.abs(det);
732
+ const abeps = aex * beytail + bey * aextail - (aey * bextail + bex * aeytail);
733
+ const bceps = bex * ceytail + cey * bextail - (bey * cextail + cex * beytail);
734
+ const cdeps = cex * deytail + dey * cextail - (cey * dextail + dex * ceytail);
735
+ const daeps = dex * aeytail + aey * dextail - (dey * aextail + aex * deytail);
736
+ const aceps = aex * ceytail + cey * aextail - (aey * cextail + cex * aeytail);
737
+ const bdeps = bex * deytail + dey * bextail - (bey * dextail + dex * beytail);
738
+ det += (bex * bex + bey * bey + bez * bez) * (cez * daeps + dez * aceps + aez * cdeps + (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) * (aez * bceps - bez * aceps + cez * abeps + (aeztail * bc3 - beztail * ac3 + ceztail * ab3)) - ((aex * aex + aey * aey + aez * aez) * (bez * cdeps - cez * bdeps + dez * bceps + (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) * (dez * abeps + aez * bdeps + bez * daeps + (deztail * ab3 + aeztail * bd3 + beztail * da3))) + 2 * ((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) + (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3) - ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) + (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));
739
+ if (det >= errbound || -det >= errbound) {
740
+ return det;
741
+ }
742
+ return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);
743
+ }
744
+ function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {
745
+ const aex = ax - ex;
746
+ const bex = bx - ex;
747
+ const cex = cx - ex;
748
+ const dex = dx - ex;
749
+ const aey = ay - ey;
750
+ const bey = by - ey;
751
+ const cey = cy - ey;
752
+ const dey = dy - ey;
753
+ const aez = az - ez;
754
+ const bez = bz - ez;
755
+ const cez = cz - ez;
756
+ const dez = dz - ez;
757
+ const aexbey = aex * bey;
758
+ const bexaey = bex * aey;
759
+ const ab = aexbey - bexaey;
760
+ const bexcey = bex * cey;
761
+ const cexbey = cex * bey;
762
+ const bc = bexcey - cexbey;
763
+ const cexdey = cex * dey;
764
+ const dexcey = dex * cey;
765
+ const cd = cexdey - dexcey;
766
+ const dexaey = dex * aey;
767
+ const aexdey = aex * dey;
768
+ const da = dexaey - aexdey;
769
+ const aexcey = aex * cey;
770
+ const cexaey = cex * aey;
771
+ const ac = aexcey - cexaey;
772
+ const bexdey = bex * dey;
773
+ const dexbey = dex * bey;
774
+ const bd = bexdey - dexbey;
775
+ const alift = aex * aex + aey * aey + aez * aez;
776
+ const blift = bex * bex + bey * bey + bez * bez;
777
+ const clift = cex * cex + cey * cey + cez * cez;
778
+ const dlift = dex * dex + dey * dey + dez * dez;
779
+ const det = clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab) + (alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd));
780
+ const aezplus = Math.abs(aez);
781
+ const bezplus = Math.abs(bez);
782
+ const cezplus = Math.abs(cez);
783
+ const dezplus = Math.abs(dez);
784
+ const aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey);
785
+ const bexceyplus = Math.abs(bexcey) + Math.abs(cexbey);
786
+ const cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey);
787
+ const dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey);
788
+ const aexceyplus = Math.abs(aexcey) + Math.abs(cexaey);
789
+ const bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey);
790
+ const permanent = (cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift + (dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift + (aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift + (bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift;
791
+ const errbound = isperrboundA * permanent;
792
+ if (det > errbound || -det > errbound) {
793
+ return det;
794
+ }
795
+ return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);
796
+ }
797
+ function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {
798
+ const aex = pax - pex;
799
+ const bex = pbx - pex;
800
+ const cex = pcx - pex;
801
+ const dex = pdx - pex;
802
+ const aey = pay - pey;
803
+ const bey = pby - pey;
804
+ const cey = pcy - pey;
805
+ const dey = pdy - pey;
806
+ const aez = paz - pez;
807
+ const bez = pbz - pez;
808
+ const cez = pcz - pez;
809
+ const dez = pdz - pez;
810
+ const ab = aex * bey - bex * aey;
811
+ const bc = bex * cey - cex * bey;
812
+ const cd = cex * dey - dex * cey;
813
+ const da = dex * aey - aex * dey;
814
+ const ac = aex * cey - cex * aey;
815
+ const bd = bex * dey - dex * bey;
816
+ const abc = aez * bc - bez * ac + cez * ab;
817
+ const bcd = bez * cd - cez * bd + dez * bc;
818
+ const cda = cez * da + dez * ac + aez * cd;
819
+ const dab = dez * ab + aez * bd + bez * da;
820
+ const alift = aex * aex + aey * aey + aez * aez;
821
+ const blift = bex * bex + bey * bey + bez * bez;
822
+ const clift = cex * cex + cey * cey + cez * cez;
823
+ const dlift = dex * dex + dey * dey + dez * dez;
824
+ return clift * dab - dlift * abc + (alift * bcd - blift * cda);
825
+ }
826
+ exports.insphere = insphere;
827
+ exports.inspherefast = inspherefast;
828
+ });