@cortex-js/compute-engine 0.52.1 → 0.53.1

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 (229) hide show
  1. package/dist/compute-engine.esm.js +1812 -3839
  2. package/dist/compute-engine.min.esm.js +566 -2343
  3. package/dist/compute-engine.min.umd.cjs +1035 -0
  4. package/dist/{compute-engine.umd.js → compute-engine.umd.cjs} +1811 -3838
  5. package/dist/math-json.esm.js +2 -2
  6. package/dist/math-json.min.esm.js +2 -2
  7. package/dist/{math-json.min.umd.js → math-json.min.umd.cjs} +2 -2
  8. package/dist/{math-json.umd.js → math-json.umd.cjs} +2 -2
  9. package/dist/types/common/ansi-codes.d.ts +1 -1
  10. package/dist/types/common/configuration-change.d.ts +1 -1
  11. package/dist/types/common/fuzzy-string-match.d.ts +1 -1
  12. package/dist/types/common/grapheme-splitter.d.ts +1 -1
  13. package/dist/types/common/interruptible.d.ts +1 -1
  14. package/dist/types/common/one-of.d.ts +1 -1
  15. package/dist/types/common/signals.d.ts +1 -1
  16. package/dist/types/common/type/ast-nodes.d.ts +1 -1
  17. package/dist/types/common/type/boxed-type.d.ts +1 -1
  18. package/dist/types/common/type/lexer.d.ts +1 -1
  19. package/dist/types/common/type/parse.d.ts +1 -1
  20. package/dist/types/common/type/parser.d.ts +1 -1
  21. package/dist/types/common/type/primitive.d.ts +1 -1
  22. package/dist/types/common/type/reduce.d.ts +1 -1
  23. package/dist/types/common/type/serialize.d.ts +1 -1
  24. package/dist/types/common/type/subtype.d.ts +1 -1
  25. package/dist/types/common/type/type-builder.d.ts +1 -1
  26. package/dist/types/common/type/types.d.ts +1 -1
  27. package/dist/types/common/type/utils.d.ts +1 -1
  28. package/dist/types/common/utils.d.ts +1 -1
  29. package/dist/types/compute-engine/assume.d.ts +1 -1
  30. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +6 -1
  31. package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
  32. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
  33. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
  34. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
  35. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
  36. package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
  37. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
  38. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +3 -4
  39. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +2 -1
  40. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
  41. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
  42. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
  43. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +9 -10
  44. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
  45. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +8 -4
  46. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  47. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
  48. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
  49. package/dist/types/compute-engine/boxed-expression/compare.d.ts +2 -2
  50. package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
  51. package/dist/types/compute-engine/boxed-expression/expand.d.ts +3 -3
  52. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
  53. package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
  54. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
  55. package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
  56. package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +1 -1
  57. package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
  58. package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
  59. package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
  60. package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
  61. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
  62. package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
  63. package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
  64. package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
  65. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
  66. package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
  67. package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
  68. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
  69. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
  70. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
  71. package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
  72. package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
  73. package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
  74. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
  75. package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
  76. package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
  77. package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
  78. package/dist/types/compute-engine/collection-utils.d.ts +1 -1
  79. package/dist/types/compute-engine/compilation/base-compiler.d.ts +1 -1
  80. package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
  81. package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
  82. package/dist/types/compute-engine/compilation/gpu-target.d.ts +80 -1
  83. package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +1 -1
  84. package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
  85. package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
  86. package/dist/types/compute-engine/compilation/types.d.ts +11 -9
  87. package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
  88. package/dist/types/compute-engine/cost-function.d.ts +1 -1
  89. package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
  90. package/dist/types/compute-engine/engine-cache.d.ts +1 -1
  91. package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
  92. package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
  93. package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
  94. package/dist/types/compute-engine/engine-declarations.d.ts +1 -2
  95. package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +2 -2
  96. package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
  97. package/dist/types/compute-engine/engine-latex-dictionary-state.d.ts +1 -1
  98. package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
  99. package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
  100. package/dist/types/compute-engine/engine-parse-entrypoint.d.ts +1 -1
  101. package/dist/types/compute-engine/engine-runtime-state.d.ts +1 -1
  102. package/dist/types/compute-engine/engine-scope.d.ts +1 -4
  103. package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
  104. package/dist/types/compute-engine/engine-simplification-rules.d.ts +1 -1
  105. package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
  106. package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
  107. package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
  108. package/dist/types/compute-engine/free-functions.d.ts +3 -3
  109. package/dist/types/compute-engine/function-utils.d.ts +34 -15
  110. package/dist/types/compute-engine/global-types.d.ts +1 -1
  111. package/dist/types/compute-engine/index.d.ts +5 -26
  112. package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
  113. package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
  114. package/dist/types/compute-engine/interval/elementary.d.ts +1 -1
  115. package/dist/types/compute-engine/interval/index.d.ts +1 -1
  116. package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
  117. package/dist/types/compute-engine/interval/types.d.ts +1 -1
  118. package/dist/types/compute-engine/interval/util.d.ts +1 -1
  119. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  120. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  121. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  122. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  123. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  124. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  125. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  126. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  127. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  128. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  129. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  130. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  131. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  132. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
  133. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
  134. package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +1 -1
  135. package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
  136. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
  137. package/dist/types/compute-engine/latex-syntax/parse.d.ts +1 -1
  138. package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
  139. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
  140. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
  141. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
  142. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  143. package/dist/types/compute-engine/latex-syntax/types.d.ts +1 -1
  144. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  145. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
  146. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  147. package/dist/types/compute-engine/library/collections.d.ts +1 -1
  148. package/dist/types/compute-engine/library/colors.d.ts +1 -1
  149. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  150. package/dist/types/compute-engine/library/complex.d.ts +1 -1
  151. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  152. package/dist/types/compute-engine/library/core.d.ts +1 -1
  153. package/dist/types/compute-engine/library/fractals.d.ts +2 -0
  154. package/dist/types/compute-engine/library/library.d.ts +1 -1
  155. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  156. package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
  157. package/dist/types/compute-engine/library/logic.d.ts +1 -1
  158. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  159. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  160. package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
  161. package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
  162. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  163. package/dist/types/compute-engine/library/sets.d.ts +1 -1
  164. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  165. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  166. package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
  167. package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
  168. package/dist/types/compute-engine/library/units.d.ts +1 -1
  169. package/dist/types/compute-engine/library/utils.d.ts +1 -1
  170. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
  171. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
  172. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
  173. package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
  174. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  175. package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
  176. package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
  177. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  178. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  179. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +2 -2
  180. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
  181. package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
  182. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  183. package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
  184. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  185. package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
  186. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
  187. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  188. package/dist/types/compute-engine/numerics/types.d.ts +1 -1
  189. package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
  190. package/dist/types/compute-engine/oeis.d.ts +1 -1
  191. package/dist/types/compute-engine/sequence.d.ts +1 -1
  192. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
  193. package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
  194. package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
  195. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
  196. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
  197. package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
  198. package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
  199. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
  200. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
  201. package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
  202. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
  203. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
  204. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
  205. package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
  206. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
  207. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
  208. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
  209. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  210. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
  211. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  212. package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
  213. package/dist/types/compute-engine/types-definitions.d.ts +6 -7
  214. package/dist/types/compute-engine/types-engine.d.ts +1 -9
  215. package/dist/types/compute-engine/types-evaluation.d.ts +2 -2
  216. package/dist/types/compute-engine/types-expression.d.ts +50 -6
  217. package/dist/types/compute-engine/types-kernel-evaluation.d.ts +5 -8
  218. package/dist/types/compute-engine/types-kernel-serialization.d.ts +1 -1
  219. package/dist/types/compute-engine/types-serialization.d.ts +1 -1
  220. package/dist/types/compute-engine/types.d.ts +1 -1
  221. package/dist/types/compute-engine.d.ts +1 -3
  222. package/dist/types/math-json/symbols.d.ts +1 -1
  223. package/dist/types/math-json/types.d.ts +1 -1
  224. package/dist/types/math-json/utils.d.ts +1 -1
  225. package/dist/types/math-json.d.ts +2 -2
  226. package/package.json +20 -20
  227. package/dist/compute-engine.min.umd.js +0 -2812
  228. package/dist/types/compute-engine/compilation/interval-glsl-target.d.ts +0 -51
  229. package/dist/types/compute-engine/compilation/interval-wgsl-target.d.ts +0 -54
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  type InternalSimplifyOptions = SimplifyOptions & {
3
3
  useVariations: boolean;
4
4
  };
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  /**
3
3
  * Solve a system of linear equations.
4
4
  *
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  export declare const UNIVARIATE_ROOTS: Rule[];
3
3
  /**
4
4
  * MathJsonExpression is a function of a single variable (`x`) or an Equality
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  type ComplexResult = {
3
3
  re: number;
4
4
  im: number;
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  /** Assuming x in an expression in radians, convert to current angular unit. */
3
3
  export declare function radiansToAngle(x: Expression | undefined): Expression | undefined;
4
4
  export declare function evalTrig(name: string, op: Expression | undefined): Expression | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { NumericValue } from '../numeric-value/types';
3
3
  /** Preferred guard for runtime expressions. */
4
4
  export declare function isExpression(x: unknown): x is Expression;
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import { Type } from '../../common/type/types';
3
3
  import { NumericValue } from '../numeric-value/types';
4
4
  /**
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { Expression, IComputeEngine as ComputeEngine } from '../global-types';
3
3
  /**
4
4
  * Check that the number of arguments is as expected.
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  /** If a collection has fewer than this many elements, eagerly evaluate it.
3
3
  *
4
4
  * For example, evaluate the Union of two sets with 10 elements each will
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { CompileTarget, TargetSource } from './types';
3
3
  /**
4
4
  * Base compiler class containing language-agnostic compilation logic
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { Expression, JSSource } from '../global-types';
3
3
  import type { CompileTarget, CompilationResult } from './types';
4
4
  type CompileExpressionOptions<T extends string = string> = {
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { CompiledFunctions } from './types';
3
3
  import { GPUShaderTarget } from './gpu-target';
4
4
  /**
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { CompileTarget, CompiledOperators, CompiledFunctions, LanguageTarget, CompilationOptions, CompilationResult } from './types';
3
3
  /**
4
4
  * GPU shader operators shared by GLSL and WGSL.
@@ -41,6 +41,85 @@ export declare const GPU_GAMMA_PREAMBLE = "\nfloat _gpu_gamma(float z) {\n cons
41
41
  * Maximum error: |epsilon(x)| <= 1.5e-7.
42
42
  */
43
43
  export declare const GPU_ERF_PREAMBLE = "\nfloat _gpu_erf(float x) {\n float ax = abs(x);\n float t = 1.0 / (1.0 + 0.3275911 * ax);\n float y = ((((1.061405429 * t - 1.453152027) * t + 1.421413741) * t - 0.284496736) * t + 0.254829592) * t;\n float result = 1.0 - y * exp(-ax * ax);\n return x < 0.0 ? -result : result;\n}\n\nfloat _gpu_erfinv(float x) {\n float pi = 3.14159265358979;\n float x2 = x * x;\n float x3 = x * x2;\n float x5 = x3 * x2;\n float x7 = x5 * x2;\n float x9 = x7 * x2;\n return sqrt(pi) * 0.5 * (x + (pi / 12.0) * x3 + (7.0 * pi * pi / 480.0) * x5 + (127.0 * pi * pi * pi / 40320.0) * x7 + (4369.0 * pi * pi * pi * pi / 5806080.0) * x9);\n}\n";
44
+ /**
45
+ * GPU Heaviside step function preamble (GLSL syntax).
46
+ * Returns 0 for x<0, 0.5 at x=0, 1 for x>0.
47
+ */
48
+ export declare const GPU_HEAVISIDE_PREAMBLE_GLSL = "\nfloat _gpu_heaviside(float x) {\n if (x < 0.0) return 0.0;\n if (x > 0.0) return 1.0;\n return 0.5;\n}\n";
49
+ /**
50
+ * GPU Heaviside step function preamble (WGSL syntax).
51
+ */
52
+ export declare const GPU_HEAVISIDE_PREAMBLE_WGSL = "\nfn _gpu_heaviside(x: f32) -> f32 {\n if (x < 0.0) { return 0.0; }\n if (x > 0.0) { return 1.0; }\n return 0.5;\n}\n";
53
+ /**
54
+ * GPU sinc function preamble (GLSL syntax).
55
+ * sinc(x) = sin(x)/x, sinc(0) = 1.
56
+ */
57
+ export declare const GPU_SINC_PREAMBLE_GLSL = "\nfloat _gpu_sinc(float x) {\n if (abs(x) < 1e-10) return 1.0;\n return sin(x) / x;\n}\n";
58
+ /**
59
+ * GPU sinc function preamble (WGSL syntax).
60
+ */
61
+ export declare const GPU_SINC_PREAMBLE_WGSL = "\nfn _gpu_sinc(x: f32) -> f32 {\n if (abs(x) < 1e-10) { return 1.0; }\n return sin(x) / x;\n}\n";
62
+ /**
63
+ * GPU Horner polynomial evaluation helper (GLSL syntax).
64
+ * Shared by FresnelC and FresnelS preambles.
65
+ */
66
+ export declare const GPU_POLEVL_PREAMBLE_GLSL = "\nfloat _gpu_polevl(float x, float c[12], int n) {\n float ans = c[0];\n for (int i = 1; i < n; i++) ans = ans * x + c[i];\n return ans;\n}\n";
67
+ /**
68
+ * GPU Horner polynomial evaluation helper (WGSL syntax).
69
+ */
70
+ export declare const GPU_POLEVL_PREAMBLE_WGSL = "\nfn _gpu_polevl(x: f32, c: array<f32, 12>, n: i32) -> f32 {\n var ans = c[0];\n for (var i: i32 = 1; i < n; i++) { ans = ans * x + c[i]; }\n return ans;\n}\n";
71
+ /**
72
+ * GPU Fresnel cosine integral preamble (GLSL syntax).
73
+ *
74
+ * C(x) = integral from 0 to x of cos(pi*t^2/2) dt.
75
+ * Uses rational Chebyshev approximation (Cephes/scipy) with three regions:
76
+ * |x|<1.6, 1.6<=|x|<36, |x|>=36.
77
+ * Requires _gpu_polevl preamble.
78
+ */
79
+ export declare const GPU_FRESNELC_PREAMBLE_GLSL = "\nfloat _gpu_fresnelC(float x_in) {\n float sgn = x_in < 0.0 ? -1.0 : 1.0;\n float x = abs(x_in);\n\n if (x < 1.6) {\n float x2 = x * x;\n float t = x2 * x2;\n float cn[6] = float[6](\n -4.98843114573573548651e-8, 9.50428062829859605134e-6,\n -6.45191435683965050962e-4, 1.88843319396703850064e-2,\n -2.05525900955013891793e-1, 9.99999999999999998822e-1\n );\n float cd[7] = float[7](\n 3.99982968972495980367e-12, 9.15439215774657478799e-10,\n 1.25001862479598821474e-7, 1.22262789024179030997e-5,\n 8.68029542941784300606e-4, 4.12142090722199792936e-2, 1.0\n );\n return sgn * x * _gpu_polevl(t, cn, 6) / _gpu_polevl(t, cd, 7);\n }\n\n if (x < 36.0) {\n float x2 = x * x;\n float t = 3.14159265358979 * x2;\n float u = 1.0 / (t * t);\n float fn[10] = float[10](\n 4.21543555043677546506e-1, 1.43407919780758885261e-1,\n 1.15220955073585758835e-2, 3.450179397825740279e-4,\n 4.63613749287867322088e-6, 3.05568983790257605827e-8,\n 1.02304514164907233465e-10, 1.72010743268161828879e-13,\n 1.34283276233062758925e-16, 3.76329711269987889006e-20\n );\n float fd[11] = float[11](\n 1.0, 7.51586398353378947175e-1,\n 1.16888925859191382142e-1, 6.44051526508858611005e-3,\n 1.55934409164153020873e-4, 1.8462756734893054587e-6,\n 1.12699224763999035261e-8, 3.60140029589371370404e-11,\n 5.8875453362157841001e-14, 4.52001434074129701496e-17,\n 1.25443237090011264384e-20\n );\n float gn[11] = float[11](\n 5.04442073643383265887e-1, 1.97102833525523411709e-1,\n 1.87648584092575249293e-2, 6.84079380915393090172e-4,\n 1.15138826111884280931e-5, 9.82852443688422223854e-8,\n 4.45344415861750144738e-10, 1.08268041139020870318e-12,\n 1.37555460633261799868e-15, 8.36354435630677421531e-19,\n 1.86958710162783235106e-22\n );\n float gd[12] = float[12](\n 1.0, 1.47495759925128324529,\n 3.37748989120019970451e-1, 2.53603741420338795122e-2,\n 8.14679107184306179049e-4, 1.27545075667729118702e-5,\n 1.04314589657571990585e-7, 4.60680728515232032307e-10,\n 1.10273215066240270757e-12, 1.38796531259578871258e-15,\n 8.39158816283118707363e-19, 1.86958710162783236342e-22\n );\n float f = 1.0 - u * _gpu_polevl(u, fn, 10) / _gpu_polevl(u, fd, 11);\n float g = (1.0 / t) * _gpu_polevl(u, gn, 11) / _gpu_polevl(u, gd, 12);\n float z = 1.5707963267948966 * x2;\n float c = cos(z);\n float s = sin(z);\n return sgn * (0.5 + (f * s - g * c) / (3.14159265358979 * x));\n }\n\n return sgn * 0.5;\n}\n";
80
+ /**
81
+ * GPU Fresnel cosine integral preamble (WGSL syntax).
82
+ * Requires _gpu_polevl preamble.
83
+ */
84
+ export declare const GPU_FRESNELC_PREAMBLE_WGSL = "\nfn _gpu_fresnelC(x_in: f32) -> f32 {\n let sgn: f32 = select(1.0, -1.0, x_in < 0.0);\n let x = abs(x_in);\n\n if (x < 1.6) {\n let x2 = x * x;\n let t = x2 * x2;\n var cn = array<f32, 12>(\n -4.98843114573573548651e-8, 9.50428062829859605134e-6,\n -6.45191435683965050962e-4, 1.88843319396703850064e-2,\n -2.05525900955013891793e-1, 9.99999999999999998822e-1,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0\n );\n var cd = array<f32, 12>(\n 3.99982968972495980367e-12, 9.15439215774657478799e-10,\n 1.25001862479598821474e-7, 1.22262789024179030997e-5,\n 8.68029542941784300606e-4, 4.12142090722199792936e-2, 1.0,\n 0.0, 0.0, 0.0, 0.0, 0.0\n );\n return sgn * x * _gpu_polevl(t, cn, 6) / _gpu_polevl(t, cd, 7);\n }\n\n if (x < 36.0) {\n let x2 = x * x;\n let t = 3.14159265358979 * x2;\n let u = 1.0 / (t * t);\n var fn = array<f32, 12>(\n 4.21543555043677546506e-1, 1.43407919780758885261e-1,\n 1.15220955073585758835e-2, 3.450179397825740279e-4,\n 4.63613749287867322088e-6, 3.05568983790257605827e-8,\n 1.02304514164907233465e-10, 1.72010743268161828879e-13,\n 1.34283276233062758925e-16, 3.76329711269987889006e-20,\n 0.0, 0.0\n );\n var fd = array<f32, 12>(\n 1.0, 7.51586398353378947175e-1,\n 1.16888925859191382142e-1, 6.44051526508858611005e-3,\n 1.55934409164153020873e-4, 1.8462756734893054587e-6,\n 1.12699224763999035261e-8, 3.60140029589371370404e-11,\n 5.8875453362157841001e-14, 4.52001434074129701496e-17,\n 1.25443237090011264384e-20, 0.0\n );\n var gn = array<f32, 12>(\n 5.04442073643383265887e-1, 1.97102833525523411709e-1,\n 1.87648584092575249293e-2, 6.84079380915393090172e-4,\n 1.15138826111884280931e-5, 9.82852443688422223854e-8,\n 4.45344415861750144738e-10, 1.08268041139020870318e-12,\n 1.37555460633261799868e-15, 8.36354435630677421531e-19,\n 1.86958710162783235106e-22, 0.0\n );\n var gd = array<f32, 12>(\n 1.0, 1.47495759925128324529,\n 3.37748989120019970451e-1, 2.53603741420338795122e-2,\n 8.14679107184306179049e-4, 1.27545075667729118702e-5,\n 1.04314589657571990585e-7, 4.60680728515232032307e-10,\n 1.10273215066240270757e-12, 1.38796531259578871258e-15,\n 8.39158816283118707363e-19, 1.86958710162783236342e-22\n );\n let f = 1.0 - u * _gpu_polevl(u, fn, 10) / _gpu_polevl(u, fd, 11);\n let g = (1.0 / t) * _gpu_polevl(u, gn, 11) / _gpu_polevl(u, gd, 12);\n let z = 1.5707963267948966 * x2;\n let c = cos(z);\n let s = sin(z);\n return sgn * (0.5 + (f * s - g * c) / (3.14159265358979 * x));\n }\n\n return sgn * 0.5;\n}\n";
85
+ /**
86
+ * GPU Fresnel sine integral preamble (GLSL syntax).
87
+ *
88
+ * S(x) = integral from 0 to x of sin(pi*t^2/2) dt.
89
+ * Uses rational Chebyshev approximation (Cephes/scipy) with three regions.
90
+ * Requires _gpu_polevl preamble.
91
+ */
92
+ export declare const GPU_FRESNELS_PREAMBLE_GLSL = "\nfloat _gpu_fresnelS(float x_in) {\n float sgn = x_in < 0.0 ? -1.0 : 1.0;\n float x = abs(x_in);\n\n if (x < 1.6) {\n float x2 = x * x;\n float t = x2 * x2;\n float sn[6] = float[6](\n -2.99181919401019853726e3, 7.08840045257738576863e5,\n -6.29741486205862506537e7, 2.54890880573376359104e9,\n -4.42979518059697779103e10, 3.18016297876567817986e11\n );\n float sd[7] = float[7](\n 1.0, 2.81376268889994315696e2, 4.55847810806532581675e4,\n 5.1734388877009640073e6, 4.19320245898111231129e8, 2.2441179564534092094e10,\n 6.07366389490084914091e11\n );\n return sgn * x * x2 * _gpu_polevl(t, sn, 6) / _gpu_polevl(t, sd, 7);\n }\n\n if (x < 36.0) {\n float x2 = x * x;\n float t = 3.14159265358979 * x2;\n float u = 1.0 / (t * t);\n float fn[10] = float[10](\n 4.21543555043677546506e-1, 1.43407919780758885261e-1,\n 1.15220955073585758835e-2, 3.450179397825740279e-4,\n 4.63613749287867322088e-6, 3.05568983790257605827e-8,\n 1.02304514164907233465e-10, 1.72010743268161828879e-13,\n 1.34283276233062758925e-16, 3.76329711269987889006e-20\n );\n float fd[11] = float[11](\n 1.0, 7.51586398353378947175e-1,\n 1.16888925859191382142e-1, 6.44051526508858611005e-3,\n 1.55934409164153020873e-4, 1.8462756734893054587e-6,\n 1.12699224763999035261e-8, 3.60140029589371370404e-11,\n 5.8875453362157841001e-14, 4.52001434074129701496e-17,\n 1.25443237090011264384e-20\n );\n float gn[11] = float[11](\n 5.04442073643383265887e-1, 1.97102833525523411709e-1,\n 1.87648584092575249293e-2, 6.84079380915393090172e-4,\n 1.15138826111884280931e-5, 9.82852443688422223854e-8,\n 4.45344415861750144738e-10, 1.08268041139020870318e-12,\n 1.37555460633261799868e-15, 8.36354435630677421531e-19,\n 1.86958710162783235106e-22\n );\n float gd[12] = float[12](\n 1.0, 1.47495759925128324529,\n 3.37748989120019970451e-1, 2.53603741420338795122e-2,\n 8.14679107184306179049e-4, 1.27545075667729118702e-5,\n 1.04314589657571990585e-7, 4.60680728515232032307e-10,\n 1.10273215066240270757e-12, 1.38796531259578871258e-15,\n 8.39158816283118707363e-19, 1.86958710162783236342e-22\n );\n float f = 1.0 - u * _gpu_polevl(u, fn, 10) / _gpu_polevl(u, fd, 11);\n float g = (1.0 / t) * _gpu_polevl(u, gn, 11) / _gpu_polevl(u, gd, 12);\n float z = 1.5707963267948966 * x2;\n float c = cos(z);\n float s = sin(z);\n return sgn * (0.5 - (f * c + g * s) / (3.14159265358979 * x));\n }\n\n return sgn * 0.5;\n}\n";
93
+ /**
94
+ * GPU Fresnel sine integral preamble (WGSL syntax).
95
+ * Requires _gpu_polevl preamble.
96
+ */
97
+ export declare const GPU_FRESNELS_PREAMBLE_WGSL = "\nfn _gpu_fresnelS(x_in: f32) -> f32 {\n let sgn: f32 = select(1.0, -1.0, x_in < 0.0);\n let x = abs(x_in);\n\n if (x < 1.6) {\n let x2 = x * x;\n let t = x2 * x2;\n var sn = array<f32, 12>(\n -2.99181919401019853726e3, 7.08840045257738576863e5,\n -6.29741486205862506537e7, 2.54890880573376359104e9,\n -4.42979518059697779103e10, 3.18016297876567817986e11,\n 0.0, 0.0, 0.0, 0.0, 0.0, 0.0\n );\n var sd = array<f32, 12>(\n 1.0, 2.81376268889994315696e2, 4.55847810806532581675e4,\n 5.1734388877009640073e6, 4.19320245898111231129e8, 2.2441179564534092094e10,\n 6.07366389490084914091e11,\n 0.0, 0.0, 0.0, 0.0, 0.0\n );\n return sgn * x * x2 * _gpu_polevl(t, sn, 6) / _gpu_polevl(t, sd, 7);\n }\n\n if (x < 36.0) {\n let x2 = x * x;\n let t = 3.14159265358979 * x2;\n let u = 1.0 / (t * t);\n var fn = array<f32, 12>(\n 4.21543555043677546506e-1, 1.43407919780758885261e-1,\n 1.15220955073585758835e-2, 3.450179397825740279e-4,\n 4.63613749287867322088e-6, 3.05568983790257605827e-8,\n 1.02304514164907233465e-10, 1.72010743268161828879e-13,\n 1.34283276233062758925e-16, 3.76329711269987889006e-20,\n 0.0, 0.0\n );\n var fd = array<f32, 12>(\n 1.0, 7.51586398353378947175e-1,\n 1.16888925859191382142e-1, 6.44051526508858611005e-3,\n 1.55934409164153020873e-4, 1.8462756734893054587e-6,\n 1.12699224763999035261e-8, 3.60140029589371370404e-11,\n 5.8875453362157841001e-14, 4.52001434074129701496e-17,\n 1.25443237090011264384e-20, 0.0\n );\n var gn = array<f32, 12>(\n 5.04442073643383265887e-1, 1.97102833525523411709e-1,\n 1.87648584092575249293e-2, 6.84079380915393090172e-4,\n 1.15138826111884280931e-5, 9.82852443688422223854e-8,\n 4.45344415861750144738e-10, 1.08268041139020870318e-12,\n 1.37555460633261799868e-15, 8.36354435630677421531e-19,\n 1.86958710162783235106e-22, 0.0\n );\n var gd = array<f32, 12>(\n 1.0, 1.47495759925128324529,\n 3.37748989120019970451e-1, 2.53603741420338795122e-2,\n 8.14679107184306179049e-4, 1.27545075667729118702e-5,\n 1.04314589657571990585e-7, 4.60680728515232032307e-10,\n 1.10273215066240270757e-12, 1.38796531259578871258e-15,\n 8.39158816283118707363e-19, 1.86958710162783236342e-22\n );\n let f = 1.0 - u * _gpu_polevl(u, fn, 10) / _gpu_polevl(u, fd, 11);\n let g = (1.0 / t) * _gpu_polevl(u, gn, 11) / _gpu_polevl(u, gd, 12);\n let z = 1.5707963267948966 * x2;\n let c = cos(z);\n let s = sin(z);\n return sgn * (0.5 - (f * c + g * s) / (3.14159265358979 * x));\n }\n\n return sgn * 0.5;\n}\n";
98
+ /**
99
+ * GPU Bessel J function preamble (GLSL syntax).
100
+ *
101
+ * J_n(x) for integer order n. Uses three algorithms:
102
+ * - Power series for small x (x < 5+n)
103
+ * - Hankel asymptotic for large x (x > 25+n^2/2)
104
+ * - Miller's backward recurrence for intermediate x
105
+ */
106
+ export declare const GPU_BESSELJ_PREAMBLE_GLSL = "\nfloat _gpu_factorial(int n) {\n float f = 1.0;\n for (int i = 2; i <= n; i++) f *= float(i);\n return f;\n}\n\nfloat _gpu_besselJ_series(int n, float x) {\n float halfX = x / 2.0;\n float negQ = -(x * x) / 4.0;\n float term = 1.0;\n for (int i = 1; i <= n; i++) term /= float(i);\n float s = term;\n for (int k = 1; k <= 60; k++) {\n term *= negQ / (float(k) * float(n + k));\n s += term;\n if (abs(term) < abs(s) * 1e-7) break;\n }\n return s * pow(halfX, float(n));\n}\n\nfloat _gpu_besselJ_asymptotic(int n, float x) {\n float mu = 4.0 * float(n) * float(n);\n float P = 1.0;\n float Q = 0.0;\n float ak = 1.0;\n float e8x = 8.0 * x;\n for (int k = 1; k <= 12; k++) {\n float twokm1 = float(2 * k - 1);\n ak *= mu - twokm1 * twokm1;\n float denom = _gpu_factorial(k) * pow(e8x, float(k));\n float contrib = ak / denom;\n if (k == 1 || k == 3 || k == 5 || k == 7 || k == 9 || k == 11) {\n // odd k: contributes to Q\n if (((k - 1) / 2) % 2 == 0) Q += contrib;\n else Q -= contrib;\n } else {\n // even k: contributes to P\n if ((k / 2) % 2 == 1) P -= contrib;\n else P += contrib;\n }\n if (abs(contrib) < 1e-7) break;\n }\n float chi = x - (float(n) / 2.0 + 0.25) * 3.14159265358979;\n return sqrt(2.0 / (3.14159265358979 * x)) * (P * cos(chi) - Q * sin(chi));\n}\n\nfloat _gpu_besselJ(int n, float x) {\n if (x == 0.0) return n == 0 ? 1.0 : 0.0;\n float sgn = 1.0;\n if (n < 0) {\n n = -n;\n if (n % 2 != 0) sgn = -1.0;\n }\n if (x < 0.0) {\n x = -x;\n if (n % 2 != 0) sgn *= -1.0;\n }\n if (x > 25.0 + float(n * n) / 2.0) return sgn * _gpu_besselJ_asymptotic(n, x);\n if (x < 5.0 + float(n)) return sgn * _gpu_besselJ_series(n, x);\n // Miller's backward recurrence\n int M = max(n + 20, int(ceil(x)) + 30);\n if (M > 200) return sgn * _gpu_besselJ_series(n, x);\n float vals[201];\n float jp1 = 0.0;\n float jk = 1.0;\n vals[M] = jk;\n for (int k = M; k >= 1; k--) {\n float jm1 = (2.0 * float(k) / x) * jk - jp1;\n jp1 = jk;\n jk = jm1;\n vals[k - 1] = jk;\n }\n float norm = vals[0];\n for (int k = 2; k <= M; k += 2) norm += 2.0 * vals[k];\n return sgn * vals[n] / norm;\n}\n";
107
+ /**
108
+ * GPU Bessel J function preamble (WGSL syntax).
109
+ */
110
+ export declare const GPU_BESSELJ_PREAMBLE_WGSL = "\nfn _gpu_factorial(n: i32) -> f32 {\n var f: f32 = 1.0;\n for (var i: i32 = 2; i <= n; i++) { f *= f32(i); }\n return f;\n}\n\nfn _gpu_besselJ_series(n_in: i32, x: f32) -> f32 {\n let halfX = x / 2.0;\n let negQ = -(x * x) / 4.0;\n var term: f32 = 1.0;\n for (var i: i32 = 1; i <= n_in; i++) { term /= f32(i); }\n var s = term;\n for (var k: i32 = 1; k <= 60; k++) {\n term *= negQ / (f32(k) * f32(n_in + k));\n s += term;\n if (abs(term) < abs(s) * 1e-7) { break; }\n }\n return s * pow(halfX, f32(n_in));\n}\n\nfn _gpu_besselJ_asymptotic(n_in: i32, x: f32) -> f32 {\n let mu = 4.0 * f32(n_in) * f32(n_in);\n var P: f32 = 1.0;\n var Q: f32 = 0.0;\n var ak: f32 = 1.0;\n let e8x = 8.0 * x;\n for (var k: i32 = 1; k <= 12; k++) {\n let twokm1 = f32(2 * k - 1);\n ak *= mu - twokm1 * twokm1;\n let denom = _gpu_factorial(k) * pow(e8x, f32(k));\n let contrib = ak / denom;\n if (k == 1 || k == 3 || k == 5 || k == 7 || k == 9 || k == 11) {\n if (((k - 1) / 2) % 2 == 0) { Q += contrib; }\n else { Q -= contrib; }\n } else {\n if ((k / 2) % 2 == 1) { P -= contrib; }\n else { P += contrib; }\n }\n if (abs(contrib) < 1e-7) { break; }\n }\n let chi = x - (f32(n_in) / 2.0 + 0.25) * 3.14159265358979;\n return sqrt(2.0 / (3.14159265358979 * x)) * (P * cos(chi) - Q * sin(chi));\n}\n\nfn _gpu_besselJ(n_in: i32, x_in: f32) -> f32 {\n var n = n_in;\n var x = x_in;\n if (x == 0.0) { return select(0.0, 1.0, n == 0); }\n var sgn: f32 = 1.0;\n if (n < 0) {\n n = -n;\n if (n % 2 != 0) { sgn = -1.0; }\n }\n if (x < 0.0) {\n x = -x;\n if (n % 2 != 0) { sgn *= -1.0; }\n }\n if (x > 25.0 + f32(n * n) / 2.0) { return sgn * _gpu_besselJ_asymptotic(n, x); }\n if (x < 5.0 + f32(n)) { return sgn * _gpu_besselJ_series(n, x); }\n // Miller's backward recurrence\n var M = max(n + 20, i32(ceil(x)) + 30);\n if (M > 200) { return sgn * _gpu_besselJ_series(n, x); }\n var vals: array<f32, 201>;\n var jp1: f32 = 0.0;\n var jk: f32 = 1.0;\n vals[M] = jk;\n for (var k: i32 = M; k >= 1; k--) {\n let jm1 = (2.0 * f32(k) / x) * jk - jp1;\n jp1 = jk;\n jk = jm1;\n vals[k - 1] = jk;\n }\n var norm = vals[0];\n for (var k2: i32 = 2; k2 <= M; k2 += 2) { norm += 2.0 * vals[k2]; }\n return sgn * vals[n] / norm;\n}\n";
111
+ /**
112
+ * Fractal preamble (GLSL syntax).
113
+ *
114
+ * Smooth escape-time iteration for Mandelbrot and Julia sets.
115
+ * Both functions return a normalized float in [0, 1] with smooth coloring
116
+ * (log2(log2(|z|²)) formula) to avoid banding.
117
+ */
118
+ export declare const GPU_FRACTAL_PREAMBLE_GLSL = "\nfloat _fractal_mandelbrot(vec2 c, int maxIter) {\n vec2 z = vec2(0.0, 0.0);\n for (int i = 0; i < maxIter; i++) {\n z = vec2(z.x*z.x - z.y*z.y + c.x, 2.0*z.x*z.y + c.y);\n if (dot(z, z) > 4.0)\n return clamp((float(i) - log2(log2(dot(z, z))) + 4.0) / float(maxIter), 0.0, 1.0);\n }\n return 1.0;\n}\n\nfloat _fractal_julia(vec2 z, vec2 c, int maxIter) {\n for (int i = 0; i < maxIter; i++) {\n z = vec2(z.x*z.x - z.y*z.y + c.x, 2.0*z.x*z.y + c.y);\n if (dot(z, z) > 4.0)\n return clamp((float(i) - log2(log2(dot(z, z))) + 4.0) / float(maxIter), 0.0, 1.0);\n }\n return 1.0;\n}\n";
119
+ /**
120
+ * Fractal preamble (WGSL syntax).
121
+ */
122
+ export declare const GPU_FRACTAL_PREAMBLE_WGSL = "\nfn _fractal_mandelbrot(c: vec2f, maxIter: i32) -> f32 {\n var z = vec2f(0.0, 0.0);\n for (var i: i32 = 0; i < maxIter; i++) {\n z = vec2f(z.x*z.x - z.y*z.y + c.x, 2.0*z.x*z.y + c.y);\n if (dot(z, z) > 4.0) {\n return clamp((f32(i) - log2(log2(dot(z, z))) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n }\n return 1.0;\n}\n\nfn _fractal_julia(z_in: vec2f, c: vec2f, maxIter: i32) -> f32 {\n var z = z_in;\n for (var i: i32 = 0; i < maxIter; i++) {\n z = vec2f(z.x*z.x - z.y*z.y + c.x, 2.0*z.x*z.y + c.y);\n if (dot(z, z) > 4.0) {\n return clamp((f32(i) - log2(log2(dot(z, z))) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n }\n return 1.0;\n}\n";
44
123
  /**
45
124
  * GPU color space conversion preamble (GLSL syntax).
46
125
  *
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  * JavaScript interval arithmetic compilation target
3
3
  *
4
4
  * Compiles mathematical expressions to JavaScript code using interval arithmetic
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import { chop, factorial, factorial2, gcd, lcm, limit } from '../numerics/numeric';
3
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';
4
4
  import { choose } from '../boxed-expression/expand';
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
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.52.1 */
1
+ /* 0.53.1 */
2
2
  /**
3
3
  * Source code in the target language
4
4
  */
@@ -43,6 +43,14 @@ export interface CompileTarget<Expr = unknown> {
43
43
  preamble: string;
44
44
  /** Current indentation level */
45
45
  indent: number;
46
+ /** Format a variable declaration. Default: `let ${name}`.
47
+ * `typeHint` is an optional target-language type string (e.g. `'vec2'`)
48
+ * inferred from subsequent assignments. */
49
+ declare?: (name: string, typeHint?: string) => string;
50
+ /** Format a block expression. Receives compiled statements; the last
51
+ * element is the block's return value (without `return` prefix).
52
+ * Default: JavaScript IIFE. */
53
+ block?: (statements: string[]) => string;
46
54
  /** Target language identifier (for debugging/logging) */
47
55
  language?: string;
48
56
  }
@@ -71,8 +79,6 @@ export interface CompilationOptions<Expr = unknown> {
71
79
  * - `'glsl'` - Compile to GLSL (OpenGL Shading Language)
72
80
  * - `'wgsl'` - Compile to WGSL (WebGPU Shading Language)
73
81
  * - `'interval-js'` - Compile to JavaScript with interval arithmetic
74
- * - `'interval-glsl'` - Compile to GLSL with interval arithmetic
75
- * - `'interval-wgsl'` - Compile to WGSL with interval arithmetic
76
82
  *
77
83
  * Custom targets can be registered using `ce.registerCompilationTarget()`.
78
84
  *
@@ -229,12 +235,8 @@ export type CompilationResult<T extends string = string, R = number | ComplexRes
229
235
  /**
230
236
  * Library/helper code that must be included before the compiled `code`.
231
237
  *
232
- * For shader targets (e.g. `interval-wgsl`, `interval-glsl`), this contains
233
- * the interval arithmetic library (struct definitions, helper functions, etc.)
234
- * that the compiled expression references.
235
- *
236
- * To produce a complete shader, concatenate `preamble + code` or use the
237
- * target's `compileShaderFunction()` method directly.
238
+ * For targets like `interval-js`, this contains the interval arithmetic
239
+ * library (helper functions, etc.) that the compiled expression references.
238
240
  */
239
241
  preamble?: string;
240
242
  /**
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { CompiledFunctions } from './types';
3
3
  import { GPUShaderTarget } from './gpu-target';
4
4
  /**
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
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.52.1 */
1
+ /* 0.53.1 */
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.52.1 */
1
+ /* 0.53.1 */
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.52.1 */
1
+ /* 0.53.1 */
2
2
  export type CommonSymbolTable = {
3
3
  [symbol: string]: null | Expression;
4
4
  };
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { LanguageTarget } from './compilation/types';
3
3
  /**
4
4
  * Internal registry for compilation targets.
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  type ResetHooks = {
3
3
  refreshNumericConstants: () => void;
4
4
  resetCommonSymbols: () => void;
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
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';
@@ -7,7 +7,6 @@ export declare function declareSymbolValue(ce: IComputeEngine, name: MathJsonSym
7
7
  export declare function declareSymbolOperator(ce: IComputeEngine, name: string, def: OperatorDefinition, scope?: Scope): BoxedDefinition;
8
8
  export declare function getSymbolValue(ce: IComputeEngine, id: MathJsonSymbol): Expression | undefined;
9
9
  export declare function setSymbolValue(ce: IComputeEngine, id: MathJsonSymbol, value: Expression | boolean | number | undefined): void;
10
- export declare function setCurrentContextValue(ce: IComputeEngine, id: MathJsonSymbol, value: Expression | boolean | number | undefined): void;
11
10
  export declare function declareType(ce: IComputeEngine, name: string, type: BoxedType | Type | TypeString, { alias }?: {
12
11
  alias?: boolean;
13
12
  }): void;
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import { Decimal } from 'decimal.js';
3
3
  import type { MathJsonNumberObject, MathJsonSymbol } from '../math-json/types';
4
4
  import { NumericValue } from './numeric-value/types';
@@ -11,7 +11,7 @@ type SymbolHost = ComputeEngine & {
11
11
  strict: boolean;
12
12
  Nothing: Expression;
13
13
  lookupDefinition(id: MathJsonSymbol): undefined | BoxedDefinition;
14
- _declareSymbolValue(name: MathJsonSymbol, def: Partial<ValueDefinition>): BoxedDefinition;
14
+ _declareSymbolValue(name: MathJsonSymbol, def: Partial<ValueDefinition>, scope?: import('./global-types').Scope): BoxedDefinition;
15
15
  error(message: string | string[], where?: string): Expression;
16
16
  };
17
17
  type NumberHost = ComputeEngine & {
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
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,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { LatexDictionaryEntry } from './latex-syntax/types';
3
3
  type DefaultDictionaryProvider = () => Readonly<LatexDictionaryEntry[]>;
4
4
  export declare class EngineLatexDictionaryState {
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { LatexDictionaryEntry, LibraryCategory } from './latex-syntax/types';
3
3
  export declare function resolveBootstrapLibraries(libraries?: readonly (string | LibraryDefinition)[]): LibraryDefinition[];
4
4
  export declare function loadLibraryDefinitions(engine: ComputeEngine, libraries: readonly LibraryDefinition[]): void;
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { AngularUnit } from './types-definitions';
3
3
  export declare class EngineNumericConfiguration {
4
4
  private _bignum;
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { LatexString, ParseLatexOptions } from './latex-syntax/types';
3
3
  import type { FormOption } from './types-serialization';
4
4
  export type ParseEntrypointOptions = Partial<ParseLatexOptions> & {
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  private _timeLimit;
3
3
  private _iterationLimit;
4
4
  private _recursionLimit;
@@ -1,5 +1,4 @@
1
- /* 0.52.1 */
2
- import type { IComputeEngine, Scope, EvalContext } from './global-types';
1
+ /* 0.53.1 */
3
2
  export declare function pushScope(ce: IComputeEngine, scope?: Scope, name?: string): void;
4
3
  export declare function popScope(ce: IComputeEngine): void;
5
4
  export declare function pushEvalContext(ce: IComputeEngine, scope: Scope, name?: string): void;
@@ -9,5 +8,3 @@ export declare function printStack(ce: IComputeEngine, options?: {
9
8
  details?: boolean;
10
9
  maxDepth?: number;
11
10
  }): void;
12
- export declare function lookupContext(ce: IComputeEngine, id: MathJsonSymbol): EvalContext | undefined;
13
- export declare function swapContext(ce: IComputeEngine, context: EvalContext): void;
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
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.52.1 */
1
+ /* 0.53.1 */
2
2
  /**
3
3
  * Internal holder for simplification rules and their cache-staleness marker.
4
4
  *
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
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.52.1 */
1
+ /* 0.53.1 */
2
2
  type ResolverScope = {
3
3
  parent: ResolverScope | null;
4
4
  types?: Record<string, TypeReference>;
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
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.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { Type, TypeString } from '../common/type/types';
3
3
  import type { LatexString } from './latex-syntax/types';
4
4
  import { compile as compileExpr } from './compilation/compile-expression';
@@ -20,9 +20,9 @@ export declare function assign(id: string, value: AssignValue): void;
20
20
  export declare function assign(ids: {
21
21
  [id: string]: AssignValue;
22
22
  }): void;
23
- export declare function expand(expr: LatexString | ExpressionInput): Expression | null;
23
+ export declare function expand(expr: LatexString | ExpressionInput): Expression;
24
24
  export declare function solve(expr: LatexString | ExpressionInput, vars?: string | Iterable<string> | Expression | Iterable<Expression>): null | ReadonlyArray<Expression> | Record<string, Expression> | Array<Record<string, Expression>>;
25
- export declare function expandAll(expr: LatexString | ExpressionInput): Expression | null;
25
+ export declare function expandAll(expr: LatexString | ExpressionInput): Expression;
26
26
  export declare function factor(expr: LatexString | ExpressionInput): Expression;
27
27
  export declare function compile<T extends string = 'javascript'>(expr: LatexString | ExpressionInput, options: Parameters<typeof compileExpr>[1] & {
28
28
  to?: T;
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
2
2
  import type { BoxedDefinition, Expression, IComputeEngine as ComputeEngine, Scope } from './global-types';
3
3
  /***
4
4
  * ### THEORY OF OPERATIONS
@@ -11,27 +11,33 @@ import type { BoxedDefinition, Expression, IComputeEngine as ComputeEngine, Scop
11
11
  * (e.g. `["Function", ["Block", ["Add", "_", 1]], "_"]`).
12
12
  *
13
13
  *
14
- * #### DURING BOXING (in makeLambda())
15
- *
16
- * During the boxing/canonicalization phase of a function
17
- * (`["Function"]` expression or operator of expression):
14
+ * #### DURING CANONICALIZATION (in canonicalFunctionLiteralArguments())
18
15
  *
19
16
  * 1/ If not a `["Function"]` expression, the expression is rewritten
20
17
  * to a `["Function"]` expression with anonymous parameters
21
- * 2/ A new scope is created
22
- * 3/ The function parameters are declared in the scope
23
- * 4/ The function body is boxed in the context of the scope and the scope
24
- * is associated with the function
18
+ * 2/ A `Block` scope is created
19
+ * 3/ The function parameters are declared in the Block's scope
20
+ * 4/ The function body is canonicalized in the context of the scope.
21
+ * The Block's localScope captures the defining scope as its parent.
25
22
  *
26
23
  *
27
24
  * #### DURING EVALUATION (executing the result of makeLambda())
28
25
  *
29
- * 1/ The arguments are evaluated in the current scope
30
- * 2/ The context is swapped to the function scope
31
- * 3/ The function parameters are set to the value of the arguments
32
- * 4/ The function body is evaluated in the context of the function scope
33
- * 5/ The context is swapped back to the current scope
34
- * 6/ The result of the function body is returned
26
+ * 1/ The arguments are evaluated in the **calling** scope
27
+ * 2/ A fresh scope is created per call, with parent = the **defining**
28
+ * scope (body.localScope.parent), giving true lexical scoping
29
+ * 3/ The function parameters are declared in the fresh scope
30
+ * 4/ body.localScope is temporarily re-parented to chain through the
31
+ * fresh scope: bigOpScope bodyScope freshScope capturedScope.
32
+ * Param bindings in bodyScope (stale, from canonicalization) are
33
+ * temporarily hidden so they don't shadow freshScope's values.
34
+ * This lets nested scoped expressions (Sum, Product) find params
35
+ * by walking up their static scope chain.
36
+ * 5/ The function body is evaluated in the context of the fresh scope
37
+ * 6/ If the result contains Function literals, they are rebound to
38
+ * close over the fresh scope (closure capture)
39
+ * 7/ The fresh scope is discarded; body.localScope.parent is restored
40
+ * 8/ The result is returned
35
41
  *
36
42
  */
37
43
  /**
@@ -87,6 +93,19 @@ export declare function canonicalFunctionLiteralArguments(ce: ComputeEngine, ops
87
93
  * - the symbol for a function, e.g. `Sin`.
88
94
  */
89
95
  export declare function apply(fn: Expression, args: ReadonlyArray<Expression>): Expression;
96
+ /**
97
+ * Evaluate a sequence of statements, handling Return/Break/Continue.
98
+ *
99
+ * Used by both:
100
+ * - `evaluateBlock` in control-structures.ts (Block evaluation handler)
101
+ * - `makeLambda` below (iterates body.ops directly instead of calling
102
+ * body.evaluate(), because body is a Block whose _localScope has param
103
+ * bindings from canonicalization — declared with type 'unknown' but no
104
+ * value. If body.evaluate() were called, Block would push its _localScope
105
+ * as the eval context, and lookup() would find those stale bindings
106
+ * before reaching the freshScope where actual param values live.)
107
+ */
108
+ export declare function evaluateStatements(ce: ComputeEngine, ops: Iterable<Expression>): Expression;
90
109
  /**
91
110
  * Return a lambda function, assuming a scoped environment has been
92
111
  * created and there is a single numeric argument
@@ -1,4 +1,4 @@
1
- /* 0.52.1 */
1
+ /* 0.53.1 */
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';