pimath 0.0.124 → 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 (123) 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 +27 -6
  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/randomization/random.d.ts +1 -1
  14. package/esm/maths/randomization/random.js +2 -2
  15. package/esm/maths/randomization/random.js.map +1 -1
  16. package/esm/maths/randomization/rndHelpers.d.ts +1 -1
  17. package/esm/maths/randomization/rndHelpers.js +25 -4
  18. package/esm/maths/randomization/rndHelpers.js.map +1 -1
  19. package/package.json +1 -1
  20. package/src/maths/randomization/random.ts +2 -2
  21. package/src/maths/randomization/rndHelpers.ts +49 -18
  22. package/tests/geometry/circle.test.ts +125 -10
  23. package/tests/numexp.test.ts +10 -2
  24. package/dev/pimath.js +0 -7935
  25. package/dev/pimath.js.map +0 -1
  26. package/docs/.nojekyll +0 -1
  27. package/docs/assets/highlight.css +0 -78
  28. package/docs/assets/main.js +0 -58
  29. package/docs/assets/search.js +0 -1
  30. package/docs/assets/style.css +0 -1367
  31. package/docs/classes/Logicalset.Logicalset.html +0 -221
  32. package/docs/classes/Polynom.Rational.html +0 -391
  33. package/docs/classes/Vector-1.Vector.html +0 -494
  34. package/docs/classes/Vector.Point.html +0 -341
  35. package/docs/classes/algebra_equation.Equation.html +0 -796
  36. package/docs/classes/algebra_linearSystem.LinearSystem.html +0 -408
  37. package/docs/classes/algebra_monom.Monom.html +0 -967
  38. package/docs/classes/algebra_polynom.Polynom.html +0 -1281
  39. package/docs/classes/coefficients_fraction.Fraction.html +0 -939
  40. package/docs/classes/geometry_circle.Circle.html +0 -476
  41. package/docs/classes/geometry_line.Line.html +0 -779
  42. package/docs/classes/geometry_triangle.Triangle.html +0 -429
  43. package/docs/classes/numeric.Numeric.html +0 -269
  44. package/docs/classes/shutingyard.Shutingyard.html +0 -259
  45. package/docs/enums/algebra_equation.PARTICULAR_SOLUTION.html +0 -89
  46. package/docs/enums/geometry_line.LinePropriety.html +0 -102
  47. package/docs/enums/shutingyard.ShutingyardMode.html +0 -106
  48. package/docs/enums/shutingyard.ShutingyardType.html +0 -120
  49. package/docs/index.html +0 -63
  50. package/docs/interfaces/algebra_equation.ISolution.html +0 -111
  51. package/docs/interfaces/algebra_polynom.IEuclidian.html +0 -93
  52. package/docs/interfaces/geometry_triangle.remarquableLines.html +0 -150
  53. package/docs/modules/Logicalset.html +0 -69
  54. package/docs/modules/Polynom.html +0 -69
  55. package/docs/modules/Vector-1.html +0 -69
  56. package/docs/modules/Vector.html +0 -69
  57. package/docs/modules/algebra_equation.html +0 -75
  58. package/docs/modules/algebra_linearSystem.html +0 -65
  59. package/docs/modules/algebra_monom.html +0 -70
  60. package/docs/modules/algebra_polynom.html +0 -75
  61. package/docs/modules/coefficients_fraction.html +0 -70
  62. package/docs/modules/geometry_circle.html +0 -65
  63. package/docs/modules/geometry_line.html +0 -70
  64. package/docs/modules/geometry_triangle.html +0 -70
  65. package/docs/modules/numeric.html +0 -65
  66. package/docs/modules/shutingyard.html +0 -84
  67. package/docs/types/algebra_monom.literalType.html +0 -66
  68. package/docs/types/algebra_polynom.PolynomParsingType.html +0 -62
  69. package/docs/types/coefficients_fraction.FractionParsingType.html +0 -61
  70. package/docs/types/shutingyard.Token.html +0 -72
  71. package/docs/types/shutingyard.tokenType.html +0 -77
  72. package/docs/variables/shutingyard.tokenConstant.html +0 -70
  73. package/esm/maths/expressions/ExpressionTree.d.ts +0 -17
  74. package/esm/maths/expressions/ExpressionTree.js +0 -150
  75. package/esm/maths/expressions/ExpressionTree.js.map +0 -1
  76. package/esm/maths/expressions/expression.d.ts +0 -27
  77. package/esm/maths/expressions/expression.js +0 -239
  78. package/esm/maths/expressions/expression.js.map +0 -1
  79. package/esm/maths/expressions/expressionFactor.d.ts +0 -36
  80. package/esm/maths/expressions/expressionFactor.js +0 -156
  81. package/esm/maths/expressions/expressionFactor.js.map +0 -1
  82. package/esm/maths/expressions/expressionMember.d.ts +0 -27
  83. package/esm/maths/expressions/expressionMember.js +0 -199
  84. package/esm/maths/expressions/expressionMember.js.map +0 -1
  85. package/esm/maths/expressions/expressionOperators.d.ts +0 -8
  86. package/esm/maths/expressions/expressionOperators.js +0 -42
  87. package/esm/maths/expressions/expressionOperators.js.map +0 -1
  88. package/esm/maths/expressions/expressionParser.d.ts +0 -14
  89. package/esm/maths/expressions/expressionParser.js +0 -259
  90. package/esm/maths/expressions/expressionParser.js.map +0 -1
  91. package/esm/maths/expressions/factors/ExpFactor.d.ts +0 -7
  92. package/esm/maths/expressions/factors/ExpFactor.js +0 -34
  93. package/esm/maths/expressions/factors/ExpFactor.js.map +0 -1
  94. package/esm/maths/expressions/factors/ExpFactorConstant.d.ts +0 -14
  95. package/esm/maths/expressions/factors/ExpFactorConstant.js +0 -52
  96. package/esm/maths/expressions/factors/ExpFactorConstant.js.map +0 -1
  97. package/esm/maths/expressions/factors/ExpFactorExponential.d.ts +0 -8
  98. package/esm/maths/expressions/factors/ExpFactorExponential.js +0 -22
  99. package/esm/maths/expressions/factors/ExpFactorExponential.js.map +0 -1
  100. package/esm/maths/expressions/factors/ExpFactorNumber.d.ts +0 -14
  101. package/esm/maths/expressions/factors/ExpFactorNumber.js +0 -59
  102. package/esm/maths/expressions/factors/ExpFactorNumber.js.map +0 -1
  103. package/esm/maths/expressions/factors/ExpFactorPower.d.ts +0 -13
  104. package/esm/maths/expressions/factors/ExpFactorPower.js +0 -35
  105. package/esm/maths/expressions/factors/ExpFactorPower.js.map +0 -1
  106. package/esm/maths/expressions/factors/ExpFactorTrigo.d.ts +0 -20
  107. package/esm/maths/expressions/factors/ExpFactorTrigo.js +0 -48
  108. package/esm/maths/expressions/factors/ExpFactorTrigo.js.map +0 -1
  109. package/esm/maths/expressions/factors/ExpFactorVariable.d.ts +0 -13
  110. package/esm/maths/expressions/factors/ExpFactorVariable.js +0 -36
  111. package/esm/maths/expressions/factors/ExpFactorVariable.js.map +0 -1
  112. package/esm/maths/expressions/internals.d.ts +0 -12
  113. package/esm/maths/expressions/internals.js +0 -29
  114. package/esm/maths/expressions/internals.js.map +0 -1
  115. package/esm/maths/expressions/numexp.d.ts +0 -19
  116. package/esm/maths/expressions/numexp.js +0 -186
  117. package/esm/maths/expressions/numexp.js.map +0 -1
  118. package/esm/maths/expressions/polynomexp.bkp.d.ts +0 -33
  119. package/esm/maths/expressions/polynomexp.bkp.js +0 -184
  120. package/esm/maths/expressions/polynomexp.bkp.js.map +0 -1
  121. package/esm/maths/expressions/polynomexp.d.ts +0 -52
  122. package/esm/maths/expressions/polynomexp.js +0 -246
  123. 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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"}