pimath 0.0.124 → 0.0.126

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.
Files changed (140) hide show
  1. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  2. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_07_11_2023_08_30_[Default_Changelist]/shelved.patch +192 -0
  3. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_07_11_2023_08_30_[Default_Changelist]1/shelved.patch +0 -0
  4. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_07_11_2023_08_30__Default_Changelist_.xml +4 -0
  5. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_09_11_2023_10_43_[Default_Changelist]/shelved.patch +2404 -0
  6. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_09_11_2023_10_43__Default_Changelist_.xml +4 -0
  7. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_09_11_2023_11_01_[Default_Changelist]/shelved.patch +1362 -0
  8. package/.idea/shelf/Uncommitted_changes_before_Checkout_at_09_11_2023_11_01__Default_Changelist_.xml +4 -0
  9. package/dev/pimath.js +7940 -7930
  10. package/dev/pimath.js.map +1 -1
  11. package/dist/pimath.js +219 -227
  12. package/dist/pimath.js.map +1 -1
  13. package/dist/pimath.min.js +1 -1
  14. package/dist/pimath.min.js.map +1 -1
  15. package/docs/assets/main.js +59 -58
  16. package/docs/assets/navigation.js +1 -0
  17. package/docs/assets/search.js +1 -1
  18. package/docs/assets/style.css +1383 -1367
  19. package/docs/classes/Logicalset.Logicalset.html +217 -221
  20. package/docs/classes/Polynom.Rational.html +397 -391
  21. package/docs/classes/Vector-1.Vector.html +490 -494
  22. package/docs/classes/Vector.Point.html +337 -341
  23. package/docs/classes/algebra_equation.Equation.html +790 -796
  24. package/docs/classes/algebra_linearSystem.LinearSystem.html +404 -408
  25. package/docs/classes/algebra_monom.Monom.html +962 -967
  26. package/docs/classes/algebra_polynom.Polynom.html +1275 -1281
  27. package/docs/classes/coefficients_fraction.Fraction.html +934 -939
  28. package/docs/classes/geometry_circle.Circle.html +472 -476
  29. package/docs/classes/geometry_line.Line.html +774 -779
  30. package/docs/classes/geometry_triangle.Triangle.html +429 -429
  31. package/docs/classes/numeric.Numeric.html +265 -269
  32. package/docs/classes/shutingyard.Shutingyard.html +250 -259
  33. package/docs/enums/algebra_equation.PARTICULAR_SOLUTION.html +83 -89
  34. package/docs/enums/geometry_line.LinePropriety.html +97 -102
  35. package/docs/enums/shutingyard.ShutingyardMode.html +97 -106
  36. package/docs/enums/shutingyard.ShutingyardType.html +111 -120
  37. package/docs/index.html +63 -63
  38. package/docs/interfaces/algebra_equation.ISolution.html +105 -111
  39. package/docs/interfaces/algebra_polynom.IEuclidian.html +87 -93
  40. package/docs/interfaces/geometry_triangle.remarquableLines.html +163 -150
  41. package/docs/modules/Logicalset.html +65 -69
  42. package/docs/modules/Polynom.html +65 -69
  43. package/docs/modules/Vector-1.html +65 -69
  44. package/docs/modules/Vector.html +65 -69
  45. package/docs/modules/algebra_equation.html +69 -75
  46. package/docs/modules/algebra_linearSystem.html +61 -65
  47. package/docs/modules/algebra_monom.html +65 -70
  48. package/docs/modules/algebra_polynom.html +69 -75
  49. package/docs/modules/coefficients_fraction.html +65 -70
  50. package/docs/modules/geometry_circle.html +61 -65
  51. package/docs/modules/geometry_line.html +65 -70
  52. package/docs/modules/geometry_triangle.html +65 -70
  53. package/docs/modules/numeric.html +61 -65
  54. package/docs/modules/shutingyard.html +75 -84
  55. package/docs/types/algebra_monom.literalType.html +61 -66
  56. package/docs/types/algebra_polynom.PolynomParsingType.html +56 -62
  57. package/docs/types/coefficients_fraction.FractionParsingType.html +56 -61
  58. package/docs/types/shutingyard.Token.html +63 -72
  59. package/docs/types/shutingyard.tokenType.html +68 -77
  60. package/docs/variables/shutingyard.tokenConstant.html +61 -70
  61. package/esm/index.js +1 -1
  62. package/esm/index.js.map +1 -1
  63. package/esm/maths/algebra/monom.d.ts +19 -19
  64. package/esm/maths/algebra/monom.js +66 -66
  65. package/esm/maths/algebra/monom.js.map +1 -1
  66. package/esm/maths/algebra/polynom.d.ts +14 -14
  67. package/esm/maths/algebra/polynom.js +72 -50
  68. package/esm/maths/algebra/polynom.js.map +1 -1
  69. package/esm/maths/numeric.js +3 -48
  70. package/esm/maths/numeric.js.map +1 -1
  71. package/esm/maths/randomization/random.d.ts +1 -1
  72. package/esm/maths/randomization/random.js +2 -2
  73. package/esm/maths/randomization/random.js.map +1 -1
  74. package/esm/maths/randomization/rndHelpers.d.ts +1 -1
  75. package/esm/maths/randomization/rndHelpers.js +25 -4
  76. package/esm/maths/randomization/rndHelpers.js.map +1 -1
  77. package/package.json +1 -1
  78. package/src/index.ts +1 -1
  79. package/src/maths/algebra/monom.ts +138 -130
  80. package/src/maths/algebra/polynom.ts +107 -85
  81. package/src/maths/numeric.ts +61 -90
  82. package/src/maths/randomization/random.ts +2 -2
  83. package/src/maths/randomization/rndHelpers.ts +49 -18
  84. package/tests/algebra/linear.test.ts +1 -1
  85. package/tests/algebra/polynom.test.ts +152 -1
  86. package/tests/algebra/study.test.ts +1 -0
  87. package/tests/geometry/circle.test.ts +124 -25
  88. package/tests/geometry/line.test.ts +8 -17
  89. package/tests/numexp.test.ts +10 -2
  90. package/esm/maths/expressions/ExpressionTree.d.ts +0 -17
  91. package/esm/maths/expressions/ExpressionTree.js +0 -150
  92. package/esm/maths/expressions/ExpressionTree.js.map +0 -1
  93. package/esm/maths/expressions/expression.d.ts +0 -27
  94. package/esm/maths/expressions/expression.js +0 -239
  95. package/esm/maths/expressions/expression.js.map +0 -1
  96. package/esm/maths/expressions/expressionFactor.d.ts +0 -36
  97. package/esm/maths/expressions/expressionFactor.js +0 -156
  98. package/esm/maths/expressions/expressionFactor.js.map +0 -1
  99. package/esm/maths/expressions/expressionMember.d.ts +0 -27
  100. package/esm/maths/expressions/expressionMember.js +0 -199
  101. package/esm/maths/expressions/expressionMember.js.map +0 -1
  102. package/esm/maths/expressions/expressionOperators.d.ts +0 -8
  103. package/esm/maths/expressions/expressionOperators.js +0 -42
  104. package/esm/maths/expressions/expressionOperators.js.map +0 -1
  105. package/esm/maths/expressions/expressionParser.d.ts +0 -14
  106. package/esm/maths/expressions/expressionParser.js +0 -259
  107. package/esm/maths/expressions/expressionParser.js.map +0 -1
  108. package/esm/maths/expressions/factors/ExpFactor.d.ts +0 -7
  109. package/esm/maths/expressions/factors/ExpFactor.js +0 -34
  110. package/esm/maths/expressions/factors/ExpFactor.js.map +0 -1
  111. package/esm/maths/expressions/factors/ExpFactorConstant.d.ts +0 -14
  112. package/esm/maths/expressions/factors/ExpFactorConstant.js +0 -52
  113. package/esm/maths/expressions/factors/ExpFactorConstant.js.map +0 -1
  114. package/esm/maths/expressions/factors/ExpFactorExponential.d.ts +0 -8
  115. package/esm/maths/expressions/factors/ExpFactorExponential.js +0 -22
  116. package/esm/maths/expressions/factors/ExpFactorExponential.js.map +0 -1
  117. package/esm/maths/expressions/factors/ExpFactorNumber.d.ts +0 -14
  118. package/esm/maths/expressions/factors/ExpFactorNumber.js +0 -59
  119. package/esm/maths/expressions/factors/ExpFactorNumber.js.map +0 -1
  120. package/esm/maths/expressions/factors/ExpFactorPower.d.ts +0 -13
  121. package/esm/maths/expressions/factors/ExpFactorPower.js +0 -35
  122. package/esm/maths/expressions/factors/ExpFactorPower.js.map +0 -1
  123. package/esm/maths/expressions/factors/ExpFactorTrigo.d.ts +0 -20
  124. package/esm/maths/expressions/factors/ExpFactorTrigo.js +0 -48
  125. package/esm/maths/expressions/factors/ExpFactorTrigo.js.map +0 -1
  126. package/esm/maths/expressions/factors/ExpFactorVariable.d.ts +0 -13
  127. package/esm/maths/expressions/factors/ExpFactorVariable.js +0 -36
  128. package/esm/maths/expressions/factors/ExpFactorVariable.js.map +0 -1
  129. package/esm/maths/expressions/internals.d.ts +0 -12
  130. package/esm/maths/expressions/internals.js +0 -29
  131. package/esm/maths/expressions/internals.js.map +0 -1
  132. package/esm/maths/expressions/numexp.d.ts +0 -19
  133. package/esm/maths/expressions/numexp.js +0 -186
  134. package/esm/maths/expressions/numexp.js.map +0 -1
  135. package/esm/maths/expressions/polynomexp.bkp.d.ts +0 -33
  136. package/esm/maths/expressions/polynomexp.bkp.js +0 -184
  137. package/esm/maths/expressions/polynomexp.bkp.js.map +0 -1
  138. package/esm/maths/expressions/polynomexp.d.ts +0 -52
  139. package/esm/maths/expressions/polynomexp.js +0 -246
  140. package/esm/maths/expressions/polynomexp.js.map +0 -1
@@ -1,184 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PolynomExp = exports.PolynomExpFactor = exports.isFactor = void 0;
4
- const polynom_1 = require("../algebra/polynom");
5
- const fraction_1 = require("../coefficients/fraction");
6
- function isFactor(value) {
7
- return value && 'polynom' in value && 'degree' in value;
8
- }
9
- exports.isFactor = isFactor;
10
- class PolynomExpFactor {
11
- constructor(...values) {
12
- this.addFactor = (value) => {
13
- this._factors.push({
14
- polynom: new polynom_1.Polynom(value.polynom),
15
- degree: new fraction_1.Fraction(value.degree)
16
- });
17
- return this;
18
- };
19
- this.multiply = (value) => {
20
- for (const k of value.factors) {
21
- this.addFactor(k);
22
- }
23
- return this;
24
- };
25
- this.divide = (value) => {
26
- for (const k of value.factors) {
27
- this.addFactor({
28
- polynom: k.polynom,
29
- degree: k.degree.clone().opposed()
30
- });
31
- }
32
- return this;
33
- };
34
- this.derivative = (letter) => {
35
- // A*B*C*D =
36
- // Basic version
37
- // TODO: create derivative with more than only two factors.
38
- if (this._factors.length === 2) {
39
- const A = this._factors[0], B = this._factors[1], P = new PolynomExp();
40
- let Ad = this._factorDerivative(A), Bd = this._factorDerivative(B);
41
- P.add(new PolynomExpFactor({
42
- polynom: A.polynom.derivative(letter),
43
- }));
44
- }
45
- return;
46
- };
47
- this._factorDerivative = (factor, letter) => {
48
- let derivativeExpression = new PolynomExpFactor();
49
- derivativeExpression.addFactor({ polynom: new polynom_1.Polynom(factor.degree), degree: new fraction_1.Fraction().one() });
50
- derivativeExpression.addFactor({ polynom: factor.polynom, degree: factor.degree.subtract(1) });
51
- derivativeExpression.addFactor({
52
- polynom: factor.polynom.clone().derivative(letter),
53
- degree: new fraction_1.Fraction().one()
54
- });
55
- return derivativeExpression;
56
- };
57
- this._factorAsTex = (factor, withParenthesis) => {
58
- let tex = '';
59
- if (factor.degree.isOne()) {
60
- if (withParenthesis === undefined || withParenthesis) {
61
- tex = `\\left(${factor.polynom.tex}\\right)`;
62
- }
63
- else {
64
- tex = factor.polynom.tex;
65
- }
66
- }
67
- else if (factor.degree.isNatural()) {
68
- tex = `\\left(${factor.polynom.tex}\\right)^{ ${factor.degree.tex} }`;
69
- }
70
- else {
71
- if (this._powerAsInteger) {
72
- if (factor.degree.denominator === 2) {
73
- tex = `\\sqrt{${factor.polynom.tex}}`;
74
- }
75
- else {
76
- tex = `\\sqrt[${factor.degree.denominator}]{${factor.polynom.tex}}`;
77
- }
78
- if (factor.degree.numerator !== 1) {
79
- tex += `^{ ${factor.degree.numerator} }`;
80
- }
81
- }
82
- else {
83
- tex = `\\left(${factor.polynom.tex}\\right)^{ ${factor.degree.tex} }`;
84
- }
85
- }
86
- return tex;
87
- };
88
- this._powerAsInteger = true;
89
- this._factors = [];
90
- for (let factor of values) {
91
- if (isFactor(factor)) {
92
- this.addFactor({
93
- polynom: factor.polynom,
94
- degree: factor.degree
95
- });
96
- }
97
- }
98
- }
99
- get factors() {
100
- return this._factors;
101
- }
102
- get powerAsInteger() {
103
- return this._powerAsInteger;
104
- }
105
- set powerAsInteger(value) {
106
- this._powerAsInteger = value;
107
- }
108
- get tex() {
109
- // group positive and negative degrees.
110
- const numerators = [], denominators = [];
111
- for (const k of this._factors) {
112
- if (k.degree.isPositive()) {
113
- numerators.push(this._factorAsTex(k));
114
- }
115
- else {
116
- denominators.push(this._factorAsTex({
117
- polynom: k.polynom,
118
- degree: k.degree.clone().opposed()
119
- }));
120
- }
121
- }
122
- if (denominators.length > 0) {
123
- return `\\frac{ ${numerators.length > 0 ? numerators.join('') : 1} }{ ${denominators.join('')} }`;
124
- }
125
- else {
126
- return numerators.join('');
127
- }
128
- }
129
- }
130
- exports.PolynomExpFactor = PolynomExpFactor;
131
- class PolynomExp {
132
- constructor(...values) {
133
- this.add = (value) => {
134
- value.powerAsInteger = this._powerAsInteger;
135
- this._factors.push({
136
- factors: value,
137
- positive: true
138
- });
139
- return this;
140
- };
141
- this.subtract = (value) => {
142
- value.powerAsInteger = this._powerAsInteger;
143
- this._factors.push({
144
- factors: value,
145
- positive: false
146
- });
147
- return this;
148
- };
149
- this._factors = [];
150
- if (values !== undefined) {
151
- for (const factor of values) {
152
- this._factors.push({
153
- factors: factor,
154
- positive: true
155
- });
156
- }
157
- }
158
- this._powerAsInteger = true;
159
- }
160
- get powerAsInteger() {
161
- return this._powerAsInteger;
162
- }
163
- set powerAsInteger(value) {
164
- for (const factor of this._factors) {
165
- factor.factors.powerAsInteger = value;
166
- }
167
- this._powerAsInteger = value;
168
- }
169
- get tex() {
170
- let tex = '';
171
- for (const factor of this._factors) {
172
- if (factor.factors.tex === '') {
173
- continue;
174
- }
175
- if (tex !== '' || !factor.positive) {
176
- tex += factor.positive ? '+' : '-';
177
- }
178
- tex += factor.factors.tex;
179
- }
180
- return tex;
181
- }
182
- }
183
- exports.PolynomExp = PolynomExp;
184
- //# sourceMappingURL=polynomexp.bkp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polynomexp.bkp.js","sourceRoot":"","sources":["../../../src/maths/expressions/polynomexp.bkp.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import { Polynom, PolynomParsingType } from "../algebra/polynom";
2
- import { Fraction, FractionParsingType } from "../coefficients/fraction";
3
- type PolynomExpMathFunctionType = {
4
- name: string;
5
- fn: Function;
6
- tex: string;
7
- };
8
- export declare class PolynomExpFactor {
9
- constructor(polynom: PolynomParsingType, degree?: FractionParsingType, mathFunction?: PolynomExpMathFunctionType);
10
- private _forceParenthesis;
11
- get forceParenthesis(): boolean;
12
- set forceParenthesis(value: boolean);
13
- private _fn;
14
- get fn(): PolynomExpMathFunctionType;
15
- set fn(value: PolynomExpMathFunctionType);
16
- private _powerAsInteger;
17
- get powerAsInteger(): boolean;
18
- set powerAsInteger(value: boolean);
19
- private _polynom;
20
- get polynom(): Polynom;
21
- set polynom(value: Polynom);
22
- private _degree;
23
- get degree(): Fraction;
24
- set degree(value: Fraction);
25
- get tex(): string;
26
- get isCoefficient(): boolean;
27
- get firstCoefficient(): Fraction;
28
- private get _texDegree();
29
- setForceParenthesis(value?: boolean): PolynomExpFactor;
30
- derivative(letter?: string): PolynomExpProduct;
31
- }
32
- export declare class PolynomExpProduct {
33
- constructor(...values: PolynomExpFactor[]);
34
- private _fn;
35
- get fn(): PolynomExpMathFunctionType;
36
- set fn(value: PolynomExpMathFunctionType);
37
- private _factors;
38
- get factors(): PolynomExpFactor[];
39
- set factors(value: PolynomExpFactor[]);
40
- private _positive;
41
- get positive(): boolean;
42
- set positive(value: boolean);
43
- private _asPositiveDegree;
44
- get asPositiveDegree(): boolean;
45
- set asPositiveDegree(value: boolean);
46
- get tex(): string;
47
- reduce(): PolynomExpProduct;
48
- integrate(letter?: string): PolynomExpProduct;
49
- applyMathFunction(mathFn: PolynomExpMathFunctionType): PolynomExpProduct;
50
- private _integrateWithInternalDerivative;
51
- }
52
- export {};
@@ -1,246 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PolynomExpProduct = exports.PolynomExpFactor = void 0;
4
- const polynom_1 = require("../algebra/polynom");
5
- const fraction_1 = require("../coefficients/fraction");
6
- class PolynomExpFactor {
7
- constructor(polynom, degree, mathFunction) {
8
- this._polynom = new polynom_1.Polynom(polynom);
9
- this._degree = new fraction_1.Fraction(degree === undefined ? 1 : degree);
10
- this._fn = mathFunction;
11
- this._powerAsInteger = true;
12
- this._forceParenthesis = true;
13
- }
14
- get forceParenthesis() {
15
- return this._forceParenthesis;
16
- }
17
- set forceParenthesis(value) {
18
- this._forceParenthesis = value;
19
- }
20
- get fn() {
21
- return this._fn;
22
- }
23
- set fn(value) {
24
- this._fn = value;
25
- }
26
- get powerAsInteger() {
27
- return this._powerAsInteger;
28
- }
29
- set powerAsInteger(value) {
30
- this._powerAsInteger = value;
31
- }
32
- get polynom() {
33
- return this._polynom;
34
- }
35
- set polynom(value) {
36
- this._polynom = value;
37
- }
38
- get degree() {
39
- return this._degree;
40
- }
41
- set degree(value) {
42
- this._degree = value;
43
- }
44
- get tex() {
45
- let tex;
46
- if (this._degree.isOne() && (this._fn !== undefined || !this._forceParenthesis)) {
47
- // If degree is one, no need to add the parenthesis.
48
- tex = this._polynom.tex;
49
- }
50
- else {
51
- // the degree is not one, add the parenthesis.
52
- if (this._powerAsInteger && !this._degree.isRelative()) {
53
- // the degree is a fraction and we want natural powers => use sqrt.
54
- tex = `\\sqrt${this._degree.denominator !== 2 ? `[ ${this._degree.denominator} ]` : ''}{ ${this._polynom.tex} }^{ ${this._degree.numerator} }`;
55
- }
56
- else if (this.isCoefficient && this.firstCoefficient.isNatural()) {
57
- // the value is a natural number (eg 3, 7, ...)
58
- tex = this._polynom.tex + this._texDegree;
59
- }
60
- else {
61
- // In any other case, add the parenthesis by default
62
- tex = `\\left( ${this._polynom.tex} \\right)${this._texDegree}`;
63
- }
64
- }
65
- if (this._fn !== undefined && this._fn.tex !== undefined) {
66
- tex = `${this._fn.tex}\\left( ${tex} \\right)`;
67
- }
68
- return tex;
69
- }
70
- get isCoefficient() {
71
- // TODO: Maybe reduce the coefficient if it isn't of degree one.
72
- return this._polynom.degree().isZero();
73
- }
74
- get firstCoefficient() {
75
- return this._polynom.monomByDegree().coefficient;
76
- }
77
- get _texDegree() {
78
- if (this._degree.isOne()) {
79
- return '';
80
- }
81
- else {
82
- return `^{ ${this._degree.tfrac} }`;
83
- }
84
- }
85
- setForceParenthesis(value) {
86
- this._forceParenthesis = value === undefined || value;
87
- return this;
88
- }
89
- derivative(letter) {
90
- if (this._degree.isOne()) {
91
- return new PolynomExpProduct(new PolynomExpFactor(this._polynom.clone().derivative(letter)));
92
- }
93
- else {
94
- return new PolynomExpProduct(new PolynomExpFactor(this._degree.clone()), new PolynomExpFactor(this._polynom.clone().derivative(letter)), new PolynomExpFactor(this._polynom.clone(), this._degree.clone().subtract(1)));
95
- }
96
- }
97
- }
98
- exports.PolynomExpFactor = PolynomExpFactor;
99
- class PolynomExpProduct {
100
- constructor(...values) {
101
- this._factors = values || [];
102
- this._positive = true;
103
- this._asPositiveDegree = true;
104
- }
105
- get fn() {
106
- return this._fn;
107
- }
108
- set fn(value) {
109
- this._fn = value;
110
- }
111
- get factors() {
112
- return this._factors;
113
- }
114
- set factors(value) {
115
- this._factors = value;
116
- }
117
- get positive() {
118
- return this._positive;
119
- }
120
- set positive(value) {
121
- this._positive = value;
122
- }
123
- get asPositiveDegree() {
124
- return this._asPositiveDegree;
125
- }
126
- set asPositiveDegree(value) {
127
- this._asPositiveDegree = value;
128
- }
129
- get tex() {
130
- let parenthesis = this._factors.length > 1;
131
- // Default value
132
- let tex = this._factors.map(factor => factor.setForceParenthesis(parenthesis).tex).join(' \\cdot ');
133
- // Change the value in some cases...
134
- if (this._asPositiveDegree) {
135
- const numerators = this._factors.filter(x => x.degree.isPositive()), denominators = this._factors.filter(x => x.degree.isNegative());
136
- let numeratorsAsTex, denominatorsAsTex;
137
- if (denominators.length > 0) {
138
- if (numerators.length === 0) {
139
- numeratorsAsTex = [1];
140
- }
141
- else if (numerators.length === 1) {
142
- numeratorsAsTex = [numerators[0].setForceParenthesis(false).tex];
143
- }
144
- else {
145
- parenthesis = numerators.length > 1;
146
- numeratorsAsTex = numerators.map(factor => factor.setForceParenthesis(parenthesis).tex);
147
- }
148
- // Change all denominators degrees to positive.
149
- denominators.map(x => x.degree.opposed());
150
- if (denominators.length === 1) {
151
- denominatorsAsTex = [denominators[0].setForceParenthesis(false).tex];
152
- }
153
- else {
154
- parenthesis = denominators.length > 1;
155
- denominatorsAsTex = denominators.map(factor => factor.setForceParenthesis(parenthesis).tex);
156
- }
157
- // restore all degrees to negative again.
158
- denominators.map(x => x.degree.opposed());
159
- tex = `\\frac{ ${numeratorsAsTex.join(' \\cdot ')} }{ ${denominatorsAsTex.join(' \\cdot ')} }`;
160
- }
161
- }
162
- // Apply the modification
163
- if (this._fn !== undefined && this._fn.name !== undefined && this._fn.name !== '') {
164
- tex = `${this._fn.tex}\\left( ${tex} \\right)`;
165
- }
166
- return tex;
167
- }
168
- reduce() {
169
- let coefficients = this._factors.filter(factor => factor.isCoefficient), polynoms = this._factors.filter(factor => !factor.isCoefficient);
170
- let result = new fraction_1.Fraction().one();
171
- if (coefficients.length > 1) {
172
- for (const factor of coefficients) {
173
- if (factor.degree.isPositive()) {
174
- result.multiply(factor.polynom.monoms[0].coefficient.pow(factor.degree));
175
- }
176
- else {
177
- result.divide(factor.polynom.monoms[0].coefficient.pow(factor.degree.clone().abs()));
178
- }
179
- }
180
- }
181
- else if (coefficients.length === 1) {
182
- result = coefficients[0].polynom.monoms[0].coefficient;
183
- }
184
- if (result.isOne()) {
185
- this._factors = [...polynoms];
186
- }
187
- else if (!result.isRelative()) {
188
- this._factors = [
189
- new PolynomExpFactor(result.numerator),
190
- new PolynomExpFactor(result.denominator, -1),
191
- ...polynoms
192
- ];
193
- }
194
- else {
195
- this._factors = [
196
- new PolynomExpFactor(result),
197
- ...polynoms
198
- ];
199
- }
200
- return this;
201
- }
202
- integrate(letter) {
203
- // Handle this kind of case:
204
- // A * f' * F^n
205
- // A * f' / F^n, n != 1
206
- // A * f_1 * f_2 * f_3, where (f_1 * f_2)' = f_3
207
- if (this._factors.length === 2) {
208
- // Check polynoms degree: one must of one degree less than the other.
209
- let d1 = this._factors[0].polynom.degree(letter).value, d2 = this._factors[1].polynom.degree(letter).value;
210
- if (d1 === d2 + 1) {
211
- return this._integrateWithInternalDerivative(this._factors[0], this._factors[1], letter);
212
- }
213
- else if (d1 + 1 === d2) {
214
- return this._integrateWithInternalDerivative(this._factors[1], this._factors[0], letter);
215
- }
216
- }
217
- return;
218
- }
219
- applyMathFunction(mathFn) {
220
- this._fn = mathFn;
221
- return this;
222
- }
223
- _integrateWithInternalDerivative(P, Pinternal, letter) {
224
- // Get the internal derivative
225
- let internalDerivative = P.polynom.clone().derivative(letter);
226
- // Get the factor.
227
- let { quotient, reminder } = Pinternal.polynom.clone().euclidian(internalDerivative);
228
- if (reminder.isZero() && quotient.degree(letter).isZero()) {
229
- // All the conditions are done. Actual situation is
230
- // (4x-10)(x^2-5x+7)^9
231
- // P1 = (x^2-5x+7), P2 = (2x-5)
232
- // => 1/10 * quotient * (x^2-5x+7)^10
233
- if (P.degree.isEqual(-1)) {
234
- return (new PolynomExpProduct(new PolynomExpFactor(quotient, 1), new PolynomExpFactor(P.polynom.clone(), 1, {
235
- name: 'ln', tex: '\\ln', fn: (x) => Math.log(x)
236
- })));
237
- }
238
- else {
239
- return new PolynomExpProduct(new PolynomExpFactor(P.degree.clone().add(1).invert(), 1), new PolynomExpFactor(quotient, 1), new PolynomExpFactor(P.polynom.clone(), P.degree.clone().add(1)));
240
- }
241
- }
242
- return;
243
- }
244
- }
245
- exports.PolynomExpProduct = PolynomExpProduct;
246
- //# sourceMappingURL=polynomexp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"polynomexp.js","sourceRoot":"","sources":["../../../src/maths/expressions/polynomexp.ts"],"names":[],"mappings":"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"}