@cortex-js/compute-engine 0.69.0 → 0.69.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.
- package/dist/chunks/{chunk-T44CNE4L.js → chunk-QIFCLIET.js} +1 -1
- package/dist/chunks/{chunk-ZQVRT3JA.js → chunk-TWCY5EYT.js} +1 -1
- package/dist/compile.esm.js +2 -2
- package/dist/compile.min.esm.js +2 -2
- package/dist/compile.min.umd.cjs +2 -2
- package/dist/compile.umd.cjs +2 -2
- package/dist/compute-engine.esm.js +4 -4
- package/dist/compute-engine.min.esm.js +3 -3
- package/dist/compute-engine.min.umd.cjs +2 -2
- package/dist/compute-engine.umd.cjs +3 -3
- package/dist/core.esm.js +2 -2
- package/dist/core.min.esm.js +2 -2
- package/dist/core.min.umd.cjs +2 -2
- package/dist/core.umd.cjs +2 -2
- package/dist/identities.esm.js +2 -2
- package/dist/identities.min.esm.js +2 -2
- package/dist/identities.min.umd.cjs +2 -2
- package/dist/identities.umd.cjs +2 -2
- package/dist/integration-rules.esm.js +3 -3
- package/dist/integration-rules.min.esm.js +3 -3
- package/dist/integration-rules.min.umd.cjs +2 -2
- package/dist/integration-rules.umd.cjs +2 -2
- 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 +2 -2
- package/dist/types/big-decimal/index.d.ts +2 -2
- package/dist/types/big-decimal/transcendentals.d.ts +2 -2
- 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 +3 -3
- 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 +2 -2
- package/dist/types/common/type/types.d.ts +1 -1
- package/dist/types/common/type/utils.d.ts +3 -3
- package/dist/types/common/utils.d.ts +1 -1
- package/dist/types/compile.d.ts +11 -11
- package/dist/types/compute-engine/assume.d.ts +3 -3
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +8 -8
- package/dist/types/compute-engine/boxed-expression/apply.d.ts +3 -3
- package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +3 -3
- package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +3 -3
- package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +2 -2
- package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/box.d.ts +4 -4
- package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +4 -4
- package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +6 -6
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +8 -8
- package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +3 -3
- package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +3 -3
- package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +3 -3
- package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +8 -8
- package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +5 -5
- package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +4 -4
- 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/constraint-subject.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/diophantine.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/exp-to-trig.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/explain-labels.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/explain.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 +2 -2
- 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/multivariate-gcd.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/multivariate-poly.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 +4 -4
- package/dist/types/compute-engine/boxed-expression/order.d.ts +2 -2
- package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +2 -2
- package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +2 -2
- package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/rule-index.d.ts +2 -2
- package/dist/types/compute-engine/boxed-expression/rules.d.ts +4 -4
- package/dist/types/compute-engine/boxed-expression/serialize.d.ts +2 -2
- 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-domain.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 +2 -2
- package/dist/types/compute-engine/boxed-expression/utils.d.ts +3 -3
- package/dist/types/compute-engine/boxed-expression/validate.d.ts +2 -2
- package/dist/types/compute-engine/collection-utils.d.ts +1 -1
- package/dist/types/compute-engine/compilation/base-compiler.d.ts +2 -2
- package/dist/types/compute-engine/compilation/compile-expression.d.ts +3 -3
- package/dist/types/compute-engine/compilation/constant-folding.d.ts +2 -2
- package/dist/types/compute-engine/compilation/glsl-target.d.ts +3 -3
- package/dist/types/compute-engine/compilation/gpu-target.d.ts +2 -2
- package/dist/types/compute-engine/compilation/interval-glsl-target.d.ts +3 -3
- package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +98 -98
- package/dist/types/compute-engine/compilation/javascript-target.d.ts +6 -6
- package/dist/types/compute-engine/compilation/python-target.d.ts +2 -2
- package/dist/types/compute-engine/compilation/types.d.ts +1 -1
- package/dist/types/compute-engine/compilation/wgsl-target.d.ts +3 -3
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/differential-equation-utils.d.ts +1 -1
- package/dist/types/compute-engine/engine-assumptions.d.ts +2 -2
- 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 +2 -2
- package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
- package/dist/types/compute-engine/engine-declarations.d.ts +4 -4
- package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +7 -7
- package/dist/types/compute-engine/engine-extension-contracts.d.ts +2 -2
- package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
- package/dist/types/compute-engine/engine-numeric-configuration.d.ts +2 -2
- 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 +2 -2
- package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
- package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +3 -3
- package/dist/types/compute-engine/free-functions.d.ts +4 -4
- package/dist/types/compute-engine/function-properties/index.d.ts +2 -2
- package/dist/types/compute-engine/function-utils.d.ts +2 -2
- package/dist/types/compute-engine/fungrim/loader.d.ts +2 -2
- package/dist/types/compute-engine/fungrim/types.d.ts +2 -2
- package/dist/types/compute-engine/global-types.d.ts +5 -5
- package/dist/types/compute-engine/index.d.ts +30 -30
- package/dist/types/compute-engine/interval/arithmetic.d.ts +2 -2
- package/dist/types/compute-engine/interval/comparison.d.ts +2 -2
- package/dist/types/compute-engine/interval/elementary.d.ts +2 -2
- package/dist/types/compute-engine/interval/index.d.ts +12 -12
- package/dist/types/compute-engine/interval/trigonometric.d.ts +2 -2
- package/dist/types/compute-engine/interval/types.d.ts +1 -1
- package/dist/types/compute-engine/interval/util.d.ts +2 -2
- package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +17 -17
- 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-colors.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 +2 -2
- 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 +2 -2
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +4 -4
- package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +2 -2
- package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +3 -3
- package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +3 -3
- package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +2 -2
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +5 -5
- package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +2 -2
- package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +2 -2
- package/dist/types/compute-engine/latex-syntax/serializer.d.ts +3 -3
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/types.d.ts +5 -5
- 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 +2 -2
- 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 +2 -2
- 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/distributions.d.ts +1 -1
- package/dist/types/compute-engine/library/fractals.d.ts +1 -1
- package/dist/types/compute-engine/library/library.d.ts +2 -2
- 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/measurement-arithmetic.d.ts +2 -2
- 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 +2 -2
- 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 +2 -2
- package/dist/types/compute-engine/library/special-functions.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 +3 -3
- package/dist/types/compute-engine/library/unit-data.d.ts +2 -2
- package/dist/types/compute-engine/library/units.d.ts +2 -2
- package/dist/types/compute-engine/library/utils.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +6 -6
- package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +5 -5
- package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +5 -5
- package/dist/types/compute-engine/numeric-value/types.d.ts +4 -4
- package/dist/types/compute-engine/numerics/bernoulli.d.ts +1 -1
- package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/complex-esm-augment.d.ts +1 -1
- package/dist/types/compute-engine/numerics/differential-equations.d.ts +1 -1
- package/dist/types/compute-engine/numerics/diophantine.d.ts +1 -1
- package/dist/types/compute-engine/numerics/distributions.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 +2 -2
- package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
- package/dist/types/compute-engine/numerics/oscillatory-quadrature.d.ts +1 -1
- package/dist/types/compute-engine/numerics/polynomial-roots.d.ts +1 -1
- package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
- package/dist/types/compute-engine/numerics/random.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 +2 -2
- package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
- package/dist/types/compute-engine/numerics/strings.d.ts +2 -2
- 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 +2 -2
- package/dist/types/compute-engine/rubi/compile.d.ts +3 -3
- package/dist/types/compute-engine/rubi/driver.d.ts +3 -3
- package/dist/types/compute-engine/rubi/loader.d.ts +1 -1
- package/dist/types/compute-engine/rubi/match.d.ts +1 -1
- package/dist/types/compute-engine/rubi/normal-form.d.ts +2 -2
- package/dist/types/compute-engine/rubi/rubi-utils.d.ts +3 -3
- package/dist/types/compute-engine/rubi/types.d.ts +1 -1
- package/dist/types/compute-engine/sequence.d.ts +2 -2
- 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/differential-equations.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/explain-derivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-cost.d.ts +2 -2
- package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +2 -2
- package/dist/types/compute-engine/symbolic/fu.d.ts +6 -6
- package/dist/types/compute-engine/symbolic/limit.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/residue.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/series.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/symbolic/trig-rewrite.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensor-fields.d.ts +3 -3
- package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
- package/dist/types/compute-engine/types-definitions.d.ts +6 -6
- package/dist/types/compute-engine/types-engine.d.ts +19 -19
- package/dist/types/compute-engine/types-evaluation.d.ts +5 -5
- package/dist/types/compute-engine/types-expression.d.ts +9 -9
- package/dist/types/compute-engine/types-kernel-evaluation.d.ts +5 -5
- package/dist/types/compute-engine/types-kernel-serialization.d.ts +1 -1
- package/dist/types/compute-engine/types-serialization.d.ts +2 -2
- package/dist/types/compute-engine/types.d.ts +8 -8
- package/dist/types/compute-engine.d.ts +27 -27
- package/dist/types/core.d.ts +12 -12
- package/dist/types/identities.d.ts +3 -3
- package/dist/types/integration-rules.d.ts +3 -3
- package/dist/types/interval.d.ts +8 -8
- package/dist/types/latex-syntax.d.ts +7 -7
- 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 +3 -3
- package/dist/types/numerics.d.ts +23 -23
- package/package.json +2 -1
package/dist/core.min.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Compute Engine 0.69.
|
|
1
|
+
/** Compute Engine 0.69.1 */
|
|
2
2
|
var Wn=Math.cosh||function(e){return Math.abs(e)<1e-9?1-e:(Math.exp(e)+Math.exp(-e))*.5},Jt=Math.sinh||function(e){return Math.abs(e)<1e-9?e:(Math.exp(e)-Math.exp(-e))*.5},_k=function(e){var n=Math.PI/4;if(-n>e||e>n)return Math.cos(e)-1;var t=e*e;return t*(t*(t*(t*(t*(t*(t*(t/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},Nk=function(e,n){var t=Math.abs(e),i=Math.abs(n);return t<3e3&&i<3e3?Math.sqrt(t*t+i*i):(t<i?(t=i,i=e/n):i=n/e,t*Math.sqrt(1+i*i))},$s=function(){throw SyntaxError("Invalid Param")};function tg(e,n){var t=Math.abs(e),i=Math.abs(n);return e===0?Math.log(i):n===0?Math.log(t):t<3e3&&i<3e3?Math.log(e*e+n*n)*.5:(e=e/2,n=n/2,.5*Math.log(e*e+n*n)+Math.LN2)}var Sk=function(e,n){var t={re:0,im:0};if(e==null)t.re=t.im=0;else if(n!==void 0)t.re=e,t.im=n;else switch(typeof e){case"object":if("im"in e&&"re"in e)t.re=e.re,t.im=e.im;else if("abs"in e&&"arg"in e){if(!Number.isFinite(e.abs)&&Number.isFinite(e.arg))return L.INFINITY;t.re=e.abs*Math.cos(e.arg),t.im=e.abs*Math.sin(e.arg)}else if("r"in e&&"phi"in e){if(!Number.isFinite(e.r)&&Number.isFinite(e.phi))return L.INFINITY;t.re=e.r*Math.cos(e.phi),t.im=e.r*Math.sin(e.phi)}else e.length===2?(t.re=e[0],t.im=e[1]):$s();break;case"string":t.im=t.re=0;var i=e.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),r=1,o=0;i===null&&$s();for(var s=0;s<i.length;s++){var a=i[s];a===" "||a===" "||a===`
|
|
3
3
|
`||(a==="+"?r++:a==="-"?o++:a==="i"||a==="I"?(r+o===0&&$s(),i[s+1]!==" "&&!isNaN(Number(i[s+1]))?(t.im+=parseFloat((o%2?"-":"")+i[s+1]),s++):t.im+=parseFloat((o%2?"-":"")+"1"),r=o=0):((r+o===0||isNaN(Number(a)))&&$s(),i[s+1]==="i"||i[s+1]==="I"?(t.im+=parseFloat((o%2?"-":"")+a),s++):t.re+=parseFloat((o%2?"-":"")+a),r=o=0))}r+o>0&&$s();break;case"number":t.im=0,t.re=e;break;default:$s()}return isNaN(t.re)||isNaN(t.im),t},L=class e{constructor(n,t){this.re=0,this.im=0;var i=Sk(n,t);this.re=i.re,this.im=i.im}sign(){var n=this.abs();return new e(this.re/n,this.im/n)}add(n,t){var i=new e(n,t);return this.isInfinite()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:new e(this.re+i.re,this.im+i.im)}sub(n,t){var i=new e(n,t);return this.isInfinite()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:new e(this.re-i.re,this.im-i.im)}mul(n,t){var i=new e(n,t);return this.isInfinite()&&i.isZero()||this.isZero()&&i.isInfinite()?e.NAN:this.isInfinite()||i.isInfinite()?e.INFINITY:i.im===0&&this.im===0?new e(this.re*i.re,0):new e(this.re*i.re-this.im*i.im,this.re*i.im+this.im*i.re)}div(n,t){var i=new e(n,t);if(this.isZero()&&i.isZero()||this.isInfinite()&&i.isInfinite())return e.NAN;if(this.isInfinite()||i.isZero())return e.INFINITY;if(this.isZero()||i.isInfinite())return e.ZERO;n=this.re,t=this.im;var r=i.re,o=i.im,s,a;return o===0?new e(n/r,t/r):Math.abs(r)<Math.abs(o)?(a=r/o,s=r*a+o,new e((n*a+t)/s,(t*a-n)/s)):(a=o/r,s=o*a+r,new e((n+t*a)/s,(t-n*a)/s))}pow(n,t){var i=new e(n,t);if(n=this.re,t=this.im,i.isZero())return e.ONE;if(i.im===0){if(t===0&&n>0)return new e(Math.pow(n,i.re),0);if(n===0)switch((i.re%4+4)%4){case 0:return new e(Math.pow(t,i.re),0);case 1:return new e(0,Math.pow(t,i.re));case 2:return new e(-Math.pow(t,i.re),0);case 3:return new e(0,-Math.pow(t,i.re))}}if(n===0&&t===0&&i.re>0&&i.im>=0)return e.ZERO;var r=Math.atan2(t,n),o=tg(n,t);return n=Math.exp(i.re*o-i.im*r),t=i.im*o+i.re*r,new e(n*Math.cos(t),n*Math.sin(t))}sqrt(){var n=this.re,t=this.im,i=this.abs(),r,o;if(n>=0){if(t===0)return new e(Math.sqrt(n),0);r=.5*Math.sqrt(2*(i+n))}else r=Math.abs(t)/Math.sqrt(2*(i-n));return n<=0?o=.5*Math.sqrt(2*(i-n)):o=Math.abs(t)/Math.sqrt(2*(i+n)),new e(r,t<0?-o:o)}exp(){var n=Math.exp(this.re);return this.im,new e(n*Math.cos(this.im),n*Math.sin(this.im))}expm1(){var n=this.re,t=this.im;return new e(Math.expm1(n)*Math.cos(t)+_k(t),Math.exp(n)*Math.sin(t))}log(){var n=this.re,t=this.im;return t===0&&n>0,new e(tg(n,t),Math.atan2(t,n))}abs(){return Nk(this.re,this.im)}arg(){return Math.atan2(this.im,this.re)}sin(){var n=this.re,t=this.im;return new e(Math.sin(n)*Wn(t),Math.cos(n)*Jt(t))}cos(){var n=this.re,t=this.im;return new e(Math.cos(n)*Wn(t),-Math.sin(n)*Jt(t))}tan(){var n=2*this.re,t=2*this.im,i=Math.cos(n)+Wn(t);return new e(Math.sin(n)/i,Jt(t)/i)}cot(){var n=2*this.re,t=2*this.im,i=Math.cos(n)-Wn(t);return new e(-Math.sin(n)/i,Jt(t)/i)}sec(){var n=this.re,t=this.im,i=.5*Wn(2*t)+.5*Math.cos(2*n);return new e(Math.cos(n)*Wn(t)/i,Math.sin(n)*Jt(t)/i)}csc(){var n=this.re,t=this.im,i=.5*Wn(2*t)-.5*Math.cos(2*n);return new e(Math.sin(n)*Wn(t)/i,-Math.cos(n)*Jt(t)/i)}asin(){var n=this.re,t=this.im,i=new e(t*t-n*n+1,-2*n*t).sqrt(),r=new e(i.re-t,i.im+n).log();return new e(r.im,-r.re)}acos(){var n=this.re,t=this.im,i=new e(t*t-n*n+1,-2*n*t).sqrt(),r=new e(i.re-t,i.im+n).log();return new e(Math.PI/2-r.im,r.re)}atan(){var n=this.re,t=this.im;if(n===0){if(t===1)return new e(0,1/0);if(t===-1)return new e(0,-1/0)}var i=n*n+(1-t)*(1-t),r=new e((1-t*t-n*n)/i,-2*n/i).log();return new e(-.5*r.im,.5*r.re)}acot(){var n=this.re,t=this.im;if(t===0)return new e(Math.atan2(1,n),0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).atan():new e(n!==0?n/0:0,t!==0?-t/0:0).atan()}asec(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(0,1/0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).acos():new e(n!==0?n/0:0,t!==0?-t/0:0).acos()}acsc(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(Math.PI/2,1/0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).asin():new e(n!==0?n/0:0,t!==0?-t/0:0).asin()}sinh(){var n=this.re,t=this.im;return new e(Jt(n)*Math.cos(t),Wn(n)*Math.sin(t))}cosh(){var n=this.re,t=this.im;return new e(Wn(n)*Math.cos(t),Jt(n)*Math.sin(t))}tanh(){var n=2*this.re,t=2*this.im,i=Wn(n)+Math.cos(t);return new e(Jt(n)/i,Math.sin(t)/i)}coth(){var n=2*this.re,t=2*this.im,i=Wn(n)-Math.cos(t);return new e(Jt(n)/i,-Math.sin(t)/i)}csch(){var n=this.re,t=this.im,i=Math.cos(2*t)-Wn(2*n);return new e(-2*Jt(n)*Math.cos(t)/i,2*Wn(n)*Math.sin(t)/i)}sech(){var n=this.re,t=this.im,i=Math.cos(2*t)+Wn(2*n);return new e(2*Wn(n)*Math.cos(t)/i,-2*Jt(n)*Math.sin(t)/i)}asinh(){var n=this.im;this.im=-this.re,this.re=n;var t=this.asin();return this.re=-this.im,this.im=n,n=t.re,t.re=-t.im,t.im=n,t}acosh(){var n=this.acos();if(n.im<=0){var t=n.re;n.re=-n.im,n.im=t}else{var t=n.im;n.im=-n.re,n.re=t}return n}atanh(){var n=this.re,t=this.im,i=n>1&&t===0,r=1-n,o=1+n,s=r*r+t*t,a=s!==0?new e((o*r-t*t)/s,(t*r+o*t)/s):new e(n!==-1?n/0:0,t!==0?t/0:0),u=a.re;return a.re=tg(a.re,a.im)/2,a.im=Math.atan2(a.im,u)/2,i&&(a.im=-a.im),a}acoth(){var n=this.re,t=this.im;if(n===0&&t===0)return new e(0,Math.PI/2);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).atanh():new e(n!==0?n/0:0,t!==0?-t/0:0).atanh()}acsch(){var n=this.re,t=this.im;if(t===0)return new e(n!==0?Math.log(n+Math.sqrt(n*n+1)):1/0,0);var i=n*n+t*t;return i!==0?new e(n/i,-t/i).asinh():new e(n!==0?n/0:0,t!==0?-t/0:0).asinh()}asech(){var n=this.re,t=this.im;if(this.isZero())return e.INFINITY;var i=n*n+t*t;return i!==0?new e(n/i,-t/i).acosh():new e(n!==0?n/0:0,t!==0?-t/0:0).acosh()}inverse(){if(this.isZero())return e.INFINITY;if(this.isInfinite())return e.ZERO;var n=this.re,t=this.im,i=n*n+t*t;return new e(n/i,-t/i)}conjugate(){return new e(this.re,-this.im)}neg(){return new e(-this.re,-this.im)}ceil(n){return n=Math.pow(10,n||0),new e(Math.ceil(this.re*n)/n,Math.ceil(this.im*n)/n)}floor(n){return n=Math.pow(10,n||0),new e(Math.floor(this.re*n)/n,Math.floor(this.im*n)/n)}round(n){return n=Math.pow(10,n||0),new e(Math.round(this.re*n)/n,Math.round(this.im*n)/n)}equals(n,t){var i=new e(n,t);return Math.abs(i.re-this.re)<=e.EPSILON&&Math.abs(i.im-this.im)<=e.EPSILON}clone(){return new e(this.re,this.im)}toString(){var n=this.re,t=this.im,i="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(n)<e.EPSILON&&(n=0),Math.abs(t)<e.EPSILON&&(t=0),t===0?i+n:(n!==0?(i+=n,i+=" ",t<0?(t=-t,i+="-"):i+="+",i+=" "):t<0&&(t=-t,i+="-"),t!==1&&(i+=t),i+"i"))}toVector(){return[this.re,this.im]}valueOf(){return this.im===0?this.re:null}isNaN(){return isNaN(this.re)||isNaN(this.im)}isZero(){return this.im===0&&this.re===0}isFinite(){return isFinite(this.re)&&isFinite(this.im)}isInfinite(){return!(this.isNaN()||this.isFinite())}};L.ZERO=new L(0,0);L.ONE=new L(1,0);L.I=new L(0,1);L.PI=new L(Math.PI,0);L.E=new L(Math.E,0);L.INFINITY=new L(1/0,1/0);L.NAN=new L(NaN,NaN);L.EPSILON=1e-15;var Xx=new Map,Ik=1e5;function Ce(e){if(e<=Ik){let n=Xx.get(e);return n===void 0&&(n=10n**BigInt(e),Xx.set(e,n)),n}return 10n**BigInt(e)}function mr(e){if(e<0n&&(e=-e),e===0n)return 0;let n=0,t=1;for(;e>>BigInt(t)>0n;)t*=2;for(let i=t>>1;i>=1;i>>=1)e>>BigInt(i)>0n&&(n+=i,e>>=BigInt(i));return n+1}function ev(e,n,t){return e*n>>BigInt(t)}function nv(e,n,t){return(e<<BigInt(t))/n}function Yc(e,n){if(e===0n)return 0n;if(e<0n)throw new RangeError("fpsqrt: negative input");let t=e<<BigInt(n),i;if(n<Tk){i=rg(t);let a;do a=i,i=(i+t/i)/2n;while(Gt(i-a)>1n)}else i=og(t,mr(t));let r=(i+t/i)/2n,o=Gt(i*i-t);return Gt(r*r-t)<o?r:i}function rg(e){let n=mr(e);if(n<=1023){let s=Math.sqrt(Number(e));if(Number.isFinite(s)&&s>=1)return BigInt(Math.floor(s))}let t=n-52,i=Number(e>>BigInt(t)),r=Math.sqrt(i);t&1&&(r*=Math.SQRT2);let o=BigInt(Math.round(r))<<BigInt(t>>1);return o>0n?o:1n}var tv=1024,Tk=640;function og(e,n){if(n<tv){let o=rg(e),s;do s=o,o=(o+e/o)/2n;while(Gt(o-s)>1n);for(;o*o>e;)o-=1n;for(;(o+1n)*(o+1n)<=e;)o+=1n;return o}let t=n>>2<<1,i=og(e>>BigInt(t),n-t)<<BigInt(t>>1),r;do r=i,i=(i+e/i)/2n;while(Gt(i-r)>1n);for(;i*i>e;)i-=1n;for(;(i+1n)*(i+1n)<=e;)i+=1n;return i}function Gt(e){return e<0n?-e:e}function qs(e){if(e===0n)return 1;if(e<0n&&(e=-e),e<0x20000000000000n){let i=Number(e);return i<1e8?i<1e4?i<100?i<10?1:2:i<1e3?3:4:i<1e6?i<1e5?5:6:i<1e7?7:8:i<1e12?i<1e10?i<1e9?9:10:i<1e11?11:12:i<1e14?i<1e13?13:14:i<1e15?15:16}let n=e.toString(16).length*4,t=Math.ceil(n*.30102999566398);for(;e<Ce(t-1);)t--;for(;e>=Ce(t);)t++;return t}var wk=.7;function sg(e,n){if(e===0n)return 1n<<BigInt(n);let t=Math.round(wk*Math.sqrt(n)),i=t+8,r=n+i,o=BigInt(r),s=1n<<o,a=BigInt(i),u=e<<a,l=u<0n,c=l?-u:u,f=Math.max(0,mr(c)-r+t);c>>=BigInt(f),u=l?-c:c;let p=s,m=u;p+=m;for(let g=2;m=(m*u>>o)/BigInt(g),m!==0n;g++)p+=m;for(let g=0;g<f;g++)p=p*p>>o;return p+(1n<<a-1n)>>a}var Mk=4e4;function ag(e,n){let t=1n<<BigInt(n);if(e<=0n)throw new RangeError("fpln: input must be positive");return e===t?0n:n>=Mk?kk(e,n):Ck(e,n)}function Ck(e,n){let t=BigInt(n),i=1n<<t,r=52,o=n-r,s;if(o>0){let g=Number(e>>BigInt(o))/2**r;s=BigInt(Math.round(Math.log(g)*2**r))<<BigInt(o)}else{let g=Number(e)/Number(i);s=BigInt(Math.round(Math.log(g)*Number(i)))}let a=e*sg(-s,n)>>t,l=(a-i<<t)/(a+i),c=l<0n?-l:l,f=c*c>>t,p=c,m=c;for(let g=3n;p=p*f>>t,p!==0n;g+=2n)m+=p/g;return s+(l<0n?-2n:2n)*m}var Zo=null;function Ak(e){if(Zo!==null){if(Zo.bits===e)return Zo.value;if(Zo.bits>e)return Zo.value>>BigInt(Zo.bits-e)}let n=Math.ceil(e*Wc)+12,t;if(n<=Kx.length){let i=Kx.slice(0,n);t=(BigInt(i)<<BigInt(e))/Ce(i.length)}else t=Fk(e);return Zo={bits:e,value:t},t}function kk(e,n){let t=BigInt(n),i=mr(e)-n,r=Math.max(2,Math.ceil(n/2+4-i)),o=e<<BigInt(r-2),s=1n<<t,a=o;for(;Gt(s-a)>1n;){let l=s+a>>1n;a=Nu(s*a),s=l}return Hc(n)*o/(2n*s)-BigInt(r)*Ak(n)}var Bs="314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151557485724245415069595082953311686172785588907509838175463746493931925506040092770167113900984882401285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949129331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279678235478163600934172164121992458631503028618297455570674983850549458858692699569092721079750930295532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380008164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333454776241686251898356948556209921922218427255025425688767179049460165346680498862723279178608578438382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118630674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009946576407895126946839835259570982582262052248940772671947826848260147699090264013639443745530506820349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813826868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388439045124413654976278079771569143599770012961608944169486855584840635",Wc=Math.log10(2),Kx="693147180559945309417232121458176568075500134360255254120680009493393621969694715605863326996418687542001481020570685733685520235758130557032670751635075961930727570828371435190307038623891673471123350115364497955239120475172681574932065155524734139525882950453007095326366642654104239157814952043740430385500801944170641671518644712839968171784546957026271631064546150257207402481637773389638550695260668341137273873722928956493547025762652098859693201965058554764703306793654432547632744951250406069438147104689946506220167720424524529612687946546193165174681392672504103802546259656869144192871608293803172714367782654877566485085674077648451464439940461422603193096735402574446070308096085047486638523138181676751438667476647890881437141985494231519973548803751658612753529166100071053558249879414729509293113897155998205654392871700072180857610252368892132449713893203784393530887748259701715591070882368362758984258918535302436342143670611892367891923723146723217205340164925687274778234453534764811494186423867767744060695626573796008670762571991847340226514628379048830620330611446300737194890027436439650025809365194430411911506080948793067865158870900605203468429736193841289652556539686022194122924207574321757489097706752687115817051137009158942665478595964890653058460258668382940022833005382074005677053046787001841624044188332327983863490015631218895606505531512721993983320307514084260914790012651682434438935724727882054862715527418772430024897945401961872339808608316648114909306675193393128904316413706813977764981769748689038877899912965036192707108892641052309247839173735012298424204995689359922066022046549415106139187885744245577510206837030866619480896412186807790208181588580001688115973056186676199187395200766719214592236720602539595436541655311295175989940056000366513567569051245926825743946483168332624901803824240824231452306140963805700702551387702681785163069025513703234053802145019015374029509942262995779647427138157363801729873940704242179972266962979939312706935747240493386530879758721699645129446491883771156701678598804981838896784134938314014073166472765327635919233511233389338709513209059272185471328975470797891384445466676192702885533423429899321803769154973340267546758873236778342916191810430116091695265547859732891763545556742863877463987101912431754255888301206779210280341206879759143081283307230300883494705792496591005860012341561757413272465943",Rk=13591409n,Pk=545140134n,Dk=10939058860032000n,Ok=47.11;function Zc(e,n){if(n-e===1){let l,c;if(e===0)l=1n,c=1n;else{l=BigInt(6*e-5)*BigInt(2*e-1)*BigInt(6*e-1);let p=BigInt(e);c=p*p*p*Dk}let f=l*(Rk+Pk*BigInt(e));return e&1&&(f=-f),[l,c,f]}let t=e+n>>1,[i,r,o]=Zc(e,t),[s,a,u]=Zc(t,n);return[i*s,r*a,a*o+i*u]}function iv(e){return Math.max(2,Math.floor(e/Ok)+3)}function Lk(e){let[,n,t]=Zc(0,iv(e)),i=1n<<BigInt(e),r=Nu(10005n*i*i);return n*426880n*r/t}function rv(e){let[,n,t]=Zc(0,iv(Math.ceil(e/Wc))),i=Ce(e),r=Nu(10005n*i*i);return n*426880n*r/t}function ig(e,n){if(n-e===1){let l=e===0?1n:BigInt(2*e-1),c=e===0?1n:9n*BigInt(2*e+1);return[l,c,l]}let t=e+n>>1,[i,r,o]=ig(e,t),[s,a,u]=ig(t,n);return[i*s,r*a,a*o+i*u]}function Fk(e){let n=Math.max(2,Math.ceil(e/3.169925)+5),[,t,i]=ig(0,n);return(i<<BigInt(e+1))/(3n*t)}function Nu(e){if(e<0n)throw new RangeError("bigintSqrt: negative input");if(e===0n)return 0n;let n=mr(e);if(n>=tv)return og(e,n);let t=rg(e),i;do i=t,t=(t+e/t)/2n;while(Gt(t-i)>1n);for(;t*t>e;)t-=1n;for(;(t+1n)*(t+1n)<=e;)t+=1n;return t}var Ho=null;function Hc(e){if(Ho!==null){if(Ho.bits===e)return Ho.value;if(Ho.bits>e)return Ho.value>>BigInt(Ho.bits-e)}let n=$k(e);return Ho={bits:e,value:n},n}function $k(e){let n=Math.ceil(e*Wc)+12;if(n+1<=Bs.length){let t=Bs.slice(0,n+1);return(BigInt(t)<<BigInt(e))/Ce(t.length-1)}return Lk(e)}function Qc(e,n){let t=BigInt(n),i=1n<<t;if(e===0n)return[0n,i];let r=Hc(n),o=2n*r,s=r/2n,a,u=Gt(e);if(u>i<<30n){let S=mr(u)-n+64,C=n+S,w=e<<BigInt(S),k=2n*Hc(C),D=w%k;D<0n&&(D+=k),a=D>>BigInt(S)}else a=e%o;a<0n&&(a+=o);let l=1n,c=1n;a>3n*s?(a=o-a,l=-1n):a>r?(a=a-r,l=-1n,c=-1n):a>s&&(a=r-a,c=-1n);let f=Math.round(n*Wc),p=Math.min(18,Math.max(2,Math.ceil(.87*Math.sqrt(f)))),m=0,g=i>>BigInt(p);for(;a>g;)a=a/2n,m++;let h=a,b=i,y=a,E=i,v=a*a,_=2n*t;for(let S=2;;S+=2){if(E=(E*v>>_)/(BigInt(S)*BigInt(S-1)),E===0n){y=(y*v>>_)/(BigInt(S+1)*BigInt(S)),y!==0n&&(S%4===2?(b-=E,h-=y):(b+=E,h+=y));break}if(y=(y*v>>_)/(BigInt(S+1)*BigInt(S)),S%4===2?(b-=E,h-=y):(b+=E,h+=y),y===0n)break}for(let S=0;S<m;S++){let C=2n*h*b>>t,w=(2n*b*b>>t)-i;h=C,b=w}return[l*h,c*b]}function _u(e,n){if(e===0n)return 0n;if(e<0n)return-_u(-e,n);let t=BigInt(n),i=1n<<t,o=Hc(n)/2n;if(e>i){let m=(i<<t)/e;return o-_u(m,n)}let s=4n*i/10n,a=0,u=e;for(;u>s;){let m=u*u,g=(i<<t)+m>>t,h=Yc(g,n);u=(u<<t)/(i+h),a++}let l=u,c=u,f=u*u,p=2n*t;for(let m=3;c=c*f>>p,c!==0n;m+=2)m%4===3?l-=c/BigInt(m):l+=c/BigInt(m);for(let m=0;m<a;m++)l=2n*l;return l}var ug=NaN,x=class e{static precision=50;static ZERO=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:0n,exponent:0}));static ONE=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:1n,exponent:0}));static TWO=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:2n,exponent:0}));static NEGATIVE_ONE=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:-1n,exponent:0}));static HALF=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:5n,exponent:-1}));static NAN=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:0n,exponent:NaN}));static POSITIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:1n,exponent:1/0}));static NEGATIVE_INFINITY=Object.freeze(Object.assign(Object.create(e.prototype),{_digits:1,significand:-1n,exponent:1/0}));static _piFullPrecision=null;static _piCache=null;static _piCachePrecision=0;static _eulerGammaCache=null;static _eulerGammaCachePrecision=0;static get PI(){let n=e.precision;if(e._piCache!==null&&e._piCachePrecision===n)return e._piCache;let t=n+4,i;if(t+1<=Bs.length)e._piFullPrecision===null&&(e._piFullPrecision=new e(Bs[0]+"."+Bs.slice(1))),i=e._piFullPrecision.toPrecision(t);else{let r=t+4;i=Ae(rv(r),-r).toPrecision(t)}return e._piCache=i,e._piCachePrecision=n,i}static get EULER_GAMMA(){let n=e.precision;if(e._eulerGammaCache!==null&&e._eulerGammaCachePrecision>=n)return e._eulerGammaCache.toPrecision(n);let t=Vk(n);return e._eulerGammaCache=t,e._eulerGammaCachePrecision=n,t}significand;exponent;_digits;digitCount(){return this._digits??(this._digits=qs(this.significand))}constructor(n){if(n instanceof e){this.significand=n.significand,this.exponent=n.exponent;return}if(typeof n=="bigint"){[this.significand,this.exponent]=Xc(n,0);return}if(typeof n=="number"){[this.significand,this.exponent]=zk(n);return}[this.significand,this.exponent]=lv(n)}isNaN(){return Number.isNaN(this.exponent)}isZero(){return this.exponent===0&&this.significand===0n}isFinite(){return Number.isFinite(this.exponent)}isInteger(){return this.isFinite()&&this.exponent>=0}isPositive(){return this.significand>0n}isNegative(){return this.significand<0n}cmp(n){if(typeof n=="number"){if(Number.isNaN(n))return ug;let m=this.exponent;if(Number.isNaN(m))return ug;if(n===0)return this.significand===0n?0:this.significand>0n?1:-1;if(!Number.isFinite(m))return n===1/0?this.significand>0n?0:-1:n===-1/0?this.significand<0n?0:1:this.significand>0n?1:-1;if(this.significand===0n)return n>0?-1:1;if(n===1/0)return-1;if(n===-1/0)return 1;if(this.significand>0n!=n>0)return this.significand>0n?1:-1;if(Number.isInteger(n)&&m>=0&&m<=15){let g=this.significand*Ce(m),h=BigInt(n);return g<h?-1:g>h?1:0}n=new e(n)}let t=this.exponent,i=n.exponent,r=this.significand,o=n.significand;if(t!==t||i!==i)return ug;if(!Number.isFinite(t)||!Number.isFinite(i))return!Number.isFinite(t)&&!Number.isFinite(i)?r===o?0:r>o?1:-1:Number.isFinite(t)?o>0n?-1:1:r>0n?1:-1;if(r===0n)return o===0n?0:o>0n?-1:1;if(o===0n)return r>0n?1:-1;if(r>0n&&o<0n)return 1;if(r<0n&&o>0n)return-1;if(t===i)return r<o?-1:r>o?1:0;let s=this.digitCount(),a=n.digitCount(),u=s+t,l=a+i;if(u!==l){let m=r>0n?1:-1;return u>l?m:-m}let c=r,f=o,p=Math.abs(t-i);if(p>1e3){let m=s,g=a,h=Math.max(m,g)+1;m<h&&(c=c*Ce(h-m)),g<h&&(f=f*Ce(h-g))}else t<i?f=f*Ce(p):c=c*Ce(p);return c<f?-1:c>f?1:0}eq(n){return typeof n=="number"?n===0?this.significand===0n&&this.exponent===0:n===1?this.significand===1n&&this.exponent===0:n===-1?this.significand===-1n&&this.exponent===0:Number.isInteger(n)&&Number.isFinite(this.exponent)&&this.exponent>=0&&this.exponent<=15?this.significand*Ce(this.exponent)===BigInt(n):this.cmp(n)===0:this.significand===n.significand&&this.exponent===n.exponent}lt(n){return this.cmp(n)===-1}lte(n){let t=this.cmp(n);return t===-1||t===0}gt(n){return this.cmp(n)===1}gte(n){let t=this.cmp(n);return t===1||t===0}add(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return Ae(this.significand+n.significand,t);let s=t-i;return s>0?Ae(this.significand*Ce(s)+n.significand,i):Ae(this.significand+n.significand*Ce(-s),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),o=!Number.isFinite(i);return r&&o?this.significand!==n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}sub(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(t===i)return Ae(this.significand-n.significand,t);let s=t-i;return s>0?Ae(this.significand*Ce(s)-n.significand,i):Ae(this.significand-n.significand*Ce(-s),t)}if(t!==t||i!==i)return e.NAN;let r=!Number.isFinite(t),o=!Number.isFinite(i);return r&&o?this.significand===n.significand?e.NAN:this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:r?this.significand>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY:n.significand>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}mul(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i))return Ae(this.significand*n.significand,t+i);if(t!==t||i!==i||this.significand===0n||n.significand===0n)return e.NAN;let r=this.significand>0n?1n:-1n,o=n.significand>0n?1n:-1n;return r*o>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}mulToPrecision(n,t){typeof n=="number"&&(n=new e(n));let i=this.exponent,r=n.exponent,o=this.significand,s=n.significand;if(o!==0n&&s!==0n&&Number.isFinite(i)&&Number.isFinite(r)){let a=o*s,u=i+r,l=this.digitCount()+n.digitCount()-1,f=(a<0n?-a:a)>=Ce(l)?l+1:l;return f<=t?Ae(a,u):ov(a,u).roundToPrecKnownDigits(t,f)}return this.mul(n).toPrecision(t)}neg(){let n=this.significand;return n===0n?this:Number.isFinite(this.exponent)?Ae(-n,this.exponent):n>0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY}abs(){return this.significand>=0n?this:Number.isFinite(this.exponent)?Ae(-this.significand,this.exponent):e.POSITIVE_INFINITY}floor(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand<0n?t.sub(Ae(1n,0)):t}return this}ceil(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.trunc();return this.significand>0n?t.add(Ae(1n,0)):t}return this}round(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=Ae(5n,-1);return this.significand>0n?this.add(t).trunc():this.sub(t).trunc()}return this}trunc(){let n=this.exponent;if(n>=0)return this;if(Number.isFinite(n)){let t=this.significand/Ce(-n);return Ae(t===0n?0n:t,0)}return this}div(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent,r=this.significand,o=n.significand;if(Number.isFinite(t)&&Number.isFinite(i)){if(o===0n)return r===0n?e.NAN:r>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY;if(r===0n)return Ae(0n,0);let u=e.precision,l=10,c=this.digitCount(),f=n.digitCount(),p=u+l+Math.max(0,f-c),m=Ce(p),g=r*m/o,h=t-i-p,b=g<0n?-g:g,y=c+p-f,E=b>=Ce(y)?y+1:y;return ov(g,h).roundToPrecKnownDigits(u,E)}if(t!==t||i!==i)return e.NAN;let s=!Number.isFinite(t),a=!Number.isFinite(i);if(s&&a)return e.NAN;if(s){let u=r>0n?1n:-1n,l=o>0n?1n:o<0n?-1n:1n;return u*l>0n?e.POSITIVE_INFINITY:e.NEGATIVE_INFINITY}return Ae(0n,0)}inv(){return Ae(1n,0).div(this)}divToward(n,t){typeof n=="number"&&(n=new e(n));let i=this.exponent,r=n.exponent,o=this.significand,s=n.significand;if(!Number.isFinite(i)||!Number.isFinite(r)||s===0n||o===0n)return this.div(n);let a=o<0n!=s<0n,u=o<0n?-o:o,l=s<0n?-s:s,c=e.precision,p=c+10+Math.max(0,n.digitCount()-this.digitCount()),m=u*Ce(p),g=m/l,h=m%l!==0n,b=i-r-p,y=this.digitCount()+p-n.digitCount(),E=g>=Ce(y)?y+1:y,v=a?t==="floor":t==="ceiling",[_,S]=sv(g,h,b,c,v,E);return Ae(a?-_:_,S)}sqrtToward(n){if(this.significand===0n)return this.exponent!==this.exponent?this:e.ZERO;if(!Number.isFinite(this.exponent))return this.significand>0n?e.POSITIVE_INFINITY:e.NAN;if(this.significand<0n)return e.NAN;let t=e.precision,i=4,r=this.significand,o=this.exponent,s=o+this.digitCount()-1,a=Math.floor(s/2),u=t+i-a;o+2*u<0&&(u=Math.ceil(-o/2)+1);let l=o+2*u,c=l>=0?r*Ce(l):r/Ce(-l),f=Nu(c),p=f*f!==c,[m,g]=sv(f,p,-u,t,n==="ceiling");return Ae(m,g)}mod(n){typeof n=="number"&&(n=new e(n));let t=this.exponent,i=n.exponent;if(Number.isFinite(t)&&Number.isFinite(i)){if(n.significand===0n)return e.NAN;if(this.significand===0n)return Ae(0n,0);let r=t-i,o=r>=0?this.significand*Ce(r):this.significand,s=r>=0?n.significand:n.significand*Ce(-r),a=o/s;return this.sub(Ae(a,0).mul(n))}return t!==t||i!==i||!Number.isFinite(t)?e.NAN:new e(this)}pow(n){if(typeof n=="number"&&(n=new e(n)),this.isNaN()||n.isNaN()||!n.isFinite())return e.NAN;if(n.isInteger()){let a=n.toBigInt();if(a===0n)return Ae(1n,0);if(!this.isFinite())return a>0n?this.significand<0n&&a%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY:Ae(0n,0);if(this.isZero())return a>0n?Ae(0n,0):e.POSITIVE_INFINITY;if(a<0n)return this.pow(n.neg()).inv();let u=this.significand<0n?-this.significand:this.significand,l=this.digitCount(),c=l>15?l-15:0,f=c>0?Number(u/10n**BigInt(c)):Number(u),p=Math.log10(f)+c+this.exponent,m=Number(a)*p;if(m>9e15)return this.significand<0n&&a%2n!==0n?e.NEGATIVE_INFINITY:e.POSITIVE_INFINITY;if(m<-9e15)return Ae(0n,0);let g=e.precision,h=a.toString(2).length,b=Math.min(2*h+5,100),y=g+b,E=Ae(1n,0),v=this,_=a;for(;_>0n;)_&1n&&(E=E.mulToPrecision(v,y)),_>>=1n,_>0n&&(v=v.mulToPrecision(v,y));return E.toPrecision(g)}if(!this.isFinite())return this.significand<0n?e.NAN:n.significand>0n?e.POSITIVE_INFINITY:e.ZERO;if(this.isZero())return n.significand>0n?e.ZERO:e.POSITIVE_INFINITY;if(this.significand<0n)return e.NAN;let t=this.exponent+this.digitCount()-1,r=n.exponent+n.digitCount()-1+Math.log10(Math.abs(t)*2.303+3)+1,o=Math.min(20,Math.max(2,Math.ceil(r)+2)),s=e.precision;e.precision=s+o;try{let a=qk(this,s+o);return n.mul(a).exp().toPrecision(s)}finally{e.precision=s}}toNumber(){return Number.isFinite(this.exponent)?this.significand===0n?0:this.exponent===0?Number(this.significand):Number(this.toString()):this.exponent!==this.exponent?NaN:this.significand>0n?1/0:-1/0}toString(){if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";if(this.significand===0n)return"0";let n=this.significand<0n,t=(n?-this.significand:this.significand).toString(),i=t.length,r=i+this.exponent-1,o=n?"-":"";if(r>20||r<-6){let u=i===1?t:t[0]+"."+t.slice(1),l=r>=0?"+":"";return`${o}${u}e${l}${r}`}if(this.exponent>=0)return o+t+"0".repeat(this.exponent);let s=-this.exponent;if(s<i){let u=t.slice(0,i-s),l=t.slice(i-s);return`${o}${u}.${l}`}let a=s-i;return`${o}0.${"0".repeat(a)}${t}`}toFixed(n){let t=n??0;if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";let i=this.significand<0n,r=i?-this.significand:this.significand,o=this.exponent+t,s,a;if(o>=0)a=r===0n,s=a?"0":r.toString()+"0".repeat(o);else{let f=Ce(-o),p=r/f,m=r%f,g=f/2n,h;m>g?h=p+1n:m<g||f%2n!==0n||p%2n===0n?h=p:h=p+1n,a=h===0n,s=h.toString()}let u=i&&!a?"-":"";if(t===0)return`${u}${s}`;if(s.length<=t){let f=s.padStart(t,"0");return`${u}0.${f}`}let l=s.slice(0,s.length-t),c=s.slice(s.length-t);return`${u}${l}.${c}`}toPrecision(n){if(this.significand===0n||!Number.isFinite(this.exponent))return this;let t=this.digitCount();return t<=n?this:this.roundToPrecKnownDigits(n,t)}roundToPrecKnownDigits(n,t){let i=this.significand<0n?-this.significand:this.significand,r=t-n,o=Ce(r),s=i/o,a=i-s*o,u=o/2n;(a>u||a===u&&s%2n!==0n)&&(s+=1n);let l=this.significand<0n?-s:s;return Ae(l,this.exponent+r)}toBigInt(){if(!Number.isFinite(this.exponent))throw this.exponent!==this.exponent?new RangeError("Cannot convert NaN to BigInt"):new RangeError("Cannot convert Infinity to BigInt");if(this.exponent>=0)return this.significand*Ce(this.exponent);let n=Ce(-this.exponent);return this.significand/n}},Bk=8,Su=[];function qk(e,n){let t=e.significand,i=e.exponent;for(let o=Su.length-1;o>=0;o--){let s=Su[o];if(s.prec===n&&s.exp===i&&s.sig===t)return s.ln}let r=e.ln();return Su.push({sig:t,exp:i,prec:n,ln:r}),Su.length>Bk&&Su.shift(),r}function Vk(e){let n=e+20+Math.ceil(Math.log10(e+10)),t=x.precision;x.precision=n;try{let i=Math.ceil(n*Math.LN10/4)+5,r=new x(i),o=r.mul(r),s=x.ONE,a=x.ONE,u=x.ZERO,l=x.ZERO,c=x.ONE.div(new x(10).pow(n)),f=6*i+100;for(let p=1;p<=f;p++){let m=new x(p).mul(p);if(s=s.mul(o).div(m).toPrecision(n),l=l.add(x.ONE.div(p)).toPrecision(n),a=a.add(s).toPrecision(n),u=u.add(s.mul(l)).toPrecision(n),p>i&&s.lt(a.mul(c)))break}return u.div(a).sub(r.ln()).toPrecision(e)}finally{x.precision=t}}function Ae(e,n){let[t,i]=Xc(e,n),r=Object.create(x.prototype);return r.significand=t,r.exponent=i,r}function ov(e,n){let t=Object.create(x.prototype);return t.significand=e,t.exponent=n,t}function sv(e,n,t,i,r,o){if(e===0n)return[r&&n?1n:0n,t];let s=o??qs(e);if(s<=i)return[r&&n?e+1n:e,t];let a=s-i,u=Ce(a),l=e/u,c=n||e%u!==0n;return r&&c&&(l+=1n),[l,t+a]}var av=1000000000n,uv=1000n;function Xc(e,n){if(e===0n)return[0n,0];if((e&1n)!==0n)return[e,n];if(e%10n!==0n)return[e,n];for(;e%av===0n;)e/=av,n+=9;for(;e%uv===0n;)e/=uv,n+=3;for(;e%10n===0n;)e/=10n,n+=1;return[e,n]}function zk(e){return Number.isNaN(e)?[0n,NaN]:e===1/0?[1n,1/0]:e===-1/0?[-1n,1/0]:Number.isInteger(e)?Xc(BigInt(e),0):lv(e.toString())}function lv(e){if(e=e.trim(),e===""||e==="NaN")return[0n,NaN];if(e==="Infinity"||e==="+Infinity")return[1n,1/0];if(e==="-Infinity")return[-1n,1/0];let n,t=0,i=e.search(/[eE]/);if(i!==-1){if(n=e.slice(0,i),t=Number(e.slice(i+1)),!Number.isFinite(t))return[0n,NaN]}else n=e;let r=!1;n.startsWith("-")?(r=!0,n=n.slice(1)):n.startsWith("+")&&(n=n.slice(1));let o=n.indexOf("."),s,a;o===-1?(s=n,a=""):(s=n.slice(0,o),a=n.slice(o+1)),s=s.replace(/^0+/,"")||"0";let u=s+a;if(u.length===0||!/^\d+$/.test(u))return[0n,NaN];let l=BigInt(u);r&&(l=-l);let c=-a.length;return Xc(l,c+t)}var Jk=Math.log2(10),pv=Math.log10(2),Gk=16,cg=1e6;function dr(e,n){let t=Math.ceil(n*Jk)+Gk,i=BigInt(t);return e.exponent>=0?[e.significand*Ce(e.exponent)<<i,t]:[(e.significand<<i)/Ce(-e.exponent),t]}function gr(e,n,t){if(e===0n)return x.ZERO;let i=e<0n,r=i?-e:e,o=BigInt(n),s=mr(r)-n,a=Math.floor(s*pv),u=t+4-a,l,c;if(u>=0)l=r*Ce(u)+(1n<<o-1n)>>o,c=-u;else{let p=Ce(-u)<<o;l=(r+p/2n)/p,c=-u}if(l===0n)return x.ZERO;let f=qs(l);if(f>t){let p=f-t,m=Ce(p),g=m/2n,h=l%m;l=l/m,h>=g&&(l+=1n),c+=p}return Ae(i?-l:l,c)}function ot(e){return e.exponent+e.digitCount()-1}function lg(e,n){if(e===0n)return 0;let t=e<0n?-e:e,i=n*pv-(qs(t)-1);return i>0?Math.ceil(i):0}var mv=5,cv=BigInt(Number.MAX_SAFE_INTEGER),Yo=null;function dv(e){if(Yo!==null){if(Yo.bits===e)return Yo.value;if(Yo.bits>e)return Yo.value>>BigInt(Yo.bits-e)}let n=ag(10n<<BigInt(e),e);return Yo={bits:e,value:n},n}x.prototype.sqrt=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ZERO;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NAN;if(this.significand<0n)return x.NAN;let e=x.precision,n=e+10,t=ot(this),i=Math.floor(t/2),r=Ae(this.significand,this.exponent-2*i),[o,s]=dr(r,n),a=Yc(o,s),u=gr(a,s,e);return Ae(u.significand,u.exponent+i)};x.prototype.cbrt=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ZERO;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NEGATIVE_INFINITY;if(this.significand<0n)return this.neg().cbrt().neg();let e=x.precision,n=e+10,t=ot(this),i=Math.floor(t/3),r=Ae(this.significand,this.exponent-3*i),[o,s]=dr(r,n),a=o<<BigInt(2*s),u,l=r.toNumber();if(s<=1e3&&Number.isFinite(l)&&l>0){let p=Number(1n<<BigInt(s)),m=Math.cbrt(l);Number.isFinite(m)&&m>0?(u=BigInt(Math.floor(m*p)),u===0n&&(u=1n)):u=fv(a)}else u=fv(a);let c;do{c=u;let p=u*u;if(p===0n){u=1n;break}u=(2n*u+a/p)/3n}while(Gt(u-c)>1n);{let p=(2n*u+a/(u*u))/3n,m=Gt(u*u*u-a);Gt(p*p*p-a)<m&&(u=p)}let f=gr(u,s,e);return Ae(f.significand,f.exponent+i)};x.sqrt=function(e){return e.sqrt()};x.cbrt=function(e){return e.cbrt()};x.prototype.exp=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.ZERO;if(this.isZero())return x.ONE;if(ot(this)>=17)return this.significand>0n?x.POSITIVE_INFINITY:x.ZERO;let e=x.precision,n=Math.max(0,this.exponent+this.digitCount()),t=e+20+n,[i,r]=dr(this,t),o=dv(r),s=i/o,a=i-s*o;if(a<0n&&(s-=1n,a+=o),s>cv||s<-cv)return s>0n?x.POSITIVE_INFINITY:x.ZERO;let u=gr(sg(a,r),r,e),l=u.exponent+Number(s);return Number.isSafeInteger(l)?Ae(u.significand,l):s>0n?x.POSITIVE_INFINITY:x.ZERO};x.prototype.ln=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NAN;if(this.isZero())return x.NEGATIVE_INFINITY;if(this.significand<0n)return x.NAN;if(this.eq(1))return x.ZERO;let e=x.precision,n=this.significand,t=this.digitCount(),i=this.exponent+t-1,r=Ae(n,-(t-1)),o=Math.abs(i).toString().length,s=0;if(i===0||i===-1){let p=this.sub(x.ONE);if(!p.isZero()){let m=ot(p);m<0&&(s=-m)}}let a=e+20+o+s,[u,l]=dr(r,a),c=dv(l),f=ag(u,l)+BigInt(i)*c;return gr(f,l,e)};x.prototype.log=function(e){let n=e instanceof x?e:new x(e),t=x.precision;x.precision=t+10;try{return this.ln().div(n.ln()).toPrecision(t)}finally{x.precision=t}};x.exp=function(e){return e.exp()};x.ln=function(e){return e.ln()};x.log10=function(e){return e.log(10)};x.log2=function(e){return e.log(2)};x.prototype.sin=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return x.NAN;if(this.isZero())return x.ZERO;let e=x.precision,n=ot(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0);if(n+t+30>cg)return x.NAN;let[i,r]=dr(this,t),[o]=Qc(i,r);return gr(o,r,e)};x.prototype.cos=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return x.NAN;if(this.isZero())return x.ONE;let e=x.precision,n=ot(this),t=0;for(let i=0;;i++){let r=e+15+t;if(n+r+30>cg)return x.NAN;let[o,s]=dr(this,r),[,a]=Qc(o,s);if(a===0n){if(i>=3)return x.ZERO;t+=e+30;continue}let u=lg(a,s);if(u<=t+mv||i>=3)return gr(a,s,e);t=u+5}};x.prototype.tan=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return x.NAN;if(this.isZero())return x.ZERO;let e=x.precision,n=ot(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=n<0?-n:0,i=0;for(let r=0;;r++){let o=e+15+t+i;if(n+o+30>cg)return x.NAN;let[s,a]=dr(this,o),[u,l]=Qc(s,a);if(l===0n){if(r>=3)return u>0n?x.POSITIVE_INFINITY:x.NEGATIVE_INFINITY;i+=e+30;continue}let c=Math.max(u===0n?0:lg(u,a),lg(l,a));if(c<=i+mv||r>=3){let f=(u<<BigInt(a))/l;return gr(f,a,e)}i=c+5}};x.prototype.atan=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ZERO;if(!this.isFinite()){let s=x.PI.div(x.TWO);return this.significand>0n?s:s.neg()}let e=x.precision,n=ot(this);if(n<0&&-2*n>=e+4)return this.toPrecision(e);let t=e+15+(n<0?-n:0),[i,r]=dr(this,t),o=_u(i,r);return gr(o,r,e)};x.prototype.asin=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return x.NAN;if(this.isZero())return x.ZERO;let e=this.abs(),n=x.ONE;if(e.gt(n))return x.NAN;if(e.eq(n)){let m=x.PI.div(x.TWO);return this.significand>0n?m:m.neg()}let t=x.precision,i=ot(this);if(i<0&&-2*i>=t+4)return this.toPrecision(t);let r=t+20+(i<0?-i:0),[o,s]=dr(this,r),a=1n<<BigInt(s),u=ev(o,o,s),l=a-u,c=Yc(l,s),f=nv(o,c,s),p=_u(f,s);return gr(p,s,t)};x.prototype.acos=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return x.NAN;if(this.abs().gt(x.ONE))return x.NAN;if(this.eq(1))return x.ZERO;if(this.eq(-1))return x.PI;let n=x.precision,t=x.precision;x.precision=n+10;try{let i=x.TWO;if(this.significand>=0n){let o=x.ONE.sub(this).mulToPrecision(x.HALF,n+10).sqrt();return i.mulToPrecision(o.asin(),n)}let r=x.ONE.add(this).mulToPrecision(x.HALF,n+10).sqrt();return x.PI.sub(i.mul(r.asin())).toPrecision(n)}finally{x.precision=t}};x.sin=function(e){return e.sin()};x.cos=function(e){return e.cos()};x.tan=function(e){return e.tan()};x.asin=function(e){return e.asin()};x.acos=function(e){return e.acos()};x.atan=function(e){return e.atan()};x.atan2=function(e,n){let t=e instanceof x?e:new x(e);if(t.isNaN()||n.isNaN())return x.NAN;let i=x.PI,r=i.div(x.TWO);if(n.isZero())return t.isZero()?x.ZERO:t.significand>0n?r:r.neg();let o=t.div(n);return n.significand>0n?o.atan():t.significand>=0n?o.atan().add(i):o.atan().sub(i)};x.prototype.sinh=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ZERO;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NEGATIVE_INFINITY;let e=x.precision,n=ot(this);if(n<0){if(-2*n>=e+4)return this.toPrecision(e);let r=x.precision;x.precision=e-n+5;try{let o=this.exp();return o.sub(o.inv()).mulToPrecision(x.HALF,e)}finally{x.precision=r}}if(Math.abs(this.toNumber())>1.16*(e+3)){let r=this.abs().exp().div(x.TWO);return this.significand>0n?r:r.neg()}let t=this.exp(),i=t.inv();return t.sub(i).div(x.TWO)};x.prototype.cosh=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ONE;if(!this.isFinite())return x.POSITIVE_INFINITY;let e=x.precision;if(Math.abs(this.toNumber())>1.16*(e+3))return this.abs().exp().div(x.TWO);let n=this.exp(),t=n.inv();return n.add(t).div(x.TWO)};x.prototype.tanh=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ZERO;if(!this.isFinite())return this.significand>0n?x.ONE:x.NEGATIVE_ONE;let e=x.precision,n=ot(this);if(n<0){if(-2*n>=e+4)return this.toPrecision(e);let i=x.precision;x.precision=e-n+5;try{let r=this.mul(x.TWO).exp();return r.sub(x.ONE).div(r.add(x.ONE)).toPrecision(e)}finally{x.precision=i}}if(Math.abs(this.toNumber())>1.16*(e+3))return this.significand>0n?x.ONE:x.NEGATIVE_ONE;let t=this.mul(x.TWO).exp();return t.sub(x.ONE).div(t.add(x.ONE))};x.sinh=function(e){return e.sinh()};x.cosh=function(e){return e.cosh()};x.tanh=function(e){return e.tanh()};x.prototype.expm1=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NEGATIVE_ONE;if(this.isZero())return x.ZERO;let e=x.precision,n=ot(this);if(n<0&&-n>=e+2)return this.toPrecision(e);if(n<0){let t=x.precision;x.precision=e-n+5;try{return this.exp().sub(x.ONE).toPrecision(e)}finally{x.precision=t}}return this.exp().sub(x.ONE)};x.prototype.log1p=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NAN;if(this.isZero())return x.ZERO;let e=x.ONE.add(this);if(e.isZero())return x.NEGATIVE_INFINITY;if(e.significand<0n)return x.NAN;let n=x.precision,t=ot(this);if(t<0&&-t>=n+2)return this.toPrecision(n);if(t<0){let i=x.precision;x.precision=n-t+5;try{return x.ONE.add(this).ln().toPrecision(n)}finally{x.precision=i}}return x.ONE.add(this).ln()};x.prototype.asinh=function(){if(this.isNaN())return x.NAN;if(this.isZero())return x.ZERO;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NEGATIVE_INFINITY;let e=this.significand<0n,n=this.abs(),t=x.precision,i=ot(this);if(i<0&&-2*i>=t+4)return this.toPrecision(t);let r=()=>n.add(n.mul(n).add(x.ONE).sqrt()).ln(),o;if(i<0){let s=x.precision;x.precision=t-i+5;try{o=r().toPrecision(t)}finally{x.precision=s}}else o=r();return e?o.neg():o};x.prototype.acosh=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:x.NAN;if(this.lt(x.ONE))return x.NAN;if(this.eq(1))return x.ZERO;let e=this.sub(x.ONE).div(x.TWO).sqrt();return x.TWO.mul(e.asinh())};x.prototype.atanh=function(){if(this.isNaN())return x.NAN;if(!this.isFinite())return x.NAN;if(this.isZero())return x.ZERO;let e=this.abs();if(e.eq(1))return this.significand>0n?x.POSITIVE_INFINITY:x.NEGATIVE_INFINITY;if(e.gt(x.ONE))return x.NAN;let n=x.precision,t=ot(this);if(-2*t>=n+4)return this.toPrecision(n);let i=x.precision;x.precision=n-t+5;try{return x.ONE.add(this).div(x.ONE.sub(this)).ln().mulToPrecision(x.HALF,n)}finally{x.precision=i}};x.prototype.nthRoot=function(e){if(this.isNaN()||!Number.isInteger(e)||e===0)return x.NAN;if(e===1)return this;if(e===2)return this.sqrt();if(e===3)return this.cbrt();if(e<0)return this.nthRoot(-e).inv();if(this.isZero())return x.ZERO;if(!this.isFinite())return this.significand>0n?x.POSITIVE_INFINITY:e%2===0?x.NAN:x.NEGATIVE_INFINITY;if(this.significand<0n)return e%2===0?x.NAN:this.neg().nthRoot(e).neg();let n=x.precision,t=x.precision;x.precision=n+8;try{return x.exp(this.ln().div(new x(e))).toPrecision(n)}finally{x.precision=t}};x.asinh=function(e){return e.asinh()};x.acosh=function(e){return e.acosh()};x.atanh=function(e){return e.atanh()};x.expm1=function(e){return e.expm1()};x.log1p=function(e){return e.log1p()};x.nthRoot=function(e,n){return e.nthRoot(n)};function fv(e){let n=mr(e);if(n<=1023){let u=Math.cbrt(Number(e));if(Number.isFinite(u)&&u>=1)return BigInt(Math.floor(u))}let t=n-51,i=Number(e>>BigInt(t)),r=Math.cbrt(i),o=Math.floor(t/3),s=t%3;s===1&&(r*=1.2599210498948732),s===2&&(r*=1.5874010519681994);let a=BigInt(Math.round(r))<<BigInt(o);return a>0n?a:1n}var Vs=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],fg=["indexed_collection","list","tuple"],Kc=[...fg,"collection","set","record","dictionary"],ef=["scalar",...Vs,"boolean","string"],pg=["value","color",...Kc,...ef],mg=["expression","symbol","function",...pg],dg=["any","unknown","nothing","never","error",...mg],zs=new Set(Vs),gv=new Set(Kc),hv=new Set(ef),Wo=new Set(dg);function bv(e){return typeof e!="string"?!1:Wo.has(e)}function hr(e){return typeof e=="string"?Wo.has(e):typeof e!="object"||!("kind"in e)?!1:e.kind==="signature"||e.kind==="union"||e.kind==="intersection"||e.kind==="negation"||e.kind==="value"||e.kind==="tuple"||e.kind==="list"||e.kind==="record"||e.kind==="dictionary"||e.kind==="set"||e.kind==="symbol"||e.kind==="expression"||e.kind==="numeric"||e.kind==="collection"||e.kind==="indexed_collection"||e.kind==="reference"}var nf=class{input;pos=0;line=1;column=1;tokens=[];tolerant;constructor(n,t){this.input=n,this.tolerant=t?.tolerant??!1}saveState(){return{pos:this.pos,line:this.line,column:this.column,tokens:[...this.tokens]}}restoreState(n){this.pos=n.pos,this.line=n.line,this.column=n.column,this.tokens=n.tokens}error(n){throw new Error(`Lexer error at line ${this.line}, column ${this.column}: ${n}`)}peek(n=0){let t=this.pos+n;return t<this.input.length?this.input[t]:""}advance(){let n=this.input[this.pos++];return n===`
|
|
4
4
|
`?(this.line++,this.column=1):this.column++,n}match(n){if(this.input.slice(this.pos,this.pos+n.length)===n){for(let t=0;t<n.length;t++)this.advance();return!0}return!1}isEOF(){return this.pos>=this.input.length}skipWhitespace(){for(;!this.isEOF()&&/\s/.test(this.peek());)this.advance()}readIdentifier(){let n="";for(;!this.isEOF()&&/[a-zA-Z0-9_]/.test(this.peek());)n+=this.advance();return n}readVerbatimString(){if(!this.match("`"))return"";let n="";for(;!this.isEOF()&&this.peek()!=="`";)this.match("\\`")?n+="`":this.match("\\\\")?n+="\\":n+=this.advance();return this.isEOF()&&this.error("Unterminated verbatim string"),this.advance(),n}readStringLiteral(){let n=this.advance(),t="";for(;!this.isEOF()&&this.peek()!==n;)this.match("\\"+n)?t+=n:this.match("\\\\")?t+="\\":t+=this.advance();return this.isEOF()&&this.error("Unterminated string literal"),this.advance(),t}readNumber(){let n="";if((this.peek()==="-"||this.peek()==="+")&&(n+=this.advance()),this.match("0x")||this.match("0X")){for(n+="x";!this.isEOF()&&/[0-9a-fA-F]/.test(this.peek());)n+=this.advance();return"0"+n}if(this.match("0b")||this.match("0B")){for(n+="b";!this.isEOF()&&/[01]/.test(this.peek());)n+=this.advance();return"0"+n}for(;!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();if(this.peek()==="."&&/[0-9]/.test(this.peek(1)))for(n+=this.advance();!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();if(this.peek()==="e"||this.peek()==="E")for(n+=this.advance(),(this.peek()==="+"||this.peek()==="-")&&(n+=this.advance());!this.isEOF()&&/[0-9]/.test(this.peek());)n+=this.advance();return n}createToken(n,t){return{type:n,value:t,position:this.pos-t.length,line:this.line,column:this.column-t.length}}nextToken(){if(this.skipWhitespace(),this.isEOF())return this.createToken("EOF","");let n=this.pos,t=this.peek();if(this.match("->"))return this.createToken("->","->");if(this.match(".."))return this.createToken("..","..");if(this.match("+\u221E")||this.match("+oo"))return this.createToken("PLUS_INFINITY",this.input.slice(n,this.pos));if(this.match("-\u221E")||this.match("-oo"))return this.createToken("MINUS_INFINITY",this.input.slice(n,this.pos));if(this.match("+infinity"))return this.createToken("PLUS_INFINITY","+infinity");if(this.match("-infinity"))return this.createToken("MINUS_INFINITY","-infinity");if(/[a-zA-Z_]/.test(t)){let i=this.readIdentifier();switch(i){case"true":return this.createToken("TRUE",i);case"false":return this.createToken("FALSE",i);case"nan":return this.createToken("NAN",i);case"infinity":return this.createToken("INFINITY",i);case"oo":return this.createToken("INFINITY",i);default:return this.createToken("IDENTIFIER",i)}}switch(t){case"|":return this.advance(),this.createToken("|","|");case"&":return this.advance(),this.createToken("&","&");case"!":return this.advance(),this.createToken("!","!");case"^":return this.advance(),this.createToken("^","^");case"(":return this.advance(),this.createToken("(","(");case")":return this.advance(),this.createToken(")",")");case"<":return this.advance(),this.createToken("<","<");case">":return this.advance(),this.createToken(">",">");case"[":return this.advance(),this.createToken("[","[");case"]":return this.advance(),this.createToken("]","]");case",":return this.advance(),this.createToken(",",",");case":":return this.advance(),this.createToken(":",":");case"?":return this.advance(),this.createToken("?","?");case"*":return this.advance(),this.createToken("*","*");case"+":return/[0-9]/.test(this.peek(1))?this.createToken("NUMBER_LITERAL",this.readNumber()):(this.advance(),this.createToken("+","+"));case"x":return/[0-9]/.test(this.peek(1))?(this.advance(),this.createToken("x","x")):(this.advance(),this.createToken("x","x"))}if(t==='"'||t==="'")return this.createToken("STRING_LITERAL",this.readStringLiteral());if(t==="`")return this.createToken("VERBATIM_STRING",this.readVerbatimString());if(/[0-9]/.test(t)||t==="-"&&/[0-9]/.test(this.peek(1))){let i=this.readNumber();return this.peek()==="x"&&/[0-9]/.test(this.peek(1)),this.createToken("NUMBER_LITERAL",i)}if(t==="\u221E")return this.advance(),this.createToken("INFINITY","\u221E");if(this.tolerant)return this.createToken("EOF","");this.error(`Unexpected character: ${t}`)}tokenize(){let n=[];for(;!this.isEOF();){let t=this.nextToken();if(t&&(n.push(t),t.type==="EOF"))break}return n}peekToken(){if(this.tokens.length===0){let n=this.nextToken();n&&this.tokens.push(n)}return this.tokens[0]||this.createToken("EOF","")}consumeToken(){if(this.tokens.length===0){let n=this.nextToken();if(n)return n}return this.tokens.shift()||this.createToken("EOF","")}matchToken(n){return this.peekToken().type===n?(this.consumeToken(),!0):!1}expectToken(n){let t=this.consumeToken();return t.type!==n&&this.error(`Expected ${n}, got ${t.type}`),t}};var tf=class{lexer;typeResolver;current;allowTrailing;_end=0;constructor(n,t){this.allowTrailing=t?.allowTrailing??!1,this.lexer=new nf(n,{tolerant:this.allowTrailing}),this.typeResolver=t?.typeResolver??{forward:()=>{},resolve:()=>{},get names(){return[]}},this.current=this.lexer.consumeToken()}get endOffset(){return this._end}error(n,t){this.errorAtToken(this.current,n,t)}errorAtToken(n,t,i){let r=this.lexer.input;this.allowTrailing&&(r=r.slice(0,n.position+n.value.length));let s=r.split(`
|
|
@@ -1824,7 +1824,7 @@ vec2 _iv_mod(vec2 a, vec2 b) {
|
|
|
1824
1824
|
}
|
|
1825
1825
|
`;function PA(e={}){let n=e.trigAbsPad??0;return O$.replace("__IV_TRIG_ABS__",yt(n))}var $ae=PA(),RA={Add:(e,n)=>{if(e.length===0)return"vec2(0.0, 0.0)";let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_iv_add(${t}, ${n(e[i])})`;return t},Subtract:([e,n],t)=>{if(e===null||n===null)throw new Error("Subtract: missing argument");return`_iv_sub(${t(e)}, ${t(n)})`},Multiply:(e,n)=>{if(e.length===0)return"vec2(1.0, 1.0)";let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_iv_mul(${t}, ${n(e[i])})`;return t},Divide:([e,n],t)=>{if(e===null||n===null)throw new Error("Divide: missing argument");return`_iv_div(${t(e)}, ${t(n)})`},Negate:([e],n)=>{if(e===null)throw new Error("Negate: no argument");return`_iv_negate(${n(e)})`},Square:([e],n)=>{if(e===null)throw new Error("Square: no argument");return`_iv_square(${n(e)})`},Sqrt:([e],n)=>{if(e===null)throw new Error("Sqrt: no argument");return`_iv_sqrt(${n(e)})`},Abs:([e],n)=>{if(e===null)throw new Error("Abs: no argument");return`_iv_abs(${n(e)})`},Exp:([e],n)=>{if(e===null)throw new Error("Exp: no argument");return`_iv_exp(${n(e)})`},Ln:([e],n)=>{if(e===null)throw new Error("Ln: no argument");return`_iv_ln(${n(e)})`},Log:(e,n)=>e.length===1?`_iv_log10(${n(e[0])})`:`_iv_div(_iv_ln(${n(e[0])}), _iv_ln(${n(e[1])}))`,Lb:([e],n)=>{if(e===null)throw new Error("Lb: no argument");return`_iv_log2(${n(e)})`},Sin:([e],n)=>{if(e===null)throw new Error("Sin: no argument");return`_iv_sin(${n(e)})`},Cos:([e],n)=>{if(e===null)throw new Error("Cos: no argument");return`_iv_cos(${n(e)})`},Tan:([e],n)=>{if(e===null)throw new Error("Tan: no argument");return`_iv_tan(${n(e)})`},Arcsin:([e],n)=>{if(e===null)throw new Error("Arcsin: no argument");return`_iv_asin(${n(e)})`},Arccos:([e],n)=>{if(e===null)throw new Error("Arccos: no argument");return`_iv_acos(${n(e)})`},Arctan:([e],n)=>{if(e===null)throw new Error("Arctan: no argument");return`_iv_atan(${n(e)})`},Floor:([e],n)=>{if(e===null)throw new Error("Floor: no argument");return`_iv_floor(${n(e)})`},Ceil:([e],n)=>{if(e===null)throw new Error("Ceil: no argument");return`_iv_ceil(${n(e)})`},Round:([e],n)=>{if(e===null)throw new Error("Round: no argument");return`_iv_round(${n(e)})`},Truncate:([e],n)=>{if(e===null)throw new Error("Truncate: no argument");return`_iv_trunc(${n(e)})`},Fract:([e],n)=>{if(e===null)throw new Error("Fract: no argument");return`_iv_fract(${n(e)})`},Sign:([e],n)=>{if(e===null)throw new Error("Sign: no argument");return`_iv_sign(${n(e)})`},Heaviside:([e],n)=>{if(e===null)throw new Error("Heaviside: no argument");return`_iv_heaviside(${n(e)})`},Mod:([e,n],t)=>{if(e===null||n===null)throw new Error("Mod: missing argument");return`_iv_mod(${t(e)}, ${t(n)})`},Min:(e,n)=>{if(e.length===0)throw new Error("Min: no argument");let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_iv_min(${t}, ${n(e[i])})`;return t},Max:(e,n)=>{if(e.length===0)throw new Error("Max: no argument");let t=n(e[0]);for(let i=1;i<e.length;i++)t=`_iv_max(${t}, ${n(e[i])})`;return t},Power:([e,n],t)=>{if(e===null||n===null)throw new Error("Power: missing argument");if(I(e,"ExponentialE"))return`_iv_exp(${t(n)})`;if(N(n)&&n.im===0){let i=n.re;if(i===.5)return`_iv_sqrt(${t(e)})`;if(i===2)return`_iv_square(${t(e)})`;if(Number.isInteger(i)&&i>=0)return`_iv_powi(${t(e)}, ${yt(i)})`;if(!Number.isInteger(i)&&i>0){let r=n.numerator?.re,o=n.denominator?.re;return Number.isInteger(r)&&Number.isInteger(o)&&o>1&&o%2!==0?`_iv_powrat(${t(e)}, ${yt(r)}, ${yt(i)})`:`_iv_powf(${t(e)}, ${yt(i)})`}throw new Error(`interval-glsl: Power with exponent \`${n.toString()}\` is not yet supported`)}throw new Error("interval-glsl: Power with a variable exponent is not yet supported")}},$d={Pi:"vec2(3.14159265359, 3.14159265359)",ExponentialE:"vec2(2.71828182846, 2.71828182846)",GoldenRatio:"vec2(1.61803398875, 1.61803398875)",CatalanConstant:"vec2(0.91596559417, 0.91596559417)",EulerGamma:"vec2(0.57721566490, 0.57721566490)"},Bd=class extends Os{languageId="interval-glsl";getOperators(){return{}}getFunctions(){return RA}getConstants(){return $d}createTarget(n={}){return super.createTarget({operators:()=>{},functions:t=>RA[t],number:t=>`vec2(${yt(t)}, ${yt(t)})`,complex:()=>{throw new Error("interval-glsl: complex values are not supported")},var:t=>$d[t],...n})}getPreamble(n={}){return PA(n)}compile(n,t={}){let{vars:i,trigAbsPad:r}=t,o=this.createTarget({var:u=>{if(i&&u in i)return i[u];if(u in $d)return $d[u]}}),s=P.compile(n,o),a=P.withReferences({target:"interval-glsl",success:!0,code:s},n,o,i?new Set(Object.keys(i)):void 0);return(s.includes("_iv_")||(a.freeSymbols?.length??0)>0)&&(a.preamble=this.getPreamble({trigAbsPad:r})),a}compileExclusionShader(n,t={}){let{version:i="300 es",precision:r="highp",trigAbsPad:o}=t,s=this.compile(n),a=s.freeSymbols??[];if(a.length>2)throw new Error(`interval-glsl exclusion shader supports at most 2 free variables (got ${a.length}: ${a.join(", ")})`);let u=a.map(m=>`vec2 ${m}`).join(", "),[l,c]=a,f=["void main() {"];f.push(" vec2 _cell = gl_FragCoord.xy / u_resolution;"),f.push(" vec2 _step = 1.0 / u_resolution;");let p=[];return l!==void 0&&(f.push(" float _xlo = mix(u_domainX.x, u_domainX.y, _cell.x);"),f.push(" float _xhi = mix(u_domainX.x, u_domainX.y, _cell.x + _step.x);"),f.push(" float _xext = max(abs(u_domainX.x), abs(u_domainX.y));"),p.push("_iv_widen_box(vec2(_xlo, _xhi), _xext)")),c!==void 0&&(f.push(" float _ylo = mix(u_domainY.x, u_domainY.y, _cell.y);"),f.push(" float _yhi = mix(u_domainY.x, u_domainY.y, _cell.y + _step.y);"),f.push(" float _yext = max(abs(u_domainY.x), abs(u_domainY.y));"),p.push("_iv_widen_box(vec2(_ylo, _yhi), _yext)")),f.push(` vec2 _f = _implicit(${p.join(", ")});`),f.push(" bool _excluded = (_f.x > 0.0 || _f.y < 0.0);"),f.push(" fragColor = _excluded ? vec4(0.0, 0.0, 0.0, 1.0) : vec4(1.0);"),f.push("}"),[`#version ${i}`,`precision ${r} float;`,"",this.getPreamble({trigAbsPad:o}).trim(),"","uniform vec2 u_domainX; // [min, max] for the 1st free variable","uniform vec2 u_domainY; // [min, max] for the 2nd free variable","uniform vec2 u_resolution; // render target size, in pixels","","out vec4 fragColor;","","// Interval evaluation of the implicit field f over a cell box. The box is","// outward-rounded by the caller (main(), via _iv_widen_box).",`vec2 _implicit(${u}) {`,` return ${s.code};`,"}","",f.join(`
|
|
1826
1826
|
`),""].join(`
|
|
1827
|
-
`)}};var qd=class{_targets=new Map;register(n,t){BC(n),VC(t),this._targets.set(n,t)}get(n){return this._targets.get(n)}list(){return[...this._targets.keys()]}unregister(n){this._targets.delete(n)}registerDefaults(){this.register("javascript",new Oc),this.register("glsl",new Os),this.register("wgsl",new wd),this.register("python",new Lc),this.register("interval-js",new zc),this.register("interval-glsl",new Bd)}};var Vd=class{_listeners=[];_registered=new WeakSet;_pending=!1;_version=0;listen(n){return this._registered.has(n)||(this._registered.add(n),this._listeners.push(new WeakRef(n))),()=>this._unsubscribe(n)}_unsubscribe(n){this._registered.has(n)&&(this._registered.delete(n),this._listeners=this._listeners.filter(t=>{let i=t.deref();return i!==void 0&&i!==n}))}notify(){if(this._pending)return;this._pending=!0;let n=this._version+1;queueMicrotask(()=>{if(n!==this._version+1){this._pending=!1;return}this.notifyNow()})}notifyNow(){this._version++,this._listeners=this._listeners.filter(n=>{let t=n.deref();try{t?.onConfigurationChange?.()}catch(i){console.error("Listener error:",i)}return t!==void 0}),this._pending=!1}};var zd=class{_generation=0;_tracker=new Vd;get generation(){return this._generation}set generation(n){this._generation=n}reset(n){this._generation+=1,n.refreshNumericConstants(),n.resetCommonSymbols(),n.purgeCaches(),this._tracker.notifyNow()}listen(n){return this._tracker.listen(n)}};function L$(e){return!!(e===void 0||e==="Number"||e===!0||Array.isArray(e)&&e.includes("Number"))}function DA(e,n,t,i){let r=i?.canonical??!0,o=i?.metadata,s=t.normalize(),a=s.toLowerCase();if(a==="infinity"||a==="+infinity")return e.PositiveInfinity;if(a==="-infinity")return e.NegativeInfinity;if(e.strict&&!pn(s))return e.error(["invalid-symbol",Pt(s)],s);if(!r)return new Qr(e,s,{metadata:o});if(e._isShadowedParameter(s)){let f=e.lookupDefinition(s);if(!f||oe(f)&&f.value.isConstant){let p=e.context.lexicalScope;for(;p.noAutoDeclare&&p.parent;)p=p.parent;f=e._declareSymbolValue(s,{type:"unknown",inferred:!0},p)}return new Qr(e,s,{metadata:o,def:f})}let u=n[s];if(u)return u;let l=e.lookupDefinition(s);if(oe(l)&&l.value.holdUntil==="never")return l.value.value??e.Nothing;if(l)return new Qr(e,s,{metadata:o,def:l});let c=e.context.lexicalScope;for(;c.noAutoDeclare&&c.parent;)c=c.parent;return l=e._declareSymbolValue(s,{type:"unknown",inferred:!0},c),new Qr(e,s,{metadata:o,def:l})}function OA(e,n,t,i){let r=i?.metadata;if(!L$(i?.canonical)&&Di(t))return e._fn("Rational",[e.number(t[0]),e.number(t[1])],{...r,canonical:!1});let s=gm(e,t);if(r===void 0){if(typeof s=="number"){let a=s;if(a===1)return e.One;if(a===0)return e.Zero;if(a===-1)return e.NegativeOne;if(a===2)return e.Two;if(Number.isInteger(a)&&n[a]!==void 0)return n[a]??=new mn(e,s),n[a];if(Number.isNaN(a))return e.NaN;if(!Number.isFinite(a))return a<0?e.NegativeInfinity:e.PositiveInfinity}else if(s instanceof Pe){if(s.isZero)return e.Zero;if(s.isOne)return e.One;if(s.isNegativeOne)return e.NegativeOne;if(s.isNaN)return e.NaN;if(s.isNegativeInfinity)return e.NegativeInfinity;if(s.isPositiveInfinity)return e.PositiveInfinity}}return new mn(e,s,{metadata:r})}var Eu=class{_rules;_cachedLength=-1;constructor(n){this._rules=n}get rules(){return this._rules}set rules(n){this._rules=n,this._cachedLength=-1}hasMutatedSinceLastCache(){return this._cachedLength>=0&&this._rules.length!==this._cachedLength}markCached(){this._cachedLength=this._rules.length}};var Jd=class{_precision;_angularUnit;_tolerance;_bignumTolerance;_negBignumTolerance;constructor(n){let t=n?.precision??_g;t==="machine"&&(t=Math.floor(fi)),this._precision=t,x.precision=t,this._angularUnit=n?.angularUnit??"rad",this._tolerance=Us,this._bignumTolerance=new x(Us),this._negBignumTolerance=new x(-Us),this.setTolerance(n?.tolerance??"auto")}get precision(){return this._precision}setPrecision(n){let t=n;if(t==="machine"&&(t=fi),t==="auto"&&(t=_g),t===this._precision)return!1;if(typeof t!="number"||t<=0)throw Error('Expected "machine" or a positive number');return this._precision=Math.max(t,fi),x.precision=this._precision,this.setTolerance("auto"),!0}get angularUnit(){return this._angularUnit}setAngularUnit(n){if(n===this._angularUnit)return!1;if(typeof n!="string")throw Error("Expected a string");return this._angularUnit=n,!0}get tolerance(){return this._tolerance}setTolerance(n){let t=n;t==="auto"&&(t=Us),(!Number.isFinite(t)||t<0)&&(t=Math.pow(10,-this._precision+2)),this._tolerance=t,this._bignumTolerance=new x(t),this._negBignumTolerance=new x(-t)}get bignumTolerance(){return this._bignumTolerance}get negBignumTolerance(){return this._negBignumTolerance}get bignumNaN(){return x.NAN}get bignumZero(){return x.ZERO}get bignumOne(){return x.ONE}get bignumTwo(){return x.TWO}get bignumHalf(){return x.HALF}get bignumPi(){return x.PI}get bignumNegativeOne(){return x.NEGATIVE_ONE}bignum(n){if(n instanceof x)return n;try{return new x(n)}catch(t){t instanceof Error?console.error(t.message):console.error(String(t))}return x.NAN}};var Gd=class{_timeLimit=2e3;_iterationLimit=1024;_recursionLimit=256;_recursionDepth=0;_maxCollectionSize=1e4;_deadline=void 0;_isVerifying=!1;get timeLimit(){return this._timeLimit}set timeLimit(n){this._timeLimit=n<=0?Number.POSITIVE_INFINITY:n}get iterationLimit(){return this._iterationLimit}set iterationLimit(n){this._iterationLimit=n<=0?Number.POSITIVE_INFINITY:n}get recursionLimit(){return this._recursionLimit}set recursionLimit(n){this._recursionLimit=n<=0?Number.POSITIVE_INFINITY:n}get recursionDepth(){return this._recursionDepth}enterRecursion(){if(this._recursionDepth>=this._recursionLimit)throw new Le({cause:"recursion-depth-exceeded",message:"Recursion limit exceeded"});this._recursionDepth+=1}exitRecursion(){this._recursionDepth>0&&(this._recursionDepth-=1)}get maxCollectionSize(){return this._maxCollectionSize}set maxCollectionSize(n){this._maxCollectionSize=n<=0?Number.POSITIVE_INFINITY:n}get deadline(){return this._deadline}set deadline(n){this._deadline=n}get timeRemaining(){return this._deadline===void 0?Number.POSITIVE_INFINITY:this._deadline-Date.now()}get isVerifying(){return this._isVerifying}set isVerifying(n){this._isVerifying=n}shouldContinueExecution(){return this._deadline===void 0||this._deadline>=Date.now()}};function F$(e){if(typeof e!="string")return zC(e),e;let n=pd.find(t=>t.name===e);if(!n)throw new Error(`Unknown standard library: "${e}"`);return n}function LA(e){return e?md(e.map(F$)):[...dd()]}function FA(e,n){for(let t of n){let i=t.definitions;if(!i)continue;let r=Array.isArray(i)?i:[i];for(let o of r)vC(e,o)}}function Jc(e,n){let t=e[n];if(!t)throw new Error(`Common symbol "${n}" failed to initialize`);return t}var jd=class{constructor(n){this.engine=n}engine;initializeCommonNumbers(){return{Zero:new mn(this.engine,0),One:new mn(this.engine,1),Half:new mn(this.engine,{rational:[1,2]}),NegativeOne:new mn(this.engine,-1),Two:new mn(this.engine,2),NaN:new mn(this.engine,Number.NaN),PositiveInfinity:new mn(this.engine,Number.POSITIVE_INFINITY),NegativeInfinity:new mn(this.engine,Number.NEGATIVE_INFINITY),I:new mn(this.engine,{im:1}),ComplexInfinity:new mn(this.engine,{re:1/0,im:1/0})}}bootstrapLibraries(n){let t=LA(n);FA(this.engine,t)}initializeCommonSymbolBindings(n){return j3(this.engine,n),{True:Jc(n,"True"),False:Jc(n,"False"),Pi:Jc(n,"Pi"),E:Jc(n,"ExponentialE"),Nothing:Jc(n,"Nothing")}}};function $$(e){let n=[],t=e;for(;t;)t.types&&n.push(...Object.keys(t.types)),t=t.parent;return n}function B$(e,n){let t=e;for(;t;){if(t.types?.[n])return t.types[n];t=t.parent}}function $A(e){return{get names(){return $$(e.context.lexicalScope)},resolve(n){return B$(e.context.lexicalScope,n)},forward(n){let t={kind:"reference",name:n,alias:!1,def:void 0};return e.context.lexicalScope.types??={},e.context.lexicalScope.types[n]=t,t}}}function Ud(e,n,t){let i;typeof n=="string"?i=e.string(n):i=e.function("ErrorCode",n.map(s=>e.string(s)));let r;t&&wf(t)?r=e.function("LatexString",[e.string(fo(t))]):typeof t=="string"&&t.length>0&&(r=e.string(t));let o=[e.expr(i)];return r&&o.push(r),e.function("Error",o)}function BA(e,n,t,i){return t?Ud(e,["incompatible-type",be(n),t.toString()],i):Ud(e,["incompatible-type",be(n)],i)}var qx=null,Vx=null;function qA(e){Vx=e}function Ls(){if(!qx){if(!Vx)throw new Error("ComputeEngine factory not registered. Import from the main module.");qx=Vx()}return qx}function Fs(e,n){if(typeof e=="string"){let t=Ls();return t.parse(e,{strict:n?.strict??!1})??t.expr("Nothing")}return Sg(e)?e:Ls().expr(e)}function VA(e,n){return Ls().expr(e,n)}function zA(e,n){return Fs(e,n).simplify(n)}function JA(e,n){return Fs(e,n).evaluate()}function GA(e,n){return Fs(e,n).N()}function jA(e,n){Ls().declare(e,n)}function UA(e,n){Ls().assign(e,n)}function ZA(e,n){return we(Fs(e,n))}function HA(e,n,t){return Fs(e,t).solve(n)}function YA(e,n){return ji(Fs(e,n))}function WA(e,n){return Si(Fs(e,n))}var q$=/^(Sin|Cos|Tan|Cot|Sec|Csc)$/;function Zd(e){return q$.test(e.operator)?!0:d(e)?e.ops.some(Zd):!1}function jo(e,...n){return n.includes(e.operator)?!0:d(e)?e.ops.some(t=>jo(t,...n)):!1}function bn(e,n){let t=e.engine;if(d(e)&&e.ops.length>0){let i=e,r=i.ops.map(s=>bn(s,n));r.some((s,a)=>s!==i.ops[a])&&(e=t._fn(i.operator,r))}return n(e)??e}function zx(e,n){if(!d(e)||!d(n))return!1;let t=e.op1,i=n.op1;return t!==void 0&&i!==void 0&&t.isSame(i)}function V$(e){let n=e.engine,t=e.operator;if(!d(e))return;let i=e.op1;if(i){if(t==="Sec")return n.One.div(n._fn("Cos",[i]));if(t==="Csc")return n.One.div(n._fn("Sin",[i]))}}function ek(e){return bn(e,V$)}function z$(e){let n=e.engine,t=e.operator;if(!d(e))return;let i=e.op1;if(i){if(t==="Tan")return n._fn("Sin",[i]).div(n._fn("Cos",[i]));if(t==="Cot")return n._fn("Cos",[i]).div(n._fn("Sin",[i]))}}function nk(e){return bn(e,z$)}function J$(e){let n=e.engine;if(e.operator!=="Divide"||!d(e))return;let t=e.op1,i=e.op2;if(!(!t||!i)){if(t.operator==="Sin"&&i.operator==="Cos"&&zx(t,i))return d(t)?n._fn("Tan",[t.op1]):void 0;if(t.operator==="Cos"&&i.operator==="Sin"&&zx(t,i))return d(t)?n._fn("Cot",[t.op1]):void 0}}function tk(e){return bn(e,J$)}function G$(e){if(d(e,"Negate"))return e.op1;if(d(e,"Multiply")){let n=e.ops.findIndex(t=>t.isSame(-1));if(n>=0){let t=e.ops.filter((i,r)=>r!==n);return t.length===1?t[0]:e.engine._fn("Multiply",t)}}}function j$(e){let n=e.engine,t=e.operator;if(!d(e))return;let i=e.op1;if(!i)return;let r=G$(i);if(r){if(t==="Cos")return n._fn("Cos",[r]);if(t==="Sec")return n._fn("Sec",[r]);if(t==="Sin")return n._fn("Sin",[r]).neg();if(t==="Tan")return n._fn("Tan",[r]).neg();if(t==="Csc")return n._fn("Csc",[r]).neg();if(t==="Cot")return n._fn("Cot",[r]).neg()}}function ik(e){return bn(e,j$)}function U$(e){let n=e.engine;if(e.operator!=="Power"||!d(e))return;let t=e.op1,i=e.op2;if(!t||!i||t.operator!=="Sin"||!i.isSame(2)||!d(t))return;let r=t.op1;if(r)return n.One.sub(n._fn("Cos",[r]).pow(2))}function Jx(e){return bn(e,U$)}function Z$(e){let n=e.engine;if(e.operator!=="Power"||!d(e))return;let t=e.op1,i=e.op2;if(!t||!i||t.operator!=="Cos"||!i.isSame(2)||!d(t))return;let r=t.op1;if(r)return n.One.sub(n._fn("Sin",[r]).pow(2))}function rk(e){return bn(e,Z$)}function H$(e){let n=e.engine;if(e.operator!=="Power"||!d(e))return;let t=e.op1,i=e.op2;if(!t||!i||t.operator!=="Cos"||!i.isSame(2)||!d(t))return;let r=t.op1;if(r)return n.One.add(n._fn("Cos",[r.mul(2)])).div(2)}function ok(e){return bn(e,H$)}function Y$(e){let n=e.engine;if(d(e,"Divide")){let i=e.op1,r=e.op2;if(!i||!r||!r.isSame(2))return;if(d(i,"Add")&&i.ops.length===2)return QA(n,i.ops)}let t=i=>!!(i.re===.5&&i.im===0||i.isSame(n.Half));if(d(e,"Multiply")){let i=e.ops.findIndex(r=>t(r));if(i>=0){let r=e.ops.filter((o,s)=>s!==i);if(r.length===1&&r[0].operator==="Add"){let o=r[0];if(d(o)&&o.ops.length===2)return QA(n,o.ops)}}}if(d(e,"Add")&&e.ops.length===2){let i,r,o=!1,s=a=>a.re===-.5&&a.im===0;for(let a of e.ops){if(t(a)){i=a;continue}let u=a,l=!1;if(d(a,"Negate")&&(l=!0,u=a.op1),d(u,"Divide")&&u.op2?.isSame(2)){let c=u.op1;if(c?.operator==="Cos"){r=c,o=l;continue}}if(d(u,"Multiply")){let c=u.ops.findIndex(p=>t(p));if(c>=0){let p=u.ops.filter((m,g)=>g!==c);if(p.length===1&&p[0].operator==="Cos"){r=p[0],o=l;continue}}let f=u.ops.findIndex(p=>s(p));if(f>=0){let p=u.ops.filter((m,g)=>g!==f);if(p.length===1&&p[0].operator==="Cos"){r=p[0],o=!l;continue}}}}if(i&&r){if(!d(r))return;let a=r.op1;if(!a)return;let u;if(d(a,"Multiply")){let l=a.ops.findIndex(c=>c.isSame(2));if(l>=0){let c=a.ops.filter((f,p)=>p!==l);u=c.length===1?c[0]:n._fn("Multiply",c)}}return u?o?n._fn("Sin",[u]).pow(2):n._fn("Cos",[u]).pow(2):void 0}}}function QA(e,n){let t=-1,i=-1,r=!1;for(let u=0;u<n.length;u++)if(n[u].isSame(1))t=u;else if(n[u].operator==="Cos")i=u,r=!1;else if(n[u].operator==="Negate"){let l=n[u];d(l)&&l.op1?.operator==="Cos"&&(i=u,r=!0)}if(t<0||i<0)return;let o;if(r){let u=n[i];if(!d(u))return;o=u.op1}else o=n[i];if(!d(o))return;let s=o.op1;if(!s)return;let a;if(d(s,"Multiply")){let u=s.ops.findIndex(l=>l.isSame(2));if(u>=0){let l=s.ops.filter((c,f)=>f!==u);a=l.length===1?l[0]:e._fn("Multiply",l)}}if(a)return r?e._fn("Sin",[a]).pow(2):e._fn("Cos",[a]).pow(2)}function Gx(e){return bn(e,Y$)}function W$(e){let n=e.engine;if(e.operator!=="Multiply"||!d(e))return;let t=e.ops;if(!(t.length<2))for(let i=0;i<t.length;i++)for(let r=i+1;r<t.length;r++){let o=t[i],s=t[r];if(!d(o)||!d(s))continue;let a=o.op1,u=s.op1;if(!a||!u)continue;let l;if(o.operator==="Sin"&&s.operator==="Cos"?l=n._fn("Sin",[a.add(u)]).add(n._fn("Sin",[a.sub(u)])).div(2):o.operator==="Cos"&&s.operator==="Sin"?l=n._fn("Sin",[a.add(u)]).sub(n._fn("Sin",[a.sub(u)])).div(2):o.operator==="Cos"&&s.operator==="Cos"?l=n._fn("Cos",[a.add(u)]).add(n._fn("Cos",[a.sub(u)])).div(2):o.operator==="Sin"&&s.operator==="Sin"&&(l=n._fn("Cos",[a.sub(u)]).sub(n._fn("Cos",[a.add(u)])).div(2)),l){let c=t.filter((f,p)=>p!==i&&p!==r);return c.length===0?l:l.mul(c.length===1?c[0]:n._fn("Multiply",c))}}}function sk(e){return bn(e,W$)}function Q$(e){let n=e.engine;if(e.operator!=="Add"||!d(e))return;let t=e.ops;if(!(t.length<2))for(let i=0;i<t.length;i++)for(let r=i+1;r<t.length;r++){let o=t[i],s=t[r],a;if(o.operator==="Sin"&&s.operator==="Sin"){if(!d(o)||!d(s))continue;let u=o.op1,l=s.op1;if(u&&l){let c=u.add(l).div(2),f=u.sub(l).div(2);a=n._fn("Sin",[c]).mul(n._fn("Cos",[f])).mul(2)}}else if(o.operator==="Cos"&&s.operator==="Cos"){if(!d(o)||!d(s))continue;let u=o.op1,l=s.op1;if(u&&l){let c=u.add(l).div(2),f=u.sub(l).div(2);a=n._fn("Cos",[c]).mul(n._fn("Cos",[f])).mul(2)}}else if(o.operator==="Sin"&&s.operator==="Negate"){if(!d(o)||!d(s)||s.op1?.operator!=="Sin")continue;let u=s.op1;if(!d(u))continue;let l=o.op1,c=u.op1;if(l&&c){let f=l.add(c).div(2),p=l.sub(c).div(2);a=n._fn("Cos",[f]).mul(n._fn("Sin",[p])).mul(2)}}else if(o.operator==="Cos"&&s.operator==="Negate"){if(!d(o)||!d(s)||s.op1?.operator!=="Cos")continue;let u=s.op1;if(!d(u))continue;let l=o.op1,c=u.op1;if(l&&c){let f=l.add(c).div(2),p=l.sub(c).div(2);a=n._fn("Sin",[f]).mul(n._fn("Sin",[p])).mul(-2)}}if(a){let u=t.filter((l,c)=>c!==i&&c!==r);return u.length===0?a:a.add(u.length===1?u[0]:n._fn("Add",u))}}}function Hd(e){return bn(e,Q$)}function X$(e){let n=e.engine,t=e.operator;if(t!=="Sin"&&t!=="Cos"||!d(e))return;let i=e.op1;if(i){if(d(i,"Add")&&i.ops.length===2){let[r,o]=i.ops;return t==="Sin"?n._fn("Sin",[r]).mul(n._fn("Cos",[o])).add(n._fn("Cos",[r]).mul(n._fn("Sin",[o]))):n._fn("Cos",[r]).mul(n._fn("Cos",[o])).sub(n._fn("Sin",[r]).mul(n._fn("Sin",[o])))}if(d(i,"Subtract")){let r=i.op1,o=i.op2;return!r||!o?void 0:t==="Sin"?n._fn("Sin",[r]).mul(n._fn("Cos",[o])).sub(n._fn("Cos",[r]).mul(n._fn("Sin",[o]))):n._fn("Cos",[r]).mul(n._fn("Cos",[o])).add(n._fn("Sin",[r]).mul(n._fn("Sin",[o])))}}}function ak(e){return bn(e,X$)}function K$(e){let n=e.engine;if(e.operator!=="Add"||!d(e))return;let t=e.ops;if(!(t.length<2))for(let i=0;i<t.length;i++)for(let r=i+1;r<t.length;r++){let o=t[i],s=t[r],a=S=>{if(S.operator!=="Multiply"||!d(S))return null;let C=S.ops;if(C.length!==2)return null;let[w,A]=C;return w.operator==="Sin"&&A.operator==="Cos"?{sin:w,cos:A}:w.operator==="Cos"&&A.operator==="Sin"?{sin:A,cos:w}:null},u=S=>{if(S.operator!=="Multiply"||!d(S))return null;let C=S.ops;if(C.length!==2)return null;let[w,A]=C;return w.operator==="Cos"&&A.operator==="Cos"?{cos1:w,cos2:A}:null},l=S=>{if(S.operator!=="Multiply"||!d(S))return null;let C=S.ops;if(C.length!==2)return null;let[w,A]=C;return w.operator==="Sin"&&A.operator==="Sin"?{sin1:w,sin2:A}:null},c=S=>d(S)?S.op1:void 0,f=a(o),p=a(s),m=d(o,"Negate")&&o.op1?a(o.op1):null,g=d(s,"Negate")&&s.op1?a(s.op1):null;if(f&&p){let S=c(f.sin),C=c(f.cos),w=c(p.sin),A=c(p.cos);if(S&&C&&w&&A&&S.isSame(A)&&C.isSame(w)){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Sin",[S.add(C)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}if(f&&g){let S=c(f.sin),C=c(f.cos),w=c(g.sin),A=c(g.cos);if(S&&C&&w&&A&&S.isSame(A)&&C.isSame(w)){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Sin",[S.sub(C)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}if(m&&p){let S=c(m.sin),C=c(m.cos),w=c(p.sin),A=c(p.cos);if(S&&C&&w&&A&&w.isSame(C)&&A.isSame(S)){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Sin",[w.sub(A)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}let h=u(o),b=u(s),y=l(o),E=l(s),v=d(o,"Negate")&&o.op1?l(o.op1):null,_=d(s,"Negate")&&s.op1?l(s.op1):null;if(h&&_){let S=c(h.cos1),C=c(h.cos2),w=c(_.sin1),A=c(_.sin2);if(S&&C&&w&&A&&(S.isSame(w)&&C.isSame(A)||S.isSame(A)&&C.isSame(w))){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Cos",[S.add(C)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}if(v&&b){let S=c(b.cos1),C=c(b.cos2),w=c(v.sin1),A=c(v.sin2);if(S&&C&&w&&A&&(S.isSame(w)&&C.isSame(A)||S.isSame(A)&&C.isSame(w))){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Cos",[S.add(C)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}if(h&&E){let S=c(h.cos1),C=c(h.cos2),w=c(E.sin1),A=c(E.sin2);if(S&&C&&w&&A&&(S.isSame(w)&&C.isSame(A)||S.isSame(A)&&C.isSame(w))){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Cos",[S.sub(C)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}if(y&&b){let S=c(b.cos1),C=c(b.cos2),w=c(y.sin1),A=c(y.sin2);if(S&&C&&w&&A&&(S.isSame(w)&&C.isSame(A)||S.isSame(A)&&C.isSame(w))){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Cos",[S.sub(C)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}}}function Yd(e){return bn(e,K$)}function eB(e){let n=e.engine,t=e.operator;if(t!=="Sin"&&t!=="Cos"||!d(e))return;let i=e.op1;if(i&&d(i,"Multiply")){let r=i.ops,o=r.findIndex(s=>s.isSame(2));if(o>=0){let s=r.filter((u,l)=>l!==o),a=s.length===1?s[0]:n._fn("Multiply",s);return t==="Sin"?n._fn("Sin",[a]).mul(n._fn("Cos",[a])).mul(2):n._fn("Cos",[a]).pow(2).mul(2).sub(n.One)}}}function jx(e){return bn(e,eB)}function nB(e){let n=e.engine;if(d(e,"Multiply")){let t=e.ops,i=t.findIndex(r=>r.isSame(2));if(i>=0){let r=t.filter((a,u)=>u!==i),o,s;for(let a of r)a.operator==="Sin"&&!o?o=a:a.operator==="Cos"&&!s&&(s=a);if(o&&s&&zx(o,s)){if(!d(o))return;let a=r.filter(l=>l!==o&&l!==s),u=n._fn("Sin",[o.op1.mul(2)]);return a.length===0?u:u.mul(a.length===1?a[0]:n._fn("Multiply",a))}}}if(d(e,"Add")&&e.ops.length===2){let[t,i]=e.ops;if(d(t,"Power")&&t.op1?.operator==="Cos"&&t.op2?.isSame(2)&&i.operator==="Negate"&&d(i)&&i.op1?.operator==="Power"&&d(i.op1)&&i.op1.op1?.operator==="Sin"&&i.op1.op2?.isSame(2)){let u=t.op1,l=i.op1;if(d(u)&&d(l)){let c=l.op1;if(d(c)){let f=u.op1,p=c.op1;if(f&&p&&f.isSame(p))return n._fn("Cos",[f.mul(2)])}}}let r=u=>{if(!d(u,"Multiply"))return;let l=u.ops.findIndex(p=>p.isSame(2));if(l<0)return;let c=u.ops.filter((p,m)=>m!==l);if(c.length!==1)return;let f=c[0];if(d(f,"Power")&&f.op1?.operator==="Cos"&&f.op2?.isSame(2)){let p=f.op1;if(d(p))return p.op1}},o=r(t);if(o&&(i.isSame(-1)||d(i,"Negate")&&i.op1?.isSame(1)))return n._fn("Cos",[o.mul(2)]);if(o=r(i),o&&(t.isSame(-1)||d(t,"Negate")&&t.op1?.isSame(1)))return n._fn("Cos",[o.mul(2)]);let s=u=>{if(!d(u,"Multiply"))return;let l=u.ops.findIndex(p=>p.isSame(2));if(l<0)return;let c=u.ops.filter((p,m)=>m!==l);if(c.length!==1)return;let f=c[0];if(d(f,"Power")&&f.op1?.operator==="Sin"&&f.op2?.isSame(2)){let p=f.op1;if(d(p))return p.op1}};if(t.isSame(1)&&d(i,"Negate")&&i.op1){let u=s(i.op1);if(u)return n._fn("Cos",[u.mul(2)])}if(i.isSame(1)&&d(t,"Negate")&&t.op1){let u=s(t.op1);if(u)return n._fn("Cos",[u.mul(2)])}let a=u=>{if(!d(u,"Multiply"))return;let l=u.ops.findIndex(p=>p.isSame(-2));if(l<0)return;let c=u.ops.filter((p,m)=>m!==l);if(c.length!==1)return;let f=c[0];if(d(f,"Power")&&f.op1?.operator==="Sin"&&f.op2?.isSame(2)){let p=f.op1;if(d(p))return p.op1}};if(t.isSame(1)){let u=a(i);if(u)return n._fn("Cos",[u.mul(2)])}if(i.isSame(1)){let u=a(t);if(u)return n._fn("Cos",[u.mul(2)])}}}function uk(e){return bn(e,nB)}function tB(e){let n=e.engine;if(e.operator!=="Tan"||!d(e))return;let t=e.op1;if(t){if(d(t,"Add")&&t.ops.length===2){let[i,r]=t.ops,o=n._fn("Tan",[i]),s=n._fn("Tan",[r]);return o.add(s).div(n.One.sub(o.mul(s)))}if(d(t,"Subtract")){let i=t.op1,r=t.op2;if(!i||!r)return;let o=n._fn("Tan",[i]),s=n._fn("Tan",[r]);return o.sub(s).div(n.One.add(o.mul(s)))}}}function lk(e){return bn(e,tB)}var iB=[{value:0,angle:[0,1]},{value:1/Math.sqrt(3),angle:[1,6]},{value:1,angle:[1,4]},{value:Math.sqrt(3),angle:[1,3]},{value:2-Math.sqrt(3),angle:[1,12]},{value:2+Math.sqrt(3),angle:[5,12]}];function rB(e,n=1e-10){for(let t of iB)if(Math.abs(t.value-e)<n)return t.angle}function oB(e){if(e.operator!=="Multiply"||!d(e))return;let n=e.ops;if(n.length<2)return;let t=[],i=1;for(let r of n)if(d(r,"Tan")&&r.op1)t.push(r.op1);else if(d(r,"Negate")&&r.op1?.operator==="Sqrt"){let o=r.op1;if(d(o)){let s=o.op1;if(N(s)&&typeof s.re=="number")i*=-Math.sqrt(s.re);else return}else return}else if(d(r,"Sqrt")){let o=r.op1;if(o&&N(o)&&typeof o.re=="number")i*=Math.sqrt(o.re);else return}else if(N(r)&&typeof r.re=="number")i*=r.re;else return;if(t.length===2)return[i,t[0],t[1]]}function XA(e){if(d(e,"Multiply")){let n=!1,t;for(let i of e.ops)if(I(i,"Pi"))n=!0;else if(N(i)&&typeof i.re=="number"){let r=i.re;for(let o=1;o<=36;o++){let s=Math.round(r*o);if(Math.abs(s/o-r)<1e-10){t=[s,o];break}}}if(n&&t)return t}if(I(e,"Pi"))return[1,1]}function sB(e){let n=e.engine;if(e.operator!=="Add"||!d(e))return;let t=e.ops;if(t.length!==3)return;let i=[],r;for(let E=0;E<t.length;E++){let v=t[E];if(d(v,"Tan")&&v.op1)i.push({arg:v.op1,index:E});else{let _=oB(v);_&&(r={coef:_[0],arg1:_[1],arg2:_[2],index:E})}}if(i.length!==2||!r)return;let[o,s]=i,a=o.arg.isSame(r.arg1)||o.arg.isSame(r.arg2),u=s.arg.isSame(r.arg1)||s.arg.isSame(r.arg2),l=o.arg.isSame(r.arg2)||o.arg.isSame(r.arg1),c=s.arg.isSame(r.arg2)||s.arg.isSame(r.arg1);if(!(a&&c||u&&l))return;let f=-r.coef;if(f<=0)return;let p=rB(f);if(!p)return;let m=XA(o.arg),g=XA(s.arg);if(!m||!g)return;let h=KA(KA(m[1],g[1]),p[1]);if(m[0]*(h/m[1])+g[0]*(h/g[1])+p[0]*(h/p[1])!==h)return;let y=n._fn("Multiply",[n.number([p[0],p[1]]),n.symbol("Pi")]);return n._fn("Tan",[y]).neg()}function KA(e,n){return Math.abs(e*n)/aB(e,n)}function aB(e,n){for(e=Math.abs(e),n=Math.abs(n);n;){let t=n;n=e%n,e=t}return e}function ck(e){return bn(e,sB)}function uB(e){let n=e.engine;if(e.operator!=="Multiply"||!d(e))return;let t=e.ops;if(!(t.length<2))for(let i=0;i<t.length;i++)for(let r=i+1;r<t.length;r++){let o=t[i],s=t[r];if(!d(o)||!d(s))continue;let a=o.op1,u=s.op1;if(!(!a||!u)){if(o.operator==="Tan"&&s.operator==="Tan"){let l=o,c=s,f=n._fn("Cot",[a.add(u)]),p=n.One.sub(l.add(c).mul(f)),m=t.filter((g,h)=>h!==i&&h!==r);return m.length===0?p:p.mul(m.length===1?m[0]:n._fn("Multiply",m))}if(o.operator==="Cot"&&s.operator==="Cot"){let l=o,c=s,f=n._fn("Cot",[a.add(u)]),p=n.One.add(l.add(c).mul(f)),m=t.filter((g,h)=>h!==i&&h!==r);return m.length===0?p:p.mul(m.length===1?m[0]:n._fn("Multiply",m))}}}}function fk(e){return bn(e,uB)}function lB(e){let n=e.engine;if(e.operator!=="Power"||!d(e))return;let t=e.op1,i=e.op2;if(!t||!i||!i.isSame(2)||!d(t))return;let r=t.op1;if(r){if(t.operator==="Tan")return n._fn("Sec",[r]).pow(2).sub(n.One);if(t.operator==="Cot")return n._fn("Csc",[r]).pow(2).sub(n.One);if(t.operator==="Sec")return n.One.add(n._fn("Tan",[r]).pow(2));if(t.operator==="Csc")return n.One.add(n._fn("Cot",[r]).pow(2))}}function pk(e){return bn(e,lB)}function cB(e){let n=e.engine;if(e.operator!=="Add"||!d(e))return;let t=e.ops;if(t.length!==2)return;let i=p=>{let m=!1,g=p;if(d(p,"Negate")&&(m=!0,g=p.op1),!d(g)||g.operator!=="Power"||!g.op2?.isSame(2))return null;let h=g.op1;if(!d(h)||!h.op1)return null;let b=h.operator;return["Tan","Cot","Sec","Csc"].includes(b)?{func:b,arg:h.op1,neg:m}:null},r=i(t[0]),o=i(t[1]);if(r&&o&&r.arg.isSame(o.arg)){if(r.func==="Cot"&&!r.neg&&o.func==="Csc"&&o.neg||r.func==="Csc"&&r.neg&&o.func==="Cot"&&!o.neg)return n.number(-1);if(r.func==="Csc"&&!r.neg&&o.func==="Cot"&&o.neg||r.func==="Cot"&&r.neg&&o.func==="Csc"&&!o.neg)return n.One;if(r.func==="Tan"&&!r.neg&&o.func==="Sec"&&o.neg||r.func==="Sec"&&r.neg&&o.func==="Tan"&&!o.neg)return n.number(-1);if(r.func==="Sec"&&!r.neg&&o.func==="Tan"&&o.neg||r.func==="Tan"&&r.neg&&o.func==="Sec"&&!o.neg)return n.One}let s=-1,a=-1,u=!1;for(let p=0;p<t.length;p++){let m=t[p];m.isSame(1)?(s=p,u=!1):m.isSame(-1)||d(m,"Negate")&&m.op1?.isSame(1)?(s=p,u=!0):d(m,"Power")&&m.op2?.isSame(2)&&(a=p)}if(s<0||a<0)return;let l=t[a];if(!d(l))return;let c=l.op1;if(!c||!d(c))return;let f=c.op1;if(f){if(c.operator==="Sec"&&u)return n._fn("Tan",[f]).pow(2);if(c.operator==="Csc"&&u)return n._fn("Cot",[f]).pow(2);if(c.operator==="Tan"&&!u)return n._fn("Sec",[f]).pow(2);if(c.operator==="Cot"&&!u)return n._fn("Csc",[f]).pow(2)}}function Ux(e){return bn(e,cB)}function fB(e){let n=e.engine;if(!d(e,"Multiply"))return[1,n.One,e];for(let t=0;t<e.ops.length;t++){let i=e.ops[t],r;if(N(i)&&typeof i.re=="number"&&i.im===0&&(r=i.re),r!==void 0){let o=e.ops.filter((a,u)=>u!==t),s=o.length===1?o[0]:n._fn("Multiply",o);return[r,i,s]}}return[1,n.One,e]}function pB(e){let n=e.engine;if(e.operator!=="Multiply"||!d(e))return;let t=e.ops;if(t.length<2)return;let i=[],r=[];for(let w of t)if(d(w,"Cos")&&w.op1){let A=fB(w.op1);A?i.push({arg:A[2],numericMult:A[0],symbolicCoeff:A[1]}):i.push({arg:w.op1,numericMult:1,symbolicCoeff:n.One})}else r.push(w);if(i.length<2)return;let o=i[0].arg,s=i.filter(w=>w.arg.isSame(o)),a=i.filter(w=>!w.arg.isSame(o));if(s.length<2)return;s.sort((w,A)=>w.numericMult-A.numericMult);let u=[],l=[],c=[...s],f=c[0].numericMult;if(f>0){u.push(c[0]);let w=new Set([0]),A=f*2;for(;;){let k=c.findIndex((D,$)=>!w.has($)&&Math.abs(D.numericMult-A)<1e-10);if(k===-1)break;u.push(c[k]),w.add(k),A*=2}l=c.filter((k,D)=>!w.has(D))}if(u.length<2)return;let p=u[0].numericMult,m=[...r];for(let w of l){let A=w.symbolicCoeff.isSame(n.One)?w.arg:n._fn("Multiply",[w.symbolicCoeff,w.arg]);m.push(n._fn("Cos",[A]))}for(let w of a){let A=w.symbolicCoeff.isSame(n.One)?w.arg:n._fn("Multiply",[w.symbolicCoeff,w.arg]);m.push(n._fn("Cos",[A]))}let g=u.length,h=u[0].symbolicCoeff,b=Math.pow(2,g);if(I(o,"Pi")){let w=1/(b+1);if(Math.abs(p-w)<1e-10){let A=n.number([1,b]);return m.length===0?A:A.mul(m.length===1?m[0]:n._fn("Multiply",m))}}let y=h.mul(b),E=h.isSame(n.One)?o:n._fn("Multiply",[h,o]),v=n._fn("Multiply",[y,o]),_=n._fn("Sin",[v]),S=n._fn("Sin",[E]),C=_.div(n.number(b).mul(S));return m.length===0?C:C.mul(m.length===1?m[0]:n._fn("Multiply",m))}function mk(e){return bn(e,pB)}function mB(e){if(d(e,"Power")&&e.op2?.isSame(2)){let n=e.op1;if(d(n,"Sin")&&n.op1)return{func:"Sin",arg:n.op1,coef:1};if(d(n,"Cos")&&n.op1)return{func:"Cos",arg:n.op1,coef:1}}if(d(e,"Multiply")){let n=1,t;for(let i of e.ops)if(d(i,"Power")&&i.op2?.isSame(2)){let r=i.op1;(r?.operator==="Sin"||r?.operator==="Cos")&&(t=i)}else typeof i.re=="number"&&i.im===0&&(n*=i.re);if(d(t)){let i=t.op1;if(d(i,"Sin")&&i.op1)return{func:"Sin",arg:i.op1,coef:n};if(d(i,"Cos")&&i.op1)return{func:"Cos",arg:i.op1,coef:n}}}return null}function dB(e){let n=e.engine;if(e.operator!=="Add"||!d(e))return;let t=e.ops;if(t.length<2)return;let i=[],r=[],o=[];for(let s=0;s<t.length;s++){let a=t[s],u=mB(a);u?i.push({...u,index:s}):typeof a.re=="number"&&a.im===0&&N(a)?o.push({value:a.re,index:s}):r.push({expr:a,index:s})}for(let s=0;s<i.length;s++)for(let a=s+1;a<i.length;a++){let u=i[s],l=i[a];if(u.arg.isSame(l.arg)&&(u.func==="Sin"&&l.func==="Cos"||u.func==="Cos"&&l.func==="Sin")&&Math.abs(u.coef-l.coef)<1e-10){let c=u.coef,f=new Set([u.index,l.index]),p=t.filter((m,g)=>!f.has(g));return p.length===0?n.number(c):c===1?n._fn("Add",[n.One,...p]):n._fn("Add",[n.number(c),...p])}}for(let s of i)if(s.coef<0){let a=Math.abs(s.coef);for(let u of o)if(Math.abs(u.value-a)<1e-10){let l=new Set([s.index,u.index]),c=t.filter((m,g)=>!l.has(g)),f=s.func==="Sin"?"Cos":"Sin",p=n._fn(f,[s.arg]).pow(2).mul(a);return c.length===0?p:n._fn("Add",[p,...c])}}}function dk(e){return bn(e,dB)}var gB=new Set(["Sin","Cos","Tan","Cot","Sec","Csc"]);function Zx(e){let n=0;if(gB.has(e.operator)&&(n=1),d(e))for(let t of e.ops)n+=Zx(t);return n}function Hx(e){if(I(e)||N(e))return 1;let n=1;if(d(e))for(let t of e.ops)n+=Hx(t);return n}function gk(e){let n=Zx(e),t=Hx(e);return n*1e3+t}var hk=gk;function Yx(e,n){if(e.length===0)throw new Error("bestOf called with empty array");if(e.length===1)return e[0];let t=e[0],i=n(t);for(let r=1;r<e.length;r++){let o=n(e[r]);o<i&&(t=e[r],i=o)}return t}function Gc(e,n){let t=n(e);return t.isSame(e)?null:t}function bk(e,n){let t=Gc(e,Jx),i=Gc(e,rk),r=[e];return t&&r.push(t),i&&r.push(i),Yx(r,n)}function hB(e,n){return bk(e,n)}function bB(e,n){let t=Gc(e,sk),i=[e];if(t){i.push(t);let r=Gc(t,Yd);r&&i.push(r)}return Yx(i,n)}function yB(e,n){let t=Gc(e,Yd),i=[e];return t&&i.push(t),Yx(i,n)}function xB(e,n){let t=lk(e);return t=fk(t),t}function vB(e,n){let t=e;return t=ak(t),t=jx(t),t=Jx(t),t=ok(t),t=jx(t),t=bB(t,n),t=bk(t,n),t=Hd(t),t=hB(t,n),t=Hd(t),t=yB(t,n),t}function yk(e,n){if(!Zd(e))return;let t=n?.measure??hk,i=n?.maxIterations??100,r=e,o=0,s=e,a=t(e),u=_=>{let S=t(_);S<a&&(s=_,a=S)};r=ik(r),u(r);let l=Ux(r);u(l);let c=pk(r);u(c),r=s;let f=Gx(r);if(u(f),r=s,jo(r,"Sec","Csc")&&(r=ek(r),s=r,a=t(r)),jo(r,"Tan","Cot")){let _=xB(r,t);u(_),r=_}if(jo(r,"Tan","Cot")&&(r=nk(r),u(r)),jo(r,"Sin","Cos")){let _=Hd(r);u(_),r=s}if(jo(r,"Sin","Cos")){let _=t(r);for(;o<i;){o++;let S=vB(r,t),C=t(S);if(u(S),C>=_)break;r=S,_=C}}let p=tk(s);u(p);let m=uk(s);u(m);let g=mk(s);u(g);let h=Gx(s);u(h);let b=Ux(s);u(b);let y=Yd(s);u(y);let E=dk(s);u(E);let v=ck(s);if(u(v),s.operator==="Add"||s.operator==="Multiply"){let _=e.engine.expr(s.json);u(_)}if(!s.isSame(e))return{value:s,because:"fu"}}function Wx(e,n){if(Array.isArray(e)){if(e[0]==="InvisibleOperator")for(let t=1;t+1<e.length;t++){let i=e[t],r=e[t+1];typeof i=="string"&&Array.isArray(r)&&r[0]==="Delimiter"&&n.add(i)}for(let t of e)Wx(t,n);return}e!==null&&typeof e=="object"&&"fn"in e&&Array.isArray(e.fn)&&Wx(e.fn,n)}var Wd=class e{static _latexSyntaxFactory=null;True;False;Pi;E;Nothing;Zero;One;Half;NegativeOne;Two;I;NaN;PositiveInfinity;NegativeInfinity;ComplexInfinity;_numericConfiguration;_cacheStore=new Ed;_runtimeState=new Gd;_configurationLifecycle=new zd;_cost;_integrationProvider;_simplificationRules=new Eu([...s3]);_solveRules=new Eu([...EI]);_harmonizationRules=new Eu([...II]);_compilationTargets=new qd;_fuAlgorithm=yk;_commonSymbols={Pi:null,True:null,False:null,All:null,Nothing:null,None:null,Undefined:null,ImaginaryUnit:null,ExponentialE:null};_commonNumbers={"-5":null,"-4":null,"-3":null,"-2":null,2:null,3:null,4:null,5:null,6:null,7:null,8:null,9:null,10:null,11:null,12:null,36:null};_evalContextStack=[];get context(){return this._evalContextStack[this._evalContextStack.length-1]}get contextStack(){return[...this._evalContextStack]}set contextStack(n){this._evalContextStack=[...n]}__typeResolver;get _typeResolver(){return this.__typeResolver??=$A(this),this.__typeResolver}declareType(n,t,i){d3(this,n,t,i)}get trace(){return this._evalContextStack.map(n=>n.name).filter(n=>n!==void 0).reverse()}get _generation(){return this._configurationLifecycle.generation}set _generation(n){this._configurationLifecycle.generation=n}strict;static getStandardLibrary(n){return dd(n)}constructor(n){if(n!==void 0&&typeof n!="object")throw Error("Unexpected argument");this.strict=!0,this._numericConfiguration=new Jd({precision:n?.precision,tolerance:n?.tolerance??"auto",angularUnit:"rad"});let t=new jd(this),i=t.initializeCommonNumbers();this.Zero=i.Zero,this.One=i.One,this.Half=i.Half,this.NegativeOne=i.NegativeOne,this.Two=i.Two,this.NaN=i.NaN,this.PositiveInfinity=i.PositiveInfinity,this.NegativeInfinity=i.NegativeInfinity,this.I=i.I,this.ComplexInfinity=i.ComplexInfinity,this._reset(),this.pushScope(void 0,"system"),this.declareType("limits","expression<Limits>"),this.declareType("distribution","expression<NormalDistribution> | expression<BinomialDistribution> | expression<PoissonDistribution> | expression<UniformDistribution> | expression<ExponentialDistribution>",{alias:!0}),t.bootstrapLibraries(n?.libraries);let r=t.initializeCommonSymbolBindings(this._commonSymbols);this.True=r.True,this.False=r.False,this.Pi=r.Pi,this.E=r.E,this.Nothing=r.Nothing,this.pushScope(void 0,"global"),this._compilationTargets.registerDefaults(),n?.latexSyntax&&(this._latexSyntax=n.latexSyntax),n?.latexOptions&&(this._latexOptions={...n.latexOptions}),Lv(this)}toJSON(){return"[ComputeEngine]"}[Symbol.toStringTag]="ComputeEngine";_reset(){this._configurationLifecycle.reset({refreshNumericConstants:()=>{},resetCommonSymbols:()=>U3(this._commonSymbols),purgeCaches:()=>this._cacheStore.purgeValues()})}listenToConfigurationChange(n){return this._configurationLifecycle.listen(n)}_compile(n,t){return kc(n,t)}getCompilationTarget(n){return this._compilationTargets.get(n)}listCompilationTargets(){return this._compilationTargets.list()}registerCompilationTarget(n,t){this._compilationTargets.register(n,t)}unregisterCompilationTarget(n){this._compilationTargets.unregister(n)}get precision(){return this._numericConfiguration.precision}set precision(n){this._numericConfiguration.setPrecision(n)&&this._reset()}get angularUnit(){return this._numericConfiguration.angularUnit}set angularUnit(n){this._numericConfiguration.setAngularUnit(n)&&this._reset()}get timeLimit(){return this._runtimeState.timeLimit}set timeLimit(n){this._runtimeState.timeLimit=n}get deadline(){return this._runtimeState.deadline}set deadline(n){this._runtimeState.deadline=n}get _deadline(){return this._runtimeState.deadline}set _deadline(n){this._runtimeState.deadline=n}get _timeRemaining(){return this._runtimeState.timeRemaining}get iterationLimit(){return this._runtimeState.iterationLimit}set iterationLimit(n){this._runtimeState.iterationLimit=n}get recursionLimit(){return this._runtimeState.recursionLimit}set recursionLimit(n){this._runtimeState.recursionLimit=n}_enterRecursion(){this._runtimeState.enterRecursion()}_exitRecursion(){this._runtimeState.exitRecursion()}get maxCollectionSize(){return this._runtimeState.maxCollectionSize}set maxCollectionSize(n){this._runtimeState.maxCollectionSize=n}get _isVerifying(){return this._runtimeState.isVerifying}set _isVerifying(n){this._runtimeState.isVerifying=n}get isVerifying(){return this._runtimeState.isVerifying}get tolerance(){return this._numericConfiguration.tolerance}set tolerance(n){this._numericConfiguration.setTolerance(n)}chop(n){let t=this._numericConfiguration.tolerance;return typeof n=="number"?Math.abs(n)<=t?0:n:n instanceof x?n.isPositive()&&n.lte(this._numericConfiguration.bignumTolerance)||n.isNegative()&&n.gte(this._numericConfiguration.negBignumTolerance)||n.isZero()?0:n:n instanceof L&&Math.abs(n.re)<=t&&Math.abs(n.im)<=t?0:n}bignum(n){return this._numericConfiguration.bignum(n)}complex(n,t){return n instanceof x&&(n=n.toNumber()),t instanceof x&&(t=t.toNumber()),new L(n,t)}_numericValue(n){if(n instanceof Pe)return n.asExact??n;let t=this._numericConfiguration.precision>fi?i=>new ps(i):i=>new Cr(i);if(typeof n=="number")return Number.isInteger(n)?new Ie(n,t):t(n);if(typeof n=="bigint")return new Ie(n,t);if(Di(n))return new Ie({rational:n},t);if(n instanceof x){if(n.isInteger()){let i=Ye(n.toString());if(i!==null)return new Ie(i,t)}return t(n)}if(n instanceof L)return n.im===0?this._numericValue(n.re):t({re:n.re,im:n.im});if("im"in n||"re"in n)return n.im!==void 0&&n.im!==0?t(n):n.re instanceof x&&n.re.isInteger()?new Ie({rational:[Ye(n.re.toString()),BigInt(1)]},t):typeof n.re=="number"&&Number.isInteger(n.re)?new Ie({rational:[n.re,1]},t):t(n);if("radical"in n||"rational"in n){if(n.radical!==void 0&&(!Number.isInteger(n.radical)||n.radical>=me))throw Error("Unexpected value for radical part:"+n.radical);return n.rational&&kn(n.rational)&&(!Number.isInteger(n.rational[0])||!Number.isInteger(n.rational[1]))?t(n):new Ie(n,t)}throw Error(`Unexpected value: ${typeof n=="object"?JSON.stringify(n):String(n)}`)}get costFunction(){return this._cost??EC}set costFunction(n){this._cost=typeof n=="function"?n:void 0}get simplificationRules(){return this._simplificationRules.rules}set simplificationRules(n){this._simplificationRules.rules=n,this._cacheStore.invalidate("standard-simplification-rules")}get solveRules(){return this._solveRules.rules}set solveRules(n){this._solveRules.rules=n,this._cacheStore.invalidate("univariate-roots-rules")}get harmonizationRules(){return this._harmonizationRules.rules}set harmonizationRules(n){this._harmonizationRules.rules=n,this._cacheStore.invalidate("harmonization-rules")}lookupDefinition(n){return l3(this,n)}normalizeIdentifier(n){if(!n)return"";if(pn(n))return n;this.pushScope();try{let t=this.parse(n);if(I(t))return t.symbol}finally{this.popScope()}return""}operatorInfo(n){let t=this.lookupDefinition(n);if(!t||!ye(t))return;let i=t.operator;return{kind:i.evaluate||i.collection?"function":"opaque",signature:i.signature}}symbolInfo(n){let t=this.lookupDefinition(n);if(!t||!oe(t))return;let i=t.value;return{kind:i.isConstant?"constant":"variable",type:i.type}}functionProperties(n){return ws(this,n)}_declareSymbolValue(n,t,i){return c3(this,n,t,i)}_declareSymbolOperator(n,t,i){return f3(this,n,t,i)}pushScope(n,t){b3(this,n,t)}popScope(){y3(this)}_pushEvalContext(n,t){Xy(this,n,t)}_popEvalContext(){Ky(this)}_inScope(n,t){return x3(this,n,t)}_printStack(n){v3(this,n)}_shadowedParameterStack=[];_pushShadowedParameters(n){this._shadowedParameterStack.push(new Set(n))}_popShadowedParameters(){this._shadowedParameterStack.pop()}_isShadowedParameter(n){let t=this._shadowedParameterStack;for(let i=t.length-1;i>=0;i--)if(t[i].has(n))return!0;return!1}_getSymbolValue(n){return p3(this,n)}_setSymbolValue(n,t){m3(this,n,t)}declare(n,t,i){return g3(this,n,t,i)}declareSequence(n,t){return O3(this,n,t)}getSequenceStatus(n){return L3(this,n)}getSequence(n){return F3(this,n)}listSequences(){return $3(this)}isSequence(n){return B3(this,n)}clearSequenceCache(n){q3(this,n)}getSequenceCache(n){return V3(this,n)}getSequenceTerms(n,t,i,r){return z3(this,n,t,i,r)}lookupOEIS(n,t){return J3(this,n,t)}checkSequenceOEIS(n,t,i){return G3(this,n,t,i)}assign(n,t){return h3(this,n,t)}_shouldContinueExecution(){return this._runtimeState.shouldContinueExecution()}_checkContinueExecution(){if(!this._shouldContinueExecution())throw new Error("timeout")}_cache(n,t,i){return this._cacheStore.getOrBuild(n,t,i)}expr(n,t){let{canonical:i,structural:r}=bd(t);return bt(this,n,{canonical:i,structural:r,scope:t?.scope})}box(n,t){return this.expr(n,t)}_latexSyntax;get latexSyntax(){return!this._latexSyntax&&e._latexSyntaxFactory&&(this._latexSyntax=e._latexSyntaxFactory()),this._latexSyntax}_requireLatexSyntax(){if(!this._latexSyntax&&e._latexSyntaxFactory&&(this._latexSyntax=e._latexSyntaxFactory()),!this._latexSyntax)throw new Error("LatexSyntax not available. Pass a LatexSyntax instance to the ComputeEngine constructor.");return this._latexSyntax}_latexOptions={};get latexOptions(){return this._latexOptions}set latexOptions(n){this._latexOptions={...n}}parse(n,t){if(n==null)return null;if(typeof n!="string")throw Error("ce.parse(): expected a LaTeX string");let i=this._requireLatexSyntax(),{form:r,canonical:o,structural:s,...a}=t??{},u=i.parse(n,{getSymbolType:l=>{let c=this.lookupDefinition(l);return c?ye(c)?c.operator.signature:oe(c)?c.value.type:J.unknown:J.unknown},hasSubscriptEvaluate:l=>{let c=this.lookupDefinition(l);return!!(oe(c)&&c.value.subscriptEvaluate)},tolerance:this.tolerance,...this._latexOptions,...a});return u===null?null:bt(this,u,bd({form:r,canonical:o,structural:s}))}appliedNonFunctions(n){let t=this.latexSyntax;if(!t)return[];let i=t.parse(n,{getSymbolType:o=>{let s=this.lookupDefinition(o);return s?ye(s)?s.operator.signature:oe(s)?s.value.type:J.unknown:J.unknown},...this._latexOptions}),r=new Set;return i!==null&&Wx(i,r),Array.from(r).sort()}function(n,t,i){let{canonical:r,structural:o}=bd(i);return hd(this,n,t,{metadata:i?.metadata,canonical:r,structural:o,scope:i?.scope})}error(n,t){return Ud(this,n,t)}typeError(n,t,i){return BA(this,n,t,i)}hold(n){return this._fn("Hold",[this.expr(n,{form:"raw"})])}tuple(...n){return new on(this,"Tuple",n.map(t=>typeof t=="number"?this.number(t):t.canonical),{canonical:!0})}type(n){return n instanceof J?n:new J(n,this._typeResolver)}string(n,t){return new $o(this,n,t)}symbol(n,t){return DA(this,this._commonSymbols,n,t)}number(n,t){return OA(this,this._commonNumbers,n,t)}rules(n,t){return Wl(this,n,t)}getRuleSet(n){if(n??="standard-simplification",n==="standard-simplification"){this._simplificationRules.hasMutatedSinceLastCache()&&this._cacheStore.invalidate("standard-simplification-rules");let t=this._cache("standard-simplification-rules",()=>{let r=Wl(this,this._simplificationRules.rules,{canonical:!0}).rules.filter(o=>o.purpose!=="expand");return{rules:QS(r)}});return this._simplificationRules.markCached(),t}if(n==="solve-univariate"){this._solveRules.hasMutatedSinceLastCache()&&this._cacheStore.invalidate("univariate-roots-rules");let t=this._cache("univariate-roots-rules",()=>Wl(this,this._solveRules.rules));return this._solveRules.markCached(),t}if(n==="harmonization"){this._harmonizationRules.hasMutatedSinceLastCache()&&this._cacheStore.invalidate("harmonization-rules");let t=this._cache("harmonization-rules",()=>Wl(this,this._harmonizationRules.rules));return this._harmonizationRules.markCached(),t}}_fn(n,t,i){let r=i?.canonical??!0;return new on(this,n,t,{...i,canonical:r})}ask(n){return r1(this,n)}verify(n){return o1(this,n)}assume(n){return A3(this,n)}forget(n){s1(this,n)}};qA(()=>new Wd);var Vle="0.69.0";export{Le as CancellationError,Wd as ComputeEngine,GA as N,UA as assign,jA as declare,JA as evaluate,ZA as expand,YA as expandAll,VA as expr,WA as factor,Ls as getDefaultEngine,v5 as isCollection,io as isDictionary,Sg as isExpression,d as isFunction,E5 as isIndexedCollection,N as isNumber,z as isString,I as isSymbol,Zs as isTensor,Se as numericValue,zA as simplify,HA as solve,Vle as version};
|
|
1827
|
+
`)}};var qd=class{_targets=new Map;register(n,t){BC(n),VC(t),this._targets.set(n,t)}get(n){return this._targets.get(n)}list(){return[...this._targets.keys()]}unregister(n){this._targets.delete(n)}registerDefaults(){this.register("javascript",new Oc),this.register("glsl",new Os),this.register("wgsl",new wd),this.register("python",new Lc),this.register("interval-js",new zc),this.register("interval-glsl",new Bd)}};var Vd=class{_listeners=[];_registered=new WeakSet;_pending=!1;_version=0;listen(n){return this._registered.has(n)||(this._registered.add(n),this._listeners.push(new WeakRef(n))),()=>this._unsubscribe(n)}_unsubscribe(n){this._registered.has(n)&&(this._registered.delete(n),this._listeners=this._listeners.filter(t=>{let i=t.deref();return i!==void 0&&i!==n}))}notify(){if(this._pending)return;this._pending=!0;let n=this._version+1;queueMicrotask(()=>{if(n!==this._version+1){this._pending=!1;return}this.notifyNow()})}notifyNow(){this._version++,this._listeners=this._listeners.filter(n=>{let t=n.deref();try{t?.onConfigurationChange?.()}catch(i){console.error("Listener error:",i)}return t!==void 0}),this._pending=!1}};var zd=class{_generation=0;_tracker=new Vd;get generation(){return this._generation}set generation(n){this._generation=n}reset(n){this._generation+=1,n.refreshNumericConstants(),n.resetCommonSymbols(),n.purgeCaches(),this._tracker.notifyNow()}listen(n){return this._tracker.listen(n)}};function L$(e){return!!(e===void 0||e==="Number"||e===!0||Array.isArray(e)&&e.includes("Number"))}function DA(e,n,t,i){let r=i?.canonical??!0,o=i?.metadata,s=t.normalize(),a=s.toLowerCase();if(a==="infinity"||a==="+infinity")return e.PositiveInfinity;if(a==="-infinity")return e.NegativeInfinity;if(e.strict&&!pn(s))return e.error(["invalid-symbol",Pt(s)],s);if(!r)return new Qr(e,s,{metadata:o});if(e._isShadowedParameter(s)){let f=e.lookupDefinition(s);if(!f||oe(f)&&f.value.isConstant){let p=e.context.lexicalScope;for(;p.noAutoDeclare&&p.parent;)p=p.parent;f=e._declareSymbolValue(s,{type:"unknown",inferred:!0},p)}return new Qr(e,s,{metadata:o,def:f})}let u=n[s];if(u)return u;let l=e.lookupDefinition(s);if(oe(l)&&l.value.holdUntil==="never")return l.value.value??e.Nothing;if(l)return new Qr(e,s,{metadata:o,def:l});let c=e.context.lexicalScope;for(;c.noAutoDeclare&&c.parent;)c=c.parent;return l=e._declareSymbolValue(s,{type:"unknown",inferred:!0},c),new Qr(e,s,{metadata:o,def:l})}function OA(e,n,t,i){let r=i?.metadata;if(!L$(i?.canonical)&&Di(t))return e._fn("Rational",[e.number(t[0]),e.number(t[1])],{...r,canonical:!1});let s=gm(e,t);if(r===void 0){if(typeof s=="number"){let a=s;if(a===1)return e.One;if(a===0)return e.Zero;if(a===-1)return e.NegativeOne;if(a===2)return e.Two;if(Number.isInteger(a)&&n[a]!==void 0)return n[a]??=new mn(e,s),n[a];if(Number.isNaN(a))return e.NaN;if(!Number.isFinite(a))return a<0?e.NegativeInfinity:e.PositiveInfinity}else if(s instanceof Pe){if(s.isZero)return e.Zero;if(s.isOne)return e.One;if(s.isNegativeOne)return e.NegativeOne;if(s.isNaN)return e.NaN;if(s.isNegativeInfinity)return e.NegativeInfinity;if(s.isPositiveInfinity)return e.PositiveInfinity}}return new mn(e,s,{metadata:r})}var Eu=class{_rules;_cachedLength=-1;constructor(n){this._rules=n}get rules(){return this._rules}set rules(n){this._rules=n,this._cachedLength=-1}hasMutatedSinceLastCache(){return this._cachedLength>=0&&this._rules.length!==this._cachedLength}markCached(){this._cachedLength=this._rules.length}};var Jd=class{_precision;_angularUnit;_tolerance;_bignumTolerance;_negBignumTolerance;constructor(n){let t=n?.precision??_g;t==="machine"&&(t=Math.floor(fi)),this._precision=t,x.precision=t,this._angularUnit=n?.angularUnit??"rad",this._tolerance=Us,this._bignumTolerance=new x(Us),this._negBignumTolerance=new x(-Us),this.setTolerance(n?.tolerance??"auto")}get precision(){return this._precision}setPrecision(n){let t=n;if(t==="machine"&&(t=fi),t==="auto"&&(t=_g),t===this._precision)return!1;if(typeof t!="number"||t<=0)throw Error('Expected "machine" or a positive number');return this._precision=Math.max(t,fi),x.precision=this._precision,this.setTolerance("auto"),!0}get angularUnit(){return this._angularUnit}setAngularUnit(n){if(n===this._angularUnit)return!1;if(typeof n!="string")throw Error("Expected a string");return this._angularUnit=n,!0}get tolerance(){return this._tolerance}setTolerance(n){let t=n;t==="auto"&&(t=Us),(!Number.isFinite(t)||t<0)&&(t=Math.pow(10,-this._precision+2)),this._tolerance=t,this._bignumTolerance=new x(t),this._negBignumTolerance=new x(-t)}get bignumTolerance(){return this._bignumTolerance}get negBignumTolerance(){return this._negBignumTolerance}get bignumNaN(){return x.NAN}get bignumZero(){return x.ZERO}get bignumOne(){return x.ONE}get bignumTwo(){return x.TWO}get bignumHalf(){return x.HALF}get bignumPi(){return x.PI}get bignumNegativeOne(){return x.NEGATIVE_ONE}bignum(n){if(n instanceof x)return n;try{return new x(n)}catch(t){t instanceof Error?console.error(t.message):console.error(String(t))}return x.NAN}};var Gd=class{_timeLimit=2e3;_iterationLimit=1024;_recursionLimit=256;_recursionDepth=0;_maxCollectionSize=1e4;_deadline=void 0;_isVerifying=!1;get timeLimit(){return this._timeLimit}set timeLimit(n){this._timeLimit=n<=0?Number.POSITIVE_INFINITY:n}get iterationLimit(){return this._iterationLimit}set iterationLimit(n){this._iterationLimit=n<=0?Number.POSITIVE_INFINITY:n}get recursionLimit(){return this._recursionLimit}set recursionLimit(n){this._recursionLimit=n<=0?Number.POSITIVE_INFINITY:n}get recursionDepth(){return this._recursionDepth}enterRecursion(){if(this._recursionDepth>=this._recursionLimit)throw new Le({cause:"recursion-depth-exceeded",message:"Recursion limit exceeded"});this._recursionDepth+=1}exitRecursion(){this._recursionDepth>0&&(this._recursionDepth-=1)}get maxCollectionSize(){return this._maxCollectionSize}set maxCollectionSize(n){this._maxCollectionSize=n<=0?Number.POSITIVE_INFINITY:n}get deadline(){return this._deadline}set deadline(n){this._deadline=n}get timeRemaining(){return this._deadline===void 0?Number.POSITIVE_INFINITY:this._deadline-Date.now()}get isVerifying(){return this._isVerifying}set isVerifying(n){this._isVerifying=n}shouldContinueExecution(){return this._deadline===void 0||this._deadline>=Date.now()}};function F$(e){if(typeof e!="string")return zC(e),e;let n=pd.find(t=>t.name===e);if(!n)throw new Error(`Unknown standard library: "${e}"`);return n}function LA(e){return e?md(e.map(F$)):[...dd()]}function FA(e,n){for(let t of n){let i=t.definitions;if(!i)continue;let r=Array.isArray(i)?i:[i];for(let o of r)vC(e,o)}}function Jc(e,n){let t=e[n];if(!t)throw new Error(`Common symbol "${n}" failed to initialize`);return t}var jd=class{constructor(n){this.engine=n}engine;initializeCommonNumbers(){return{Zero:new mn(this.engine,0),One:new mn(this.engine,1),Half:new mn(this.engine,{rational:[1,2]}),NegativeOne:new mn(this.engine,-1),Two:new mn(this.engine,2),NaN:new mn(this.engine,Number.NaN),PositiveInfinity:new mn(this.engine,Number.POSITIVE_INFINITY),NegativeInfinity:new mn(this.engine,Number.NEGATIVE_INFINITY),I:new mn(this.engine,{im:1}),ComplexInfinity:new mn(this.engine,{re:1/0,im:1/0})}}bootstrapLibraries(n){let t=LA(n);FA(this.engine,t)}initializeCommonSymbolBindings(n){return j3(this.engine,n),{True:Jc(n,"True"),False:Jc(n,"False"),Pi:Jc(n,"Pi"),E:Jc(n,"ExponentialE"),Nothing:Jc(n,"Nothing")}}};function $$(e){let n=[],t=e;for(;t;)t.types&&n.push(...Object.keys(t.types)),t=t.parent;return n}function B$(e,n){let t=e;for(;t;){if(t.types?.[n])return t.types[n];t=t.parent}}function $A(e){return{get names(){return $$(e.context.lexicalScope)},resolve(n){return B$(e.context.lexicalScope,n)},forward(n){let t={kind:"reference",name:n,alias:!1,def:void 0};return e.context.lexicalScope.types??={},e.context.lexicalScope.types[n]=t,t}}}function Ud(e,n,t){let i;typeof n=="string"?i=e.string(n):i=e.function("ErrorCode",n.map(s=>e.string(s)));let r;t&&wf(t)?r=e.function("LatexString",[e.string(fo(t))]):typeof t=="string"&&t.length>0&&(r=e.string(t));let o=[e.expr(i)];return r&&o.push(r),e.function("Error",o)}function BA(e,n,t,i){return t?Ud(e,["incompatible-type",be(n),t.toString()],i):Ud(e,["incompatible-type",be(n)],i)}var qx=null,Vx=null;function qA(e){Vx=e}function Ls(){if(!qx){if(!Vx)throw new Error("ComputeEngine factory not registered. Import from the main module.");qx=Vx()}return qx}function Fs(e,n){if(typeof e=="string"){let t=Ls();return t.parse(e,{strict:n?.strict??!1})??t.expr("Nothing")}return Sg(e)?e:Ls().expr(e)}function VA(e,n){return Ls().expr(e,n)}function zA(e,n){return Fs(e,n).simplify(n)}function JA(e,n){return Fs(e,n).evaluate()}function GA(e,n){return Fs(e,n).N()}function jA(e,n){Ls().declare(e,n)}function UA(e,n){Ls().assign(e,n)}function ZA(e,n){return we(Fs(e,n))}function HA(e,n,t){return Fs(e,t).solve(n)}function YA(e,n){return ji(Fs(e,n))}function WA(e,n){return Si(Fs(e,n))}var q$=/^(Sin|Cos|Tan|Cot|Sec|Csc)$/;function Zd(e){return q$.test(e.operator)?!0:d(e)?e.ops.some(Zd):!1}function jo(e,...n){return n.includes(e.operator)?!0:d(e)?e.ops.some(t=>jo(t,...n)):!1}function bn(e,n){let t=e.engine;if(d(e)&&e.ops.length>0){let i=e,r=i.ops.map(s=>bn(s,n));r.some((s,a)=>s!==i.ops[a])&&(e=t._fn(i.operator,r))}return n(e)??e}function zx(e,n){if(!d(e)||!d(n))return!1;let t=e.op1,i=n.op1;return t!==void 0&&i!==void 0&&t.isSame(i)}function V$(e){let n=e.engine,t=e.operator;if(!d(e))return;let i=e.op1;if(i){if(t==="Sec")return n.One.div(n._fn("Cos",[i]));if(t==="Csc")return n.One.div(n._fn("Sin",[i]))}}function ek(e){return bn(e,V$)}function z$(e){let n=e.engine,t=e.operator;if(!d(e))return;let i=e.op1;if(i){if(t==="Tan")return n._fn("Sin",[i]).div(n._fn("Cos",[i]));if(t==="Cot")return n._fn("Cos",[i]).div(n._fn("Sin",[i]))}}function nk(e){return bn(e,z$)}function J$(e){let n=e.engine;if(e.operator!=="Divide"||!d(e))return;let t=e.op1,i=e.op2;if(!(!t||!i)){if(t.operator==="Sin"&&i.operator==="Cos"&&zx(t,i))return d(t)?n._fn("Tan",[t.op1]):void 0;if(t.operator==="Cos"&&i.operator==="Sin"&&zx(t,i))return d(t)?n._fn("Cot",[t.op1]):void 0}}function tk(e){return bn(e,J$)}function G$(e){if(d(e,"Negate"))return e.op1;if(d(e,"Multiply")){let n=e.ops.findIndex(t=>t.isSame(-1));if(n>=0){let t=e.ops.filter((i,r)=>r!==n);return t.length===1?t[0]:e.engine._fn("Multiply",t)}}}function j$(e){let n=e.engine,t=e.operator;if(!d(e))return;let i=e.op1;if(!i)return;let r=G$(i);if(r){if(t==="Cos")return n._fn("Cos",[r]);if(t==="Sec")return n._fn("Sec",[r]);if(t==="Sin")return n._fn("Sin",[r]).neg();if(t==="Tan")return n._fn("Tan",[r]).neg();if(t==="Csc")return n._fn("Csc",[r]).neg();if(t==="Cot")return n._fn("Cot",[r]).neg()}}function ik(e){return bn(e,j$)}function U$(e){let n=e.engine;if(e.operator!=="Power"||!d(e))return;let t=e.op1,i=e.op2;if(!t||!i||t.operator!=="Sin"||!i.isSame(2)||!d(t))return;let r=t.op1;if(r)return n.One.sub(n._fn("Cos",[r]).pow(2))}function Jx(e){return bn(e,U$)}function Z$(e){let n=e.engine;if(e.operator!=="Power"||!d(e))return;let t=e.op1,i=e.op2;if(!t||!i||t.operator!=="Cos"||!i.isSame(2)||!d(t))return;let r=t.op1;if(r)return n.One.sub(n._fn("Sin",[r]).pow(2))}function rk(e){return bn(e,Z$)}function H$(e){let n=e.engine;if(e.operator!=="Power"||!d(e))return;let t=e.op1,i=e.op2;if(!t||!i||t.operator!=="Cos"||!i.isSame(2)||!d(t))return;let r=t.op1;if(r)return n.One.add(n._fn("Cos",[r.mul(2)])).div(2)}function ok(e){return bn(e,H$)}function Y$(e){let n=e.engine;if(d(e,"Divide")){let i=e.op1,r=e.op2;if(!i||!r||!r.isSame(2))return;if(d(i,"Add")&&i.ops.length===2)return QA(n,i.ops)}let t=i=>!!(i.re===.5&&i.im===0||i.isSame(n.Half));if(d(e,"Multiply")){let i=e.ops.findIndex(r=>t(r));if(i>=0){let r=e.ops.filter((o,s)=>s!==i);if(r.length===1&&r[0].operator==="Add"){let o=r[0];if(d(o)&&o.ops.length===2)return QA(n,o.ops)}}}if(d(e,"Add")&&e.ops.length===2){let i,r,o=!1,s=a=>a.re===-.5&&a.im===0;for(let a of e.ops){if(t(a)){i=a;continue}let u=a,l=!1;if(d(a,"Negate")&&(l=!0,u=a.op1),d(u,"Divide")&&u.op2?.isSame(2)){let c=u.op1;if(c?.operator==="Cos"){r=c,o=l;continue}}if(d(u,"Multiply")){let c=u.ops.findIndex(p=>t(p));if(c>=0){let p=u.ops.filter((m,g)=>g!==c);if(p.length===1&&p[0].operator==="Cos"){r=p[0],o=l;continue}}let f=u.ops.findIndex(p=>s(p));if(f>=0){let p=u.ops.filter((m,g)=>g!==f);if(p.length===1&&p[0].operator==="Cos"){r=p[0],o=!l;continue}}}}if(i&&r){if(!d(r))return;let a=r.op1;if(!a)return;let u;if(d(a,"Multiply")){let l=a.ops.findIndex(c=>c.isSame(2));if(l>=0){let c=a.ops.filter((f,p)=>p!==l);u=c.length===1?c[0]:n._fn("Multiply",c)}}return u?o?n._fn("Sin",[u]).pow(2):n._fn("Cos",[u]).pow(2):void 0}}}function QA(e,n){let t=-1,i=-1,r=!1;for(let u=0;u<n.length;u++)if(n[u].isSame(1))t=u;else if(n[u].operator==="Cos")i=u,r=!1;else if(n[u].operator==="Negate"){let l=n[u];d(l)&&l.op1?.operator==="Cos"&&(i=u,r=!0)}if(t<0||i<0)return;let o;if(r){let u=n[i];if(!d(u))return;o=u.op1}else o=n[i];if(!d(o))return;let s=o.op1;if(!s)return;let a;if(d(s,"Multiply")){let u=s.ops.findIndex(l=>l.isSame(2));if(u>=0){let l=s.ops.filter((c,f)=>f!==u);a=l.length===1?l[0]:e._fn("Multiply",l)}}if(a)return r?e._fn("Sin",[a]).pow(2):e._fn("Cos",[a]).pow(2)}function Gx(e){return bn(e,Y$)}function W$(e){let n=e.engine;if(e.operator!=="Multiply"||!d(e))return;let t=e.ops;if(!(t.length<2))for(let i=0;i<t.length;i++)for(let r=i+1;r<t.length;r++){let o=t[i],s=t[r];if(!d(o)||!d(s))continue;let a=o.op1,u=s.op1;if(!a||!u)continue;let l;if(o.operator==="Sin"&&s.operator==="Cos"?l=n._fn("Sin",[a.add(u)]).add(n._fn("Sin",[a.sub(u)])).div(2):o.operator==="Cos"&&s.operator==="Sin"?l=n._fn("Sin",[a.add(u)]).sub(n._fn("Sin",[a.sub(u)])).div(2):o.operator==="Cos"&&s.operator==="Cos"?l=n._fn("Cos",[a.add(u)]).add(n._fn("Cos",[a.sub(u)])).div(2):o.operator==="Sin"&&s.operator==="Sin"&&(l=n._fn("Cos",[a.sub(u)]).sub(n._fn("Cos",[a.add(u)])).div(2)),l){let c=t.filter((f,p)=>p!==i&&p!==r);return c.length===0?l:l.mul(c.length===1?c[0]:n._fn("Multiply",c))}}}function sk(e){return bn(e,W$)}function Q$(e){let n=e.engine;if(e.operator!=="Add"||!d(e))return;let t=e.ops;if(!(t.length<2))for(let i=0;i<t.length;i++)for(let r=i+1;r<t.length;r++){let o=t[i],s=t[r],a;if(o.operator==="Sin"&&s.operator==="Sin"){if(!d(o)||!d(s))continue;let u=o.op1,l=s.op1;if(u&&l){let c=u.add(l).div(2),f=u.sub(l).div(2);a=n._fn("Sin",[c]).mul(n._fn("Cos",[f])).mul(2)}}else if(o.operator==="Cos"&&s.operator==="Cos"){if(!d(o)||!d(s))continue;let u=o.op1,l=s.op1;if(u&&l){let c=u.add(l).div(2),f=u.sub(l).div(2);a=n._fn("Cos",[c]).mul(n._fn("Cos",[f])).mul(2)}}else if(o.operator==="Sin"&&s.operator==="Negate"){if(!d(o)||!d(s)||s.op1?.operator!=="Sin")continue;let u=s.op1;if(!d(u))continue;let l=o.op1,c=u.op1;if(l&&c){let f=l.add(c).div(2),p=l.sub(c).div(2);a=n._fn("Cos",[f]).mul(n._fn("Sin",[p])).mul(2)}}else if(o.operator==="Cos"&&s.operator==="Negate"){if(!d(o)||!d(s)||s.op1?.operator!=="Cos")continue;let u=s.op1;if(!d(u))continue;let l=o.op1,c=u.op1;if(l&&c){let f=l.add(c).div(2),p=l.sub(c).div(2);a=n._fn("Sin",[f]).mul(n._fn("Sin",[p])).mul(-2)}}if(a){let u=t.filter((l,c)=>c!==i&&c!==r);return u.length===0?a:a.add(u.length===1?u[0]:n._fn("Add",u))}}}function Hd(e){return bn(e,Q$)}function X$(e){let n=e.engine,t=e.operator;if(t!=="Sin"&&t!=="Cos"||!d(e))return;let i=e.op1;if(i){if(d(i,"Add")&&i.ops.length===2){let[r,o]=i.ops;return t==="Sin"?n._fn("Sin",[r]).mul(n._fn("Cos",[o])).add(n._fn("Cos",[r]).mul(n._fn("Sin",[o]))):n._fn("Cos",[r]).mul(n._fn("Cos",[o])).sub(n._fn("Sin",[r]).mul(n._fn("Sin",[o])))}if(d(i,"Subtract")){let r=i.op1,o=i.op2;return!r||!o?void 0:t==="Sin"?n._fn("Sin",[r]).mul(n._fn("Cos",[o])).sub(n._fn("Cos",[r]).mul(n._fn("Sin",[o]))):n._fn("Cos",[r]).mul(n._fn("Cos",[o])).add(n._fn("Sin",[r]).mul(n._fn("Sin",[o])))}}}function ak(e){return bn(e,X$)}function K$(e){let n=e.engine;if(e.operator!=="Add"||!d(e))return;let t=e.ops;if(!(t.length<2))for(let i=0;i<t.length;i++)for(let r=i+1;r<t.length;r++){let o=t[i],s=t[r],a=S=>{if(S.operator!=="Multiply"||!d(S))return null;let C=S.ops;if(C.length!==2)return null;let[w,A]=C;return w.operator==="Sin"&&A.operator==="Cos"?{sin:w,cos:A}:w.operator==="Cos"&&A.operator==="Sin"?{sin:A,cos:w}:null},u=S=>{if(S.operator!=="Multiply"||!d(S))return null;let C=S.ops;if(C.length!==2)return null;let[w,A]=C;return w.operator==="Cos"&&A.operator==="Cos"?{cos1:w,cos2:A}:null},l=S=>{if(S.operator!=="Multiply"||!d(S))return null;let C=S.ops;if(C.length!==2)return null;let[w,A]=C;return w.operator==="Sin"&&A.operator==="Sin"?{sin1:w,sin2:A}:null},c=S=>d(S)?S.op1:void 0,f=a(o),p=a(s),m=d(o,"Negate")&&o.op1?a(o.op1):null,g=d(s,"Negate")&&s.op1?a(s.op1):null;if(f&&p){let S=c(f.sin),C=c(f.cos),w=c(p.sin),A=c(p.cos);if(S&&C&&w&&A&&S.isSame(A)&&C.isSame(w)){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Sin",[S.add(C)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}if(f&&g){let S=c(f.sin),C=c(f.cos),w=c(g.sin),A=c(g.cos);if(S&&C&&w&&A&&S.isSame(A)&&C.isSame(w)){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Sin",[S.sub(C)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}if(m&&p){let S=c(m.sin),C=c(m.cos),w=c(p.sin),A=c(p.cos);if(S&&C&&w&&A&&w.isSame(C)&&A.isSame(S)){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Sin",[w.sub(A)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}let h=u(o),b=u(s),y=l(o),E=l(s),v=d(o,"Negate")&&o.op1?l(o.op1):null,_=d(s,"Negate")&&s.op1?l(s.op1):null;if(h&&_){let S=c(h.cos1),C=c(h.cos2),w=c(_.sin1),A=c(_.sin2);if(S&&C&&w&&A&&(S.isSame(w)&&C.isSame(A)||S.isSame(A)&&C.isSame(w))){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Cos",[S.add(C)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}if(v&&b){let S=c(b.cos1),C=c(b.cos2),w=c(v.sin1),A=c(v.sin2);if(S&&C&&w&&A&&(S.isSame(w)&&C.isSame(A)||S.isSame(A)&&C.isSame(w))){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Cos",[S.add(C)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}if(h&&E){let S=c(h.cos1),C=c(h.cos2),w=c(E.sin1),A=c(E.sin2);if(S&&C&&w&&A&&(S.isSame(w)&&C.isSame(A)||S.isSame(A)&&C.isSame(w))){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Cos",[S.sub(C)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}if(y&&b){let S=c(b.cos1),C=c(b.cos2),w=c(y.sin1),A=c(y.sin2);if(S&&C&&w&&A&&(S.isSame(w)&&C.isSame(A)||S.isSame(A)&&C.isSame(w))){let k=t.filter(($,O)=>O!==i&&O!==r),D=n._fn("Cos",[S.sub(C)]);return k.length===0?D:D.add(k.length===1?k[0]:n._fn("Add",k))}}}}function Yd(e){return bn(e,K$)}function eB(e){let n=e.engine,t=e.operator;if(t!=="Sin"&&t!=="Cos"||!d(e))return;let i=e.op1;if(i&&d(i,"Multiply")){let r=i.ops,o=r.findIndex(s=>s.isSame(2));if(o>=0){let s=r.filter((u,l)=>l!==o),a=s.length===1?s[0]:n._fn("Multiply",s);return t==="Sin"?n._fn("Sin",[a]).mul(n._fn("Cos",[a])).mul(2):n._fn("Cos",[a]).pow(2).mul(2).sub(n.One)}}}function jx(e){return bn(e,eB)}function nB(e){let n=e.engine;if(d(e,"Multiply")){let t=e.ops,i=t.findIndex(r=>r.isSame(2));if(i>=0){let r=t.filter((a,u)=>u!==i),o,s;for(let a of r)a.operator==="Sin"&&!o?o=a:a.operator==="Cos"&&!s&&(s=a);if(o&&s&&zx(o,s)){if(!d(o))return;let a=r.filter(l=>l!==o&&l!==s),u=n._fn("Sin",[o.op1.mul(2)]);return a.length===0?u:u.mul(a.length===1?a[0]:n._fn("Multiply",a))}}}if(d(e,"Add")&&e.ops.length===2){let[t,i]=e.ops;if(d(t,"Power")&&t.op1?.operator==="Cos"&&t.op2?.isSame(2)&&i.operator==="Negate"&&d(i)&&i.op1?.operator==="Power"&&d(i.op1)&&i.op1.op1?.operator==="Sin"&&i.op1.op2?.isSame(2)){let u=t.op1,l=i.op1;if(d(u)&&d(l)){let c=l.op1;if(d(c)){let f=u.op1,p=c.op1;if(f&&p&&f.isSame(p))return n._fn("Cos",[f.mul(2)])}}}let r=u=>{if(!d(u,"Multiply"))return;let l=u.ops.findIndex(p=>p.isSame(2));if(l<0)return;let c=u.ops.filter((p,m)=>m!==l);if(c.length!==1)return;let f=c[0];if(d(f,"Power")&&f.op1?.operator==="Cos"&&f.op2?.isSame(2)){let p=f.op1;if(d(p))return p.op1}},o=r(t);if(o&&(i.isSame(-1)||d(i,"Negate")&&i.op1?.isSame(1)))return n._fn("Cos",[o.mul(2)]);if(o=r(i),o&&(t.isSame(-1)||d(t,"Negate")&&t.op1?.isSame(1)))return n._fn("Cos",[o.mul(2)]);let s=u=>{if(!d(u,"Multiply"))return;let l=u.ops.findIndex(p=>p.isSame(2));if(l<0)return;let c=u.ops.filter((p,m)=>m!==l);if(c.length!==1)return;let f=c[0];if(d(f,"Power")&&f.op1?.operator==="Sin"&&f.op2?.isSame(2)){let p=f.op1;if(d(p))return p.op1}};if(t.isSame(1)&&d(i,"Negate")&&i.op1){let u=s(i.op1);if(u)return n._fn("Cos",[u.mul(2)])}if(i.isSame(1)&&d(t,"Negate")&&t.op1){let u=s(t.op1);if(u)return n._fn("Cos",[u.mul(2)])}let a=u=>{if(!d(u,"Multiply"))return;let l=u.ops.findIndex(p=>p.isSame(-2));if(l<0)return;let c=u.ops.filter((p,m)=>m!==l);if(c.length!==1)return;let f=c[0];if(d(f,"Power")&&f.op1?.operator==="Sin"&&f.op2?.isSame(2)){let p=f.op1;if(d(p))return p.op1}};if(t.isSame(1)){let u=a(i);if(u)return n._fn("Cos",[u.mul(2)])}if(i.isSame(1)){let u=a(t);if(u)return n._fn("Cos",[u.mul(2)])}}}function uk(e){return bn(e,nB)}function tB(e){let n=e.engine;if(e.operator!=="Tan"||!d(e))return;let t=e.op1;if(t){if(d(t,"Add")&&t.ops.length===2){let[i,r]=t.ops,o=n._fn("Tan",[i]),s=n._fn("Tan",[r]);return o.add(s).div(n.One.sub(o.mul(s)))}if(d(t,"Subtract")){let i=t.op1,r=t.op2;if(!i||!r)return;let o=n._fn("Tan",[i]),s=n._fn("Tan",[r]);return o.sub(s).div(n.One.add(o.mul(s)))}}}function lk(e){return bn(e,tB)}var iB=[{value:0,angle:[0,1]},{value:1/Math.sqrt(3),angle:[1,6]},{value:1,angle:[1,4]},{value:Math.sqrt(3),angle:[1,3]},{value:2-Math.sqrt(3),angle:[1,12]},{value:2+Math.sqrt(3),angle:[5,12]}];function rB(e,n=1e-10){for(let t of iB)if(Math.abs(t.value-e)<n)return t.angle}function oB(e){if(e.operator!=="Multiply"||!d(e))return;let n=e.ops;if(n.length<2)return;let t=[],i=1;for(let r of n)if(d(r,"Tan")&&r.op1)t.push(r.op1);else if(d(r,"Negate")&&r.op1?.operator==="Sqrt"){let o=r.op1;if(d(o)){let s=o.op1;if(N(s)&&typeof s.re=="number")i*=-Math.sqrt(s.re);else return}else return}else if(d(r,"Sqrt")){let o=r.op1;if(o&&N(o)&&typeof o.re=="number")i*=Math.sqrt(o.re);else return}else if(N(r)&&typeof r.re=="number")i*=r.re;else return;if(t.length===2)return[i,t[0],t[1]]}function XA(e){if(d(e,"Multiply")){let n=!1,t;for(let i of e.ops)if(I(i,"Pi"))n=!0;else if(N(i)&&typeof i.re=="number"){let r=i.re;for(let o=1;o<=36;o++){let s=Math.round(r*o);if(Math.abs(s/o-r)<1e-10){t=[s,o];break}}}if(n&&t)return t}if(I(e,"Pi"))return[1,1]}function sB(e){let n=e.engine;if(e.operator!=="Add"||!d(e))return;let t=e.ops;if(t.length!==3)return;let i=[],r;for(let E=0;E<t.length;E++){let v=t[E];if(d(v,"Tan")&&v.op1)i.push({arg:v.op1,index:E});else{let _=oB(v);_&&(r={coef:_[0],arg1:_[1],arg2:_[2],index:E})}}if(i.length!==2||!r)return;let[o,s]=i,a=o.arg.isSame(r.arg1)||o.arg.isSame(r.arg2),u=s.arg.isSame(r.arg1)||s.arg.isSame(r.arg2),l=o.arg.isSame(r.arg2)||o.arg.isSame(r.arg1),c=s.arg.isSame(r.arg2)||s.arg.isSame(r.arg1);if(!(a&&c||u&&l))return;let f=-r.coef;if(f<=0)return;let p=rB(f);if(!p)return;let m=XA(o.arg),g=XA(s.arg);if(!m||!g)return;let h=KA(KA(m[1],g[1]),p[1]);if(m[0]*(h/m[1])+g[0]*(h/g[1])+p[0]*(h/p[1])!==h)return;let y=n._fn("Multiply",[n.number([p[0],p[1]]),n.symbol("Pi")]);return n._fn("Tan",[y]).neg()}function KA(e,n){return Math.abs(e*n)/aB(e,n)}function aB(e,n){for(e=Math.abs(e),n=Math.abs(n);n;){let t=n;n=e%n,e=t}return e}function ck(e){return bn(e,sB)}function uB(e){let n=e.engine;if(e.operator!=="Multiply"||!d(e))return;let t=e.ops;if(!(t.length<2))for(let i=0;i<t.length;i++)for(let r=i+1;r<t.length;r++){let o=t[i],s=t[r];if(!d(o)||!d(s))continue;let a=o.op1,u=s.op1;if(!(!a||!u)){if(o.operator==="Tan"&&s.operator==="Tan"){let l=o,c=s,f=n._fn("Cot",[a.add(u)]),p=n.One.sub(l.add(c).mul(f)),m=t.filter((g,h)=>h!==i&&h!==r);return m.length===0?p:p.mul(m.length===1?m[0]:n._fn("Multiply",m))}if(o.operator==="Cot"&&s.operator==="Cot"){let l=o,c=s,f=n._fn("Cot",[a.add(u)]),p=n.One.add(l.add(c).mul(f)),m=t.filter((g,h)=>h!==i&&h!==r);return m.length===0?p:p.mul(m.length===1?m[0]:n._fn("Multiply",m))}}}}function fk(e){return bn(e,uB)}function lB(e){let n=e.engine;if(e.operator!=="Power"||!d(e))return;let t=e.op1,i=e.op2;if(!t||!i||!i.isSame(2)||!d(t))return;let r=t.op1;if(r){if(t.operator==="Tan")return n._fn("Sec",[r]).pow(2).sub(n.One);if(t.operator==="Cot")return n._fn("Csc",[r]).pow(2).sub(n.One);if(t.operator==="Sec")return n.One.add(n._fn("Tan",[r]).pow(2));if(t.operator==="Csc")return n.One.add(n._fn("Cot",[r]).pow(2))}}function pk(e){return bn(e,lB)}function cB(e){let n=e.engine;if(e.operator!=="Add"||!d(e))return;let t=e.ops;if(t.length!==2)return;let i=p=>{let m=!1,g=p;if(d(p,"Negate")&&(m=!0,g=p.op1),!d(g)||g.operator!=="Power"||!g.op2?.isSame(2))return null;let h=g.op1;if(!d(h)||!h.op1)return null;let b=h.operator;return["Tan","Cot","Sec","Csc"].includes(b)?{func:b,arg:h.op1,neg:m}:null},r=i(t[0]),o=i(t[1]);if(r&&o&&r.arg.isSame(o.arg)){if(r.func==="Cot"&&!r.neg&&o.func==="Csc"&&o.neg||r.func==="Csc"&&r.neg&&o.func==="Cot"&&!o.neg)return n.number(-1);if(r.func==="Csc"&&!r.neg&&o.func==="Cot"&&o.neg||r.func==="Cot"&&r.neg&&o.func==="Csc"&&!o.neg)return n.One;if(r.func==="Tan"&&!r.neg&&o.func==="Sec"&&o.neg||r.func==="Sec"&&r.neg&&o.func==="Tan"&&!o.neg)return n.number(-1);if(r.func==="Sec"&&!r.neg&&o.func==="Tan"&&o.neg||r.func==="Tan"&&r.neg&&o.func==="Sec"&&!o.neg)return n.One}let s=-1,a=-1,u=!1;for(let p=0;p<t.length;p++){let m=t[p];m.isSame(1)?(s=p,u=!1):m.isSame(-1)||d(m,"Negate")&&m.op1?.isSame(1)?(s=p,u=!0):d(m,"Power")&&m.op2?.isSame(2)&&(a=p)}if(s<0||a<0)return;let l=t[a];if(!d(l))return;let c=l.op1;if(!c||!d(c))return;let f=c.op1;if(f){if(c.operator==="Sec"&&u)return n._fn("Tan",[f]).pow(2);if(c.operator==="Csc"&&u)return n._fn("Cot",[f]).pow(2);if(c.operator==="Tan"&&!u)return n._fn("Sec",[f]).pow(2);if(c.operator==="Cot"&&!u)return n._fn("Csc",[f]).pow(2)}}function Ux(e){return bn(e,cB)}function fB(e){let n=e.engine;if(!d(e,"Multiply"))return[1,n.One,e];for(let t=0;t<e.ops.length;t++){let i=e.ops[t],r;if(N(i)&&typeof i.re=="number"&&i.im===0&&(r=i.re),r!==void 0){let o=e.ops.filter((a,u)=>u!==t),s=o.length===1?o[0]:n._fn("Multiply",o);return[r,i,s]}}return[1,n.One,e]}function pB(e){let n=e.engine;if(e.operator!=="Multiply"||!d(e))return;let t=e.ops;if(t.length<2)return;let i=[],r=[];for(let w of t)if(d(w,"Cos")&&w.op1){let A=fB(w.op1);A?i.push({arg:A[2],numericMult:A[0],symbolicCoeff:A[1]}):i.push({arg:w.op1,numericMult:1,symbolicCoeff:n.One})}else r.push(w);if(i.length<2)return;let o=i[0].arg,s=i.filter(w=>w.arg.isSame(o)),a=i.filter(w=>!w.arg.isSame(o));if(s.length<2)return;s.sort((w,A)=>w.numericMult-A.numericMult);let u=[],l=[],c=[...s],f=c[0].numericMult;if(f>0){u.push(c[0]);let w=new Set([0]),A=f*2;for(;;){let k=c.findIndex((D,$)=>!w.has($)&&Math.abs(D.numericMult-A)<1e-10);if(k===-1)break;u.push(c[k]),w.add(k),A*=2}l=c.filter((k,D)=>!w.has(D))}if(u.length<2)return;let p=u[0].numericMult,m=[...r];for(let w of l){let A=w.symbolicCoeff.isSame(n.One)?w.arg:n._fn("Multiply",[w.symbolicCoeff,w.arg]);m.push(n._fn("Cos",[A]))}for(let w of a){let A=w.symbolicCoeff.isSame(n.One)?w.arg:n._fn("Multiply",[w.symbolicCoeff,w.arg]);m.push(n._fn("Cos",[A]))}let g=u.length,h=u[0].symbolicCoeff,b=Math.pow(2,g);if(I(o,"Pi")){let w=1/(b+1);if(Math.abs(p-w)<1e-10){let A=n.number([1,b]);return m.length===0?A:A.mul(m.length===1?m[0]:n._fn("Multiply",m))}}let y=h.mul(b),E=h.isSame(n.One)?o:n._fn("Multiply",[h,o]),v=n._fn("Multiply",[y,o]),_=n._fn("Sin",[v]),S=n._fn("Sin",[E]),C=_.div(n.number(b).mul(S));return m.length===0?C:C.mul(m.length===1?m[0]:n._fn("Multiply",m))}function mk(e){return bn(e,pB)}function mB(e){if(d(e,"Power")&&e.op2?.isSame(2)){let n=e.op1;if(d(n,"Sin")&&n.op1)return{func:"Sin",arg:n.op1,coef:1};if(d(n,"Cos")&&n.op1)return{func:"Cos",arg:n.op1,coef:1}}if(d(e,"Multiply")){let n=1,t;for(let i of e.ops)if(d(i,"Power")&&i.op2?.isSame(2)){let r=i.op1;(r?.operator==="Sin"||r?.operator==="Cos")&&(t=i)}else typeof i.re=="number"&&i.im===0&&(n*=i.re);if(d(t)){let i=t.op1;if(d(i,"Sin")&&i.op1)return{func:"Sin",arg:i.op1,coef:n};if(d(i,"Cos")&&i.op1)return{func:"Cos",arg:i.op1,coef:n}}}return null}function dB(e){let n=e.engine;if(e.operator!=="Add"||!d(e))return;let t=e.ops;if(t.length<2)return;let i=[],r=[],o=[];for(let s=0;s<t.length;s++){let a=t[s],u=mB(a);u?i.push({...u,index:s}):typeof a.re=="number"&&a.im===0&&N(a)?o.push({value:a.re,index:s}):r.push({expr:a,index:s})}for(let s=0;s<i.length;s++)for(let a=s+1;a<i.length;a++){let u=i[s],l=i[a];if(u.arg.isSame(l.arg)&&(u.func==="Sin"&&l.func==="Cos"||u.func==="Cos"&&l.func==="Sin")&&Math.abs(u.coef-l.coef)<1e-10){let c=u.coef,f=new Set([u.index,l.index]),p=t.filter((m,g)=>!f.has(g));return p.length===0?n.number(c):c===1?n._fn("Add",[n.One,...p]):n._fn("Add",[n.number(c),...p])}}for(let s of i)if(s.coef<0){let a=Math.abs(s.coef);for(let u of o)if(Math.abs(u.value-a)<1e-10){let l=new Set([s.index,u.index]),c=t.filter((m,g)=>!l.has(g)),f=s.func==="Sin"?"Cos":"Sin",p=n._fn(f,[s.arg]).pow(2).mul(a);return c.length===0?p:n._fn("Add",[p,...c])}}}function dk(e){return bn(e,dB)}var gB=new Set(["Sin","Cos","Tan","Cot","Sec","Csc"]);function Zx(e){let n=0;if(gB.has(e.operator)&&(n=1),d(e))for(let t of e.ops)n+=Zx(t);return n}function Hx(e){if(I(e)||N(e))return 1;let n=1;if(d(e))for(let t of e.ops)n+=Hx(t);return n}function gk(e){let n=Zx(e),t=Hx(e);return n*1e3+t}var hk=gk;function Yx(e,n){if(e.length===0)throw new Error("bestOf called with empty array");if(e.length===1)return e[0];let t=e[0],i=n(t);for(let r=1;r<e.length;r++){let o=n(e[r]);o<i&&(t=e[r],i=o)}return t}function Gc(e,n){let t=n(e);return t.isSame(e)?null:t}function bk(e,n){let t=Gc(e,Jx),i=Gc(e,rk),r=[e];return t&&r.push(t),i&&r.push(i),Yx(r,n)}function hB(e,n){return bk(e,n)}function bB(e,n){let t=Gc(e,sk),i=[e];if(t){i.push(t);let r=Gc(t,Yd);r&&i.push(r)}return Yx(i,n)}function yB(e,n){let t=Gc(e,Yd),i=[e];return t&&i.push(t),Yx(i,n)}function xB(e,n){let t=lk(e);return t=fk(t),t}function vB(e,n){let t=e;return t=ak(t),t=jx(t),t=Jx(t),t=ok(t),t=jx(t),t=bB(t,n),t=bk(t,n),t=Hd(t),t=hB(t,n),t=Hd(t),t=yB(t,n),t}function yk(e,n){if(!Zd(e))return;let t=n?.measure??hk,i=n?.maxIterations??100,r=e,o=0,s=e,a=t(e),u=_=>{let S=t(_);S<a&&(s=_,a=S)};r=ik(r),u(r);let l=Ux(r);u(l);let c=pk(r);u(c),r=s;let f=Gx(r);if(u(f),r=s,jo(r,"Sec","Csc")&&(r=ek(r),s=r,a=t(r)),jo(r,"Tan","Cot")){let _=xB(r,t);u(_),r=_}if(jo(r,"Tan","Cot")&&(r=nk(r),u(r)),jo(r,"Sin","Cos")){let _=Hd(r);u(_),r=s}if(jo(r,"Sin","Cos")){let _=t(r);for(;o<i;){o++;let S=vB(r,t),C=t(S);if(u(S),C>=_)break;r=S,_=C}}let p=tk(s);u(p);let m=uk(s);u(m);let g=mk(s);u(g);let h=Gx(s);u(h);let b=Ux(s);u(b);let y=Yd(s);u(y);let E=dk(s);u(E);let v=ck(s);if(u(v),s.operator==="Add"||s.operator==="Multiply"){let _=e.engine.expr(s.json);u(_)}if(!s.isSame(e))return{value:s,because:"fu"}}function Wx(e,n){if(Array.isArray(e)){if(e[0]==="InvisibleOperator")for(let t=1;t+1<e.length;t++){let i=e[t],r=e[t+1];typeof i=="string"&&Array.isArray(r)&&r[0]==="Delimiter"&&n.add(i)}for(let t of e)Wx(t,n);return}e!==null&&typeof e=="object"&&"fn"in e&&Array.isArray(e.fn)&&Wx(e.fn,n)}var Wd=class e{static _latexSyntaxFactory=null;True;False;Pi;E;Nothing;Zero;One;Half;NegativeOne;Two;I;NaN;PositiveInfinity;NegativeInfinity;ComplexInfinity;_numericConfiguration;_cacheStore=new Ed;_runtimeState=new Gd;_configurationLifecycle=new zd;_cost;_integrationProvider;_simplificationRules=new Eu([...s3]);_solveRules=new Eu([...EI]);_harmonizationRules=new Eu([...II]);_compilationTargets=new qd;_fuAlgorithm=yk;_commonSymbols={Pi:null,True:null,False:null,All:null,Nothing:null,None:null,Undefined:null,ImaginaryUnit:null,ExponentialE:null};_commonNumbers={"-5":null,"-4":null,"-3":null,"-2":null,2:null,3:null,4:null,5:null,6:null,7:null,8:null,9:null,10:null,11:null,12:null,36:null};_evalContextStack=[];get context(){return this._evalContextStack[this._evalContextStack.length-1]}get contextStack(){return[...this._evalContextStack]}set contextStack(n){this._evalContextStack=[...n]}__typeResolver;get _typeResolver(){return this.__typeResolver??=$A(this),this.__typeResolver}declareType(n,t,i){d3(this,n,t,i)}get trace(){return this._evalContextStack.map(n=>n.name).filter(n=>n!==void 0).reverse()}get _generation(){return this._configurationLifecycle.generation}set _generation(n){this._configurationLifecycle.generation=n}strict;static getStandardLibrary(n){return dd(n)}constructor(n){if(n!==void 0&&typeof n!="object")throw Error("Unexpected argument");this.strict=!0,this._numericConfiguration=new Jd({precision:n?.precision,tolerance:n?.tolerance??"auto",angularUnit:"rad"});let t=new jd(this),i=t.initializeCommonNumbers();this.Zero=i.Zero,this.One=i.One,this.Half=i.Half,this.NegativeOne=i.NegativeOne,this.Two=i.Two,this.NaN=i.NaN,this.PositiveInfinity=i.PositiveInfinity,this.NegativeInfinity=i.NegativeInfinity,this.I=i.I,this.ComplexInfinity=i.ComplexInfinity,this._reset(),this.pushScope(void 0,"system"),this.declareType("limits","expression<Limits>"),this.declareType("distribution","expression<NormalDistribution> | expression<BinomialDistribution> | expression<PoissonDistribution> | expression<UniformDistribution> | expression<ExponentialDistribution>",{alias:!0}),t.bootstrapLibraries(n?.libraries);let r=t.initializeCommonSymbolBindings(this._commonSymbols);this.True=r.True,this.False=r.False,this.Pi=r.Pi,this.E=r.E,this.Nothing=r.Nothing,this.pushScope(void 0,"global"),this._compilationTargets.registerDefaults(),n?.latexSyntax&&(this._latexSyntax=n.latexSyntax),n?.latexOptions&&(this._latexOptions={...n.latexOptions}),Lv(this)}toJSON(){return"[ComputeEngine]"}[Symbol.toStringTag]="ComputeEngine";_reset(){this._configurationLifecycle.reset({refreshNumericConstants:()=>{},resetCommonSymbols:()=>U3(this._commonSymbols),purgeCaches:()=>this._cacheStore.purgeValues()})}listenToConfigurationChange(n){return this._configurationLifecycle.listen(n)}_compile(n,t){return kc(n,t)}getCompilationTarget(n){return this._compilationTargets.get(n)}listCompilationTargets(){return this._compilationTargets.list()}registerCompilationTarget(n,t){this._compilationTargets.register(n,t)}unregisterCompilationTarget(n){this._compilationTargets.unregister(n)}get precision(){return this._numericConfiguration.precision}set precision(n){this._numericConfiguration.setPrecision(n)&&this._reset()}get angularUnit(){return this._numericConfiguration.angularUnit}set angularUnit(n){this._numericConfiguration.setAngularUnit(n)&&this._reset()}get timeLimit(){return this._runtimeState.timeLimit}set timeLimit(n){this._runtimeState.timeLimit=n}get deadline(){return this._runtimeState.deadline}set deadline(n){this._runtimeState.deadline=n}get _deadline(){return this._runtimeState.deadline}set _deadline(n){this._runtimeState.deadline=n}get _timeRemaining(){return this._runtimeState.timeRemaining}get iterationLimit(){return this._runtimeState.iterationLimit}set iterationLimit(n){this._runtimeState.iterationLimit=n}get recursionLimit(){return this._runtimeState.recursionLimit}set recursionLimit(n){this._runtimeState.recursionLimit=n}_enterRecursion(){this._runtimeState.enterRecursion()}_exitRecursion(){this._runtimeState.exitRecursion()}get maxCollectionSize(){return this._runtimeState.maxCollectionSize}set maxCollectionSize(n){this._runtimeState.maxCollectionSize=n}get _isVerifying(){return this._runtimeState.isVerifying}set _isVerifying(n){this._runtimeState.isVerifying=n}get isVerifying(){return this._runtimeState.isVerifying}get tolerance(){return this._numericConfiguration.tolerance}set tolerance(n){this._numericConfiguration.setTolerance(n)}chop(n){let t=this._numericConfiguration.tolerance;return typeof n=="number"?Math.abs(n)<=t?0:n:n instanceof x?n.isPositive()&&n.lte(this._numericConfiguration.bignumTolerance)||n.isNegative()&&n.gte(this._numericConfiguration.negBignumTolerance)||n.isZero()?0:n:n instanceof L&&Math.abs(n.re)<=t&&Math.abs(n.im)<=t?0:n}bignum(n){return this._numericConfiguration.bignum(n)}complex(n,t){return n instanceof x&&(n=n.toNumber()),t instanceof x&&(t=t.toNumber()),new L(n,t)}_numericValue(n){if(n instanceof Pe)return n.asExact??n;let t=this._numericConfiguration.precision>fi?i=>new ps(i):i=>new Cr(i);if(typeof n=="number")return Number.isInteger(n)?new Ie(n,t):t(n);if(typeof n=="bigint")return new Ie(n,t);if(Di(n))return new Ie({rational:n},t);if(n instanceof x){if(n.isInteger()){let i=Ye(n.toString());if(i!==null)return new Ie(i,t)}return t(n)}if(n instanceof L)return n.im===0?this._numericValue(n.re):t({re:n.re,im:n.im});if("im"in n||"re"in n)return n.im!==void 0&&n.im!==0?t(n):n.re instanceof x&&n.re.isInteger()?new Ie({rational:[Ye(n.re.toString()),BigInt(1)]},t):typeof n.re=="number"&&Number.isInteger(n.re)?new Ie({rational:[n.re,1]},t):t(n);if("radical"in n||"rational"in n){if(n.radical!==void 0&&(!Number.isInteger(n.radical)||n.radical>=me))throw Error("Unexpected value for radical part:"+n.radical);return n.rational&&kn(n.rational)&&(!Number.isInteger(n.rational[0])||!Number.isInteger(n.rational[1]))?t(n):new Ie(n,t)}throw Error(`Unexpected value: ${typeof n=="object"?JSON.stringify(n):String(n)}`)}get costFunction(){return this._cost??EC}set costFunction(n){this._cost=typeof n=="function"?n:void 0}get simplificationRules(){return this._simplificationRules.rules}set simplificationRules(n){this._simplificationRules.rules=n,this._cacheStore.invalidate("standard-simplification-rules")}get solveRules(){return this._solveRules.rules}set solveRules(n){this._solveRules.rules=n,this._cacheStore.invalidate("univariate-roots-rules")}get harmonizationRules(){return this._harmonizationRules.rules}set harmonizationRules(n){this._harmonizationRules.rules=n,this._cacheStore.invalidate("harmonization-rules")}lookupDefinition(n){return l3(this,n)}normalizeIdentifier(n){if(!n)return"";if(pn(n))return n;this.pushScope();try{let t=this.parse(n);if(I(t))return t.symbol}finally{this.popScope()}return""}operatorInfo(n){let t=this.lookupDefinition(n);if(!t||!ye(t))return;let i=t.operator;return{kind:i.evaluate||i.collection?"function":"opaque",signature:i.signature}}symbolInfo(n){let t=this.lookupDefinition(n);if(!t||!oe(t))return;let i=t.value;return{kind:i.isConstant?"constant":"variable",type:i.type}}functionProperties(n){return ws(this,n)}_declareSymbolValue(n,t,i){return c3(this,n,t,i)}_declareSymbolOperator(n,t,i){return f3(this,n,t,i)}pushScope(n,t){b3(this,n,t)}popScope(){y3(this)}_pushEvalContext(n,t){Xy(this,n,t)}_popEvalContext(){Ky(this)}_inScope(n,t){return x3(this,n,t)}_printStack(n){v3(this,n)}_shadowedParameterStack=[];_pushShadowedParameters(n){this._shadowedParameterStack.push(new Set(n))}_popShadowedParameters(){this._shadowedParameterStack.pop()}_isShadowedParameter(n){let t=this._shadowedParameterStack;for(let i=t.length-1;i>=0;i--)if(t[i].has(n))return!0;return!1}_getSymbolValue(n){return p3(this,n)}_setSymbolValue(n,t){m3(this,n,t)}declare(n,t,i){return g3(this,n,t,i)}declareSequence(n,t){return O3(this,n,t)}getSequenceStatus(n){return L3(this,n)}getSequence(n){return F3(this,n)}listSequences(){return $3(this)}isSequence(n){return B3(this,n)}clearSequenceCache(n){q3(this,n)}getSequenceCache(n){return V3(this,n)}getSequenceTerms(n,t,i,r){return z3(this,n,t,i,r)}lookupOEIS(n,t){return J3(this,n,t)}checkSequenceOEIS(n,t,i){return G3(this,n,t,i)}assign(n,t){return h3(this,n,t)}_shouldContinueExecution(){return this._runtimeState.shouldContinueExecution()}_checkContinueExecution(){if(!this._shouldContinueExecution())throw new Error("timeout")}_cache(n,t,i){return this._cacheStore.getOrBuild(n,t,i)}expr(n,t){let{canonical:i,structural:r}=bd(t);return bt(this,n,{canonical:i,structural:r,scope:t?.scope})}box(n,t){return this.expr(n,t)}_latexSyntax;get latexSyntax(){return!this._latexSyntax&&e._latexSyntaxFactory&&(this._latexSyntax=e._latexSyntaxFactory()),this._latexSyntax}_requireLatexSyntax(){if(!this._latexSyntax&&e._latexSyntaxFactory&&(this._latexSyntax=e._latexSyntaxFactory()),!this._latexSyntax)throw new Error("LatexSyntax not available. Pass a LatexSyntax instance to the ComputeEngine constructor.");return this._latexSyntax}_latexOptions={};get latexOptions(){return this._latexOptions}set latexOptions(n){this._latexOptions={...n}}parse(n,t){if(n==null)return null;if(typeof n!="string")throw Error("ce.parse(): expected a LaTeX string");let i=this._requireLatexSyntax(),{form:r,canonical:o,structural:s,...a}=t??{},u=i.parse(n,{getSymbolType:l=>{let c=this.lookupDefinition(l);return c?ye(c)?c.operator.signature:oe(c)?c.value.type:J.unknown:J.unknown},hasSubscriptEvaluate:l=>{let c=this.lookupDefinition(l);return!!(oe(c)&&c.value.subscriptEvaluate)},tolerance:this.tolerance,...this._latexOptions,...a});return u===null?null:bt(this,u,bd({form:r,canonical:o,structural:s}))}appliedNonFunctions(n){let t=this.latexSyntax;if(!t)return[];let i=t.parse(n,{getSymbolType:o=>{let s=this.lookupDefinition(o);return s?ye(s)?s.operator.signature:oe(s)?s.value.type:J.unknown:J.unknown},...this._latexOptions}),r=new Set;return i!==null&&Wx(i,r),Array.from(r).sort()}function(n,t,i){let{canonical:r,structural:o}=bd(i);return hd(this,n,t,{metadata:i?.metadata,canonical:r,structural:o,scope:i?.scope})}error(n,t){return Ud(this,n,t)}typeError(n,t,i){return BA(this,n,t,i)}hold(n){return this._fn("Hold",[this.expr(n,{form:"raw"})])}tuple(...n){return new on(this,"Tuple",n.map(t=>typeof t=="number"?this.number(t):t.canonical),{canonical:!0})}type(n){return n instanceof J?n:new J(n,this._typeResolver)}string(n,t){return new $o(this,n,t)}symbol(n,t){return DA(this,this._commonSymbols,n,t)}number(n,t){return OA(this,this._commonNumbers,n,t)}rules(n,t){return Wl(this,n,t)}getRuleSet(n){if(n??="standard-simplification",n==="standard-simplification"){this._simplificationRules.hasMutatedSinceLastCache()&&this._cacheStore.invalidate("standard-simplification-rules");let t=this._cache("standard-simplification-rules",()=>{let r=Wl(this,this._simplificationRules.rules,{canonical:!0}).rules.filter(o=>o.purpose!=="expand");return{rules:QS(r)}});return this._simplificationRules.markCached(),t}if(n==="solve-univariate"){this._solveRules.hasMutatedSinceLastCache()&&this._cacheStore.invalidate("univariate-roots-rules");let t=this._cache("univariate-roots-rules",()=>Wl(this,this._solveRules.rules));return this._solveRules.markCached(),t}if(n==="harmonization"){this._harmonizationRules.hasMutatedSinceLastCache()&&this._cacheStore.invalidate("harmonization-rules");let t=this._cache("harmonization-rules",()=>Wl(this,this._harmonizationRules.rules));return this._harmonizationRules.markCached(),t}}_fn(n,t,i){let r=i?.canonical??!0;return new on(this,n,t,{...i,canonical:r})}ask(n){return r1(this,n)}verify(n){return o1(this,n)}assume(n){return A3(this,n)}forget(n){s1(this,n)}};qA(()=>new Wd);var Vle="0.69.1";export{Le as CancellationError,Wd as ComputeEngine,GA as N,UA as assign,jA as declare,JA as evaluate,ZA as expand,YA as expandAll,VA as expr,WA as factor,Ls as getDefaultEngine,v5 as isCollection,io as isDictionary,Sg as isExpression,d as isFunction,E5 as isIndexedCollection,N as isNumber,z as isString,I as isSymbol,Zs as isTensor,Se as numericValue,zA as simplify,HA as solve,Vle as version};
|
|
1828
1828
|
/*! Bundled license information:
|
|
1829
1829
|
|
|
1830
1830
|
complex-esm/dist/src/complex.js:
|