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,150 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExpressionNode = exports.ExpressionTree = void 0;
4
- const shutingyard_1 = require("../shutingyard");
5
- class ExpressionTree {
6
- constructor(value) {
7
- this._root = this._parse(value);
8
- }
9
- get tex() {
10
- return this._root.tex;
11
- }
12
- print() {
13
- return this._root.print(0, []).join('\n');
14
- }
15
- _parse(value) {
16
- let SY = new shutingyard_1.Shutingyard(shutingyard_1.ShutingyardMode.EXPRESSION).parse(value);
17
- // Store the rpn
18
- this._rpn = SY.rpn;
19
- // Build the tree with nodes.
20
- let stack = [];
21
- for (let item of this._rpn) {
22
- switch (item.tokenType) {
23
- case shutingyard_1.ShutingyardType.COEFFICIENT:
24
- stack.push(new ExpressionNode(item.tokenType, item.token));
25
- break;
26
- case shutingyard_1.ShutingyardType.CONSTANT:
27
- stack.push(new ExpressionNode(item.tokenType, item.token));
28
- break;
29
- case shutingyard_1.ShutingyardType.VARIABLE:
30
- stack.push(new ExpressionNode(item.tokenType, item.token));
31
- break;
32
- case shutingyard_1.ShutingyardType.OPERATION:
33
- if (stack.length >= 2) {
34
- let b = stack.pop(), a = stack.pop();
35
- stack.push(new ExpressionNode(item.token, a, b));
36
- }
37
- break;
38
- case shutingyard_1.ShutingyardType.FUNCTION:
39
- let a = stack.pop();
40
- switch (item.token) {
41
- case 'nthrt':
42
- stack.push(new ExpressionNode(item.token, a, stack.pop()));
43
- break;
44
- default:
45
- stack.push(new ExpressionNode(item.token, a));
46
- }
47
- break;
48
- default:
49
- throw (`Something went wrong while parsing ${value} at ${item.token}`);
50
- }
51
- }
52
- return stack[0];
53
- }
54
- }
55
- exports.ExpressionTree = ExpressionTree;
56
- const operationFunction = ['nthrt'];
57
- const softwrap = ['*', '^', 'sqrt', 'nthrt'];
58
- function TeXit(value, parentheses, soft) {
59
- if (value === undefined) {
60
- return '';
61
- }
62
- if (value === null) {
63
- return '';
64
- }
65
- let addParentheses = parentheses === true;
66
- if (addParentheses) {
67
- if (soft === true) {
68
- if (value instanceof ExpressionNode) {
69
- if (value.isSingle()) {
70
- addParentheses = false;
71
- }
72
- // The current element might not need to be wrapped.
73
- if (softwrap.includes(value.op)) {
74
- addParentheses = false;
75
- }
76
- }
77
- else {
78
- addParentheses = false;
79
- }
80
- }
81
- }
82
- if (value instanceof ExpressionNode) {
83
- return addParentheses === true ? `\\left( ${value.tex} \\right) ` : value.tex;
84
- }
85
- else {
86
- return value;
87
- }
88
- }
89
- class ExpressionNode {
90
- constructor(op, ...children) {
91
- this._op = op;
92
- this._children = children;
93
- }
94
- get op() {
95
- return this._op;
96
- }
97
- get tex() {
98
- let a = this._children[0], b = this._children[1];
99
- switch (this._op) {
100
- case shutingyard_1.ShutingyardType.COEFFICIENT:
101
- case shutingyard_1.ShutingyardType.CONSTANT:
102
- case shutingyard_1.ShutingyardType.VARIABLE:
103
- if (typeof a === "string") {
104
- return a;
105
- }
106
- else {
107
- return '';
108
- }
109
- case '+':
110
- return `${TeXit(a)} ${this._op} ${TeXit(b)}`;
111
- case '-':
112
- return `${TeXit(a)} ${this._op} ${TeXit(b, true, true)}`;
113
- case '*':
114
- return `${TeXit(a, true, true)} \\cdot ${TeXit(b, true, true)}`;
115
- case '/':
116
- return `\\frac{ ${TeXit(a)} }{ ${TeXit(b)} }`;
117
- case '^':
118
- return `${TeXit(a, true)}^{ ${TeXit(b)} }`;
119
- case 'sqrt':
120
- return `\\sqrt{ ${TeXit(a)} }`;
121
- default:
122
- throw (`Something went wrong with ${this._op}`);
123
- }
124
- }
125
- isSingle() {
126
- return this._op === shutingyard_1.ShutingyardType.COEFFICIENT ||
127
- this._op === shutingyard_1.ShutingyardType.VARIABLE ||
128
- this._op === shutingyard_1.ShutingyardType.CONSTANT;
129
- }
130
- print(tab, stack) {
131
- // Tabulation
132
- let tabChr = '';
133
- for (let i = 0; i < tab; i++) {
134
- tabChr += '\t';
135
- }
136
- // Walk through all nodes.
137
- let row = [`${tabChr}${this._op}`];
138
- for (let child of this._children) {
139
- if (child instanceof ExpressionNode) {
140
- row = [...child.print(tab + 1, row)];
141
- }
142
- else {
143
- row[row.length - 1] += ` -> ${child}`;
144
- }
145
- }
146
- return [...stack, ...row];
147
- }
148
- }
149
- exports.ExpressionNode = ExpressionNode;
150
- //# sourceMappingURL=ExpressionTree.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExpressionTree.js","sourceRoot":"","sources":["../../../src/maths/expressions/ExpressionTree.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import { ExpressionFactor, ExpressionMember } from "./internals";
2
- export type ExpressionMemberType = {
3
- member: ExpressionMember;
4
- sign: number;
5
- };
6
- export declare class Expression {
7
- private _members;
8
- constructor(...values: (ExpressionMember | ExpressionFactor | ExpressionMemberType)[]);
9
- get tex(): string;
10
- get display(): string;
11
- get members(): ExpressionMemberType[];
12
- set members(value: ExpressionMemberType[]);
13
- addMembers(...values: (ExpressionMemberType | ExpressionMember | ExpressionFactor)[]): Expression;
14
- add(value: Expression | ExpressionMember | ExpressionFactor): this;
15
- subtract(value: Expression | ExpressionMember | ExpressionFactor): this;
16
- variables(): string[];
17
- isPolynom(): Boolean;
18
- getAllFactors(): ExpressionFactor[];
19
- hasVariable(variable?: string): boolean;
20
- isZero(): boolean;
21
- isNumeric(): boolean;
22
- isNumber(): boolean;
23
- isSingle(): Boolean;
24
- isFactor(): Boolean;
25
- structure(depth?: number): string;
26
- reduce(): Expression;
27
- }
@@ -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
- }