@cortex-js/compute-engine 0.55.4 → 0.55.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compile.esm.js +100 -13
- package/dist/compile.min.esm.js +101 -49
- package/dist/compile.min.umd.cjs +101 -49
- package/dist/compile.umd.cjs +100 -13
- package/dist/compute-engine.esm.js +102 -14
- package/dist/compute-engine.min.esm.js +114 -62
- package/dist/compute-engine.min.umd.cjs +114 -62
- package/dist/compute-engine.umd.cjs +102 -14
- package/dist/core.esm.js +100 -13
- package/dist/core.min.esm.js +113 -61
- package/dist/core.min.umd.cjs +113 -61
- package/dist/core.umd.cjs +100 -13
- package/dist/interval.esm.js +2 -2
- package/dist/interval.min.esm.js +2 -2
- package/dist/interval.min.umd.cjs +2 -2
- package/dist/interval.umd.cjs +2 -2
- package/dist/latex-syntax.esm.js +2 -2
- package/dist/latex-syntax.min.esm.js +2 -2
- package/dist/latex-syntax.min.umd.cjs +2 -2
- package/dist/latex-syntax.umd.cjs +2 -2
- package/dist/math-json.esm.js +2 -2
- package/dist/math-json.min.esm.js +2 -2
- package/dist/math-json.min.umd.cjs +2 -2
- package/dist/math-json.umd.cjs +2 -2
- package/dist/numerics.esm.js +2 -2
- package/dist/numerics.min.esm.js +2 -2
- package/dist/numerics.min.umd.cjs +2 -2
- package/dist/numerics.umd.cjs +2 -2
- package/dist/types/big-decimal/big-decimal.d.ts +1 -1
- package/dist/types/big-decimal/index.d.ts +1 -1
- package/dist/types/big-decimal/transcendentals.d.ts +1 -1
- package/dist/types/big-decimal/utils.d.ts +1 -1
- package/dist/types/common/ansi-codes.d.ts +1 -1
- package/dist/types/common/configuration-change.d.ts +1 -1
- package/dist/types/common/fuzzy-string-match.d.ts +1 -1
- package/dist/types/common/grapheme-splitter.d.ts +1 -1
- package/dist/types/common/interruptible.d.ts +1 -1
- package/dist/types/common/one-of.d.ts +1 -1
- package/dist/types/common/signals.d.ts +1 -1
- package/dist/types/common/type/ast-nodes.d.ts +1 -1
- package/dist/types/common/type/boxed-type.d.ts +1 -1
- package/dist/types/common/type/lexer.d.ts +1 -1
- package/dist/types/common/type/parse.d.ts +1 -1
- package/dist/types/common/type/parser.d.ts +1 -1
- package/dist/types/common/type/primitive.d.ts +1 -1
- package/dist/types/common/type/reduce.d.ts +1 -1
- package/dist/types/common/type/serialize.d.ts +1 -1
- package/dist/types/common/type/subtype.d.ts +1 -1
- package/dist/types/common/type/type-builder.d.ts +1 -1
- package/dist/types/common/type/types.d.ts +1 -1
- package/dist/types/common/type/utils.d.ts +1 -1
- package/dist/types/common/utils.d.ts +1 -1
- package/dist/types/compile.d.ts +1 -1
- package/dist/types/compute-engine/assume.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
- package/dist/types/compute-engine/collection-utils.d.ts +1 -1
- package/dist/types/compute-engine/compilation/base-compiler.d.ts +1 -1
- package/dist/types/compute-engine/compilation/compile-expression.d.ts +3 -2
- package/dist/types/compute-engine/compilation/constant-folding.d.ts +1 -1
- package/dist/types/compute-engine/compilation/fractal-orbit.d.ts +9 -3
- package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/gpu-target.d.ts +12 -5
- package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/types.d.ts +22 -3
- package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
- package/dist/types/compute-engine/engine-cache.d.ts +1 -1
- package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
- package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
- package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
- package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
- package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
- package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
- package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
- package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
- package/dist/types/compute-engine/engine-runtime-state.d.ts +1 -1
- package/dist/types/compute-engine/engine-scope.d.ts +1 -1
- package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
- package/dist/types/compute-engine/engine-simplification-rules.d.ts +1 -1
- package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
- package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
- package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
- package/dist/types/compute-engine/free-functions.d.ts +1 -1
- package/dist/types/compute-engine/function-utils.d.ts +1 -1
- package/dist/types/compute-engine/global-types.d.ts +1 -1
- package/dist/types/compute-engine/index.d.ts +3 -2
- package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
- package/dist/types/compute-engine/interval/elementary.d.ts +1 -1
- package/dist/types/compute-engine/interval/index.d.ts +1 -1
- package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
- package/dist/types/compute-engine/interval/types.d.ts +1 -1
- package/dist/types/compute-engine/interval/util.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/types.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
- package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/calculus.d.ts +1 -1
- package/dist/types/compute-engine/library/collections.d.ts +1 -1
- package/dist/types/compute-engine/library/colors.d.ts +1 -1
- package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
- package/dist/types/compute-engine/library/complex.d.ts +1 -1
- package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
- package/dist/types/compute-engine/library/core.d.ts +1 -1
- package/dist/types/compute-engine/library/fractals.d.ts +1 -1
- package/dist/types/compute-engine/library/library.d.ts +1 -1
- package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
- package/dist/types/compute-engine/library/logic.d.ts +1 -1
- package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
- package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
- package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
- package/dist/types/compute-engine/library/sets.d.ts +1 -1
- package/dist/types/compute-engine/library/statistics.d.ts +1 -1
- package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
- package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
- package/dist/types/compute-engine/library/units.d.ts +1 -1
- package/dist/types/compute-engine/library/utils.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
- package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
- package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
- package/dist/types/compute-engine/numerics/linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
- package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
- package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
- package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
- package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
- package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
- package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
- package/dist/types/compute-engine/numerics/types.d.ts +1 -1
- package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
- package/dist/types/compute-engine/oeis.d.ts +1 -1
- package/dist/types/compute-engine/sequence.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
- package/dist/types/compute-engine/types-definitions.d.ts +1 -1
- package/dist/types/compute-engine/types-engine.d.ts +1 -1
- package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
- package/dist/types/compute-engine/types-expression.d.ts +1 -1
- package/dist/types/compute-engine/types-kernel-evaluation.d.ts +1 -1
- package/dist/types/compute-engine/types-kernel-serialization.d.ts +1 -1
- package/dist/types/compute-engine/types-serialization.d.ts +1 -1
- package/dist/types/compute-engine/types.d.ts +1 -1
- package/dist/types/compute-engine.d.ts +3 -2
- package/dist/types/core.d.ts +1 -1
- package/dist/types/interval.d.ts +1 -1
- package/dist/types/latex-syntax.d.ts +2 -2
- package/dist/types/math-json/symbols.d.ts +1 -1
- package/dist/types/math-json/types.d.ts +1 -1
- package/dist/types/math-json/utils.d.ts +1 -1
- package/dist/types/math-json.d.ts +2 -2
- package/dist/types/numerics.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
import type { CompileTarget, CompiledOperators, CompiledFunctions, LanguageTarget, CompilationOptions, CompilationResult } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* GPU shader operators shared by GLSL and WGSL.
|
|
@@ -130,8 +130,15 @@ export declare const GPU_DS_ARITHMETIC_PREAMBLE_WGSL = "\nfn ds_split(a: f32) ->
|
|
|
130
130
|
* Emulated double-precision (double-single) Mandelbrot and Julia iterations.
|
|
131
131
|
* Complex numbers are packed as vec4(re_hi, im_hi, re_lo, im_lo).
|
|
132
132
|
* Requires GPU_DS_ARITHMETIC_PREAMBLE_GLSL to be included first.
|
|
133
|
+
*
|
|
134
|
+
* Coordinate computation:
|
|
135
|
+
* The shader template provides single-precision x,y via mix(), which lose
|
|
136
|
+
* distinguishability at deep zoom. Instead, _dp_coord() computes coordinates
|
|
137
|
+
* from the viewport UV (v_uv) and center/size uniforms. The per-pixel delta
|
|
138
|
+
* from center is small enough for float to distinguish adjacent pixels, and
|
|
139
|
+
* ds_add combines it with the center for ~48-bit total precision.
|
|
133
140
|
*/
|
|
134
|
-
export declare const GPU_FRACTAL_DP_PREAMBLE_GLSL = "\nfloat _fractal_mandelbrot_dp(vec4 c, int maxIter) {\n // c = (re_hi, im_hi, re_lo, im_lo)\n vec2 cr = vec2(c.x, c.z); // real part as ds\n vec2 ci = vec2(c.y, c.w); // imag part as ds\n vec2 zr = vec2(0.0, 0.0);\n vec2 zi = vec2(0.0, 0.0);\n for (int i = 0; i < maxIter; i++) {\n vec2 zr2 = ds_sqr(zr);\n vec2 zi2 = ds_sqr(zi);\n // |z|^2 > 4.0 ?\n vec2 mag2 = ds_add(zr2, zi2);\n if (mag2.x > 4.0)\n return clamp((float(i) - log2(log2(mag2.x)) + 4.0) / float(maxIter), 0.0, 1.0);\n // z = z^2 + c\n vec2 new_zi = ds_add(ds_mul(ds_add(zr, zr), zi), ci); // 2*zr*zi + ci\n zr = ds_add(ds_sub(zr2, zi2), cr); // zr^2 - zi^2 + cr\n zi = new_zi;\n }\n return 1.0;\n}\n\nfloat _fractal_julia_dp(vec4 z_in, vec4 c, int maxIter) {\n vec2 zr = vec2(z_in.x, z_in.z);\n vec2 zi = vec2(z_in.y, z_in.w);\n vec2 cr = vec2(c.x, c.z);\n vec2 ci = vec2(c.y, c.w);\n for (int i = 0; i < maxIter; i++) {\n vec2 zr2 = ds_sqr(zr);\n vec2 zi2 = ds_sqr(zi);\n vec2 mag2 = ds_add(zr2, zi2);\n if (mag2.x > 4.0)\n return clamp((float(i) - log2(log2(mag2.x)) + 4.0) / float(maxIter), 0.0, 1.0);\n vec2 new_zi = ds_add(ds_mul(ds_add(zr, zr), zi), ci);\n zr = ds_add(ds_sub(zr2, zi2), cr);\n zi = new_zi;\n }\n return 1.0;\n}\n";
|
|
141
|
+
export declare const GPU_FRACTAL_DP_PREAMBLE_GLSL = "\nuniform float _dp_cx_hi;\nuniform float _dp_cx_lo;\nuniform float _dp_cy_hi;\nuniform float _dp_cy_lo;\nuniform float _dp_w;\nuniform float _dp_h;\n\nvec4 _dp_coord() {\n // Per-pixel offset from center \u2014 small, so float-precise\n float dx = (v_uv.x - 0.5) * _dp_w;\n float dy = (v_uv.y - 0.5) * _dp_h;\n // Combine center (hi+lo) + delta with emulated double precision\n vec2 cre = ds_add(vec2(_dp_cx_hi, _dp_cx_lo), ds_from(dx));\n vec2 cim = ds_add(vec2(_dp_cy_hi, _dp_cy_lo), ds_from(dy));\n return vec4(cre.x, cim.x, cre.y, cim.y);\n}\n\nfloat _fractal_mandelbrot_dp(vec4 c, int maxIter) {\n // c = (re_hi, im_hi, re_lo, im_lo)\n vec2 cr = vec2(c.x, c.z); // real part as ds\n vec2 ci = vec2(c.y, c.w); // imag part as ds\n vec2 zr = vec2(0.0, 0.0);\n vec2 zi = vec2(0.0, 0.0);\n for (int i = 0; i < maxIter; i++) {\n vec2 zr2 = ds_sqr(zr);\n vec2 zi2 = ds_sqr(zi);\n // |z|^2 > 4.0 ?\n vec2 mag2 = ds_add(zr2, zi2);\n if (mag2.x > 4.0)\n return clamp((float(i) - log2(log2(mag2.x)) + 4.0) / float(maxIter), 0.0, 1.0);\n // z = z^2 + c\n vec2 new_zi = ds_add(ds_mul(ds_add(zr, zr), zi), ci); // 2*zr*zi + ci\n zr = ds_add(ds_sub(zr2, zi2), cr); // zr^2 - zi^2 + cr\n zi = new_zi;\n }\n return 1.0;\n}\n\nfloat _fractal_julia_dp(vec4 z_in, vec4 c, int maxIter) {\n vec2 zr = vec2(z_in.x, z_in.z);\n vec2 zi = vec2(z_in.y, z_in.w);\n vec2 cr = vec2(c.x, c.z);\n vec2 ci = vec2(c.y, c.w);\n for (int i = 0; i < maxIter; i++) {\n vec2 zr2 = ds_sqr(zr);\n vec2 zi2 = ds_sqr(zi);\n vec2 mag2 = ds_add(zr2, zi2);\n if (mag2.x > 4.0)\n return clamp((float(i) - log2(log2(mag2.x)) + 4.0) / float(maxIter), 0.0, 1.0);\n vec2 new_zi = ds_add(ds_mul(ds_add(zr, zr), zi), ci);\n zr = ds_add(ds_sub(zr2, zi2), cr);\n zi = new_zi;\n }\n return 1.0;\n}\n";
|
|
135
142
|
/**
|
|
136
143
|
* Double-precision fractal preamble (WGSL syntax).
|
|
137
144
|
*
|
|
@@ -139,7 +146,7 @@ export declare const GPU_FRACTAL_DP_PREAMBLE_GLSL = "\nfloat _fractal_mandelbrot
|
|
|
139
146
|
* Complex numbers are packed as vec4f(re_hi, im_hi, re_lo, im_lo).
|
|
140
147
|
* Requires GPU_DS_ARITHMETIC_PREAMBLE_WGSL to be included first.
|
|
141
148
|
*/
|
|
142
|
-
export declare const GPU_FRACTAL_DP_PREAMBLE_WGSL = "\nfn _fractal_mandelbrot_dp(c: vec4f, maxIter: i32) -> f32 {\n let cr = vec2f(c.x, c.z);\n let ci = vec2f(c.y, c.w);\n var zr = vec2f(0.0, 0.0);\n var zi = vec2f(0.0, 0.0);\n for (var i: i32 = 0; i < maxIter; i++) {\n let zr2 = ds_sqr(zr);\n let zi2 = ds_sqr(zi);\n let mag2 = ds_add(zr2, zi2);\n if (mag2.x > 4.0) {\n return clamp((f32(i) - log2(log2(mag2.x)) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n let new_zi = ds_add(ds_mul(ds_add(zr, zr), zi), ci);\n zr = ds_add(ds_sub(zr2, zi2), cr);\n zi = new_zi;\n }\n return 1.0;\n}\n\nfn _fractal_julia_dp(z_in: vec4f, c: vec4f, maxIter: i32) -> f32 {\n var zr = vec2f(z_in.x, z_in.z);\n var zi = vec2f(z_in.y, z_in.w);\n let cr = vec2f(c.x, c.z);\n let ci = vec2f(c.y, c.w);\n for (var i: i32 = 0; i < maxIter; i++) {\n let zr2 = ds_sqr(zr);\n let zi2 = ds_sqr(zi);\n let mag2 = ds_add(zr2, zi2);\n if (mag2.x > 4.0) {\n return clamp((f32(i) - log2(log2(mag2.x)) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n let new_zi = ds_add(ds_mul(ds_add(zr, zr), zi), ci);\n zr = ds_add(ds_sub(zr2, zi2), cr);\n zi = new_zi;\n }\n return 1.0;\n}\n";
|
|
149
|
+
export declare const GPU_FRACTAL_DP_PREAMBLE_WGSL = "\n@group(0) @binding(10) var<uniform> _dp_cx_hi: f32;\n@group(0) @binding(11) var<uniform> _dp_cx_lo: f32;\n@group(0) @binding(12) var<uniform> _dp_cy_hi: f32;\n@group(0) @binding(13) var<uniform> _dp_cy_lo: f32;\n@group(0) @binding(14) var<uniform> _dp_w: f32;\n@group(0) @binding(15) var<uniform> _dp_h: f32;\n\nfn _dp_coord(uv: vec2f) -> vec4f {\n let dx = (uv.x - 0.5) * _dp_w;\n let dy = (uv.y - 0.5) * _dp_h;\n let cre = ds_add(vec2f(_dp_cx_hi, _dp_cx_lo), ds_from(dx));\n let cim = ds_add(vec2f(_dp_cy_hi, _dp_cy_lo), ds_from(dy));\n return vec4f(cre.x, cim.x, cre.y, cim.y);\n}\n\nfn _fractal_mandelbrot_dp(c: vec4f, maxIter: i32) -> f32 {\n let cr = vec2f(c.x, c.z);\n let ci = vec2f(c.y, c.w);\n var zr = vec2f(0.0, 0.0);\n var zi = vec2f(0.0, 0.0);\n for (var i: i32 = 0; i < maxIter; i++) {\n let zr2 = ds_sqr(zr);\n let zi2 = ds_sqr(zi);\n let mag2 = ds_add(zr2, zi2);\n if (mag2.x > 4.0) {\n return clamp((f32(i) - log2(log2(mag2.x)) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n let new_zi = ds_add(ds_mul(ds_add(zr, zr), zi), ci);\n zr = ds_add(ds_sub(zr2, zi2), cr);\n zi = new_zi;\n }\n return 1.0;\n}\n\nfn _fractal_julia_dp(z_in: vec4f, c: vec4f, maxIter: i32) -> f32 {\n var zr = vec2f(z_in.x, z_in.z);\n var zi = vec2f(z_in.y, z_in.w);\n let cr = vec2f(c.x, c.z);\n let ci = vec2f(c.y, c.w);\n for (var i: i32 = 0; i < maxIter; i++) {\n let zr2 = ds_sqr(zr);\n let zi2 = ds_sqr(zi);\n let mag2 = ds_add(zr2, zi2);\n if (mag2.x > 4.0) {\n return clamp((f32(i) - log2(log2(mag2.x)) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n let new_zi = ds_add(ds_mul(ds_add(zr, zr), zi), ci);\n zr = ds_add(ds_sub(zr2, zi2), cr);\n zi = new_zi;\n }\n return 1.0;\n}\n";
|
|
143
150
|
/**
|
|
144
151
|
* Fractal preamble (GLSL syntax).
|
|
145
152
|
*
|
|
@@ -159,13 +166,13 @@ export declare const GPU_FRACTAL_PREAMBLE_WGSL = "\nfn _fractal_mandelbrot(c: ve
|
|
|
159
166
|
* a perturbation delta relative to a precomputed reference orbit stored in
|
|
160
167
|
* a RG32F texture. Includes glitch detection with single-float fallback.
|
|
161
168
|
*/
|
|
162
|
-
export declare const GPU_FRACTAL_PT_PREAMBLE_GLSL = "\nuniform sampler2D _refOrbit;\nuniform int _refOrbitLen;\nuniform int _refOrbitTexWidth;\n\nvec2 _pt_fetch_orbit(int i) {\n int y = i / _refOrbitTexWidth;\n int x = i - y * _refOrbitTexWidth;\n return texelFetch(_refOrbit, ivec2(x, y), 0).rg;\n}\n\nfloat _fractal_mandelbrot_pt(vec2 delta_c, int maxIter) {\n float dr = 0.0;\n float di = 0.0;\n int orbitLen = min(maxIter, _refOrbitLen);\n for (int i = 0; i < orbitLen; i++) {\n vec2 Zn = _pt_fetch_orbit(i);\n // delta_{n+1} = 2*Z_n*delta_n + delta_n^2 + delta_c\n float new_dr = 2.0 * (Zn.x * dr - Zn.y * di) + dr * dr - di * di + delta_c.x;\n float new_di = 2.0 * (Zn.x * di + Zn.y * dr) + 2.0 * dr * di + delta_c.y;\n dr = new_dr;\n di = new_di;\n // Full z = Z_{n+1} + delta for escape check\n vec2 Zn1 = (i + 1 < orbitLen) ? _pt_fetch_orbit(i + 1) : vec2(0.0);\n float zr = Zn1.x + dr;\n float zi = Zn1.y + di;\n float mag2 = zr * zr + zi * zi;\n if (mag2 > 4.0)\n return clamp((float(i) - log2(log2(mag2)) + 4.0) / float(maxIter), 0.0, 1.0);\n // Glitch detection: |delta|^2 > |Z|^2\n float dmag2 = dr * dr + di * di;\n float Zmag2 = Zn.x * Zn.x + Zn.y * Zn.y;\n if (dmag2 > Zmag2 && Zmag2 > 0.0) {\n // Rebase to absolute coordinates and continue with single-float\n float abs_zr = Zn1.x + dr;\n float abs_zi = Zn1.y + di;\n // Reconstruct absolute c from reference + delta\n // (Use ds_from for the concept, but single-float suffices for fallback)\n float cx = abs_zr - dr + delta_c.x;\n float cy = abs_zi - di + delta_c.y;\n for (int j = i + 1; j < maxIter; j++) {\n float new_zr = abs_zr * abs_zr - abs_zi * abs_zi + cx;\n abs_zi = 2.0 * abs_zr * abs_zi + cy;\n abs_zr = new_zr;\n mag2 = abs_zr * abs_zr + abs_zi * abs_zi;\n if (mag2 > 4.0)\n return clamp((float(j) - log2(log2(mag2)) + 4.0) / float(maxIter), 0.0, 1.0);\n }\n return 1.0;\n }\n }\n return 1.0;\n}\n\nfloat _fractal_julia_pt(vec2 z_delta, vec2 delta_c, int maxIter) {\n float dr = z_delta.x;\n float di = z_delta.y;\n int orbitLen = min(maxIter, _refOrbitLen);\n for (int i = 0; i < orbitLen; i++) {\n vec2 Zn = _pt_fetch_orbit(i);\n float new_dr = 2.0 * (Zn.x * dr - Zn.y * di) + dr * dr - di * di + delta_c.x;\n float new_di = 2.0 * (Zn.x * di + Zn.y * dr) + 2.0 * dr * di + delta_c.y;\n dr = new_dr;\n di = new_di;\n vec2 Zn1 = (i + 1 < orbitLen) ? _pt_fetch_orbit(i + 1) : vec2(0.0);\n float zr = Zn1.x + dr;\n float zi = Zn1.y + di;\n float mag2 = zr * zr + zi * zi;\n if (mag2 > 4.0)\n return clamp((float(i) - log2(log2(mag2)) + 4.0) / float(maxIter), 0.0, 1.0);\n float dmag2 = dr * dr + di * di;\n float Zmag2 = Zn.x * Zn.x + Zn.y * Zn.y;\n if (dmag2 > Zmag2 && Zmag2 > 0.0) {\n float abs_zr = Zn1.x + dr;\n float abs_zi = Zn1.y + di;\n float cx = delta_c.x;\n float cy = delta_c.y;\n for (int j = i + 1; j < maxIter; j++) {\n float new_zr = abs_zr * abs_zr - abs_zi * abs_zi + cx;\n abs_zi = 2.0 * abs_zr * abs_zi + cy;\n abs_zr = new_zr;\n mag2 = abs_zr * abs_zr + abs_zi * abs_zi;\n if (mag2 > 4.0)\n return clamp((float(j) - log2(log2(mag2)) + 4.0) / float(maxIter), 0.0, 1.0);\n }\n return 1.0;\n }\n }\n return 1.0;\n}\n";
|
|
169
|
+
export declare const GPU_FRACTAL_PT_PREAMBLE_GLSL = "\nuniform sampler2D _refOrbit;\nuniform int _refOrbitLen;\nuniform int _refOrbitTexWidth;\nuniform float _pt_offset_x;\nuniform float _pt_offset_y;\nuniform float _pt_w;\nuniform float _pt_h;\n\nvec2 _pt_delta() {\n float dx = _pt_offset_x + (v_uv.x - 0.5) * _pt_w;\n float dy = _pt_offset_y + (v_uv.y - 0.5) * _pt_h;\n return vec2(dx, dy);\n}\n\nvec2 _pt_fetch_orbit(int i) {\n int y = i / _refOrbitTexWidth;\n int x = i - y * _refOrbitTexWidth;\n return texelFetch(_refOrbit, ivec2(x, y), 0).rg;\n}\n\nfloat _fractal_mandelbrot_pt(vec2 delta_c, int maxIter) {\n float dr = 0.0;\n float di = 0.0;\n int orbitLen = min(maxIter, _refOrbitLen);\n for (int i = 0; i < orbitLen; i++) {\n vec2 Zn = _pt_fetch_orbit(i);\n // delta_{n+1} = 2*Z_n*delta_n + delta_n^2 + delta_c\n float new_dr = 2.0 * (Zn.x * dr - Zn.y * di) + dr * dr - di * di + delta_c.x;\n float new_di = 2.0 * (Zn.x * di + Zn.y * dr) + 2.0 * dr * di + delta_c.y;\n dr = new_dr;\n di = new_di;\n // Full z = Z_{n+1} + delta for escape check\n vec2 Zn1 = (i + 1 < orbitLen) ? _pt_fetch_orbit(i + 1) : vec2(0.0);\n float zr = Zn1.x + dr;\n float zi = Zn1.y + di;\n float mag2 = zr * zr + zi * zi;\n if (mag2 > 4.0)\n return clamp((float(i) - log2(log2(mag2)) + 4.0) / float(maxIter), 0.0, 1.0);\n // Glitch detection: |delta|^2 > |Z|^2\n float dmag2 = dr * dr + di * di;\n float Zmag2 = Zn.x * Zn.x + Zn.y * Zn.y;\n if (dmag2 > Zmag2 && Zmag2 > 0.0) {\n // Rebase to absolute coordinates and continue with single-float\n float abs_zr = Zn1.x + dr;\n float abs_zi = Zn1.y + di;\n // Reconstruct absolute c from reference + delta\n // (Use ds_from for the concept, but single-float suffices for fallback)\n float cx = abs_zr - dr + delta_c.x;\n float cy = abs_zi - di + delta_c.y;\n for (int j = i + 1; j < maxIter; j++) {\n float new_zr = abs_zr * abs_zr - abs_zi * abs_zi + cx;\n abs_zi = 2.0 * abs_zr * abs_zi + cy;\n abs_zr = new_zr;\n mag2 = abs_zr * abs_zr + abs_zi * abs_zi;\n if (mag2 > 4.0)\n return clamp((float(j) - log2(log2(mag2)) + 4.0) / float(maxIter), 0.0, 1.0);\n }\n return 1.0;\n }\n }\n return 1.0;\n}\n\nfloat _fractal_julia_pt(vec2 z_delta, vec2 delta_c, int maxIter) {\n float dr = z_delta.x;\n float di = z_delta.y;\n int orbitLen = min(maxIter, _refOrbitLen);\n for (int i = 0; i < orbitLen; i++) {\n vec2 Zn = _pt_fetch_orbit(i);\n float new_dr = 2.0 * (Zn.x * dr - Zn.y * di) + dr * dr - di * di + delta_c.x;\n float new_di = 2.0 * (Zn.x * di + Zn.y * dr) + 2.0 * dr * di + delta_c.y;\n dr = new_dr;\n di = new_di;\n vec2 Zn1 = (i + 1 < orbitLen) ? _pt_fetch_orbit(i + 1) : vec2(0.0);\n float zr = Zn1.x + dr;\n float zi = Zn1.y + di;\n float mag2 = zr * zr + zi * zi;\n if (mag2 > 4.0)\n return clamp((float(i) - log2(log2(mag2)) + 4.0) / float(maxIter), 0.0, 1.0);\n float dmag2 = dr * dr + di * di;\n float Zmag2 = Zn.x * Zn.x + Zn.y * Zn.y;\n if (dmag2 > Zmag2 && Zmag2 > 0.0) {\n float abs_zr = Zn1.x + dr;\n float abs_zi = Zn1.y + di;\n float cx = delta_c.x;\n float cy = delta_c.y;\n for (int j = i + 1; j < maxIter; j++) {\n float new_zr = abs_zr * abs_zr - abs_zi * abs_zi + cx;\n abs_zi = 2.0 * abs_zr * abs_zi + cy;\n abs_zr = new_zr;\n mag2 = abs_zr * abs_zr + abs_zi * abs_zi;\n if (mag2 > 4.0)\n return clamp((float(j) - log2(log2(mag2)) + 4.0) / float(maxIter), 0.0, 1.0);\n }\n return 1.0;\n }\n }\n return 1.0;\n}\n";
|
|
163
170
|
/**
|
|
164
171
|
* Perturbation-theory fractal preamble (WGSL syntax).
|
|
165
172
|
*
|
|
166
173
|
* Same logic as the GLSL version, adapted for WGSL syntax.
|
|
167
174
|
*/
|
|
168
|
-
export declare const GPU_FRACTAL_PT_PREAMBLE_WGSL = "\n@group(0) @binding(1) var _refOrbit: texture_2d<f32>;\nvar<uniform> _refOrbitLen: i32;\nvar<uniform> _refOrbitTexWidth: i32;\n\nfn _pt_fetch_orbit(i: i32) -> vec2f {\n let y = i / _refOrbitTexWidth;\n let x = i - y * _refOrbitTexWidth;\n return textureLoad(_refOrbit, vec2i(x, y), 0).rg;\n}\n\nfn _fractal_mandelbrot_pt(delta_c: vec2f, maxIter: i32) -> f32 {\n var dr: f32 = 0.0;\n var di: f32 = 0.0;\n let orbitLen = min(maxIter, _refOrbitLen);\n for (var i: i32 = 0; i < orbitLen; i++) {\n let Zn = _pt_fetch_orbit(i);\n let new_dr = 2.0 * (Zn.x * dr - Zn.y * di) + dr * dr - di * di + delta_c.x;\n let new_di = 2.0 * (Zn.x * di + Zn.y * dr) + 2.0 * dr * di + delta_c.y;\n dr = new_dr;\n di = new_di;\n var Zn1 = vec2f(0.0);\n if (i + 1 < orbitLen) { Zn1 = _pt_fetch_orbit(i + 1); }\n let zr = Zn1.x + dr;\n let zi = Zn1.y + di;\n var mag2 = zr * zr + zi * zi;\n if (mag2 > 4.0) {\n return clamp((f32(i) - log2(log2(mag2)) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n let dmag2 = dr * dr + di * di;\n let Zmag2 = Zn.x * Zn.x + Zn.y * Zn.y;\n if (dmag2 > Zmag2 && Zmag2 > 0.0) {\n var f_zr = Zn1.x + dr;\n var f_zi = Zn1.y + di;\n let cx = delta_c.x;\n let cy = delta_c.y;\n for (var j: i32 = i + 1; j < maxIter; j++) {\n let t_zr = f_zr * f_zr - f_zi * f_zi + cx;\n f_zi = 2.0 * f_zr * f_zi + cy;\n f_zr = t_zr;\n mag2 = f_zr * f_zr + f_zi * f_zi;\n if (mag2 > 4.0) {\n return clamp((f32(j) - log2(log2(mag2)) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n }\n return 1.0;\n }\n }\n return 1.0;\n}\n\nfn _fractal_julia_pt(z_delta: vec2f, delta_c: vec2f, maxIter: i32) -> f32 {\n var dr = z_delta.x;\n var di = z_delta.y;\n let orbitLen = min(maxIter, _refOrbitLen);\n for (var i: i32 = 0; i < orbitLen; i++) {\n let Zn = _pt_fetch_orbit(i);\n let new_dr = 2.0 * (Zn.x * dr - Zn.y * di) + dr * dr - di * di + delta_c.x;\n let new_di = 2.0 * (Zn.x * di + Zn.y * dr) + 2.0 * dr * di + delta_c.y;\n dr = new_dr;\n di = new_di;\n var Zn1 = vec2f(0.0);\n if (i + 1 < orbitLen) { Zn1 = _pt_fetch_orbit(i + 1); }\n let zr = Zn1.x + dr;\n let zi = Zn1.y + di;\n var mag2 = zr * zr + zi * zi;\n if (mag2 > 4.0) {\n return clamp((f32(i) - log2(log2(mag2)) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n let dmag2 = dr * dr + di * di;\n let Zmag2 = Zn.x * Zn.x + Zn.y * Zn.y;\n if (dmag2 > Zmag2 && Zmag2 > 0.0) {\n var f_zr = Zn1.x + dr;\n var f_zi = Zn1.y + di;\n let cx = delta_c.x;\n let cy = delta_c.y;\n for (var j: i32 = i + 1; j < maxIter; j++) {\n let t_zr = f_zr * f_zr - f_zi * f_zi + cx;\n f_zi = 2.0 * f_zr * f_zi + cy;\n f_zr = t_zr;\n mag2 = f_zr * f_zr + f_zi * f_zi;\n if (mag2 > 4.0) {\n return clamp((f32(j) - log2(log2(mag2)) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n }\n return 1.0;\n }\n }\n return 1.0;\n}\n";
|
|
175
|
+
export declare const GPU_FRACTAL_PT_PREAMBLE_WGSL = "\n@group(0) @binding(1) var _refOrbit: texture_2d<f32>;\nvar<uniform> _refOrbitLen: i32;\nvar<uniform> _refOrbitTexWidth: i32;\nvar<uniform> _pt_offset_x: f32;\nvar<uniform> _pt_offset_y: f32;\nvar<uniform> _pt_w: f32;\nvar<uniform> _pt_h: f32;\n\nfn _pt_delta(uv: vec2f) -> vec2f {\n let dx = _pt_offset_x + (uv.x - 0.5) * _pt_w;\n let dy = _pt_offset_y + (uv.y - 0.5) * _pt_h;\n return vec2f(dx, dy);\n}\n\nfn _pt_fetch_orbit(i: i32) -> vec2f {\n let y = i / _refOrbitTexWidth;\n let x = i - y * _refOrbitTexWidth;\n return textureLoad(_refOrbit, vec2i(x, y), 0).rg;\n}\n\nfn _fractal_mandelbrot_pt(delta_c: vec2f, maxIter: i32) -> f32 {\n var dr: f32 = 0.0;\n var di: f32 = 0.0;\n let orbitLen = min(maxIter, _refOrbitLen);\n for (var i: i32 = 0; i < orbitLen; i++) {\n let Zn = _pt_fetch_orbit(i);\n let new_dr = 2.0 * (Zn.x * dr - Zn.y * di) + dr * dr - di * di + delta_c.x;\n let new_di = 2.0 * (Zn.x * di + Zn.y * dr) + 2.0 * dr * di + delta_c.y;\n dr = new_dr;\n di = new_di;\n var Zn1 = vec2f(0.0);\n if (i + 1 < orbitLen) { Zn1 = _pt_fetch_orbit(i + 1); }\n let zr = Zn1.x + dr;\n let zi = Zn1.y + di;\n var mag2 = zr * zr + zi * zi;\n if (mag2 > 4.0) {\n return clamp((f32(i) - log2(log2(mag2)) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n let dmag2 = dr * dr + di * di;\n let Zmag2 = Zn.x * Zn.x + Zn.y * Zn.y;\n if (dmag2 > Zmag2 && Zmag2 > 0.0) {\n var f_zr = Zn1.x + dr;\n var f_zi = Zn1.y + di;\n let cx = delta_c.x;\n let cy = delta_c.y;\n for (var j: i32 = i + 1; j < maxIter; j++) {\n let t_zr = f_zr * f_zr - f_zi * f_zi + cx;\n f_zi = 2.0 * f_zr * f_zi + cy;\n f_zr = t_zr;\n mag2 = f_zr * f_zr + f_zi * f_zi;\n if (mag2 > 4.0) {\n return clamp((f32(j) - log2(log2(mag2)) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n }\n return 1.0;\n }\n }\n return 1.0;\n}\n\nfn _fractal_julia_pt(z_delta: vec2f, delta_c: vec2f, maxIter: i32) -> f32 {\n var dr = z_delta.x;\n var di = z_delta.y;\n let orbitLen = min(maxIter, _refOrbitLen);\n for (var i: i32 = 0; i < orbitLen; i++) {\n let Zn = _pt_fetch_orbit(i);\n let new_dr = 2.0 * (Zn.x * dr - Zn.y * di) + dr * dr - di * di + delta_c.x;\n let new_di = 2.0 * (Zn.x * di + Zn.y * dr) + 2.0 * dr * di + delta_c.y;\n dr = new_dr;\n di = new_di;\n var Zn1 = vec2f(0.0);\n if (i + 1 < orbitLen) { Zn1 = _pt_fetch_orbit(i + 1); }\n let zr = Zn1.x + dr;\n let zi = Zn1.y + di;\n var mag2 = zr * zr + zi * zi;\n if (mag2 > 4.0) {\n return clamp((f32(i) - log2(log2(mag2)) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n let dmag2 = dr * dr + di * di;\n let Zmag2 = Zn.x * Zn.x + Zn.y * Zn.y;\n if (dmag2 > Zmag2 && Zmag2 > 0.0) {\n var f_zr = Zn1.x + dr;\n var f_zi = Zn1.y + di;\n let cx = delta_c.x;\n let cy = delta_c.y;\n for (var j: i32 = i + 1; j < maxIter; j++) {\n let t_zr = f_zr * f_zr - f_zi * f_zi + cx;\n f_zi = 2.0 * f_zr * f_zi + cy;\n f_zr = t_zr;\n mag2 = f_zr * f_zr + f_zi * f_zi;\n if (mag2 > 4.0) {\n return clamp((f32(j) - log2(log2(mag2)) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n }\n return 1.0;\n }\n }\n return 1.0;\n}\n";
|
|
169
176
|
/**
|
|
170
177
|
* GPU color space conversion preamble (GLSL syntax).
|
|
171
178
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
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,15 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
|
+
/**
|
|
3
|
+
* A coordinate value with extended precision.
|
|
4
|
+
*
|
|
5
|
+
* - `number` — standard float64 (~16 decimal digits)
|
|
6
|
+
* - `string` — arbitrary precision (parsed by BigDecimal)
|
|
7
|
+
* - `{ hi, lo }` — double-double pair (~30 digits), true value = hi + lo
|
|
8
|
+
*/
|
|
9
|
+
export type HighPrecisionCoord = number | string | {
|
|
10
|
+
hi: number;
|
|
11
|
+
lo: number;
|
|
12
|
+
};
|
|
2
13
|
/**
|
|
3
14
|
* Source code in the target language
|
|
4
15
|
*/
|
|
@@ -159,8 +170,16 @@ export interface CompilationOptions<Expr = unknown> {
|
|
|
159
170
|
hints?: {
|
|
160
171
|
/** Current viewport for precision-adaptive compilation. */
|
|
161
172
|
viewport?: {
|
|
162
|
-
/**
|
|
163
|
-
|
|
173
|
+
/**
|
|
174
|
+
* Center of the viewport as [re, im].
|
|
175
|
+
*
|
|
176
|
+
* Each coordinate can be:
|
|
177
|
+
* - `number` — standard float64 precision (~16 digits)
|
|
178
|
+
* - `string` — arbitrary precision (parsed by BigDecimal)
|
|
179
|
+
* - `{ hi, lo }` — double-double pair (~30 digits),
|
|
180
|
+
* true value = hi + lo
|
|
181
|
+
*/
|
|
182
|
+
center: [HighPrecisionCoord, HighPrecisionCoord];
|
|
164
183
|
/** Viewport radius (half-width in complex plane units). */
|
|
165
184
|
radius: number;
|
|
166
185
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
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.55.
|
|
1
|
+
/* 0.55.5 */
|
|
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,3 +1,3 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
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.55.
|
|
1
|
+
/* 0.55.5 */
|
|
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.55.
|
|
1
|
+
/* 0.55.5 */
|
|
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.55.
|
|
1
|
+
/* 0.55.5 */
|
|
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.55.
|
|
1
|
+
/* 0.55.5 */
|
|
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';
|
|
@@ -18,7 +18,8 @@ export type * from './global-types';
|
|
|
18
18
|
export { parse, expr, simplify, evaluate, N, declare, assign, expand, expandAll, factor, solve, compile, getDefaultEngine, } from './free-functions';
|
|
19
19
|
export { validatePattern };
|
|
20
20
|
export { factorPerfectSquare, factorDifferenceOfSquares, factorQuadratic, factorPolynomial, };
|
|
21
|
-
export type { CompileTarget, CompiledOperators, CompiledFunctions, CompilationOptions, CompilationResult, LanguageTarget, TargetSource, CompiledFunction, } from './compilation/types';
|
|
21
|
+
export type { CompileTarget, CompiledOperators, CompiledFunctions, CompilationOptions, CompilationResult, LanguageTarget, TargetSource, CompiledFunction, HighPrecisionCoord, } from './compilation/types';
|
|
22
|
+
export { BigDecimal } from '../big-decimal';
|
|
22
23
|
export { JavaScriptTarget } from './compilation/javascript-target';
|
|
23
24
|
export { GLSLTarget } from './compilation/glsl-target';
|
|
24
25
|
export { PythonTarget } from './compilation/python-target';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const DEFINITIONS_ALGEBRA: LatexDictionary;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const DEFINITIONS_ARITHMETIC: LatexDictionary;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const DEFINITIONS_CALCULUS: LatexDictionary;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const DEFINITIONS_COMPLEX: LatexDictionary;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const DEFINITIONS_LINEAR_ALGEBRA: LatexDictionary;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
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.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const DEFINITIONS_OTHERS: LatexDictionary;
|
package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const DEFINITIONS_INEQUALITIES: LatexDictionaryEntry[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const DEFINITIONS_SETS: LatexDictionary;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const DEFINITIONS_STATISTICS: LatexDictionary;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const DEFINITIONS_TRIGONOMETRY: LatexDictionary;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
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.55.
|
|
1
|
+
/* 0.55.5 */
|
|
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.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
import { DelimiterScale } from './types';
|
|
3
3
|
export declare function getApplyFunctionStyle(_expr: MathJsonExpression, _level: number): DelimiterScale;
|
|
4
4
|
export declare function getGroupStyle(_expr: MathJsonExpression, _level: number): DelimiterScale;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const CALCULUS_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const COLORS_LIBRARY: SymbolDefinitions;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const COMBINATORICS_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const COMPLEX_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const CONTROL_STRUCTURES_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.55.
|
|
1
|
+
/* 0.55.5 */
|
|
2
2
|
export declare const CORE_LIBRARY: SymbolDefinitions[];
|