@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
- /** Compute Engine 0.55.4 */
1
+ /** Compute Engine 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.ComputeEngine = {}));})(this, (function (exports) { 'use strict';
3
3
  var ComputeEngine = (() => {
4
4
  var __defProp = Object.defineProperty;
@@ -25,6 +25,7 @@ var ComputeEngine = (() => {
25
25
  ALGEBRA_DICTIONARY: () => DEFINITIONS_ALGEBRA,
26
26
  ARITHMETIC_DICTIONARY: () => DEFINITIONS_ARITHMETIC,
27
27
  BaseCompiler: () => BaseCompiler,
28
+ BigDecimal: () => BigDecimal,
28
29
  CALCULUS_DICTIONARY: () => DEFINITIONS_CALCULUS,
29
30
  COMPLEX_DICTIONARY: () => DEFINITIONS_COMPLEX,
30
31
  CORE_DICTIONARY: () => DEFINITIONS_CORE,
@@ -54838,7 +54839,8 @@ Error in definition of "${name}"`,
54838
54839
  vars: options?.vars,
54839
54840
  imports: options?.imports,
54840
54841
  preamble: options?.preamble,
54841
- realOnly: options?.realOnly
54842
+ realOnly: options?.realOnly,
54843
+ hints: options?.hints
54842
54844
  });
54843
54845
  } catch (e) {
54844
54846
  if (options?.fallback ?? true) {
@@ -61339,12 +61341,22 @@ Error in definition of "${name}"`,
61339
61341
  }
61340
61342
 
61341
61343
  // src/compute-engine/compilation/fractal-orbit.ts
61344
+ function toBigDecimal(v) {
61345
+ if (typeof v === "object" && "hi" in v)
61346
+ return new BigDecimal(v.hi).add(new BigDecimal(v.lo));
61347
+ return new BigDecimal(v);
61348
+ }
61349
+ function hpToNumber(v) {
61350
+ if (typeof v === "number") return v;
61351
+ if (typeof v === "string") return Number(v);
61352
+ return v.hi + v.lo;
61353
+ }
61342
61354
  function computeReferenceOrbit(center, maxIter, precision) {
61343
61355
  const prevPrecision = BigDecimal.precision;
61344
61356
  BigDecimal.precision = precision;
61345
61357
  try {
61346
- const cr = new BigDecimal(center[0]);
61347
- const ci = new BigDecimal(center[1]);
61358
+ const cr = toBigDecimal(center[0]);
61359
+ const ci = toBigDecimal(center[1]);
61348
61360
  let zr = BigDecimal.ZERO;
61349
61361
  let zi = BigDecimal.ZERO;
61350
61362
  const ESCAPE = new BigDecimal(256);
@@ -61952,12 +61964,12 @@ Error in definition of "${name}"`,
61952
61964
  const iterCode = compileIntArg(maxIter, compile3, target);
61953
61965
  const strategy = selectFractalStrategy(target);
61954
61966
  if (strategy === "double") {
61955
- const cCode = compile3(c);
61956
- return `_fractal_mandelbrot_dp(vec4(${cCode}, vec2(0.0)), ${iterCode})`;
61967
+ const dpCoord = target?.language === "wgsl" ? "_dp_coord(v_uv)" : "_dp_coord()";
61968
+ return `_fractal_mandelbrot_dp(${dpCoord}, ${iterCode})`;
61957
61969
  }
61958
61970
  if (strategy === "perturbation") {
61959
- const cCode = compile3(c);
61960
- return `_fractal_mandelbrot_pt(${cCode}, ${iterCode})`;
61971
+ const ptDelta = target?.language === "wgsl" ? "_pt_delta(v_uv)" : "_pt_delta()";
61972
+ return `_fractal_mandelbrot_pt(${ptDelta}, ${iterCode})`;
61961
61973
  }
61962
61974
  return `_fractal_mandelbrot(${compile3(c)}, ${iterCode})`;
61963
61975
  },
@@ -61967,14 +61979,14 @@ Error in definition of "${name}"`,
61967
61979
  const iterCode = compileIntArg(maxIter, compile3, target);
61968
61980
  const strategy = selectFractalStrategy(target);
61969
61981
  if (strategy === "double") {
61970
- const zCode = compile3(z);
61982
+ const dpCoord = target?.language === "wgsl" ? "_dp_coord(v_uv)" : "_dp_coord()";
61971
61983
  const cCode = compile3(c);
61972
- return `_fractal_julia_dp(vec4(${zCode}, vec2(0.0)), vec4(${cCode}, vec2(0.0)), ${iterCode})`;
61984
+ return `_fractal_julia_dp(${dpCoord}, vec4(${cCode}, vec2(0.0)), ${iterCode})`;
61973
61985
  }
61974
61986
  if (strategy === "perturbation") {
61975
- const zCode = compile3(z);
61987
+ const ptDelta = target?.language === "wgsl" ? "_pt_delta(v_uv)" : "_pt_delta()";
61976
61988
  const cCode = compile3(c);
61977
- return `_fractal_julia_pt(${zCode}, ${cCode}, ${iterCode})`;
61989
+ return `_fractal_julia_pt(${ptDelta}, ${cCode}, ${iterCode})`;
61978
61990
  }
61979
61991
  return `_fractal_julia(${compile3(z)}, ${compile3(c)}, ${iterCode})`;
61980
61992
  },
@@ -62689,6 +62701,23 @@ fn ds_cmp(a: vec2f, b: vec2f) -> f32 {
62689
62701
  }
62690
62702
  `;
62691
62703
  var GPU_FRACTAL_DP_PREAMBLE_GLSL = `
62704
+ uniform float _dp_cx_hi;
62705
+ uniform float _dp_cx_lo;
62706
+ uniform float _dp_cy_hi;
62707
+ uniform float _dp_cy_lo;
62708
+ uniform float _dp_w;
62709
+ uniform float _dp_h;
62710
+
62711
+ vec4 _dp_coord() {
62712
+ // Per-pixel offset from center \u2014 small, so float-precise
62713
+ float dx = (v_uv.x - 0.5) * _dp_w;
62714
+ float dy = (v_uv.y - 0.5) * _dp_h;
62715
+ // Combine center (hi+lo) + delta with emulated double precision
62716
+ vec2 cre = ds_add(vec2(_dp_cx_hi, _dp_cx_lo), ds_from(dx));
62717
+ vec2 cim = ds_add(vec2(_dp_cy_hi, _dp_cy_lo), ds_from(dy));
62718
+ return vec4(cre.x, cim.x, cre.y, cim.y);
62719
+ }
62720
+
62692
62721
  float _fractal_mandelbrot_dp(vec4 c, int maxIter) {
62693
62722
  // c = (re_hi, im_hi, re_lo, im_lo)
62694
62723
  vec2 cr = vec2(c.x, c.z); // real part as ds
@@ -62729,6 +62758,21 @@ float _fractal_julia_dp(vec4 z_in, vec4 c, int maxIter) {
62729
62758
  }
62730
62759
  `;
62731
62760
  var GPU_FRACTAL_DP_PREAMBLE_WGSL = `
62761
+ @group(0) @binding(10) var<uniform> _dp_cx_hi: f32;
62762
+ @group(0) @binding(11) var<uniform> _dp_cx_lo: f32;
62763
+ @group(0) @binding(12) var<uniform> _dp_cy_hi: f32;
62764
+ @group(0) @binding(13) var<uniform> _dp_cy_lo: f32;
62765
+ @group(0) @binding(14) var<uniform> _dp_w: f32;
62766
+ @group(0) @binding(15) var<uniform> _dp_h: f32;
62767
+
62768
+ fn _dp_coord(uv: vec2f) -> vec4f {
62769
+ let dx = (uv.x - 0.5) * _dp_w;
62770
+ let dy = (uv.y - 0.5) * _dp_h;
62771
+ let cre = ds_add(vec2f(_dp_cx_hi, _dp_cx_lo), ds_from(dx));
62772
+ let cim = ds_add(vec2f(_dp_cy_hi, _dp_cy_lo), ds_from(dy));
62773
+ return vec4f(cre.x, cim.x, cre.y, cim.y);
62774
+ }
62775
+
62732
62776
  fn _fractal_mandelbrot_dp(c: vec4f, maxIter: i32) -> f32 {
62733
62777
  let cr = vec2f(c.x, c.z);
62734
62778
  let ci = vec2f(c.y, c.w);
@@ -62814,6 +62858,16 @@ fn _fractal_julia(z_in: vec2f, c: vec2f, maxIter: i32) -> f32 {
62814
62858
  uniform sampler2D _refOrbit;
62815
62859
  uniform int _refOrbitLen;
62816
62860
  uniform int _refOrbitTexWidth;
62861
+ uniform float _pt_offset_x;
62862
+ uniform float _pt_offset_y;
62863
+ uniform float _pt_w;
62864
+ uniform float _pt_h;
62865
+
62866
+ vec2 _pt_delta() {
62867
+ float dx = _pt_offset_x + (v_uv.x - 0.5) * _pt_w;
62868
+ float dy = _pt_offset_y + (v_uv.y - 0.5) * _pt_h;
62869
+ return vec2(dx, dy);
62870
+ }
62817
62871
 
62818
62872
  vec2 _pt_fetch_orbit(int i) {
62819
62873
  int y = i / _refOrbitTexWidth;
@@ -62905,6 +62959,16 @@ float _fractal_julia_pt(vec2 z_delta, vec2 delta_c, int maxIter) {
62905
62959
  @group(0) @binding(1) var _refOrbit: texture_2d<f32>;
62906
62960
  var<uniform> _refOrbitLen: i32;
62907
62961
  var<uniform> _refOrbitTexWidth: i32;
62962
+ var<uniform> _pt_offset_x: f32;
62963
+ var<uniform> _pt_offset_y: f32;
62964
+ var<uniform> _pt_w: f32;
62965
+ var<uniform> _pt_h: f32;
62966
+
62967
+ fn _pt_delta(uv: vec2f) -> vec2f {
62968
+ let dx = _pt_offset_x + (uv.x - 0.5) * _pt_w;
62969
+ let dy = _pt_offset_y + (uv.y - 0.5) * _pt_h;
62970
+ return vec2f(dx, dy);
62971
+ }
62908
62972
 
62909
62973
  fn _pt_fetch_orbit(i: i32) -> vec2f {
62910
62974
  let y = i / _refOrbitTexWidth;
@@ -63502,8 +63566,32 @@ fn _gpu_apca(bg: vec3f, fg: vec3f) -> f32 {
63502
63566
  break;
63503
63567
  }
63504
63568
  }
63569
+ if ((code.includes("_fractal_mandelbrot_dp") || code.includes("_fractal_julia_dp")) && options.hints?.viewport) {
63570
+ const cx = hpToNumber(options.hints.viewport.center[0]);
63571
+ const cy = hpToNumber(options.hints.viewport.center[1]);
63572
+ const size = options.hints.viewport.radius * 2;
63573
+ const cx_hi = Math.fround(cx);
63574
+ const cy_hi = Math.fround(cy);
63575
+ result.uniforms = {
63576
+ ...result.uniforms,
63577
+ _dp_cx_hi: cx_hi,
63578
+ _dp_cx_lo: cx - cx_hi,
63579
+ _dp_cy_hi: cy_hi,
63580
+ _dp_cy_lo: cy - cy_hi,
63581
+ _dp_w: size,
63582
+ _dp_h: size
63583
+ };
63584
+ }
63505
63585
  if ((code.includes("_fractal_mandelbrot_pt") || code.includes("_fractal_julia_pt")) && options.hints?.viewport) {
63506
63586
  const viewport = options.hints.viewport;
63587
+ const size = viewport.radius * 2;
63588
+ result.uniforms = {
63589
+ ...result.uniforms,
63590
+ _pt_offset_x: 0,
63591
+ _pt_offset_y: 0,
63592
+ _pt_w: size,
63593
+ _pt_h: size
63594
+ };
63507
63595
  const digits = Math.max(50, Math.ceil(-Math.log10(viewport.radius)) + 10);
63508
63596
  const maxIter = 1e3;
63509
63597
  const orbit = computeReferenceOrbit(
@@ -68932,14 +69020,14 @@ ${code}`;
68932
69020
  _setDefaultEngineFactory(() => new ComputeEngine());
68933
69021
 
68934
69022
  // src/compute-engine.ts
68935
- var version = "0.55.4";
69023
+ var version = "0.55.5";
68936
69024
  ComputeEngine._latexSyntaxFactory = () => new LatexSyntax();
68937
69025
  _setDefaultEngineFactory(
68938
69026
  () => new ComputeEngine({ latexSyntax: new LatexSyntax() })
68939
69027
  );
68940
69028
  globalThis[/* @__PURE__ */ Symbol.for("io.cortexjs.compute-engine")] = {
68941
69029
  ComputeEngine: ComputeEngine.prototype.constructor,
68942
- version: "0.55.4"
69030
+ version: "0.55.5"
68943
69031
  };
68944
69032
  return __toCommonJS(compute_engine_exports);
68945
69033
  })();
package/dist/core.esm.js CHANGED
@@ -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(
@@ -68435,7 +68522,7 @@ var ComputeEngine = class _ComputeEngine {
68435
68522
  _setDefaultEngineFactory(() => new ComputeEngine());
68436
68523
 
68437
68524
  // src/core.ts
68438
- var version = "0.55.4";
68525
+ var version = "0.55.5";
68439
68526
  export {
68440
68527
  ComputeEngine,
68441
68528
  N,