pimath 0.0.69 → 0.0.72

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 (69) hide show
  1. package/.idea/misc.xml +0 -5
  2. package/dist/pi.js +18 -1
  3. package/dist/pi.js.map +1 -1
  4. package/dist/pi.min.js +1 -1
  5. package/dist/pi.min.js.map +1 -1
  6. package/esm/maths/algebra/polynom.js +1 -1
  7. package/esm/maths/algebra/polynom.js.map +1 -1
  8. package/esm/maths/coefficients/fraction.d.ts +2 -0
  9. package/esm/maths/coefficients/fraction.js +14 -0
  10. package/esm/maths/coefficients/fraction.js.map +1 -1
  11. package/esm/maths/expressions/expression.d.ts +6 -0
  12. package/esm/maths/expressions/expression.js +79 -1
  13. package/esm/maths/expressions/expression.js.map +1 -1
  14. package/esm/maths/expressions/expressionFactor.d.ts +8 -1
  15. package/esm/maths/expressions/expressionFactor.js +51 -4
  16. package/esm/maths/expressions/expressionFactor.js.map +1 -1
  17. package/esm/maths/expressions/expressionMember.d.ts +12 -1
  18. package/esm/maths/expressions/expressionMember.js +128 -19
  19. package/esm/maths/expressions/expressionMember.js.map +1 -1
  20. package/esm/maths/expressions/expressionParser.d.ts +2 -0
  21. package/esm/maths/expressions/expressionParser.js +74 -34
  22. package/esm/maths/expressions/expressionParser.js.map +1 -1
  23. package/esm/maths/expressions/factors/ExpFactor.d.ts +2 -2
  24. package/esm/maths/expressions/factors/ExpFactor.js +15 -3
  25. package/esm/maths/expressions/factors/ExpFactor.js.map +1 -1
  26. package/esm/maths/expressions/factors/ExpFactorConstant.d.ts +1 -0
  27. package/esm/maths/expressions/factors/ExpFactorConstant.js +3 -0
  28. package/esm/maths/expressions/factors/ExpFactorConstant.js.map +1 -1
  29. package/esm/maths/expressions/factors/ExpFactorExponential.d.ts +1 -0
  30. package/esm/maths/expressions/factors/ExpFactorExponential.js +4 -0
  31. package/esm/maths/expressions/factors/ExpFactorExponential.js.map +1 -1
  32. package/esm/maths/expressions/factors/ExpFactorNumber.d.ts +3 -2
  33. package/esm/maths/expressions/factors/ExpFactorNumber.js +23 -0
  34. package/esm/maths/expressions/factors/ExpFactorNumber.js.map +1 -1
  35. package/esm/maths/expressions/factors/ExpFactorPower.d.ts +5 -1
  36. package/esm/maths/expressions/factors/ExpFactorPower.js +15 -2
  37. package/esm/maths/expressions/factors/ExpFactorPower.js.map +1 -1
  38. package/esm/maths/expressions/factors/ExpFactorTrigo.d.ts +1 -0
  39. package/esm/maths/expressions/factors/ExpFactorTrigo.js +8 -0
  40. package/esm/maths/expressions/factors/ExpFactorTrigo.js.map +1 -1
  41. package/esm/maths/expressions/factors/ExpFactorVariable.d.ts +1 -0
  42. package/esm/maths/expressions/factors/ExpFactorVariable.js +3 -0
  43. package/esm/maths/expressions/factors/ExpFactorVariable.js.map +1 -1
  44. package/esm/maths/expressions/polynomexp.bkp.js +0 -1
  45. package/esm/maths/expressions/polynomexp.bkp.js.map +1 -1
  46. package/esm/maths/shutingyard.js +3 -0
  47. package/esm/maths/shutingyard.js.map +1 -1
  48. package/package.json +1 -1
  49. package/src/maths/algebra/polynom.ts +1 -1
  50. package/src/maths/coefficients/fraction.ts +17 -0
  51. package/src/maths/expressions/expression.ts +115 -20
  52. package/src/maths/expressions/expressionFactor.ts +59 -7
  53. package/src/maths/expressions/expressionMember.ts +141 -22
  54. package/src/maths/expressions/expressionParser.ts +79 -33
  55. package/src/maths/expressions/factors/ExpFactor.ts +19 -6
  56. package/src/maths/expressions/factors/ExpFactorConstant.ts +4 -0
  57. package/src/maths/expressions/factors/ExpFactorExponential.ts +7 -0
  58. package/src/maths/expressions/factors/ExpFactorNumber.ts +32 -4
  59. package/src/maths/expressions/factors/ExpFactorPower.ts +21 -3
  60. package/src/maths/expressions/factors/ExpFactorTrigo.ts +10 -1
  61. package/src/maths/expressions/factors/ExpFactorVariable.ts +5 -0
  62. package/src/maths/expressions/polynomexp.bkp.ts +0 -1
  63. package/src/maths/shutingyard.ts +4 -1
  64. package/tests/coefficients/fraction.test.ts +11 -0
  65. package/tests/expressions/expressions.test.ts +24 -3
  66. package/tests/geometry/circle.test.ts +6 -0
  67. package/esm/maths/expressions/factors/ExpFactorSin.d.ts +0 -7
  68. package/esm/maths/expressions/factors/ExpFactorSin.js +0 -22
  69. package/esm/maths/expressions/factors/ExpFactorSin.js.map +0 -1
@@ -7,10 +7,21 @@ export declare class ExpressionMember {
7
7
  get numerator(): ExpressionFactor[];
8
8
  get denominator(): ExpressionFactor[];
9
9
  get tex(): string;
10
- opposed(): ExpressionMember;
10
+ get display(): string;
11
+ toString(asTex: boolean): string;
11
12
  add(value: ExpressionFactor): ExpressionMember;
12
13
  addFactors(...values: ExpressionFactor[]): ExpressionMember;
13
14
  isZero(): Boolean;
14
15
  hasVariable(variable?: string): boolean;
15
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;
16
27
  }
@@ -19,32 +19,82 @@ class ExpressionMember {
19
19
  return this._factors.filter(factor => factor.power < 0);
20
20
  }
21
21
  get tex() {
22
- let num = this.numerator, den = this.denominator, numTex = num.map((x, index) => x.makeTeX(num.length, index)), denTex = den.map((x, index) => x.makeTeX(den.length, index));
23
- if (den.length > 0) {
24
- return `\\frac{ ${numTex.join("")} }{ ${denTex.join("")} }`;
25
- }
26
- else {
27
- return numTex.join("");
28
- }
22
+ return this.toString(true);
23
+ }
24
+ get display() {
25
+ return this.toString(false);
29
26
  }
30
- opposed() {
31
- let firstMember = this.factors[0];
32
- if (firstMember === undefined) {
33
- return this;
27
+ toString(asTex) {
28
+ if (asTex === undefined) {
29
+ asTex = true;
34
30
  }
35
- if (firstMember instanceof internals_1.ExpFactorNumber) {
36
- if (firstMember.hasPower() || firstMember.hasRoot()) {
37
- this.factors.unshift(new internals_1.ExpFactorNumber(-1));
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
+ }
38
48
  }
39
49
  else {
40
- firstMember.number = -firstMember.number;
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
+ }
41
75
  }
42
76
  }
43
- else {
44
- this.factors.unshift(new internals_1.ExpFactorNumber(-1));
45
- }
46
- return this;
77
+ return output;
47
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
+ // }
48
98
  add(value) {
49
99
  this._factors.push(value);
50
100
  return this;
@@ -85,6 +135,65 @@ class ExpressionMember {
85
135
  }
86
136
  return true;
87
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
+ }
88
197
  }
89
198
  exports.ExpressionMember = ExpressionMember;
90
199
  //# sourceMappingURL=expressionMember.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expressionMember.js","sourceRoot":"","sources":["../../../src/maths/expressions/expressionMember.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expressionMember.js","sourceRoot":"","sources":["../../../src/maths/expressions/expressionMember.ts"],"names":[],"mappings":"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"}
@@ -9,4 +9,6 @@ export declare class ExpressionParser {
9
9
  private tokenOperationDivide;
10
10
  private tokenOperationPower;
11
11
  private tokenOperationMinus;
12
+ private tokenOperationSqrt;
13
+ private tokenOperationRoot;
12
14
  }
@@ -60,29 +60,10 @@ class ExpressionParser {
60
60
  case internals_1.ShutingyardType.FUNCTION:
61
61
  let a = stack.pop();
62
62
  if (item.token === 'sqrt') {
63
- let b = stack.pop();
64
- // Transform the argument to expression
65
- if (!(a instanceof internals_1.Expression)) {
66
- a = new internals_1.Expression(a);
67
- }
68
- stack.push(new internals_1.ExpFactor(a, 1, 2));
63
+ stack.push(this.tokenOperationSqrt(a));
69
64
  }
70
65
  else if (item.token === 'nthrt') {
71
- // TODO: suppose it's a number
72
- let b = stack.pop();
73
- // Transform the argument to expression
74
- if (!(b instanceof internals_1.Expression)) {
75
- b = new internals_1.Expression(b);
76
- }
77
- // the "a" value is the nth root. It must be a number
78
- let n = 2;
79
- if (a instanceof internals_1.ExpFactorNumber) {
80
- n = a.number;
81
- }
82
- else {
83
- throw "The nth root value must be a number, not " + a.tex;
84
- }
85
- stack.push(new internals_1.ExpFactor(b, 1, n));
66
+ stack.push(this.tokenOperationRoot(a, stack.pop()));
86
67
  }
87
68
  else if (item.token in internals_1.TRIGONOMETRIC) {
88
69
  if (!(a instanceof internals_1.Expression)) {
@@ -126,49 +107,58 @@ class ExpressionParser {
126
107
  return a.add(b);
127
108
  }
128
109
  tokenOperationMultiply(a, b) {
110
+ let EM = new internals_1.ExpressionMember();
129
111
  if (a instanceof internals_1.Expression) {
130
- a = new internals_1.ExpFactor(a);
112
+ EM.addFactors(new internals_1.ExpFactor(a));
113
+ // a = new ExpFactor(a)
131
114
  }
132
115
  else if (a instanceof internals_1.ExpressionMember) {
133
- a = new internals_1.ExpFactor(new internals_1.Expression(a));
116
+ // a.add()
117
+ EM.addFactors(...a.factors);
118
+ // a = new ExpFactor(new Expression(a))
134
119
  }
135
120
  else if (a instanceof internals_1.ExpressionFactor) {
136
121
  // Do nothing
122
+ EM.addFactors(a);
137
123
  }
138
124
  if (b instanceof internals_1.Expression) {
139
- b = new internals_1.ExpFactor(b);
125
+ // b = new ExpFactor(b)
126
+ EM.addFactors(new internals_1.ExpFactor(b));
140
127
  }
141
128
  else if (b instanceof internals_1.ExpressionMember) {
142
- b = new internals_1.ExpFactor(new internals_1.Expression(b));
129
+ // b = new ExpFactor(new Expression(b))
130
+ EM.addFactors(...b.factors);
143
131
  }
144
132
  else if (b instanceof internals_1.ExpressionFactor) {
145
133
  // Do nothing
134
+ EM.addFactors(b);
146
135
  }
147
- // a and b are ExpressionFactors - multiply them
148
- return new internals_1.ExpressionMember(a, b);
136
+ return EM;
149
137
  }
150
138
  tokenOperationDivide(a, b) {
139
+ let EM = new internals_1.ExpressionMember();
151
140
  if (a instanceof internals_1.Expression) {
152
- a = new internals_1.ExpFactor(a);
141
+ EM.addFactors(new internals_1.ExpFactor(a));
153
142
  }
154
143
  else if (a instanceof internals_1.ExpressionMember) {
155
- a = new internals_1.ExpFactor(new internals_1.Expression(a));
144
+ EM.addFactors(...a.factors);
156
145
  }
157
146
  else if (a instanceof internals_1.ExpressionFactor) {
158
147
  // Do nothing
148
+ EM.addFactors(a);
159
149
  }
160
150
  if (b instanceof internals_1.Expression) {
161
- b = new internals_1.ExpFactor(b, -1);
151
+ EM.addFactors(new internals_1.ExpFactor(b, -1));
162
152
  }
163
153
  else if (b instanceof internals_1.ExpressionMember) {
164
- b = new internals_1.ExpFactor(new internals_1.Expression(b), -1);
154
+ EM.addFactors(new internals_1.ExpFactor(new internals_1.Expression(b), -1));
165
155
  }
166
156
  else if (b instanceof internals_1.ExpressionFactor) {
167
157
  // Do nothing
168
158
  b.power = -b.power;
159
+ EM.addFactors(b);
169
160
  }
170
- // a and b are ExpressionFactors - multiply them
171
- return new internals_1.ExpressionMember(a, b);
161
+ return EM;
172
162
  }
173
163
  tokenOperationPower(a, b) {
174
164
  if (a instanceof internals_1.Expression) {
@@ -179,7 +169,14 @@ class ExpressionParser {
179
169
  }
180
170
  else if (a instanceof internals_1.ExpressionFactor) {
181
171
  // Make a new factor of itself
182
- a = new internals_1.Expression(new internals_1.ExpressionMember(a));
172
+ console.log(a);
173
+ if (a.power === 1 && b instanceof internals_1.ExpFactorNumber) {
174
+ a.power = b.value;
175
+ return a;
176
+ }
177
+ else {
178
+ a = new internals_1.Expression(new internals_1.ExpressionMember(a));
179
+ }
183
180
  }
184
181
  // b can be :
185
182
  // number 3
@@ -214,6 +211,49 @@ class ExpressionParser {
214
211
  }
215
212
  return a.subtract(b);
216
213
  }
214
+ tokenOperationSqrt(a) {
215
+ // Transform the argument to expression
216
+ if (a instanceof internals_1.Expression) {
217
+ return new internals_1.ExpFactor(a, 1, 2);
218
+ }
219
+ else if (a instanceof internals_1.ExpressionMember) {
220
+ if (a.factors.length === 1 && !a.factors[0].hasPower()) {
221
+ a.factors[0].root = 2;
222
+ return a.factors[0];
223
+ }
224
+ else {
225
+ return new internals_1.ExpFactor(new internals_1.Expression(a), 1, 2);
226
+ }
227
+ }
228
+ else if (a instanceof internals_1.ExpressionFactor) {
229
+ if (!a.hasPower()) {
230
+ a.root = 2;
231
+ return a;
232
+ }
233
+ else {
234
+ return new internals_1.ExpFactor(new internals_1.Expression(a), 1, 2);
235
+ }
236
+ }
237
+ // Fallback
238
+ return a;
239
+ }
240
+ tokenOperationRoot(a, b) {
241
+ // a is the power
242
+ // b is the argument
243
+ // Transform the argument to expression
244
+ if (!(b instanceof internals_1.Expression)) {
245
+ b = new internals_1.Expression(b);
246
+ }
247
+ // the "a" value is the nth root. It must be a number
248
+ let n = 2;
249
+ if (a instanceof internals_1.ExpFactorNumber) {
250
+ n = a.number;
251
+ }
252
+ else {
253
+ throw "The nth root value must be a number, not " + a.tex;
254
+ }
255
+ return new internals_1.ExpFactor(b, 1, n);
256
+ }
217
257
  }
218
258
  exports.ExpressionParser = ExpressionParser;
219
259
  //# sourceMappingURL=expressionParser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expressionParser.js","sourceRoot":"","sources":["../../../src/maths/expressions/expressionParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expressionParser.js","sourceRoot":"","sources":["../../../src/maths/expressions/expressionParser.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { Expression } from "../internals";
2
- import { ExpressionFactor } from "../internals";
1
+ import { Expression, ExpressionFactor } from "../internals";
3
2
  export declare class ExpFactor extends ExpressionFactor {
4
3
  derivative(variable: string): Expression;
5
4
  integrate(variable: string): Expression;
6
5
  makeTeX(numberOfFactors?: number, position?: number): string;
6
+ makeDisplay(numberOfFactors?: number, position?: number): string;
7
7
  }
@@ -10,12 +10,24 @@ class ExpFactor extends internals_1.ExpressionFactor {
10
10
  return undefined;
11
11
  }
12
12
  makeTeX(numberOfFactors, position) {
13
- // If there is a root value, no need to make further checks
14
13
  // TODO: no need to wrap if it's single ?
15
14
  if (this.hasRoot() || this.hasPower()) {
16
- return this.texPower(this.texRoot(this.wrapWithParentheses(this.argument.tex)));
15
+ return this.texPower(this.texRoot(this.argument.tex
16
+ // this.wrapWithParentheses(this.argument.tex)
17
+ ));
17
18
  }
18
- return this.argument.isFactor() ? this.argument.tex : this.wrapWithParentheses(this.argument.tex);
19
+ if (numberOfFactors === 1) {
20
+ return this.argument.tex;
21
+ }
22
+ else {
23
+ return this.argument.isFactor() ? this.argument.tex : this.wrapWithParentheses(this.argument.tex);
24
+ }
25
+ }
26
+ makeDisplay(numberOfFactors, position) {
27
+ if (this.hasRoot() || this.hasPower()) {
28
+ return this.displayPower(this.texRoot(this.wrapWithParentheses(this.argument.display, false)));
29
+ }
30
+ return this.argument.isFactor() ? this.argument.display : this.wrapWithParentheses(this.argument.display);
19
31
  }
20
32
  }
21
33
  exports.ExpFactor = ExpFactor;
@@ -1 +1 @@
1
- {"version":3,"file":"ExpFactor.js","sourceRoot":"","sources":["../../../../src/maths/expressions/factors/ExpFactor.ts"],"names":[],"mappings":";;;AACA,4CAA8C;AAG9C,MAAa,SAAU,SAAQ,4BAAgB;IAE3C,UAAU,CAAC,QAAgB;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,QAAgB;QACtB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,eAAwB,EAAE,QAAiB;QAC/C,2DAA2D;QAC3D,yCAAyC;QACzC,IAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAC;YACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAC7B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC9C,CAAC,CAAA;SACL;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAA,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IACpG,CAAC;CACJ;AArBD,8BAqBC"}
1
+ {"version":3,"file":"ExpFactor.js","sourceRoot":"","sources":["../../../../src/maths/expressions/factors/ExpFactor.ts"],"names":[],"mappings":";;;AAAA,4CAA0D;AAG1D,MAAa,SAAU,SAAQ,4BAAgB;IAE3C,UAAU,CAAC,QAAgB;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,QAAgB;QACtB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,eAAwB,EAAE,QAAiB;QAC/C,yCAAyC;QACzC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG;YACjB,8CAA8C;aACjD,CAAC,CAAA;SACL;QAED,IAAI,eAAe,KAAK,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAA;SAC3B;aAAM;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;SACpG;IACL,CAAC;IAED,WAAW,CAAC,eAAwB,EAAE,QAAiB;QACnD,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CACjC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CACzD,CAAC,CAAA;SACL;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC7G,CAAC;CACJ;AAnCD,8BAmCC"}
@@ -10,4 +10,5 @@ export declare class ExpFactorConstant extends ExpressionFactor {
10
10
  derivative(variable: string): Expression;
11
11
  integrate(variable: string): Expression;
12
12
  hasVariable(variable?: string): boolean;
13
+ makeDisplay(numberOfFactors?: number, position?: number): string;
13
14
  }
@@ -44,6 +44,9 @@ class ExpFactorConstant extends internals_1.ExpressionFactor {
44
44
  hasVariable(variable) {
45
45
  return false;
46
46
  }
47
+ makeDisplay(numberOfFactors, position) {
48
+ return this._constant;
49
+ }
47
50
  }
48
51
  exports.ExpFactorConstant = ExpFactorConstant;
49
52
  //# sourceMappingURL=ExpFactorConstant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpFactorConstant.js","sourceRoot":"","sources":["../../../../src/maths/expressions/factors/ExpFactorConstant.ts"],"names":[],"mappings":";;;AACA,4CAA8C;AAE9C,MAAa,iBAAkB,SAAQ,4BAAgB;IAGnD,YAAY,KAAa,EAAE,KAAc,EAAE,IAAa;QACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,MAAM,cAAc,KAAK,wBAAwB,CAAA;SACpD;QAED,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAEzB,IAAI,CAAC,kBAAkB,GAAG;YACtB,IAAI,EAAE;gBACF,KAAK,EAAE,IAAI,CAAC,EAAE;gBACd,GAAG,EAAE,MAAM;aACd;YACD,GAAG,EAAE;gBACD,KAAK,EAAE,IAAI,CAAC,CAAC;gBACb,GAAG,EAAE,WAAW;aACnB;YACD,KAAK,EAAE;gBACH,KAAK,EAAE,CAAC,CAAC,GAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC;gBAC1B,GAAG,EAAE,OAAO;aACf;SACJ,CAAA;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IAC1B,CAAC;IAED,IAAI,KAAK;QACL,uBAAuB;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAA;IACzB,CAAC;IACD,OAAO;QACH,IAAI,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAA;QACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,UAAU,CAAC,QAAgB;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,QAAgB;QACtB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,WAAW,CAAC,QAAiB;QACzB,OAAO,KAAK,CAAA;IAChB,CAAC;CACJ;AApDD,8CAoDC"}
1
+ {"version":3,"file":"ExpFactorConstant.js","sourceRoot":"","sources":["../../../../src/maths/expressions/factors/ExpFactorConstant.ts"],"names":[],"mappings":";;;AACA,4CAA8C;AAE9C,MAAa,iBAAkB,SAAQ,4BAAgB;IAGnD,YAAY,KAAa,EAAE,KAAc,EAAE,IAAa;QACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,MAAM,cAAc,KAAK,wBAAwB,CAAA;SACpD;QAED,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAEzB,IAAI,CAAC,kBAAkB,GAAG;YACtB,IAAI,EAAE;gBACF,KAAK,EAAE,IAAI,CAAC,EAAE;gBACd,GAAG,EAAE,MAAM;aACd;YACD,GAAG,EAAE;gBACD,KAAK,EAAE,IAAI,CAAC,CAAC;gBACb,GAAG,EAAE,WAAW;aACnB;YACD,KAAK,EAAE;gBACH,KAAK,EAAE,CAAC,CAAC,GAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC;gBAC1B,GAAG,EAAE,OAAO;aACf;SACJ,CAAA;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IAC1B,CAAC;IAED,IAAI,KAAK;QACL,uBAAuB;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAA;IACzB,CAAC;IACD,OAAO;QACH,IAAI,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAA;QACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,UAAU,CAAC,QAAgB;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,QAAgB;QACtB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,WAAW,CAAC,QAAiB;QACzB,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,WAAW,CAAC,eAAwB,EAAE,QAAiB;QACnD,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;CACJ;AAxDD,8CAwDC"}
@@ -4,4 +4,5 @@ export declare class ExpFactorExponential extends ExpressionFactor {
4
4
  derivative(variable: string): Expression;
5
5
  integrate(variable: string): Expression;
6
6
  makeTeX(): string;
7
+ makeDisplay(numberOfFactors?: number, position?: number): string;
7
8
  }
@@ -13,6 +13,10 @@ class ExpFactorExponential extends internals_1.ExpressionFactor {
13
13
  let tex = `\\text{e}^{ ${this.argument.tex} }`;
14
14
  return this.texPowerAndRoot(tex);
15
15
  }
16
+ makeDisplay(numberOfFactors, position) {
17
+ let display = `e^( ${this.argument.tex} )`;
18
+ return this.displayPowerAndRoot(display);
19
+ }
16
20
  }
17
21
  exports.ExpFactorExponential = ExpFactorExponential;
18
22
  //# sourceMappingURL=ExpFactorExponential.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpFactorExponential.js","sourceRoot":"","sources":["../../../../src/maths/expressions/factors/ExpFactorExponential.ts"],"names":[],"mappings":";;;AACA,4CAA8C;AAE9C,MAAa,oBAAqB,SAAQ,4BAAgB;IAEtD,UAAU,CAAC,QAAgB;QACvB,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,SAAS,CAAC,QAAgB;QACtB,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,OAAO;QACH,IAAI,GAAG,GAAW,eAAgB,IAAI,CAAC,QAAQ,CAAC,GAAI,IAAI,CAAA;QAExD,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;CACJ;AAfD,oDAeC"}
1
+ {"version":3,"file":"ExpFactorExponential.js","sourceRoot":"","sources":["../../../../src/maths/expressions/factors/ExpFactorExponential.ts"],"names":[],"mappings":";;;AACA,4CAA8C;AAE9C,MAAa,oBAAqB,SAAQ,4BAAgB;IAEtD,UAAU,CAAC,QAAgB;QACvB,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,SAAS,CAAC,QAAgB;QACtB,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,OAAO;QACH,IAAI,GAAG,GAAW,eAAgB,IAAI,CAAC,QAAQ,CAAC,GAAI,IAAI,CAAA;QAExD,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED,WAAW,CAAC,eAAwB,EAAE,QAAiB;QACnD,IAAI,OAAO,GAAW,OAAQ,IAAI,CAAC,QAAQ,CAAC,GAAI,IAAI,CAAA;QAEpD,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;CAEJ;AAtBD,oDAsBC"}
@@ -1,5 +1,4 @@
1
- import { Expression } from "../internals";
2
- import { ExpressionFactor } from "../internals";
1
+ import { Expression, ExpressionFactor } from "../internals";
3
2
  export declare class ExpFactorNumber extends ExpressionFactor {
4
3
  private _number;
5
4
  constructor(value: number, power?: number, root?: number);
@@ -7,7 +6,9 @@ export declare class ExpFactorNumber extends ExpressionFactor {
7
6
  get number(): number;
8
7
  set number(value: number);
9
8
  makeTeX(): string;
9
+ makeDisplay(numberOfFactors?: number, position?: number): string;
10
10
  derivative(variable: string): Expression;
11
11
  integrate(variable: string): Expression;
12
12
  hasVariable(variable?: string): boolean;
13
+ reduce(): ExpressionFactor;
13
14
  }
@@ -22,6 +22,9 @@ class ExpFactorNumber extends internals_1.ExpressionFactor {
22
22
  makeTeX() {
23
23
  return this.texPower(this.texRoot(this._number.toString()));
24
24
  }
25
+ makeDisplay(numberOfFactors, position) {
26
+ return this.displayPower(this.displayRoot(this._number.toString()));
27
+ }
25
28
  derivative(variable) {
26
29
  return undefined;
27
30
  }
@@ -31,6 +34,26 @@ class ExpFactorNumber extends internals_1.ExpressionFactor {
31
34
  hasVariable(variable) {
32
35
  return false;
33
36
  }
37
+ reduce() {
38
+ // Reduce the power / root value
39
+ super.reduce();
40
+ if (this.power > 1) {
41
+ this.number = this.number ** this.power;
42
+ this.power = 1;
43
+ }
44
+ if (this.power < -1) {
45
+ this.number = this.number ** (-this.power);
46
+ this.power = -1;
47
+ }
48
+ if (this.root > 1) {
49
+ // Maybe it's a perfect root ?
50
+ if (Number.isSafeInteger(Math.pow(this.number, 1 / this.root))) {
51
+ this.number = Math.pow(this.number, 1 / this.root);
52
+ this.root = 1;
53
+ }
54
+ }
55
+ return this;
56
+ }
34
57
  }
35
58
  exports.ExpFactorNumber = ExpFactorNumber;
36
59
  //# sourceMappingURL=ExpFactorNumber.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpFactorNumber.js","sourceRoot":"","sources":["../../../../src/maths/expressions/factors/ExpFactorNumber.ts"],"names":[],"mappings":";;;AACA,4CAA8C;AAE9C,MAAa,eAAgB,SAAQ,4BAAgB;IAEjD,YAAY,KAAa,EAAE,KAAc,EAAE,IAAa;QACpD,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAEzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,MAAM,cAAc,KAAK,wBAAwB,CAAA;SACpD;QAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACxB,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,GAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAA;IACvB,CAAC;IAGD,IAAI,MAAM,CAAC,KAAa;QACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,UAAU,CAAC,QAAgB;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,QAAgB;QACtB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,WAAW,CAAC,QAAiB;QACzB,OAAO,KAAK,CAAA;IAChB,CAAC;CACJ;AAxCD,0CAwCC"}
1
+ {"version":3,"file":"ExpFactorNumber.js","sourceRoot":"","sources":["../../../../src/maths/expressions/factors/ExpFactorNumber.ts"],"names":[],"mappings":";;;AAAA,4CAA0D;AAE1D,MAAa,eAAgB,SAAQ,4BAAgB;IAGjD,YAAY,KAAa,EAAE,KAAc,EAAE,IAAa;QACpD,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAEzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,MAAM,cAAc,KAAK,wBAAwB,CAAA;SACpD;QAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACxB,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAA;IACvB,CAAC;IAGD,IAAI,MAAM,CAAC,KAAa;QACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,WAAW,CAAC,eAAwB,EAAE,QAAiB;QACnD,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IACvE,CAAC;IAED,UAAU,CAAC,QAAgB;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,QAAgB;QACtB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,WAAW,CAAC,QAAiB;QACzB,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,MAAM;QACF,gCAAgC;QAChC,KAAK,CAAC,MAAM,EAAE,CAAA;QAEd,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAA;YACvC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;SACjB;QACD,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;SAClB;QAED,IAAG,IAAI,CAAC,IAAI,GAAC,CAAC,EAAC;YACX,8BAA8B;YAC9B,IAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC;gBACxD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAChD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;aAChB;SACJ;QAED,OAAO,IAAI,CAAA;IACf,CAAC;CACJ;AArED,0CAqEC"}
@@ -1,9 +1,13 @@
1
1
  import { Expression } from "../internals";
2
2
  import { ExpressionFactor } from "../internals";
3
3
  export declare class ExpFactorPower extends ExpressionFactor {
4
- private powerArgument;
4
+ get powerArgument(): Expression;
5
+ set powerArgument(value: Expression);
6
+ private _powerArgument;
5
7
  constructor(radical: Expression, power: Expression, power2?: number, root?: number);
6
8
  derivative(variable: string): Expression;
7
9
  integrate(variable: string): Expression;
8
10
  makeTeX(): string;
11
+ getArguments(): Expression[];
12
+ makeDisplay(numberOfFactors?: number, position?: number): string;
9
13
  }
@@ -5,7 +5,13 @@ const internals_1 = require("../internals");
5
5
  class ExpFactorPower extends internals_1.ExpressionFactor {
6
6
  constructor(radical, power, power2, root) {
7
7
  super(radical, power2, root);
8
- this.powerArgument = power;
8
+ this._powerArgument = power;
9
+ }
10
+ get powerArgument() {
11
+ return this._powerArgument;
12
+ }
13
+ set powerArgument(value) {
14
+ this._powerArgument = value;
9
15
  }
10
16
  derivative(variable) {
11
17
  return undefined;
@@ -14,9 +20,16 @@ class ExpFactorPower extends internals_1.ExpressionFactor {
14
20
  return undefined;
15
21
  }
16
22
  makeTeX() {
17
- let tex = `{ ${this.argument.tex} }^{ ${this.powerArgument.tex} }`;
23
+ let tex = `{ ${this.argument.tex} }^{ ${this._powerArgument.tex} }`;
18
24
  return this.texPowerAndRoot(this.wrapWithParentheses(tex));
19
25
  }
26
+ getArguments() {
27
+ return [this.argument, this.powerArgument];
28
+ }
29
+ makeDisplay(numberOfFactors, position) {
30
+ let display = `( ${this.argument.display} )^( ${this._powerArgument.display} )`;
31
+ return this.displayPowerAndRoot(this.wrapWithParentheses(display, false));
32
+ }
20
33
  }
21
34
  exports.ExpFactorPower = ExpFactorPower;
22
35
  //# sourceMappingURL=ExpFactorPower.js.map