pimath 0.2.1 → 0.2.3
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/pimath.js +202 -182
- package/dist/pimath.js.map +1 -1
- package/package.json +1 -1
- package/src/algebra/linearSystem.ts +40 -38
- package/src/coefficients/root.ts +41 -28
- package/src/geometry/line.ts +1 -1
- package/src/geometry/triangle.ts +11 -6
- package/src/numeric.ts +2 -2
- package/src/randomization/algebra/rndPolynom.ts +1 -3
- package/src/randomization/random.ts +14 -1
- package/src/randomization/rndHelpers.ts +13 -2
- package/types/algebra/linearSystem.d.ts +3 -2
- package/types/algebra/linearSystem.d.ts.map +1 -1
- package/types/coefficients/root.d.ts.map +1 -1
- package/types/geometry/triangle.d.ts.map +1 -1
- package/types/index.d.ts +2 -1
- package/types/index.d.ts.map +1 -1
- package/types/numeric.d.ts +1 -1
- package/types/numeric.d.ts.map +1 -1
- package/types/randomization/algebra/rndPolynom.d.ts.map +1 -1
- package/types/randomization/random.d.ts +1 -0
- package/types/randomization/random.d.ts.map +1 -1
- package/types/randomization/rndHelpers.d.ts +1 -0
- package/types/randomization/rndHelpers.d.ts.map +1 -1
package/dist/pimath.js
CHANGED
|
@@ -6,7 +6,7 @@ function ut(n) {
|
|
|
6
6
|
return e;
|
|
7
7
|
}
|
|
8
8
|
function ft(...n) {
|
|
9
|
-
const t =
|
|
9
|
+
const t = _(...n);
|
|
10
10
|
return n.map((e) => e / t);
|
|
11
11
|
}
|
|
12
12
|
function rt(n) {
|
|
@@ -17,7 +17,7 @@ function rt(n) {
|
|
|
17
17
|
return s - r;
|
|
18
18
|
}), [...new Set(i)];
|
|
19
19
|
}
|
|
20
|
-
function
|
|
20
|
+
function _(...n) {
|
|
21
21
|
const t = function(s, r) {
|
|
22
22
|
return r === 0 ? s : t(r, s % r);
|
|
23
23
|
};
|
|
@@ -34,7 +34,7 @@ function J(...n) {
|
|
|
34
34
|
}
|
|
35
35
|
function dt(...n) {
|
|
36
36
|
return n.reduce(function(t, e) {
|
|
37
|
-
return Math.abs(t * e /
|
|
37
|
+
return Math.abs(t * e / _(t, e));
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
function pt(n, t = 3) {
|
|
@@ -74,7 +74,7 @@ const x = {
|
|
|
74
74
|
decompose: ut,
|
|
75
75
|
dividers: rt,
|
|
76
76
|
divideNumbersByGCD: ft,
|
|
77
|
-
gcd:
|
|
77
|
+
gcd: _,
|
|
78
78
|
lcm: dt,
|
|
79
79
|
numberCorrection: pt,
|
|
80
80
|
periodic: mt,
|
|
@@ -346,13 +346,13 @@ class a {
|
|
|
346
346
|
function st(n, t = !0) {
|
|
347
347
|
return t ? `\\left( ${n} \\right)` : `(${n})`;
|
|
348
348
|
}
|
|
349
|
-
function
|
|
349
|
+
function Q(n) {
|
|
350
350
|
return n.startsWith("(") && (n = n.substring(1)), n.endsWith(")") && (n = n.substring(0, n.length - 1)), n;
|
|
351
351
|
}
|
|
352
|
-
function
|
|
352
|
+
function U(n, t, e, i, s) {
|
|
353
353
|
return n.map((r, o) => r === t ? e : r);
|
|
354
354
|
}
|
|
355
|
-
class
|
|
355
|
+
class T {
|
|
356
356
|
#t;
|
|
357
357
|
#e;
|
|
358
358
|
#i;
|
|
@@ -361,44 +361,42 @@ class O {
|
|
|
361
361
|
return this.#e = 2, this.#t = new a().zero(), this.#i = new a().zero(), t && this.parse(t), this;
|
|
362
362
|
}
|
|
363
363
|
parse(t) {
|
|
364
|
-
if (t instanceof
|
|
364
|
+
if (t instanceof T)
|
|
365
365
|
return this.index = t.index, this.radical = t.radical.clone(), this.factor = t.factor.clone(), this;
|
|
366
366
|
if (t instanceof a)
|
|
367
367
|
return this.index = 2, this.factor = t.clone(), this.radical.one(), this;
|
|
368
368
|
if (typeof t == "string") {
|
|
369
369
|
if (t.includes("sqrt"))
|
|
370
|
-
return this.#
|
|
370
|
+
return this.#h(t);
|
|
371
371
|
if (t.includes("root"))
|
|
372
|
-
return this.#
|
|
372
|
+
return this.#o(t);
|
|
373
373
|
}
|
|
374
374
|
return this.index = 2, this.factor = new a(t), this.radical.one(), this;
|
|
375
375
|
}
|
|
376
376
|
clone() {
|
|
377
|
-
return new
|
|
377
|
+
return new T().from(this.index, this.radical, this.factor);
|
|
378
378
|
}
|
|
379
379
|
get tex() {
|
|
380
380
|
const t = this.#s && this.factor.isPositive() ? "+" : "";
|
|
381
|
-
if (this
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
return this.#t.isUnit() ? this.#s ? `${this.#t.isOne() ? t : "-"} ${e}` : `${this.#t.isOne() ? "" : "-"}${e}` : `${t}${this.#t.tex} ${e}`;
|
|
381
|
+
if (this.value === 0) return `${t}0`;
|
|
382
|
+
const e = this.#n(this.#t.denominator, this.#i.denominator), i = this.#n(this.#t.numerator, this.#i.numerator) ?? "1";
|
|
383
|
+
return e === null ? `${t}${i}` : `${t}\\frac{ ${i} }{ ${e} }`;
|
|
385
384
|
}
|
|
386
385
|
get display() {
|
|
387
386
|
const t = this.#s && this.factor.isPositive() ? "+" : "";
|
|
388
|
-
if (this
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
return this.#t.isUnit() ? `${this.#t.isOne() ? t : "-"}${e}` : `${t}${this.#t.display}${e}`;
|
|
387
|
+
if (this.value === 0) return `${t}0`;
|
|
388
|
+
const e = this.#r(this.#t.denominator, this.#i.denominator, !0), i = this.#r(this.#t.numerator, this.#i.numerator, e !== null) ?? "1";
|
|
389
|
+
return e === null ? `${t}${i}` : `${t}${i}/${e}`;
|
|
392
390
|
}
|
|
393
391
|
add(t) {
|
|
394
392
|
this.reduce();
|
|
395
|
-
const e = new
|
|
393
|
+
const e = new T(t).reduce();
|
|
396
394
|
if (this.index !== e.index || !this.radical.isEqual(e.radical))
|
|
397
395
|
throw new Error("Add can only be done with two same index and radical");
|
|
398
396
|
return this.factor.add(e.factor), this;
|
|
399
397
|
}
|
|
400
398
|
divide(t) {
|
|
401
|
-
return this.multiply(new
|
|
399
|
+
return this.multiply(new T(t).inverse());
|
|
402
400
|
}
|
|
403
401
|
get factor() {
|
|
404
402
|
return this.#t;
|
|
@@ -443,7 +441,7 @@ class O {
|
|
|
443
441
|
return this.factor.isZero() || this.radical.isZero();
|
|
444
442
|
}
|
|
445
443
|
multiply(t) {
|
|
446
|
-
const e = new
|
|
444
|
+
const e = new T(t);
|
|
447
445
|
if (this.factor.multiply(e.factor), this.index === e.index)
|
|
448
446
|
return this.radical.multiply(e.radical), this;
|
|
449
447
|
if (this.radical.isEqual(e.radical)) {
|
|
@@ -484,7 +482,7 @@ class O {
|
|
|
484
482
|
return this.root(2);
|
|
485
483
|
}
|
|
486
484
|
subtract(t) {
|
|
487
|
-
const e = new
|
|
485
|
+
const e = new T(t);
|
|
488
486
|
return this.add(e.opposite());
|
|
489
487
|
}
|
|
490
488
|
get value() {
|
|
@@ -499,16 +497,30 @@ class O {
|
|
|
499
497
|
zero() {
|
|
500
498
|
return this.radical.zero(), this.factor.zero(), this;
|
|
501
499
|
}
|
|
502
|
-
#r(t) {
|
|
500
|
+
#r(t, e, i) {
|
|
501
|
+
const s = this.#e === 2 ? "sqrt" : `root(${this.#e})`, r = [
|
|
502
|
+
t !== 1 && t !== 0 ? t.toString() : null,
|
|
503
|
+
e !== 1 && e !== 0 ? `${s}(${e})` : null
|
|
504
|
+
].filter((o) => o !== null);
|
|
505
|
+
return r.length === 0 ? null : i && r.length === 2 ? `(${r.join("")})` : r.join("");
|
|
506
|
+
}
|
|
507
|
+
#n(t, e) {
|
|
508
|
+
const i = this.#e === 2 ? "\\sqrt" : `\\sqrt[ ${this.#e} ]`, s = [
|
|
509
|
+
t !== 1 && t !== 0 ? t.toString() : null,
|
|
510
|
+
e !== 1 && e !== 0 ? `${i}{ ${e} }` : null
|
|
511
|
+
].filter((r) => r !== null);
|
|
512
|
+
return s.length === 0 ? null : s.join(" ");
|
|
513
|
+
}
|
|
514
|
+
#o(t) {
|
|
503
515
|
const [e, i] = t.split("root"), [s, r] = i.split(")");
|
|
504
|
-
return this.index = +
|
|
516
|
+
return this.index = +Q(s), this.radical = new a(Q(r)), this.factor = e === "" ? new a().one() : new a(e), this;
|
|
505
517
|
}
|
|
506
|
-
#
|
|
518
|
+
#h(t) {
|
|
507
519
|
const [e, i] = t.split("sqrt");
|
|
508
|
-
return this.index = 2, this.radical = new a(
|
|
520
|
+
return this.index = 2, this.radical = new a(Q(i)), this.factor = e === "" ? new a().one() : new a(e), this;
|
|
509
521
|
}
|
|
510
522
|
}
|
|
511
|
-
class
|
|
523
|
+
class C {
|
|
512
524
|
#t;
|
|
513
525
|
#e;
|
|
514
526
|
#i;
|
|
@@ -517,7 +529,7 @@ class $ {
|
|
|
517
529
|
#n;
|
|
518
530
|
#o;
|
|
519
531
|
constructor() {
|
|
520
|
-
this.#o = "x", this.#i = !1, this.#e = null, this.#n = null, this.#s = new a().zero(), this.#r = new
|
|
532
|
+
this.#o = "x", this.#i = !1, this.#e = null, this.#n = null, this.#s = new a().zero(), this.#r = new T(), this.#t = 1;
|
|
521
533
|
}
|
|
522
534
|
get tex() {
|
|
523
535
|
if (this.#n) return this.#n;
|
|
@@ -540,10 +552,10 @@ class $ {
|
|
|
540
552
|
this.#e = t;
|
|
541
553
|
}
|
|
542
554
|
static fromFraction(t) {
|
|
543
|
-
const e = new
|
|
555
|
+
const e = new C();
|
|
544
556
|
e.setExact();
|
|
545
557
|
const i = new a(t);
|
|
546
|
-
return e.display = i.display, e.tex = i.tex, e.fraction = i, e.root = new
|
|
558
|
+
return e.display = i.display, e.tex = i.tex, e.fraction = i, e.root = new T(), e;
|
|
547
559
|
}
|
|
548
560
|
static fromQuadratic(t, e, i) {
|
|
549
561
|
const [s, r, o] = [t, e, i].map((m) => new a(m)), h = r.clone().pow(2).subtract(s.clone().multiply(o).multiply(4));
|
|
@@ -551,12 +563,12 @@ class $ {
|
|
|
551
563
|
return [];
|
|
552
564
|
if (h.isSquare()) {
|
|
553
565
|
const m = h.sqrt(), d = r.clone().opposite().subtract(m).divide(s.clone().multiply(2)), y = r.clone().opposite().add(m).divide(s.clone().multiply(2));
|
|
554
|
-
return m.isZero() ? [
|
|
566
|
+
return m.isZero() ? [C.fromFraction(d)] : [C.fromFraction(d), C.fromFraction(y)];
|
|
555
567
|
}
|
|
556
|
-
const c = new
|
|
557
|
-
c.fraction = r.clone().opposite().divide(s).divide(2), c.root = new
|
|
558
|
-
const f = new
|
|
559
|
-
return f.fraction = r.clone().opposite().divide(s).divide(2), f.root = new
|
|
568
|
+
const c = new C();
|
|
569
|
+
c.fraction = r.clone().opposite().divide(s).divide(2), c.root = new T().from(2, h, s.clone().multiply(2).inverse().opposite()), c.setExact(!1);
|
|
570
|
+
const f = new C();
|
|
571
|
+
return f.fraction = r.clone().opposite().divide(s).divide(2), f.root = new T().from(2, h, s.clone().multiply(2).inverse()), f.setExact(!1), [c, f];
|
|
560
572
|
}
|
|
561
573
|
get count() {
|
|
562
574
|
return this.#t;
|
|
@@ -601,7 +613,7 @@ class $ {
|
|
|
601
613
|
t !== void 0 && (this.#o = t);
|
|
602
614
|
}
|
|
603
615
|
}
|
|
604
|
-
class
|
|
616
|
+
class jt {
|
|
605
617
|
#t;
|
|
606
618
|
#e;
|
|
607
619
|
constructor(t) {
|
|
@@ -657,11 +669,11 @@ class R {
|
|
|
657
669
|
return this.#c();
|
|
658
670
|
}
|
|
659
671
|
#s(t, e) {
|
|
660
|
-
const i = new
|
|
672
|
+
const i = new C();
|
|
661
673
|
return i.exact = !1, i.tex = e?.tex ?? null, i.display = e?.display ?? null, i.fraction = new a(t), i.fraction.exact = !1, i.variable = this.#i, i;
|
|
662
674
|
}
|
|
663
675
|
#r(t) {
|
|
664
|
-
return t instanceof a && !t.exact ? this.#s(t.value) :
|
|
676
|
+
return t instanceof a && !t.exact ? this.#s(t.value) : C.fromFraction(t);
|
|
665
677
|
}
|
|
666
678
|
// Solve using bissection algorithm (approximative solution)
|
|
667
679
|
#n(t) {
|
|
@@ -718,14 +730,14 @@ class R {
|
|
|
718
730
|
const s = t.monomByDegree().coefficient, r = t.monomByDegree(0).coefficient;
|
|
719
731
|
if (r.isZero()) {
|
|
720
732
|
e.push(this.#r(0));
|
|
721
|
-
const d = t.monoms.reduce((
|
|
733
|
+
const d = t.monoms.reduce((q, $) => $.degree().value < q.degree().value ? $ : q), y = d.coefficient;
|
|
722
734
|
d.clone().divide(y), t.divide(d);
|
|
723
735
|
}
|
|
724
736
|
const o = x.dividers(s.value), h = x.dividers(r.value), c = [];
|
|
725
737
|
for (const d of o)
|
|
726
738
|
for (const y of h) {
|
|
727
|
-
const
|
|
728
|
-
c.find((
|
|
739
|
+
const q = new a(y, d);
|
|
740
|
+
c.find(($) => $.value === q.value) || (c.push(q.clone()), c.push(q.opposite().clone()));
|
|
729
741
|
}
|
|
730
742
|
c.forEach((d) => {
|
|
731
743
|
t.evaluate(d).isZero() && e.push(this.#r(d));
|
|
@@ -746,23 +758,23 @@ class R {
|
|
|
746
758
|
};
|
|
747
759
|
}
|
|
748
760
|
#c() {
|
|
749
|
-
const t = this.#e, e = t.monomByDegree(3).coefficient, i = t.monomByDegree(2).coefficient, s = t.monomByDegree(1).coefficient, r = t.monomByDegree(0).coefficient, o = i.clone().divide(e), h = s.clone().divide(e), c = r.clone().divide(e), f = h.clone().subtract(o.clone().pow(2).divide(3)), m = c.clone().subtract(o.clone().multiply(h).divide(3)).add(o.clone().pow(3).multiply(2).divide(27)), d = m.clone().opposite(), y = f.clone().opposite().pow(3).divide(27),
|
|
750
|
-
if (
|
|
751
|
-
const
|
|
752
|
-
return [this.#r(
|
|
761
|
+
const t = this.#e, e = t.monomByDegree(3).coefficient, i = t.monomByDegree(2).coefficient, s = t.monomByDegree(1).coefficient, r = t.monomByDegree(0).coefficient, o = i.clone().divide(e), h = s.clone().divide(e), c = r.clone().divide(e), f = h.clone().subtract(o.clone().pow(2).divide(3)), m = c.clone().subtract(o.clone().multiply(h).divide(3)).add(o.clone().pow(3).multiply(2).divide(27)), d = m.clone().opposite(), y = f.clone().opposite().pow(3).divide(27), q = d.clone().pow(2).subtract(y.clone().multiply(4)).opposite();
|
|
762
|
+
if (q.isNegative()) {
|
|
763
|
+
const $ = m.clone().opposite().add(q.clone().opposite().sqrt()).divide(2).root(3), k = m.clone().opposite().subtract(q.clone().opposite().sqrt()).divide(2).root(3), I = $.clone().add(k).subtract(o.clone().divide(3));
|
|
764
|
+
return [this.#r(I)];
|
|
753
765
|
}
|
|
754
|
-
if (
|
|
755
|
-
const
|
|
756
|
-
return k.isEqual(
|
|
757
|
-
this.#r(
|
|
766
|
+
if (q.isZero()) {
|
|
767
|
+
const $ = m.clone().opposite().divide(2).root(3), k = $.clone().opposite().subtract(o.clone().divide(3)), I = $.clone().multiply(2).subtract(o.clone().divide(3));
|
|
768
|
+
return k.isEqual(I) ? [this.#r(k)] : [
|
|
769
|
+
this.#r(I),
|
|
758
770
|
this.#r(k)
|
|
759
|
-
].sort((
|
|
771
|
+
].sort((Y, M) => Y.value - M.value);
|
|
760
772
|
}
|
|
761
|
-
if (
|
|
762
|
-
const
|
|
773
|
+
if (q.isPositive()) {
|
|
774
|
+
const $ = [], k = f.value, I = m.value, Y = o.value;
|
|
763
775
|
for (let M = 0; M < 3; M++)
|
|
764
|
-
|
|
765
|
-
return
|
|
776
|
+
$.push(2 * Math.sqrt(-k / 3) * Math.cos(Math.acos(3 * I / (2 * k) * Math.sqrt(-3 / k)) / 3 + 2 * Math.PI * M / 3) - Y / 3);
|
|
777
|
+
return $.map((M) => this.#s(M)).sort((M, lt) => M.value - lt.value);
|
|
766
778
|
}
|
|
767
779
|
return [];
|
|
768
780
|
}
|
|
@@ -792,23 +804,23 @@ class R {
|
|
|
792
804
|
return this.#d(e, i, r);
|
|
793
805
|
}
|
|
794
806
|
#d(t, e, i) {
|
|
795
|
-
const s = t.clone().multiply(2), r = new
|
|
807
|
+
const s = t.clone().multiply(2), r = new C();
|
|
796
808
|
r.fraction = e.clone().opposite().divide(s.clone()), r.root.radical = i.clone(), r.root.factor = new a().one().divide(s.clone()), r.exact = !0;
|
|
797
|
-
const o = new
|
|
809
|
+
const o = new C();
|
|
798
810
|
return o.fraction = e.clone().opposite().divide(s.clone()), o.root.radical = i.clone(), o.root.factor = new a().one().divide(s.clone()).opposite(), o.exact = !0, [r, o].sort((h, c) => h.value - c.value);
|
|
799
811
|
}
|
|
800
812
|
}
|
|
801
|
-
const
|
|
813
|
+
const tt = {
|
|
802
814
|
pi: Math.PI,
|
|
803
815
|
e: Math.exp(1)
|
|
804
816
|
};
|
|
805
|
-
var u = /* @__PURE__ */ ((n) => (n.VARIABLE = "variable", n.COEFFICIENT = "coefficient", n.OPERATION = "operation", n.CONSTANT = "constant", n.FUNCTION = "function", n.FUNCTION_ARGUMENT = "function-argument", n.MONOM = "monom", n.LEFT_PARENTHESIS = "(", n.RIGHT_PARENTHESIS = ")", n))(u || {}),
|
|
817
|
+
var u = /* @__PURE__ */ ((n) => (n.VARIABLE = "variable", n.COEFFICIENT = "coefficient", n.OPERATION = "operation", n.CONSTANT = "constant", n.FUNCTION = "function", n.FUNCTION_ARGUMENT = "function-argument", n.MONOM = "monom", n.LEFT_PARENTHESIS = "(", n.RIGHT_PARENTHESIS = ")", n))(u || {}), S = /* @__PURE__ */ ((n) => (n.EXPRESSION = "expression", n.POLYNOM = "polynom", n.SET = "set", n.NUMERIC = "numeric", n))(S || {});
|
|
806
818
|
function bt(n, t) {
|
|
807
819
|
if (n.length <= 1)
|
|
808
820
|
return n;
|
|
809
821
|
const e = Object.keys(t).filter((d) => t[d].type === u.FUNCTION).map((d) => d);
|
|
810
822
|
e.sort((d, y) => y.length - d.length);
|
|
811
|
-
const i = new RegExp(`^(${e.join("|")})\\(`), s = Object.keys(
|
|
823
|
+
const i = new RegExp(`^(${e.join("|")})\\(`), s = Object.keys(tt);
|
|
812
824
|
s.sort((d, y) => y.length - d.length);
|
|
813
825
|
const r = new RegExp(`^(${s.join("|")})`), o = /^(\d+(\.\d+)?)/;
|
|
814
826
|
let h = "", c, f, m;
|
|
@@ -876,7 +888,7 @@ const Nt = {
|
|
|
876
888
|
sqrt: { precedence: 4, associative: "right", type: u.FUNCTION },
|
|
877
889
|
nthrt: { precedence: 4, associative: "right", type: u.FUNCTION },
|
|
878
890
|
",": { precedence: 2, associative: "left", type: u.FUNCTION_ARGUMENT }
|
|
879
|
-
},
|
|
891
|
+
}, Tt = {
|
|
880
892
|
"^": { precedence: 4, associative: "right", type: u.OPERATION },
|
|
881
893
|
"*": { precedence: 3, associative: "left", type: u.OPERATION },
|
|
882
894
|
"/": { precedence: 3, associative: "left", type: u.OPERATION },
|
|
@@ -890,7 +902,7 @@ const Nt = {
|
|
|
890
902
|
nthrt: { precedence: 4, associative: "right", type: u.FUNCTION },
|
|
891
903
|
ln: { precedence: 4, associative: "right", type: u.FUNCTION },
|
|
892
904
|
log: { precedence: 4, associative: "right", type: u.FUNCTION }
|
|
893
|
-
},
|
|
905
|
+
}, Ot = {
|
|
894
906
|
"&": { precedence: 3, associative: "left", type: u.OPERATION },
|
|
895
907
|
"|": { precedence: 3, associative: "left", type: u.OPERATION },
|
|
896
908
|
"!": { precedence: 4, associative: "right", type: u.OPERATION },
|
|
@@ -903,7 +915,7 @@ class G {
|
|
|
903
915
|
#s = [];
|
|
904
916
|
#r;
|
|
905
917
|
constructor(t) {
|
|
906
|
-
this.#t = typeof t > "u" ?
|
|
918
|
+
this.#t = typeof t > "u" ? S.POLYNOM : t, this.tokenConfigInitialization();
|
|
907
919
|
}
|
|
908
920
|
// Getter
|
|
909
921
|
get rpn() {
|
|
@@ -913,7 +925,7 @@ class G {
|
|
|
913
925
|
return this.#e.map((t) => t.token);
|
|
914
926
|
}
|
|
915
927
|
tokenConfigInitialization() {
|
|
916
|
-
return this.#t ===
|
|
928
|
+
return this.#t === S.SET ? (this.#i = Ot, this.#r = !1) : this.#t === S.NUMERIC ? (this.#i = Tt, this.#r = !0) : this.#t === S.EXPRESSION ? (this.#i = At, this.#r = !0) : (this.#i = Nt, this.#r = !0), this.#s = Object.keys(this.#i).sort((t, e) => e.length - t.length), this.#i;
|
|
917
929
|
}
|
|
918
930
|
/**
|
|
919
931
|
* Get the next token to analyse.
|
|
@@ -934,7 +946,7 @@ class G {
|
|
|
934
946
|
i += r, s = this.#i[r].type;
|
|
935
947
|
break;
|
|
936
948
|
}
|
|
937
|
-
for (const r in
|
|
949
|
+
for (const r in tt)
|
|
938
950
|
if (t.substring(e, e + r.length) === r) {
|
|
939
951
|
i += r, s = u.CONSTANT;
|
|
940
952
|
break;
|
|
@@ -1035,7 +1047,7 @@ class Ct {
|
|
|
1035
1047
|
constructor(t, e) {
|
|
1036
1048
|
this._expression = t;
|
|
1037
1049
|
try {
|
|
1038
|
-
this._rpn = new G(
|
|
1050
|
+
this._rpn = new G(S.NUMERIC).parse(t, e).rpn;
|
|
1039
1051
|
} catch (i) {
|
|
1040
1052
|
throw this._rpn = null, this._isValid = !1, console.warn(i), new Error(`There was a problem parsing: ${t}`);
|
|
1041
1053
|
}
|
|
@@ -1076,7 +1088,7 @@ class Ct {
|
|
|
1076
1088
|
else if (i.tokenType === u.VARIABLE && t !== void 0)
|
|
1077
1089
|
Object.hasOwn(t, i.token) && e.push(+t[i.token]);
|
|
1078
1090
|
else if (i.tokenType === u.CONSTANT)
|
|
1079
|
-
e.push(
|
|
1091
|
+
e.push(tt[i.token]);
|
|
1080
1092
|
else if (i.tokenType === u.OPERATION) {
|
|
1081
1093
|
if (i.token === "*") {
|
|
1082
1094
|
const s = e.pop(), r = e.pop();
|
|
@@ -1967,7 +1979,7 @@ class l {
|
|
|
1967
1979
|
let e = new Array(2 * t.length + 1).fill("").map((i, s) => s % 2 === 0 ? "" : "z");
|
|
1968
1980
|
if (e.length === 1) {
|
|
1969
1981
|
const [i] = this.getCoefficients().map((s) => s.value);
|
|
1970
|
-
e =
|
|
1982
|
+
e = U(e, "", i > 0 ? "+" : "-");
|
|
1971
1983
|
} else if (this.degree().isOne()) {
|
|
1972
1984
|
const [i] = this.getCoefficients().map((s) => s.value);
|
|
1973
1985
|
e[0] = i > 0 ? "-" : "+", e[1] = "z", e[2] = i > 0 ? "+" : "-";
|
|
@@ -2512,7 +2524,7 @@ class b {
|
|
|
2512
2524
|
}
|
|
2513
2525
|
tableOfSigns() {
|
|
2514
2526
|
const t = this.power.clone().reduce(), e = this.polynom.tableOfSigns();
|
|
2515
|
-
return t.isStrictlyNegative() && (e.signs =
|
|
2527
|
+
return t.isStrictlyNegative() && (e.signs = U(e.signs, "z", "d")), t.denominator % 2 === 0 ? e.signs = U(e.signs, "-", "h") : t.numerator % 2 === 0 && (e.signs = U(e.signs, "-", "+")), { roots: e.roots, signs: e.signs };
|
|
2516
2528
|
}
|
|
2517
2529
|
get variables() {
|
|
2518
2530
|
return this.polynom.variables;
|
|
@@ -2528,17 +2540,15 @@ class b {
|
|
|
2528
2540
|
}
|
|
2529
2541
|
}
|
|
2530
2542
|
var D = /* @__PURE__ */ ((n) => (n[n.ROOT = 0] = "ROOT", n[n.POWER = 1] = "POWER", n))(D || {});
|
|
2531
|
-
class
|
|
2543
|
+
class z {
|
|
2532
2544
|
#t;
|
|
2533
|
-
// Solve steps for TeX output.
|
|
2534
|
-
#e = [];
|
|
2535
2545
|
// Determine the letters in the linear asSystem, usually ['x', 'y']
|
|
2536
|
-
#
|
|
2546
|
+
#e;
|
|
2537
2547
|
constructor(...t) {
|
|
2538
|
-
return this.#t = [], this.#
|
|
2548
|
+
return this.#t = [], this.#e = [], t.length > 0 && this.parse(...t), this;
|
|
2539
2549
|
}
|
|
2540
|
-
parse = (...t) => (this.#t = t.map((e) => new v(e)), this.#
|
|
2541
|
-
clone = () => new
|
|
2550
|
+
parse = (...t) => (this.#t = t.map((e) => new v(e)), this.#i(), this);
|
|
2551
|
+
clone = () => new z().parse(...this.#t.map((t) => t.clone()));
|
|
2542
2552
|
get tex() {
|
|
2543
2553
|
const t = this.clone().reorder();
|
|
2544
2554
|
return this.buildTex(t.equations);
|
|
@@ -2551,15 +2561,21 @@ class B {
|
|
|
2551
2561
|
if (t.some((r) => r.length !== i))
|
|
2552
2562
|
throw new Error("All rows must have the same number of columns");
|
|
2553
2563
|
const s = e.split("").splice(0, i - 1);
|
|
2554
|
-
return new
|
|
2564
|
+
return new z(
|
|
2555
2565
|
...t.map((r) => {
|
|
2556
2566
|
const o = new l(s.join(""), ...r);
|
|
2557
2567
|
return new v(o, 0);
|
|
2558
2568
|
})
|
|
2559
2569
|
);
|
|
2560
2570
|
}
|
|
2571
|
+
static solutionAsDisplay(t) {
|
|
2572
|
+
return `(${t.map((e) => e.display).join(";")})`;
|
|
2573
|
+
}
|
|
2574
|
+
static solutionAsTex(t) {
|
|
2575
|
+
return `\\left( ${t.map((e) => e.tex).join(" ; ")} \\right)`;
|
|
2576
|
+
}
|
|
2561
2577
|
add(t, e) {
|
|
2562
|
-
if (t instanceof
|
|
2578
|
+
if (t instanceof z) {
|
|
2563
2579
|
const i = t.equations.length;
|
|
2564
2580
|
if (i !== this.#t.length)
|
|
2565
2581
|
throw new Error("The number of equations must be the same");
|
|
@@ -2602,13 +2618,13 @@ class B {
|
|
|
2602
2618
|
return this.#t;
|
|
2603
2619
|
}
|
|
2604
2620
|
set equations(t) {
|
|
2605
|
-
this.#t = t, this.#
|
|
2621
|
+
this.#t = t, this.#i();
|
|
2606
2622
|
}
|
|
2607
2623
|
evaluate(t, e) {
|
|
2608
2624
|
throw new Error("Method not implemented.");
|
|
2609
2625
|
}
|
|
2610
2626
|
hasVariable(t) {
|
|
2611
|
-
return this.#
|
|
2627
|
+
return this.#e.includes(t);
|
|
2612
2628
|
}
|
|
2613
2629
|
isEqual(t) {
|
|
2614
2630
|
return this.equations.every((e, i) => e.isEqual(t.equations[i]));
|
|
@@ -2617,7 +2633,7 @@ class B {
|
|
|
2617
2633
|
return this.variables.length === this.#t.length;
|
|
2618
2634
|
}
|
|
2619
2635
|
get matrix() {
|
|
2620
|
-
return this.#
|
|
2636
|
+
return this.#s();
|
|
2621
2637
|
}
|
|
2622
2638
|
mergeEquations(t, e) {
|
|
2623
2639
|
const i = this.equations[t.id].clone().multiply(t.factor), s = this.equations[e.id].clone().multiply(e.factor);
|
|
@@ -2645,16 +2661,6 @@ class B {
|
|
|
2645
2661
|
return this;
|
|
2646
2662
|
};
|
|
2647
2663
|
solve() {
|
|
2648
|
-
const t = [this.tex], e = this.clone();
|
|
2649
|
-
for (; e.variables.length > 1; ) {
|
|
2650
|
-
const i = e.variables[e.variables.length - 1], s = new B();
|
|
2651
|
-
e.solve_compute_factors(i).slice(0, e.variables.length - 1).forEach((o) => {
|
|
2652
|
-
s.equations.push(e.mergeEquations(...o));
|
|
2653
|
-
}), e.equations = s.equations, t.push(e.tex), e.reduce(), t.push(e.tex);
|
|
2654
|
-
}
|
|
2655
|
-
return [];
|
|
2656
|
-
}
|
|
2657
|
-
solveMatrix = () => {
|
|
2658
2664
|
const [t, e] = this.matrix, i = t.map((s, r) => [...s, e[r]]);
|
|
2659
2665
|
for (let s = 0; s < t.length; s++) {
|
|
2660
2666
|
let r = i[s][s].clone();
|
|
@@ -2673,11 +2679,11 @@ class B {
|
|
|
2673
2679
|
for (let c = 0; c < i[o].length; c++)
|
|
2674
2680
|
i[o][c].add(i[s][c].clone().multiply(h));
|
|
2675
2681
|
if (i[o].slice(0, i[o].length - 1).every((c) => c.isZero()))
|
|
2676
|
-
return i[o][i[o].length - 1].isZero() ?
|
|
2682
|
+
return i[o][i[o].length - 1].isZero() ? this.#r() : [];
|
|
2677
2683
|
}
|
|
2678
2684
|
}
|
|
2679
|
-
return i
|
|
2680
|
-
}
|
|
2685
|
+
return this.#r(i);
|
|
2686
|
+
}
|
|
2681
2687
|
solve_compute_factors(t) {
|
|
2682
2688
|
const e = [], i = this.equations.map((s) => s.left.monomByLetter(t).coefficient.value);
|
|
2683
2689
|
return i.forEach((s, r) => {
|
|
@@ -2697,7 +2703,7 @@ class B {
|
|
|
2697
2703
|
}), e.sort((s, r) => Math.abs(s[0].factor) + Math.abs(s[1].factor) - (Math.abs(r[0].factor) + Math.abs(r[1].factor)));
|
|
2698
2704
|
}
|
|
2699
2705
|
subtract(t, e) {
|
|
2700
|
-
if (t instanceof
|
|
2706
|
+
if (t instanceof z) {
|
|
2701
2707
|
const i = t.equations.length;
|
|
2702
2708
|
if (i !== this.#t.length)
|
|
2703
2709
|
throw new Error("The number of equations must be the same");
|
|
@@ -2712,14 +2718,14 @@ class B {
|
|
|
2712
2718
|
return this;
|
|
2713
2719
|
}
|
|
2714
2720
|
get variables() {
|
|
2715
|
-
return this.#
|
|
2721
|
+
return this.#e;
|
|
2716
2722
|
}
|
|
2717
2723
|
set variables(t) {
|
|
2718
2724
|
const e = typeof t == "string" ? t.split("") : [...t];
|
|
2719
|
-
e.sort(), this.#
|
|
2725
|
+
e.sort(), this.#e = e;
|
|
2720
2726
|
}
|
|
2721
|
-
#
|
|
2722
|
-
#
|
|
2727
|
+
#i = () => (this.#e = this.#t.reduce((t, e) => [.../* @__PURE__ */ new Set([...t, ...e.variables])], []), this.#e.sort(), this);
|
|
2728
|
+
#s = () => {
|
|
2723
2729
|
const t = [], e = [];
|
|
2724
2730
|
for (const i of this.#t) {
|
|
2725
2731
|
const s = [], r = i.clone().reorder();
|
|
@@ -2731,6 +2737,16 @@ class B {
|
|
|
2731
2737
|
}
|
|
2732
2738
|
return [t, e];
|
|
2733
2739
|
};
|
|
2740
|
+
#r(t) {
|
|
2741
|
+
const e = [];
|
|
2742
|
+
return t ? (t.forEach((i, s) => {
|
|
2743
|
+
const r = C.fromFraction(i[i.length - 1]);
|
|
2744
|
+
r.variable = this.variables[s], e.push(r);
|
|
2745
|
+
}), e) : (this.variables.forEach((i) => {
|
|
2746
|
+
const s = C.fromFraction(1 / 0);
|
|
2747
|
+
s.variable = i, e.push(s);
|
|
2748
|
+
}), e);
|
|
2749
|
+
}
|
|
2734
2750
|
}
|
|
2735
2751
|
class qt {
|
|
2736
2752
|
#t;
|
|
@@ -2741,7 +2757,7 @@ class qt {
|
|
|
2741
2757
|
constructor(t) {
|
|
2742
2758
|
return this.#t = [], t !== void 0 && this.parse(t), this;
|
|
2743
2759
|
}
|
|
2744
|
-
parse = (t) => (this.#t = new G(
|
|
2760
|
+
parse = (t) => (this.#t = new G(S.SET).parse(t).rpn, this);
|
|
2745
2761
|
get tex() {
|
|
2746
2762
|
const t = [];
|
|
2747
2763
|
for (const e of this.#t)
|
|
@@ -3164,7 +3180,7 @@ function Z(n) {
|
|
|
3164
3180
|
}, {}), { numerator: s, denominator: r } = t.divide(e).reduce();
|
|
3165
3181
|
return s !== 1 && (i[s.toString()] = [new b(s, 1)]), r !== 1 && (i[r.toString()] = [new b(r, -1)]), i;
|
|
3166
3182
|
}
|
|
3167
|
-
class
|
|
3183
|
+
class B {
|
|
3168
3184
|
#t = null;
|
|
3169
3185
|
#e = !0;
|
|
3170
3186
|
#i = [];
|
|
@@ -3181,7 +3197,7 @@ class S {
|
|
|
3181
3197
|
e.forEach((s) => {
|
|
3182
3198
|
i.push(s.clone());
|
|
3183
3199
|
}), t.push(i);
|
|
3184
|
-
}), new
|
|
3200
|
+
}), new B().fromValues(t);
|
|
3185
3201
|
}
|
|
3186
3202
|
get tex() {
|
|
3187
3203
|
if (this.#i.length === 0)
|
|
@@ -3227,7 +3243,7 @@ class S {
|
|
|
3227
3243
|
}
|
|
3228
3244
|
characteristic_polynom(t) {
|
|
3229
3245
|
return t ??= "k", this.clone().subtract(
|
|
3230
|
-
new
|
|
3246
|
+
new B(this.dimension.rows).one().multiply(new l(t))
|
|
3231
3247
|
).determinant();
|
|
3232
3248
|
}
|
|
3233
3249
|
cofactor(t, e) {
|
|
@@ -3304,7 +3320,7 @@ class S {
|
|
|
3304
3320
|
inverse() {
|
|
3305
3321
|
if (!this.canBeInverted())
|
|
3306
3322
|
throw new Error("The matrix cannot be inverted.");
|
|
3307
|
-
const t = new
|
|
3323
|
+
const t = new B().fromDimensions(this.dimension.rows, this.dimension.cols);
|
|
3308
3324
|
t.forEach((i, s, r) => {
|
|
3309
3325
|
t.setValue(s, r, this.cofactor(s, r));
|
|
3310
3326
|
}), t.transpose();
|
|
@@ -3342,10 +3358,10 @@ class S {
|
|
|
3342
3358
|
}), s;
|
|
3343
3359
|
}
|
|
3344
3360
|
multiply(t) {
|
|
3345
|
-
if (t instanceof
|
|
3361
|
+
if (t instanceof B) {
|
|
3346
3362
|
if (!this.canBeMultiplied(t))
|
|
3347
3363
|
throw new Error("Cannot multiply a matrix with incompatibles dimensions");
|
|
3348
|
-
const e = new
|
|
3364
|
+
const e = new B(this.dimension.rows, t.dimension.cols);
|
|
3349
3365
|
return e.forEach((i, s, r) => {
|
|
3350
3366
|
const o = this.rows[s], h = t.cols[r], c = new l();
|
|
3351
3367
|
o.forEach((f, m) => {
|
|
@@ -3539,7 +3555,7 @@ class w extends P {
|
|
|
3539
3555
|
(s, r) => s.add(r.clone().pow(2)),
|
|
3540
3556
|
new a(0)
|
|
3541
3557
|
);
|
|
3542
|
-
return new
|
|
3558
|
+
return new T().from(2, i).reduce();
|
|
3543
3559
|
}
|
|
3544
3560
|
isEqual(t) {
|
|
3545
3561
|
return this.x.value === t.x.value && this.y.value === t.y.value;
|
|
@@ -3661,36 +3677,40 @@ class g extends P {
|
|
|
3661
3677
|
return t === 0 ? this : this.divideByScalar(t);
|
|
3662
3678
|
};
|
|
3663
3679
|
}
|
|
3664
|
-
var L = /* @__PURE__ */ ((n) => (n.None = "none", n.Parallel = "parallel", n.Perpendicular = "perpendicular", n.Tangent = "tangent", n))(L || {}),
|
|
3680
|
+
var L = /* @__PURE__ */ ((n) => (n.None = "none", n.Parallel = "parallel", n.Perpendicular = "perpendicular", n.Tangent = "tangent", n))(L || {}), H = /* @__PURE__ */ ((n) => (n.None = "none", n.Parallel = "parallel", n.Perpendicular = "perpendicular", n.Tangent = "tangent", n))(H || {});
|
|
3665
3681
|
function ot(n = 0.5) {
|
|
3666
3682
|
return Math.random() < n;
|
|
3667
3683
|
}
|
|
3668
|
-
function
|
|
3684
|
+
function O(n, t, e) {
|
|
3669
3685
|
if (t === void 0)
|
|
3670
|
-
return n >= 0 ?
|
|
3686
|
+
return n >= 0 ? O(0, n) : O(n, 0);
|
|
3671
3687
|
if (n === t)
|
|
3672
3688
|
return n;
|
|
3673
3689
|
if (e === void 0)
|
|
3674
3690
|
return Math.floor(Math.random() * (t - n + 1) + n);
|
|
3675
3691
|
if (Math.abs(t - n) <= e.length)
|
|
3676
3692
|
throw new Error("The number of excluded values is too high.");
|
|
3677
|
-
let i =
|
|
3693
|
+
let i = O(n, t);
|
|
3678
3694
|
for (; e.includes(i); )
|
|
3679
|
-
i =
|
|
3695
|
+
i = O(n, t);
|
|
3680
3696
|
return i;
|
|
3681
3697
|
}
|
|
3682
3698
|
function A(n, t) {
|
|
3683
|
-
return t === !1 ? ot() ?
|
|
3699
|
+
return t === !1 ? ot() ? O(1, n) : -O(1, n) : O(-n, n);
|
|
3700
|
+
}
|
|
3701
|
+
function Bt(n, t) {
|
|
3702
|
+
const e = x.pythagoreanTripletsWithTarget(n).filter((i) => t === !0 || !i.includes(0));
|
|
3703
|
+
return e.length === 0 ? null : W(e);
|
|
3684
3704
|
}
|
|
3685
|
-
function
|
|
3705
|
+
function St(n) {
|
|
3686
3706
|
let t = x.primes();
|
|
3687
|
-
return n !== void 0 && (t = t.filter((e) => e < n)),
|
|
3707
|
+
return n !== void 0 && (t = t.filter((e) => e < n)), W(t);
|
|
3688
3708
|
}
|
|
3689
|
-
function
|
|
3709
|
+
function It(n, t) {
|
|
3690
3710
|
return t === void 0 && (t = 1), n.length <= 0 ? Object.values(n) : ht(n).slice(0, t);
|
|
3691
3711
|
}
|
|
3692
|
-
function
|
|
3693
|
-
return n.length === 0 ? null : n[
|
|
3712
|
+
function W(n) {
|
|
3713
|
+
return n.length === 0 ? null : n[O(0, n.length - 1)];
|
|
3694
3714
|
}
|
|
3695
3715
|
function ht(n) {
|
|
3696
3716
|
const t = Object.values(n);
|
|
@@ -3855,7 +3875,7 @@ class E {
|
|
|
3855
3875
|
}
|
|
3856
3876
|
distanceTo(t) {
|
|
3857
3877
|
const e = t.x.clone().multiply(this.#e).add(t.y.clone().multiply(this.#i)).add(this.#s).abs(), i = this.normal.normSquare;
|
|
3858
|
-
return i.isZero() ? new
|
|
3878
|
+
return i.isZero() ? new T(0) : new T().from(2, i.inverse(), e).reduce();
|
|
3859
3879
|
}
|
|
3860
3880
|
fromCoefficient(t, e, i) {
|
|
3861
3881
|
this.#e = new a(t), this.#i = new a(e), this.#s = new a(i);
|
|
@@ -4107,11 +4127,10 @@ class V {
|
|
|
4107
4127
|
return t === "A" ? this.#a(e, i, s) : t === "C" ? this.#a(s, i, e) : this.#a(i, e, s);
|
|
4108
4128
|
}
|
|
4109
4129
|
getBisectors(t = !0) {
|
|
4110
|
-
if (
|
|
4111
|
-
|
|
4112
|
-
|
|
4113
|
-
}
|
|
4114
|
-
return this.#o.bisectors;
|
|
4130
|
+
if (t && this.#o.bisectors) return this.#o.bisectors;
|
|
4131
|
+
if (!t && this.#o.externalBisectors) return this.#o.externalBisectors;
|
|
4132
|
+
const e = this.#h("A", t), i = this.#h("B", t), s = this.#h("C", t), r = e.intersection(i).point;
|
|
4133
|
+
return t ? this.#o.bisectors = { A: e, B: i, C: s, intersection: r } : this.#o.externalBisectors = { A: e, B: i, C: s, intersection: r }, { A: e, B: i, C: s, intersection: r };
|
|
4115
4134
|
}
|
|
4116
4135
|
getHeights() {
|
|
4117
4136
|
if (!this.#o.heights) {
|
|
@@ -4238,7 +4257,7 @@ class V {
|
|
|
4238
4257
|
this.#l(e)
|
|
4239
4258
|
);
|
|
4240
4259
|
}
|
|
4241
|
-
class
|
|
4260
|
+
class j {
|
|
4242
4261
|
#t = null;
|
|
4243
4262
|
#e = null;
|
|
4244
4263
|
#i = 1;
|
|
@@ -4247,14 +4266,14 @@ class U {
|
|
|
4247
4266
|
t.length > 0 && this.parse(...t);
|
|
4248
4267
|
}
|
|
4249
4268
|
parse(...t) {
|
|
4250
|
-
return typeof t[0] == "string" ? this.fromString(t[0]) : t[0] instanceof v ? this.fromEquation(t[0]) : t[0] instanceof
|
|
4269
|
+
return typeof t[0] == "string" ? this.fromString(t[0]) : t[0] instanceof v ? this.fromEquation(t[0]) : t[0] instanceof j ? this.copy(t[0]) : t.length === 2 && t[0] instanceof w && t[1] instanceof w ? this.fromCenterPoint(t[0], t[1]) : t.length >= 2 && t[0] instanceof w && (t[1] instanceof a || typeof t[1] == "number") ? this.fromCenterRadius(
|
|
4251
4270
|
t[0],
|
|
4252
4271
|
t[1],
|
|
4253
4272
|
typeof t[2] == "boolean" ? t[2] : !1
|
|
4254
4273
|
) : this;
|
|
4255
4274
|
}
|
|
4256
4275
|
clone() {
|
|
4257
|
-
return new
|
|
4276
|
+
return new j().fromCenterRadius(
|
|
4258
4277
|
this.center.clone(),
|
|
4259
4278
|
this.squareRadius.clone(),
|
|
4260
4279
|
!0
|
|
@@ -4336,7 +4355,7 @@ class U {
|
|
|
4336
4355
|
*/
|
|
4337
4356
|
lineIntersection(t) {
|
|
4338
4357
|
if (this.#e === null) return [];
|
|
4339
|
-
const e = this.center, i = t.d, s = t.OA, r = i.normSquare, o = s.x.clone().subtract(e.x).multiply(i.x).add(s.y.clone().subtract(e.y).multiply(i.y)).multiply(2), h = s.x.clone().subtract(e.x).pow(2).add(s.y.clone().subtract(e.y).pow(2)).subtract(this.squareRadius), c =
|
|
4358
|
+
const e = this.center, i = t.d, s = t.OA, r = i.normSquare, o = s.x.clone().subtract(e.x).multiply(i.x).add(s.y.clone().subtract(e.y).multiply(i.y)).multiply(2), h = s.x.clone().subtract(e.x).pow(2).add(s.y.clone().subtract(e.y).pow(2)).subtract(this.squareRadius), c = C.fromQuadratic(r, o, h);
|
|
4340
4359
|
if (c.length === 0) return [];
|
|
4341
4360
|
if (c.length === 1) {
|
|
4342
4361
|
const d = s.add(i.clone().multiplyByScalar(c[0].fraction));
|
|
@@ -4351,7 +4370,7 @@ class U {
|
|
|
4351
4370
|
].sort((d, y) => i.x.isZero() ? i.y.isPositive() ? d.y.value - y.y.value : y.y.value - d.y.value : i.x.isPositive() ? d.x.value - y.x.value : y.x.value - d.x.value);
|
|
4352
4371
|
}
|
|
4353
4372
|
get radius() {
|
|
4354
|
-
return new
|
|
4373
|
+
return new T().from(2, this.#s ?? 0);
|
|
4355
4374
|
}
|
|
4356
4375
|
/**
|
|
4357
4376
|
* Get the relative position between circle and line. It corresponds to the number of intersection.
|
|
@@ -4397,10 +4416,10 @@ class U {
|
|
|
4397
4416
|
return [new E(e, i, h), new E(e, i, c)];
|
|
4398
4417
|
};
|
|
4399
4418
|
}
|
|
4400
|
-
class
|
|
4401
|
-
static PARALLEL =
|
|
4419
|
+
class X {
|
|
4420
|
+
static PARALLEL = H.Parallel;
|
|
4402
4421
|
// A line is defined as the canonical form
|
|
4403
|
-
static PERPENDICULAR =
|
|
4422
|
+
static PERPENDICULAR = H.Perpendicular;
|
|
4404
4423
|
// ax + by + c = 0
|
|
4405
4424
|
#t = new w();
|
|
4406
4425
|
#e = new g();
|
|
@@ -4454,7 +4473,7 @@ class W {
|
|
|
4454
4473
|
// Mathematical operations
|
|
4455
4474
|
hitSegment(t, e) {
|
|
4456
4475
|
const i = this.intersection(
|
|
4457
|
-
new
|
|
4476
|
+
new X(t, e)
|
|
4458
4477
|
);
|
|
4459
4478
|
return i.hasIntersection ? i.point.x.value >= Math.min(t.x.value, e.x.value) && i.point.x.value <= Math.max(t.x.value, e.x.value) && i.point.y.value >= Math.min(t.y.value, e.y.value) && i.point.y.value <= Math.max(t.y.value, e.y.value) && i.point.z.value >= Math.min(t.z.value, e.z.value) && i.point.z.value <= Math.max(t.z.value, e.z.value) : !1;
|
|
4460
4479
|
}
|
|
@@ -4604,7 +4623,7 @@ class et {
|
|
|
4604
4623
|
}
|
|
4605
4624
|
}
|
|
4606
4625
|
var at = /* @__PURE__ */ ((n) => (n[n.INTERIOR = 0] = "INTERIOR", n[n.EXTERIOR = 1] = "EXTERIOR", n[n.SECANT = 2] = "SECANT", n[n.TANGENT_INSIDE = 3] = "TANGENT_INSIDE", n[n.TANGENT_OUTSIDE = 4] = "TANGENT_OUTSIDE", n[n.SUPERPOSED = 5] = "SUPERPOSED", n[n.CONCENTRIC = 6] = "CONCENTRIC", n))(at || {});
|
|
4607
|
-
class
|
|
4626
|
+
class zt {
|
|
4608
4627
|
#t = void 0;
|
|
4609
4628
|
#e = void 0;
|
|
4610
4629
|
#i = void 0;
|
|
@@ -4715,12 +4734,12 @@ function F(n) {
|
|
|
4715
4734
|
},
|
|
4716
4735
|
n
|
|
4717
4736
|
), e = new a();
|
|
4718
|
-
if (t.negative ? e.numerator = A(t.max, t.zero) : e.numerator =
|
|
4737
|
+
if (t.negative ? e.numerator = A(t.max, t.zero) : e.numerator = O(t.zero ? 0 : 1, t.max), t.natural)
|
|
4719
4738
|
e.denominator = 1;
|
|
4720
4739
|
else {
|
|
4721
4740
|
let i = 0;
|
|
4722
4741
|
for (; e.isRelative() && i < 10; )
|
|
4723
|
-
e.denominator =
|
|
4742
|
+
e.denominator = O(1, t.max), i++;
|
|
4724
4743
|
}
|
|
4725
4744
|
return t.reduced ? e.reduce() : e;
|
|
4726
4745
|
}
|
|
@@ -4742,14 +4761,14 @@ function ct(n) {
|
|
|
4742
4761
|
for (const i of t.letters.split(""))
|
|
4743
4762
|
e.setLetter(i, 0);
|
|
4744
4763
|
for (let i = 0; i < t.degree; i++) {
|
|
4745
|
-
const s =
|
|
4764
|
+
const s = W(t.letters.split(""));
|
|
4746
4765
|
e.setLetter(s, e.degree(s).clone().add(1));
|
|
4747
4766
|
}
|
|
4748
4767
|
} else
|
|
4749
4768
|
e.setLetter(t.letters, t.degree);
|
|
4750
4769
|
return e;
|
|
4751
4770
|
}
|
|
4752
|
-
const
|
|
4771
|
+
const K = {
|
|
4753
4772
|
letters: "x",
|
|
4754
4773
|
degree: 2,
|
|
4755
4774
|
fraction: !1,
|
|
@@ -4763,10 +4782,10 @@ const H = {
|
|
|
4763
4782
|
};
|
|
4764
4783
|
function it(n) {
|
|
4765
4784
|
const t = Object.assign(
|
|
4766
|
-
|
|
4785
|
+
K,
|
|
4767
4786
|
n
|
|
4768
4787
|
);
|
|
4769
|
-
if (t.factorable) return
|
|
4788
|
+
if (t.factorable) return Pt(K);
|
|
4770
4789
|
const e = new l().empty();
|
|
4771
4790
|
let i;
|
|
4772
4791
|
const s = t.degree ?? 2;
|
|
@@ -4777,16 +4796,16 @@ function it(n) {
|
|
|
4777
4796
|
fraction: t.fraction,
|
|
4778
4797
|
zero: r === s ? !1 : t.allowNullMonom
|
|
4779
4798
|
}), t.unit && s === r && i.coefficient.one(), e.add(i);
|
|
4780
|
-
if (t.positive && e.monomByDegree().coefficient.isNegative() && e.
|
|
4799
|
+
if (t.positive && e.monomByDegree().coefficient.isNegative() && e.opposite(), t.numberOfMonoms && t.numberOfMonoms > 0 && t.numberOfMonoms < e.length)
|
|
4781
4800
|
for (; e.length > t.numberOfMonoms; ) {
|
|
4782
|
-
const r =
|
|
4801
|
+
const r = O(1, e.length - 1);
|
|
4783
4802
|
e.monoms.splice(r, 1);
|
|
4784
4803
|
}
|
|
4785
4804
|
return e.reduce();
|
|
4786
4805
|
}
|
|
4787
|
-
function
|
|
4806
|
+
function Pt(n) {
|
|
4788
4807
|
const t = Object.assign(
|
|
4789
|
-
|
|
4808
|
+
K,
|
|
4790
4809
|
n
|
|
4791
4810
|
), e = { ...t };
|
|
4792
4811
|
e.degree = 1, e.factorable = !1;
|
|
@@ -4795,11 +4814,11 @@ function zt(n) {
|
|
|
4795
4814
|
i.push(it(e));
|
|
4796
4815
|
if (n?.commonConstant !== !1) {
|
|
4797
4816
|
let r = A(10, !1);
|
|
4798
|
-
n?.commonConstant === !0 && (r === 1 || r === -1) && (r *=
|
|
4817
|
+
n?.commonConstant === !0 && (r === 1 || r === -1) && (r *= O(2, 5)), r !== 1 && r !== -1 && i.unshift(new l(r));
|
|
4799
4818
|
}
|
|
4800
4819
|
return l.xMultiply(...i);
|
|
4801
4820
|
}
|
|
4802
|
-
function
|
|
4821
|
+
function Rt(n) {
|
|
4803
4822
|
const t = Object.assign(
|
|
4804
4823
|
{
|
|
4805
4824
|
letters: "x",
|
|
@@ -4832,7 +4851,7 @@ function Pt(n) {
|
|
|
4832
4851
|
}
|
|
4833
4852
|
return new v(e, 0);
|
|
4834
4853
|
}
|
|
4835
|
-
function
|
|
4854
|
+
function J(n) {
|
|
4836
4855
|
const t = Object.assign(
|
|
4837
4856
|
{
|
|
4838
4857
|
axis: !0,
|
|
@@ -4844,7 +4863,7 @@ function K(n) {
|
|
|
4844
4863
|
), e = t.axis === "x", i = t.axis === "y", s = t.fraction ? F({ max: t.max, zero: e }) : new a(A(t.max, e)), r = t.fraction ? F({ max: t.max, zero: i }) : new a(A(t.max, i));
|
|
4845
4864
|
return Number(t.quadrant) === 1 && (s.abs(), r.abs()), Number(t.quadrant) === 2 && (s.isPositive() && s.opposite(), r.isNegative() && r.opposite()), Number(t.quadrant) === 3 && (s.isPositive() && s.opposite(), r.isPositive() && r.opposite()), Number(t.quadrant) === 4 && (s.isNegative() && s.opposite(), r.isPositive() && r.opposite()), new w(s, r);
|
|
4846
4865
|
}
|
|
4847
|
-
function
|
|
4866
|
+
function Zt(n) {
|
|
4848
4867
|
const t = Object.assign(
|
|
4849
4868
|
{
|
|
4850
4869
|
center: {
|
|
@@ -4854,11 +4873,11 @@ function Rt(n) {
|
|
|
4854
4873
|
pointsOnCircle: 8
|
|
4855
4874
|
},
|
|
4856
4875
|
n
|
|
4857
|
-
), e =
|
|
4876
|
+
), e = J(t.center);
|
|
4858
4877
|
let i, s;
|
|
4859
|
-
return t.pointsOnCircle === 8 ? (i =
|
|
4878
|
+
return t.pointsOnCircle === 8 ? (i = O(1, 3), s = i ** 2 + (i + 1) ** 2) : s = O(1, 20), new j(e, s, !0);
|
|
4860
4879
|
}
|
|
4861
|
-
function
|
|
4880
|
+
function Dt(n) {
|
|
4862
4881
|
const t = Object.assign(
|
|
4863
4882
|
{
|
|
4864
4883
|
A: {
|
|
@@ -4872,7 +4891,7 @@ function Zt(n) {
|
|
|
4872
4891
|
e.x = A(10, t.allow?.vertical ?? !0), e.y = A(10, t.allow?.horizontal ?? !0);
|
|
4873
4892
|
return t.slope === 1 ? e.x.sign() !== e.y.sign() && e.y.opposite() : t.slope === -1 && e.x.sign() !== e.y.sign() && e.y.opposite(), new E().fromPointAndDirection(new g(t.A.x, t.A.y), e);
|
|
4874
4893
|
}
|
|
4875
|
-
function
|
|
4894
|
+
function Lt(n) {
|
|
4876
4895
|
const t = Object.assign(
|
|
4877
4896
|
{
|
|
4878
4897
|
A: {
|
|
@@ -4888,52 +4907,53 @@ function Dt(n) {
|
|
|
4888
4907
|
},
|
|
4889
4908
|
n
|
|
4890
4909
|
), e = new w(t.A.x, t.A.y, t.A.z), i = new g(t.direction.x, t.direction.y, t.direction.z);
|
|
4891
|
-
return new
|
|
4910
|
+
return new X(e, i);
|
|
4892
4911
|
}
|
|
4893
|
-
const
|
|
4894
|
-
equation: (n) =>
|
|
4912
|
+
const Vt = {
|
|
4913
|
+
equation: (n) => Rt(n),
|
|
4895
4914
|
polynom: (n) => it(n),
|
|
4896
4915
|
monom: (n) => ct(n),
|
|
4897
4916
|
fraction: (n) => F(n),
|
|
4898
|
-
number: (n, t, e) =>
|
|
4917
|
+
number: (n, t, e) => O(n, t, e),
|
|
4899
4918
|
numberSym: (n, t) => A(n, t),
|
|
4900
|
-
prime: (n) =>
|
|
4919
|
+
prime: (n) => St(n),
|
|
4920
|
+
triplet: (n, t) => Bt(n, t),
|
|
4901
4921
|
bool: (n) => ot(n),
|
|
4902
|
-
array: (n, t) =>
|
|
4903
|
-
item: (n) =>
|
|
4922
|
+
array: (n, t) => It(n, t),
|
|
4923
|
+
item: (n) => W(n),
|
|
4904
4924
|
shuffle: (n) => ht(n),
|
|
4905
|
-
line: (n) =>
|
|
4906
|
-
line3: (n) =>
|
|
4907
|
-
vector: (n) =>
|
|
4908
|
-
point: (n) => new w(
|
|
4909
|
-
circle: (n) =>
|
|
4910
|
-
},
|
|
4925
|
+
line: (n) => Dt(n),
|
|
4926
|
+
line3: (n) => Lt(n),
|
|
4927
|
+
vector: (n) => J(n),
|
|
4928
|
+
point: (n) => new w(J(n)),
|
|
4929
|
+
circle: (n) => Zt(n)
|
|
4930
|
+
}, Ft = {
|
|
4911
4931
|
Numeric: x,
|
|
4912
4932
|
Fraction: a,
|
|
4913
|
-
Root:
|
|
4933
|
+
Root: T,
|
|
4914
4934
|
Monom: p,
|
|
4915
4935
|
Polynom: l,
|
|
4916
4936
|
Equation: v,
|
|
4917
|
-
Matrix:
|
|
4918
|
-
LinearSystem:
|
|
4937
|
+
Matrix: B,
|
|
4938
|
+
LinearSystem: z,
|
|
4919
4939
|
Factor: b,
|
|
4920
4940
|
PolyFactor: N,
|
|
4921
4941
|
LogicalSet: qt,
|
|
4922
|
-
Random:
|
|
4942
|
+
Random: Vt,
|
|
4923
4943
|
Geometry: {
|
|
4924
4944
|
Vector: g,
|
|
4925
4945
|
Point: w,
|
|
4926
4946
|
Line: E,
|
|
4927
4947
|
Triangle: V,
|
|
4928
|
-
Circle:
|
|
4929
|
-
Line3:
|
|
4948
|
+
Circle: j,
|
|
4949
|
+
Line3: X,
|
|
4930
4950
|
Plane3: et,
|
|
4931
|
-
Sphere3:
|
|
4951
|
+
Sphere3: zt
|
|
4932
4952
|
},
|
|
4933
4953
|
NumExp: Ct
|
|
4934
4954
|
};
|
|
4935
4955
|
export {
|
|
4936
|
-
|
|
4956
|
+
j as Circle,
|
|
4937
4957
|
v as Equation,
|
|
4938
4958
|
R as EquationSolver,
|
|
4939
4959
|
D as FACTOR_DISPLAY,
|
|
@@ -4941,10 +4961,10 @@ export {
|
|
|
4941
4961
|
b as Factor,
|
|
4942
4962
|
a as Fraction,
|
|
4943
4963
|
E as Line,
|
|
4944
|
-
|
|
4945
|
-
|
|
4964
|
+
X as Line3,
|
|
4965
|
+
z as LinearSystem,
|
|
4946
4966
|
qt as LogicalSet,
|
|
4947
|
-
|
|
4967
|
+
B as Matrix,
|
|
4948
4968
|
p as Monom,
|
|
4949
4969
|
Ct as NumExp,
|
|
4950
4970
|
x as Numeric,
|
|
@@ -4952,17 +4972,17 @@ export {
|
|
|
4952
4972
|
w as Point,
|
|
4953
4973
|
N as PolyFactor,
|
|
4954
4974
|
l as Polynom,
|
|
4955
|
-
|
|
4956
|
-
|
|
4975
|
+
Vt as Random,
|
|
4976
|
+
T as Root,
|
|
4957
4977
|
at as SPHERE3_RELATIVE_POSITION,
|
|
4958
|
-
|
|
4959
|
-
|
|
4960
|
-
|
|
4978
|
+
C as Solution,
|
|
4979
|
+
zt as Sphere3,
|
|
4980
|
+
jt as TableOfSigns,
|
|
4961
4981
|
V as Triangle,
|
|
4962
4982
|
g as Vector,
|
|
4963
4983
|
kt as areVectorsColinears,
|
|
4964
4984
|
$t as areVectorsEquals,
|
|
4965
|
-
|
|
4985
|
+
Ft as default,
|
|
4966
4986
|
Ut as determinantFromVectors,
|
|
4967
4987
|
Mt as dotProduct
|
|
4968
4988
|
};
|