@cortex-js/compute-engine 0.55.4 → 0.55.5

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 (258) hide show
  1. package/dist/compile.esm.js +100 -13
  2. package/dist/compile.min.esm.js +101 -49
  3. package/dist/compile.min.umd.cjs +101 -49
  4. package/dist/compile.umd.cjs +100 -13
  5. package/dist/compute-engine.esm.js +102 -14
  6. package/dist/compute-engine.min.esm.js +114 -62
  7. package/dist/compute-engine.min.umd.cjs +114 -62
  8. package/dist/compute-engine.umd.cjs +102 -14
  9. package/dist/core.esm.js +100 -13
  10. package/dist/core.min.esm.js +113 -61
  11. package/dist/core.min.umd.cjs +113 -61
  12. package/dist/core.umd.cjs +100 -13
  13. package/dist/interval.esm.js +2 -2
  14. package/dist/interval.min.esm.js +2 -2
  15. package/dist/interval.min.umd.cjs +2 -2
  16. package/dist/interval.umd.cjs +2 -2
  17. package/dist/latex-syntax.esm.js +2 -2
  18. package/dist/latex-syntax.min.esm.js +2 -2
  19. package/dist/latex-syntax.min.umd.cjs +2 -2
  20. package/dist/latex-syntax.umd.cjs +2 -2
  21. package/dist/math-json.esm.js +2 -2
  22. package/dist/math-json.min.esm.js +2 -2
  23. package/dist/math-json.min.umd.cjs +2 -2
  24. package/dist/math-json.umd.cjs +2 -2
  25. package/dist/numerics.esm.js +2 -2
  26. package/dist/numerics.min.esm.js +2 -2
  27. package/dist/numerics.min.umd.cjs +2 -2
  28. package/dist/numerics.umd.cjs +2 -2
  29. package/dist/types/big-decimal/big-decimal.d.ts +1 -1
  30. package/dist/types/big-decimal/index.d.ts +1 -1
  31. package/dist/types/big-decimal/transcendentals.d.ts +1 -1
  32. package/dist/types/big-decimal/utils.d.ts +1 -1
  33. package/dist/types/common/ansi-codes.d.ts +1 -1
  34. package/dist/types/common/configuration-change.d.ts +1 -1
  35. package/dist/types/common/fuzzy-string-match.d.ts +1 -1
  36. package/dist/types/common/grapheme-splitter.d.ts +1 -1
  37. package/dist/types/common/interruptible.d.ts +1 -1
  38. package/dist/types/common/one-of.d.ts +1 -1
  39. package/dist/types/common/signals.d.ts +1 -1
  40. package/dist/types/common/type/ast-nodes.d.ts +1 -1
  41. package/dist/types/common/type/boxed-type.d.ts +1 -1
  42. package/dist/types/common/type/lexer.d.ts +1 -1
  43. package/dist/types/common/type/parse.d.ts +1 -1
  44. package/dist/types/common/type/parser.d.ts +1 -1
  45. package/dist/types/common/type/primitive.d.ts +1 -1
  46. package/dist/types/common/type/reduce.d.ts +1 -1
  47. package/dist/types/common/type/serialize.d.ts +1 -1
  48. package/dist/types/common/type/subtype.d.ts +1 -1
  49. package/dist/types/common/type/type-builder.d.ts +1 -1
  50. package/dist/types/common/type/types.d.ts +1 -1
  51. package/dist/types/common/type/utils.d.ts +1 -1
  52. package/dist/types/common/utils.d.ts +1 -1
  53. package/dist/types/compile.d.ts +1 -1
  54. package/dist/types/compute-engine/assume.d.ts +1 -1
  55. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +1 -1
  56. package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
  57. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
  58. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
  59. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
  60. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
  61. package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
  62. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
  63. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
  64. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
  65. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
  66. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
  67. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
  68. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
  69. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
  70. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
  71. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  72. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
  73. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
  74. package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
  75. package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
  76. package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
  77. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
  78. package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
  79. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
  80. package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
  81. package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +1 -1
  82. package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
  83. package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
  84. package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
  85. package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
  86. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
  87. package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
  88. package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
  89. package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
  90. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
  91. package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
  92. package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
  93. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
  94. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
  95. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
  96. package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
  97. package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
  98. package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
  99. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
  100. package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
  101. package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
  102. package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
  103. package/dist/types/compute-engine/collection-utils.d.ts +1 -1
  104. package/dist/types/compute-engine/compilation/base-compiler.d.ts +1 -1
  105. package/dist/types/compute-engine/compilation/compile-expression.d.ts +3 -2
  106. package/dist/types/compute-engine/compilation/constant-folding.d.ts +1 -1
  107. package/dist/types/compute-engine/compilation/fractal-orbit.d.ts +9 -3
  108. package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
  109. package/dist/types/compute-engine/compilation/gpu-target.d.ts +12 -5
  110. package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +1 -1
  111. package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
  112. package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
  113. package/dist/types/compute-engine/compilation/types.d.ts +22 -3
  114. package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
  115. package/dist/types/compute-engine/cost-function.d.ts +1 -1
  116. package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
  117. package/dist/types/compute-engine/engine-cache.d.ts +1 -1
  118. package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
  119. package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
  120. package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
  121. package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
  122. package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
  123. package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
  124. package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
  125. package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
  126. package/dist/types/compute-engine/engine-runtime-state.d.ts +1 -1
  127. package/dist/types/compute-engine/engine-scope.d.ts +1 -1
  128. package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
  129. package/dist/types/compute-engine/engine-simplification-rules.d.ts +1 -1
  130. package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
  131. package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
  132. package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
  133. package/dist/types/compute-engine/free-functions.d.ts +1 -1
  134. package/dist/types/compute-engine/function-utils.d.ts +1 -1
  135. package/dist/types/compute-engine/global-types.d.ts +1 -1
  136. package/dist/types/compute-engine/index.d.ts +3 -2
  137. package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
  138. package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
  139. package/dist/types/compute-engine/interval/elementary.d.ts +1 -1
  140. package/dist/types/compute-engine/interval/index.d.ts +1 -1
  141. package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
  142. package/dist/types/compute-engine/interval/types.d.ts +1 -1
  143. package/dist/types/compute-engine/interval/util.d.ts +1 -1
  144. package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +1 -1
  145. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  146. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  147. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  148. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  149. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  150. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  151. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  152. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  153. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  154. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  155. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  156. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  157. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  158. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
  159. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
  160. package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +1 -1
  161. package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
  162. package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
  163. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
  164. package/dist/types/compute-engine/latex-syntax/parse.d.ts +1 -1
  165. package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
  166. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
  167. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
  168. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
  169. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  170. package/dist/types/compute-engine/latex-syntax/types.d.ts +1 -1
  171. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  172. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
  173. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  174. package/dist/types/compute-engine/library/collections.d.ts +1 -1
  175. package/dist/types/compute-engine/library/colors.d.ts +1 -1
  176. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  177. package/dist/types/compute-engine/library/complex.d.ts +1 -1
  178. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  179. package/dist/types/compute-engine/library/core.d.ts +1 -1
  180. package/dist/types/compute-engine/library/fractals.d.ts +1 -1
  181. package/dist/types/compute-engine/library/library.d.ts +1 -1
  182. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  183. package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
  184. package/dist/types/compute-engine/library/logic.d.ts +1 -1
  185. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  186. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  187. package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
  188. package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
  189. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  190. package/dist/types/compute-engine/library/sets.d.ts +1 -1
  191. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  192. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  193. package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
  194. package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
  195. package/dist/types/compute-engine/library/units.d.ts +1 -1
  196. package/dist/types/compute-engine/library/utils.d.ts +1 -1
  197. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
  198. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
  199. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
  200. package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
  201. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  202. package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
  203. package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
  204. package/dist/types/compute-engine/numerics/linear-algebra.d.ts +1 -1
  205. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  206. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  207. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
  208. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
  209. package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
  210. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  211. package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
  212. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  213. package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
  214. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
  215. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  216. package/dist/types/compute-engine/numerics/types.d.ts +1 -1
  217. package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
  218. package/dist/types/compute-engine/oeis.d.ts +1 -1
  219. package/dist/types/compute-engine/sequence.d.ts +1 -1
  220. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
  221. package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
  222. package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
  223. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
  224. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
  225. package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
  226. package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
  227. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
  228. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
  229. package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
  230. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
  231. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
  232. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
  233. package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
  234. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
  235. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
  236. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
  237. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  238. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
  239. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  240. package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
  241. package/dist/types/compute-engine/types-definitions.d.ts +1 -1
  242. package/dist/types/compute-engine/types-engine.d.ts +1 -1
  243. package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
  244. package/dist/types/compute-engine/types-expression.d.ts +1 -1
  245. package/dist/types/compute-engine/types-kernel-evaluation.d.ts +1 -1
  246. package/dist/types/compute-engine/types-kernel-serialization.d.ts +1 -1
  247. package/dist/types/compute-engine/types-serialization.d.ts +1 -1
  248. package/dist/types/compute-engine/types.d.ts +1 -1
  249. package/dist/types/compute-engine.d.ts +3 -2
  250. package/dist/types/core.d.ts +1 -1
  251. package/dist/types/interval.d.ts +1 -1
  252. package/dist/types/latex-syntax.d.ts +2 -2
  253. package/dist/types/math-json/symbols.d.ts +1 -1
  254. package/dist/types/math-json/types.d.ts +1 -1
  255. package/dist/types/math-json/utils.d.ts +1 -1
  256. package/dist/types/math-json.d.ts +2 -2
  257. package/dist/types/numerics.d.ts +1 -1
  258. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /** Compile 0.55.4 */
1
+ /** Compile 0.55.5 */
2
2
  (function(global,factory){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.Compile = {}));})(this, (function (exports) { 'use strict';
3
3
  var Compile = (() => {
4
4
  var __defProp = Object.defineProperty;
@@ -15099,7 +15099,8 @@ ${lines.join("\n")}`;
15099
15099
  vars: options?.vars,
15100
15100
  imports: options?.imports,
15101
15101
  preamble: options?.preamble,
15102
- realOnly: options?.realOnly
15102
+ realOnly: options?.realOnly,
15103
+ hints: options?.hints
15103
15104
  });
15104
15105
  } catch (e) {
15105
15106
  if (options?.fallback ?? true) {
@@ -20782,12 +20783,22 @@ ${lines.join("\n")}`;
20782
20783
  }
20783
20784
 
20784
20785
  // src/compute-engine/compilation/fractal-orbit.ts
20786
+ function toBigDecimal(v) {
20787
+ if (typeof v === "object" && "hi" in v)
20788
+ return new BigDecimal(v.hi).add(new BigDecimal(v.lo));
20789
+ return new BigDecimal(v);
20790
+ }
20791
+ function hpToNumber(v) {
20792
+ if (typeof v === "number") return v;
20793
+ if (typeof v === "string") return Number(v);
20794
+ return v.hi + v.lo;
20795
+ }
20785
20796
  function computeReferenceOrbit(center, maxIter, precision) {
20786
20797
  const prevPrecision = BigDecimal.precision;
20787
20798
  BigDecimal.precision = precision;
20788
20799
  try {
20789
- const cr = new BigDecimal(center[0]);
20790
- const ci = new BigDecimal(center[1]);
20800
+ const cr = toBigDecimal(center[0]);
20801
+ const ci = toBigDecimal(center[1]);
20791
20802
  let zr = BigDecimal.ZERO;
20792
20803
  let zi = BigDecimal.ZERO;
20793
20804
  const ESCAPE = new BigDecimal(256);
@@ -21395,12 +21406,12 @@ ${lines.join("\n")}`;
21395
21406
  const iterCode = compileIntArg(maxIter, compile2, target);
21396
21407
  const strategy = selectFractalStrategy(target);
21397
21408
  if (strategy === "double") {
21398
- const cCode = compile2(c);
21399
- return `_fractal_mandelbrot_dp(vec4(${cCode}, vec2(0.0)), ${iterCode})`;
21409
+ const dpCoord = target?.language === "wgsl" ? "_dp_coord(v_uv)" : "_dp_coord()";
21410
+ return `_fractal_mandelbrot_dp(${dpCoord}, ${iterCode})`;
21400
21411
  }
21401
21412
  if (strategy === "perturbation") {
21402
- const cCode = compile2(c);
21403
- return `_fractal_mandelbrot_pt(${cCode}, ${iterCode})`;
21413
+ const ptDelta = target?.language === "wgsl" ? "_pt_delta(v_uv)" : "_pt_delta()";
21414
+ return `_fractal_mandelbrot_pt(${ptDelta}, ${iterCode})`;
21404
21415
  }
21405
21416
  return `_fractal_mandelbrot(${compile2(c)}, ${iterCode})`;
21406
21417
  },
@@ -21410,14 +21421,14 @@ ${lines.join("\n")}`;
21410
21421
  const iterCode = compileIntArg(maxIter, compile2, target);
21411
21422
  const strategy = selectFractalStrategy(target);
21412
21423
  if (strategy === "double") {
21413
- const zCode = compile2(z);
21424
+ const dpCoord = target?.language === "wgsl" ? "_dp_coord(v_uv)" : "_dp_coord()";
21414
21425
  const cCode = compile2(c);
21415
- return `_fractal_julia_dp(vec4(${zCode}, vec2(0.0)), vec4(${cCode}, vec2(0.0)), ${iterCode})`;
21426
+ return `_fractal_julia_dp(${dpCoord}, vec4(${cCode}, vec2(0.0)), ${iterCode})`;
21416
21427
  }
21417
21428
  if (strategy === "perturbation") {
21418
- const zCode = compile2(z);
21429
+ const ptDelta = target?.language === "wgsl" ? "_pt_delta(v_uv)" : "_pt_delta()";
21419
21430
  const cCode = compile2(c);
21420
- return `_fractal_julia_pt(${zCode}, ${cCode}, ${iterCode})`;
21431
+ return `_fractal_julia_pt(${ptDelta}, ${cCode}, ${iterCode})`;
21421
21432
  }
21422
21433
  return `_fractal_julia(${compile2(z)}, ${compile2(c)}, ${iterCode})`;
21423
21434
  },
@@ -22132,6 +22143,23 @@ fn ds_cmp(a: vec2f, b: vec2f) -> f32 {
22132
22143
  }
22133
22144
  `;
22134
22145
  var GPU_FRACTAL_DP_PREAMBLE_GLSL = `
22146
+ uniform float _dp_cx_hi;
22147
+ uniform float _dp_cx_lo;
22148
+ uniform float _dp_cy_hi;
22149
+ uniform float _dp_cy_lo;
22150
+ uniform float _dp_w;
22151
+ uniform float _dp_h;
22152
+
22153
+ vec4 _dp_coord() {
22154
+ // Per-pixel offset from center \u2014 small, so float-precise
22155
+ float dx = (v_uv.x - 0.5) * _dp_w;
22156
+ float dy = (v_uv.y - 0.5) * _dp_h;
22157
+ // Combine center (hi+lo) + delta with emulated double precision
22158
+ vec2 cre = ds_add(vec2(_dp_cx_hi, _dp_cx_lo), ds_from(dx));
22159
+ vec2 cim = ds_add(vec2(_dp_cy_hi, _dp_cy_lo), ds_from(dy));
22160
+ return vec4(cre.x, cim.x, cre.y, cim.y);
22161
+ }
22162
+
22135
22163
  float _fractal_mandelbrot_dp(vec4 c, int maxIter) {
22136
22164
  // c = (re_hi, im_hi, re_lo, im_lo)
22137
22165
  vec2 cr = vec2(c.x, c.z); // real part as ds
@@ -22172,6 +22200,21 @@ float _fractal_julia_dp(vec4 z_in, vec4 c, int maxIter) {
22172
22200
  }
22173
22201
  `;
22174
22202
  var GPU_FRACTAL_DP_PREAMBLE_WGSL = `
22203
+ @group(0) @binding(10) var<uniform> _dp_cx_hi: f32;
22204
+ @group(0) @binding(11) var<uniform> _dp_cx_lo: f32;
22205
+ @group(0) @binding(12) var<uniform> _dp_cy_hi: f32;
22206
+ @group(0) @binding(13) var<uniform> _dp_cy_lo: f32;
22207
+ @group(0) @binding(14) var<uniform> _dp_w: f32;
22208
+ @group(0) @binding(15) var<uniform> _dp_h: f32;
22209
+
22210
+ fn _dp_coord(uv: vec2f) -> vec4f {
22211
+ let dx = (uv.x - 0.5) * _dp_w;
22212
+ let dy = (uv.y - 0.5) * _dp_h;
22213
+ let cre = ds_add(vec2f(_dp_cx_hi, _dp_cx_lo), ds_from(dx));
22214
+ let cim = ds_add(vec2f(_dp_cy_hi, _dp_cy_lo), ds_from(dy));
22215
+ return vec4f(cre.x, cim.x, cre.y, cim.y);
22216
+ }
22217
+
22175
22218
  fn _fractal_mandelbrot_dp(c: vec4f, maxIter: i32) -> f32 {
22176
22219
  let cr = vec2f(c.x, c.z);
22177
22220
  let ci = vec2f(c.y, c.w);
@@ -22257,6 +22300,16 @@ fn _fractal_julia(z_in: vec2f, c: vec2f, maxIter: i32) -> f32 {
22257
22300
  uniform sampler2D _refOrbit;
22258
22301
  uniform int _refOrbitLen;
22259
22302
  uniform int _refOrbitTexWidth;
22303
+ uniform float _pt_offset_x;
22304
+ uniform float _pt_offset_y;
22305
+ uniform float _pt_w;
22306
+ uniform float _pt_h;
22307
+
22308
+ vec2 _pt_delta() {
22309
+ float dx = _pt_offset_x + (v_uv.x - 0.5) * _pt_w;
22310
+ float dy = _pt_offset_y + (v_uv.y - 0.5) * _pt_h;
22311
+ return vec2(dx, dy);
22312
+ }
22260
22313
 
22261
22314
  vec2 _pt_fetch_orbit(int i) {
22262
22315
  int y = i / _refOrbitTexWidth;
@@ -22348,6 +22401,16 @@ float _fractal_julia_pt(vec2 z_delta, vec2 delta_c, int maxIter) {
22348
22401
  @group(0) @binding(1) var _refOrbit: texture_2d<f32>;
22349
22402
  var<uniform> _refOrbitLen: i32;
22350
22403
  var<uniform> _refOrbitTexWidth: i32;
22404
+ var<uniform> _pt_offset_x: f32;
22405
+ var<uniform> _pt_offset_y: f32;
22406
+ var<uniform> _pt_w: f32;
22407
+ var<uniform> _pt_h: f32;
22408
+
22409
+ fn _pt_delta(uv: vec2f) -> vec2f {
22410
+ let dx = _pt_offset_x + (uv.x - 0.5) * _pt_w;
22411
+ let dy = _pt_offset_y + (uv.y - 0.5) * _pt_h;
22412
+ return vec2f(dx, dy);
22413
+ }
22351
22414
 
22352
22415
  fn _pt_fetch_orbit(i: i32) -> vec2f {
22353
22416
  let y = i / _refOrbitTexWidth;
@@ -22945,8 +23008,32 @@ fn _gpu_apca(bg: vec3f, fg: vec3f) -> f32 {
22945
23008
  break;
22946
23009
  }
22947
23010
  }
23011
+ if ((code.includes("_fractal_mandelbrot_dp") || code.includes("_fractal_julia_dp")) && options.hints?.viewport) {
23012
+ const cx = hpToNumber(options.hints.viewport.center[0]);
23013
+ const cy = hpToNumber(options.hints.viewport.center[1]);
23014
+ const size = options.hints.viewport.radius * 2;
23015
+ const cx_hi = Math.fround(cx);
23016
+ const cy_hi = Math.fround(cy);
23017
+ result.uniforms = {
23018
+ ...result.uniforms,
23019
+ _dp_cx_hi: cx_hi,
23020
+ _dp_cx_lo: cx - cx_hi,
23021
+ _dp_cy_hi: cy_hi,
23022
+ _dp_cy_lo: cy - cy_hi,
23023
+ _dp_w: size,
23024
+ _dp_h: size
23025
+ };
23026
+ }
22948
23027
  if ((code.includes("_fractal_mandelbrot_pt") || code.includes("_fractal_julia_pt")) && options.hints?.viewport) {
22949
23028
  const viewport = options.hints.viewport;
23029
+ const size = viewport.radius * 2;
23030
+ result.uniforms = {
23031
+ ...result.uniforms,
23032
+ _pt_offset_x: 0,
23033
+ _pt_offset_y: 0,
23034
+ _pt_w: size,
23035
+ _pt_h: size
23036
+ };
22950
23037
  const digits = Math.max(50, Math.ceil(-Math.log10(viewport.radius)) + 10);
22951
23038
  const maxIter = 1e3;
22952
23039
  const orbit = computeReferenceOrbit(
@@ -25305,7 +25392,7 @@ ${code}`;
25305
25392
  }
25306
25393
 
25307
25394
  // src/compile.ts
25308
- var version = "0.55.4";
25395
+ var version = "0.55.5";
25309
25396
  return __toCommonJS(compile_exports);
25310
25397
  })();
25311
25398
  /*! Bundled license information:
@@ -1,4 +1,4 @@
1
- /** Compute Engine 0.55.4 */
1
+ /** Compute Engine 0.55.5 */
2
2
 
3
3
  // node_modules/complex-esm/dist/src/complex.js
4
4
  var cosh = Math.cosh || function(x) {
@@ -54763,7 +54763,8 @@ function compile(expr2, options) {
54763
54763
  vars: options?.vars,
54764
54764
  imports: options?.imports,
54765
54765
  preamble: options?.preamble,
54766
- realOnly: options?.realOnly
54766
+ realOnly: options?.realOnly,
54767
+ hints: options?.hints
54767
54768
  });
54768
54769
  } catch (e) {
54769
54770
  if (options?.fallback ?? true) {
@@ -61264,12 +61265,22 @@ function fibonacci(n) {
61264
61265
  }
61265
61266
 
61266
61267
  // src/compute-engine/compilation/fractal-orbit.ts
61268
+ function toBigDecimal(v) {
61269
+ if (typeof v === "object" && "hi" in v)
61270
+ return new BigDecimal(v.hi).add(new BigDecimal(v.lo));
61271
+ return new BigDecimal(v);
61272
+ }
61273
+ function hpToNumber(v) {
61274
+ if (typeof v === "number") return v;
61275
+ if (typeof v === "string") return Number(v);
61276
+ return v.hi + v.lo;
61277
+ }
61267
61278
  function computeReferenceOrbit(center, maxIter, precision) {
61268
61279
  const prevPrecision = BigDecimal.precision;
61269
61280
  BigDecimal.precision = precision;
61270
61281
  try {
61271
- const cr = new BigDecimal(center[0]);
61272
- const ci = new BigDecimal(center[1]);
61282
+ const cr = toBigDecimal(center[0]);
61283
+ const ci = toBigDecimal(center[1]);
61273
61284
  let zr = BigDecimal.ZERO;
61274
61285
  let zi = BigDecimal.ZERO;
61275
61286
  const ESCAPE = new BigDecimal(256);
@@ -61877,12 +61888,12 @@ var GPU_FUNCTIONS = {
61877
61888
  const iterCode = compileIntArg(maxIter, compile3, target);
61878
61889
  const strategy = selectFractalStrategy(target);
61879
61890
  if (strategy === "double") {
61880
- const cCode = compile3(c);
61881
- return `_fractal_mandelbrot_dp(vec4(${cCode}, vec2(0.0)), ${iterCode})`;
61891
+ const dpCoord = target?.language === "wgsl" ? "_dp_coord(v_uv)" : "_dp_coord()";
61892
+ return `_fractal_mandelbrot_dp(${dpCoord}, ${iterCode})`;
61882
61893
  }
61883
61894
  if (strategy === "perturbation") {
61884
- const cCode = compile3(c);
61885
- return `_fractal_mandelbrot_pt(${cCode}, ${iterCode})`;
61895
+ const ptDelta = target?.language === "wgsl" ? "_pt_delta(v_uv)" : "_pt_delta()";
61896
+ return `_fractal_mandelbrot_pt(${ptDelta}, ${iterCode})`;
61886
61897
  }
61887
61898
  return `_fractal_mandelbrot(${compile3(c)}, ${iterCode})`;
61888
61899
  },
@@ -61892,14 +61903,14 @@ var GPU_FUNCTIONS = {
61892
61903
  const iterCode = compileIntArg(maxIter, compile3, target);
61893
61904
  const strategy = selectFractalStrategy(target);
61894
61905
  if (strategy === "double") {
61895
- const zCode = compile3(z);
61906
+ const dpCoord = target?.language === "wgsl" ? "_dp_coord(v_uv)" : "_dp_coord()";
61896
61907
  const cCode = compile3(c);
61897
- return `_fractal_julia_dp(vec4(${zCode}, vec2(0.0)), vec4(${cCode}, vec2(0.0)), ${iterCode})`;
61908
+ return `_fractal_julia_dp(${dpCoord}, vec4(${cCode}, vec2(0.0)), ${iterCode})`;
61898
61909
  }
61899
61910
  if (strategy === "perturbation") {
61900
- const zCode = compile3(z);
61911
+ const ptDelta = target?.language === "wgsl" ? "_pt_delta(v_uv)" : "_pt_delta()";
61901
61912
  const cCode = compile3(c);
61902
- return `_fractal_julia_pt(${zCode}, ${cCode}, ${iterCode})`;
61913
+ return `_fractal_julia_pt(${ptDelta}, ${cCode}, ${iterCode})`;
61903
61914
  }
61904
61915
  return `_fractal_julia(${compile3(z)}, ${compile3(c)}, ${iterCode})`;
61905
61916
  },
@@ -62614,6 +62625,23 @@ fn ds_cmp(a: vec2f, b: vec2f) -> f32 {
62614
62625
  }
62615
62626
  `;
62616
62627
  var GPU_FRACTAL_DP_PREAMBLE_GLSL = `
62628
+ uniform float _dp_cx_hi;
62629
+ uniform float _dp_cx_lo;
62630
+ uniform float _dp_cy_hi;
62631
+ uniform float _dp_cy_lo;
62632
+ uniform float _dp_w;
62633
+ uniform float _dp_h;
62634
+
62635
+ vec4 _dp_coord() {
62636
+ // Per-pixel offset from center \u2014 small, so float-precise
62637
+ float dx = (v_uv.x - 0.5) * _dp_w;
62638
+ float dy = (v_uv.y - 0.5) * _dp_h;
62639
+ // Combine center (hi+lo) + delta with emulated double precision
62640
+ vec2 cre = ds_add(vec2(_dp_cx_hi, _dp_cx_lo), ds_from(dx));
62641
+ vec2 cim = ds_add(vec2(_dp_cy_hi, _dp_cy_lo), ds_from(dy));
62642
+ return vec4(cre.x, cim.x, cre.y, cim.y);
62643
+ }
62644
+
62617
62645
  float _fractal_mandelbrot_dp(vec4 c, int maxIter) {
62618
62646
  // c = (re_hi, im_hi, re_lo, im_lo)
62619
62647
  vec2 cr = vec2(c.x, c.z); // real part as ds
@@ -62654,6 +62682,21 @@ float _fractal_julia_dp(vec4 z_in, vec4 c, int maxIter) {
62654
62682
  }
62655
62683
  `;
62656
62684
  var GPU_FRACTAL_DP_PREAMBLE_WGSL = `
62685
+ @group(0) @binding(10) var<uniform> _dp_cx_hi: f32;
62686
+ @group(0) @binding(11) var<uniform> _dp_cx_lo: f32;
62687
+ @group(0) @binding(12) var<uniform> _dp_cy_hi: f32;
62688
+ @group(0) @binding(13) var<uniform> _dp_cy_lo: f32;
62689
+ @group(0) @binding(14) var<uniform> _dp_w: f32;
62690
+ @group(0) @binding(15) var<uniform> _dp_h: f32;
62691
+
62692
+ fn _dp_coord(uv: vec2f) -> vec4f {
62693
+ let dx = (uv.x - 0.5) * _dp_w;
62694
+ let dy = (uv.y - 0.5) * _dp_h;
62695
+ let cre = ds_add(vec2f(_dp_cx_hi, _dp_cx_lo), ds_from(dx));
62696
+ let cim = ds_add(vec2f(_dp_cy_hi, _dp_cy_lo), ds_from(dy));
62697
+ return vec4f(cre.x, cim.x, cre.y, cim.y);
62698
+ }
62699
+
62657
62700
  fn _fractal_mandelbrot_dp(c: vec4f, maxIter: i32) -> f32 {
62658
62701
  let cr = vec2f(c.x, c.z);
62659
62702
  let ci = vec2f(c.y, c.w);
@@ -62739,6 +62782,16 @@ var GPU_FRACTAL_PT_PREAMBLE_GLSL = `
62739
62782
  uniform sampler2D _refOrbit;
62740
62783
  uniform int _refOrbitLen;
62741
62784
  uniform int _refOrbitTexWidth;
62785
+ uniform float _pt_offset_x;
62786
+ uniform float _pt_offset_y;
62787
+ uniform float _pt_w;
62788
+ uniform float _pt_h;
62789
+
62790
+ vec2 _pt_delta() {
62791
+ float dx = _pt_offset_x + (v_uv.x - 0.5) * _pt_w;
62792
+ float dy = _pt_offset_y + (v_uv.y - 0.5) * _pt_h;
62793
+ return vec2(dx, dy);
62794
+ }
62742
62795
 
62743
62796
  vec2 _pt_fetch_orbit(int i) {
62744
62797
  int y = i / _refOrbitTexWidth;
@@ -62830,6 +62883,16 @@ var GPU_FRACTAL_PT_PREAMBLE_WGSL = `
62830
62883
  @group(0) @binding(1) var _refOrbit: texture_2d<f32>;
62831
62884
  var<uniform> _refOrbitLen: i32;
62832
62885
  var<uniform> _refOrbitTexWidth: i32;
62886
+ var<uniform> _pt_offset_x: f32;
62887
+ var<uniform> _pt_offset_y: f32;
62888
+ var<uniform> _pt_w: f32;
62889
+ var<uniform> _pt_h: f32;
62890
+
62891
+ fn _pt_delta(uv: vec2f) -> vec2f {
62892
+ let dx = _pt_offset_x + (uv.x - 0.5) * _pt_w;
62893
+ let dy = _pt_offset_y + (uv.y - 0.5) * _pt_h;
62894
+ return vec2f(dx, dy);
62895
+ }
62833
62896
 
62834
62897
  fn _pt_fetch_orbit(i: i32) -> vec2f {
62835
62898
  let y = i / _refOrbitTexWidth;
@@ -63427,8 +63490,32 @@ var GPUShaderTarget = class {
63427
63490
  break;
63428
63491
  }
63429
63492
  }
63493
+ if ((code.includes("_fractal_mandelbrot_dp") || code.includes("_fractal_julia_dp")) && options.hints?.viewport) {
63494
+ const cx = hpToNumber(options.hints.viewport.center[0]);
63495
+ const cy = hpToNumber(options.hints.viewport.center[1]);
63496
+ const size = options.hints.viewport.radius * 2;
63497
+ const cx_hi = Math.fround(cx);
63498
+ const cy_hi = Math.fround(cy);
63499
+ result.uniforms = {
63500
+ ...result.uniforms,
63501
+ _dp_cx_hi: cx_hi,
63502
+ _dp_cx_lo: cx - cx_hi,
63503
+ _dp_cy_hi: cy_hi,
63504
+ _dp_cy_lo: cy - cy_hi,
63505
+ _dp_w: size,
63506
+ _dp_h: size
63507
+ };
63508
+ }
63430
63509
  if ((code.includes("_fractal_mandelbrot_pt") || code.includes("_fractal_julia_pt")) && options.hints?.viewport) {
63431
63510
  const viewport = options.hints.viewport;
63511
+ const size = viewport.radius * 2;
63512
+ result.uniforms = {
63513
+ ...result.uniforms,
63514
+ _pt_offset_x: 0,
63515
+ _pt_offset_y: 0,
63516
+ _pt_w: size,
63517
+ _pt_h: size
63518
+ };
63432
63519
  const digits = Math.max(50, Math.ceil(-Math.log10(viewport.radius)) + 10);
63433
63520
  const maxIter = 1e3;
63434
63521
  const orbit = computeReferenceOrbit(
@@ -68857,19 +68944,20 @@ var ComputeEngine = class _ComputeEngine {
68857
68944
  _setDefaultEngineFactory(() => new ComputeEngine());
68858
68945
 
68859
68946
  // src/compute-engine.ts
68860
- var version = "0.55.4";
68947
+ var version = "0.55.5";
68861
68948
  ComputeEngine._latexSyntaxFactory = () => new LatexSyntax();
68862
68949
  _setDefaultEngineFactory(
68863
68950
  () => new ComputeEngine({ latexSyntax: new LatexSyntax() })
68864
68951
  );
68865
68952
  globalThis[/* @__PURE__ */ Symbol.for("io.cortexjs.compute-engine")] = {
68866
68953
  ComputeEngine: ComputeEngine.prototype.constructor,
68867
- version: "0.55.4"
68954
+ version: "0.55.5"
68868
68955
  };
68869
68956
  export {
68870
68957
  DEFINITIONS_ALGEBRA as ALGEBRA_DICTIONARY,
68871
68958
  DEFINITIONS_ARITHMETIC as ARITHMETIC_DICTIONARY,
68872
68959
  BaseCompiler,
68960
+ BigDecimal,
68873
68961
  DEFINITIONS_CALCULUS as CALCULUS_DICTIONARY,
68874
68962
  DEFINITIONS_COMPLEX as COMPLEX_DICTIONARY,
68875
68963
  DEFINITIONS_CORE as CORE_DICTIONARY,