@cortex-js/compute-engine 0.60.0 → 0.61.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 (292) hide show
  1. package/dist/compile.esm.js +1270 -25
  2. package/dist/compile.min.esm.js +324 -78
  3. package/dist/compile.min.umd.cjs +324 -78
  4. package/dist/compile.umd.cjs +1270 -25
  5. package/dist/compute-engine.esm.js +867 -26
  6. package/dist/compute-engine.min.esm.js +329 -83
  7. package/dist/compute-engine.min.umd.cjs +329 -83
  8. package/dist/compute-engine.umd.cjs +867 -26
  9. package/dist/core.esm.js +855 -24
  10. package/dist/core.min.esm.js +330 -84
  11. package/dist/core.min.umd.cjs +330 -84
  12. package/dist/core.umd.cjs +855 -24
  13. package/dist/identities.esm.js +2 -2
  14. package/dist/identities.min.esm.js +2 -2
  15. package/dist/identities.min.umd.cjs +2 -2
  16. package/dist/identities.umd.cjs +2 -2
  17. package/dist/integration-rules.esm.js +2 -2
  18. package/dist/integration-rules.min.esm.js +2 -2
  19. package/dist/integration-rules.min.umd.cjs +2 -2
  20. package/dist/integration-rules.umd.cjs +2 -2
  21. package/dist/interval.esm.js +2 -2
  22. package/dist/interval.min.esm.js +2 -2
  23. package/dist/interval.min.umd.cjs +2 -2
  24. package/dist/interval.umd.cjs +2 -2
  25. package/dist/latex-syntax.esm.js +2 -2
  26. package/dist/latex-syntax.min.esm.js +2 -2
  27. package/dist/latex-syntax.min.umd.cjs +2 -2
  28. package/dist/latex-syntax.umd.cjs +2 -2
  29. package/dist/math-json.esm.js +2 -2
  30. package/dist/math-json.min.esm.js +2 -2
  31. package/dist/math-json.min.umd.cjs +2 -2
  32. package/dist/math-json.umd.cjs +2 -2
  33. package/dist/numerics.esm.js +2 -2
  34. package/dist/numerics.min.esm.js +2 -2
  35. package/dist/numerics.min.umd.cjs +2 -2
  36. package/dist/numerics.umd.cjs +2 -2
  37. package/dist/types/big-decimal/big-decimal.d.ts +1 -1
  38. package/dist/types/big-decimal/index.d.ts +1 -1
  39. package/dist/types/big-decimal/transcendentals.d.ts +1 -1
  40. package/dist/types/big-decimal/utils.d.ts +1 -1
  41. package/dist/types/common/ansi-codes.d.ts +1 -1
  42. package/dist/types/common/configuration-change.d.ts +1 -1
  43. package/dist/types/common/fuzzy-string-match.d.ts +1 -1
  44. package/dist/types/common/grapheme-splitter.d.ts +1 -1
  45. package/dist/types/common/interruptible.d.ts +1 -1
  46. package/dist/types/common/one-of.d.ts +1 -1
  47. package/dist/types/common/signals.d.ts +1 -1
  48. package/dist/types/common/type/ast-nodes.d.ts +1 -1
  49. package/dist/types/common/type/boxed-type.d.ts +1 -1
  50. package/dist/types/common/type/lexer.d.ts +1 -1
  51. package/dist/types/common/type/parse.d.ts +1 -1
  52. package/dist/types/common/type/parser.d.ts +1 -1
  53. package/dist/types/common/type/primitive.d.ts +1 -1
  54. package/dist/types/common/type/reduce.d.ts +1 -1
  55. package/dist/types/common/type/serialize.d.ts +1 -1
  56. package/dist/types/common/type/subtype.d.ts +1 -1
  57. package/dist/types/common/type/type-builder.d.ts +1 -1
  58. package/dist/types/common/type/types.d.ts +1 -1
  59. package/dist/types/common/type/utils.d.ts +1 -1
  60. package/dist/types/common/utils.d.ts +1 -1
  61. package/dist/types/compile.d.ts +2 -1
  62. package/dist/types/compute-engine/assume.d.ts +1 -1
  63. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +1 -1
  64. package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
  65. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
  66. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
  67. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
  68. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
  69. package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
  70. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
  71. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
  72. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
  73. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
  74. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
  75. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
  76. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
  77. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
  78. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
  79. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  80. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
  81. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
  82. package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
  83. package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
  84. package/dist/types/compute-engine/boxed-expression/constraint-subject.d.ts +1 -1
  85. package/dist/types/compute-engine/boxed-expression/exp-to-trig.d.ts +1 -1
  86. package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
  87. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
  88. package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
  89. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
  90. package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
  91. package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +1 -1
  92. package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
  93. package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
  94. package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
  95. package/dist/types/compute-engine/boxed-expression/multivariate-gcd.d.ts +1 -1
  96. package/dist/types/compute-engine/boxed-expression/multivariate-poly.d.ts +1 -1
  97. package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
  98. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
  99. package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
  100. package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
  101. package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
  102. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
  103. package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
  104. package/dist/types/compute-engine/boxed-expression/rule-index.d.ts +1 -1
  105. package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
  106. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
  107. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
  108. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
  109. package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
  110. package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
  111. package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
  112. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
  113. package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
  114. package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
  115. package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
  116. package/dist/types/compute-engine/collection-utils.d.ts +1 -1
  117. package/dist/types/compute-engine/compilation/base-compiler.d.ts +79 -1
  118. package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
  119. package/dist/types/compute-engine/compilation/constant-folding.d.ts +1 -1
  120. package/dist/types/compute-engine/compilation/glsl-target.d.ts +2 -2
  121. package/dist/types/compute-engine/compilation/gpu-target.d.ts +7 -1
  122. package/dist/types/compute-engine/compilation/interval-glsl-target.d.ts +49 -0
  123. package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +1 -1
  124. package/dist/types/compute-engine/compilation/javascript-target.d.ts +30 -2
  125. package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
  126. package/dist/types/compute-engine/compilation/types.d.ts +54 -2
  127. package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
  128. package/dist/types/compute-engine/cost-function.d.ts +1 -1
  129. package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
  130. package/dist/types/compute-engine/engine-cache.d.ts +1 -1
  131. package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
  132. package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
  133. package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
  134. package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
  135. package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
  136. package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
  137. package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
  138. package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
  139. package/dist/types/compute-engine/engine-runtime-state.d.ts +1 -1
  140. package/dist/types/compute-engine/engine-scope.d.ts +1 -1
  141. package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
  142. package/dist/types/compute-engine/engine-simplification-rules.d.ts +1 -1
  143. package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
  144. package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
  145. package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
  146. package/dist/types/compute-engine/free-functions.d.ts +1 -1
  147. package/dist/types/compute-engine/function-properties/index.d.ts +1 -1
  148. package/dist/types/compute-engine/function-utils.d.ts +1 -1
  149. package/dist/types/compute-engine/fungrim/loader.d.ts +1 -1
  150. package/dist/types/compute-engine/fungrim/types.d.ts +1 -1
  151. package/dist/types/compute-engine/global-types.d.ts +1 -1
  152. package/dist/types/compute-engine/index.d.ts +10 -1
  153. package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
  154. package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
  155. package/dist/types/compute-engine/interval/elementary.d.ts +1 -1
  156. package/dist/types/compute-engine/interval/index.d.ts +1 -1
  157. package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
  158. package/dist/types/compute-engine/interval/types.d.ts +1 -1
  159. package/dist/types/compute-engine/interval/util.d.ts +1 -1
  160. package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +1 -1
  161. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  162. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  163. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  164. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-colors.d.ts +1 -1
  165. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  166. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  167. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  168. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  169. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  170. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  171. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  172. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  173. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  174. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  175. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
  176. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
  177. package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +1 -1
  178. package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
  179. package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
  180. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
  181. package/dist/types/compute-engine/latex-syntax/parse.d.ts +1 -1
  182. package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
  183. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
  184. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
  185. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
  186. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  187. package/dist/types/compute-engine/latex-syntax/types.d.ts +1 -1
  188. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  189. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
  190. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  191. package/dist/types/compute-engine/library/collections.d.ts +1 -1
  192. package/dist/types/compute-engine/library/colors.d.ts +1 -1
  193. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  194. package/dist/types/compute-engine/library/complex.d.ts +1 -1
  195. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  196. package/dist/types/compute-engine/library/core.d.ts +1 -1
  197. package/dist/types/compute-engine/library/fractals.d.ts +1 -1
  198. package/dist/types/compute-engine/library/library.d.ts +1 -1
  199. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  200. package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
  201. package/dist/types/compute-engine/library/logic.d.ts +1 -1
  202. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  203. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  204. package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
  205. package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
  206. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  207. package/dist/types/compute-engine/library/sets.d.ts +1 -1
  208. package/dist/types/compute-engine/library/special-functions.d.ts +1 -1
  209. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  210. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  211. package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
  212. package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
  213. package/dist/types/compute-engine/library/units.d.ts +1 -1
  214. package/dist/types/compute-engine/library/utils.d.ts +1 -1
  215. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
  216. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
  217. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
  218. package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
  219. package/dist/types/compute-engine/numerics/bernoulli.d.ts +1 -1
  220. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  221. package/dist/types/compute-engine/numerics/complex-esm-augment.d.ts +1 -1
  222. package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
  223. package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
  224. package/dist/types/compute-engine/numerics/linear-algebra.d.ts +1 -1
  225. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  226. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  227. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
  228. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
  229. package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
  230. package/dist/types/compute-engine/numerics/oscillatory-quadrature.d.ts +1 -1
  231. package/dist/types/compute-engine/numerics/polynomial-roots.d.ts +1 -1
  232. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  233. package/dist/types/compute-engine/numerics/random.d.ts +1 -1
  234. package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
  235. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  236. package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
  237. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
  238. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  239. package/dist/types/compute-engine/numerics/types.d.ts +1 -1
  240. package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
  241. package/dist/types/compute-engine/oeis.d.ts +1 -1
  242. package/dist/types/compute-engine/rubi/compile.d.ts +1 -1
  243. package/dist/types/compute-engine/rubi/driver.d.ts +1 -1
  244. package/dist/types/compute-engine/rubi/loader.d.ts +1 -1
  245. package/dist/types/compute-engine/rubi/match.d.ts +1 -1
  246. package/dist/types/compute-engine/rubi/normal-form.d.ts +1 -1
  247. package/dist/types/compute-engine/rubi/rubi-utils.d.ts +1 -1
  248. package/dist/types/compute-engine/rubi/types.d.ts +1 -1
  249. package/dist/types/compute-engine/sequence.d.ts +1 -1
  250. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
  251. package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
  252. package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
  253. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
  254. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
  255. package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
  256. package/dist/types/compute-engine/symbolic/limit.d.ts +1 -1
  257. package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
  258. package/dist/types/compute-engine/symbolic/residue.d.ts +1 -1
  259. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
  260. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
  261. package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
  262. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
  263. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
  264. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
  265. package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
  266. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
  267. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
  268. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
  269. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  270. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
  271. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  272. package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
  273. package/dist/types/compute-engine/types-definitions.d.ts +1 -1
  274. package/dist/types/compute-engine/types-engine.d.ts +11 -1
  275. package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
  276. package/dist/types/compute-engine/types-expression.d.ts +1 -1
  277. package/dist/types/compute-engine/types-kernel-evaluation.d.ts +1 -1
  278. package/dist/types/compute-engine/types-kernel-serialization.d.ts +1 -1
  279. package/dist/types/compute-engine/types-serialization.d.ts +1 -1
  280. package/dist/types/compute-engine/types.d.ts +1 -1
  281. package/dist/types/compute-engine.d.ts +1 -1
  282. package/dist/types/core.d.ts +1 -1
  283. package/dist/types/identities.d.ts +1 -1
  284. package/dist/types/integration-rules.d.ts +1 -1
  285. package/dist/types/interval.d.ts +1 -1
  286. package/dist/types/latex-syntax.d.ts +2 -2
  287. package/dist/types/math-json/symbols.d.ts +1 -1
  288. package/dist/types/math-json/types.d.ts +1 -1
  289. package/dist/types/math-json/utils.d.ts +1 -1
  290. package/dist/types/math-json.d.ts +2 -2
  291. package/dist/types/numerics.d.ts +1 -1
  292. package/package.json +1 -1
@@ -0,0 +1,49 @@
1
+ /* 0.61.0 */
2
+ import type { CompiledFunctions, CompiledOperators, CompileTarget, CompilationOptions, CompilationResult } from './types';
3
+ import { GLSLTarget } from './glsl-target';
4
+ /**
5
+ * GLSL preamble: the `_iv_*` interval-arithmetic library. Injected whole when
6
+ * the compiled code references any `_iv_` helper. (A later phase can split this
7
+ * per-marker like the `_gpu_*` blocks to keep shaders lean.)
8
+ */
9
+ export declare const INTERVAL_GLSL_PREAMBLE = "\nconst float IV_INF = 1e18;\nconst vec2 IV_ENTIRE = vec2(-IV_INF, IV_INF);\nconst vec2 IV_EMPTY = vec2(IV_INF, -IV_INF);\n\nbool _iv_is_empty(vec2 a) { return a.x > a.y; }\n\n// Clamp bounds to the finite sentinel range. Preserves IV_EMPTY (its components\n// already sit at the sentinels) and folds any overflowed intermediate back to\n// the sentinel (min(inf, IV_INF) = IV_INF), so a real `inf` never escapes an op.\nvec2 _iv_clamp(vec2 a) { return clamp(a, -IV_INF, IV_INF); }\n\n// Exact empty propagation: force empty if any operand is empty.\nvec2 _iv_guard1(vec2 r, vec2 a) { return _iv_is_empty(a) ? IV_EMPTY : r; }\nvec2 _iv_guard2(vec2 r, vec2 a, vec2 b) {\n return (_iv_is_empty(a) || _iv_is_empty(b)) ? IV_EMPTY : r;\n}\n\nvec2 _iv_negate(vec2 a) { return _iv_guard1(_iv_clamp(vec2(-a.y, -a.x)), a); }\n\nvec2 _iv_add(vec2 a, vec2 b) {\n return _iv_guard2(_iv_clamp(vec2(a.x + b.x, a.y + b.y)), a, b);\n}\n\nvec2 _iv_sub(vec2 a, vec2 b) {\n return _iv_guard2(_iv_clamp(vec2(a.x - b.y, a.y - b.x)), a, b);\n}\n\nvec2 _iv_mul(vec2 a, vec2 b) {\n float p1 = a.x * b.x, p2 = a.x * b.y, p3 = a.y * b.x, p4 = a.y * b.y;\n vec2 r = vec2(min(min(p1, p2), min(p3, p4)), max(max(p1, p2), max(p3, p4)));\n return _iv_guard2(_iv_clamp(r), a, b);\n}\n\nvec2 _iv_div(vec2 a, vec2 b) {\n // Denominator spanning 0 \u2192 entire (wide, never narrow): the CPU pass turns\n // the pole into a proper asymptote break.\n bool spansZero = (b.x <= 0.0 && b.y >= 0.0);\n float q1 = a.x / b.x, q2 = a.x / b.y, q3 = a.y / b.x, q4 = a.y / b.y;\n vec2 r = vec2(min(min(q1, q2), min(q3, q4)), max(max(q1, q2), max(q3, q4)));\n r = spansZero ? IV_ENTIRE : r;\n return _iv_guard2(_iv_clamp(r), a, b);\n}\n\nvec2 _iv_square(vec2 a) {\n float lo2 = a.x * a.x, hi2 = a.y * a.y;\n // Straddles 0 \u21D2 min is 0; otherwise the smaller endpoint\u00B2 is the min.\n float lo = (a.x <= 0.0 && a.y >= 0.0) ? 0.0 : min(lo2, hi2);\n return _iv_guard1(_iv_clamp(vec2(lo, max(lo2, hi2))), a);\n}\n\n// Scalar integer power that is correct for negative bases (GLSL `pow` requires\n// a non-negative base): keep the sign for odd exponents, drop it for even.\nfloat _iv_powi_scalar(float x, float n) {\n float a = pow(abs(x), n);\n return (mod(n, 2.0) == 1.0 && x < 0.0) ? -a : a;\n}\n\nvec2 _iv_powi(vec2 a, float n) {\n float pl = _iv_powi_scalar(a.x, n);\n float ph = _iv_powi_scalar(a.y, n);\n bool even = (mod(n, 2.0) == 0.0);\n bool straddle = (a.x <= 0.0 && a.y >= 0.0);\n float lo = even ? (straddle ? 0.0 : min(pl, ph)) : pl;\n float hi = even ? max(pl, ph) : ph;\n return _iv_guard1(_iv_clamp(vec2(lo, hi)), a);\n}\n\n// \u2500\u2500 Phase 2: elementary functions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nvec2 _iv_abs(vec2 a) {\n float al = abs(a.x), ah = abs(a.y);\n bool straddle = (a.x <= 0.0 && a.y >= 0.0);\n return _iv_guard1(_iv_clamp(vec2(straddle ? 0.0 : min(al, ah), max(al, ah))), a);\n}\n\n// Domain x \u2265 0: fully-negative box \u2192 empty; a box straddling 0 clamps lo to 0.\nvec2 _iv_sqrt(vec2 a) {\n vec2 r = vec2(sqrt(max(a.x, 0.0)), sqrt(max(a.y, 0.0)));\n r = (a.y < 0.0) ? IV_EMPTY : r;\n return _iv_guard1(_iv_clamp(r), a);\n}\n\nvec2 _iv_exp(vec2 a) {\n return _iv_guard1(_iv_clamp(vec2(exp(a.x), exp(a.y))), a);\n}\n\n// Domain x > 0: fully-\u22640 box \u2192 empty; straddling box \u2192 lo clamped to \u2212IV_INF\n// (ln \u2192 \u2212\u221E as x \u2192 0\u207A, never a real \u2212inf).\nvec2 _iv_ln(vec2 a) {\n vec2 r = vec2(a.x > 0.0 ? log(a.x) : -IV_INF, log(a.y));\n r = (a.y <= 0.0) ? IV_EMPTY : r;\n return _iv_guard1(_iv_clamp(r), a);\n}\n\nconst float _IV_INV_LN10 = 0.43429448190325176;\nconst float _IV_INV_LN2 = 1.4426950408889634;\n\nvec2 _iv_log10(vec2 a) {\n vec2 r = vec2(a.x > 0.0 ? log(a.x) * _IV_INV_LN10 : -IV_INF, log(a.y) * _IV_INV_LN10);\n r = (a.y <= 0.0) ? IV_EMPTY : r;\n return _iv_guard1(_iv_clamp(r), a);\n}\n\nvec2 _iv_log2(vec2 a) {\n vec2 r = vec2(a.x > 0.0 ? log(a.x) * _IV_INV_LN2 : -IV_INF, log(a.y) * _IV_INV_LN2);\n r = (a.y <= 0.0) ? IV_EMPTY : r;\n return _iv_guard1(_iv_clamp(r), a);\n}\n\n// Non-integer power. Real only for base \u2265 0: fully-negative box \u2192 empty; a box\n// straddling 0 clamps the base low end to 0. `p` is a compile-time constant, so\n// the `p >= 0` test is a constant branch.\nvec2 _iv_powf(vec2 a, float p) {\n float lob = max(a.x, 0.0);\n float e0 = pow(lob, p), e1 = pow(a.y, p);\n vec2 r = (p >= 0.0) ? vec2(e0, e1) : vec2(e1, e0);\n r = (a.y < 0.0) ? IV_EMPTY : r;\n return _iv_guard1(_iv_clamp(r), a);\n}\n\n// \u2500\u2500 Phase 3: trigonometric & inverse-trigonometric functions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Mirrors interval-js (interval/trigonometric.ts): exact endpoints with\n// extremum snapping (no outward epsilon). Per the Option-A contract, a tan pole\n// yields `entire` (interval-js returns `singular`; entire \u2287 singular and the\n// CPU classifies the asymptote).\n\nconst float _IV_PI = 3.141592653589793;\nconst float _IV_TWO_PI = 6.283185307179586;\nconst float _IV_HALF_PI = 1.5707963267948966;\nconst float _IV_THREE_HALF_PI = 4.71238898038469;\n\n// True if [a] contains an extremum of the family { ext + n\u00B7period }.\nbool _iv_has_ext(vec2 a, float ext, float period) {\n float n = ceil((a.x - ext) / period);\n float cand = ext + n * period;\n return cand >= a.x - 1e-15 && cand <= a.y + 1e-15;\n}\n\nvec2 _iv_sin(vec2 a) {\n vec2 r;\n if (a.y - a.x >= _IV_TWO_PI) r = vec2(-1.0, 1.0);\n else {\n float sl = sin(a.x), sh = sin(a.y);\n float lo = min(sl, sh), hi = max(sl, sh);\n if (_iv_has_ext(a, _IV_HALF_PI, _IV_TWO_PI)) hi = 1.0;\n if (_iv_has_ext(a, _IV_THREE_HALF_PI, _IV_TWO_PI)) lo = -1.0;\n r = vec2(lo, hi);\n }\n return _iv_guard1(_iv_clamp(r), a);\n}\n\nvec2 _iv_cos(vec2 a) {\n vec2 r;\n if (a.y - a.x >= _IV_TWO_PI) r = vec2(-1.0, 1.0);\n else {\n float cl = cos(a.x), ch = cos(a.y);\n float lo = min(cl, ch), hi = max(cl, ch);\n if (_iv_has_ext(a, 0.0, _IV_TWO_PI)) hi = 1.0;\n if (_iv_has_ext(a, _IV_PI, _IV_TWO_PI)) lo = -1.0;\n r = vec2(lo, hi);\n }\n return _iv_guard1(_iv_clamp(r), a);\n}\n\nvec2 _iv_tan(vec2 a) {\n // A pole in the interval \u2192 entire (cannot exclude).\n bool pole =\n (a.y - a.x >= _IV_PI) || _iv_has_ext(a, _IV_HALF_PI, _IV_PI);\n float tl = tan(a.x), th = tan(a.y);\n // Floating-point branch-cross sanity (large opposite-sign endpoints).\n bool crossed = (tl > 1e10 && th < -1e10) || (tl < -1e10 && th > 1e10);\n vec2 r = (pole || crossed) ? IV_ENTIRE : vec2(tl, th);\n return _iv_guard1(_iv_clamp(r), a);\n}\n\n// asin: domain [\u22121, 1]. Fully outside \u2192 empty; straddling clamps to the valid\n// sub-range. Monotonic increasing.\nvec2 _iv_asin(vec2 a) {\n vec2 r = vec2(asin(max(a.x, -1.0)), asin(min(a.y, 1.0)));\n r = (a.x > 1.0 || a.y < -1.0) ? IV_EMPTY : r;\n return _iv_guard1(_iv_clamp(r), a);\n}\n\n// acos: domain [\u22121, 1], monotonic decreasing (bounds swap).\nvec2 _iv_acos(vec2 a) {\n vec2 r = vec2(acos(min(a.y, 1.0)), acos(max(a.x, -1.0)));\n r = (a.x > 1.0 || a.y < -1.0) ? IV_EMPTY : r;\n return _iv_guard1(_iv_clamp(r), a);\n}\n\nvec2 _iv_atan(vec2 a) {\n return _iv_guard1(_iv_clamp(vec2(atan(a.x), atan(a.y))), a);\n}\n\n// \u2500\u2500 Discontinuous / step functions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Bounded jump-discontinuity functions return the TIGHT value-range enclosure\n// (sound, and excludable when the range misses 0) rather than `entire` \u2014 only\n// genuine poles are entire. Per the Option-A division of labor, the CPU still\n// classifies the discontinuity on the (kept) live cells; the GPU only needs a\n// sound bound for the exclusion test. These functions are monotone, so the\n// enclosure is just [f(lo), f(hi)] unless noted.\n\nvec2 _iv_floor(vec2 a) { return _iv_guard1(_iv_clamp(vec2(floor(a.x), floor(a.y))), a); }\nvec2 _iv_ceil(vec2 a) { return _iv_guard1(_iv_clamp(vec2(ceil(a.x), ceil(a.y))), a); }\nvec2 _iv_round(vec2 a) { return _iv_guard1(_iv_clamp(vec2(floor(a.x + 0.5), floor(a.y + 0.5))), a); }\nvec2 _iv_trunc(vec2 a) { return _iv_guard1(_iv_clamp(vec2(trunc(a.x), trunc(a.y))), a); }\nvec2 _iv_sign(vec2 a) { return _iv_guard1(vec2(sign(a.x), sign(a.y)), a); }\n\nvec2 _iv_heaviside(vec2 a) {\n float hl = a.x < 0.0 ? 0.0 : (a.x > 0.0 ? 1.0 : 0.5);\n float hh = a.y < 0.0 ? 0.0 : (a.y > 0.0 ? 1.0 : 0.5);\n return _iv_guard1(vec2(hl, hh), a);\n}\n\n// fract(x) = x \u2212 floor(x): continuous within an integer cell, sawtooth across\n// one (\u2192 full [0, 1] range).\nvec2 _iv_fract(vec2 a) {\n float fl = floor(a.x);\n vec2 r = (fl == floor(a.y)) ? vec2(a.x - fl, a.y - fl) : vec2(0.0, 1.0);\n return _iv_guard1(_iv_clamp(r), a);\n}\n\nvec2 _iv_min(vec2 a, vec2 b) {\n return _iv_guard2(_iv_clamp(vec2(min(a.x, b.x), min(a.y, b.y))), a, b);\n}\nvec2 _iv_max(vec2 a, vec2 b) {\n return _iv_guard2(_iv_clamp(vec2(max(a.x, b.x), max(a.y, b.y))), a, b);\n}\n\n// mod(x, y) = x \u2212 y\u00B7floor(x/y). A modulus straddling 0 is a pole \u2192 entire. For\n// a constant (point) modulus the fast path is exact; otherwise compose (the\n// tight floor keeps it sound).\nvec2 _iv_mod(vec2 a, vec2 b) {\n if (b.x <= 0.0 && b.y >= 0.0) return _iv_guard2(IV_ENTIRE, a, b);\n if (b.x == b.y) {\n float p = abs(b.x);\n float flo = floor(a.x / p);\n vec2 r = (flo == floor(a.y / p)) ? vec2(a.x - p * flo, a.y - p * flo)\n : vec2(0.0, p);\n return _iv_guard2(_iv_clamp(r), a, b);\n }\n return _iv_sub(a, _iv_mul(b, _iv_floor(_iv_div(a, b))));\n}\n";
10
+ /**
11
+ * GLSL interval-arithmetic compilation target. Reuses `GLSLTarget`'s shader
12
+ * assembly; swaps in the interval function table, the `vec2` point-interval
13
+ * number/var hooks, and the `_iv_*` preamble.
14
+ */
15
+ export declare class IntervalGLSLTarget extends GLSLTarget {
16
+ protected readonly languageId = "interval-glsl";
17
+ getOperators(): CompiledOperators;
18
+ getFunctions(): CompiledFunctions<Expression>;
19
+ getConstants(): Record<string, string>;
20
+ createTarget(options?: Partial<CompileTarget<Expression>>): CompileTarget<Expression>;
21
+ compile(expr: Expression, options?: CompilationOptions<Expression>): CompilationResult;
22
+ /**
23
+ * Emit a complete, self-contained GLSL fragment shader implementing the
24
+ * **interval exclusion oracle** for the implicit curve `f = 0` (Phase 4).
25
+ *
26
+ * The shader is structured so the core contract — the interval evaluator —
27
+ * is cleanly separable from the render harness:
28
+ *
29
+ * - `vec2 _implicit(<vec2 per free variable>)` evaluates the interval of `f`
30
+ * over a cell box (this is the part that matters; it is identical to
31
+ * `compile(expr).code` wrapped in a function).
32
+ * - `main()` is a **reference harness**: it derives each fragment's cell box
33
+ * from `gl_FragCoord` and the viewport uniforms, evaluates `_implicit`, and
34
+ * writes the exclusion result. The renderer is free to replace `main()` /
35
+ * the uniforms with its own conventions and keep `_implicit`.
36
+ *
37
+ * The first free variable maps to `u_domainX`, the second to `u_domainY`
38
+ * (≤ 2 free variables; a 2D implicit curve). The exclusion predicate is
39
+ * `f.lo > 0 || f.hi < 0` — which also excludes the `empty` (domain-undefined)
40
+ * interval, since its `lo` is the `+IV_INF` sentinel.
41
+ *
42
+ * @throws if the expression has more than two free variables, or cannot be
43
+ * lowered (an unsupported head propagates from `BaseCompiler.compile`).
44
+ */
45
+ compileExclusionShader(expr: Expression, options?: {
46
+ version?: string;
47
+ precision?: string;
48
+ }): string;
49
+ }
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * JavaScript interval arithmetic compilation target
3
3
  *
4
4
  * Compiles mathematical expressions to JavaScript code using interval arithmetic
@@ -1,6 +1,6 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import { chop, factorial, factorial2, gcd, lcm, limit } from '../numerics/numeric';
3
- import { gamma, gammaln, erf, erfc, erfInv, beta, digamma, trigamma, polygamma, zeta, lambertW, besselJ, besselY, besselI, besselK, airyAi, airyBi, fresnelS, fresnelC, sinc } from '../numerics/special-functions';
3
+ import { gamma, gammaln, erf, erfc, erfInv, beta, digamma, trigamma, polygamma, zeta, lambertW, besselJ, besselY, besselI, besselK, airyAi, airyBi, fresnelS, fresnelC, sinc, sinIntegral, cosIntegral, expIntegralEi, logIntegral, erfi, agm, ellipticK, ellipticE, ellipticEIncomplete, ellipticF, ellipticPiComplete, ellipticPiIncomplete, hypergeometric2F1, hypergeometric1F1 } from '../numerics/special-functions';
4
4
  import { choose } from '../boxed-expression/expand';
5
5
  import { interquartileRange, kurtosis, mean, median, mode, populationStandardDeviation, populationVariance, quartiles, skewness, standardDeviation, variance } from '../numerics/statistics';
6
6
  import type { CompileTarget, CompiledOperators, CompiledFunctions, LanguageTarget, CompilationOptions, CompilationResult, ComplexResult } from './types';
@@ -68,6 +68,20 @@ export declare class ComputeEngineFunction extends Function {
68
68
  sinc: typeof sinc;
69
69
  fresnelS: typeof fresnelS;
70
70
  fresnelC: typeof fresnelC;
71
+ sinIntegral: typeof sinIntegral;
72
+ cosIntegral: typeof cosIntegral;
73
+ expIntegralEi: typeof expIntegralEi;
74
+ logIntegral: typeof logIntegral;
75
+ erfi: typeof erfi;
76
+ agm: typeof agm;
77
+ ellipticK: typeof ellipticK;
78
+ ellipticE: typeof ellipticE;
79
+ ellipticEIncomplete: typeof ellipticEIncomplete;
80
+ ellipticF: typeof ellipticF;
81
+ ellipticPiComplete: typeof ellipticPiComplete;
82
+ ellipticPiIncomplete: typeof ellipticPiIncomplete;
83
+ hypergeometric2F1: typeof hypergeometric2F1;
84
+ hypergeometric1F1: typeof hypergeometric1F1;
71
85
  mandelbrot: (c: number | {
72
86
  re: number;
73
87
  im: number;
@@ -258,6 +272,20 @@ export declare class ComputeEngineFunctionLiteral extends Function {
258
272
  sinc: typeof sinc;
259
273
  fresnelS: typeof fresnelS;
260
274
  fresnelC: typeof fresnelC;
275
+ sinIntegral: typeof sinIntegral;
276
+ cosIntegral: typeof cosIntegral;
277
+ expIntegralEi: typeof expIntegralEi;
278
+ logIntegral: typeof logIntegral;
279
+ erfi: typeof erfi;
280
+ agm: typeof agm;
281
+ ellipticK: typeof ellipticK;
282
+ ellipticE: typeof ellipticE;
283
+ ellipticEIncomplete: typeof ellipticEIncomplete;
284
+ ellipticF: typeof ellipticF;
285
+ ellipticPiComplete: typeof ellipticPiComplete;
286
+ ellipticPiIncomplete: typeof ellipticPiIncomplete;
287
+ hypergeometric2F1: typeof hypergeometric2F1;
288
+ hypergeometric1F1: typeof hypergeometric1F1;
261
289
  mandelbrot: (c: number | {
262
290
  re: number;
263
291
  im: number;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import type { CompileTarget, CompiledOperators, CompiledFunctions, LanguageTarget, CompilationOptions, CompilationResult } from './types';
3
3
  /**
4
4
  * Python/NumPy language target implementation
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  /**
3
3
  * Source code in the target language
4
4
  */
@@ -132,7 +132,21 @@ export interface CompilationOptions<Expr = unknown> {
132
132
  operators?: Partial<CompiledOperators> | ((op: MathJsonSymbol) => [op: string, prec: number] | undefined);
133
133
  /** Custom function implementations */
134
134
  functions?: Record<MathJsonSymbol, TargetSource | Function>;
135
- /** Variable bindings */
135
+ /**
136
+ * Map a symbol to the target-language source emitted for it (e.g. a GLSL
137
+ * uniform name `{ a: 'u_var_a' }`, or a JS literal `{ a: 5 }`).
138
+ *
139
+ * A `vars`-mapped symbol is **never constant-folded**, even when the symbol
140
+ * has an assigned value in the engine (`ce.assign('a', …)`). The mapping
141
+ * always wins, so the generated code keeps referencing the mapped
142
+ * identifier — a per-frame uniform / argument write updates the result
143
+ * without recompiling. This is a guaranteed contract.
144
+ *
145
+ * A symbol that is *not* mapped here but *is* known to the engine (an
146
+ * assigned value or a declared constant) is folded into the generated code,
147
+ * matching `evaluate()` and `expr.unknowns`. A genuinely free symbol (no
148
+ * mapping, no value) is emitted through the target's free-symbol plumbing.
149
+ */
136
150
  vars?: Record<MathJsonSymbol, TargetSource>;
137
151
  /** Additional imports/libraries to include */
138
152
  imports?: unknown[];
@@ -232,6 +246,44 @@ export type CompilationResult<T extends string = string, R = number | ComplexRes
232
246
  success: boolean;
233
247
  /** Generated source code */
234
248
  code: string;
249
+ /**
250
+ * Identifiers the generated `code` references that the caller must supply at
251
+ * run time (JS vars-object keys / GLSL uniforms) for the result to be
252
+ * self-contained.
253
+ *
254
+ * These are the expression's free symbols *as the generated code sees them*:
255
+ * symbols with no value in the engine, after assigned values and declared
256
+ * constants are folded in (so an assigned symbol is **not** listed — its
257
+ * value is inlined, matching `evaluate()`), and after bound variables (lambda
258
+ * parameters, `Sum`/`Product`/`Integrate`/`Loop` indices, `Block` locals) are
259
+ * excluded. A symbol supplied through the `vars` option is always listed —
260
+ * the mapping makes it an external input.
261
+ *
262
+ * Populated by the built-in targets on a successful compile. Use it instead
263
+ * of `expr.unknowns` when building a uniforms / vars mapping: unlike
264
+ * `unknowns`, it is guaranteed consistent with what the code actually
265
+ * references (including symbols reachable only through a folded value).
266
+ */
267
+ freeSymbols?: string[];
268
+ /**
269
+ * Operator heads in the expression that this target cannot lower — they have
270
+ * no operator or function mapping and are not one of the structural forms the
271
+ * compiler handles directly. An empty array means every operator was
272
+ * lowerable.
273
+ *
274
+ * On the built-in `LanguageTarget.compile` paths a genuinely unsupported
275
+ * operator throws (so the engine-level `compile()` can fall back to
276
+ * interpretation); this field lets a caller detect the condition
277
+ * **declaratively** — it is populated on the engine-level `compile()` result
278
+ * (including its `success: false` fallback) and on successful direct-target
279
+ * compiles (where it is `[]`).
280
+ */
281
+ unsupported?: string[];
282
+ /**
283
+ * When `success` is `false`, a human-readable reason the expression could not
284
+ * be compiled to the target (e.g. `Unknown operator \`SinIntegral\``).
285
+ */
286
+ error?: string;
235
287
  /**
236
288
  * Library/helper code that must be included before the compiled `code`.
237
289
  *
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import type { CompiledFunctions } from './types';
3
3
  import { GPUShaderTarget } from './gpu-target';
4
4
  /**
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  /**
3
3
  * The default cost function, used to determine if a new expression is simpler
4
4
  * than the old one.
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import type { MathJsonSymbol } from '../math-json/types';
3
3
  export declare function ask(ce: IComputeEngine, pattern: Expression): BoxedSubstitution[];
4
4
  export declare function verify(ce: IComputeEngine, query: Expression): boolean | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  private _entries;
3
3
  getOrBuild<T>(cacheName: string, build: () => T, purge?: (t: T) => T | undefined): T;
4
4
  invalidate(cacheName: string): void;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export type CommonSymbolTable = {
3
3
  [symbol: string]: null | Expression;
4
4
  };
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import type { LanguageTarget } from './compilation/types';
3
3
  /**
4
4
  * Internal registry for compilation targets.
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  type ResetHooks = {
3
3
  refreshNumericConstants: () => void;
4
4
  resetCommonSymbols: () => void;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import { BoxedType } from '../common/type/boxed-type';
3
3
  import type { MathJsonSymbol } from '../math-json/types';
4
4
  import type { ValueDefinition, OperatorDefinition, AssignValue, Expression, BoxedDefinition, SymbolDefinition, IComputeEngine, Scope } from './global-types';
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import { BigDecimal } from '../big-decimal';
3
3
  import type { MathJsonNumberObject, MathJsonSymbol } from '../math-json/types';
4
4
  import { NumericValue } from './numeric-value/types';
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import type { LanguageTarget, CompilationOptions } from './compilation/types';
3
3
  export declare function assertCompilationTargetName(name: unknown): string;
4
4
  export declare function assertLibraryName(name: unknown): string;
@@ -1,3 +1,3 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare function resolveBootstrapLibraries(libraries?: readonly (string | LibraryDefinition)[]): LibraryDefinition[];
3
3
  export declare function loadLibraryDefinitions(engine: ComputeEngine, libraries: readonly LibraryDefinition[]): void;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import type { AngularUnit } from './types-definitions';
3
3
  export declare class EngineNumericConfiguration {
4
4
  private _precision;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  private _timeLimit;
3
3
  private _iterationLimit;
4
4
  private _recursionLimit;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare function pushScope(ce: IComputeEngine, scope?: Scope, name?: string): void;
3
3
  export declare function popScope(ce: IComputeEngine): void;
4
4
  export declare function pushEvalContext(ce: IComputeEngine, scope: Scope, name?: string): void;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare function declareSequence(ce: IComputeEngine, name: string, def: SequenceDefinition): IComputeEngine;
3
3
  export declare function getSequenceStatus(ce: IComputeEngine, name: string): SequenceStatus;
4
4
  export declare function getSequence(ce: IComputeEngine, name: string): SequenceInfo | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  /**
3
3
  * Internal holder for a rule array and its cache-staleness marker.
4
4
  *
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import type { Expression, IComputeEngine as ComputeEngine, LibraryDefinition } from './global-types';
3
3
  export type CommonNumberBindings = {
4
4
  Zero: Expression;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  type ResolverScope = {
3
3
  parent: ResolverScope | null;
4
4
  types?: Record<string, TypeReference>;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import { BoxedType } from '../common/type/boxed-type';
3
3
  import type { Expression, Metadata, ExpressionInput } from './global-types';
4
4
  type ValidationHost = {
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import type { Type, TypeString } from '../common/type/types';
3
3
  import type { LatexString, ParseLatexOptions } from './latex-syntax/types';
4
4
  import { compile as compileExpr } from './compilation/compile-expression';
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import type { Expression, ExpressionInput } from '../types-expression';
3
3
  /** A single analytic-property record for an operator. The MathJSON fields are
4
4
  * raw (as translated from Fungrim); box them with `ce.expr` to query. */
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import type { BoxedDefinition, Expression, IComputeEngine as ComputeEngine, Scope } from './global-types';
3
3
  /***
4
4
  * ### THEORY OF OPERATIONS
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import type { FungrimLoadOptions, FungrimLoadReport, FungrimRuleData } from './types';
3
3
  /** The compiled artifact (the whole slice, bundled as JSON). */
4
4
  export declare const FUNGRIM_CORE: FungrimRuleData;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import type { BoxedSubstitution } from '../types-serialization';
3
3
  /** Raw MathJSON — the artifact is plain JSON. */
4
4
  export type FungrimMathJson = unknown;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export type * from './types-serialization';
3
3
  export type { ValueDefinition, SequenceDefinition, SequenceStatus, SequenceInfo, OEISSequenceInfo, OEISOptions, OperatorDefinition, BaseDefinition, SimplifyOptions, SymbolDefinition, SymbolDefinitions, LibraryDefinition, AngularUnit, Sign, BaseCollectionHandlers, IndexedCollectionHandlers, CollectionHandlers, TaggedValueDefinition, TaggedOperatorDefinition, BoxedDefinition, BoxedBaseDefinition, BoxedValueDefinition, OperatorDefinitionFlags, BoxedOperatorDefinition, } from './types-definitions';
4
4
  export type * from './types-evaluation';
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import { BigDecimal } from '../big-decimal';
3
3
  import { Type, TypeResolver, TypeString } from '../common/type/types';
4
4
  import { BoxedType } from '../common/type/boxed-type';
@@ -550,6 +550,15 @@ export declare class ComputeEngine implements IComputeEngine {
550
550
  details?: boolean;
551
551
  maxDepth?: number;
552
552
  }): void;
553
+ /** Stack of parameter-name sets active while canonicalizing function bodies.
554
+ * @internal */
555
+ private _shadowedParameterStack;
556
+ /** @internal */
557
+ _pushShadowedParameters(names: ReadonlyArray<string>): void;
558
+ /** @internal */
559
+ _popShadowedParameters(): void;
560
+ /** @internal */
561
+ _isShadowedParameter(name: string): boolean;
553
562
  /**
554
563
  * Use `ce.expr(name)` instead
555
564
  * @internal */
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * Basic interval arithmetic operations
3
3
  *
4
4
  * @module interval/arithmetic
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * Comparison and conditional interval operations
3
3
  *
4
4
  * @module interval/comparison
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * Elementary interval functions (sqrt, pow, exp, ln, abs, floor, ceil, min, max, mod)
3
3
  *
4
4
  * @module interval/elementary
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * Interval arithmetic library for reliable function evaluation
3
3
  *
4
4
  * This module provides interval versions of mathematical operations
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * Trigonometric interval functions
3
3
  *
4
4
  * @module interval/trigonometric
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * Interval arithmetic types for reliable function evaluation
3
3
  *
4
4
  * @module interval/types
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * Utility functions for interval arithmetic
3
3
  *
4
4
  * @module interval/util
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * Default LaTeX dictionary assembly.
3
3
  *
4
4
  * This file imports all individual domain dictionaries and assembles them
@@ -1,2 +1,2 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare const DEFINITIONS_ALGEBRA: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare const DEFINITIONS_ARITHMETIC: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare const DEFINITIONS_CALCULUS: LatexDictionary;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  /**
3
3
  * LaTeX dictionary for color constructors and conversions.
4
4
  *
@@ -1,2 +1,2 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare const DEFINITIONS_COMPLEX: LatexDictionary;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare const DEFINITIONS_CORE: LatexDictionary;
3
3
  export declare const DELIMITERS_SHORTHAND: {
4
4
  '(': string;
@@ -1,2 +1,2 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare const DEFINITIONS_LINEAR_ALGEBRA: LatexDictionary;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import type { MathJsonExpression } from '../../../math-json';
3
3
  export declare const DEFINITIONS_LOGIC: LatexDictionary;
4
4
  export declare function parseQuantifier(kind: 'NotForAll' | 'NotExists' | 'ForAll' | 'Exists' | 'ExistsUnique'): (parser: Parser, terminator?: Readonly<Terminator>) => MathJsonExpression | null;
@@ -1,2 +1,2 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare const DEFINITIONS_OTHERS: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare const DEFINITIONS_INEQUALITIES: LatexDictionaryEntry[];
@@ -1,2 +1,2 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare const DEFINITIONS_SETS: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare const DEFINITIONS_STATISTICS: LatexDictionary;
@@ -1,3 +1,3 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare const SYMBOLS: [string, string, number][];
3
3
  export declare const DEFINITIONS_SYMBOLS: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  export declare const DEFINITIONS_TRIGONOMETRY: LatexDictionary;
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * LaTeX dictionary entries for parsing and serializing physical quantities
3
3
  * with units.
4
4
  *
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import { LatexDictionaryEntry } from '../types';
3
3
  export type { CommonEntry, IndexedSymbolEntry, IndexedExpressionEntry, IndexedFunctionEntry, IndexedMatchfixEntry, IndexedInfixEntry, IndexedPrefixEntry, IndexedPostfixEntry, IndexedEnvironmentEntry, IndexedLatexDictionaryEntry, IndexedLatexDictionary, } from './indexed-types';
4
4
  import type { IndexedSymbolEntry, IndexedExpressionEntry, IndexedFunctionEntry, IndexedMatchfixEntry, IndexedInfixEntry, IndexedPostfixEntry, IndexedEnvironmentEntry, IndexedLatexDictionaryEntry, IndexedLatexDictionary } from './indexed-types';
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * Type definitions for the indexed LaTeX dictionary.
3
3
  *
4
4
  * These are separated from definitions.ts to break a circular dependency:
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * Standalone LaTeX <-> MathJSON parsing and serialization.
3
3
  *
4
4
  * This module provides a `LatexSyntax` class and free-standing `parse()` /
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * Number parsing extracted from the _Parser class for modularity.
3
3
  *
4
4
  * All functions take a `Parser` interface and a `NumberFormatTokens` config
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import { Parser } from './types';
3
3
  /** For error handling, if we have a symbol prefix, assume
4
4
  * the symbol is invalid (it would have been captured by
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import { ParseLatexOptions, LatexToken, Terminator, Parser, SymbolTable } from './types';
3
3
  import type { IndexedLatexDictionary, IndexedLatexDictionaryEntry, IndexedInfixEntry, IndexedPostfixEntry, IndexedPrefixEntry, IndexedSymbolEntry, IndexedExpressionEntry, IndexedFunctionEntry } from './dictionary/definitions';
4
4
  import { BoxedType } from '../../common/type/boxed-type';
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  * DMS (Degrees-Minutes-Seconds) serialization utilities.
3
3
  */
4
4
  export interface DMSComponents {
@@ -1,4 +1,4 @@
1
- /* 0.60.0 */
1
+ /* 0.61.0 */
2
2
  import { NumberSerializationFormat } from './types';
3
3
  /**
4
4
  * @param expr - A number, can be represented as a string