@cortex-js/compute-engine 0.54.1 → 0.55.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compile.esm.js +24564 -0
- package/dist/compile.min.esm.js +941 -0
- package/dist/compile.min.umd.cjs +943 -0
- package/dist/compile.umd.cjs +24589 -0
- package/dist/compute-engine.esm.js +55471 -56045
- package/dist/compute-engine.min.esm.js +90 -99
- package/dist/compute-engine.min.umd.cjs +90 -99
- package/dist/compute-engine.umd.cjs +55472 -56046
- package/dist/core.esm.js +67696 -0
- package/dist/core.min.esm.js +1010 -0
- package/dist/core.min.umd.cjs +1012 -0
- package/dist/core.umd.cjs +67721 -0
- package/dist/interval.esm.js +13439 -0
- package/dist/interval.min.esm.js +18 -0
- package/dist/interval.min.umd.cjs +20 -0
- package/dist/interval.umd.cjs +13464 -0
- package/dist/latex-syntax.esm.js +15158 -0
- package/dist/latex-syntax.min.esm.js +7 -0
- package/dist/latex-syntax.min.umd.cjs +9 -0
- package/dist/latex-syntax.umd.cjs +15183 -0
- 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 +8618 -0
- package/dist/numerics.min.esm.js +5 -0
- package/dist/numerics.min.umd.cjs +7 -0
- package/dist/numerics.umd.cjs +8643 -0
- package/dist/types/big-decimal/big-decimal.d.ts +191 -0
- package/dist/types/big-decimal/index.d.ts +2 -0
- package/dist/types/big-decimal/transcendentals.d.ts +56 -0
- package/dist/types/big-decimal/utils.d.ts +86 -0
- package/dist/types/common/ansi-codes.d.ts +1 -1
- package/dist/types/common/configuration-change.d.ts +1 -1
- package/dist/types/common/fuzzy-string-match.d.ts +1 -1
- package/dist/types/common/grapheme-splitter.d.ts +1 -1
- package/dist/types/common/interruptible.d.ts +1 -1
- package/dist/types/common/one-of.d.ts +1 -1
- package/dist/types/common/signals.d.ts +1 -1
- package/dist/types/common/type/ast-nodes.d.ts +1 -1
- package/dist/types/common/type/boxed-type.d.ts +1 -1
- package/dist/types/common/type/lexer.d.ts +1 -1
- package/dist/types/common/type/parse.d.ts +1 -1
- package/dist/types/common/type/parser.d.ts +1 -1
- package/dist/types/common/type/primitive.d.ts +1 -1
- package/dist/types/common/type/reduce.d.ts +1 -1
- package/dist/types/common/type/serialize.d.ts +1 -1
- package/dist/types/common/type/subtype.d.ts +1 -1
- package/dist/types/common/type/type-builder.d.ts +1 -1
- package/dist/types/common/type/types.d.ts +1 -1
- package/dist/types/common/type/utils.d.ts +1 -1
- package/dist/types/common/utils.d.ts +1 -1
- package/dist/types/compile.d.ts +10 -0
- package/dist/types/compute-engine/assume.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +45 -6
- package/dist/types/compute-engine/boxed-expression/apply.d.ts +4 -4
- package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/box.d.ts +2 -2
- package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +5 -5
- package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/numerics.d.ts +4 -4
- package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -13
- package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
- package/dist/types/compute-engine/collection-utils.d.ts +3 -3
- package/dist/types/compute-engine/compilation/base-compiler.d.ts +1 -1
- package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
- package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/gpu-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/types.d.ts +1 -1
- package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
- package/dist/types/compute-engine/engine-cache.d.ts +1 -1
- package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
- package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
- package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
- package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
- package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +4 -4
- package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
- package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -4
- package/dist/types/compute-engine/engine-numeric-configuration.d.ts +11 -15
- package/dist/types/compute-engine/engine-runtime-state.d.ts +1 -1
- package/dist/types/compute-engine/engine-scope.d.ts +1 -1
- package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
- package/dist/types/compute-engine/engine-simplification-rules.d.ts +1 -1
- package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
- package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
- package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +2 -2
- package/dist/types/compute-engine/free-functions.d.ts +14 -14
- package/dist/types/compute-engine/function-utils.d.ts +1 -1
- package/dist/types/compute-engine/global-types.d.ts +1 -1
- package/dist/types/compute-engine/index.d.ts +55 -154
- package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
- package/dist/types/compute-engine/interval/elementary.d.ts +1 -1
- package/dist/types/compute-engine/interval/index.d.ts +1 -1
- package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
- package/dist/types/compute-engine/interval/types.d.ts +1 -1
- package/dist/types/compute-engine/interval/util.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +37 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +3 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +113 -0
- package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +11 -1
- package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/types.d.ts +8 -8
- package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
- package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/calculus.d.ts +1 -1
- package/dist/types/compute-engine/library/collections.d.ts +1 -1
- package/dist/types/compute-engine/library/colors.d.ts +1 -1
- package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
- package/dist/types/compute-engine/library/complex.d.ts +1 -1
- package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
- package/dist/types/compute-engine/library/core.d.ts +1 -1
- package/dist/types/compute-engine/library/fractals.d.ts +1 -1
- package/dist/types/compute-engine/library/library.d.ts +3 -3
- package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
- package/dist/types/compute-engine/library/logic.d.ts +1 -1
- package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
- package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
- package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
- package/dist/types/compute-engine/library/sets.d.ts +1 -1
- package/dist/types/compute-engine/library/statistics.d.ts +1 -1
- package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
- package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
- package/dist/types/compute-engine/library/units.d.ts +1 -1
- package/dist/types/compute-engine/library/utils.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +24 -9
- package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +6 -7
- package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +7 -8
- package/dist/types/compute-engine/numeric-value/types.d.ts +8 -8
- package/dist/types/compute-engine/numerics/bigint.d.ts +2 -2
- 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 +4 -0
- 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 +4 -4
- package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
- package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
- package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
- package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
- package/dist/types/compute-engine/numerics/special-functions.d.ts +27 -1
- package/dist/types/compute-engine/numerics/statistics.d.ts +12 -12
- package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
- package/dist/types/compute-engine/numerics/types.d.ts +2 -15
- package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
- package/dist/types/compute-engine/oeis.d.ts +1 -1
- package/dist/types/compute-engine/sequence.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
- package/dist/types/compute-engine/types-definitions.d.ts +2 -4
- package/dist/types/compute-engine/types-engine.d.ts +40 -39
- package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
- package/dist/types/compute-engine/types-expression.d.ts +49 -30
- package/dist/types/compute-engine/types-kernel-evaluation.d.ts +1 -1
- package/dist/types/compute-engine/types-kernel-serialization.d.ts +14 -5
- package/dist/types/compute-engine/types-serialization.d.ts +1 -1
- package/dist/types/compute-engine/types.d.ts +1 -1
- package/dist/types/compute-engine.d.ts +6 -3
- package/dist/types/core.d.ts +11 -0
- package/dist/types/interval.d.ts +8 -0
- package/dist/types/latex-syntax.d.ts +14 -0
- package/dist/types/math-json/symbols.d.ts +1 -1
- package/dist/types/math-json/types.d.ts +1 -1
- package/dist/types/math-json/utils.d.ts +1 -1
- package/dist/types/math-json.d.ts +2 -2
- package/dist/types/numerics.d.ts +23 -0
- package/package.json +31 -1
- package/dist/types/compute-engine/engine-latex-dictionary-state.d.ts +0 -13
- package/dist/types/compute-engine/engine-parse-entrypoint.d.ts +0 -7
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Compute Engine 0.55.2 */
|
|
2
|
+
var D=class{get bignumRe(){}im;get bignumIm(){}isZeroWithTolerance(e){return this.isZero}valueOf(){return this.im===0?this.bignumRe?this.bignumRe.toNumber():this.re:this.toString()}[Symbol.toPrimitive](e){return e==="string"?this.toString():this.valueOf()}toJSON(){if(this.im===0){let e=this.re;if(Number.isFinite(e))return e}return this.N().toString()}print(){let e=console.log;e?.(this.toString())}};var fi=new Map;function I(i){if(i<=100){let e=fi.get(i);return e===void 0&&(e=10n**BigInt(i),fi.set(i,e)),e}return 10n**BigInt(i)}function hi(i,e,t){return i*e/t}function di(i,e,t){return i*t/e}function oe(i,e){if(i===0n)return 0n;if(i<0n)throw new RangeError("fpsqrt: negative input");let t,n=Number(i),r=Number(e);if(Number.isFinite(n)&&Number.isFinite(r)&&n>0&&r>0){let h=Math.sqrt(n/r)*r;Number.isFinite(h)&&h>0?(t=BigInt(Math.floor(h)),t===0n&&(t=1n)):t=mi(i,e)}else t=mi(i,e);let s=i*e,o;do o=t,t=(t+s/t)/2n;while(V(t-o)>1n);let u=(t+s/t)/2n,c=V(t*t-s);return V(u*u-s)<c?u:t}function mi(i,e){let n=x(i),r=Math.max(0,n-15),s=Number(r>0?i/I(r):i),o=x(e),u=Math.max(0,o-15),c=Number(u>0?e/I(u):e),l=r+u,h=Math.floor(l/2),f=Math.sqrt(s*c);l%2!==0&&(f*=3.1622776601683795);let p=BigInt(Math.round(f))*I(h);return p>0n?p:1n}function V(i){return i<0n?-i:i}function x(i){if(i===0n)return 1;if(i<0n&&(i=-i),i<0x20000000000000n)return Math.floor(Math.log10(Number(i)))+1;let e=0,t=i,n=1;for(;t>>BigInt(n)>0n;)n*=2;for(let s=n>>1;s>=1;s>>=1)t>>BigInt(s)>0n&&(e+=s,t>>=BigInt(s));e+=1;let r=Math.ceil(e*.30102999566398);return i<I(r-1)?r-1:i>=I(r)?r+1:r}function Ve(i,e){if(i===0n)return e;let t=0,n=i,r=e/2n;for(;V(n)>r;)n=n/2n,t++;let s=e,o=n;s+=o;for(let u=2;o=o*n/(BigInt(u)*e),V(o)!==0n;u++)s+=o;for(let u=0;u<t;u++)s=s*s/e;return s}function pi(i,e){if(i===e)return 0n;let t=Number(i),n=Number(e),r,s=i,o=0;if(Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0){let c=t/n;if(Number.isFinite(c)&&c>0){let l=Math.log(c);Number.isFinite(l)?r=BigInt(Math.round(l*n)):r=Ae(i,e)}else r=Ae(i,e)}else{s=i;let c=2n*e,l=e/2n;for(;s>c||s<l;)s=oe(s,e),o++;r=Ae(s,e)}let u=0n;for(let c=0;c<100;c++){let l=Ve(r,e);if(l===0n){r=r/2n;continue}let h=r+s*e/l-e,f=V(h-r);if(f<=1n||f<100000n&&u>0n&&u<100000n&&f*4n>=u)break;u=f,r=h}for(let c=0;c<o;c++)r=2n*r;return r}function Ae(i,e){let t=x(i),n=x(e);return BigInt(t-n)*2302585n*e/1000000n}var Ne="314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151557485724245415069595082953311686172785588907509838175463746493931925506040092770167113900984882401285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949129331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279678235478163600934172164121992458631503028618297455570674983850549458858692699569092721079750930295532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380008164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333454776241686251898356948556209921922218427255025425688767179049460165346680498862723279178608578438382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118630674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009946576407895126946839835259570982582262052248940772671947826848260147699090264013639443745530506820349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813826868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388439045124413654976278079771569143599770012961608944169486855584840635",ge=null;function Oe(i){if(ge!==null&&ge.scale===i)return ge.value;let t=x(i)-1+10,n=Ne.slice(0,t+1),r=BigInt(n),s=n.length-1,o=r*i/I(s);return ge={scale:i,value:o},o}function be(i,e){if(i===0n)return[0n,e];let t=Oe(e),n=2n*t,r=t/2n,s,o=V(i);if(o>e*(1n<<30n)){let E=x(o)-x(e)+20,M=e*I(E),w=i*I(E),q=2n*Oe(M),L=w%q;L<0n&&(L+=q),s=L/I(E)}else s=i%n;s<0n&&(s+=n);let u=1n,c=1n;s>3n*r?(s=n-s,u=-1n):s>t?(s=s-t,u=-1n,c=-1n):s>r&&(s=t-s,c=-1n);let l=x(e)-1,h=Math.min(18,Math.max(2,Math.ceil(.87*Math.sqrt(l)))),f=0,p=e>>BigInt(h);for(;s>p;)s=s/2n,f++;let m=s,d=e,g=s,b=e,y=s*s,T=e*e;for(let E=2;;E+=2){if(b=b*y/(BigInt(E)*BigInt(E-1)*T),b===0n){g=g*y/(BigInt(E+1)*BigInt(E)*T),g!==0n&&(E%4===2?(d-=b,m-=g):(d+=b,m+=g));break}if(g=g*y/(BigInt(E+1)*BigInt(E)*T),E%4===2?(d-=b,m-=g):(d+=b,m+=g),g===0n)break}for(let E=0;E<f;E++){let M=2n*m*d/e,w=2n*d*d/e-e;m=M,d=w}return[u*m,c*d]}function se(i,e){if(i===0n)return 0n;if(i<0n)return-se(-i,e);let n=Oe(e)/2n;if(i>e){let f=e*e/i;return n-se(f,e)}let r=4n*e/10n,s=0,o=i;for(;o>r;){let f=o*o,p=(e*e+f)/e,m=oe(p,e);o=o*e/(e+m),s++}let u=o,c=o,l=o*o,h=e*e;for(let f=3;c=c*l/h,c!==0n;f+=2)f%4===3?u-=c/BigInt(f):u+=c/BigInt(f);for(let f=0;f<s;f++)u=2n*u;return u}var _e=NaN,a=class i{static precision=50;static ZERO=Object.freeze(Object.assign(Object.create(i.prototype),{significand:0n,exponent:0}));static ONE=Object.freeze(Object.assign(Object.create(i.prototype),{significand:1n,exponent:0}));static TWO=Object.freeze(Object.assign(Object.create(i.prototype),{significand:2n,exponent:0}));static NEGATIVE_ONE=Object.freeze(Object.assign(Object.create(i.prototype),{significand:-1n,exponent:0}));static HALF=Object.freeze(Object.assign(Object.create(i.prototype),{significand:5n,exponent:-1}));static NAN=Object.freeze(Object.assign(Object.create(i.prototype),{significand:0n,exponent:NaN}));static POSITIVE_INFINITY=Object.freeze(Object.assign(Object.create(i.prototype),{significand:1n,exponent:1/0}));static NEGATIVE_INFINITY=Object.freeze(Object.assign(Object.create(i.prototype),{significand:-1n,exponent:1/0}));static _piFullPrecision=null;static _piCache=null;static _piCachePrecision=0;static get PI(){i._piFullPrecision===null&&(i._piFullPrecision=new i(Ne[0]+"."+Ne.slice(1)));let e=i.precision;return(i._piCache===null||i._piCachePrecision!==e)&&(i._piCache=i._piFullPrecision.toPrecision(e+4),i._piCachePrecision=e),i._piCache}significand;exponent;constructor(e){if(e instanceof i){this.significand=e.significand,this.exponent=e.exponent;return}if(typeof e=="bigint"){[this.significand,this.exponent]=ye(e,0);return}if(typeof e=="number"){[this.significand,this.exponent]=st(e);return}[this.significand,this.exponent]=bi(e)}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(e){if(typeof e=="number"){if(Number.isNaN(e))return _e;let m=this.exponent;if(Number.isNaN(m))return _e;if(e===0)return this.significand===0n?0:this.significand>0n?1:-1;if(!Number.isFinite(m))return e===1/0?this.significand>0n?0:-1:e===-1/0?this.significand<0n?0:1:this.significand>0n?1:-1;if(this.significand===0n)return e>0?-1:1;if(e===1/0)return-1;if(e===-1/0)return 1;if(this.significand>0n!=e>0)return this.significand>0n?1:-1;if(Number.isInteger(e)&&m>=0&&m<=15){let d=this.significand*I(m),g=BigInt(e);return d<g?-1:d>g?1:0}e=new i(e)}let t=this.exponent,n=e.exponent,r=this.significand,s=e.significand;if(t!==t||n!==n)return _e;if(!Number.isFinite(t)||!Number.isFinite(n))return!Number.isFinite(t)&&!Number.isFinite(n)?r===s?0:r>s?1:-1:Number.isFinite(t)?s>0n?-1:1:r>0n?1:-1;if(r===0n)return s===0n?0:s>0n?-1:1;if(s===0n)return r>0n?1:-1;if(r>0n&&s<0n)return 1;if(r<0n&&s>0n)return-1;if(t===n)return r<s?-1:r>s?1:0;let o=x(r),u=x(s),c=o+t,l=u+n;if(c!==l){let m=r>0n?1:-1;return c>l?m:-m}let h=r,f=s,p=Math.abs(t-n);if(p>1e3){let m=o,d=u,g=Math.max(m,d)+1;m<g&&(h=h*I(g-m)),d<g&&(f=f*I(g-d))}else t<n?f=f*I(p):h=h*I(p);return h<f?-1:h>f?1:0}eq(e){return typeof e=="number"?e===0?this.significand===0n&&this.exponent===0:e===1?this.significand===1n&&this.exponent===0:e===-1?this.significand===-1n&&this.exponent===0:Number.isInteger(e)&&Number.isFinite(this.exponent)&&this.exponent>=0&&this.exponent<=15?this.significand*I(this.exponent)===BigInt(e):this.cmp(e)===0:this.significand===e.significand&&this.exponent===e.exponent}lt(e){return this.cmp(e)===-1}lte(e){let t=this.cmp(e);return t===-1||t===0}gt(e){return this.cmp(e)===1}gte(e){let t=this.cmp(e);return t===1||t===0}add(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent;if(Number.isFinite(t)&&Number.isFinite(n)){if(t===n)return v(this.significand+e.significand,t);let o=t-n;return o>0?v(this.significand*I(o)+e.significand,n):v(this.significand+e.significand*I(-o),t)}if(t!==t||n!==n)return i.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(n);return r&&s?this.significand!==e.significand?i.NAN:this.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY:r?this.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY:e.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY}sub(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent;if(Number.isFinite(t)&&Number.isFinite(n)){if(t===n)return v(this.significand-e.significand,t);let o=t-n;return o>0?v(this.significand*I(o)-e.significand,n):v(this.significand-e.significand*I(-o),t)}if(t!==t||n!==n)return i.NAN;let r=!Number.isFinite(t),s=!Number.isFinite(n);return r&&s?this.significand===e.significand?i.NAN:this.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY:r?this.significand>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY:e.significand>0n?i.NEGATIVE_INFINITY:i.POSITIVE_INFINITY}mul(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent;if(Number.isFinite(t)&&Number.isFinite(n))return v(this.significand*e.significand,t+n);if(t!==t||n!==n||this.significand===0n||e.significand===0n)return i.NAN;let r=this.significand>0n?1n:-1n,s=e.significand>0n?1n:-1n;return r*s>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY}neg(){let e=this.significand;return e===0n?this:Number.isFinite(this.exponent)?v(-e,this.exponent):e>0n?i.NEGATIVE_INFINITY:i.POSITIVE_INFINITY}abs(){return this.significand>=0n?this:Number.isFinite(this.exponent)?v(-this.significand,this.exponent):i.POSITIVE_INFINITY}floor(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let t=this.trunc();return this.significand<0n?t.sub(v(1n,0)):t}return this}ceil(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let t=this.trunc();return this.significand>0n?t.add(v(1n,0)):t}return this}round(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let t=v(5n,-1);return this.significand>0n?this.add(t).trunc():this.sub(t).trunc()}return this}trunc(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let t=this.significand/I(-e);return v(t===0n?0n:t,0)}return this}div(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent,r=this.significand,s=e.significand;if(Number.isFinite(t)&&Number.isFinite(n)){if(s===0n)return r===0n?i.NAN:r>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY;if(r===0n)return v(0n,0);let c=i.precision,l=10,h=r<0n?-r:r,f=s<0n?-s:s,p=x(h),m=x(f),d=c+l+Math.max(0,m-p),g=I(d),b=r*g/s,y=t-n-d;return v(b,y).toPrecision(c)}if(t!==t||n!==n)return i.NAN;let o=!Number.isFinite(t),u=!Number.isFinite(n);if(o&&u)return i.NAN;if(o){let c=r>0n?1n:-1n,l=s>0n?1n:s<0n?-1n:1n;return c*l>0n?i.POSITIVE_INFINITY:i.NEGATIVE_INFINITY}return v(0n,0)}inv(){return v(1n,0).div(this)}mod(e){typeof e=="number"&&(e=new i(e));let t=this.exponent,n=e.exponent;return Number.isFinite(t)&&Number.isFinite(n)?e.significand===0n?i.NAN:this.significand===0n?v(0n,0):this.sub(this.div(e).trunc().mul(e)).toPrecision(i.precision):t!==t||n!==n||!Number.isFinite(t)?i.NAN:new i(this)}pow(e){if(typeof e=="number"&&(e=new i(e)),this.isNaN()||e.isNaN()||!e.isFinite())return i.NAN;if(e.isInteger()){let t=e.toBigInt();if(t===0n)return v(1n,0);if(!this.isFinite())return t>0n?this.significand<0n&&t%2n!==0n?i.NEGATIVE_INFINITY:i.POSITIVE_INFINITY:v(0n,0);if(this.isZero())return t>0n?v(0n,0):i.POSITIVE_INFINITY;if(t<0n)return this.pow(e.neg()).inv();let n=this.significand<0n?-this.significand:this.significand,r=x(n)+this.exponent,s=Number(t)*r;if(s>9e15)return this.significand<0n&&t%2n!==0n?i.NEGATIVE_INFINITY:i.POSITIVE_INFINITY;if(s<-9e15)return v(0n,0);let o=i.precision,u=v(1n,0),c=this,l=t;for(;l>0n;)l&1n&&(u=u.mul(c).toPrecision(o)),l>>=1n,l>0n&&(c=c.mul(c).toPrecision(o));return u}return this.isFinite()?this.isZero()?e.significand>0n?i.ZERO:i.POSITIVE_INFINITY:this.significand<0n?i.NAN:e.mul(this.ln()).exp():this.significand<0n?i.NAN:e.significand>0n?i.POSITIVE_INFINITY:i.ZERO}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 e=this.significand<0n,t=(e?-this.significand:this.significand).toString(),n=t.length,r=n+this.exponent-1,s=e?"-":"";if(r>20||r<-6){let c=n===1?t:t[0]+"."+t.slice(1),l=r>=0?"+":"";return`${s}${c}e${l}${r}`}if(this.exponent>=0)return s+t+"0".repeat(this.exponent);let o=-this.exponent;if(o<n){let c=t.slice(0,n-o),l=t.slice(n-o);return`${s}${c}.${l}`}let u=o-n;return`${s}0.${"0".repeat(u)}${t}`}toFixed(e){let t=e??0;if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";let n=this.significand<0n,r=n?-this.significand:this.significand,s=this.exponent+t,o;if(s>=0)o=r*I(s);else{let f=I(-s),p=r/f,m=r%f,d=f/2n;m>d?o=p+1n:m<d||f%2n!==0n||p%2n===0n?o=p:o=p+1n}let u=n&&o!==0n?"-":"",c=o.toString();if(t===0)return`${u}${c}`;if(c.length<=t){let f=c.padStart(t,"0");return`${u}0.${f}`}let l=c.slice(0,c.length-t),h=c.slice(c.length-t);return`${u}${l}.${h}`}toPrecision(e){if(this.significand===0n||!Number.isFinite(this.exponent))return this;let t=this.significand<0n?-this.significand:this.significand,n=x(t);if(n<=e)return this;let r=n-e,s=I(r),o=t/s,u=t%s,c=s/2n;(u>c||u===c&&o%2n!==0n)&&(o+=1n);let l=this.significand<0n?-o:o;return v(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*I(this.exponent);let e=I(-this.exponent);return this.significand/e}};function v(i,e){let[t,n]=ye(i,e),r=Object.create(a.prototype);return r.significand=t,r.exponent=n,r}var gi=1000000000n,Ni=1000n;function ye(i,e){if(i===0n)return[0n,0];for(;i%gi===0n;)i/=gi,e+=9;for(;i%Ni===0n;)i/=Ni,e+=3;for(;i%10n===0n;)i/=10n,e+=1;return[i,e]}function st(i){return Number.isNaN(i)?[0n,NaN]:i===1/0?[1n,1/0]:i===-1/0?[-1n,1/0]:Number.isInteger(i)?ye(BigInt(i),0):bi(i.toString())}function bi(i){if(i=i.trim(),i===""||i==="NaN")return[0n,NaN];if(i==="Infinity"||i==="+Infinity")return[1n,1/0];if(i==="-Infinity")return[-1n,1/0];let e,t=0,n=i.search(/[eE]/);if(n!==-1){if(e=i.slice(0,n),t=Number(i.slice(n+1)),!Number.isFinite(t))return[0n,NaN]}else e=i;let r=!1;e.startsWith("-")?(r=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let s=e.indexOf("."),o,u;s===-1?(o=e,u=""):(o=e.slice(0,s),u=e.slice(s+1)),o=o.replace(/^0+/,"")||"0";let c=o+u;if(c.length===0||!/^\d+$/.test(c))return[0n,NaN];let l=BigInt(c);r&&(l=-l);let h=-u.length;return ye(l,h+t)}function Z(i,e){let t=I(e),n=i.exponent+e;return n>=0?[i.significand*I(n),t]:[i.significand/I(-n),t]}function U(i,e,t){if(i===0n)return a.ZERO;let n=i<0n,r=n?-i:i,s=x(r);if(s>t){let l=s-t,h=I(l),f=h/2n,p=r%h;r=r/h,p>=f&&(r+=1n);let m=x(e)-1,d=l-m,g=n?-r:r;return v(g,d)}let u=-(x(e)-1),c=n?-r:r;return v(c,u)}a.prototype.sqrt=function(){if(this.isNaN())return a.NAN;if(this.isZero())return a.ZERO;if(!this.isFinite())return this.significand>0n?a.POSITIVE_INFINITY:a.NAN;if(this.significand<0n)return a.NAN;let i=a.precision,e=i+10,[t,n]=Z(this,e),r=oe(t,n);return U(r,n,i)};a.prototype.cbrt=function(){if(this.isNaN())return a.NAN;if(this.isZero())return a.ZERO;if(!this.isFinite())return this.significand>0n?a.POSITIVE_INFINITY:a.NEGATIVE_INFINITY;if(this.significand<0n)return this.neg().cbrt().neg();let i=a.precision,e=i+10,[t,n]=Z(this,e),r=t*n*n,s,o=this.toNumber(),u=Number(n);if(Number.isFinite(o)&&o>0&&Number.isFinite(u)){let l=Math.cbrt(o);Number.isFinite(l)&&l>0?(s=BigInt(Math.floor(l*u)),s===0n&&(s=1n)):s=yi(t,n)}else s=yi(t,n);let c;do{c=s;let l=s*s;if(l===0n){s=1n;break}s=(2n*s+r/l)/3n}while(V(s-c)>1n);{let l=(2n*s+r/(s*s))/3n,h=V(s*s*s-r);V(l*l*l-r)<h&&(s=l)}return U(s,n,i)};a.sqrt=function(i){return i.sqrt()};a.cbrt=function(i){return i.cbrt()};a.prototype.exp=function(){if(this.isNaN())return a.NAN;if(!this.isFinite())return this.significand>0n?a.POSITIVE_INFINITY:a.ZERO;if(this.isZero())return a.ONE;let i=a.precision,e=i+15,[t,n]=Z(this,e),r=Ve(t,n);return U(r,n,i)};a.prototype.ln=function(){if(this.isNaN())return a.NAN;if(!this.isFinite())return this.significand>0n?a.POSITIVE_INFINITY:a.NAN;if(this.isZero())return a.NEGATIVE_INFINITY;if(this.significand<0n)return a.NAN;if(this.eq(1))return a.ZERO;let i=a.precision,e=i+15,[t,n]=Z(this,e),r=pi(t,n);return U(r,n,i)};a.prototype.log=function(i){let e=i instanceof a?i:new a(i);return this.ln().div(e.ln())};a.exp=function(i){return i.exp()};a.ln=function(i){return i.ln()};a.log10=function(i){return i.log(10)};a.prototype.sin=function(){if(this.isNaN())return a.NAN;if(!this.isFinite())return a.NAN;if(this.isZero())return a.ZERO;let i=a.precision,e=i+15,[t,n]=Z(this,e),[r]=be(t,n);return U(r,n,i)};a.prototype.cos=function(){if(this.isNaN())return a.NAN;if(!this.isFinite())return a.NAN;if(this.isZero())return a.ONE;let i=a.precision,e=i+15,[t,n]=Z(this,e),[,r]=be(t,n);return U(r,n,i)};a.prototype.tan=function(){if(this.isNaN())return a.NAN;if(!this.isFinite())return a.NAN;if(this.isZero())return a.ZERO;let i=a.precision,e=i+15,[t,n]=Z(this,e),[r,s]=be(t,n);if(s===0n)return r>0n?a.POSITIVE_INFINITY:a.NEGATIVE_INFINITY;let o=r*n/s;return U(o,n,i)};a.prototype.atan=function(){if(this.isNaN())return a.NAN;if(this.isZero())return a.ZERO;if(!this.isFinite()){let s=a.PI.div(a.TWO);return this.significand>0n?s:s.neg()}let i=a.precision,e=i+15,[t,n]=Z(this,e),r=se(t,n);return U(r,n,i)};a.prototype.asin=function(){if(this.isNaN())return a.NAN;if(!this.isFinite())return a.NAN;if(this.isZero())return a.ZERO;let i=this.abs(),e=a.ONE;if(i.gt(e))return a.NAN;if(i.eq(e)){let f=a.PI.div(a.TWO);return this.significand>0n?f:f.neg()}let t=a.precision,n=t+20,[r,s]=Z(this,n),o=hi(r,r,s),u=s-o,c=oe(u,s),l=di(r,c,s),h=se(l,s);return U(h,s,t)};a.prototype.acos=function(){return this.isNaN()?a.NAN:this.isFinite()?this.abs().gt(a.ONE)?a.NAN:this.eq(1)?a.ZERO:this.eq(-1)?a.PI:a.PI.div(a.TWO).sub(this.asin()):a.NAN};a.sin=function(i){return i.sin()};a.cos=function(i){return i.cos()};a.tan=function(i){return i.tan()};a.asin=function(i){return i.asin()};a.acos=function(i){return i.acos()};a.atan=function(i){return i.atan()};a.atan2=function(i,e){let t=i instanceof a?i:new a(i);if(t.isNaN()||e.isNaN())return a.NAN;let n=a.PI,r=n.div(a.TWO);if(e.isZero())return t.isZero()?a.ZERO:t.significand>0n?r:r.neg();let s=t.div(e);return e.significand>0n?s.atan():t.significand>=0n?s.atan().add(n):s.atan().sub(n)};a.prototype.sinh=function(){if(this.isNaN())return a.NAN;if(this.isZero())return a.ZERO;if(!this.isFinite())return this.significand>0n?a.POSITIVE_INFINITY:a.NEGATIVE_INFINITY;let i=this.exp(),e=i.inv();return i.sub(e).div(a.TWO)};a.prototype.cosh=function(){if(this.isNaN())return a.NAN;if(this.isZero())return a.ONE;if(!this.isFinite())return a.POSITIVE_INFINITY;let i=this.exp(),e=i.inv();return i.add(e).div(a.TWO)};a.prototype.tanh=function(){if(this.isNaN())return a.NAN;if(this.isZero())return a.ZERO;if(!this.isFinite())return this.significand>0n?a.ONE:a.NEGATIVE_ONE;let i=this.mul(a.TWO).exp();return i.sub(a.ONE).div(i.add(a.ONE))};a.sinh=function(i){return i.sinh()};a.cosh=function(i){return i.cosh()};a.tanh=function(i){return i.tanh()};function yi(i,e){let n=x(i),r=Math.max(0,n-15),s=Number(r>0?i/I(r):i),o=x(e),u=Math.max(0,o-15),c=Number(u>0?e/I(u):e),l=r+2*u,h=Math.floor(l/3),f=l%3,p=Math.cbrt(s*c*c);f===1&&(p*=2.154434690031882),f===2&&(p*=4.641588833612779);let m=BigInt(Math.round(p))*I(h);return m>0n?m:1n}function Ce(i,e,t={}){let{contract:n=.125,step:r=1,power:s=2,atol:o=1e-16,rtol:u=o>0?0:Math.sqrt(Number.EPSILON),maxeval:c=1e6,breaktol:l=2}=t;if(!isFinite(e))return Ce(b=>i(1/b),1/e,{rtol:u,atol:o,maxeval:c,contract:Math.abs(n)>1?1/n:n,step:1/r,power:s});let h=r,f=Math.pow(1/n,s),p=i(e+h),m=[p],d=1/0,g=1;for(;g<c;){g+=1,h*=n,m.push(i(e+h));let b=f,y=1/0;for(let T=m.length-2;T>=0;T--){let E=m[T];m[T]=m[T+1]+(m[T+1]-m[T])/(b-1);let M=Math.abs(m[T]-E);y=Math.min(y,M),M<d&&(p=m[T],d=M),b*=f}if(y>l*d||!isFinite(y)||d<=Math.max(u*Math.abs(p),o))break}return[p,d]}function F(i){if(typeof i=="bigint")return i;if(typeof i=="number")return Number.isInteger(i)?i>=Number.MAX_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER?BigInt(i):F(i.toString()):null;if(i instanceof a)return i.isInteger()?BigInt(i.toFixed(0)):null;let e=i.toLowerCase(),t=e.match(/^([+-]?[0-9]+)e([+-]?[0-9]+)$/);if(t){let r=parseInt(t[2]);if(r<0)return null;e=t[1]+"0".repeat(r)}if(e.indexOf(".")>=0||!/^[+-]?[0-9]+$/.test(e))return null;try{return BigInt(e)}catch(r){return console.error(r.message),null}}var Ti=0x3ffffffffffe5,Le=new Set([2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919]),Ii=7919;function Ze(i){if(Number.isInteger(i)&&i>=0&&i<Number.MAX_SAFE_INTEGER,i<=3)return{[i]:1};let e={},t=0;for(;i%2===0;)t+=1,i/=2;for(t>0&&(e[2]=t),t=0;i%3===0;)t+=1,i/=3;t>0&&(e[3]=t);let n=!1;for(;!n;){if(i===1)return e;let r=Math.sqrt(i);n=!0;for(let s=6;s<=r+6;s+=6){if(i%(s-1)===0){e[s-1]=(e[s-1]??0)+1,i/=s-1,n=!1;break}if(i%(s+1)===0){e[s+1]=(e[s+1]??0)+1,i/=s+1,n=!1;break}}}return e[i]!==void 0?e[i]+=1:e[i]=1,e}function ot(i){if(!Number.isInteger(i)||!Number.isFinite(i)||Number.isNaN(i)||i<=1)return!1;if(i<=Ii)return Le.has(i);for(let e of Le)if(i%e===0)return!1;return i<Ti?i===at(i)||void 0:ct(i,30)?void 0:!1}function at(i){if(i===1)return 1;if(i%2===0)return 2;if(i%3===0)return 3;if(i%5===0)return 5;let e=Math.floor(Math.sqrt(i)),t=7;for(;t<=e;){if(i%t===0)return t;if(i%(t+4)===0)return t+4;if(i%(t+6)===0)return t+6;if(i%(t+10)===0)return t+10;if(i%(t+12)===0)return t+12;if(i%(t+16)===0)return t+16;if(i%(t+22)===0)return t+22;if(i%(t+24)===0)return t+24;t+=30}return i}function Jn(i){if(i<=1)return!1;if(i<=Ii)return ot(Number(i));for(let e of Le)if(i%BigInt(e)===BigInt(0))return!1;return i<Ti&&(i=ut(i)),lt(i,30)?void 0:!1}function ut(i){if(i===BigInt(1))return BigInt(1);if(i%BigInt(2)===BigInt(0))return BigInt(2);if(i%BigInt(3)===BigInt(0))return BigInt(3);if(i%BigInt(5)===BigInt(0))return BigInt(5);let e=BigInt(Math.floor(Math.sqrt(Number(i)))),t=BigInt(7);for(;t<=e;){if(i%t===BigInt(0))return t;if(i%(t+BigInt(4))===BigInt(0))return t+BigInt(4);if(i%(t+BigInt(6))===BigInt(0))return t+BigInt(6);if(i%(t+BigInt(10))===BigInt(0))return t+BigInt(10);if(i%(t+BigInt(12))===BigInt(0))return t+BigInt(12);if(i%(t+BigInt(16))===BigInt(0))return t+BigInt(16);if(i%(t+BigInt(22))===BigInt(0))return t+BigInt(22);if(i%(t+BigInt(24))===BigInt(0))return t+BigInt(24);t+=BigInt(30)}return i}function ct(i,e){let t=0,n=i-1;for(;n%2===0;)n/=2,++t;e:do{let r=Math.pow(2+Math.floor(Math.random()*(i-3)),n)%i;if(!(r===1||r===i-1)){for(let s=t-1;s--;){if(r=r*r%i,r===1)return!1;if(r===i-1)continue e}return!1}}while(--e);return!0}function lt(i,e){let t=0,n=i-BigInt(1);for(;n%BigInt(2)===BigInt(0);)n=n/BigInt(2),++t;e:do{let r=BigInt(2+Math.floor(Math.random()*(Number(i)-3)))**n%i;if(!(r===BigInt(1)||r===i-BigInt(1))){for(let s=t-1;s--;){if(r=r*r%i,r===BigInt(1))return!1;if(r===i-BigInt(1))continue e}return!1}}while(--e);return!0}var ft=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];function Ei(i){if(i<Number.MAX_SAFE_INTEGER){let h=Ze(Number(i)),f=new Map;for(let p of Object.keys(h))f.set(F(p),h[p]);return f}let e=i,t=new Map,n=0,r=0,s=0,o=BigInt(10);for(;e%o===BigInt(0);)n+=1,s+=1,e=e/o;for(o=BigInt(5);e%o===BigInt(0);)s+=1,e=e/o;for(o=BigInt(3);e%o===BigInt(0);)r+=1,e=e/o;for(o=BigInt(2);e%o===BigInt(0);)n+=1,e=e/o;n>0&&t.set("2",n),r>0&&t.set("3",r),s>0&&t.set("5",s),o=BigInt(7);let u="",c=0;for(;o*o<e;)e%o===BigInt(0)?(u||(u=o.toString()),t.set(u,(t.get(u)??0)+1),e=e/o):(o=o+ft[c],u="",c=c<7?c+1:0);e!==BigInt(1)&&t.set(e.toString(),(t.get(e.toString())??0)+1);let l=new Map;for(let[h,f]of t)l.set(F(h),f);return l}var mt=21,vi=53,ht=Math.floor(Math.log10(Math.pow(2,vi))),ki=1e-10,S=1e6,dt=1024,pt=1e4,gt=200;function xi(i){if(i!==i)return i;if(i===-1/0)return-Number.MAX_VALUE;if(i===1/0||i===Number.MAX_VALUE)return 1/0;let e=i*(i<0?1-Number.EPSILON/2:1+Number.EPSILON);e===i&&(e=Number.MIN_VALUE*Number.EPSILON>0?i+Number.MIN_VALUE*Number.EPSILON:i+Number.MIN_VALUE),e===1/0&&(e=+Number.MAX_VALUE);let t=i+(e-i)/2;i<t&&t<e&&(e=t);let n=(e+i)/2;return i<n&&n<e&&(e=n),e===0?-0:e}function Nt(i){return-xi(-i)}function W(i,e){if(i>=Number.MAX_SAFE_INTEGER)return[1,i];if(i===0)return[0,0];if(i===1)return[1,1];if(Number.isInteger(i)&&i>0&&i<Number.MAX_SAFE_INTEGER,e===2){let s=[[0,0],[1,1],[1,2],[1,3],[2,1],[1,5],[1,6],[1,7],[1,8],[3,1],[1,10],[1,11],[2,3],[1,13],[1,14],[1,15],[4,1],[1,17],[3,2],[1,19],[1,20]][i];if(s)return s}let t=Ze(i),n=BigInt(1),r=BigInt(1);for(let s of Object.keys(t)){let o=BigInt(parseInt(s)),u=BigInt(e);n=n*o**(BigInt(t[s])/u),r=r*o**(BigInt(t[s])%u)}return[Number(n),Number(r)]}function P(i,e){if(i===0)return e;if(e===0||i===e)return i;if(!Number.isInteger(i)||!Number.isInteger(e))return NaN;for(;e!==0;)[i,e]=[e,i%e];return i<0?-i:i}function $e(i,e){if(i===0||e===0)return 0;let t=BigInt(i)*BigInt(e)/BigInt(P(i,e));return Number(t)}function bt(i){if(!Number.isInteger(i)||i<0)return NaN;if(i>=170)return 1/0;let e=1;for(let t=2;t<=i;t++)e=e*t;return e}function yt(i){if(!Number.isInteger(i)||i<0)return NaN;if(i<0)return NaN;if(i<=1)return 1;let e=i;for(;i>2;)i-=2,e*=i;return e}function Tt(i,e=ki){return typeof i=="number"&&Math.abs(i)<=e?0:i}function It(i,e,t=.1){return(i(e-4*t)/280-4*i(e-3*t)/105+i(e-2*t)/5-4*i(e-t)/5+4*i(e+t)/5-i(e+2*t)/5+4*i(e+3*t)/105-i(e+4*t)/280)/t}function Ue(i,e,t=1){if(t===0){let s=Ue(i,e,-1),o=Ue(i,e,1);return s===void 0||o===void 0?NaN:Math.abs(s-o)>1e-5?NaN:(s+o)/2}let[n,r]=Ce(i,e,{step:t>0?1:-1});return n}function*Et(){yield[0,1];for(let i=1;;i++)for(let e=0;e<=i;e++){let t=i-e;t!==0&&P(e,t)===1&&(yield[e,t],yield[-e,t])}}function*vt(){yield[0,1];for(let i=1;;i++)for(let e=0;e<=i;e++){let t=i-e;t!==0&&P(e,t)===1&&(yield[e,t])}}function*kt(){yield[0,0];for(let i=1;;i++)for(let e=0;e<=i;e++){let t=i-e;if(t===0||P(e,t)!==1)continue;let n=e/t;for(let r=0;r<=i;r++){let s=i-r;if(s===0||P(r,s)!==1)continue;let o=r/s;yield[n,o],yield[-n,o],yield[n,-o],yield[-n,-o]}}}function*xt(){yield 0;for(let i=1;;i++)yield i,yield-i}function*Mt(){for(let i=0;;i++)yield i}function Y(i,e){for(;e!==BigInt(0);)[i,e]=[e,i%e];return i<0?-i:i}function qe(i,e){return i*e/Y(i,e)}function Te(i,e){let t=Ei(i),n=BigInt(1),r=BigInt(1),s=BigInt(e);for(let[o,u]of t){let c=F(u);n=n*o**(c/s),r=r*o**(c%s)}return[n,r]}function Bt(i){return i>=Number.MIN_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER?Number(i):i}function*Mi(i){if(i<0)return BigInt(0);if(i<10)return BigInt([1,1,2,6,24,120,720,5040,40320,362880][Number(i)]);if(i%BigInt(2)===BigInt(1))return i*(yield*Mi(i-BigInt(1)));let e=i,t=i,n=i;for(;e>2;)e-=BigInt(2),t+=e,n*=t,yield n;return n}function ir(i){return i!==null&&Array.isArray(i)}function A(i){return i!==null&&Array.isArray(i)&&typeof i[0]=="number"}function je(i){return i!==null&&Array.isArray(i)&&typeof i[0]=="bigint"}function X(i){return i[0]==0}function Je(i){return i[0]>0}function Ge(i){return i[0]==i[1]}function We(i){return i[0]===-i[1]}function ae(i){return i[1]==1}function tr(i){return Number(i[0])}function nr(i){return Number(i[1])}function Bi(i){return Number(i[0])/Number(i[1])}function rr(i){return i[0]<0}function sr(i,e){return _(i,Ee(e))}function z(i,e){if(typeof i[0]=="number"&&!Number.isFinite(i[0]))return i;let t=e;if(t===null)return i;if(je(t))return i=[BigInt(i[0]),BigInt(i[1])],[t[1]*i[0]+t[0]*i[1],t[1]*i[1]];if(!Number.isFinite(t[0]))return t;if(je(i)){let s=[BigInt(t[0]),BigInt(t[1])];return[s[1]*i[0]+s[0]*i[1],s[1]*i[1]]}let n=t[1]*i[0]+t[0]*i[1],r=t[1]*i[1];return n<=9007199254740991&&n>=-9007199254740991&&r<=9007199254740991?[n,r]:!Number.isFinite(n)||!Number.isFinite(r)?[NaN,1]:[BigInt(t[1])*BigInt(i[0])+BigInt(t[0])*BigInt(i[1]),BigInt(t[1])*BigInt(i[1])]}function _(i,e){if(A(i)&&A(e)){let t=i[0]*e[0],n=i[1]*e[1];return t<=9007199254740991&&t>=-9007199254740991&&n<=9007199254740991?[t,n]:!Number.isFinite(t)||!Number.isFinite(n)?[NaN,1]:[BigInt(i[0])*BigInt(e[0]),BigInt(i[1])*BigInt(e[1])]}return A(i)?[BigInt(i[0])*e[0],BigInt(i[1])*e[1]]:A(e)?[BigInt(e[0])*i[0],BigInt(e[1])*i[1]]:[i[0]*e[0],i[1]*e[1]]}function Si(i){return[-i[0],i[1]]}function Ee(i){return i[0]<0?[-i[1],-i[0]]:[i[1],i[0]]}function or(i){return[Number(i[0]),Number(i[1])]}function ar(i,e){if(Number.isInteger(e),e===0)return[1,1];if(e<0&&(i=Ee(i),e=-e),e===1)return i;let t=BigInt(e);return[BigInt(i[0])**t,BigInt(i[1])**t]}function ur(i){let e=Math.sqrt(Number(i[0])),t=Math.sqrt(Number(i[1]));if(Number.isInteger(e)&&Number.isInteger(t))return[e,t]}function wi(i,e){return A(i)&&A(e)?i[1]===1&&e[1]===1?[P(i[0],e[0]),1]:[P(i[0],e[0]),$e(i[1],e[1])]:i[1]===1&&e[1]===1?[Y(BigInt(i[0]),BigInt(e[0])),BigInt(1)]:[Y(BigInt(i[0]),BigInt(e[0])),qe(BigInt(i[1]),BigInt(e[1]))]}function Ie(i){if(A(i)){if(i[1]<0&&(i=[-i[0],-i[1]]),i[0]===1||i[1]===1)return i;if(!Number.isFinite(i[1]))return[0,1];let r=P(i[0],i[1]);return r<=1?i:[i[0]/r,i[1]/r]}i[1]<0&&(i=[-i[0],-i[1]]);let e=Y(i[0],i[1]),[t,n]=e<=1?i:[i[0]/e,i[1]/e];return t<=Number.MAX_SAFE_INTEGER&&t>=Number.MIN_SAFE_INTEGER&&n<=Number.MAX_SAFE_INTEGER?[Number(t),Number(n)]:[t,n]}function cr(i){if(!Number.isFinite(i)||i%1===0)return i;let t=1e-15,n=Math.floor(i),r=1,s=0,o=n,u=1;for(;i-n>t*u*u;){i=1/(i-n),n=Math.floor(i);let c=r;r=o;let l=s;s=u,o=c+n*r,u=l+n*s}return[o,u]}function lr(i){if(je(i)){let[u,c]=i,[l,h]=Te(u,2),[f,p]=Te(c,2);return[Ie([l,f*p]),h*p]}let[e,t]=i,[n,r]=W(e,2),[s,o]=W(t,2);return[Ie([n,s*o]),r*o]}function Di(i){return!!(typeof i=="number"||Ye(i)||typeof i=="string"&&St(i))}function Ye(i){return i!==null&&typeof i=="object"&&"num"in i}function St(i){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(i)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(i)}function wt(i){if(i==="N")return[0,""];let e={I:1,V:5,X:10,L:50,C:100,D:500,M:1e3},t=0,n=0;i=i.toUpperCase();for(let r=i.length-1;r>=0;r--){let s=e[i[r]];if(s===void 0)return[t,i.slice(r)];s<n?t-=s:t+=s,n=s}return[t,""]}function Ri(i,e){if(i=i.trim(),i.length===0)return[NaN,""];if(i.startsWith("+"))return Ri(i.slice(1),e);if(i.startsWith("-")){let[r,s]=Ri(i.slice(1),e);return[-r,s]}let t=10;if(typeof e=="string"&&(e=e.toLowerCase()),i.startsWith("0x"))t=16,i=i.slice(2);else if(i.startsWith("0b"))t=2,i=i.slice(2);else{if(e==="roman")return wt(i);if(e==="base64"||e==="base-64")try{return[parseInt(btoa(i)),""]}catch{return[NaN,""]}else typeof e=="number"?t=e:typeof e=="string"&&(t=parseInt(e))}let n=0;for(let r=0;r<i.length;r++){let s={" ":-1,"\xA0":-1,"\u2000":-1,"\u2001":-1,"\u2002":-1,"\u2003":-1,"\u2004":-1,"\u2005":-1,"\u2006":-1,"\u2007":-1,"\u2008":-1,"\u2009":-1,"\u200A":-1,"\u200B":-1,"\u202F":-1,"\u205F":-1,_:-1,",":-1,0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15,g:16,h:17,i:18,j:19,k:20,l:21,m:22,n:23,o:24,p:25,q:26,r:27,s:28,t:29,u:30,v:31,w:32,x:33,y:34,z:35}[i[r]];if(s!==-1){if(s===void 0)return[n,i.substring(r)];if(s>=t)return[n,i.substring(r)];n=n*t+s}}return[n,""]}function B(i,e){if(typeof e=="number"&&typeof i=="number")return i.toFixed(e);let t=i.toString();if(typeof i=="number"&&Number.isInteger(i)&&t.includes("e")){let n=BigInt(i).toString(),r=n.match(/0+$/);if((r?r[0].length:0)<=5)return n}else if(typeof i=="bigint"){let n=t.match(/0+$/),r=n?n[0].length:0;if(r>5)return`${t.slice(0,-r)}e+${r}`}return t}function Nr(i){if(typeof i=="number")return Number.isInteger(i)?BigInt(i):null;if(i==null||!Di(i))return null;let e=Ye(i)?i.num:i;if(typeof e=="number")return Number.isInteger(e)?BigInt(e):null;if(typeof e!="string")return null;let t=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,"");return t==="nan"||/^(infinity|\+infinity|oo|\+oo|-infinity|-oo)$/.test(t)?null:F(t)}function R(i,e){if(typeof i=="number")return isNaN(i)?"NaN":Number.isFinite(i)?typeof e=="number"?{num:i.toFixed(e)}:i:i<0?"NegativeInfinity":"PositiveInfinity";if(i>=Number.MIN_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER)return Number(i);let t=B(i);return Number(i).toString()===t?Number(i):{num:t}}var ue=["number","finite_number","complex","finite_complex","imaginary","real","finite_real","rational","finite_rational","integer","finite_integer","non_finite_number"],Xe=["indexed_collection","list","tuple"],ve=[...Xe,"collection","set","record","dictionary"],ke=["scalar",...ue,"boolean","string"],ze=["value",...ve,...ke],He=["expression","symbol","function",...ze],$=["any","unknown","nothing","never","error",...He];function Fi(i){return typeof i=="string"?$.includes(i):typeof i!="object"||!("kind"in i)?!1:i.kind==="signature"||i.kind==="union"||i.kind==="intersection"||i.kind==="negation"||i.kind==="tuple"||i.kind==="list"||i.kind==="record"||i.kind==="dictionary"||i.kind==="set"||i.kind==="function"||i.kind==="collection"||i.kind==="indexed_collection"||i.kind==="reference"}var xe=class{input;pos=0;line=1;column=1;tokens=[];constructor(e){this.input=e}saveState(){return{pos:this.pos,line:this.line,column:this.column,tokens:[...this.tokens]}}restoreState(e){this.pos=e.pos,this.line=e.line,this.column=e.column,this.tokens=e.tokens}error(e){throw new Error(`Lexer error at line ${this.line}, column ${this.column}: ${e}`)}peek(e=0){let t=this.pos+e;return t<this.input.length?this.input[t]:""}advance(){let e=this.input[this.pos++];return e===`
|
|
3
|
+
`?(this.line++,this.column=1):this.column++,e}match(e){if(this.input.slice(this.pos,this.pos+e.length)===e){for(let t=0;t<e.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 e="";for(;!this.isEOF()&&/[a-zA-Z0-9_]/.test(this.peek());)e+=this.advance();return e}readVerbatimString(){if(!this.match("`"))return"";let e="";for(;!this.isEOF()&&this.peek()!=="`";)this.match("\\`")?e+="`":this.match("\\\\")?e+="\\":e+=this.advance();return this.isEOF()&&this.error("Unterminated verbatim string"),this.advance(),e}readStringLiteral(){let e=this.advance(),t="";for(;!this.isEOF()&&this.peek()!==e;)this.match("\\"+e)?t+=e:this.match("\\\\")?t+="\\":t+=this.advance();return this.isEOF()&&this.error("Unterminated string literal"),this.advance(),t}readNumber(){let e="";if((this.peek()==="-"||this.peek()==="+")&&(e+=this.advance()),this.match("0x")||this.match("0X")){for(e+="x";!this.isEOF()&&/[0-9a-fA-F]/.test(this.peek());)e+=this.advance();return"0"+e}if(this.match("0b")||this.match("0B")){for(e+="b";!this.isEOF()&&/[01]/.test(this.peek());)e+=this.advance();return"0"+e}for(;!this.isEOF()&&/[0-9]/.test(this.peek());)e+=this.advance();if(this.peek()==="."&&/[0-9]/.test(this.peek(1)))for(e+=this.advance();!this.isEOF()&&/[0-9]/.test(this.peek());)e+=this.advance();if(this.peek()==="e"||this.peek()==="E")for(e+=this.advance(),(this.peek()==="+"||this.peek()==="-")&&(e+=this.advance());!this.isEOF()&&/[0-9]/.test(this.peek());)e+=this.advance();return e}createToken(e,t){return{type:e,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 e=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(e,this.pos));if(this.match("-\u221E")||this.match("-oo"))return this.createToken("MINUS_INFINITY",this.input.slice(e,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 n=this.readIdentifier();switch(n){case"true":return this.createToken("TRUE",n);case"false":return this.createToken("FALSE",n);case"nan":return this.createToken("NAN",n);case"infinity":return this.createToken("INFINITY",n);case"oo":return this.createToken("INFINITY",n);default:return this.createToken("IDENTIFIER",n)}}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 n=this.readNumber();return this.peek()==="x"&&/[0-9]/.test(this.peek(1)),this.createToken("NUMBER_LITERAL",n)}if(t==="\u221E")return this.advance(),this.createToken("INFINITY","\u221E");this.error(`Unexpected character: ${t}`)}tokenize(){let e=[];for(;!this.isEOF();){let t=this.nextToken();if(t&&(e.push(t),t.type==="EOF"))break}return e}peekToken(){if(this.tokens.length===0){let e=this.nextToken();e&&this.tokens.push(e)}return this.tokens[0]||this.createToken("EOF","")}consumeToken(){if(this.tokens.length===0){let e=this.nextToken();if(e)return e}return this.tokens.shift()||this.createToken("EOF","")}matchToken(e){return this.peekToken().type===e?(this.consumeToken(),!0):!1}expectToken(e){let t=this.consumeToken();return t.type!==e&&this.error(`Expected ${e}, got ${t.type}`),t}};var Me=class{lexer;typeResolver;current;constructor(e,t){this.lexer=new xe(e),this.typeResolver=t?.typeResolver??{forward:()=>{},resolve:()=>{},get names(){return[]}},this.current=this.lexer.consumeToken()}error(e,t){this.errorAtToken(this.current,e,t)}errorAtToken(e,t,n){let r=this.lexer.input,o=r.split(`
|
|
4
|
+
`)[e.line-1]||r,u=e.column,c=" ".repeat(Math.max(0,u-1))+"^",l=["","Invalid type",`| ${o}`,`| ${c}`,"|",`| ${t}`];throw n&&l.push(`| ${n}`),l.push(""),new Error(l.join(`
|
|
5
|
+
`))}advance(){let e=this.current;return this.current=this.lexer.consumeToken(),e}match(e){return this.current.type===e?(this.advance(),!0):!1}expect(e){return this.current.type!==e&&this.error(`Expected ${e}, got ${this.current.type}`),this.advance()}createNode(e,t={}){return{kind:e,position:this.current.position,line:this.current.line,column:this.current.column,...t}}parseType(){this.checkForNakedFunctionSignature();let e=this.parseUnionType();if(e||this.error("Expected a type"),this.current.type!=="EOF")if(this.current.type==="->"||this.current.type==="+"||this.current.type==="*"||this.current.type==="?")this.error("Function signatures must be enclosed in parentheses","For example `(x: number) -> number`");else if(this.current.type==="("){let t=this.lexer.input;t.includes("set(")||t.includes("collection(")||t.includes("list(")||t.includes("tuple(")?t.includes("set(")?this.error("Use `set<integer>` instead of `set(integer)`."):t.includes("collection(")?this.error("Use `collection<type>` instead of `collection(type)`.","For example `collection<number>`"):t.includes("list(")?this.error("Use `list<type>` instead of `list(type)`.","For example `list<number>`"):t.includes("tuple(")&&this.error("Use `tuple<type1, type2>` instead of `tuple(type1, type2)`.","For example `tuple<string, number>`"):this.error("Unexpected token after type")}else this.error("Unexpected token after type");return e}checkForNakedFunctionSignature(){if(this.current.type==="IDENTIFIER"){let e=this.lexer.saveState(),t=this.current;try{let n=this.current;if(this.advance(),this.current.type===":"){this.advance();let r=!1,s=0,o=10;for(;this.current.type!=="EOF"&&s<o;){if(this.current.type==="->"){r=!0;break}if(this.current.type==="+"||this.current.type==="*"||this.current.type==="?"){if(this.advance(),this.current.type==="->"){r=!0;break}s++}this.advance(),s++}r&&(this.lexer.restoreState(e),this.current=t,this.errorAtToken(n,"Function signatures must be enclosed in parentheses","For example `(z: string*) -> boolean`"))}this.lexer.restoreState(e),this.current=t}catch(n){if(this.lexer.restoreState(e),this.current=t,n instanceof Error&&n.message.includes("Function signatures must be enclosed"))throw n}}}parseUnionType(){let e=this.parseIntersectionType();if(!e)return;let t=[e];for(;this.match("|");){let n=this.parseIntersectionType();n||this.error("Expected type after |"),t.push(n)}return t.length===1?t[0]:this.createNode("union",{types:t})}parseIntersectionType(){let e=this.parsePrimaryType();if(!e)return;let t=[e];for(;this.match("&");){let n=this.parsePrimaryType();n||this.error("Expected type after &"),t.push(n)}return t.length===1?t[0]:this.createNode("intersection",{types:t})}parsePrimaryType(){if(this.match("!")){let e=this.parsePrimaryType();return e||this.error("Expected type after !"),this.createNode("negation",{type:e})}if(this.current.type==="("){let e=this.parseFunctionSignature();if(e)return e;if(this.match("(")){let t=this.parseUnionType();if(t||this.error("Expected type after ("),this.current.type===","){let n=[this.createNode("named_element",{name:void 0,type:t})];for(;this.match(",");){let r=this.parseUnionType();r||this.error("Expected type after ,"),n.push(this.createNode("named_element",{name:void 0,type:r}))}return this.expect(")"),this.createNode("tuple",{elements:n})}return this.expect(")"),this.createNode("group",{type:t})}}return this.parseListType()||this.parseTupleType()||this.parseRecordType()||this.parseDictionaryType()||this.parseSetType()||this.parseCollectionType()||this.parseExpressionType()||this.parseSymbolType()||this.parseNumericType()||this.parsePrimitiveType()||this.parseValue()||this.parseTypeReference()}isFunctionSignature(){let e=this.lexer.saveState(),t=this.current;this.advance();let n=1;for(;n>0&&this.current.type!=="EOF";)this.current.type==="("?n++:this.current.type===")"&&n--,this.advance();let r=this.current.type==="->";return this.lexer.restoreState(e),this.current=t,r}parseFunctionSignature(){if(this.current.type!=="("||!this.isFunctionSignature())return;let e=[];if(this.advance(),!this.match(")")){do{let o=this.parseArgument();o||this.error("Expected argument"),e.push(o)}while(this.match(","));this.expect(")")}this.expect("->");let t=this.parseUnionType();t||this.error("Expected return type after ->");let n=e.some(o=>o.modifier==="optional"),r=e.some(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one"),s=e.filter(o=>o.modifier==="variadic_zero"||o.modifier==="variadic_one").length;return n&&r&&this.error("Variadic arguments cannot be used with optional arguments"),s>1&&this.error("There can be only one variadic argument"),this.createNode("function_signature",{arguments:e,returnType:t})}parseArgument(){let e=this.parseNamedElement();if(!e)return;let t;return this.match("?")?t="optional":this.match("*")?t="variadic_zero":this.match("+")&&(t="variadic_one"),this.createNode("argument",{element:e,modifier:t})}parseNamedElement(){let e;if(this.current.type==="IDENTIFIER"||this.current.type==="VERBATIM_STRING"){let n=this.current;if(this.lexer.peekToken().type===":"){e=n.value,this.advance(),this.advance();let s=this.parseUnionType();return s?this.createNode("named_element",{name:e,type:s}):void 0}}let t=this.parseUnionType();if(t)return this.createNode("named_element",{name:void 0,type:t})}parseListType(){if(this.current.type==="IDENTIFIER"){let e=this.current,n=this.lexer.peekToken().type==="<";switch(e.value){case"list":return n?(this.advance(),this.parseListTypeImpl()):void 0;case"vector":return n?(this.advance(),this.parseVectorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));case"matrix":return n?(this.advance(),this.parseMatrixType()):(this.advance(),this.createNode("matrix",{elementType:this.createNode("primitive",{name:"number"}),dimensions:[this.createNode("dimension",{size:-1}),this.createNode("dimension",{size:-1})]}));case"tensor":return n?(this.advance(),this.parseTensorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));default:return}}}parseListTypeImpl(){let e=this.createNode("primitive",{name:"any"}),t;if(this.match("<")){if(t=this.parseDimensionWithX(),t||(t=this.parseDimensions()),!t){let n=this.parseUnionType();n&&(e=n,this.match("^")&&(t=this.parseDimensionWithX(),t||(t=this.parseDimensions())))}this.expect(">")}return this.createNode("list",{elementType:e,dimensions:t})}parseVectorType(){let e=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(this.current.type==="NUMBER_LITERAL")t=parseInt(this.advance().value);else{let n=this.parseUnionType();n&&(e=n,this.match("^")&&(this.current.type==="NUMBER_LITERAL"?t=parseInt(this.advance().value):this.error("Expected number after ^")))}this.expect(">")}return this.createNode("vector",{elementType:e,size:t})}parseMatrixType(){let e=this.createNode("primitive",{name:"number"}),t;if(this.match("<")){if(t=this.parseDimensionWithX(),t||(t=this.parseDimensions()),!t){let n=this.parseUnionType();n&&(e=n,this.match("^")&&(t=this.parseDimensionWithX(),t||(t=this.parseDimensions())))}this.expect(">")}else t=[this.createNode("dimension",{size:null}),this.createNode("dimension",{size:null})];return this.createNode("matrix",{elementType:e,dimensions:t})}parseTensorType(){let e=this.createNode("primitive",{name:"number"});if(this.match("<")){let t=this.parseUnionType();t&&(e=t),this.expect(">")}return this.createNode("tensor",{elementType:e})}parseDimensions(){let e=[],t=this.parseDimension();if(t){for(e.push(t);this.match("x");){let n=this.parseDimension();n||this.error("Expected dimension after x"),e.push(n)}return e}}parseDimension(){if(this.match("?"))return this.createNode("dimension",{size:null});if(this.current.type==="NUMBER_LITERAL"){let e=parseInt(this.advance().value);return this.createNode("dimension",{size:e})}}parseDimensionWithX(){if(this.current.type==="NUMBER_LITERAL"){let e=[],t=parseInt(this.advance().value);if(e.push(this.createNode("dimension",{size:t})),this.current.type==="IDENTIFIER"&&this.current.value.startsWith("x")){let n=this.current.value,r=n.match(/x(\d+)/g);if(r&&r.join("")===n){this.advance();for(let s of r){let o=parseInt(s.substring(1));e.push(this.createNode("dimension",{size:o}))}}else(n==="x"||n.startsWith("x"))&&this.error("Expected a positive integer literal or `?` after x. For example: `2x3` or `2x?`")}if(e.length>1)return e}}parseTupleType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="tuple"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let t=[];if(this.current.type!==">"){let n=this.parseNamedElement();n||this.error("Expected tuple element"),t.push(n);let r=n.name!==void 0;for(;this.match(",");){let s=this.parseNamedElement();s||this.error("Expected tuple element"),r&&!s.name&&this.error("All tuple elements should be named, or none. Previous elements were named, but this one isn't."),!r&&s.name&&this.error("All tuple elements should be named, or none. Previous elements were not named, but this one is."),t.push(s)}}return this.expect(">"),this.createNode("tuple",{elements:t})}}parseRecordType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="record"){this.advance();let e=[];if(this.match("<")){if(this.current.type!==">")do{let t=this.parseRecordEntry();t||this.error("Expected record entry"),e.push(t)}while(this.match(","));this.expect(">")}return this.createNode("record",{entries:e})}}parseRecordEntry(){let e;if(this.current.type==="IDENTIFIER")e=this.advance().value;else if(this.current.type==="VERBATIM_STRING")e=this.advance().value;else return;this.expect(":");let t=this.parseUnionType();return t||this.error("Expected value type"),this.createNode("record_entry",{key:e,valueType:t})}parseDictionaryType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="dictionary"){this.advance();let e=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(e=t),this.expect(">")}return this.createNode("dictionary",{valueType:e})}}parseSetType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="set"){this.advance();let e=this.createNode("primitive",{name:"any"});if(this.match("<")){let t=this.parseUnionType();t&&(e=t),this.expect(">")}return this.createNode("set",{elementType:e})}}parseCollectionType(){if(this.current.type==="IDENTIFIER"){let e=this.current.value==="indexed_collection",t=this.current.value==="collection";if(e||t){this.advance();let n=this.createNode("primitive",{name:"any"});if(this.match("<")){let r=this.parseUnionType();r&&(n=r),this.expect(">")}return this.createNode("collection",{elementType:n,indexed:e})}}}parseExpressionType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="expression"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let n=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("expression",{operator:n})}}parseSymbolType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="symbol"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let n=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("symbol",{name:n})}}parseNumericType(){if(this.current.type==="IDENTIFIER"&&["real","finite_real","rational","finite_rational","integer","finite_integer"].includes(this.current.value)){let t=this.advance().value;if(this.match("<")){let n=this.parseValue();this.expect("..");let r=this.parseValue();return this.expect(">"),this.createNode("numeric",{baseType:t,lowerBound:n,upperBound:r})}return this.createNode("numeric",{baseType:t})}}parsePrimitiveType(){if(this.current.type==="IDENTIFIER"){let e=this.current.value;if($.includes(e))return this.advance(),this.createNode("primitive",{name:e})}}parseValue(){let e,t;switch(this.current.type){case"STRING_LITERAL":e=this.advance().value,t="string";break;case"NUMBER_LITERAL":e=parseFloat(this.advance().value),t="number";break;case"TRUE":this.advance(),e=!0,t="boolean";break;case"FALSE":this.advance(),e=!1,t="boolean";break;case"NAN":this.advance(),e=NaN,t="nan";break;case"INFINITY":case"PLUS_INFINITY":this.advance(),e=1/0,t="infinity";break;case"MINUS_INFINITY":this.advance(),e=-1/0,t="infinity";break;default:return}return this.createNode("value",{value:e,valueType:t})}parseTypeReference(){let e=this.current.type==="IDENTIFIER"&&this.current.value==="type";if(e&&this.advance(),this.current.type==="IDENTIFIER"){let t=this.current,n=this.advance().value;return this.typeResolver.resolve(n)?this.createNode("type_reference",{name:n,isForward:e}):e&&this.typeResolver.forward(n)?this.createNode("type_reference",{name:n,isForward:!0}):(e||this.errorAtToken(t,`Unknown type "${n}"`,"Syntax error. The type was not recognized."),this.createNode("type_reference",{name:n,isForward:e}))}}};function Pi(i,e){switch(i.kind){case"function_signature":return e.visitFunctionSignature(i);case"union":return e.visitUnionType(i);case"intersection":return e.visitIntersectionType(i);case"negation":return e.visitNegationType(i);case"group":return e.visitGroupType(i);case"list":return e.visitListType(i);case"vector":return e.visitVectorType(i);case"matrix":return e.visitMatrixType(i);case"tensor":return e.visitTensorType(i);case"tuple":return e.visitTupleType(i);case"record":return e.visitRecordType(i);case"dictionary":return e.visitDictionaryType(i);case"set":return e.visitSetType(i);case"collection":return e.visitCollectionType(i);case"expression":return e.visitExpressionType(i);case"symbol":return e.visitSymbolType(i);case"numeric":return e.visitNumericType(i);case"primitive":return e.visitPrimitiveType(i);case"type_reference":return e.visitTypeReference(i);case"value":return e.visitValue(i);default:throw new Error(`Unknown node kind: ${i.kind}`)}}var Ke=class{typeResolver;constructor(e){this.typeResolver=e??{forward:()=>{},resolve:()=>{},get names(){return[]}}}buildType(e){return Pi(e,this)}visitFunctionSignature(e){let t=[],n=[],r,s;for(let c of e.arguments){let l=this.buildNamedElement(c.element);switch(c.modifier){case"optional":n.push(l);break;case"variadic_zero":r=l,s=0;break;case"variadic_one":r=l,s=1;break;default:t.push(l);break}}let o=this.buildType(e.returnType),u={kind:"signature",args:t.length>0?t:void 0,result:o};return n.length>0&&(u.optArgs=n),r&&(u.variadicArg=r,u.variadicMin=s),u}visitUnionType(e){return{kind:"union",types:e.types.map(n=>this.buildType(n))}}visitIntersectionType(e){return{kind:"intersection",types:e.types.map(n=>this.buildType(n))}}visitNegationType(e){return{kind:"negation",type:this.buildType(e.type)}}visitGroupType(e){return this.buildType(e.type)}visitListType(e){let t=this.buildType(e.elementType),n=e.dimensions?.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:n}}visitVectorType(e){let t=this.buildType(e.elementType);return e.size!==void 0?{kind:"list",elements:t,dimensions:[e.size]}:{kind:"list",elements:t}}visitMatrixType(e){let t=this.buildType(e.elementType);if(e.dimensions){let n=e.dimensions.map(r=>this.buildDimension(r));return{kind:"list",elements:t,dimensions:n}}return{kind:"list",elements:t,dimensions:[-1,-1]}}visitTensorType(e){return{kind:"list",elements:this.buildType(e.elementType)}}visitTupleType(e){return{kind:"tuple",elements:e.elements.map(n=>this.buildNamedElement(n))}}visitRecordType(e){if(e.entries.length===0)return"record";let t={};for(let n of e.entries)t[n.key]=this.buildType(n.valueType);return{kind:"record",elements:t}}visitDictionaryType(e){let t=this.buildType(e.valueType);return this.isAnyType(t)?"dictionary":{kind:"dictionary",values:t}}visitSetType(e){let t=this.buildType(e.elementType);return this.isAnyType(t)?"set":{kind:"set",elements:t}}visitCollectionType(e){let t=this.buildType(e.elementType);return e.indexed?this.isAnyType(t)?"indexed_collection":{kind:"indexed_collection",elements:t}:this.isAnyType(t)?"collection":{kind:"collection",elements:t}}visitExpressionType(e){return{kind:"expression",operator:e.operator}}visitSymbolType(e){return{kind:"symbol",name:e.name}}visitNumericType(e){if(!e.lowerBound&&!e.upperBound)return e.baseType;let t=e.lowerBound?this.buildValue(e.lowerBound):-1/0,n=e.upperBound?this.buildValue(e.upperBound):1/0;return t===-1/0&&n===1/0?e.baseType:{kind:"numeric",type:e.baseType,lower:t,upper:n}}visitPrimitiveType(e){return e.name}visitTypeReference(e){let t=this.typeResolver.resolve(e.name);if(t)return t;if(e.isForward){let n=this.typeResolver.forward(e.name);if(n)return n}return e.name}visitValue(e){return{kind:"value",value:e.value}}buildNamedElement(e){let t=this.buildType(e.type);return e.name?{name:e.name,type:t}:{type:t}}buildDimension(e){return e.size??-1}buildValue(e){return e.value}isAnyType(e){return e==="any"||typeof e=="object"&&"kind"in e&&e.kind==="primitive"&&"name"in e&&e.name==="any"}};function Ai(i,e){return new Ke(e).buildType(i)}function Qe(i,e){if(i!==void 0){if(Fi(i))return i;if(typeof i=="string")try{let n=new Me(i,{typeResolver:e}).parseType();return Ai(n,e)}catch(t){throw new Error(`Failed to parse type "${i}": ${t instanceof Error?t.message:String(t)}`)}}}var Dt={number:ue,non_finite_number:[],finite_number:["finite_complex","finite_real","finite_integer","finite_rational"],complex:["finite_complex","imaginary","finite_real","finite_rational","finite_integer","non_finite_number"],finite_complex:["imaginary","finite_real","finite_rational","finite_integer"],imaginary:[],real:["rational","integer","finite_real","finite_rational","finite_integer","non_finite_number"],finite_real:["finite_rational","finite_integer"],rational:["finite_rational","finite_integer","integer","non_finite_number"],finite_rational:["finite_integer"],integer:["finite_integer","non_finite_number"],finite_integer:[],any:$,unknown:[],nothing:[],never:[],error:[],value:ze,scalar:ke,collection:ve,indexed_collection:Xe,list:[],set:[],tuple:[],record:[],dictionary:[],function:[],symbol:[],boolean:[],string:[],expression:He};function ce(i,e){return e==="any"||i==="never"?!0:i==="unknown"||e==="unknown"?!1:i===e?!0:Dt[e].includes(i)}function N(i,e){if(typeof i=="string"&&!$.includes(i)&&(i=Qe(i)),typeof e=="string"&&!$.includes(e)&&(e=Qe(e)),e==="any")return!0;if(e==="never")return!1;if(e==="error")return i==="error";if(e==="nothing")return i==="nothing";if(i==="nothing")return!1;if(e==="unknown")return!0;if(i==="unknown")return!1;if(typeof e=="string")return typeof i=="string"?ce(i,e):i.kind==="value"?typeof i.value=="boolean"?e==="boolean":typeof i.value=="number"?Number.isInteger(i.value)?ce("integer",e):ce("number",e):typeof i.value=="boolean"?ce("boolean",e):typeof i.value=="string"?ce("string",e):!1:i.kind==="union"?i.types.every(t=>N(t,e)):i.kind==="intersection"?i.types.some(t=>N(t,e)):i.kind==="negation"?!N(i.type,e):i.kind==="numeric"?!!N(i.type,e):e==="number"?Oi(i):e==="symbol"?ei(i):e==="expression"?Rt(i):e==="function"?Zi(i):e==="scalar"?Vi(i):e==="value"?Li(i):e==="indexed_collection"?Ci(i):e==="collection"?_i(i):e==="tuple"?i.kind==="tuple":e==="list"?i.kind==="list":e==="set"?i.kind==="set":e==="record"?i.kind==="record":e==="dictionary"?i.kind==="dictionary":!1;if(e.kind==="union")return typeof i!="string"&&i.kind==="union"?i.types.every(t=>e.types.some(n=>N(t,n))):e.types.some(t=>N(i,t));if(e.kind==="expression"){if(i==="symbol")return!0;if(typeof i=="string")return!1;if(i.kind==="expression")return e.operator==="Symbol"?ei(i):i.operator===e.operator;if(i.kind==="symbol")return!0}if(typeof i=="string")return!1;if(e.kind==="reference"){if(i.kind==="reference")return i.name===e.name;if(e.alias===!0&&e.def)return N(i,e.def)}if(i.kind==="union")return i.types.some(t=>N(t,e));if(i.kind==="intersection"&&e.kind==="intersection")return e.types.every(t=>i.types.some(n=>N(n,t)));if(i.kind==="intersection")return i.types.every(t=>N(t,e));if(e.kind==="intersection")return e.types.every(t=>N(i,t));if(i.kind==="signature"&&e.kind==="signature"){if(!N(i.result,e.result))return!1;if(i.optArgs||i.variadicArg){if(e.args){if(!i.args||i.args.length!==e.args.length)return!1;for(let t=0;t<e.args.length;t++)if(!N(e.args[t].type,i.args[t].type))return!1}else if(i.args)return!1;if(e.optArgs){if(!i.optArgs||i.optArgs.length!==e.optArgs.length)return!1;for(let t=0;t<i.optArgs.length;t++)if(!N(e.optArgs[t].type,i.optArgs[t].type))return!1}else if(i.optArgs)return!1;if(e.variadicArg){if(!i.variadicArg||i.variadicMin!=e.variadicMin||!N(e.variadicArg.type,i.variadicArg.type))return!1}else if(i.variadicArg)return!1}else{if(e.args&&!i.args)return!1;let t=0;if(e.args){if(i.args.length<e.args.length)return!1;for(;t<e.args.length;){if(!N(e.args[t].type,i.args[t].type))return!1;t+=1}}if(e.optArgs){if(t>=i.args.length)return!0;for(let n=0;n<e.optArgs.length;n++){if(!N(e.optArgs[n].type,i.args[t].type))return!1;if(t+=1,t>=i.args.length)return!0}}if(e.variadicArg){if(t>=i.args.length&&e.variadicMin===0)return!0;if(e.variadicMin>0&&t+e.variadicMin>i.args.length)return!1;for(;t<i.args.length;){if(!N(e.variadicArg.type,i.args[t].type))return!1;t+=1}}}return!0}if(i.kind==="record"&&e.kind==="record"){for(let t of Object.keys(e.elements))if(!(t in i.elements)||!N(i.elements[t],e.elements[t]))return!1;return!0}if(i.kind==="dictionary"&&e.kind==="dictionary")return N(i.values,e.values);if(e.kind==="indexed_collection")return i.kind==="indexed_collection"||i.kind==="list"?N(i.elements,e.elements):i.kind==="tuple"?i.elements.every(t=>N(t.type,e.elements)):!1;if(e.kind==="collection"){if(i.kind==="collection"||i.kind==="indexed_collection"||i.kind==="list")return N(i.elements,e.elements);if(i.kind==="tuple")return i.elements.every(t=>N(t.type,e.elements));if(i.kind==="set")return N(i.elements,e.elements);if(i.kind==="dictionary")return N({kind:"tuple",elements:[{type:"string"},{type:i.values}]},e.elements);if(i.kind==="record")return N({kind:"tuple",elements:[{type:"string"},{type:Pt(...Object.values(i.elements))}]},e.elements)}if(i.kind==="tuple"&&e.kind==="tuple"){if(i.elements.length!==e.elements.length)return!1;for(let t=0;t<i.elements.length;t++){let n=i.elements[t],r=e.elements[t];if(!N(n.type,r.type)||n.name!==r.name)return!1}return!0}if(e.kind==="list"&&i.kind==="list"){if(!N(i.elements,e.elements))return!1;if(e.dimensions){if(!i.dimensions||i.dimensions.length!==e.dimensions.length)return!1;for(let t=0;t<i.dimensions.length;t++)if(e.dimensions[t]!==-1&&i.dimensions[t]!==e.dimensions[t])return!1}return!0}if(i.kind==="symbol"&&e.kind==="symbol")return i.name===e.name;if(i.kind==="numeric"&&e.kind==="numeric")return!(!N(i.type,e.type)||(i.lower??-1/0)<(e.lower??-1/0)||(i.upper??1/0)>(e.upper??1/0));if(e.kind==="set"&&i.kind==="set")return!!N(i.elements,e.elements);if(i.kind==="negation"&&e.kind==="negation")return N(i.type,e.type);if(e.kind==="negation")return!N(i,e.type);if(e.kind==="value"&&i.kind==="value")return e.value===i.value;if(i.kind==="value"){if(typeof i.value=="boolean")return N("boolean",e);if(typeof i.value=="number")return Number.isInteger(i.value)?N("integer",e):N("real",e);if(typeof i.value=="string")return N("string",e)}return!1}function Oi(i){return typeof i=="string"?ue.includes(i):i.kind==="value"?typeof i.value=="number":i.kind==="numeric"}function Vi(i){return Oi(i)?!0:typeof i=="string"?ke.includes(i):i.kind==="value"?["string","boolean","number"].includes(typeof i.value):!1}function _i(i){return Ci(i)?!0:typeof i=="string"?ve.includes(i):["collection","set","record","dictionary"].includes(i.kind)}function Ci(i){return typeof i=="string"?!1:["indexed_collection","list","tuple"].includes(i.kind)}function Li(i){return Vi(i)||_i(i)}function Zi(i){return i==="function"||typeof i!="string"&&i.kind==="signature"}function Rt(i){return typeof i=="string"&&["expression","symbol","function"].includes(i)||Li(i)||Zi(i)||ei(i)?!0:typeof i=="string"?!1:i.kind==="expression"}function ei(i){return i==="symbol"?!0:typeof i=="string"?!1:i.kind==="symbol"?!0:i.kind==="expression"?i.operator==="Symbol":!1}function Ft(i,e){return i===e?i:i==="any"||e==="any"?"any":i==="never"?e:e==="never"?i:i==="unknown"?e:e==="unknown"?i:i==="nothing"?e:e==="nothing"?i:N(i,e)?e:N(e,i)?i:At(i,e)}function Pt(...i){return i.length===0?"nothing":i.length===1?i[0]:i.reduce((e,t)=>Ft(e,t))}function At(i,e){return i===e?i:i==="any"||e==="any"?"any":i==="never"?e:e==="never"?i:i==="unknown"?e:e==="unknown"?i:i==="nothing"?e:e==="nothing"?i:k(i,e,"non_finite_number")?"non_finite_number":k(i,e,"finite_integer")?"finite_integer":k(i,e,"integer")?"integer":k(i,e,"finite_rational")?"finite_rational":k(i,e,"rational")?"rational":k(i,e,"finite_real")?"finite_real":k(i,e,"real")?"real":k(i,e,"imaginary")?"imaginary":k(i,e,"finite_complex")?"finite_complex":k(i,e,"complex")?"complex":k(i,e,"finite_number")?"finite_number":k(i,e,"number")?"number":k(i,e,"list")?"list":k(i,e,"record")?"record":k(i,e,"dictionary")?"dictionary":k(i,e,"set")?"set":k(i,e,"tuple")?"tuple":k(i,e,"indexed_collection")?"indexed_collection":k(i,e,"collection")?"collection":k(i,e,"scalar")?"scalar":k(i,e,"value")?"value":k(i,e,"function")?"function":k(i,e,"expression")?"expression":"any"}function k(i,e,t){return!!(N(i,t)&&N(e,t))}var J=class i extends D{__brand;rational;radical;im=0;factory;constructor(e,t){if(super(),this.factory=t,typeof e=="number"){!Number.isFinite(e)||Number.isInteger(e),this.rational=[e,1],this.radical=1;return}if(typeof e=="bigint"){this.rational=[e,BigInt(1)],this.radical=1;return}typeof e!="object"||"im"in e;let n=1;if(typeof n!="number"||Number.isInteger(n),n==0){this.rational=[0,1],this.radical=1;return}let r=e.rational?[...e.rational]:[1,1];n!=1&&(typeof n=="bigint"?r=_(r,[n,BigInt(1)]):r=_(r,[n,1])),this.rational=r,this.radical=e.radical??1,this.radical<=S&&this.radical>=1,this.normalize()}get type(){return this.isNaN?"number":this.isPositiveInfinity||this.isNegativeInfinity?"non_finite_number":this.radical!==1?(X(this.rational),"finite_real"):ae(this.rational)?"finite_integer":"finite_rational"}get isExact(){return!0}get asExact(){return this}toJSON(){if(this.isNaN)return"NaN";if(this.isPositiveInfinity)return"PositiveInfinity";if(this.isNegativeInfinity)return"NegativeInfinity";if(this.isZero)return 0;if(this.isOne)return 1;if(this.isNegativeOne)return-1;let e=t=>ae(t)?R(t[0]):["Rational",R(t[0]),R(t[1])];return this.radical===1?e(this.rational):Ge(this.rational)?["Sqrt",this.radical]:We(this.rational)?["Negate",["Sqrt",this.radical]]:this.rational[0]==1?["Divide",["Sqrt",this.radical],R(this.rational[1])]:this.rational[0]==-1?["Negate",["Divide",["Sqrt",this.radical],R(this.rational[1])]]:["Multiply",e(this.rational),["Sqrt",this.radical]]}clone(e){return new i(e,this.factory)}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";let e=n=>ae(n)?B(n[0]):`${B(n[0])}/${B(n[1])}`;if(this.radical===1)return e(this.rational);let t=n=>`sqrt(${B(n)})`;return Ge(this.rational)?t(this.radical):We(this.rational)?`-${t(this.radical)}`:this.rational[0]==1?`${t(this.radical)}/${B(this.rational[1])}`:this.rational[0]==-1?`-${t(this.radical)}/${B(this.rational[1])}`:`${e(this.rational)}${t(this.radical)}`}get sign(){return X(this.rational)?0:Je(this.rational)?1:-1}get re(){return Bi(this.rational)*Math.sqrt(this.radical)}get bignumRe(){let e,t=this.rational;return A(t)?e=new a(t[0]).div(t[1]):e=new a(t[0]).div(new a(t[1])),this.radical===1?e:e.mul(new a(this.radical).sqrt())}get numerator(){return this.rational[1]==1?this:this.clone({rational:A(this.rational)?[this.rational[0],1]:[this.rational[0],BigInt(1)],radical:this.radical})}get denominator(){return A(this.rational)?this.clone(this.rational[1]):this.clone({rational:[this.rational[1],BigInt(1)]})}normalize(){if(Number.isInteger(this.radical)&&this.radical>0&&Number.isFinite(this.radical),isNaN(this.radical)){this.rational=[NaN,1],this.radical=1;return}let[e,t]=this.rational;if(t==0){this.rational=[NaN,1],this.radical=1;return}if(this.radical===0||e===0){this.rational=[0,1],this.radical=1;return}if(this.radical>=4){let[n,r]=W(this.radical,2);n!==1&&(this.rational=_(this.rational,[n,1])),this.radical=r}this.rational=Ie(this.rational)}get isNaN(){return Number.isNaN(this.rational[0])}get isPositiveInfinity(){return this.rational[0]==1/0}get isNegativeInfinity(){return this.rational[0]==-1/0}get isComplexInfinity(){return!1}get isZero(){return X(this.rational)}get isOne(){return!(this.rational[0]!==this.rational[1]||this.radical!==1)}get isNegativeOne(){return!(this.rational[0]!==-this.rational[1]||this.radical!==1)}sgn(){if(!Number.isNaN(this.rational[0]))return X(this.rational)?0:Je(this.rational)?1:-1}N(){return this.isZero||this.isOne||this.isNegativeOne?this:this.rational[1]==1&&this.radical===1?this:this.factory(this.bignumRe)}neg(){return this.isZero?this:this.clone({rational:Si(this.rational),radical:this.radical})}inv(){return this.isOne?this:this.isNegativeOne?this:this.clone({rational:_([BigInt(this.rational[1]),BigInt(1)],Ee([BigInt(this.rational[0])*BigInt(this.radical),BigInt(1)])),radical:this.radical})}add(e){return typeof e=="number"?e===0?this:Number.isInteger(e)&&this.radical===1?this.clone({rational:z(this.rational,[e,1])}):this.factory(this.bignumRe).add(e):e.isZero?this:this.isZero?e:e instanceof i?this.radical===e.radical?this.clone({rational:z(this.rational,e.rational),radical:this.radical}):this.factory(this.bignumRe).add(e):e.add(this)}sub(e){return this.add(e.neg())}mul(e){if(e===0)return this.isPositiveInfinity||this.isNegativeInfinity||this.isNaN?this.clone(NaN):this.clone(0);if(e===1)return this;if(e===-1)return this.neg();if(typeof e=="number")return Number.isInteger(e)?this.clone({rational:_(this.rational,[e,1]),radical:this.radical}):this.factory(this.bignumRe).mul(e);if(e instanceof a)return this.factory(e).mul(this);if(e.im!==0)return e.mul(this);if(e.isZero)return this.isPositiveInfinity||this.isNegativeInfinity||this.isNaN?this.clone(NaN):e;if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isNaN)return e;if(this.isZero)return e.isPositiveInfinity||e.isNegativeInfinity||e.isComplexInfinity||e.isNaN?this.clone(NaN):this;if(this.isOne)return e;if(this.isNegativeOne)return e.neg();if(!(e instanceof i))return e.mul(this);let t=BigInt(this.radical)*BigInt(e.radical);return t>BigInt(S)?this.factory(this.bignumRe).mul(e):this.clone({rational:_(this.rational,e.rational),radical:Number(t)})}div(e){if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({rational:_(this.rational,[1,e]),radical:this.radical});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(this.isZero)return e.isZero?this.clone(NaN):e.isNaN?e:this;if(e.isNaN)return e;if(e.isZero)return this.clone(this.sign*(1/0));if(!(e instanceof i))return this.factory(this.bignumRe).div(e);if(e.im!==0)return this.factory(this.bignumRe).div(e);let t=_(this.rational,[BigInt(e.rational[1]),BigInt(e.rational[0])*BigInt(e.radical)]),n=BigInt(this.radical)*BigInt(e.radical);return n>BigInt(S)?this.factory(this.bignumRe).div(e):this.clone({rational:t,radical:Number(n)})}pow(e){if(Array.isArray(e),this.isNaN)return this;if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof D){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;if(e.im)e={re:e.re,im:e.im};else{if(e instanceof i&&e.radical===1&&e.rational[0]==1)return this.root(e.rational[0]);e=e.re}}if(e===.5)return this.sqrt();if(typeof e=="object"&&("re"in e||"im"in e))return this.factory(this.bignumRe).pow(e);if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.factory({im:1/0})}if(e<0)return this.pow(-e).inv();if(e%1===.5)return this.pow(Math.floor(e)).mul(this.sqrt());if(this.radical>S||this.rational[0]>S||this.rational[0]<-S||this.rational[1]>S)return this.factory(this.bignumRe).pow(e);if(this.sign<0){if(Number.isInteger(e)){let t=e%2===0?1:-1,n=BigInt(e),r=BigInt(this.radical)**n;return r>BigInt(S)?this.factory(this.bignumRe).pow(e):this.clone({rational:[BigInt(t)*(-BigInt(this.rational[0]))**n,BigInt(this.rational[1])**n],radical:Number(r)})}return this.factory({im:(-this.re)**e})}else if(Number.isInteger(e)){let t=BigInt(e),n=BigInt(this.radical)**t;return n>BigInt(S)?this.factory(this.bignumRe).pow(e):this.clone({rational:[BigInt(this.rational[0])**t,BigInt(this.rational[1])**t],radical:Number(n)})}return this.factory(this.bignumRe).pow(e)}root(e){if(e===0)return this.clone(NaN);if(this.isNaN)return this;if(this.isZero)return this;if(e===1)return this;if(e===-1)return this.inv();if(e<0)return this.root(-e).inv();if(e%1===.5)return this.root(Math.floor(e)).sqrt();if(this.radical===1){if(this.sign>0){let t=this.re;if(Number.isInteger(t)){if(t>0){let n=Math.pow(t,1/e);if(Number.isInteger(n))return this.clone(n)}return this.factory(this.bignumRe).root(e)}}return this.factory(this.bignumRe).root(e)}if(this.sign<0)return this.factory({im:Math.pow(-this.re,1/e)});if(this.radical>S||this.rational[0]>S||this.rational[0]<-S||this.rational[1]>S)return this.factory(this.bignumRe).root(e);if(this.rational[1]==1){let t=Math.pow(this.rational[0],1/e);if(Number.isInteger(t))return this.clone(t)}return this.factory(this.bignumRe).root(e)}sqrt(){if(this.isZero||this.isOne)return this;if(this.radical===1)if(A(this.rational)){let[e,t]=this.rational;return e*t>S?this.factory(this.bignumRe).sqrt():e>0?this.clone({radical:e*t,rational:[1,t]}):this.factory({im:Math.sqrt(-e*t)/t})}else return this.factory(this.bignumRe).sqrt();if(this.sign>0){let e=Math.sqrt(this.re);if(Number.isInteger(e))return this.clone(e)}return this.factory(this.bignumRe).sqrt()}gcd(e){if(!(e instanceof i))return e.gcd(this);if(this.isOne||e.im!==0||e.isOne)return this.clone(1);let t=wi(this.rational,e.rational),n=P(this.radical,e.radical);return this.clone({rational:t,radical:n})}abs(){return this.sign===-1?this.neg():this}ln(e){return this.isZero?this.clone(NaN):this.isPositiveInfinity?this.clone(1/0):this.sign<0?this.clone(NaN):this.isOne?this.clone(0):this.isNegativeOne?this.factory({im:Math.PI}):this.factory(this.bignumRe).ln(e)}exp(){return this.isNaN?this.clone(NaN):this.isZero?this.clone(1):this.isNegativeInfinity?this.clone(0):this.isPositiveInfinity?this.clone(1/0):this.factory(this.bignumRe).exp()}floor(){return this.isNaN?this.clone(NaN):this.type==="integer"?this:this.clone(Math.floor(this.re))}ceil(){return this.isNaN?this.clone(NaN):this.type==="integer"?this:this.clone(Math.ceil(this.re))}round(){return this.isNaN?this.clone(NaN):this.type==="integer"?this:this.clone(Math.round(this.re))}eq(e){return typeof e=="number"?this.radical===1&&ae(this.rational)&&this.rational[0]==e:e instanceof i?this.radical===e.radical&&this.rational[0]==e.rational[0]&&this.rational[1]==e.rational[1]:e.im===0&&e.re===this.re}lt(e){if(this.im===0)return typeof e=="number"?this.re<e:this.re<e.re}lte(e){if(this.im===0)return typeof e=="number"?this.re<=e:this.re<=e.re}gt(e){if(this.im===0)return typeof e=="number"?this.re>e:this.re>e.re}gte(e){if(this.im===0)return typeof e=="number"?this.re>=e:this.re>=e.re}static sum(e,t){if(e.length===1)return e;if(e.some(u=>!u.isExact)){if(e.length===2)return[e[0].add(e[1])];let u=t(0);for(let c of e)u=u.add(c);return[u]}let n=0,r=[0,1],s=[];for(let u of e){if(u.isNaN)return[new i(NaN,t)];if(!u.isZero)if(n+=u.im,u instanceof i){let c=u.rational;if(u.radical===1)r=z(r,c);else{let l=s.findIndex(h=>h.radical===u.radical);l===-1?s.push({multiple:c,radical:u.radical}):s[l].multiple=z(s[l].multiple,c)}}else{N(u.type,"integer");let c=BigInt(u.bignumRe.toFixed(0));r=z(r,[c,BigInt(1)])}}if(X(r)&&s.length===0)return n===0?[new i(0,t)]:[t({im:n})];let o=[];return n!==0&&o.push(t({im:n})),s.length===0?o.push(new i({rational:r},t)):(s.push({multiple:r,radical:1}),o.push(...s.map(u=>new i({rational:u.multiple,radical:u.radical},t)))),o}};function Ui(i,e){for(i.isInteger()&&e.isInteger();!e.isZero();)[i,e]=[e,i.mod(e)];return i.abs()}function Ot(i,e){return i.mul(e).div(Ui(i,e))}function*Vt(i){if(!i.isInteger()||i.isNegative())return a.NAN;if(i.lt(1))return a.ONE;let e=i;for(;i.gt(2);)i=i.sub(2),e=e.mul(i),yield e;return e}function Be(i){if(!i.isFinite()||i.isZero())return!0;let n=(i.significand<0n?-i.significand:i.significand).toString().length;if(n>17)return!1;let r=n+i.exponent-1;return r<309&&r>-308}var ii=class i extends D{__brand;decimal;constructor(e){if(super(),typeof e=="number")this.decimal=new a(e),this.im=0;else if(e instanceof a)this.decimal=e,this.im=0;else{let t=e.re instanceof a?e.re:new a(e.re??0);this.decimal=t,this.im=e.im??0}this.decimal.isNaN()&&(this.im=NaN),this.decimal.isNaN(),isNaN(this.im)}get type(){return this.isNaN?"number":this.isComplexInfinity?"complex":this.im!==0?this.decimal.isZero()?"imaginary":"finite_complex":this.decimal.isFinite()?this.decimal.isInteger()?"finite_integer":"finite_real":"non_finite_number"}get isExact(){return this.im===0&&this.decimal.isInteger()}get asExact(){if(this.isExact)return this._makeExact(F(this.decimal))}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.isComplexInfinity?"ComplexInfinity":this.im===0?Be(this.decimal)?this.decimal.toNumber():{num:Se(this.decimal)}:Be(this.decimal)?["Complex",R(this.decimal.toNumber()),R(this.im)]:["Complex",{num:Se(this.decimal)},R(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return Se(this.decimal.toPrecision(a.precision));if(this.decimal.isZero())return this.im===1?"i":this.im===-1?"-i":`${B(this.im)}i`;if(this.isComplexInfinity)return"~oo";let e="";return this.im===1?e="+ i":this.im===-1?e="- i":this.im>0?e=`+ ${this.im}i`:e=`- ${-this.im}i`,`(${Se(this.decimal)} ${e})`}clone(e){return new i(e)}_makeExact(e){return new J(e,t=>this.clone(t))}get re(){return this.decimal.toNumber()}get bignumRe(){return this.decimal}get numerator(){return this}get denominator(){return this._makeExact(1)}get isNaN(){return this.decimal.isNaN()}get isPositiveInfinity(){return this.im===0&&!this.decimal.isFinite()&&!this.decimal.isNaN()&&this.decimal.isPositive()}get isNegativeInfinity(){return this.im===0&&!this.decimal.isFinite()&&!this.decimal.isNaN()&&this.decimal.isNegative()}get isComplexInfinity(){return!Number.isFinite(this.im)&&!Number.isNaN(this.im)}get isZero(){return this.im===0&&this.decimal.isZero()}isZeroWithTolerance(e){if(this.im!==0)return!1;let t=typeof e=="number"?new a(e):e;return this.decimal.abs().lte(t)}get isOne(){return this.im===0&&this.decimal.eq(1)}get isNegativeOne(){return this.im===0&&this.decimal.eq(-1)}sgn(){if(this.im===0){if(this.decimal.isZero())return 0;if(this.decimal.isPositive())return 1;if(this.decimal.isNegative())return-1}}N(){return this}neg(){return this.isZero?this:this.clone({re:this.decimal.neg(),im:-this.im})}inv(){if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.clone(this.decimal.inv());let e=Math.hypot(this.re,this.im),t=this.decimal.mul(this.decimal).add(this.im*this.im).sqrt();return this.clone({re:this.decimal.div(t),im:-this.im/e})}add(e){return typeof e=="number"?e===0?this:this.clone({re:this.decimal.add(e),im:this.im}):e.isZero?this:this.isZero?this.clone(e):this.clone({re:this.decimal.add(e.bignumRe??e.re),im:this.im+e.im})}sub(e){return this.add(e.neg())}mul(e){if(this.isZero)return e instanceof D&&(e.isPositiveInfinity||e.isNegativeInfinity||e.isComplexInfinity||e.isNaN)?this._makeExact(NaN):this;if(e===1)return this;if(e===-1)return this.neg();if(e===0)return this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0);if(this.isOne)return typeof e=="number"||e instanceof a?this.clone(e):this.clone({re:e.bignumRe??e.re,im:e.im});if(typeof e=="number")return this.im===0?this.clone(this.decimal.mul(e)):this.clone({re:this.decimal.mul(e),im:this.im*e});if(e instanceof a)return this.im===0?this.clone(this.decimal.mul(e)):this.clone({re:this.decimal.mul(e),im:this.im*e.toNumber()});if(this.isNegativeOne){let t=e.neg();return this.clone({re:t.bignumRe??t.re,im:t.im})}return e.isOne?this:e.isNegativeOne?this.neg():e.isZero?this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0):this.im===0&&e.im===0?this.clone(this.decimal.mul(e.bignumRe??e.re)):this.clone({re:this.decimal.mul(e.bignumRe??e.re).sub(this.im*e.im),im:this.re*e.im+this.im*e.re})}div(e){if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({re:this.decimal.div(e),im:this.im/e});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isZero)return this.clone(this.isZero?NaN:1/0);if(this.im===0&&e.im===0)return this.clone(this.decimal.div(e.bignumRe??e.re));let[t,n]=[this.re,this.im],[r,s]=[e.re,e.im],o=r*r+s*s,u=e.bignumRe??new a(e.re),c=u.mul(u).add(s*s);return this.clone({re:this.decimal.mul(u).add(n*s).div(c),im:(n*r-t*s)/o})}pow(e){if(Array.isArray(e),this.isNaN)return this;if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof D){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;e.im?e={re:e.re,im:e.im}:e=e.re}if(typeof e=="object"&&("re"in e||"im"in e)){let[c,l]=[e?.re??0,e?.im??0];if(Number.isNaN(l)||Number.isNaN(c))return this.clone(NaN);if(l===0)e=c;else{if(this.im===1/0)return this.clone(NaN);if(this.isNegativeInfinity)return this.clone(0);if(this.isPositiveInfinity)return this.clone({im:1/0});let h=this.pow(c),f=this.decimal.ln().mul(l),p=this.clone({re:f.cos(),im:H(f.sin().toNumber())});return h.mul(p)}}if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.clone({im:1/0})}if(e<0)return this.pow(-e).inv();if(this.im===0)return this.clone(this.decimal.pow(e));let t=this.decimal,n=this.im,r=t.mul(t).add(n*n).sqrt(),s=a.atan2(n,t),o=r.pow(e),u=s.mul(e);return this.clone({re:o.mul(u.cos()),im:H(o.mul(u.sin()).toNumber())})}root(e){if(!Number.isInteger(e))return this._makeExact(NaN);if(e===0)return this._makeExact(NaN);if(e===1)return this;if(this.isZero)return this;if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.decimal.isNegative()?this._makeExact(NaN):e===2?this.clone(this.decimal.sqrt()):e===3?this.clone(this.decimal.cbrt()):this.clone(this.decimal.pow(1/e));let t=this.decimal,n=this.im,r=t.mul(t).add(n*n).sqrt(),s=a.atan2(n,t),o=r.pow(1/e),u=s.div(e);return this.clone({re:o.mul(u.cos()),im:H(o.mul(u.sin()).toNumber())})}sqrt(){if(this.isZero||this.isOne)return this;if(this.im!==0){let e=this.decimal,t=this.im,n=e.mul(e).add(t*t).sqrt(),r=e.add(n).div(2).sqrt(),s=H(Math.sign(t)*n.sub(e).div(2).sqrt().toNumber());return this.clone({re:r,im:s})}return this.decimal.isPositive()?this.clone(this.decimal.sqrt()):this.clone({im:Math.sqrt(-this.re)})}gcd(e){if(this.isZero)return e;if(e.isZero)return this;if(this.im!==0||e.im!==0)return this._makeExact(NaN);if(!this.decimal.isInteger())return this._makeExact(1);let t=e.bignumRe?new a(e.bignumRe):new a(e.re);if(!t.isInteger())return this._makeExact(1);let n=this.decimal;for(;!t.isZero();){let r=t;t=n.mod(t),n=r}return this.clone(n.abs())}abs(){return this.im===0?this.decimal.isPositive()?this:this.clone(this.decimal.neg()):this.clone(this.decimal.pow(2).add(this.im**2).sqrt())}ln(e){if(this.isZero)return this._makeExact(NaN);if(this.isNegativeInfinity)return this._makeExact(NaN);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im===0)return this.decimal.isNegative()?this._makeExact(NaN):this.isOne?this._makeExact(0):this.isNegativeOne?this.clone({im:Math.PI}):e===void 0?this.clone(this.decimal.ln()):this.clone(this.decimal.log(e));let t=this.decimal,n=this.im,r=t.mul(t).add(n*n).sqrt(),s=a.atan2(n,t).toNumber();return e===void 0?this.clone({re:r.ln(),im:s}):this.clone({re:r.log(e),im:s})}exp(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(1);if(this.isNegativeInfinity)return this._makeExact(0);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im!==0){let e=this.decimal.exp();return this.clone({re:e.mul(H(Math.cos(this.im))),im:H(e.mul(Math.sin(this.im)).toNumber())})}return this.clone(this.decimal.exp())}floor(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(F(this.decimal.floor()))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(F(this.decimal.ceil()))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(F(this.decimal.round()))}eq(e){return this.isNaN?!1:typeof e=="number"?this.im===0&&this.decimal.eq(e):e.isNaN?!1:Number.isFinite(this.im)?this.decimal.eq(e.bignumRe??e.re)&&this.im-e.im===0:!Number.isFinite(e.im)}lt(e){if(this.im===0)return typeof e=="number"?this.decimal.lt(e):this.decimal.lt(e.bignumRe??e.re)}lte(e){if(this.im===0)return typeof e=="number"?this.decimal.lte(e):this.decimal.lte(e.bignumRe??e.re)}gt(e){if(this.im===0)return typeof e=="number"?this.decimal.gt(e):this.decimal.gt(e.bignumRe??e.re)}gte(e){if(this.im===0)return typeof e=="number"?this.decimal.gte(e):this.decimal.gte(e.bignumRe??e.re)}};function Se(i){let e=i.toString();if(i.isInteger()&&e.includes("e")){let t=i.toFixed(0),n=t.match(/0+$/);if((n?n[0].length:0)<=5)return t}return e}function H(i){return Math.abs(i)<=1e-14?0:i}var ti=class i extends D{__brand;decimal;constructor(e){if(super(),typeof e=="number")this.decimal=e,this.im=0;else if(e instanceof a)this.decimal=e.toNumber(),this.im=0;else{let t=e.re===void 0?0:e.re instanceof a?e.re.toNumber():e.re;this.decimal=t,this.im=e.im??0,isFinite(this.im)||(this.decimal=this.im)}isNaN(this.im)}_makeExact(e){return new J(e,t=>this.clone(t))}get type(){return this.isNaN?"number":this.isComplexInfinity?"complex":this.im!==0?this.decimal===0?"imaginary":"finite_complex":Number.isFinite(this.decimal)?Number.isInteger(this.decimal)?"finite_integer":"finite_real":"non_finite_number"}get isExact(){return this.im===0&&Number.isInteger(this.decimal)}get asExact(){if(this.isExact)return this._makeExact(this.decimal)}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.im===0?R(this.decimal):["Complex",R(this.decimal),R(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return B(this.decimal);if(this.decimal===0)return this.im===1?"i":this.im===-1?"-i":`${B(this.im)}i`;if(this.isComplexInfinity)return"~oo";let e="";return this.im===1?e="+ i":this.im===-1?e="- i":this.im>0?e=`+ ${B(this.im)}i`:e=`- ${B(-this.im)}i`,`(${B(this.decimal)} ${e})`}clone(e){return new i(e)}get re(){return this.decimal}get bignumRe(){}get numerator(){return this}get denominator(){return this._makeExact(1)}get isNaN(){return Number.isNaN(this.decimal)}get isPositiveInfinity(){return!Number.isFinite(this.decimal)&&this.decimal>0&&this.im===0}get isNegativeInfinity(){return!Number.isFinite(this.decimal)&&this.decimal<0&&this.im===0}get isComplexInfinity(){return!Number.isFinite(this.im)&&!Number.isNaN(this.im)}get isZero(){return this.im===0&&this.decimal===0}isZeroWithTolerance(e){if(this.im!==0)return!1;let t=e instanceof a?e.toNumber():e;return Math.abs(this.decimal)<t}get isOne(){return this.im===0&&this.decimal===1}get isNegativeOne(){return this.im===0&&this.decimal===-1}sgn(){if(!(this.im!==0||!Number.isFinite(this.decimal)))return Math.sign(this.decimal)}N(){return this}neg(){return this.isNaN?this._makeExact(NaN):this.isZero?this:this.clone({re:-this.decimal,im:-this.im})}inv(){if(this.isNaN)return this._makeExact(NaN);if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.clone(1/this.decimal);let e=Math.hypot(this.re,this.im);return this.clone({re:this.decimal/e,im:-this.im/e})}add(e){return this.isNaN?this._makeExact(NaN):typeof e=="number"?e===0?this:this.clone({re:this.decimal+e,im:this.im}):e.isZero?this:this.isZero?this.clone({re:e.bignumRe??e.re,im:e.im}):this.clone({re:this.decimal+e.re,im:this.im+e.im})}sub(e){return this.add(e.neg())}mul(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return e instanceof D&&(e.isPositiveInfinity||e.isNegativeInfinity||e.isComplexInfinity||e.isNaN)?this._makeExact(NaN):this;if(e instanceof a&&(e=e.toNumber()),e===1)return this;if(e===-1)return this.neg();if(e===0)return this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0);if(this.isOne)return typeof e=="number"||e instanceof a?this.clone(e):this.clone({re:e.bignumRe??e.re,im:e.im});if(typeof e=="number")return this.im===0?this.clone(this.decimal*e):this.clone({re:this.decimal*e,im:this.im*e});if(this.isNegativeOne){let t=e.neg();return this.clone({re:t.bignumRe??t.re,im:t.im})}return e.isOne?this:e.isNegativeOne?this.neg():e.isZero?this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0):this.im===0&&e.im===0?this.clone(this.decimal*e.re):this.clone({re:this.decimal*e.re-this.im*e.im,im:this.re*e.im+this.im*e.re})}div(e){if(this.isNaN)return this._makeExact(NaN);if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({re:this.decimal/e,im:this.im/e});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isZero)return this.clone(this.isZero?NaN:1/0);if(this.im===0&&e.im===0)return this.clone(this.decimal/e.re);let[t,n]=[this.decimal,this.im],[r,s]=[e.re,e.im],o=r*r+s*s;return this.clone({re:(t*r+n*s)/o,im:(n*r-t*s)/o})}pow(e){if(Array.isArray(e),this.isNaN)return this._makeExact(NaN);if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof D){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;e.im?e={re:e.re,im:e.im}:e=e.re}if(typeof e=="object"&&("re"in e||"im"in e)){let[c,l]=[e?.re??0,e?.im??0];if(Number.isNaN(l)||Number.isNaN(c))return this.clone(NaN);if(l===0)e=c;else{if(this.im===1/0)return this.clone(NaN);if(this.isNegativeInfinity)return this.clone(0);if(this.isPositiveInfinity)return this.clone({im:1/0});let h=this.pow(c).re,f=Math.log(this.decimal)*l;return this.clone({re:$i(h*Math.cos(f)),im:$i(h*Math.sin(f))})}}if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.clone({im:1/0})}if(e<0)return this.clone(1/this.decimal**-e);if(this.im===0)return this.clone(this.decimal**e);let t=this.decimal,n=this.im,r=Math.sqrt(t*t+n*n),s=Math.atan2(n,t),o=r**e,u=s**e;return this.clone({re:o*Math.cos(u),im:o*Math.sin(u)})}root(e){if(this.isNaN)return this._makeExact(NaN);if(e===0)return this.clone(NaN);if(this.isNaN)return this;if(this.isZero)return this;if(this.isOne)return this;if(this.isNegativeOne)return this;if(e===1)return this;if(e===2)return this.sqrt();if(e===3)return this.clone(Math.cbrt(this.decimal));if(this.im===0)return this.decimal<0?e%2===0?this.clone(NaN):this.clone(-Math.pow(-this.decimal,1/e)):this.clone(Math.pow(this.decimal,1/e));let t=this.decimal,n=this.im,r=Math.hypot(t,n),s=Math.atan2(n,t),o=Math.pow(r,1/e),u=s/e;return this.clone({re:o*Math.cos(u),im:o*Math.sin(u)})}sqrt(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero||this.isOne)return this;if(this.im!==0){let e=this.decimal,t=this.im,n=Math.sqrt(e*e+t*t),r=Math.sqrt((e+n)/2),s=Math.sign(t)*Math.sqrt((n-e)/2);return this.clone({re:r,im:s})}return this.decimal>0?this.clone(Math.sqrt(this.decimal)):this.clone({im:Math.sqrt(-this.decimal)})}gcd(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return e;if(e.isZero)return this;if(this.im!==0||e.im!==0)return this._makeExact(NaN);if(!Number.isInteger(this.decimal))return this._makeExact(1);let t=e.re;if(!Number.isInteger(t))return this._makeExact(1);let n=this.decimal;for(;t!==0;){let r=t;t=n%t,n=r}return this.clone(Math.abs(n))}abs(){return this.isNaN?this._makeExact(NaN):this.im===0?this.decimal>0?this:this.clone(-this.decimal):this.clone(Math.sqrt(this.decimal**2+this.im**2))}ln(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(NaN);if(this.isNegativeInfinity)return this._makeExact(NaN);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im===0)return this.decimal<0?this._makeExact(NaN):this.isOne?this._makeExact(0):this.isNegativeOne?this.clone({im:Math.PI}):e===void 0?this.clone(Math.log(this.decimal)):this.clone(Math.log(this.decimal)/Math.log(e));let t=this.decimal,n=this.im,r=Math.hypot(t,n),s=Math.atan2(n,t),o=e===void 0?Math.log(r):Math.log(r)/Math.log(e);return this.clone({re:o,im:s})}exp(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(1);if(this.isNegativeInfinity)return this._makeExact(0);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im!==0){let e=Math.exp(this.decimal);return this.clone({re:e*Math.cos(this.im),im:e*Math.sin(this.im)})}return this.clone(Math.exp(this.decimal))}floor(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.floor(this.decimal))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.ceil(this.decimal))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.round(this.decimal))}eq(e){return this.isNaN?!1:typeof e=="number"?this.im===0&&this.decimal-e===0:e.isNaN?!1:Number.isFinite(this.im)?this.decimal-e.re===0&&this.im-e.im===0:!Number.isFinite(e.im)}lt(e){if(this.im===0)return typeof e=="number"?this.decimal<e:this.decimal<e.re}lte(e){if(this.im===0)return typeof e=="number"?this.decimal<=e:this.decimal<=e.re}gt(e){if(this.im===0)return typeof e=="number"?this.decimal>e:this.decimal>e.re}gte(e){if(this.im===0)return typeof e=="number"?this.decimal>=e:this.decimal>=e.re}};function $i(i){return Math.abs(i)<=1e-14?0:i}function qi(i){return i?._kind==="number"}function _t(i){return i?._kind==="symbol"}function le(i,e){return(i?._kind==="function"||i?._kind==="tensor")&&(e===void 0||i.operator===e)}function Us(i){if(le(i,"Interval")){let e=i.op1,t=i.op2,n=!1,r=!1;le(e,"Open")?(n=!0,e=e.op1):le(e,"Closed")&&(e=e.op1),le(t,"Open")?(r=!0,t=t.op1):le(t,"Closed")&&(t=t.op1);let s=e.N(),o=t.N();return!qi(s)||!qi(o)?void 0:{start:s.re,openStart:n,end:o.re,openEnd:r}}if(_t(i)){if(i.symbol==="EmptySet")return{start:0,openStart:!0,end:0,openEnd:!0};if(i.symbol==="RealNumbers")return{start:-1/0,openStart:!1,end:1/0,openEnd:!1};if(i.symbol==="NegativeNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!0};if(i.symbol==="NonPositiveNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!1};if(i.symbol==="PositiveNumbers")return{start:0,openStart:!0,end:1/0,openEnd:!1};if(i.symbol==="NonNegativeNumbers")return{start:0,openStart:!1,end:1/0,openEnd:!1}}}function $s(i,e){return!(i.openStart&&i.start<=e||i.start<e||i.openEnd&&i.end>=e||i.end>e)}function qs(i,e){if(i.openStart){if(e.openStart){if(i.start<=e.start)return!1}else if(i.start<e.start)return!1}else if(e.openStart){if(i.start<=e.start)return!1}else if(i.start<e.start)return!1;if(i.openEnd){if(e.openEnd){if(i.end>=e.end)return!1}else if(i.end>e.end)return!1}else if(e.openEnd){if(i.end>=e.end)return!1}else if(i.end>e.end)return!1;return!0}function Ct(i){let e=i.length;if(e===1)return i[0][0];if(e===2)return i[0][0]*i[1][1]-i[0][1]*i[1][0];let t=[],n=0;for(let r=0;r<e;r++){let s=0;for(let o=1;o<e;o++){let u=0;for(let c=0;c<e;c++)c!==r&&(t[s][u]=i[o][c],u++);s++}n=n+Math.pow(-1,r)*i[0][r]*Ct(t)}return n}function Lt(i,e){if(e===0)return{estimate:i,error:e};let t=Math.abs(e),n=Math.floor(Math.log10(t)),r=2,s=Math.pow(10,n-(r-1)),o=Math.round(e/s)*s,u=Math.max(0,-(n-(r-1)));return{estimate:Number(i.toFixed(u)),error:o}}function Gs(i,e,t,n=1e5){let r=0,s=0;if(e===-1/0&&t===1/0)for(let m=0;m<n;m++){let d=Math.random(),g=Math.tan(Math.PI*(d-.5)),b=i(g)*Math.PI*(1+g*g);r+=b,s+=b*b}else if(e===-1/0)for(let m=0;m<n;m++){let d=Math.random(),g=t+Math.log(d),b=i(g)/d;r+=b,s+=b*b}else if(t===1/0)for(let m=0;m<n;m++){let d=Math.random(),g=e-Math.log(d),b=i(g)/d;r+=b,s+=b*b}else for(let m=0;m<n;m++){let d=i(e+Math.random()*(t-e));r+=d,s+=d*d}let o=r/n,u=(s-n*o*o)/(n-1),c=Math.sqrt(u/n),l=isFinite(e)&&isFinite(t)?t-e:1,h=o*l,f=c*l;return Lt(h,f)}function Xs(i){let e=0,t=0;for(let n of i)e+=n,t++;return t===0?NaN:e/t}function zs(i){let e=a.ZERO,t=0;for(let n of i)e=e.add(n),t++;return t===0?a.NAN:e.div(new a(t))}function fe(i){let e=[...i].sort((n,r)=>n-r),t=Math.floor(e.length/2);return e.length%2===0?(e[t-1]+e[t])/2:e[t]}function me(i){let e=[...i].sort((n,r)=>n.cmp(r)),t=Math.floor(e.length/2);return e.length%2===0?e[t-1].add(e[t]).div(a.TWO):e[t]}function Zt(i){let e=0,t=0,n=0;for(let r of i)e+=r,t+=r*r,n++;return n===0?NaN:(t-e*e/n)/(n-1)}function Ut(i){let e=a.ZERO,t=a.ZERO,n=0;for(let r of i)e=e.add(r),t=t.add(r.mul(r)),n++;return n===0?a.NAN:t.sub(e.mul(e).div(new a(n))).div(new a(n-1))}function $t(i){let e=0,t=0,n=0;for(let r of i)e+=r,t+=r*r,n++;return n===0?NaN:(t-e*e/n)/n}function qt(i){let e=a.ZERO,t=a.ZERO,n=0;for(let r of i)e=e.add(r),t=t.add(r.mul(r)),n++;return n===0?a.NAN:t.sub(e.mul(e).div(new a(n))).div(new a(n))}function Hs(i){return Math.sqrt(Zt(i))}function Ks(i){return Ut(i).sqrt()}function Qs(i){return Math.sqrt($t(i))}function eo(i){return qt(i).sqrt()}function io(i){let e=0,t=0,n=0,r=0;for(let o of i){let u=o;if(!Number.isFinite(u))return NaN;e+=u,t+=u*u,n+=u*u*u*u,r++}if(r===0)return NaN;let s=(t-e*e/r)/(r-1);return(n-4*e*t/r+6*e*e*e/r/r-3*e*e*e*e/r/r/r)/(s*s)}function to(i){let e=a.ZERO,t=a.ZERO,n=a.ZERO,r=0;for(let u of i){let c=u;if(!c.isFinite())return a.NAN;e=e.add(c),t=t.add(c.mul(c)),n=n.add(c.mul(c).mul(c).mul(c)),r++}if(r===0)return a.NAN;let s=new a(r),o=t.sub(e.mul(e).div(s)).div(new a(r-1));return n.sub(e.mul(t).mul(new a(4)).div(s)).add(e.mul(e).mul(e).mul(new a(6)).div(s).div(s)).sub(e.mul(e).mul(e).mul(e).mul(new a(3)).div(s).div(s).div(s)).div(o.mul(o))}function no(i){let e=0,t=0,n=0,r=0;for(let u of i){let c=u;if(!Number.isFinite(c))return NaN;e+=c,t+=c*c,n+=c*c*c,r++}if(r===0)return NaN;let s=(t-e*e/r)/(r-1);return(n-t*e/r)/(r-1)/Math.pow(s,3/2)*Math.sqrt(r*1)}function ro(i){let e=a.ZERO,t=a.ZERO,n=a.ZERO,r=0;for(let c of i){let l=c;if(!l.isFinite())return a.NAN;e=e.add(l),t=t.add(l.mul(l)),n=n.add(l.mul(l).mul(l)),r++}if(r===0)return a.NAN;let s=new a(r),o=t.sub(e.mul(e).div(s)).div(new a(r-1));return n.sub(t.mul(e).div(s)).div(new a(r-1)).div(o.pow(new a(1.5))).mul(s.sqrt())}function so(i){let e={};for(let r of i)e[r]=(e[r]??0)+1;let t=0,n=NaN;for(let r in e){let s=e[r];s>t&&(t=s,n=+r)}return n}function oo(i){let e={};for(let r of i)e[r.toString()]=(e[r.toString()]??0)+1;let t=0,n=a.NAN;for(let r in e){let s=e[r];s>t&&(t=s,n=new a(r))}return n}function ao(i){let e=[...i].sort((o,u)=>o-u),t=Math.floor(e.length/2),n=fe(e.slice(0,t)),r=fe(e),s=fe(e.slice(t));return[n,r,s]}function uo(i){let e=[...i].sort((o,u)=>o.cmp(u)),t=Math.floor(e.length/2),n=me(e.slice(0,t)),r=me(e),s=me(e.slice(t));return[n,r,s]}function co(i){let e=[...i].sort((s,o)=>s-o),t=Math.floor(e.length/2),n=e.slice(0,t),r=e.slice(t+1);return fe(r)-fe(n)}function lo(i){let e=[...i].sort((s,o)=>s.cmp(o)),t=Math.floor(e.length/2),n=e.slice(0,t),r=e.slice(t+1);return me(r).sub(me(n))}var we={Q:1e30,R:1e27,Y:1e24,Z:1e21,E:1e18,P:1e15,T:1e12,G:1e9,M:1e6,k:1e3,h:100,da:10,d:.1,c:.01,m:.001,\u00B5:1e-6,\u03BC:1e-6,n:1e-9,p:1e-12,f:1e-15,a:1e-18,z:1e-21,y:1e-24,r:1e-27,q:1e-30},ji=new Set(["m","g","s","A","K","mol","cd","Hz","N","Pa","J","W","C","V","F","ohm","S","Wb","T","H","lm","lx","Bq","Gy","Sv","kat","eV","L","bar"]),De={m:{dimension:[1,0,0,0,0,0,0],scale:1},kg:{dimension:[0,1,0,0,0,0,0],scale:1},g:{dimension:[0,1,0,0,0,0,0],scale:.001},s:{dimension:[0,0,1,0,0,0,0],scale:1},A:{dimension:[0,0,0,1,0,0,0],scale:1},K:{dimension:[0,0,0,0,1,0,0],scale:1},mol:{dimension:[0,0,0,0,0,1,0],scale:1},cd:{dimension:[0,0,0,0,0,0,1],scale:1},Hz:{dimension:[0,0,-1,0,0,0,0],scale:1},N:{dimension:[1,1,-2,0,0,0,0],scale:1},Pa:{dimension:[-1,1,-2,0,0,0,0],scale:1},J:{dimension:[2,1,-2,0,0,0,0],scale:1},W:{dimension:[2,1,-3,0,0,0,0],scale:1},C:{dimension:[0,0,1,1,0,0,0],scale:1},V:{dimension:[2,1,-3,-1,0,0,0],scale:1},F:{dimension:[-2,-1,4,2,0,0,0],scale:1},ohm:{dimension:[2,1,-3,-2,0,0,0],scale:1},S:{dimension:[-2,-1,3,2,0,0,0],scale:1},Wb:{dimension:[2,1,-2,-1,0,0,0],scale:1},T:{dimension:[0,1,-2,-1,0,0,0],scale:1},H:{dimension:[2,1,-2,-2,0,0,0],scale:1},lm:{dimension:[0,0,0,0,0,0,1],scale:1},lx:{dimension:[-2,0,0,0,0,0,1],scale:1},Bq:{dimension:[0,0,-1,0,0,0,0],scale:1},Gy:{dimension:[2,0,-2,0,0,0,0],scale:1},Sv:{dimension:[2,0,-2,0,0,0,0],scale:1},kat:{dimension:[0,0,-1,0,0,1,0],scale:1},degC:{dimension:[0,0,0,0,1,0,0],scale:1,offset:273.15},degF:{dimension:[0,0,0,0,1,0,0],scale:5/9,offset:459.67},min:{dimension:[0,0,1,0,0,0,0],scale:60},h:{dimension:[0,0,1,0,0,0,0],scale:3600},d:{dimension:[0,0,1,0,0,0,0],scale:86400},ha:{dimension:[2,0,0,0,0,0,0],scale:1e4},L:{dimension:[3,0,0,0,0,0,0],scale:.001},t:{dimension:[0,1,0,0,0,0,0],scale:1e3},eV:{dimension:[2,1,-2,0,0,0,0],scale:1602176634e-28},Da:{dimension:[0,1,0,0,0,0,0],scale:16605390666e-37},au:{dimension:[1,0,0,0,0,0,0],scale:149597870700},deg:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/180},rad:{dimension:[0,0,0,0,0,0,0],scale:1},grad:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/200},turn:{dimension:[0,0,0,0,0,0,0],scale:2*Math.PI},arcmin:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/10800},arcsec:{dimension:[0,0,0,0,0,0,0],scale:Math.PI/648e3},percent:{dimension:[0,0,0,0,0,0,0],scale:.01},ppm:{dimension:[0,0,0,0,0,0,0],scale:1e-6},dB:{dimension:[0,0,0,0,0,0,0],scale:1},Np:{dimension:[0,0,0,0,0,0,0],scale:1},in:{dimension:[1,0,0,0,0,0,0],scale:.0254},ft:{dimension:[1,0,0,0,0,0,0],scale:.3048},mi:{dimension:[1,0,0,0,0,0,0],scale:1609.344},lb:{dimension:[0,1,0,0,0,0,0],scale:.45359237},oz:{dimension:[0,1,0,0,0,0,0],scale:.028349523125},gal:{dimension:[3,0,0,0,0,0,0],scale:.003785411784},atm:{dimension:[-1,1,-2,0,0,0,0],scale:101325},bar:{dimension:[-1,1,-2,0,0,0,0],scale:1e5},cal:{dimension:[2,1,-2,0,0,0,0],scale:4.184},kWh:{dimension:[2,1,-2,0,0,0,0],scale:36e5},\u00C5:{dimension:[1,0,0,0,0,0,0],scale:1e-10}};function ri(i,e){return i[0]===e[0]&&i[1]===e[1]&&i[2]===e[2]&&i[3]===e[3]&&i[4]===e[4]&&i[5]===e[5]&&i[6]===e[6]}function mo(i){return i[0]===0&&i[1]===0&&i[2]===0&&i[3]===0&&i[4]===0&&i[5]===0&&i[6]===0}function jt(i){if(i.length>2){let e=i.slice(0,2),t=i.slice(2);if(we[e]!==void 0&&ji.has(t)){let n=De[t];if(n)return{prefixScale:we[e],baseEntry:n}}}if(i.length>1){let e=i.slice(0,1),t=i.slice(1);if(we[e]!==void 0&&ji.has(t)){let n=De[t];if(n)return{prefixScale:we[e],baseEntry:n}}}return null}function Re(i){let e=De[i];if(e)return e;let t=jt(i);return t?{dimension:t.baseEntry.dimension,scale:t.prefixScale*t.baseEntry.scale}:null}function ni(i){let e=Re(i);return e?e.dimension:null}function Jt(i){let e=Re(i);return e?e.scale:null}function ho(i,e){let t=ni(i),n=ni(e);return!t||!n?!1:ri(t,n)}var Gt=new Map(["N","J","W","Pa","Hz","C","V","F","ohm","S","Wb","T","H","lm","lx","Gy","kat"].map(i=>[De[i].dimension.join(","),i]));function po(i){return Gt.get(i.join(","))??null}function Wt(i,e,t){let n=Re(e),r=Re(t);if(!n||!r||!ri(n.dimension,r.dimension))return null;let s=n.offset??0,o=r.offset??0;return(i+s)*n.scale/r.scale-o}function K(i){if(typeof i=="string")return ni(i);if(!Array.isArray(i)||i.length<2)return null;let e=i[0];if(e==="Multiply"){let t=[0,0,0,0,0,0,0];for(let n=1;n<i.length;n++){let r=K(i[n]);if(!r)return null;for(let s=0;s<7;s++)t[s]+=r[s]}return t}if(e==="Divide"){if(i.length!==3)return null;let t=K(i[1]),n=K(i[2]);return!t||!n?null:t.map((r,s)=>r-n[s])}if(e==="Power"){if(i.length!==3)return null;let t=K(i[1]),n=i[2];return!t||typeof n!="number"?null:t.map(r=>r*n)}return null}function Q(i){if(typeof i=="string")return Jt(i);if(!Array.isArray(i)||i.length<2)return null;let e=i[0];if(e==="Multiply"){let t=1;for(let n=1;n<i.length;n++){let r=Q(i[n]);if(r===null)return null;t*=r}return t}if(e==="Divide"){if(i.length!==3)return null;let t=Q(i[1]),n=Q(i[2]);return t===null||n===null||n===0?null:t/n}if(e==="Power"){if(i.length!==3)return null;let t=Q(i[1]),n=i[2];return t===null||typeof n!="number"?null:Math.pow(t,n)}return null}function Yt(i){let e=i.indexOf("^");if(e===-1)return i;let t=i.slice(0,e),n=i.slice(e+1),r=parseInt(n,10);return isNaN(r)?i:["Power",t,r]}function he(i){if(i=i.trim(),i.length===0)return null;if(i[0]==="("&&i[i.length-1]===")"){let r=0,s=!0;for(let o=0;o<i.length-1;o++)if(i[o]==="("?r++:i[o]===")"&&r--,r===0&&o<i.length-1){s=!1;break}if(s)return he(i.slice(1,-1))}let e=-1,t=[],n=0;for(let r=0;r<i.length;r++)i[r]==="("?n++:i[r]===")"?n--:n===0&&(i[r]==="/"&&e===-1?e=r:i[r]==="*"&&t.push(r));if(e!==-1){let r=i.slice(0,e).trim(),s=i.slice(e+1).trim(),o=he(r),u=he(s);return!o||!u?null:["Divide",o,u]}if(t.length>0){let r=[],s=0;for(let u of t)r.push(i.slice(s,u).trim()),s=u+1;r.push(i.slice(s).trim());let o=r.filter(u=>u.length>0).map(u=>he(u));return o.some(u=>u===null)?null:o.length===1?o[0]:["Multiply",...o]}return i[0]==="("?null:Yt(i)}function go(i){return i=i.trim(),i.length===0?null:/[/*^()]/.test(i)?he(i):i}function No(i,e,t){if(typeof e=="string"&&typeof t=="string")return Wt(i,e,t);let n=K(e),r=K(t);if(!n||!r||!ri(n,r))return null;let s=Q(e),o=Q(t);return s===null||o===null||o===0?null:i*s/o}var Ji=7,Gi=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function de(i){if(i<0)return NaN;let e=Math.PI,t=i*i*i;return i*Math.log(i)-i-.5*Math.log(i)+.5*Math.log(2*e)+1/(12*i)-1/(360*t)+1/(1260*t*i*i)}function C(i){if(i<.5)return Math.PI/(Math.sin(Math.PI*i)*C(1-i));if(i>100)return Math.exp(de(i));i-=1;let e=Gi[0];for(let n=1;n<Ji+2;n++)e+=Gi[n]/(i+n);let t=i+Ji+.5;return Math.sqrt(2*Math.PI)*Math.pow(t,i+.5)*Math.exp(-t)*e}function Xt(i){let e=Math.PI,t=e*e,n=t*e,r=i*i,s=i*r,o=s*r,u=o*r;return Math.sqrt(e)/2*(i+e/12*s+7*t/480*o+127*n/40320*u+4369*t*t/5806080*u*r+34807*n*t/182476800*u*r*r)}function zt(i){return 1-Xi(i)}function Xi(i){let e=.254829592,t=-.284496736,n=1.421413741,r=-1.453152027,s=1.061405429,o=.3275911,u=i<0?-1:1;i=Math.abs(i);let c=1/(1+o*i),l=((((s*c+r)*c+n)*c+t)*c+e)*c;return u*(1-l*Math.exp(-i*i))}function oi(i,e){if(!e.isFinite())return a.NAN;if(e.lt(a.HALF)){let y=a.PI,T=y.mul(e).sin().abs();return T.isZero()?a.NAN:y.ln().sub(T.ln()).sub(oi(i,a.ONE.sub(e)))}if(e.isInteger()&&e.isPositive()){let y=e.toNumber();if(y<=1)return a.ZERO;let T=1n;for(let E=2;E<y;E++)T*=BigInt(E);return new a(T.toString()).ln()}let t=e.sub(a.HALF);if(t.isInteger()&&!t.isNegative()){let y=t.toNumber();if(y===0)return a.PI.ln().div(a.TWO);let T=1n;for(let w=2;w<=2*y;w++)T*=BigInt(w);let E=1n;for(let w=2;w<=y;w++)E*=BigInt(w);let M=4n**BigInt(y);return new a(T.toString()).ln().add(a.PI.ln().div(a.TWO)).sub(new a(M.toString()).ln()).sub(new a(E.toString()).ln())}let n=a.precision,r=10,s=Math.ceil(.37*n),o=e.toNumber(),u=Math.max(0,Math.ceil(s-o)),c=a.ZERO,l=e;for(let y=0;y<u;y++)c=c.add(l.ln()),l=l.add(a.ONE);let h=Math.ceil(Math.PI*l.toNumber())+10,f=pe(i,h),p=l.sub(a.HALF).mul(l.ln()).sub(l).add(a.PI.mul(a.TWO).ln().div(a.TWO)),m=l.mul(l),d=l,g=new a(10).pow(-(n+r)),b=Math.min(h,f.length);for(let y=0;y<b;y++){let T=2*(y+1),[E,M]=f[y],w=BigInt(T)*BigInt(T-1),re=new a(E.toString()),q=new a((M*w).toString()),L=re.div(q.mul(d));if(y>0&&L.abs().lt(g))break;p=p.add(L),d=d.mul(m)}return p.sub(c)}function ie(i,e){if(e.isInteger()&&e.isPositive()){let t=e.toNumber(),n=1n;for(let r=2;r<t;r++)n*=BigInt(r);return new a(n.toString())}if(e.lt(a.HALF)){let t=a.PI,n=t.mul(e).sin();return n.isZero()?a.NAN:t.div(n.mul(ie(i,a.ONE.sub(e))))}return oi(i,e).exp()}function Wi(i,e){for(;e!==0n;){let t=e;e=i%e,i=t}return i}function Fe(i){return i<0n?-i:i}function Yi(i){let e=[[1n,1n],[-1n,2n]];for(let n=2;n<=2*i;n++){if(n%2===1){e.push([0n,1n]);continue}let r=BigInt(n+1),s=0n,o=1n,u=1n;for(let f=0;f<n;f++){f>0&&(u=u*(r-BigInt(f)+1n)/BigInt(f));let[p,m]=e[f];if(p!==0n&&(s=s*m+u*p*o,o=o*m,f%8===7)){let d=Wi(Fe(s),o);s/=d,o/=d}}let c=-s,l=r*o,h=Wi(Fe(c),Fe(l));c/=h,l/=h,l<0n&&(c=-c,l=-l),e.push([c,l])}let t=[];for(let n=1;n<=i;n++)t.push(e[2*n]);return t}function pe(i,e){return i._cache("bernoulli-even-rationals",()=>Yi(e),t=>t.length>=e?t:Yi(e))}function ai(i,e){if(!e.isFinite())return a.NAN;if(e.isNegative()){if(e.isInteger())return a.NAN;let m=a.PI,d=m.mul(e),g=d.cos().div(d.sin());return ai(i,a.ONE.sub(e)).sub(m.mul(g))}if(e.isZero())return a.NAN;let t=a.precision,n=10,r=Math.max(7,Math.ceil(.37*t)),s=new a(0),o=e;for(;o.lt(r);)s=s.sub(a.ONE.div(o)),o=o.add(a.ONE);let u=Math.ceil(Math.PI*o.toNumber())+10,c=pe(i,u);s=s.add(o.ln()).sub(a.ONE.div(o.mul(2)));let l=o.mul(o),h=l,f=new a(10).pow(-(t+n)),p=Math.min(u,c.length);for(let m=0;m<p;m++){let[d,g]=c[m],b=BigInt(2*(m+1)),y=new a(d.toString()).div(new a((g*b).toString()).mul(l));if(m>0&&y.abs().lt(f))break;s=s.sub(y),l=l.mul(h)}return s}function ui(i,e){if(!e.isFinite())return a.NAN;if(e.isNegative()){if(e.isInteger())return a.NAN;let m=a.PI,d=m.mul(e).sin();return m.mul(m).div(d.mul(d)).sub(ui(i,a.ONE.sub(e)))}if(e.isZero())return a.NAN;let t=a.precision,n=10,r=Math.max(7,Math.ceil(.37*t)),s=new a(0),o=e;for(;o.lt(r);)s=s.add(a.ONE.div(o.mul(o))),o=o.add(a.ONE);let u=Math.ceil(Math.PI*o.toNumber())+10,c=pe(i,u);s=s.add(a.ONE.div(o)),s=s.add(a.ONE.div(o.mul(o).mul(2)));let l=o.mul(o).mul(o),h=o.mul(o),f=new a(10).pow(-(t+n)),p=Math.min(u,c.length);for(let m=0;m<p;m++){let[d,g]=c[m],b=new a(d.toString()).div(new a(g.toString()).mul(l));if(m>0&&b.abs().lt(f))break;s=s.add(b),l=l.mul(h)}return s}function Ht(i,e,t){let n=e.toNumber();if(!Number.isInteger(n)||n<0)return a.NAN;if(n===0)return ai(i,t);if(n===1)return ui(i,t);if(!t.isFinite()||t.isZero())return a.NAN;let r=T=>{let E=a.ONE;for(let M=2;M<=T;M++)E=E.mul(M);return E},s=a.precision,o=10,u=Math.max(7,Math.ceil(.37*s)),c=t,l=new a(0),h=n%2===0?-1:1;if(c.isNegative()){if(c.isInteger())return a.NAN;let T=n%2===0?1:-1;for(;c.lt(1);)l=l.add(new a(T).mul(r(n)).div(c.pow(n+1))),c=c.add(a.ONE)}for(;c.lt(u);)l=l.add(new a(h).mul(r(n)).div(c.pow(n+1))),c=c.add(a.ONE);let f=Math.ceil(Math.PI*c.toNumber())+10,p=pe(i,f),m=n%2===0?-1:1;l=l.add(new a(m).mul(r(n-1)).div(c.pow(n))),l=l.add(new a(m).mul(r(n)).div(c.pow(n+1).mul(2)));let d=c.pow(n+2),g=c.mul(c),b=new a(10).pow(-(s+o)),y=Math.min(f,p.length);for(let T=0;T<y;T++){let E=2*(T+1),[M,w]=p[T],re=1n;for(let j=0;j<E;j++)re*=BigInt(n+j);let q=1n;for(let j=2;j<=E;j++)q*=BigInt(j);let L=new a((BigInt(m)*M*re).toString()).div(new a((w*q).toString()).mul(d));if(T>0&&L.abs().lt(b))break;l=l.add(L),d=d.mul(g)}return l}function Kt(i,e,t){return ie(i,e).mul(ie(i,t)).div(ie(i,e.add(t)))}function zi(i,e){if(!e.isFinite())return a.NAN;if(e.eq(1))return new a(1/0);let t=a.PI;if(e.isZero())return a.HALF.neg();if(e.isInteger()&&e.isPositive()){let c=e.toNumber();if(c%2===0&&c>=2){let l=c/2,h=pe(i,l),[f,p]=h[l-1],m=new a(Fe(f).toString()).div(new a(p.toString())),d=t.mul(2),g=a.ONE;for(let b=2;b<=c;b++)g=g.mul(b);return m.mul(d.pow(c)).div(g.mul(2))}}if(e.isNegative())return new a(2).pow(e).mul(t.pow(e.sub(1))).mul(t.mul(e).div(2).sin()).mul(ie(i,a.ONE.sub(e))).mul(zi(i,a.ONE.sub(e)));let n=Math.max(22,Math.ceil(i.precision*1.3)),r=Qt(i,n),s=r[n],o=new a(0);for(let c=0;c<=n;c++){let l=c%2===0?1:-1;o=o.add(new a(l).mul(r[c].sub(s)).div(new a(c+1).pow(e)))}let u=a.ONE.sub(new a(2).pow(a.ONE.sub(e)));return o.div(s.mul(u)).neg()}function Qt(i,e){let t=new Array(e+1);t[0]=a.ONE;let n=a.ONE;for(let r=1;r<=e;r++)n=n.mul(e-r+1).div(r),t[r]=t[r-1].add(n);return t}function en(i,e){if(!e.isFinite())return e;if(e.isZero())return new a(0);let n=a.ONE.div(a.ONE.exp()).neg(),r=new a(10).pow(-i.precision),s=new a(10).pow(-15);if(e.sub(n).abs().lt(s))return a.NEGATIVE_ONE;if(e.lt(n))return a.NAN;let o,u=e.toNumber();if(u<0){let c=Math.sqrt(2*(Math.E*u+1));o=new a(-1+c-c*c/3+11/72*c*c*c)}else if(u<=1)o=new a(u*(1-u*(1-1.5*u)));else if(u<100){let c=Math.log(u);o=new a(c-Math.log(c))}else{let c=e.ln(),l=c.ln();o=c.sub(l).add(l.div(c))}for(let c=0;c<100;c++){let l=o.exp(),f=o.mul(l).sub(e),p=l.mul(o.add(1)),m=l.mul(o.add(2)),d=f.div(p.sub(f.mul(m).div(p.mul(2))));if(o=o.sub(d),d.abs().lt(r.mul(o.abs().add(1))))break}return o}var Pe=.5772156649015329,te=[1/6,-1/30,1/42,-1/30,5/66,-691/2730,7/6,-3617/510,43867/798,-174611/330];function ci(i){if(!isFinite(i))return NaN;if(i<0)return Number.isInteger(i)?NaN:ci(1-i)-Math.PI/Math.tan(Math.PI*i);if(i===0)return NaN;let e=0,t=i;for(;t<7;)e-=1/t,t+=1;e+=Math.log(t)-1/(2*t);let n=t*t;for(let r=0;r<te.length;r++)e-=te[r]/(2*(r+1)*n),n*=t*t;return e}function li(i){if(!isFinite(i))return NaN;if(i<0){if(Number.isInteger(i))return NaN;let r=Math.sin(Math.PI*i);return Math.PI*Math.PI/(r*r)-li(1-i)}if(i===0)return NaN;let e=0,t=i;for(;t<7;)e+=1/(t*t),t+=1;e+=1/t+1/(2*t*t);let n=t*t*t;for(let r=0;r<te.length;r++)e+=te[r]/n,n*=t*t;return e}function Hi(i,e){if(!Number.isInteger(i)||i<0)return NaN;if(i===0)return ci(e);if(i===1)return li(e);if(!isFinite(e)||e===0)return NaN;if(e<0){if(Number.isInteger(e))return NaN;let u=0,c=e,l=i%2===0?1:-1;for(;c<1;)u+=l*ee(i)/Math.pow(c,i+1),c+=1;return u+Hi(i,c)}let t=0,n=e,r=i%2===0?-1:1;for(;n<7;)t+=r*ee(i)/Math.pow(n,i+1),n+=1;let s=i%2===0?-1:1;t+=s*ee(i-1)/Math.pow(n,i),t+=s*ee(i)/(2*Math.pow(n,i+1));let o=Math.pow(n,i+2);for(let u=0;u<Math.min(te.length,6);u++){let c=2*(u+1),l=1;for(let h=0;h<c;h++)l*=i+h;t+=s*te[u]*l/(ee(c)*o),o*=n*n}return t}function ee(i){if(i<=1)return 1;let e=1;for(let t=2;t<=i;t++)e*=t;return e}function tn(i,e){return i>100||e>100||i+e>100?Math.exp(de(i)+de(e)-de(i+e)):C(i)*C(e)/C(i+e)}function Ki(i){if(!isFinite(i))return NaN;if(i===1)return 1/0;if(i===0)return-.5;if(i===2)return Math.PI*Math.PI/6;if(i===4)return Math.PI**4/90;if(i===6)return Math.PI**6/945;if(i===8)return Math.PI**8/9450;if(i<0)return Math.pow(2,i)*Math.pow(Math.PI,i-1)*Math.sin(Math.PI*i/2)*C(1-i)*Ki(1-i);let e=22,t=nn(e),n=t[e],r=0;for(let s=0;s<=e;s++)r+=(s%2===0?1:-1)*(t[s]-n)/Math.pow(s+1,i);return-1/(n*(1-Math.pow(2,1-i)))*r}function nn(i){let e=new Array(i+1);e[0]=1;for(let t=1;t<=i;t++)e[t]=e[t-1]+rn(i,t);return e}function rn(i,e){e>i-e&&(e=i-e);let t=1;for(let n=0;n<e;n++)t=t*(i-n)/(n+1);return t}function sn(i){if(!isFinite(i))return i;if(i===0)return 0;let e=1/Math.E;if(i<-e)return NaN;if(Math.abs(i+e)<1e-15)return-1;let t;if(i<0){let n=Math.sqrt(2*(Math.E*i+1));t=-1+n-n*n/3+11/72*n*n*n}else if(i<=1)t=i*(1-i*(1-1.5*i));else if(i<100){let n=Math.log(i);t=n-Math.log(n)}else{let n=Math.log(i),r=Math.log(n);t=n-r+r/n}for(let n=0;n<30;n++){let r=Math.exp(t),o=t*r-i,u=r*(t+1),c=r*(t+2),l=o/(u-o*c/(2*u));if(t-=l,Math.abs(l)<1e-15*(1+Math.abs(t)))break}return t}function G(i,e){return!isFinite(e)||!Number.isInteger(i)?NaN:e===0?i===0?1:0:i<0?(i=-i,i%2===0?G(i,e):-G(i,e)):e<0?i%2===0?G(i,-e):-G(i,-e):e>25+i*i/2?an(i,e):e<5+i?on(i,e):un(i,e)}function on(i,e){let t=e/2,n=-(e*e)/4,r=1;for(let o=1;o<=i;o++)r/=o;let s=r;for(let o=1;o<=60&&(r*=n/(o*(i+o)),s+=r,!(Math.abs(r)<Math.abs(s)*1e-16));o++);return s*Math.pow(t,i)}function Qi(i,e){let t=4*i*i,n=1,r=0,s=1,o=8*e;for(let u=1;u<=20;u++){s*=t-(2*u-1)*(2*u-1);let c=ee(u)*Math.pow(o,u),l=s/c;if(u%2===1?r+=(u%4===1?1:-1)*l:n+=(u%4===2?-1:1)*l,Math.abs(l)<1e-15)break}return[n,r]}function an(i,e){let t=e-(i/2+.25)*Math.PI,[n,r]=Qi(i,e);return Math.sqrt(2/(Math.PI*e))*(n*Math.cos(t)-r*Math.sin(t))}function un(i,e){let t=Math.max(i+20,Math.ceil(e)+30),n=0,r=1,s=new Array(t+1);s[t]=r;for(let c=t;c>=1;c--){let l=2*c/e*r-n;n=r,r=l,s[c-1]=r}let o=s[0];for(let c=2;c<=t;c+=2)o+=2*s[c];let u=1/o;return s[i]*u}function si(i,e){if(!isFinite(e)||!Number.isInteger(i))return NaN;if(e<=0)return NaN;if(i<0)return i=-i,i%2===0?si(i,e):-si(i,e);if(e>12+i*i/4)return fn(i,e);let t=cn(e);if(i===0)return t;let n=ln(e);if(i===1)return n;let r=t,s=n;for(let o=1;o<i;o++){let u=2*o/e*s-r;r=s,s=u}return s}function cn(i){let e=i/2,t=e*e,n=G(0,i),r=0,s=1,o=0;for(let u=1;u<=60&&(o+=1/u,s*=-t/(u*u),r-=s*o,!(Math.abs(s*o)<Math.abs(r)*1e-16));u++);return 2/Math.PI*(n*(Math.log(e)+Pe)+r)}function ln(i){let e=i/2,t=e*e,n=G(1,i),r=0,s=1,o=1;for(let u=0;u<=60;u++){u>0&&(o*=u,s*=t);let c=o*(u+1),l=0;for(let g=1;g<=u;g++)l+=1/g;let h=l+1/(u+1),f=-Pe+l,p=-Pe+h,d=(u%2===0?1:-1)*(f+p)*s/(o*c);if(r+=d,u>3&&Math.abs(d)<1e-16*Math.abs(r))break}return-2/(Math.PI*i)+2/Math.PI*Math.log(e)*n-e/Math.PI*r}function fn(i,e){let t=e-(i/2+.25)*Math.PI,[n,r]=Qi(i,e);return Math.sqrt(2/(Math.PI*e))*(n*Math.sin(t)+r*Math.cos(t))}function ne(i,e){return!isFinite(e)||!Number.isInteger(i)?NaN:e===0?i===0?1:0:(i<0&&(i=-i),e<0?i%2===0?ne(i,-e):-ne(i,-e):e>40?hn(i,e):mn(i,e))}function mn(i,e){let t=e/2,n=e*e/4,r=1;for(let o=1;o<=i;o++)r/=o;let s=r;for(let o=1;o<=80&&(r*=n/(o*(i+o)),s+=r,!(Math.abs(r)<Math.abs(s)*1e-16));o++);return s*Math.pow(t,i)}function hn(i,e){let t=4*i*i,n=1,r=1;for(let s=1;s<=12;s++){let o=t-(2*s-1)*(2*s-1);if(n*=o/(s*8*e),r+=n,Math.abs(n)<1e-15)break}return Math.exp(e)/Math.sqrt(2*Math.PI*e)*r}function dn(i,e){if(!isFinite(e)||!Number.isInteger(i))return NaN;if(e<=0)return NaN;if(i<0&&(i=-i),e>40)return gn(i,e);let t=et(e);if(i===0)return t;let n=pn(e);if(i===1)return n;let r=t,s=n;for(let o=1;o<i;o++){let u=2*o/e*s+r;r=s,s=u}return s}function et(i){let e=i/2,t=e*e,n=ne(0,i),r=0,s=1,o=0;for(let u=1;u<=60&&(o+=1/u,s*=t/(u*u),r+=s*o,!(Math.abs(s*o)<Math.abs(r)*1e-16&&u>3));u++);return-(Math.log(e)+Pe)*n+r}function pn(i){let e=ne(0,i),t=ne(1,i),n=et(i);return(1/i-t*n)/e}function gn(i,e){let t=4*i*i,n=1,r=1;for(let s=1;s<=12;s++){let o=t-(2*s-1)*(2*s-1);if(n*=o/(s*8*e),r+=n,Math.abs(n)<1e-15)break}return Math.sqrt(Math.PI/(2*e))*Math.exp(-e)*r}function Nn(i){if(!isFinite(i))return NaN;if(i>5){let u=.6666666666666666*Math.pow(i,1.5);return bn(i,u)}if(i<-5){let u=-i,c=2/3*Math.pow(u,1.5);return yn(u,c)}let e=1/(Math.pow(3,2/3)*C(2/3)),t=1/(Math.pow(3,1/3)*C(1/3)),n=1,r=i,s=1,o=i;for(let u=1;u<=80;u++){let c=3*u;if(s*=i*i*i/((c-1)*c),o*=i*i*i/(c*(c+1)),n+=s,r+=o,Math.abs(s)+Math.abs(o)<1e-16*(Math.abs(n)+Math.abs(r)))break}return e*n-t*r}function bn(i,e){let t=Math.pow(i,.25),n=1,r=1,s=[1,5/72,385/10368,85085/2239488,37182145/644972544];for(let o=1;o<s.length;o++)r=s[o]/Math.pow(e,o),n+=(o%2===0?1:-1)*r;return Math.exp(-e)/(2*Math.sqrt(Math.PI)*t)*n}function yn(i,e){let t=Math.pow(i,.25);return Math.sin(e+Math.PI/4)/(Math.sqrt(Math.PI)*t)}function Tn(i){if(!isFinite(i))return NaN;if(i>5){let u=.6666666666666666*Math.pow(i,1.5);return In(i,u)}if(i<-5){let u=-i,c=2/3*Math.pow(u,1.5);return En(u,c)}let e=1/(Math.pow(3,2/3)*C(2/3)),t=1/(Math.pow(3,1/3)*C(1/3)),n=1,r=i,s=1,o=i;for(let u=1;u<=80;u++){let c=3*u;if(s*=i*i*i/((c-1)*c),o*=i*i*i/(c*(c+1)),n+=s,r+=o,Math.abs(s)+Math.abs(o)<1e-16*(Math.abs(n)+Math.abs(r)))break}return Math.sqrt(3)*(e*n+t*r)}function In(i,e){let t=Math.pow(i,.25),n=1,r=1,s=[1,5/72,385/10368,85085/2239488,37182145/644972544];for(let o=1;o<s.length;o++)r=s[o]/Math.pow(e,o),n+=r;return Math.exp(e)/(Math.sqrt(Math.PI)*t)*n}function En(i,e){let t=Math.pow(i,.25);return Math.cos(e+Math.PI/4)/(Math.sqrt(Math.PI)*t)}var vn=[-2991.8191940101983,708840.0452577386,-6297414862058625e-8,25489088057337637e-7,-4429795180596978e-5,3180162978765678e-4],kn=[1,281.3762688899943,45584.78108065326,5173438887700964e-9,4193202458981112e-7,22441179564534092e-6,607366389490085e-3],xn=[-49884311457357354e-24,9504280628298596e-21,-.0006451914356839651,.018884331939670384,-.20552590095501388,1],Mn=[399982968972496e-26,9154392157746574e-25,12500186247959882e-23,12226278902417902e-21,.0008680295429417843,.04121420907221998,1],it=[.4215435550436775,.1434079197807589,.011522095507358577,.000345017939782574,46361374928786735e-22,3055689837902576e-23,10230451416490724e-26,17201074326816183e-29,13428327623306275e-32,3763297112699879e-35],tt=[1,.7515863983533789,.11688892585919138,.0064405152650885865,.00015593440916415301,18462756734893055e-22,11269922476399903e-24,36014002958937136e-27,5887545336215784e-29,45200143407412973e-33,12544323709001127e-36],nt=[.5044420736433832,.1971028335255234,.018764858409257526,.0006840793809153931,11513882611188428e-21,9828524436884223e-23,44534441586175015e-26,10826804113902088e-28,1375554606332618e-30,8363544356306774e-34,18695871016278324e-38],rt=[1,1.4749575992512833,.33774898912002,.02536037414203388,.0008146791071843061,12754507566772912e-21,10431458965757199e-23,46068072851523205e-26,11027321506624028e-28,13879653125957886e-31,8391588162831187e-34,18695871016278324e-38];function O(i,e){let t=e[0];for(let n=1;n<e.length;n++)t=t*i+e[n];return t}function Bn(i){if(!isFinite(i))return i!==i?NaN:i>0?.5:-.5;let e=i<0?-1:1;if(i=Math.abs(i),i<1.6){let t=i*i,n=t*t;return e*i*t*O(n,vn)/O(n,kn)}if(i<36){let t=i*i,n=Math.PI*t,r=1/(n*n),s=1-r*O(r,it)/O(r,tt),o=1/n*O(r,nt)/O(r,rt),u=Math.PI/2*t,c=Math.cos(u),l=Math.sin(u);return e*(.5-(s*c+o*l)/(Math.PI*i))}return e*.5}function Sn(i){if(!isFinite(i))return i!==i?NaN:i>0?.5:-.5;let e=i<0?-1:1;if(i=Math.abs(i),i<1.6){let t=i*i,n=t*t;return e*i*O(n,xn)/O(n,Mn)}if(i<36){let t=i*i,n=Math.PI*t,r=1/(n*n),s=1-r*O(r,it)/O(r,tt),o=1/n*O(r,nt)/O(r,rt),u=Math.PI/2*t,c=Math.cos(u),l=Math.sin(u);return e*(.5+(s*l-o*c)/(Math.PI*i))}return e*.5}function wn(i){return i===0?1:Math.sin(i)/i}function Dn(i){return i}function Rn(i){return i}var Eo="0.55.2";export{ii as BigNumericValue,mt as DEFAULT_PRECISION,ki as DEFAULT_TOLERANCE,J as ExactNumericValue,Ii as LARGEST_SMALL_PRIME,ht as MACHINE_PRECISION,vi as MACHINE_PRECISION_BITS,dt as MAX_BIGINT_DIGITS,pt as MAX_ITERATION,gt as MAX_SYMBOLIC_TERMS,ti as MachineNumericValue,D as NumericValue,S as SMALL_INTEGER,z as add,Nn as airyAi,Tn as airyBi,ho as areCompatibleUnits,or as asMachineRational,ne as besselI,G as besselJ,dn as besselK,si as besselY,tn as beta,Kt as bigBeta,ai as bigDigamma,ie as bigGamma,oi as bigGammaln,lo as bigInterquartileRange,to as bigKurtosis,en as bigLambertW,zs as bigMean,me as bigMedian,oo as bigMode,Ht as bigPolygamma,eo as bigPopulationStandardDeviation,qt as bigPopulationVariance,Ei as bigPrimeFactors,uo as bigQuartiles,ro as bigSkewness,Ks as bigStandardDeviation,ui as bigTrigamma,Ut as bigVariance,zi as bigZeta,F as bigint,Te as bigintCanonicalInteger,Mi as bigintFactorial,Y as bigintGcd,qe as bigintLcm,Nr as bigintValue,Vt as bignumFactorial2,Ui as bignumGcd,Ot as bignumLcm,W as canonicalInteger,kt as cantorEnumerateComplexNumbers,xt as cantorEnumerateIntegers,Mt as cantorEnumerateNaturalNumbers,vt as cantorEnumeratePositiveRationals,Et as cantorEnumerateRationals,It as centeredDiff8thOrder,Tt as chop,Dn as complexGamma,Rn as complexGammaln,No as convertCompoundUnit,Wt as convertUnit,Ct as determinant,ci as digamma,ri as dimensionsEqual,sr as div,Xi as erf,Xt as erfInv,zt as erfc,Ce as extrapolate,bt as factorial,yt as factorial2,po as findNamedUnit,Sn as fresnelC,Bn as fresnelS,Ri as fromDigits,C as gamma,de as gammaln,P as gcd,K as getExpressionDimension,Q as getExpressionScale,ni as getUnitDimension,Jt as getUnitScale,co as interquartileRange,Us as interval,$s as intervalContains,qs as intervalSubset,Ee as inverse,je as isBigRational,mo as isDimensionless,Be as isInMachineRange,ae as isInteger,A as isMachineRational,rr as isNeg,We as isNegativeOne,Ge as isOne,Je as isPositive,ot as isPrime,Jn as isPrimeBigint,ir as isRational,X as isZero,io as kurtosis,sn as lambertW,$e as lcm,Ue as limit,nr as machineDenominator,tr as machineNumerator,Xs as mean,fe as median,so as mode,Gs as monteCarloEstimate,_ as mul,Si as neg,Nt as nextDown,xi as nextUp,R as numberToExpression,B as numberToString,go as parseUnitDSL,Hi as polygamma,Qs as populationStandardDeviation,$t as populationVariance,ar as pow,Ze as primeFactors,ao as quartiles,Bi as rationalAsFloat,wi as rationalGcd,cr as rationalize,lr as reduceRationalSquareRoot,Bt as reducedInteger,Ie as reducedRational,wn as sinc,no as skewness,ur as sqrt,Hs as standardDeviation,li as trigamma,Zt as variance,Eo as version,Ki as zeta};
|