pimath 0.0.32 → 0.0.35

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 (127) hide show
  1. package/dist/pi.js +6537 -1
  2. package/dist/pi.js.map +1 -1
  3. package/dist/pi.min.js +2 -0
  4. package/dist/pi.min.js.map +1 -0
  5. package/docs/assets/search.js +1 -1
  6. package/docs/classes/algebra.Equation.html +9 -9
  7. package/docs/classes/algebra.LinearSystem.html +1 -1
  8. package/docs/classes/algebra.Logicalset.html +2 -2
  9. package/docs/classes/algebra.Monom.html +37 -37
  10. package/docs/classes/algebra.Polynom.html +10 -10
  11. package/docs/classes/algebra.PolynomExpFactor.html +1 -1
  12. package/docs/classes/algebra.PolynomExpProduct.html +1 -1
  13. package/docs/classes/algebra.Rational.html +2 -2
  14. package/docs/classes/coefficients.Fraction.html +4 -4
  15. package/docs/classes/coefficients.Nthroot.html +1 -1
  16. package/docs/classes/geometry.Circle.html +2 -2
  17. package/docs/classes/geometry.Line.html +2 -2
  18. package/docs/classes/geometry.Point.html +1 -1
  19. package/docs/classes/geometry.Triangle.html +5 -5
  20. package/docs/classes/geometry.Vector.html +1 -1
  21. package/docs/classes/numeric.Numeric.html +5 -5
  22. package/docs/classes/shutingyard.Shutingyard.html +4 -4
  23. package/docs/enums/geometry.LinePropriety.html +1 -0
  24. package/docs/enums/shutingyard.ShutingyardMode.html +1 -1
  25. package/docs/enums/shutingyard.ShutingyardType.html +1 -1
  26. package/docs/interfaces/geometry.remarquableLines.html +1 -1
  27. package/docs/modules/algebra.html +1 -1
  28. package/docs/modules/coefficients.html +1 -1
  29. package/docs/modules/geometry.html +1 -1
  30. package/docs/modules/random.Random.html +1 -1
  31. package/docs/modules/random.html +1 -1
  32. package/docs/modules/shutingyard.html +1 -1
  33. package/esm/main.d.ts +30 -1
  34. package/esm/main.js +4 -1
  35. package/esm/main.js.map +1 -1
  36. package/esm/maths/algebra/equation.d.ts +62 -17
  37. package/esm/maths/algebra/equation.js +597 -502
  38. package/esm/maths/algebra/equation.js.map +1 -1
  39. package/esm/maths/algebra/index.js +5 -1
  40. package/esm/maths/algebra/index.js.map +1 -1
  41. package/esm/maths/algebra/linearSystem.js +154 -101
  42. package/esm/maths/algebra/linearSystem.js.map +1 -1
  43. package/esm/maths/algebra/logicalset.d.ts +11 -0
  44. package/esm/maths/algebra/logicalset.js +18 -6
  45. package/esm/maths/algebra/logicalset.js.map +1 -1
  46. package/esm/maths/algebra/monom.d.ts +144 -0
  47. package/esm/maths/algebra/monom.js +626 -398
  48. package/esm/maths/algebra/monom.js.map +1 -1
  49. package/esm/maths/algebra/polynom.d.ts +49 -0
  50. package/esm/maths/algebra/polynom.js +995 -712
  51. package/esm/maths/algebra/polynom.js.map +1 -1
  52. package/esm/maths/algebra/rational.d.ts +12 -0
  53. package/esm/maths/algebra/rational.js +97 -82
  54. package/esm/maths/algebra/rational.js.map +1 -1
  55. package/esm/maths/coefficients/fraction.d.ts +18 -0
  56. package/esm/maths/coefficients/fraction.js +390 -332
  57. package/esm/maths/coefficients/fraction.js.map +1 -1
  58. package/esm/maths/coefficients/index.js +5 -1
  59. package/esm/maths/coefficients/index.js.map +1 -1
  60. package/esm/maths/coefficients/nthroot.d.ts +3 -0
  61. package/esm/maths/coefficients/nthroot.js +48 -33
  62. package/esm/maths/coefficients/nthroot.js.map +1 -1
  63. package/esm/maths/expressions/numexp.js +11 -3
  64. package/esm/maths/expressions/numexp.js.map +1 -1
  65. package/esm/maths/expressions/polynomexp.bkp.js +93 -93
  66. package/esm/maths/expressions/polynomexp.bkp.js.map +1 -1
  67. package/esm/maths/expressions/polynomexp.js +22 -9
  68. package/esm/maths/expressions/polynomexp.js.map +1 -1
  69. package/esm/maths/geometry/circle.d.ts +18 -6
  70. package/esm/maths/geometry/circle.js +139 -42
  71. package/esm/maths/geometry/circle.js.map +1 -1
  72. package/esm/maths/geometry/index.js +5 -1
  73. package/esm/maths/geometry/index.js.map +1 -1
  74. package/esm/maths/geometry/line.d.ts +9 -2
  75. package/esm/maths/geometry/line.js +245 -188
  76. package/esm/maths/geometry/line.js.map +1 -1
  77. package/esm/maths/geometry/point.d.ts +12 -0
  78. package/esm/maths/geometry/point.js +121 -73
  79. package/esm/maths/geometry/point.js.map +1 -1
  80. package/esm/maths/geometry/triangle.d.ts +23 -1
  81. package/esm/maths/geometry/triangle.js +197 -158
  82. package/esm/maths/geometry/triangle.js.map +1 -1
  83. package/esm/maths/geometry/vector.d.ts +5 -1
  84. package/esm/maths/geometry/vector.js +139 -115
  85. package/esm/maths/geometry/vector.js.map +1 -1
  86. package/esm/maths/numeric.d.ts +17 -0
  87. package/esm/maths/numeric.js +40 -0
  88. package/esm/maths/numeric.js.map +1 -1
  89. package/esm/maths/random/index.js +5 -1
  90. package/esm/maths/random/index.js.map +1 -1
  91. package/esm/maths/random/randomCore.js +15 -15
  92. package/esm/maths/random/randomCore.js.map +1 -1
  93. package/esm/maths/random/rndFraction.d.ts +3 -0
  94. package/esm/maths/random/rndFraction.js +19 -16
  95. package/esm/maths/random/rndFraction.js.map +1 -1
  96. package/esm/maths/random/rndHelpers.d.ts +17 -0
  97. package/esm/maths/random/rndHelpers.js +20 -0
  98. package/esm/maths/random/rndHelpers.js.map +1 -1
  99. package/esm/maths/random/rndMonom.d.ts +3 -0
  100. package/esm/maths/random/rndMonom.js +33 -26
  101. package/esm/maths/random/rndMonom.js.map +1 -1
  102. package/esm/maths/random/rndPolynom.d.ts +3 -0
  103. package/esm/maths/random/rndPolynom.js +49 -37
  104. package/esm/maths/random/rndPolynom.js.map +1 -1
  105. package/esm/maths/shutingyard.d.ts +21 -0
  106. package/esm/maths/shutingyard.js +86 -9
  107. package/esm/maths/shutingyard.js.map +1 -1
  108. package/package.json +2 -2
  109. package/public/index.html +47 -0
  110. package/src/main.ts +2 -2
  111. package/src/maths/algebra/equation.ts +142 -128
  112. package/src/maths/algebra/monom.ts +6 -2
  113. package/src/maths/algebra/polynom.ts +2 -7
  114. package/src/maths/geometry/circle.ts +168 -75
  115. package/src/maths/geometry/index.ts +1 -1
  116. package/src/maths/geometry/line.ts +1 -1
  117. package/src/maths/geometry/point.ts +25 -2
  118. package/src/maths/geometry/triangle.ts +1 -1
  119. package/src/maths/geometry/vector.ts +1 -1
  120. package/src/maths/numeric.ts +15 -0
  121. package/tests/algebra/polynom.test.ts +7 -0
  122. package/tests/geometry/circle.test.ts +33 -0
  123. package/tsconfig.json +2 -2
  124. package/webpack-production-min.config.js +26 -0
  125. package/webpack-production.config.js +1 -1
  126. package/dev/pi.js +0 -5392
  127. package/dev/pi.js.map +0 -1
@@ -21,16 +21,27 @@ var ShutingyardMode;
21
21
  ShutingyardMode["NUMERIC"] = "numeric";
22
22
  })(ShutingyardMode = exports.ShutingyardMode || (exports.ShutingyardMode = {}));
23
23
  class Shutingyard {
24
- _rpn = [];
25
- _mode;
26
- _tokenConfig;
27
- _tokenConstant;
28
- _uniformize;
29
- _tokenKeys;
30
24
  constructor(mode) {
25
+ this._rpn = [];
31
26
  this._mode = typeof mode === 'undefined' ? ShutingyardMode.POLYNOM : mode;
32
27
  this.tokenConfigInitialization();
33
28
  }
29
+ /**
30
+ * Determin if the token is a defined operation
31
+ * Defined operations: + - * / ^ sin cos tan
32
+ * @param token
33
+ */
34
+ // isOperation(token: string): boolean {
35
+ // if (token[0].match(/[+\-*/^]/g)) {
36
+ // return true;
37
+ // }
38
+ // //
39
+ // // if (token.match(/^sin|cos|tan/g)) {
40
+ // // return true;
41
+ // // }
42
+ //
43
+ // return false;
44
+ // }
34
45
  tokenConfigInitialization() {
35
46
  if (this._mode === ShutingyardMode.SET) {
36
47
  this._tokenConfig = {
@@ -63,29 +74,45 @@ class Shutingyard {
63
74
  '/': { precedence: 3, associative: 'left', type: ShutingyardType.OPERATION },
64
75
  '+': { precedence: 2, associative: 'left', type: ShutingyardType.OPERATION },
65
76
  '-': { precedence: 2, associative: 'left', type: ShutingyardType.OPERATION },
77
+ // '%': {precedence: 3, associative: 'right', type: ShutingyardType.OPERATION},
78
+ // 'sin': {precedence: 4, associative: 'right', type: ShutingyardType.FUNCTION},
79
+ // 'cos': {precedence: 4, associative: 'right', type: ShutingyardType.FUNCTION},
80
+ // 'tan': {precedence: 4, associative: 'right', type: ShutingyardType.FUNCTION},
66
81
  };
67
82
  this._uniformize = true;
68
83
  }
69
84
  this._tokenKeys = Object.keys(this._tokenConfig).sort((a, b) => b.length - a.length);
70
85
  return this._tokenConfig;
71
86
  }
87
+ /**
88
+ * Get the next token to analyse.
89
+ * @param expr (string) Expression to analyse
90
+ * @param start (number) CUrrent position in the expr string.
91
+ */
72
92
  NextToken(expr, start) {
73
93
  let token, tokenType;
74
94
  token = '';
75
95
  tokenType = '';
96
+ // Case of parenthesis or comma (generic items)
76
97
  if (expr[start] === '(') {
77
98
  token = '(';
78
99
  tokenType = '(';
79
100
  }
101
+ // It's a closing parenthese
80
102
  else if (expr[start] === ')') {
81
103
  token = ')';
82
104
  tokenType = ')';
83
105
  }
106
+ // It's an argument separator for a function
84
107
  else if (expr[start] === ',') {
85
108
  token = ',';
86
109
  tokenType = 'function-argument';
87
110
  }
88
111
  else {
112
+ // Order token keys by token characters length (descending)
113
+ // TODO: this is done each time ! SHould be done once !
114
+ // const keys = Object.keys(this._tokenConfig).sort((a,b)=>b.length-a.length)
115
+ // Extract operation and function tokens
89
116
  for (let key of this._tokenKeys) {
90
117
  if (expr.substring(start, start + key.length) === key) {
91
118
  token += key;
@@ -93,6 +120,7 @@ class Shutingyard {
93
120
  break;
94
121
  }
95
122
  }
123
+ // Extract constant
96
124
  for (let key in exports.tokenConstant) {
97
125
  if (expr.substring(start, start + key.length) === key) {
98
126
  token += key;
@@ -101,6 +129,7 @@ class Shutingyard {
101
129
  }
102
130
  }
103
131
  if (token === '') {
132
+ // No function found ! Might be a coefficient !
104
133
  if (expr[start].match(/[0-9]/)) {
105
134
  if (this._mode === ShutingyardMode.POLYNOM && false) {
106
135
  token = expr.substring(start).match(/^([0-9.,/]+)/)[0];
@@ -123,25 +152,49 @@ class Shutingyard {
123
152
  }
124
153
  return [token, start + token.length, tokenType];
125
154
  }
155
+ /**
156
+ * Sanitize an expression by adding missing common operation (multiplication between parentheseses)
157
+ * @param expr
158
+ * @constructor
159
+ */
126
160
  Uniformizer(expr) {
161
+ // Determiner if need to be uniformized
127
162
  if (!this._uniformize) {
128
163
  return expr;
129
164
  }
130
165
  let expr2;
166
+ // Replace missing multiplication between two parenthese
131
167
  expr2 = expr.replace(/\)\(/g, ')*(');
168
+ // Replace missing multiplication between number or setLetter and parenthese.
169
+ // 3x(x-4) => 3x*(x-4)
132
170
  expr2 = expr2.replace(/([\da-zA-Z])(\()/g, "$1*$2");
171
+ // (x-4)3x => (x-4)*3x
133
172
  expr2 = expr2.replace(/(\))([\da-zA-Z])/g, "$1*$2");
173
+ // Add multiplication between number and letters.
174
+ // 3x => 3*x
134
175
  expr2 = expr2.replace(/([0-9])([a-zA-Z])/g, "$1*$2");
135
176
  expr2 = expr2.replace(/([a-zA-Z])([0-9])/g, "$1*$2");
177
+ // Add multiplication between letters ?
178
+ // TODO: More robust solution to handle all letters ?
136
179
  expr2 = expr2.replace(/([abcxyz])([abcxyz])/g, "$1*$2");
180
+ // Restore operation auto formating (prevent adding the mutliplcation star)
181
+ // TODO: Accept list of functions
137
182
  let fnToken = ['sin', 'cos', 'tan'];
138
183
  for (let token of fnToken) {
139
184
  expr2 = expr2.replace(new RegExp(token + '\\*', 'g'), token);
140
185
  }
141
186
  return expr2;
142
187
  }
188
+ /**
189
+ * Parse an expression using the shutting yard tree algorithms
190
+ * @param expr (string) Expression to analyse
191
+ * Returns a RPN list of items.
192
+ * @param operators
193
+ */
143
194
  parse(expr, operators) {
144
- let outQueue = [], opStack = [], token = '', tokenPos = 0, tokenType = '', previousOpStatckLength = 0;
195
+ let outQueue = [], // Output queue
196
+ opStack = [], // Operation queue
197
+ token = '', tokenPos = 0, tokenType = '', previousOpStatckLength = 0;
145
198
  expr = this.Uniformizer(expr);
146
199
  let securityLoopLvl1 = 50, securityLoopLvl2_default = 50, securityLoopLvl2;
147
200
  while (tokenPos < expr.length) {
@@ -150,6 +203,7 @@ class Shutingyard {
150
203
  console.log('SECURITY LEVEL 1 EXIT');
151
204
  break;
152
205
  }
206
+ // Get the next token and the corresponding new (ending) position
153
207
  [token, tokenPos, tokenType] = this.NextToken(expr, tokenPos);
154
208
  switch (tokenType) {
155
209
  case 'monom':
@@ -160,30 +214,44 @@ class Shutingyard {
160
214
  token,
161
215
  tokenType
162
216
  });
217
+ // if(previousOpStatckLength == opStack.length && outQueue.length>=2){
218
+ // console.log('opStatckLength', outQueue, opStack.length)
219
+ // outQueue.push('*')
220
+ // }
163
221
  break;
164
222
  case 'operation':
165
223
  previousOpStatckLength = opStack.length;
224
+ //If the token is an operator, o1, then:
166
225
  if (opStack.length > 0) {
167
226
  let opTop = opStack[opStack.length - 1];
168
227
  securityLoopLvl2 = +securityLoopLvl2_default;
169
- while (opTop.token in this._tokenConfig && ((this._tokenConfig[token].associative === 'left' && this._tokenConfig[token].precedence <= this._tokenConfig[opTop.token].precedence)
228
+ //while there is an operator token o2, at the top of the operator stack and
229
+ while (opTop.token in this._tokenConfig && (
230
+ //either o1 is left-associative and its precedence is less than or equal to that of o2,
231
+ (this._tokenConfig[token].associative === 'left' && this._tokenConfig[token].precedence <= this._tokenConfig[opTop.token].precedence)
170
232
  ||
233
+ //or o1 is right associative, and has precedence less than that of o2,
171
234
  (this._tokenConfig[token].associative === 'right' && this._tokenConfig[token].precedence < this._tokenConfig[opTop.token].precedence))) {
235
+ /* Security exit ! */
172
236
  securityLoopLvl2--;
173
237
  if (securityLoopLvl2 === 0) {
174
238
  console.log('SECURITY LEVEL 2 OPERATION EXIT');
175
239
  break;
176
240
  }
241
+ // Add the operation to the queue
177
242
  outQueue.push((opStack.pop()) || { token: '', tokenType: 'operation' });
243
+ // Get the next operation on top of the Stack.
178
244
  if (opStack.length === 0) {
179
245
  break;
180
246
  }
181
247
  opTop = opStack[opStack.length - 1];
182
248
  }
183
249
  }
250
+ //at the end of iteration push o1 onto the operator stack
184
251
  opStack.push({ token, tokenType });
185
252
  break;
186
253
  case 'function-argument':
254
+ // TODO: check if the opStack exist.
187
255
  securityLoopLvl2 = +securityLoopLvl2_default;
188
256
  while (opStack[opStack.length - 1].token !== '(' && opStack.length > 0) {
189
257
  securityLoopLvl2--;
@@ -196,13 +264,15 @@ class Shutingyard {
196
264
  break;
197
265
  case '(':
198
266
  opStack.push({ token, tokenType });
267
+ // Add an empty value if next element is negative.
199
268
  if (expr[tokenPos] === '-') {
200
269
  outQueue.push({ token: '0', tokenType: 'coefficient' });
201
270
  }
202
271
  break;
203
272
  case ')':
204
273
  securityLoopLvl2 = +securityLoopLvl2_default;
205
- while (opStack[opStack.length - 1].token !== '(' && opStack.length > 1) {
274
+ //Until the token at the top of the stack is a left parenthesis, pop operators off the stack onto the output queue.
275
+ while (opStack[opStack.length - 1].token !== '(' && opStack.length > 1 /*Maybe zero !? */) {
206
276
  securityLoopLvl2--;
207
277
  if (securityLoopLvl2 === 0) {
208
278
  console.log('SECURITY LEVEL 2 CLOSING PARENTHESE EXIT');
@@ -210,19 +280,26 @@ class Shutingyard {
210
280
  }
211
281
  outQueue.push((opStack.pop()) || { token, tokenType });
212
282
  }
283
+ //Pop the left parenthesis from the stack, but not onto the output queue.
213
284
  opStack.pop();
214
285
  break;
215
286
  case 'function':
216
287
  opStack.push({ token, tokenType });
217
288
  break;
218
289
  default:
290
+ // In theory, everything should be handled.
219
291
  console.log(`SHUTING YARD: ${tokenType} : ${token} `);
220
292
  }
293
+ // Output
294
+ // console.log(outQueue.concat(opStack.reverse()).join(" "));
221
295
  }
296
+ // console.log(outQueue.concat(opStack.reverse()));
222
297
  this._rpn = outQueue.concat(opStack.reverse());
223
298
  return this;
224
299
  }
300
+ // Getter
225
301
  get rpn() {
302
+ // console.log(this._rpn)
226
303
  return this._rpn;
227
304
  }
228
305
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shutingyard.js","sourceRoot":"","sources":["../../src/maths/shutingyard.ts"],"names":[],"mappings":";;;AAWa,QAAA,aAAa,GAAyB;IAC/C,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CACjB,CAAA;AAED,IAAY,eAOX;AAPD,WAAY,eAAe;IACvB,wCAAmB,CAAA;IACnB,8CAAyB,CAAA;IACzB,0CAAuB,CAAA;IACvB,wCAAqB,CAAA;IACrB,wCAAqB,CAAA;IACrB,kCAAe,CAAA;AACnB,CAAC,EAPW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAO1B;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACvB,sCAAkB,CAAA;IAClB,8BAAW,CAAA;IACX,sCAAmB,CAAA;AACvB,CAAC,EAJW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAI1B;AAID,MAAa,WAAW;IACZ,IAAI,GAAY,EAAE,CAAC;IAClB,KAAK,CAAkB;IACxB,YAAY,CAAY;IACxB,cAAc,CAAwB;IACtC,WAAW,CAAU;IACrB,UAAU,CAAU;IAE5B,YAAY,IAAsB;QAC9B,IAAI,CAAC,KAAK,GAAG,OAAO,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1E,IAAI,CAAC,yBAAyB,EAAE,CAAA;IACpC,CAAC;IAmBD,yBAAyB;QACrB,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,GAAG,EAAE;YACpC,IAAI,CAAC,YAAY,GAAG;gBAChB,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;gBAC1E,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;gBAC1E,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;gBAC3E,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;aAC7E,CAAA;YACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC5B;aAAK,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,OAAO,EAAC;YAC7C,IAAI,CAAC,YAAY,GAAG;gBAChB,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;gBAC3E,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;gBAC1E,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;gBAC1E,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;gBAC1E,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;gBAC1E,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;gBAC3E,KAAK,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAC;gBAC5E,KAAK,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAC;gBAC5E,KAAK,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAC;gBAC5E,MAAM,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAC;aAChF,CAAA;YACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;SAC3B;aAAM;YACH,IAAI,CAAC,YAAY,GAAG;gBAChB,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;gBAC3E,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;gBAC1E,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;gBAC1E,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;gBAC1E,GAAG,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,SAAS,EAAC;aAK7E,CAAA;YACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;SAC1B;QAED,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,CAAC,MAAM,GAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAC/E,OAAO,IAAI,CAAC,YAAY,CAAA;IAC5B,CAAC;IAOD,SAAS,CAAC,IAAY,EAAE,KAAa;QACjC,IAAI,KAAa,EAAE,SAAiB,CAAC;QACrC,KAAK,GAAG,EAAE,CAAC;QACX,SAAS,GAAG,EAAE,CAAC;QAEf,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;YACrB,KAAK,GAAG,GAAG,CAAC;YACZ,SAAS,GAAG,GAAG,CAAC;SACnB;aAEI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;YAC1B,KAAK,GAAG,GAAG,CAAC;YACZ,SAAS,GAAG,GAAG,CAAC;SACnB;aAEI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;YAC1B,KAAK,GAAG,GAAG,CAAC;YACZ,SAAS,GAAG,mBAAmB,CAAC;SACnC;aAAK;YAMF,KAAI,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,EAAC;gBAC3B,IAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,EAAC;oBAC/C,KAAK,IAAI,GAAG,CAAC;oBACb,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;oBACvC,MAAK;iBACR;aACJ;YAGD,KAAI,IAAI,GAAG,IAAI,qBAAa,EAAC;gBACzB,IAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,EAAC;oBAC/C,KAAK,IAAI,GAAG,CAAC;oBACb,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAA;oBACpC,MAAK;iBACR;aACJ;YAED,IAAG,KAAK,KAAG,EAAE,EAAC;gBAEV,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAG;oBAC7B,IAAG,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,OAAO,IAAI,KAAK,EAAE;wBAChD,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;qBACzD;yBAAI;wBACD,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;qBACxD;oBACD,SAAS,GAAG,eAAe,CAAC,WAAW,CAAA;iBAC1C;qBAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;oBACrC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;oBACrD,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAA;iBACvC;qBAAI;oBACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;oBAC3D,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;oBACnB,SAAS,GAAG,eAAe,CAAC,KAAK,CAAA;iBACpC;aAEJ;SACJ;QAED,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAOD,WAAW,CAAC,IAAY;QAEpB,IAAG,CAAC,IAAI,CAAC,WAAW,EAAC;YAAC,OAAO,IAAI,CAAA;SAAC;QAElC,IAAI,KAAK,CAAC;QAEV,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAKrC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAGpD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAIpD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QACrD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QAIrD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;QAIxD,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QACnC,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;YACvB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;SAChE;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAQD,KAAK,CAAC,IAAY,EAAE,SAAoB;QACpC,IAAI,QAAQ,GAAwC,EAAE,EAClD,OAAO,GAAwC,EAAE,EACjD,KAAK,GAAW,EAAE,EAClB,QAAQ,GAAW,CAAC,EACpB,SAAS,GAAW,EAAE,EACtB,sBAAsB,GAAG,CAAC,CAAA;QAE9B,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,gBAAgB,GAAG,EAAE,EACrB,wBAAwB,GAAG,EAAE,EAC7B,gBAAgB,CAAC;QAErB,OAAO,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE;YAC3B,gBAAgB,EAAE,CAAC;YACnB,IAAI,gBAAgB,KAAK,CAAC,EAAE;gBACxB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBACrC,MAAM;aACT;YAGD,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAE9D,QAAQ,SAAS,EAAE;gBACf,KAAK,OAAO,CAAC;gBACb,KAAK,aAAa,CAAC;gBACnB,KAAK,UAAU,CAAC;gBAChB,KAAK,UAAU;oBACX,QAAQ,CAAC,IAAI,CAAC;wBACV,KAAK;wBACL,SAAS;qBACZ,CAAC,CAAC;oBAKH,MAAM;gBACV,KAAK,WAAW;oBACZ,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;oBAExC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBACpB,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAGxC,gBAAgB,GAAG,CAAC,wBAAwB,CAAC;wBAG7C,OAAO,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,CAEnC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;;gCAGrI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CACxI,EACC;4BAGF,gBAAgB,EAAE,CAAC;4BACnB,IAAI,gBAAgB,KAAK,CAAC,EAAE;gCACxB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gCAC/C,MAAM;6BACT;4BAGD,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,EAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAC,CAAC,CAAC;4BAGtE,IAAG,OAAO,CAAC,MAAM,KAAG,CAAC,EAAC;gCAAC,MAAM;6BAAC;4BAC9B,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;yBACvC;qBACJ;oBAED,OAAO,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,SAAS,EAAC,CAAC,CAAC;oBAChC,MAAM;gBACV,KAAK,mBAAmB;oBAEpB,gBAAgB,GAAG,CAAC,wBAAwB,CAAC;oBAC7C,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBACpE,gBAAgB,EAAE,CAAC;wBACnB,IAAI,gBAAgB,KAAK,CAAC,EAAE;4BACxB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;4BACvD,MAAM;yBACT;wBAED,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAC,CAAC,CAAC;qBACvD;oBACD,MAAM;gBACV,KAAK,GAAG;oBACJ,OAAO,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,SAAS,EAAC,CAAC,CAAC;oBAEhC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE;wBACxB,QAAQ,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAC,CAAC,CAAC;qBACzD;oBACD,MAAM;gBACV,KAAK,GAAG;oBACJ,gBAAgB,GAAG,CAAC,wBAAwB,CAAC;oBAE7C,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAqB;wBACvF,gBAAgB,EAAE,CAAC;wBACnB,IAAI,gBAAgB,KAAK,CAAC,EAAE;4BACxB,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;4BACxD,MAAM;yBACT;wBAED,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAC,CAAC,CAAC;qBACvD;oBAGD,OAAO,CAAC,GAAG,EAAE,CAAC;oBACd,MAAM;gBACV,KAAK,UAAU;oBACX,OAAO,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC;oBACjC,MAAM;gBACV;oBAEI,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,MAAM,KAAK,GAAG,CAAC,CAAC;aAC7D;SAIJ;QAGD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAE/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAID,IAAI,GAAG;QAEH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CAGJ;AArUD,kCAqUC"}
1
+ {"version":3,"file":"shutingyard.js","sourceRoot":"","sources":["../../src/maths/shutingyard.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "pimath",
3
- "version": "0.0.32",
3
+ "version": "0.0.35",
4
4
  "description": "A math library for teacher :)",
5
5
  "scripts": {
6
6
  "test": "mocha -r ts-node/register 'tests/**/*.test.ts'",
7
7
  "dev": "webpack --watch --config webpack.config.js",
8
- "production": "webpack --config webpack-production.config.js && tsc --build",
8
+ "production": "webpack --config webpack-production.config.js && webpack --config webpack-production-min.config.js && tsc --build",
9
9
  "docs": "typedoc"
10
10
  },
11
11
  "keywords": [
package/public/index.html CHANGED
@@ -38,7 +38,54 @@
38
38
  <div x-html="d"></div>
39
39
  <div x-html="i"></div>
40
40
  </div>
41
+
42
+ <div x-data="triplets">
43
+ <template x-for="(item, index) of tripletsPytha" :key="index">
44
+ <div x-text="item.join(',')"></div>
45
+ </template>
46
+ </div>
41
47
  <script>
48
+ function triplets() {
49
+ let triplets = []
50
+ let n = 9, v
51
+
52
+ for(let u = 2; u<=n; u++){
53
+ v = ( u%2===0 )?1:2
54
+ while(v < u){
55
+ if(Pi.Numeric.gcd(u, v)===1){
56
+ triplets.push([
57
+ u, v,
58
+ u**2-v**2,
59
+ 2*u*v,
60
+ u**2+v**2
61
+ ])
62
+ }
63
+ v = v + 2
64
+ }
65
+ }
66
+
67
+ let target = 13
68
+ // Filtrer les triplets pour n'avoir que les valeurs 15.
69
+ triplets = triplets.filter(x=>x[x.length-1]===target)
70
+
71
+
72
+
73
+ // méthode inverse, à partir du triplet.
74
+ triplets = []
75
+ for(let u = 0; u <= target; u++){
76
+ for(let v = 0; v <=target; v++){
77
+ if(u**2+v**2===target**2){
78
+ triplets.push([u, v, target])
79
+ }
80
+ }
81
+ }
82
+
83
+ return {
84
+ tripletsPytha: triplets
85
+ }
86
+ }
87
+
88
+
42
89
  // Should be
43
90
  function examplePolynomExpSimple () {
44
91
  const F1 = new Pi.PolynomExpFactor('x^2-4x+7', -1),
package/src/main.ts CHANGED
@@ -16,8 +16,7 @@ import {
16
16
  import {Line, Circle, Triangle, Point, Vector} from "./maths/geometry";
17
17
 
18
18
  // Expose as global
19
- // export let Pi = {
20
- (<any>window).Pi = {
19
+ export const PiMath = {
21
20
  ShutingYard: Shutingyard,
22
21
  Numeric: Numeric,
23
22
  NumExp: NumExp,
@@ -40,3 +39,4 @@ import {Line, Circle, Triangle, Point, Vector} from "./maths/geometry";
40
39
  Circle: Circle
41
40
  }
42
41
  };
42
+ (<any>window).Pi = PiMath