pimath 0.0.52 → 0.0.55
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/pi.js +153 -144
- package/dist/pi.js.map +1 -1
- package/dist/pi.min.js +1 -1
- package/dist/pi.min.js.map +1 -1
- package/esm/maths/algebra/equation.js +10 -10
- package/esm/maths/algebra/equation.js.map +10 -1
- package/esm/maths/algebra/linearSystem.js +1 -1
- package/esm/maths/algebra/linearSystem.js.map +10 -1
- package/esm/maths/algebra/monom.d.ts +4 -3
- package/esm/maths/algebra/monom.js +49 -55
- package/esm/maths/algebra/monom.js.map +10 -1
- package/esm/maths/algebra/polynom.d.ts +6 -5
- package/esm/maths/algebra/polynom.js +77 -81
- package/esm/maths/algebra/polynom.js.map +10 -1
- package/esm/maths/algebra/rational.js +3 -5
- package/esm/maths/algebra/rational.js.map +10 -1
- package/esm/maths/expressions/polynomexp.bkp.js +2 -3
- package/esm/maths/expressions/polynomexp.bkp.js.map +10 -1
- package/esm/maths/expressions/polynomexp.js +3 -3
- package/esm/maths/expressions/polynomexp.js.map +10 -1
- package/esm/maths/geometry/point.js +1 -1
- package/esm/maths/geometry/point.js.map +10 -1
- package/esm/maths/randomization/random.js +9 -1
- package/esm/maths/randomization/random.js.map +10 -1
- package/package.json +1 -1
- package/src/maths/algebra/equation.ts +7 -7
- package/src/maths/algebra/linearSystem.ts +1 -1
- package/src/maths/algebra/monom.ts +5 -6
- package/src/maths/algebra/polynom.ts +16 -10
- package/src/maths/algebra/rational.ts +4 -3
- package/src/maths/expressions/polynomexp.bkp.ts +1 -2
- package/src/maths/expressions/polynomexp.ts +1 -1
- package/src/maths/geometry/point.ts +1 -1
- package/tests/algebra/equation.test.ts +2 -4
- package/tests/algebra/monom.test.ts +1 -1
- package/tests/algebra/polynom.test.ts +7 -3
- package/tests/algebra/rationnal.test.ts +34 -1
|
@@ -1 +1,10 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"file": "point.js",
|
|
4
|
+
"sourceRoot": "",
|
|
5
|
+
"sources": [
|
|
6
|
+
"../../../src/maths/geometry/point.ts"
|
|
7
|
+
],
|
|
8
|
+
"names": [],
|
|
9
|
+
"mappings": ";;;AAAA;;;GAGG;AACH,iCAA4B;AAC5B,qCAAgC;AAChC,uDAAkD;AAElD;;GAEG;AACH,MAAM,OAAO;CAGZ;AAED,MAAa,KAAK;IAKd,YAAY,GAAG,MAAiB;QAgDhC,6CAA6C;QAC7C,+BAA+B;QAC/B,6CAA6C;QAC7C,UAAK,GAAG,CAAC,GAAG,MAAiB,EAAS,EAAE;YACpC,wBAAwB;YACxB,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,mBAAmB;YACnB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,OAAO,IAAI,CAAC;aACf;YAED,oDAAoD;YACpD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,kCAAkC;gBAClC,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,EAAE;oBAC5B,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;oBAC7B,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;oBAC7B,OAAO,IAAI,CAAA;iBACd;gBAED,6CAA6C;gBAC7C,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;oBAC/B,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAC7B,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;wBACjB,IAAI,CAAC,EAAE,GAAG,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;wBACtC,IAAI,CAAC,EAAE,GAAG,IAAI,mBAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;wBACtC,OAAO,IAAI,CAAA;qBACd;iBACJ;gBAED,qDAAqD;gBACrD,IAAG,MAAM,CAAC,CAAC,CAAC,YAAY,OAAO,EAAC;oBACxB,IAAI,CAAC,EAAE,GAAG,IAAI,mBAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;oBAC5C,IAAI,CAAC,EAAE,GAAG,IAAI,mBAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;oBAChD,OAAO,IAAI,CAAA;iBACd;qBAAM;oBACH,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;iBACrB;aACJ;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,IAAI,CAAC,EAAE,GAAG,IAAI,mBAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;gBAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,mBAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;gBAC1C,OAAO,IAAI,CAAA;aACd;YAED,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;QAEF,UAAK,GAAG,GAAU,EAAE;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YACzB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAEzB,OAAO,IAAI,CAAA;QACf,CAAC,CAAA;QAED,SAAI,GAAG,GAAU,EAAE;YACf,IAAI,CAAC,EAAE,GAAG,IAAI,mBAAQ,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,GAAG,IAAI,mBAAQ,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA;QAED,WAAM,GAAG,GAAU,EAAE;YACjB,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA;QAED,aAAQ,GAAG,CAAC,EAAS,EAAE,EAAS,EAAS,EAAE;YACvC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAE3C,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA;QACD,6CAA6C;QAC7C,oBAAoB;QACpB,6CAA6C;QAC7C,cAAS,GAAG,CAAC,cAAsB,EAAU,EAAE;YAC3C,IAAI,GAAG,GAAG,EAAE,CAAC;YAEb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;YACnF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;YAEnF,OAAO,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAA;QAC5C,CAAC,CAAA;QAoBD,eAAU,GAAG,CAAC,IAAe,EAAsD,EAAE;YACjF,IAAI,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,mBAAQ,EAAE,EAAE,GAAG,GAAG,EAAE,CAAA;YAElD,IAAG,IAAI,YAAY,WAAI,EAAC;gBACpB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;aAC/B;iBAAK,IAAG,IAAI,YAAY,KAAK,EAAC;gBAC3B,IAAI,CAAC,GAAG,IAAI,eAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;gBAE9B,KAAK,GAAG,CAAC,CAAC,IAAI,CAAA;gBACd,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;gBAC9B,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,SAAS,OAAO,CAAC,CAAC,UAAU,CAAC,WAAW,KAAK,CAAA;aAC9H;YACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAA;QACnC,CAAC,CAAA;QAKD,qBAAgB,GAAG,CAAC,IAAa,EAAW,EAAE;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,GAAG,CAAC,CAAA;YAElC,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACrC,CAAC,CAAA;QA7KG,IAAI,CAAC,EAAE,GAAG,IAAI,mBAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,EAAE,GAAG,IAAI,mBAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAEhC,IAAI,MAAM,KAAK,SAAS,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;SACzB;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAAA,CAAC;IAEF,6CAA6C;IAC7C,oBAAoB;IACpB,6CAA6C;IAC7C,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,CAAC,KAAe;QACjB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,CAAC,KAAe;QACjB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,GAAG;QACH,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAEtB,OAAO,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAA;IAC5C,CAAC;IAED,IAAI,OAAO;QACP,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAEtB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IAC/B,CAAC;IAyHD,IAAI,GAAG;QACL,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;IAClD,CAAC;;AA9KD,sBAoLC;AA1CG,6CAA6C;AAC7C,0BAA0B;AAC1B,6CAA6C;AAE7C,6CAA6C;AAC7C,mBAAmB;AACnB,6CAA6C;AAE7C,6CAA6C;AAC7C,mBAAmB;AACnB,6CAA6C;AACtC,aAAO,GAAG,CAAC,CAAM,EAAE,CAAM,EAAE,CAAO,EAAU,EAAE;IACjD,IAAI,CAAC,KAAK,SAAS,EAAE;QACjB,OAAO,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;KAC3F;SAAM;QACH,OAAO,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;KACrH;AACL,CAAC,CAAC"
|
|
10
|
+
}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = {
|
|
7
|
+
enumerable: true, get: function () {
|
|
8
|
+
return m[k];
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
5
13
|
}) : (function(o, m, k, k2) {
|
|
6
14
|
if (k2 === undefined) k2 = k;
|
|
7
15
|
o[k2] = m[k];
|
|
@@ -1 +1,10 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"file": "random.js",
|
|
4
|
+
"sourceRoot": "",
|
|
5
|
+
"sources": [
|
|
6
|
+
"../../../src/maths/randomization/random.ts"
|
|
7
|
+
],
|
|
8
|
+
"names": [],
|
|
9
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAAA,6CAAwC;AACxC,yCAAoC;AACpC,6CAAwC;AAExC,+CAA0C;AAK1C,6CAA0B;AAE1B,IAAiB,MAAM,CAoCtB;AApCD,WAAiB,MAAM;IACnB,SAAgB,OAAO,CAAC,MAA4B;QAChD,OAAO,CAAC,IAAI,uBAAU,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC9C,CAAC;IAFe,cAAO,UAEtB,CAAA;IAED,SAAgB,KAAK,CAAC,MAA0B;QAC5C,OAAO,CAAC,IAAI,mBAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC5C,CAAC;IAFe,YAAK,QAEpB,CAAA;IAED,SAAgB,QAAQ,CAAC,MAAgC;QACrD,OAAO,CAAC,IAAI,yBAAW,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC/C,CAAC;IAFe,eAAQ,WAEvB,CAAA;IAED,SAAgB,MAAM,CAAC,IAAY,EAAE,EAAU;QAC3C,OAAO,uBAAU,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACzC,CAAC;IAFe,aAAM,SAErB,CAAA;IAED,SAAgB,SAAS,CAAC,GAAW,EAAE,SAAmB;QACtD,OAAO,uBAAU,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAClD,CAAC;IAFe,gBAAS,YAExB,CAAA;IAED,SAAgB,IAAI,CAAC,OAAgB;QACjC,OAAO,uBAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACzC,CAAC;IAFe,WAAI,OAEnB,CAAA;IAED,SAAgB,KAAK,CAAC,GAAU,EAAE,MAAe;QAC7C,OAAO,uBAAU,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC9C,CAAC;IAFe,YAAK,QAEpB,CAAA;IAED,SAAgB,IAAI,CAAC,GAAU;QAC3B,OAAO,uBAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IACrC,CAAC;IAFe,WAAI,OAEnB,CAAA;IAED,SAAgB,OAAO,CAAC,GAAU;QAC9B,uBAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;IAFe,cAAO,UAEtB,CAAA;AACL,CAAC,EApCgB,MAAM,GAAN,cAAM,KAAN,cAAM,QAoCtB"
|
|
10
|
+
}
|
package/package.json
CHANGED
|
@@ -652,12 +652,12 @@ export class Equation {
|
|
|
652
652
|
} else {
|
|
653
653
|
this._solutions = [
|
|
654
654
|
{
|
|
655
|
-
tex: `\\
|
|
655
|
+
tex: `\\frac{${-b / gcd} - ${nthDelta.tex} }{ ${2 * a / gcd} }`,
|
|
656
656
|
value: realX1,
|
|
657
657
|
exact: false
|
|
658
658
|
},
|
|
659
659
|
{
|
|
660
|
-
tex: `\\
|
|
660
|
+
tex: `\\frac{${-b / gcd} + ${nthDelta.tex} }{ ${2 * a / gcd} }`,
|
|
661
661
|
value: realX2,
|
|
662
662
|
exact: false
|
|
663
663
|
},
|
|
@@ -680,12 +680,12 @@ export class Equation {
|
|
|
680
680
|
} else {
|
|
681
681
|
this._solutions = [
|
|
682
682
|
{
|
|
683
|
-
tex: `\\
|
|
683
|
+
tex: `\\frac{- ${nthDelta.tex} }{ ${2 * a / gcd} }`,
|
|
684
684
|
value: realX1,
|
|
685
685
|
exact: false
|
|
686
686
|
},
|
|
687
687
|
{
|
|
688
|
-
tex: `\\
|
|
688
|
+
tex: `\\frac{${nthDelta.tex} }{ ${2 * a / gcd} }`,
|
|
689
689
|
value: realX2,
|
|
690
690
|
exact: false
|
|
691
691
|
},
|
|
@@ -698,12 +698,12 @@ export class Equation {
|
|
|
698
698
|
S2 = new Fraction(-b + nthDelta.coefficient, 2 * a).reduce()
|
|
699
699
|
this._solutions = [
|
|
700
700
|
{
|
|
701
|
-
tex: S1.
|
|
701
|
+
tex: S1.frac,
|
|
702
702
|
value: realX1,
|
|
703
703
|
exact: S1
|
|
704
704
|
},
|
|
705
705
|
{
|
|
706
|
-
tex: S2.
|
|
706
|
+
tex: S2.frac,
|
|
707
707
|
value: realX2,
|
|
708
708
|
exact: S2
|
|
709
709
|
}
|
|
@@ -714,7 +714,7 @@ export class Equation {
|
|
|
714
714
|
} else if (delta === 0) {
|
|
715
715
|
const sol = new Fraction(-b, 2 * a).reduce()
|
|
716
716
|
this._solutions = [{
|
|
717
|
-
tex: sol.
|
|
717
|
+
tex: sol.frac,
|
|
718
718
|
value: sol.value,
|
|
719
719
|
exact: sol
|
|
720
720
|
}];
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
* Monom class
|
|
3
3
|
*/
|
|
4
4
|
import {Numeric} from "../numeric";
|
|
5
|
-
import {Shutingyard, ShutingyardType, Token
|
|
6
|
-
import {log} from "util";
|
|
5
|
+
import {Shutingyard, ShutingyardType, Token} from "../shutingyard";
|
|
7
6
|
import {Fraction} from "../coefficients/fraction";
|
|
8
7
|
|
|
9
8
|
export type literalType = {
|
|
@@ -273,7 +272,7 @@ export class Monom {
|
|
|
273
272
|
if (L === '') {
|
|
274
273
|
// No setLetter - means it's only a number !
|
|
275
274
|
if (this._coefficient.value != 0) {
|
|
276
|
-
return `${this._coefficient.
|
|
275
|
+
return `${this._coefficient.frac}`;
|
|
277
276
|
} else {
|
|
278
277
|
return '0';
|
|
279
278
|
}
|
|
@@ -285,7 +284,7 @@ export class Monom {
|
|
|
285
284
|
} else if (this._coefficient.value === 0) {
|
|
286
285
|
return '0';
|
|
287
286
|
} else {
|
|
288
|
-
return `${this._coefficient.
|
|
287
|
+
return `${this._coefficient.frac}${L}`;
|
|
289
288
|
}
|
|
290
289
|
}
|
|
291
290
|
}
|
|
@@ -315,7 +314,7 @@ export class Monom {
|
|
|
315
314
|
return this;
|
|
316
315
|
};
|
|
317
316
|
|
|
318
|
-
|
|
317
|
+
addToken = (stack: Monom[], element: Token): void => {
|
|
319
318
|
|
|
320
319
|
let q1: Monom, q2: Monom, m: Monom, letter: string, pow: Fraction
|
|
321
320
|
|
|
@@ -391,7 +390,7 @@ export class Monom {
|
|
|
391
390
|
} else {
|
|
392
391
|
// Reset the monom
|
|
393
392
|
for (const element of rpn) {
|
|
394
|
-
|
|
393
|
+
this.addToken(stack, element)
|
|
395
394
|
}
|
|
396
395
|
}
|
|
397
396
|
|
|
@@ -124,7 +124,7 @@ export class Polynom {
|
|
|
124
124
|
return this.variables.length;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
addToken = (stack: Polynom[], element: Token): void => {
|
|
128
128
|
|
|
129
129
|
switch (element.tokenType) {
|
|
130
130
|
case ShutingyardType.COEFFICIENT:
|
|
@@ -179,11 +179,10 @@ export class Polynom {
|
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
} else {
|
|
182
|
-
console.log('Stack size: ', stack.length)
|
|
183
182
|
if (element.token === '-') {
|
|
184
183
|
stack.push(stack.pop().opposed())
|
|
185
184
|
} else {
|
|
186
|
-
|
|
185
|
+
throw "Error parsing the polynom " + this._rawString
|
|
187
186
|
}
|
|
188
187
|
}
|
|
189
188
|
break
|
|
@@ -195,7 +194,7 @@ export class Polynom {
|
|
|
195
194
|
|
|
196
195
|
case ShutingyardType.FUNCTION:
|
|
197
196
|
// Should never appear.
|
|
198
|
-
console.
|
|
197
|
+
console.error('The function token should not appear here - might be introduced later.')
|
|
199
198
|
break;
|
|
200
199
|
}
|
|
201
200
|
}
|
|
@@ -405,9 +404,14 @@ export class Polynom {
|
|
|
405
404
|
const quotient: Polynom = new Polynom().zero();
|
|
406
405
|
const reminder: Polynom = this.clone().reorder(letter);
|
|
407
406
|
|
|
408
|
-
// There is no variable
|
|
407
|
+
// There is no variable - means it's a number
|
|
409
408
|
if (P.variables.length === 0) {
|
|
410
|
-
|
|
409
|
+
let q = this.clone().divide(P)
|
|
410
|
+
return {
|
|
411
|
+
quotient: this.clone().divide(P),
|
|
412
|
+
reminder: new Polynom().zero()
|
|
413
|
+
}
|
|
414
|
+
|
|
411
415
|
}
|
|
412
416
|
|
|
413
417
|
// Get at least a letter
|
|
@@ -444,8 +448,11 @@ export class Polynom {
|
|
|
444
448
|
return this.divideByFraction(value);
|
|
445
449
|
} else if (typeof value === 'number' && Number.isSafeInteger(value)) {
|
|
446
450
|
return this.divideByInteger(value);
|
|
451
|
+
} else if (value instanceof Polynom) {
|
|
452
|
+
if (value.monoms.length === 1 && value.variables.length === 0) {
|
|
453
|
+
return this.divideByFraction(value.monoms[0].coefficient)
|
|
454
|
+
}
|
|
447
455
|
}
|
|
448
|
-
|
|
449
456
|
}
|
|
450
457
|
|
|
451
458
|
pow = (nb: number): Polynom => {
|
|
@@ -778,8 +785,7 @@ export class Polynom {
|
|
|
778
785
|
|
|
779
786
|
// It has a common monom.
|
|
780
787
|
if (!M.isOne()) {
|
|
781
|
-
tempPolynom = new Polynom()
|
|
782
|
-
tempPolynom.monoms = [M]
|
|
788
|
+
tempPolynom = new Polynom(M)
|
|
783
789
|
factors = [tempPolynom.clone()]
|
|
784
790
|
P = P.euclidian(tempPolynom).quotient;
|
|
785
791
|
}
|
|
@@ -1173,7 +1179,7 @@ export class Polynom {
|
|
|
1173
1179
|
|
|
1174
1180
|
// Loop through the
|
|
1175
1181
|
for (const element of rpn) {
|
|
1176
|
-
|
|
1182
|
+
this.addToken(stack, element);
|
|
1177
1183
|
}
|
|
1178
1184
|
|
|
1179
1185
|
if (stack.length === 1) {
|
|
@@ -37,11 +37,11 @@ export class Rational {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
get tex(): string {
|
|
40
|
-
return `\\
|
|
40
|
+
return `\\frac{ ${this._numerator.tex} }{ ${this._denominator.tex} }`;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
get texFactors(): string {
|
|
44
|
-
return `\\
|
|
44
|
+
return `\\frac{ ${this._numerator.texFactors} }{ ${this._denominator.texFactors} }`
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
clone = (): Rational => {
|
|
@@ -265,9 +265,9 @@ export class Rational {
|
|
|
265
265
|
}
|
|
266
266
|
private _makeOneLineOfTableOfSigns = (factor: Polynom, zeroes: ISolution[], zeroSign: string): string[] => {
|
|
267
267
|
let oneLine: string[] = [],
|
|
268
|
-
// TODO : check if there is no zero ?
|
|
269
268
|
currentZero = factor.getZeroes().map(x=>x.tex)
|
|
270
269
|
|
|
270
|
+
|
|
271
271
|
// First +/- sign, before the first zero
|
|
272
272
|
oneLine.push('')
|
|
273
273
|
oneLine.push(factor.evaluate(zeroes[0].value - 1).sign() === 1 ? '+' : '-')
|
|
@@ -284,6 +284,7 @@ export class Rational {
|
|
|
284
284
|
}
|
|
285
285
|
|
|
286
286
|
}
|
|
287
|
+
|
|
287
288
|
oneLine.push('')
|
|
288
289
|
|
|
289
290
|
return oneLine
|
|
@@ -57,9 +57,8 @@ export class PolynomExpFactor {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
console.log(numerators.length)
|
|
61
60
|
if (denominators.length > 0) {
|
|
62
|
-
return `\\
|
|
61
|
+
return `\\frac{ ${numerators.length > 0 ? numerators.join('') : 1} }{ ${denominators.join('')} }`
|
|
63
62
|
} else {
|
|
64
63
|
return numerators.join('')
|
|
65
64
|
}
|
|
@@ -207,7 +207,7 @@ export class PolynomExpProduct {
|
|
|
207
207
|
// restore all degrees to negative again.
|
|
208
208
|
denominators.map(x => x.degree.opposed())
|
|
209
209
|
|
|
210
|
-
tex = `\\
|
|
210
|
+
tex = `\\frac{ ${numeratorsAsTex.join(' \\cdot ')} }{ ${denominatorsAsTex.join(' \\cdot ')} }`
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
|
|
@@ -181,7 +181,7 @@ export class Point {
|
|
|
181
181
|
|
|
182
182
|
value = V.norm
|
|
183
183
|
fraction = V.normSquare.sqrt()
|
|
184
|
-
tex = V.normSquare.isSquare()?fraction.tex
|
|
184
|
+
tex = V.normSquare.isSquare() ? fraction.tex : `\\sqrt{\\frac{ ${V.normSquare.numerator} }{ ${V.normSquare.denominator} }}`
|
|
185
185
|
}
|
|
186
186
|
return { value, fraction, tex }
|
|
187
187
|
}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import {describe} from "mocha";
|
|
2
|
-
import {Rational} from "../../src/maths/algebra/rational";
|
|
3
|
-
import {Polynom} from "../../src/maths/algebra/polynom";
|
|
4
2
|
import {expect} from "chai";
|
|
5
3
|
import {Equation} from "../../src/maths/algebra/equation";
|
|
6
4
|
|
|
@@ -31,8 +29,8 @@ describe('Equations tests', () => {
|
|
|
31
29
|
let E6 = new Equation('5x^2+7x-31', 0)
|
|
32
30
|
E6.solve()
|
|
33
31
|
expect(E6.solutions.map(x=>x.tex)).to.have.all.members([
|
|
34
|
-
'\\
|
|
35
|
-
'\\
|
|
32
|
+
'\\frac{-7 - \\sqrt{669} }{ 10 }',
|
|
33
|
+
'\\frac{-7 + \\sqrt{669} }{ 10 }'
|
|
36
34
|
] )
|
|
37
35
|
})
|
|
38
36
|
})
|
|
@@ -76,6 +76,6 @@ describe('Monom with fraction power', () => {
|
|
|
76
76
|
console.log(M.tex)
|
|
77
77
|
|
|
78
78
|
// TODO: Problem while displaying numerical expression
|
|
79
|
-
expect(M.tex).to.be.equal('-\\
|
|
79
|
+
expect(M.tex).to.be.equal('-\\frac{ 7 }{ 5 }x^{\\tfrac{ 22 }{ 15 }}')
|
|
80
80
|
})
|
|
81
81
|
})
|
|
@@ -15,7 +15,7 @@ describe('Polynom tests', () => {
|
|
|
15
15
|
const P = new Polynom('-3/5x-2')
|
|
16
16
|
|
|
17
17
|
console.log(P.tex)
|
|
18
|
-
expect(P.tex).to.be.equal('-\\
|
|
18
|
+
expect(P.tex).to.be.equal('-\\frac{ 3 }{ 5 }x-2')
|
|
19
19
|
})
|
|
20
20
|
|
|
21
21
|
it('Tex display', () => {
|
|
@@ -76,14 +76,18 @@ describe('Polynom tests', () => {
|
|
|
76
76
|
let P2 = new Polynom('x^4-32x^2+256')
|
|
77
77
|
P2.factorize()
|
|
78
78
|
expect(P2.factors.map(x => x.tex)).to.have.all.members(['x-4', 'x-4', 'x+4', 'x+4'])
|
|
79
|
-
|
|
79
|
+
|
|
80
|
+
let P3 = new Polynom('6x^2-48x-8')
|
|
81
|
+
P3.factorize()
|
|
82
|
+
expect(P3.factors.map(x => x.tex)).to.have.all.members(['2', '3x^{2}-24x-4'])
|
|
83
|
+
});
|
|
80
84
|
})
|
|
81
85
|
|
|
82
86
|
describe('Polynom parsing with rational power', () => {
|
|
83
87
|
it('should parse with rational powers', () => {
|
|
84
88
|
const P = new Polynom('3x^(2/3)-5x+5/3');
|
|
85
89
|
|
|
86
|
-
expect(P.tex).to.be.equal('3x^{\\tfrac{ 2 }{ 3 }}-5x+\\
|
|
90
|
+
expect(P.tex).to.be.equal('3x^{\\tfrac{ 2 }{ 3 }}-5x+\\frac{ 5 }{ 3 }')
|
|
87
91
|
})
|
|
88
92
|
})
|
|
89
93
|
|
|
@@ -42,7 +42,6 @@ describe('Rational tests', () => {
|
|
|
42
42
|
})
|
|
43
43
|
|
|
44
44
|
it('should make a table of signs', function () {
|
|
45
|
-
|
|
46
45
|
const FR = new Rational(
|
|
47
46
|
new Polynom('(x-2)'),
|
|
48
47
|
new Polynom('(x+2)')
|
|
@@ -50,6 +49,40 @@ describe('Rational tests', () => {
|
|
|
50
49
|
let tos = FR.makeTableOfSigns()
|
|
51
50
|
expect(tos.zeroes.map(x => x.tex)).to.have.all.members(['-2', '2'])
|
|
52
51
|
expect(tos.signs).to.be.eql([['', '-', 't', '-', 'z', '+', ''], ['', '-', 'd', '+', 't', '+', ''], [], ['', '+', 'd', '-', 'z', '+', '']])
|
|
52
|
+
|
|
53
|
+
const FR2 = new Rational(
|
|
54
|
+
new Polynom('6x^2+7x-20'),
|
|
55
|
+
new Polynom('x^2-16')
|
|
56
|
+
)
|
|
57
|
+
let tos2 = FR2.makeTableOfSigns()
|
|
58
|
+
expect(tos2.signs).to.be.eql([
|
|
59
|
+
[
|
|
60
|
+
'', '-', 't', '-',
|
|
61
|
+
'z', '+', 't', '+',
|
|
62
|
+
't', '+', ''
|
|
63
|
+
],
|
|
64
|
+
[
|
|
65
|
+
'', '-', 't', '-',
|
|
66
|
+
't', '-', 'z', '+',
|
|
67
|
+
't', '+', ''
|
|
68
|
+
],
|
|
69
|
+
[
|
|
70
|
+
'', '-', 'd', '+',
|
|
71
|
+
't', '+', 't', '+',
|
|
72
|
+
't', '+', ''
|
|
73
|
+
],
|
|
74
|
+
[
|
|
75
|
+
'', '-', 't', '-',
|
|
76
|
+
't', '-', 't', '-',
|
|
77
|
+
'd', '+', ''
|
|
78
|
+
],
|
|
79
|
+
[],
|
|
80
|
+
[
|
|
81
|
+
'', '+', 'd', '-',
|
|
82
|
+
'z', '+', 'z', '-',
|
|
83
|
+
'd', '+', ''
|
|
84
|
+
]
|
|
85
|
+
])
|
|
53
86
|
});
|
|
54
87
|
|
|
55
88
|
it('should calculate the derivative', function () {
|