pimath 0.0.123 → 0.0.125

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 (132) 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/dist/pimath.js +53 -14
  10. package/dist/pimath.js.map +1 -1
  11. package/dist/pimath.min.js +1 -1
  12. package/dist/pimath.min.js.map +1 -1
  13. package/esm/maths/algebra/rational.d.ts +1 -0
  14. package/esm/maths/algebra/rational.js +12 -1
  15. package/esm/maths/algebra/rational.js.map +1 -1
  16. package/esm/maths/geometry/triangle.d.ts +6 -0
  17. package/esm/maths/geometry/triangle.js +14 -7
  18. package/esm/maths/geometry/triangle.js.map +1 -1
  19. package/esm/maths/randomization/random.d.ts +1 -1
  20. package/esm/maths/randomization/random.js +2 -2
  21. package/esm/maths/randomization/random.js.map +1 -1
  22. package/esm/maths/randomization/rndHelpers.d.ts +1 -1
  23. package/esm/maths/randomization/rndHelpers.js +25 -4
  24. package/esm/maths/randomization/rndHelpers.js.map +1 -1
  25. package/package.json +8 -8
  26. package/src/maths/algebra/rational.ts +13 -1
  27. package/src/maths/geometry/triangle.ts +24 -8
  28. package/src/maths/randomization/random.ts +2 -2
  29. package/src/maths/randomization/rndHelpers.ts +49 -18
  30. package/tests/algebra/rationnal.test.ts +5 -0
  31. package/tests/geometry/circle.test.ts +125 -10
  32. package/tests/numexp.test.ts +15 -2
  33. package/dev/pimath.js +0 -7935
  34. package/dev/pimath.js.map +0 -1
  35. package/docs/.nojekyll +0 -1
  36. package/docs/assets/highlight.css +0 -78
  37. package/docs/assets/main.js +0 -58
  38. package/docs/assets/search.js +0 -1
  39. package/docs/assets/style.css +0 -1367
  40. package/docs/classes/Logicalset.Logicalset.html +0 -221
  41. package/docs/classes/Polynom.Rational.html +0 -391
  42. package/docs/classes/Vector-1.Vector.html +0 -494
  43. package/docs/classes/Vector.Point.html +0 -341
  44. package/docs/classes/algebra_equation.Equation.html +0 -796
  45. package/docs/classes/algebra_linearSystem.LinearSystem.html +0 -408
  46. package/docs/classes/algebra_monom.Monom.html +0 -967
  47. package/docs/classes/algebra_polynom.Polynom.html +0 -1281
  48. package/docs/classes/coefficients_fraction.Fraction.html +0 -939
  49. package/docs/classes/geometry_circle.Circle.html +0 -476
  50. package/docs/classes/geometry_line.Line.html +0 -779
  51. package/docs/classes/geometry_triangle.Triangle.html +0 -429
  52. package/docs/classes/numeric.Numeric.html +0 -269
  53. package/docs/classes/shutingyard.Shutingyard.html +0 -259
  54. package/docs/enums/algebra_equation.PARTICULAR_SOLUTION.html +0 -89
  55. package/docs/enums/geometry_line.LinePropriety.html +0 -102
  56. package/docs/enums/shutingyard.ShutingyardMode.html +0 -106
  57. package/docs/enums/shutingyard.ShutingyardType.html +0 -120
  58. package/docs/index.html +0 -63
  59. package/docs/interfaces/algebra_equation.ISolution.html +0 -111
  60. package/docs/interfaces/algebra_polynom.IEuclidian.html +0 -93
  61. package/docs/interfaces/geometry_triangle.remarquableLines.html +0 -150
  62. package/docs/modules/Logicalset.html +0 -69
  63. package/docs/modules/Polynom.html +0 -69
  64. package/docs/modules/Vector-1.html +0 -69
  65. package/docs/modules/Vector.html +0 -69
  66. package/docs/modules/algebra_equation.html +0 -75
  67. package/docs/modules/algebra_linearSystem.html +0 -65
  68. package/docs/modules/algebra_monom.html +0 -70
  69. package/docs/modules/algebra_polynom.html +0 -75
  70. package/docs/modules/coefficients_fraction.html +0 -70
  71. package/docs/modules/geometry_circle.html +0 -65
  72. package/docs/modules/geometry_line.html +0 -70
  73. package/docs/modules/geometry_triangle.html +0 -70
  74. package/docs/modules/numeric.html +0 -65
  75. package/docs/modules/shutingyard.html +0 -84
  76. package/docs/types/algebra_monom.literalType.html +0 -66
  77. package/docs/types/algebra_polynom.PolynomParsingType.html +0 -62
  78. package/docs/types/coefficients_fraction.FractionParsingType.html +0 -61
  79. package/docs/types/shutingyard.Token.html +0 -72
  80. package/docs/types/shutingyard.tokenType.html +0 -77
  81. package/docs/variables/shutingyard.tokenConstant.html +0 -70
  82. package/esm/maths/expressions/ExpressionTree.d.ts +0 -17
  83. package/esm/maths/expressions/ExpressionTree.js +0 -150
  84. package/esm/maths/expressions/ExpressionTree.js.map +0 -1
  85. package/esm/maths/expressions/expression.d.ts +0 -27
  86. package/esm/maths/expressions/expression.js +0 -239
  87. package/esm/maths/expressions/expression.js.map +0 -1
  88. package/esm/maths/expressions/expressionFactor.d.ts +0 -36
  89. package/esm/maths/expressions/expressionFactor.js +0 -156
  90. package/esm/maths/expressions/expressionFactor.js.map +0 -1
  91. package/esm/maths/expressions/expressionMember.d.ts +0 -27
  92. package/esm/maths/expressions/expressionMember.js +0 -199
  93. package/esm/maths/expressions/expressionMember.js.map +0 -1
  94. package/esm/maths/expressions/expressionOperators.d.ts +0 -8
  95. package/esm/maths/expressions/expressionOperators.js +0 -42
  96. package/esm/maths/expressions/expressionOperators.js.map +0 -1
  97. package/esm/maths/expressions/expressionParser.d.ts +0 -14
  98. package/esm/maths/expressions/expressionParser.js +0 -259
  99. package/esm/maths/expressions/expressionParser.js.map +0 -1
  100. package/esm/maths/expressions/factors/ExpFactor.d.ts +0 -7
  101. package/esm/maths/expressions/factors/ExpFactor.js +0 -34
  102. package/esm/maths/expressions/factors/ExpFactor.js.map +0 -1
  103. package/esm/maths/expressions/factors/ExpFactorConstant.d.ts +0 -14
  104. package/esm/maths/expressions/factors/ExpFactorConstant.js +0 -52
  105. package/esm/maths/expressions/factors/ExpFactorConstant.js.map +0 -1
  106. package/esm/maths/expressions/factors/ExpFactorExponential.d.ts +0 -8
  107. package/esm/maths/expressions/factors/ExpFactorExponential.js +0 -22
  108. package/esm/maths/expressions/factors/ExpFactorExponential.js.map +0 -1
  109. package/esm/maths/expressions/factors/ExpFactorNumber.d.ts +0 -14
  110. package/esm/maths/expressions/factors/ExpFactorNumber.js +0 -59
  111. package/esm/maths/expressions/factors/ExpFactorNumber.js.map +0 -1
  112. package/esm/maths/expressions/factors/ExpFactorPower.d.ts +0 -13
  113. package/esm/maths/expressions/factors/ExpFactorPower.js +0 -35
  114. package/esm/maths/expressions/factors/ExpFactorPower.js.map +0 -1
  115. package/esm/maths/expressions/factors/ExpFactorTrigo.d.ts +0 -20
  116. package/esm/maths/expressions/factors/ExpFactorTrigo.js +0 -48
  117. package/esm/maths/expressions/factors/ExpFactorTrigo.js.map +0 -1
  118. package/esm/maths/expressions/factors/ExpFactorVariable.d.ts +0 -13
  119. package/esm/maths/expressions/factors/ExpFactorVariable.js +0 -36
  120. package/esm/maths/expressions/factors/ExpFactorVariable.js.map +0 -1
  121. package/esm/maths/expressions/internals.d.ts +0 -12
  122. package/esm/maths/expressions/internals.js +0 -29
  123. package/esm/maths/expressions/internals.js.map +0 -1
  124. package/esm/maths/expressions/numexp.d.ts +0 -19
  125. package/esm/maths/expressions/numexp.js +0 -186
  126. package/esm/maths/expressions/numexp.js.map +0 -1
  127. package/esm/maths/expressions/polynomexp.bkp.d.ts +0 -33
  128. package/esm/maths/expressions/polynomexp.bkp.js +0 -184
  129. package/esm/maths/expressions/polynomexp.bkp.js.map +0 -1
  130. package/esm/maths/expressions/polynomexp.d.ts +0 -52
  131. package/esm/maths/expressions/polynomexp.js +0 -246
  132. package/esm/maths/expressions/polynomexp.js.map +0 -1
@@ -1,239 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Expression = void 0;
4
- const internals_1 = require("./internals");
5
- class Expression {
6
- constructor(...values) {
7
- this._members = [];
8
- this.addMembers(...values);
9
- return this;
10
- }
11
- get tex() {
12
- let tex = "";
13
- for (let item of this._members) {
14
- try {
15
- if (tex === "") {
16
- tex = (item.sign === -1 ? "-" : "") + item.member.tex;
17
- }
18
- else {
19
- tex += (item.sign === -1 ? "-" : "+") + item.member.tex;
20
- }
21
- }
22
- catch {
23
- console.log('Error while generating the TeX code for ', item.constructor.name);
24
- }
25
- }
26
- return tex;
27
- }
28
- get display() {
29
- let display = "";
30
- for (let item of this._members) {
31
- try {
32
- if (display === "") {
33
- display = (item.sign === -1 ? "-" : "") + item.member.display;
34
- }
35
- else {
36
- display += (item.sign === -1 ? "-" : "+") + item.member.display;
37
- }
38
- }
39
- catch {
40
- console.log('Error while generating the display code for ', item.constructor.name);
41
- }
42
- }
43
- return display;
44
- }
45
- get members() {
46
- return this._members;
47
- }
48
- set members(value) {
49
- this._members = value;
50
- }
51
- addMembers(...values) {
52
- for (let item of values) {
53
- if (item instanceof internals_1.ExpressionMember) {
54
- this._members.push({
55
- member: item,
56
- sign: 1
57
- });
58
- }
59
- else if (item instanceof internals_1.ExpressionFactor) {
60
- this._members.push({
61
- member: new internals_1.ExpressionMember(item),
62
- sign: 1
63
- });
64
- }
65
- else {
66
- this._members.push(item);
67
- }
68
- }
69
- return this;
70
- }
71
- add(value) {
72
- if (value instanceof Expression) {
73
- this.members = this.members.concat(...value.members);
74
- }
75
- else if (value instanceof internals_1.ExpressionMember) {
76
- this.members.push({
77
- member: value,
78
- sign: 1
79
- });
80
- }
81
- else if (value instanceof internals_1.ExpressionFactor) {
82
- this.members.push({
83
- member: new internals_1.ExpressionMember(value),
84
- sign: 1
85
- });
86
- }
87
- return this;
88
- }
89
- subtract(value) {
90
- if (value instanceof Expression) {
91
- this.members = this.members.concat(...value.members
92
- .map(item => {
93
- return { member: item.member, sign: -item.sign };
94
- }));
95
- }
96
- else if (value instanceof internals_1.ExpressionMember) {
97
- this.members.push({
98
- member: value,
99
- sign: -1
100
- });
101
- }
102
- else if (value instanceof internals_1.ExpressionFactor) {
103
- this.members.push({
104
- member: new internals_1.ExpressionMember(value),
105
- sign: -1
106
- });
107
- }
108
- return this;
109
- }
110
- variables() {
111
- let values = [], varFactor;
112
- values = this.getAllFactors().filter(x => x instanceof internals_1.ExpFactorVariable).map(x => {
113
- return x instanceof internals_1.ExpFactorVariable ? x.variable : null;
114
- });
115
- return [...new Set(values)];
116
- }
117
- isPolynom() {
118
- // Allow variable, number, factor, power, constant
119
- let factors = this.getAllFactors();
120
- for (let factor of factors) {
121
- // No root
122
- if (factor.root > 1) {
123
- return false;
124
- }
125
- // Allow power, as long as the power argument is numeric
126
- if (factor instanceof internals_1.ExpFactorPower) {
127
- if (!factor.powerArgument.isNumeric()) {
128
- return false;
129
- }
130
- // TODO: the power must be an integer value.
131
- if (!factor.powerArgument.isNumber()) {
132
- return false;
133
- }
134
- }
135
- // Allow some type of factors.
136
- if (!(factor instanceof internals_1.ExpFactor ||
137
- factor instanceof internals_1.ExpFactorConstant ||
138
- factor instanceof internals_1.ExpFactorNumber ||
139
- factor instanceof internals_1.ExpFactorVariable)) {
140
- return false;
141
- }
142
- }
143
- return true;
144
- }
145
- getAllFactors() {
146
- let EF = [];
147
- for (let item of this._members) {
148
- for (let factor of item.member.factors) {
149
- EF.push(factor);
150
- for (let expr of factor.getArguments()) {
151
- EF = EF.concat(...expr.getAllFactors());
152
- }
153
- }
154
- }
155
- return EF;
156
- }
157
- hasVariable(variable) {
158
- if (variable === undefined) {
159
- return !this.isNumeric();
160
- }
161
- for (let item of this._members) {
162
- if (item.member.hasVariable(variable)) {
163
- return true;
164
- }
165
- }
166
- // The variable hasn't been found !
167
- return false;
168
- }
169
- isZero() {
170
- // TODO: Must check if all the members has a value of zero
171
- if (this._members.length === 0) {
172
- return true;
173
- }
174
- for (let item of this._members) {
175
- if (item.member.isZero()) {
176
- return true;
177
- }
178
- }
179
- return false;
180
- }
181
- isNumeric() {
182
- for (let item of this._members) {
183
- if (!item.member.isNumeric()) {
184
- return false;
185
- }
186
- }
187
- return true;
188
- }
189
- isNumber() {
190
- if (this._members.length === 1) {
191
- if (this._members[0]?.member.factors[0] instanceof internals_1.ExpFactorNumber) {
192
- return this._members[0].member.factors[0].root === 1;
193
- }
194
- }
195
- return false;
196
- }
197
- isSingle() {
198
- if (this.members.length > 1) {
199
- return false;
200
- }
201
- else if (this.members[0]?.member.factors.length > 1) {
202
- return false;
203
- }
204
- else {
205
- return true;
206
- }
207
- }
208
- isFactor() {
209
- return this.members.length === 1;
210
- }
211
- structure(depth) {
212
- let struct = [], indent = "", dftIndent = "\t";
213
- if (depth === undefined) {
214
- depth = 0;
215
- }
216
- for (let i = 0; i < depth; i++) {
217
- indent += dftIndent;
218
- }
219
- struct.push(`${indent}${this.constructor.name}: ${this.tex}`);
220
- for (let item of this._members) {
221
- struct.push(`${indent}${dftIndent}${item.member.constructor.name}: ${item.member.tex}`);
222
- for (let factor of item.member.factors) {
223
- struct.push(`${indent}${dftIndent}${dftIndent}${factor.constructor.name}: ${factor.tex} ; power: ${factor.power}; root: ${factor.root}`);
224
- if (factor.argument !== null) {
225
- struct.push(factor.argument.structure(depth + 3));
226
- }
227
- }
228
- }
229
- return struct.join('\n');
230
- }
231
- reduce() {
232
- for (let item of this.members) {
233
- item.member.reduce();
234
- }
235
- return this;
236
- }
237
- }
238
- exports.Expression = Expression;
239
- //# sourceMappingURL=expression.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/maths/expressions/expression.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- import { Expression } from "./internals";
2
- export declare abstract class ExpressionFactor {
3
- private _argument;
4
- private _power?;
5
- private _root?;
6
- private _inline?;
7
- constructor(_argument: Expression, _power?: number, _root?: number, _inline?: boolean);
8
- get inline(): boolean;
9
- set inline(value: boolean);
10
- get tex(): string;
11
- get display(): string;
12
- get power(): number;
13
- set power(value: number);
14
- get root(): number;
15
- set root(value: number);
16
- get argument(): Expression;
17
- set argument(value: Expression);
18
- abstract makeTeX(numberOfFactors?: number, position?: number): string;
19
- abstract makeDisplay(numberOfFactors?: number, position?: number): string;
20
- abstract derivative(variable: string): Expression;
21
- abstract integrate(variable: string): Expression;
22
- getArguments(): Expression[];
23
- hasVariable(variable?: string): boolean;
24
- isNumeric(): boolean;
25
- hasRoot(): boolean;
26
- hasPower(inline?: boolean): boolean;
27
- texPowerAndRoot(tex: string): string;
28
- displayPowerAndRoot(display: string): string;
29
- displayPower(display: string): string;
30
- displayRoot(display: string): string;
31
- texPower(tex: string): string;
32
- wrapWithParentheses(tex: string, asTex?: boolean): string;
33
- texRoot(tex: string): string;
34
- isZero(): Boolean;
35
- reduce(): ExpressionFactor;
36
- }
@@ -1,156 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExpressionFactor = void 0;
4
- const internals_1 = require("./internals");
5
- const numeric_1 = require("../numeric");
6
- class ExpressionFactor {
7
- constructor(_argument, _power, _root, _inline) {
8
- this._argument = _argument;
9
- this._power = _power;
10
- this._root = _root;
11
- this._inline = _inline;
12
- if (this._power === undefined) {
13
- this._power = 1;
14
- }
15
- if (this._root === undefined) {
16
- this._root = 1;
17
- }
18
- if (this._inline === undefined) {
19
- this._inline = false;
20
- }
21
- }
22
- get inline() {
23
- return this._inline;
24
- }
25
- set inline(value) {
26
- this._inline = value;
27
- }
28
- get tex() {
29
- return this.makeTeX();
30
- }
31
- get display() {
32
- return this.makeDisplay();
33
- }
34
- get power() {
35
- return this._power;
36
- }
37
- set power(value) {
38
- if (!Number.isSafeInteger(value)) {
39
- throw `Power value (${value}) is not a safe integer`;
40
- }
41
- this._power = value;
42
- }
43
- get root() {
44
- return this._root;
45
- }
46
- set root(value) {
47
- if (!Number.isSafeInteger(value)) {
48
- throw `Root value (${value}) is not a safe integer`;
49
- }
50
- this._root = value;
51
- }
52
- get argument() {
53
- return this._argument;
54
- }
55
- set argument(value) {
56
- this._argument = value;
57
- }
58
- getArguments() {
59
- if (this._argument !== null) {
60
- return [this.argument];
61
- }
62
- return [];
63
- }
64
- hasVariable(variable) {
65
- if (variable === undefined) {
66
- return !this.isNumeric();
67
- }
68
- // The argument is an Expression
69
- if (this._argument instanceof internals_1.Expression) {
70
- return this._argument.hasVariable(variable);
71
- }
72
- return false;
73
- }
74
- isNumeric() {
75
- for (let expressionArgument of this.getArguments()) {
76
- if (!expressionArgument.isNumeric()) {
77
- return false;
78
- }
79
- }
80
- return true;
81
- }
82
- hasRoot() {
83
- return this.root > 1;
84
- }
85
- hasPower(inline) {
86
- if (inline === true) {
87
- return !(this.power === 1);
88
- }
89
- else {
90
- return !(this.power === 1 || this.power === -1);
91
- }
92
- }
93
- texPowerAndRoot(tex) {
94
- return this.texPower(this.texRoot(tex));
95
- }
96
- displayPowerAndRoot(display) {
97
- return this.displayPower(this.displayRoot(display));
98
- }
99
- displayPower(display) {
100
- if (this.hasPower(this.inline)) {
101
- return `${display}^(${Math.abs(this.power)})`;
102
- }
103
- return display;
104
- }
105
- displayRoot(display) {
106
- if (this.root === 2) {
107
- return `sqrt( ${display} )`;
108
- }
109
- else if (this.root > 2) {
110
- return `nthrt(${display},${this.root})`;
111
- }
112
- return display;
113
- }
114
- texPower(tex) {
115
- if (this.hasPower(this.inline)) {
116
- return `${tex}^{ ${Math.abs(this.power)} }`;
117
- }
118
- return tex;
119
- }
120
- wrapWithParentheses(tex, asTex) {
121
- if (asTex === undefined || asTex === true) {
122
- return `\\left( ${tex} \\right)`;
123
- }
124
- else {
125
- return `( ${tex} )`;
126
- }
127
- }
128
- texRoot(tex) {
129
- if (this.root === 2) {
130
- return `\\sqrt{ ${tex} }`;
131
- }
132
- else if (this.root > 2) {
133
- return `\\sqrt[${this.root}]{ ${tex} }`;
134
- }
135
- return tex;
136
- }
137
- isZero() {
138
- if (this._argument instanceof internals_1.Expression) {
139
- return this._argument.isZero();
140
- }
141
- return this._argument === 0;
142
- }
143
- reduce() {
144
- let gcd = numeric_1.Numeric.gcd(this.root, this.power);
145
- if (gcd > 1) {
146
- this.root = this.root / gcd;
147
- this.power = this.power / gcd;
148
- }
149
- for (let expressionArgument of this.getArguments()) {
150
- expressionArgument.reduce();
151
- }
152
- return this;
153
- }
154
- }
155
- exports.ExpressionFactor = ExpressionFactor;
156
- //# sourceMappingURL=expressionFactor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expressionFactor.js","sourceRoot":"","sources":["../../../src/maths/expressions/expressionFactor.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import { ExpressionFactor } from "./internals";
2
- export declare class ExpressionMember {
3
- private _factors;
4
- constructor(...values: ExpressionFactor[]);
5
- get factors(): ExpressionFactor[];
6
- set factors(value: ExpressionFactor[]);
7
- get numerator(): ExpressionFactor[];
8
- get denominator(): ExpressionFactor[];
9
- get tex(): string;
10
- get display(): string;
11
- toString(asTex: boolean): string;
12
- add(value: ExpressionFactor): ExpressionMember;
13
- addFactors(...values: ExpressionFactor[]): ExpressionMember;
14
- isZero(): Boolean;
15
- hasVariable(variable?: string): boolean;
16
- isNumeric(): boolean;
17
- /**
18
- * Returns the "coefficient", ie a member with only numeric values factors.
19
- */
20
- coefficient(): ExpressionMember;
21
- /**
22
- * Returns a member with all factors containing a literal part.
23
- */
24
- literal(): ExpressionMember;
25
- similarTo(member: ExpressionMember): boolean;
26
- reduce(): ExpressionMember;
27
- }
@@ -1,199 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExpressionMember = void 0;
4
- const internals_1 = require("./internals");
5
- class ExpressionMember {
6
- constructor(...values) {
7
- this._factors = values;
8
- }
9
- get factors() {
10
- return this._factors;
11
- }
12
- set factors(value) {
13
- this._factors = value;
14
- }
15
- get numerator() {
16
- return this._factors.filter(factor => factor.power > 0);
17
- }
18
- get denominator() {
19
- return this._factors.filter(factor => factor.power < 0);
20
- }
21
- get tex() {
22
- return this.toString(true);
23
- }
24
- get display() {
25
- return this.toString(false);
26
- }
27
- toString(asTex) {
28
- if (asTex === undefined) {
29
- asTex = true;
30
- }
31
- let outputArray = this.factors.map(x => {
32
- return {
33
- value: asTex ? x.tex : x.display,
34
- valueWithoutParentheses: asTex ? x.makeTeX(1, 0) : x.makeDisplay(1, 0),
35
- denominator: x.power < 0,
36
- number: (x instanceof internals_1.ExpFactorNumber)
37
- };
38
- }), output = '';
39
- while (outputArray.length > 0) {
40
- let item = outputArray.shift();
41
- if (item.denominator) {
42
- if (asTex) {
43
- output += `\\frac{1}{ ${item.valueWithoutParentheses} }`;
44
- }
45
- else {
46
- output += `1/(${item.valueWithoutParentheses})`;
47
- }
48
- }
49
- else {
50
- if (outputArray.length > 0 && outputArray[0].denominator) {
51
- let item2 = outputArray.shift();
52
- if (asTex) {
53
- output += `\\frac{ ${item.valueWithoutParentheses} }{ ${item2.valueWithoutParentheses} }`;
54
- }
55
- else {
56
- output += `(${item.valueWithoutParentheses})/(${item2.valueWithoutParentheses})`;
57
- }
58
- }
59
- else {
60
- output += item.value;
61
- // Check if we need to add the multiplication sign.
62
- if (outputArray.length > 0) {
63
- if (item.number && outputArray[0].number) {
64
- if (outputArray.length > 1) {
65
- if (!outputArray[1].denominator) {
66
- output += asTex ? " \\cdot " : "*";
67
- }
68
- }
69
- else {
70
- output += asTex ? " \\cdot " : "*";
71
- }
72
- }
73
- }
74
- }
75
- }
76
- }
77
- return output;
78
- }
79
- // opposed(): ExpressionMember {
80
- // let firstMember = this.factors[0]
81
- //
82
- // if (firstMember === undefined) {
83
- // return this
84
- // }
85
- //
86
- // if (firstMember instanceof ExpFactorNumber) {
87
- // if (firstMember.hasPower() || firstMember.hasRoot()) {
88
- // this.factors.unshift(new ExpFactorNumber(-1))
89
- // } else {
90
- // firstMember.number = -firstMember.number
91
- // }
92
- // } else {
93
- // this.factors.unshift(new ExpFactorNumber(-1))
94
- // }
95
- //
96
- // return this
97
- // }
98
- add(value) {
99
- this._factors.push(value);
100
- return this;
101
- }
102
- addFactors(...values) {
103
- for (let value of values) {
104
- this._factors.push(value);
105
- }
106
- return this;
107
- }
108
- isZero() {
109
- if (this._factors.length === 0) {
110
- return true;
111
- }
112
- for (let factor of this._factors) {
113
- if (factor.isZero()) {
114
- return true;
115
- }
116
- }
117
- return false;
118
- }
119
- hasVariable(variable) {
120
- if (variable === undefined) {
121
- return !this.isNumeric();
122
- }
123
- for (let factor of this._factors) {
124
- if (factor.hasVariable(variable)) {
125
- return true;
126
- }
127
- }
128
- return false;
129
- }
130
- isNumeric() {
131
- for (let factor of this._factors) {
132
- if (factor instanceof internals_1.ExpFactorVariable) {
133
- return false;
134
- }
135
- }
136
- return true;
137
- }
138
- /**
139
- * Returns the "coefficient", ie a member with only numeric values factors.
140
- */
141
- coefficient() {
142
- let EM = new ExpressionMember();
143
- for (let factor of this.factors) {
144
- if (factor.isNumeric()) {
145
- EM.add(factor);
146
- }
147
- }
148
- return EM;
149
- }
150
- /**
151
- * Returns a member with all factors containing a literal part.
152
- */
153
- literal() {
154
- let EM = new ExpressionMember();
155
- for (let factor of this.factors) {
156
- if (!factor.isNumeric()) {
157
- EM.add(factor);
158
- }
159
- }
160
- return EM;
161
- }
162
- similarTo(member) {
163
- // TODO: identify two "similar" member, ie with the same literal parts.
164
- return true;
165
- }
166
- reduce() {
167
- // Merge all ExpFactorNumbers that are number
168
- let numerator = new internals_1.ExpFactorNumber(1), denominator = new internals_1.ExpFactorNumber(1, -1), literal = [];
169
- for (let factor of this.factors) {
170
- // Reduce the factor
171
- factor.reduce();
172
- if (factor instanceof internals_1.ExpFactorNumber && factor.root === 1) {
173
- if (factor.power > 0) {
174
- numerator.number = numerator.number * (factor.number ** factor.power);
175
- }
176
- else {
177
- denominator.number = denominator.number * (factor.number ** (-factor.power));
178
- }
179
- }
180
- else {
181
- literal.push(factor);
182
- }
183
- }
184
- let EM = new ExpressionMember();
185
- // There is a numerator
186
- if (numerator.number !== 1) {
187
- EM.addFactors(numerator);
188
- }
189
- // No denominator.
190
- if (denominator.number !== 1) {
191
- EM.addFactors(denominator);
192
- }
193
- // Add the other factors
194
- EM.addFactors(...literal);
195
- return EM;
196
- }
197
- }
198
- exports.ExpressionMember = ExpressionMember;
199
- //# sourceMappingURL=expressionMember.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expressionMember.js","sourceRoot":"","sources":["../../../src/maths/expressions/expressionMember.ts"],"names":[],"mappings":"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"}