math-exercises 2.0.28 → 2.0.30

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 (116) hide show
  1. package/lib/exercises/calculLitteral/distributivity/doubleDistributivity.d.ts.map +1 -1
  2. package/lib/exercises/calculLitteral/distributivity/doubleDistributivity.js +6 -6
  3. package/lib/exercises/calculLitteral/distributivity/firstIdentity.d.ts.map +1 -1
  4. package/lib/exercises/calculLitteral/distributivity/firstIdentity.js +10 -6
  5. package/lib/exercises/calculLitteral/distributivity/secondIdentity.d.ts.map +1 -1
  6. package/lib/exercises/calculLitteral/distributivity/secondIdentity.js +14 -7
  7. package/lib/exercises/calculLitteral/distributivity/simpleDistributivity.d.ts.map +1 -1
  8. package/lib/exercises/calculLitteral/distributivity/simpleDistributivity.js +11 -11
  9. package/lib/exercises/calculLitteral/distributivity/thirdIdentity.d.ts.map +1 -1
  10. package/lib/exercises/calculLitteral/distributivity/thirdIdentity.js +4 -6
  11. package/lib/exercises/calculLitteral/equation/equationType2Exercise.d.ts.map +1 -1
  12. package/lib/exercises/calculLitteral/equation/equationType2Exercise.js +3 -5
  13. package/lib/exercises/calculLitteral/equation/equationType3Exercise.d.ts.map +1 -1
  14. package/lib/exercises/calculLitteral/equation/equationType3Exercise.js +0 -5
  15. package/lib/exercises/calculLitteral/equation/equationType4Exercise.d.ts.map +1 -1
  16. package/lib/exercises/calculLitteral/equation/equationType4Exercise.js +10 -16
  17. package/lib/exercises/calculLitteral/factorisation/factoIdRmq1.d.ts.map +1 -1
  18. package/lib/exercises/calculLitteral/factorisation/factoIdRmq1.js +3 -5
  19. package/lib/exercises/calculLitteral/factorisation/factoIdRmq2.js +4 -6
  20. package/lib/exercises/calculLitteral/factorisation/factoIdRmq3.d.ts.map +1 -1
  21. package/lib/exercises/calculLitteral/factorisation/factoIdRmq3.js +4 -6
  22. package/lib/exercises/calculLitteral/inequations/firstDegreeInequationsType0.d.ts.map +1 -1
  23. package/lib/exercises/calculLitteral/inequations/firstDegreeInequationsType0.js +0 -2
  24. package/lib/exercises/complex/argumentFromAlgebraicComplex.d.ts.map +1 -1
  25. package/lib/exercises/derivation/derivative/thirdDegreeFunctionVariation.d.ts.map +1 -1
  26. package/lib/exercises/derivation/derivative/thirdDegreeFunctionVariation.js +20 -8
  27. package/lib/exercises/exercise.d.ts +1 -1
  28. package/lib/exercises/exercise.d.ts.map +1 -1
  29. package/lib/exercises/functions/absolute/absoluteValueInequations.d.ts.map +1 -1
  30. package/lib/exercises/functions/absolute/absoluteValueInequations.js +8 -5
  31. package/lib/exercises/functions/affines/interceptReading.d.ts.map +1 -1
  32. package/lib/exercises/functions/exponential/expSimplifiying.d.ts.map +1 -1
  33. package/lib/exercises/functions/trinoms/canonicalFromDevForm.d.ts.map +1 -1
  34. package/lib/exercises/functions/trinoms/canonicalFromDevForm.js +1 -3
  35. package/lib/exercises/functions/trinoms/secondDegreeInequation.d.ts.map +1 -1
  36. package/lib/exercises/functions/trinoms/secondDegreeInequation.js +0 -3
  37. package/lib/exercises/index.d.ts +1 -0
  38. package/lib/exercises/index.d.ts.map +1 -1
  39. package/lib/exercises/index.js +1 -0
  40. package/lib/exercises/limits/rationalFracForbiddenValueLimit.d.ts.map +1 -1
  41. package/lib/exercises/limits/rationalFracForbiddenValueLimit.js +1 -6
  42. package/lib/exercises/matrices/index.d.ts +2 -0
  43. package/lib/exercises/matrices/index.d.ts.map +1 -0
  44. package/lib/exercises/matrices/index.js +17 -0
  45. package/lib/exercises/matrices/matrixInversibilityDomain.d.ts +10 -0
  46. package/lib/exercises/matrices/matrixInversibilityDomain.d.ts.map +1 -0
  47. package/lib/exercises/matrices/matrixInversibilityDomain.js +93 -0
  48. package/lib/exercises/sets/intervals/inequalityToInterval.d.ts +4 -1
  49. package/lib/exercises/sets/intervals/inequalityToInterval.d.ts.map +1 -1
  50. package/lib/exercises/sets/intervals/inequalityToInterval.js +10 -7
  51. package/lib/exercises/sets/intervals/intervalsIntersection.d.ts +7 -2
  52. package/lib/exercises/sets/intervals/intervalsIntersection.d.ts.map +1 -1
  53. package/lib/exercises/sets/intervals/intervalsIntersection.js +11 -4
  54. package/lib/exercises/sets/intervals/intervalsUnion.d.ts +7 -2
  55. package/lib/exercises/sets/intervals/intervalsUnion.d.ts.map +1 -1
  56. package/lib/exercises/sets/intervals/intervalsUnion.js +11 -4
  57. package/lib/exercises/utils/keys/intervalKeys.d.ts +3 -0
  58. package/lib/exercises/utils/keys/intervalKeys.d.ts.map +1 -0
  59. package/lib/exercises/utils/keys/intervalKeys.js +10 -0
  60. package/lib/index.d.ts +124 -8
  61. package/lib/index.d.ts.map +1 -1
  62. package/lib/index.js +11 -0
  63. package/lib/math/geometry/point.d.ts.map +1 -1
  64. package/lib/math/matrices/matrix.d.ts +10 -0
  65. package/lib/math/matrices/matrix.d.ts.map +1 -0
  66. package/lib/math/matrices/matrix.js +24 -0
  67. package/lib/math/numbers/decimals/decimal.d.ts +1 -0
  68. package/lib/math/numbers/decimals/decimal.d.ts.map +1 -1
  69. package/lib/math/numbers/decimals/decimal.js +3 -0
  70. package/lib/math/numbers/integer/integer.d.ts +1 -0
  71. package/lib/math/numbers/integer/integer.d.ts.map +1 -1
  72. package/lib/math/numbers/integer/integer.js +3 -0
  73. package/lib/math/numbers/integer/power.d.ts +1 -0
  74. package/lib/math/numbers/integer/power.d.ts.map +1 -1
  75. package/lib/math/numbers/integer/power.js +3 -0
  76. package/lib/math/numbers/logarithms/ln.d.ts +1 -0
  77. package/lib/math/numbers/logarithms/ln.d.ts.map +1 -1
  78. package/lib/math/numbers/logarithms/ln.js +3 -0
  79. package/lib/math/numbers/nombre.d.ts +5 -2
  80. package/lib/math/numbers/nombre.d.ts.map +1 -1
  81. package/lib/math/numbers/nombre.js +22 -7
  82. package/lib/math/numbers/rationals/rational.d.ts +1 -0
  83. package/lib/math/numbers/rationals/rational.d.ts.map +1 -1
  84. package/lib/math/numbers/rationals/rational.js +4 -3
  85. package/lib/math/numbers/reals/real.d.ts +1 -0
  86. package/lib/math/numbers/reals/real.d.ts.map +1 -1
  87. package/lib/math/numbers/reals/real.js +3 -0
  88. package/lib/math/polynomials/affine.d.ts +20 -5
  89. package/lib/math/polynomials/affine.d.ts.map +1 -1
  90. package/lib/math/polynomials/affine.js +8 -12
  91. package/lib/math/polynomials/trinom.d.ts +40 -4
  92. package/lib/math/polynomials/trinom.d.ts.map +1 -1
  93. package/lib/math/polynomials/trinom.js +23 -28
  94. package/lib/math/sets/intervals/intervals.d.ts +9 -12
  95. package/lib/math/sets/intervals/intervals.d.ts.map +1 -1
  96. package/lib/math/sets/intervals/intervals.js +61 -135
  97. package/lib/math/utils/random/randint.d.ts.map +1 -1
  98. package/lib/math/utils/random/randint.js +2 -2
  99. package/lib/server.d.ts +6 -0
  100. package/lib/server.d.ts.map +1 -1
  101. package/lib/server.js +10 -0
  102. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  103. package/lib/tree/nodes/operators/fractionNode.js +40 -0
  104. package/lib/tree/nodes/sets/intervalNode.d.ts +1 -0
  105. package/lib/tree/nodes/sets/intervalNode.d.ts.map +1 -1
  106. package/lib/tree/nodes/sets/intervalNode.js +14 -2
  107. package/lib/tree/nodes/sets/majorSets.d.ts +1 -0
  108. package/lib/tree/nodes/sets/majorSets.d.ts.map +1 -0
  109. package/lib/tree/nodes/sets/majorSets.js +1 -0
  110. package/lib/tree/nodes/sets/unionIntervalNode.d.ts +4 -0
  111. package/lib/tree/nodes/sets/unionIntervalNode.d.ts.map +1 -1
  112. package/lib/tree/nodes/sets/unionIntervalNode.js +13 -2
  113. package/lib/types/numberType.d.ts +1 -0
  114. package/lib/types/numberType.d.ts.map +1 -0
  115. package/lib/types/numberType.js +1 -0
  116. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../../../src/math/matrices/matrix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAI/D,qBAAa,MAAM;IACjB,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;gBACJ,QAAQ,EAAE,aAAa,EAAE,EAAE;IAKvC,WAAW;IAUX,KAAK;CAKN"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Matrix = void 0;
4
+ const multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
5
+ const substractNode_1 = require("../../tree/nodes/operators/substractNode");
6
+ class Matrix {
7
+ constructor(elements) {
8
+ this.elements = elements;
9
+ this.columns = elements[0].length;
10
+ this.rows = elements.length;
11
+ }
12
+ determinant() {
13
+ if (this.rows === 2 && this.columns === 2) {
14
+ return new substractNode_1.SubstractNode(new multiplyNode_1.MultiplyNode(this.elements[0][0], this.elements[1][1]), new multiplyNode_1.MultiplyNode(this.elements[0][1], this.elements[1][0])).simplify();
15
+ }
16
+ throw Error("general determinant not implemented yet");
17
+ }
18
+ toTex() {
19
+ return `\\begin{pmatrix}${this.elements
20
+ .map((row) => `${row.map((cell) => cell.toTex()).join("&")} \\\\[6pt]`)
21
+ .join("")}\\end{pmatrix}`;
22
+ }
23
+ }
24
+ exports.Matrix = Matrix;
@@ -16,6 +16,7 @@ export declare class Decimal implements Nombre {
16
16
  intPart: number;
17
17
  decimalPart: string;
18
18
  constructor(value: number);
19
+ equals(n: Nombre): boolean;
19
20
  /**
20
21
  *
21
22
  * @param precision 0 = unité, 1 = dixieme, ... , -1 : dizaine
@@ -1 +1 @@
1
- {"version":3,"file":"decimal.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/decimals/decimal.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAEvE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,8BAAsB,kBAAkB;IACtC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,GAAE,MAAU,GAAG,MAAM;IAY1E,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAMpE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAK/D,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;CAMrD;AAED,qBAAa,OAAQ,YAAW,MAAM;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,aAAsB;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;gBACR,KAAK,EAAE,MAAM;IASzB;;;;OAIG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIhC,oBAAoB,CAAC,KAAK,EAAE,MAAM;IAkClC,gBAAgB;IA2BhB,oBAAoB;IAsBpB,UAAU;IAMV,MAAM;CAGP"}
1
+ {"version":3,"file":"decimal.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/decimals/decimal.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAEvE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,8BAAsB,kBAAkB;IACtC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,GAAE,MAAU,GAAG,MAAM;IAY1E,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAMpE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAK/D,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;CAMrD;AAED,qBAAa,OAAQ,YAAW,MAAM;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,aAAsB;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;gBACR,KAAK,EAAE,MAAM;IASzB,MAAM,CAAC,CAAC,EAAE,MAAM;IAIhB;;;;OAIG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIhC,oBAAoB,CAAC,KAAK,EAAE,MAAM;IAkClC,gBAAgB;IA2BhB,oBAAoB;IAsBpB,UAAU;IAMV,MAAM;CAGP"}
@@ -52,6 +52,9 @@ class Decimal {
52
52
  this.decimalPart = decimalPartString || "";
53
53
  this.precision = this.decimalPart.length;
54
54
  }
55
+ equals(n) {
56
+ return this.value === n.value;
57
+ }
55
58
  /**
56
59
  *
57
60
  * @param precision 0 = unité, 1 = dixieme, ... , -1 : dizaine
@@ -11,6 +11,7 @@ export declare class Integer implements Nombre {
11
11
  tex: string;
12
12
  type: NumberType;
13
13
  constructor(value: number, tex?: string);
14
+ equals(n: Nombre): boolean;
14
15
  toTree(): NumberNode;
15
16
  round(precision: number): Integer;
16
17
  divide(nb: Nombre): Nombre;
@@ -1 +1 @@
1
- {"version":3,"file":"integer.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/integer/integer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,8BAAsB,kBAAkB;IACtC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE;IAGrD,MAAM,CAAC,WAAW,CAAC,GAAG,GAAE,MAAW;IAGnC,MAAM,CAAC,gBAAgB,CACrB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,QAAQ,CAAC,EAAE,MAAM,EAAE;CAYtB;AAED,qBAAa,OAAQ,YAAW,MAAM;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;gBAEL,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;IAMvC,MAAM;IAIN,KAAK,CAAC,SAAS,EAAE,MAAM;IAkCvB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAc1B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO;IAYxC,QAAQ;IAGR,GAAG,CAAC,EAAE,EAAE,MAAM;CAYf"}
1
+ {"version":3,"file":"integer.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/integer/integer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,8BAAsB,kBAAkB;IACtC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE;IAGrD,MAAM,CAAC,WAAW,CAAC,GAAG,GAAE,MAAW;IAGnC,MAAM,CAAC,gBAAgB,CACrB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,QAAQ,CAAC,EAAE,MAAM,EAAE;CAYtB;AAED,qBAAa,OAAQ,YAAW,MAAM;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;gBAEL,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;IAMvC,MAAM,CAAC,CAAC,EAAE,MAAM;IAGhB,MAAM;IAIN,KAAK,CAAC,SAAS,EAAE,MAAM;IAkCvB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAc1B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO;IAYxC,QAAQ;IAGR,GAAG,CAAC,EAAE,EAAE,MAAM;CAYf"}
@@ -33,6 +33,9 @@ class Integer {
33
33
  this.tex = tex || value + "";
34
34
  this.type = nombre_1.NumberType.Integer;
35
35
  }
36
+ equals(n) {
37
+ return this.value === n.value;
38
+ }
36
39
  toTree() {
37
40
  return new numberNode_1.NumberNode(this.value, this.tex);
38
41
  }
@@ -8,6 +8,7 @@ export declare class Power implements Nombre {
8
8
  operand: number;
9
9
  power: number;
10
10
  constructor(a: number, b: number);
11
+ equals(n: Nombre): boolean;
11
12
  simplify(): NumberNode | PowerNode;
12
13
  toDecimalWriting(): Nombre;
13
14
  toTree(): PowerNode;
@@ -1 +1 @@
1
- {"version":3,"file":"power.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/integer/power.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG/C,qBAAa,KAAM,YAAW,MAAM;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;gBACF,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAOhC,QAAQ;IASR,gBAAgB,IAAI,MAAM;IAmB1B,MAAM;CAMP"}
1
+ {"version":3,"file":"power.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/integer/power.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG/C,qBAAa,KAAM,YAAW,MAAM;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;gBACF,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAOhC,MAAM,CAAC,CAAC,EAAE,MAAM;IAGhB,QAAQ;IASR,gBAAgB,IAAI,MAAM;IAmB1B,MAAM;CAMP"}
@@ -13,6 +13,9 @@ class Power {
13
13
  this.tex = `${a}^{${b}}`;
14
14
  this.type = b < 0 ? nombre_1.NumberType.Rational : nombre_1.NumberType.Integer;
15
15
  }
16
+ equals(n) {
17
+ return this.value === n.value;
18
+ }
16
19
  simplify() {
17
20
  if (this.power === 0)
18
21
  return new numberNode_1.NumberNode(1);
@@ -6,6 +6,7 @@ export declare class Ln implements Nombre {
6
6
  type: NumberType;
7
7
  operand: Nombre;
8
8
  constructor(operand: Nombre);
9
+ equals(n: Nombre): boolean;
9
10
  toTree(): LogNode;
10
11
  simplify(): void;
11
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ln.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/logarithms/ln.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/C,qBAAa,EAAG,YAAW,MAAM;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;gBACJ,OAAO,EAAE,MAAM;IAM3B,MAAM;IAGN,QAAQ;CACT"}
1
+ {"version":3,"file":"ln.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/logarithms/ln.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/C,qBAAa,EAAG,YAAW,MAAM;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;gBACJ,OAAO,EAAE,MAAM;IAM3B,MAAM,CAAC,CAAC,EAAE,MAAM;IAGhB,MAAM;IAGN,QAAQ;CACT"}
@@ -10,6 +10,9 @@ class Ln {
10
10
  this.tex = `\\ln(${operand})`;
11
11
  this.operand = operand;
12
12
  }
13
+ equals(n) {
14
+ return this.value === n.value;
15
+ }
13
16
  toTree() {
14
17
  return new logNode_1.LogNode(this.operand.toTree());
15
18
  }
@@ -1,6 +1,5 @@
1
1
  import { AlgebraicNode } from "../../tree/nodes/algebraicNode";
2
2
  import { NodeOptions } from "../../tree/nodes/node";
3
- import { Integer } from "./integer/integer";
4
3
  export declare enum NumberType {
5
4
  Integer = 0,
6
5
  Decimal = 1,
@@ -12,8 +11,12 @@ export interface Nombre {
12
11
  tex: string;
13
12
  type: NumberType;
14
13
  toTree: (opts?: NodeOptions) => AlgebraicNode;
14
+ equals: (n: Nombre) => boolean;
15
15
  }
16
16
  export declare abstract class NombreConstructor {
17
- static random(): import("./rationals/rational").Rational | Integer | import("./decimals/decimal").Decimal | import("./reals/real").Real;
17
+ static random({ types, excludes, }?: {
18
+ types?: NumberType[];
19
+ excludes?: Nombre[];
20
+ }): Nombre;
18
21
  }
19
22
  //# sourceMappingURL=nombre.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nombre.d.ts","sourceRoot":"","sources":["../../../src/math/numbers/nombre.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAQ,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAI1D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAI5C,oBAAY,UAAU;IACpB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,IAAI,IAAA;CACL;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,aAAa,CAAC;CAC/C;AAED,8BAAsB,iBAAiB;IACrC,MAAM,CAAC,MAAM;CAkBd"}
1
+ {"version":3,"file":"nombre.d.ts","sourceRoot":"","sources":["../../../src/math/numbers/nombre.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAQ,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAQ1D,oBAAY,UAAU;IACpB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,IAAI,IAAA;CACL;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,aAAa,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CAChC;AAED,8BAAsB,iBAAiB;IACrC,MAAM,CAAC,MAAM,CAAC,EACZ,KAAK,EACL,QAAQ,GACT,GAAE;QACD,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KAChB;CAiCP"}
@@ -15,23 +15,38 @@ var NumberType;
15
15
  NumberType[NumberType["Real"] = 3] = "Real";
16
16
  })(NumberType || (exports.NumberType = NumberType = {}));
17
17
  class NombreConstructor {
18
- static random() {
19
- const type = (0, random_1.random)([
18
+ static random({ types, excludes, } = {}) {
19
+ const allowedTypes = types ?? [
20
20
  NumberType.Integer,
21
21
  NumberType.Decimal,
22
22
  NumberType.Rational,
23
23
  NumberType.Real,
24
- ]);
24
+ ];
25
+ const type = (0, random_1.random)(allowedTypes);
26
+ let res;
25
27
  switch (type) {
26
28
  case NumberType.Integer:
27
- return new integer_1.Integer((0, randint_1.randint)(-9, 10));
29
+ do {
30
+ res = new integer_1.Integer((0, randint_1.randint)(-9, 10));
31
+ } while (excludes?.some((el) => el.equals(res)));
32
+ break;
28
33
  case NumberType.Decimal:
29
- return decimal_1.DecimalConstructor.random(-9, 10);
34
+ do {
35
+ res = decimal_1.DecimalConstructor.random(-9, 10);
36
+ } while (excludes?.some((el) => el.equals(res)));
37
+ break;
30
38
  case NumberType.Rational:
31
- return rational_1.RationalConstructor.randomIrreductible();
39
+ do {
40
+ res = rational_1.RationalConstructor.randomIrreductible();
41
+ } while (excludes?.some((el) => el.equals(res)));
42
+ break;
32
43
  case NumberType.Real:
33
- return real_1.RealConstructor.random();
44
+ do {
45
+ res = real_1.RealConstructor.random();
46
+ } while (excludes?.some((el) => el.equals(res)));
47
+ break;
34
48
  }
49
+ return res;
35
50
  }
36
51
  }
37
52
  exports.NombreConstructor = NombreConstructor;
@@ -19,6 +19,7 @@ export declare class Rational implements Nombre {
19
19
  isSimplified: boolean;
20
20
  type: NumberType;
21
21
  constructor(numerator: number, denumerator: number);
22
+ equals(n: Nombre): boolean;
22
23
  toTex(): string;
23
24
  add(nb: Nombre): Nombre;
24
25
  multiply(nb: Nombre): Rational | Integer;
@@ -1 +1 @@
1
- {"version":3,"file":"rational.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/rationals/rational.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAQ,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAIvE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/C,8BAAsB,mBAAmB;IACvC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAE,MAAW;IAW7C,MAAM,CAAC,kBAAkB,CAAC,GAAG,GAAE,MAAW;IAO1C,MAAM,CAAC,0BAA0B,CAAC,GAAG,GAAE,MAAW;CAQnD;AAED,qBAAa,QAAS,YAAW,MAAM;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,UAAU,CAAC;gBAEL,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAYlD,KAAK;IAML,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAkBvB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO;IAgBxC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAgB1B,QAAQ,IAAI,QAAQ;IAIpB,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW;IAgBzB,cAAc;IAId,QAAQ,IAAI,OAAO,GAAG,QAAQ;CAY/B"}
1
+ {"version":3,"file":"rational.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/rationals/rational.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAQ,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAIvE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/C,8BAAsB,mBAAmB;IACvC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAE,MAAW;IAW7C,MAAM,CAAC,kBAAkB,CAAC,GAAG,GAAE,MAAW;IAO1C,MAAM,CAAC,0BAA0B,CAAC,GAAG,GAAE,MAAW;CAQnD;AAED,qBAAa,QAAS,YAAW,MAAM;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,UAAU,CAAC;gBAEL,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAYlD,MAAM,CAAC,CAAC,EAAE,MAAM;IAGhB,KAAK;IAML,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAkBvB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO;IAgBxC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAgB1B,QAAQ,IAAI,QAAQ;IAIpB,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW;IAgBzB,cAAc;IAId,QAAQ,IAAI,OAAO,GAAG,QAAQ;CAS/B"}
@@ -58,6 +58,9 @@ class Rational {
58
58
  this.tex = `${this.num < 0 ? "-" : ""}\\frac{${this.num < 0 ? -this.num : this.num}}{${this.denum}}`;
59
59
  this.type = nombre_1.NumberType.Rational;
60
60
  }
61
+ equals(n) {
62
+ return this.value === n.value;
63
+ }
61
64
  toTex() {
62
65
  return `${this.num < 0 ? "-" : ""}\\frac{${this.num < 0 ? -this.num : this.num}}{${this.denum}}`;
63
66
  }
@@ -120,9 +123,7 @@ class Rational {
120
123
  return this.denum !== 1 && (0, gcd_1.gcd)(this.num, this.denum) === 1;
121
124
  }
122
125
  simplify() {
123
- const sign = (this.num > 0 && this.denum > 0) || (this.num < 0 && this.denum < 0)
124
- ? 1
125
- : -1;
126
+ const sign = this.num * this.denum > 0 ? 1 : -1;
126
127
  const div = Math.abs((0, gcd_1.gcd)(this.num, this.denum));
127
128
  if (Math.abs(this.denum) === div)
128
129
  return new integer_1.Integer(this.num / this.denum);
@@ -9,6 +9,7 @@ export declare class Real implements Nombre {
9
9
  tex: string;
10
10
  type: NumberType;
11
11
  constructor(value: number, tex: string);
12
+ equals(n: Nombre): boolean;
12
13
  toTree(): AlgebraicNode;
13
14
  }
14
15
  export declare abstract class SquareRootConstructor {
@@ -1 +1 @@
1
- {"version":3,"file":"real.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/reals/real.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAS/D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,8BAAsB,eAAe;IACnC,MAAM,CAAC,MAAM;CAUd;AACD,qBAAa,IAAK,YAAW,MAAM;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;gBACL,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAKtC,MAAM,IAAI,aAAa;CAIxB;AAED,8BAAsB,qBAAqB;IACzC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,EACxB,kBAA0B,EAC1B,SAAc,GACf;;;KAAA,GAAG,UAAU;IASd,MAAM,CAAC,kBAAkB,CAAC,GAAG,GAAE,MAAW,GAAG,UAAU;CAIxD;AAED,qBAAa,UAAW,SAAQ,IAAI;IAClC,OAAO,EAAE,MAAM,CAAC;gBACJ,OAAO,EAAE,MAAM;IAK3B,cAAc;IAMd,mBAAmB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAiBvC,QAAQ,IAAI,MAAM;IAyBlB,KAAK,IAAI,MAAM;IAIf,MAAM;CAGP"}
1
+ {"version":3,"file":"real.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/reals/real.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAS/D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,8BAAsB,eAAe;IACnC,MAAM,CAAC,MAAM;CAUd;AACD,qBAAa,IAAK,YAAW,MAAM;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;gBACL,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAKtC,MAAM,CAAC,CAAC,EAAE,MAAM;IAGhB,MAAM,IAAI,aAAa;CAIxB;AAED,8BAAsB,qBAAqB;IACzC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,EACxB,kBAA0B,EAC1B,SAAc,GACf;;;KAAA,GAAG,UAAU;IASd,MAAM,CAAC,kBAAkB,CAAC,GAAG,GAAE,MAAW,GAAG,UAAU;CAIxD;AAED,qBAAa,UAAW,SAAQ,IAAI;IAClC,OAAO,EAAE,MAAM,CAAC;gBACJ,OAAO,EAAE,MAAM;IAK3B,cAAc;IAMd,mBAAmB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAiBvC,QAAQ,IAAI,MAAM;IAyBlB,KAAK,IAAI,MAAM;IAIf,MAAM;CAGP"}
@@ -32,6 +32,9 @@ class Real {
32
32
  this.tex = tex;
33
33
  this.type = nombre_1.NumberType.Real;
34
34
  }
35
+ equals(n) {
36
+ return this.value === n.value;
37
+ }
35
38
  toTree() {
36
39
  if (this.tex === "\\pi")
37
40
  return piNode_1.PiNode;
@@ -1,9 +1,24 @@
1
- import { Nombre } from '../numbers/nombre';
2
- import { MathSet } from '../sets/mathSet';
3
- import { Polynomial } from './polynomial';
1
+ import { Nombre } from "../numbers/nombre";
2
+ import { Polynomial } from "./polynomial";
4
3
  export declare abstract class AffineConstructor {
5
- static random(domainA?: MathSet, domainB?: MathSet): Affine;
6
- static differentRandoms(nb: number, domainA?: MathSet, domainB?: MathSet): Affine[];
4
+ static random(aOpts?: {
5
+ min?: number;
6
+ max?: number;
7
+ excludes?: number[];
8
+ }, bOpts?: {
9
+ min?: number;
10
+ max?: number;
11
+ excludes?: number[];
12
+ }): Affine;
13
+ static differentRandoms(nb: number, aOpts?: {
14
+ min?: number;
15
+ max?: number;
16
+ excludes?: number[];
17
+ }, bOpts?: {
18
+ min?: number;
19
+ max?: number;
20
+ excludes?: number[];
21
+ }): Affine[];
7
22
  }
8
23
  export declare class Affine extends Polynomial {
9
24
  a: number;
@@ -1 +1 @@
1
- {"version":3,"file":"affine.d.ts","sourceRoot":"","sources":["../../../src/math/polynomials/affine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8BAAsB,iBAAiB;IACrC,MAAM,CAAC,MAAM,CACX,OAAO,GAAE,OAAmF,EAC5F,OAAO,GAAE,OAAqC,GAC7C,MAAM;IAOT,MAAM,CAAC,gBAAgB,CACrB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,OAAmF,EAC5F,OAAO,GAAE,OAAqC,GAC7C,MAAM,EAAE;CAWZ;AAED,qBAAa,MAAO,SAAQ,UAAU;IACpC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;gBAEL,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAY;IAOxD,OAAO,IAAI,MAAM;IAIjB,QAAQ,IAAI,MAAM;CAGnB"}
1
+ {"version":3,"file":"affine.d.ts","sourceRoot":"","sources":["../../../src/math/polynomials/affine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAM3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8BAAsB,iBAAiB;IACrC,MAAM,CAAC,MAAM,CACX,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAC3D,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC1D,MAAM;IAcT,MAAM,CAAC,gBAAgB,CACrB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAC3D,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC1D,MAAM,EAAE;CAWZ;AAED,qBAAa,MAAO,SAAQ,UAAU;IACpC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;gBAEL,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAY;IAOxD,OAAO,IAAI,MAAM;IAIjB,QAAQ,IAAI,MAAM;CAGnB"}
@@ -1,25 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Affine = exports.AffineConstructor = void 0;
4
- const integer_1 = require("../numbers/integer/integer");
5
4
  const rational_1 = require("../numbers/rationals/rational");
6
- const discreteSet_1 = require("../sets/discreteSet");
7
- const intervals_1 = require("../sets/intervals/intervals");
5
+ const randint_1 = require("../utils/random/randint");
8
6
  const polynomial_1 = require("./polynomial");
9
7
  class AffineConstructor {
10
- static random(domainA = new intervals_1.Interval('[[-10; 10]]').difference(new discreteSet_1.DiscreteSet([new integer_1.Integer(0)])), domainB = new intervals_1.Interval('[[-10; 10]]')) {
11
- const a = domainA.getRandomElement();
12
- const b = domainB.getRandomElement();
13
- if (a === null || b === null)
14
- throw Error('received null in AffineConstructor');
15
- return new Affine(a.value, b.value);
8
+ static random(aOpts, bOpts) {
9
+ const a = (0, randint_1.randint)(aOpts?.min ?? -9, aOpts?.max ?? 10, aOpts?.excludes ?? [0]);
10
+ const b = (0, randint_1.randint)(bOpts?.min ?? -9, bOpts?.max ?? 10, bOpts?.excludes ?? []);
11
+ return new Affine(a, b);
16
12
  }
17
- static differentRandoms(nb, domainA = new intervals_1.Interval('[[-10; 10]]').difference(new discreteSet_1.DiscreteSet([new integer_1.Integer(0)])), domainB = new intervals_1.Interval('[[-10; 10]]')) {
13
+ static differentRandoms(nb, aOpts, bOpts) {
18
14
  const res = [];
19
15
  for (let i = 0; i < nb; i++) {
20
16
  let aff;
21
17
  do {
22
- aff = AffineConstructor.random(domainA, domainB);
18
+ aff = AffineConstructor.random(aOpts, bOpts);
23
19
  } while (res.some((affine) => affine.equals(aff)));
24
20
  res.push(aff);
25
21
  }
@@ -28,7 +24,7 @@ class AffineConstructor {
28
24
  }
29
25
  exports.AffineConstructor = AffineConstructor;
30
26
  class Affine extends polynomial_1.Polynomial {
31
- constructor(a, b, variable = 'x') {
27
+ constructor(a, b, variable = "x") {
32
28
  super([b, a], variable);
33
29
  this.a = a;
34
30
  this.b = b;
@@ -3,14 +3,50 @@ import { AddNode } from "../../tree/nodes/operators/addNode";
3
3
  import { FractionNode } from "../../tree/nodes/operators/fractionNode";
4
4
  import { MultiplyNode } from "../../tree/nodes/operators/multiplyNode";
5
5
  import { Point } from "../geometry/point";
6
- import { MathSet } from "../sets/mathSet";
7
6
  import { Polynomial } from "./polynomial";
8
7
  import { OppositeNode } from "../../tree/nodes/functions/oppositeNode";
9
8
  import { AlgebraicNode } from "../../tree/nodes/algebraicNode";
10
9
  export declare abstract class TrinomConstructor {
11
- static random(domainA?: MathSet, domainB?: MathSet, domainC?: MathSet): Trinom;
12
- static randomCanonical(domainA?: MathSet, domainAlpha?: MathSet, domainBeta?: MathSet): Trinom;
13
- static randomFactorized(domainA?: MathSet, domainX1?: MathSet, domainX2?: MathSet): Trinom;
10
+ static random(aOpts?: {
11
+ min?: number;
12
+ max?: number;
13
+ excludes?: number[];
14
+ }, bOpts?: {
15
+ min?: number;
16
+ max?: number;
17
+ excludes?: number[];
18
+ }, cOpts?: {
19
+ min?: number;
20
+ max?: number;
21
+ excludes?: number[];
22
+ }): Trinom;
23
+ static randomCanonical(aOpts?: {
24
+ min?: number;
25
+ max?: number;
26
+ excludes?: number[];
27
+ from?: number[];
28
+ }, alphaOpts?: {
29
+ min?: number;
30
+ max?: number;
31
+ excludes?: number[];
32
+ }, betaOpts?: {
33
+ min?: number;
34
+ max?: number;
35
+ excludes?: number[];
36
+ }): Trinom;
37
+ static randomFactorized(aOpts?: {
38
+ min?: number;
39
+ max?: number;
40
+ excludes?: number[];
41
+ }, x1Opts?: {
42
+ min?: number;
43
+ max?: number;
44
+ excludes?: number[];
45
+ }, x2Opts?: {
46
+ min?: number;
47
+ max?: number;
48
+ excludes?: number[];
49
+ }): Trinom;
14
50
  }
15
51
  export declare class Trinom extends Polynomial {
16
52
  a: number;
@@ -1 +1 @@
1
- {"version":3,"file":"trinom.d.ts","sourceRoot":"","sources":["../../../src/math/polynomials/trinom.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAIvE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAO1C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,8BAAsB,iBAAiB;IACrC,MAAM,CAAC,MAAM,CACX,OAAO,GAAE,OAER,EACD,OAAO,GAAE,OAAqC,EAC9C,OAAO,GAAE,OAAqC,GAC7C,MAAM;IAST,MAAM,CAAC,eAAe,CACpB,OAAO,GAAE,OAER,EACD,WAAW,GAAE,OAAqC,EAClD,UAAU,GAAE,OAAqC,GAChD,MAAM;IAUT,MAAM,CAAC,gBAAgB,CACrB,OAAO,GAAE,OAER,EACD,QAAQ,GAAE,OAAqC,EAC/C,QAAQ,GAAE,OAAqC,GAC9C,MAAM;CAcV;AAED,qBAAa,MAAO,SAAQ,UAAU;IACpC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;gBACL,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAY;IAQnE,QAAQ;IAGR,YAAY,IAAI,UAAU;IAI1B,QAAQ;IAUR,YAAY,IAAI,aAAa,EAAE;IAoD/B,2BAA2B;IAO3B,QAAQ;IAGR,YAAY;IAIZ,OAAO;IAIP,WAAW;IAIX,iBAAiB;IA4CjB,gBAAgB;IAsBhB,SAAS;CAGV"}
1
+ {"version":3,"file":"trinom.d.ts","sourceRoot":"","sources":["../../../src/math/polynomials/trinom.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAIvE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAQ1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAI/D,8BAAsB,iBAAiB;IACrC,MAAM,CAAC,MAAM,CACX,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAC3D,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAC3D,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC1D,MAAM;IAmBT,MAAM,CAAC,eAAe,CACpB,KAAK,CAAC,EAAE;QACN,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,EACD,SAAS,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAC/D,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC7D,MAAM;IAmBT,MAAM,CAAC,gBAAgB,CACrB,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAC3D,MAAM,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAC5D,MAAM,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC3D,MAAM;CAoBV;AAED,qBAAa,MAAO,SAAQ,UAAU;IACpC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;gBACL,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAY;IAQnE,QAAQ;IAGR,YAAY,IAAI,UAAU;IAI1B,QAAQ;IAUR,YAAY,IAAI,aAAa,EAAE;IAoD/B,2BAA2B;IAO3B,QAAQ;IAGR,YAAY;IAIZ,OAAO;IAIP,WAAW;IAIX,iBAAiB;IA4CjB,gBAAgB;IAsBhB,SAAS;CAGV"}
@@ -9,41 +9,36 @@ const multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
9
9
  const powerNode_1 = require("../../tree/nodes/operators/powerNode");
10
10
  const variableNode_1 = require("../../tree/nodes/variables/variableNode");
11
11
  const point_1 = require("../geometry/point");
12
- const integer_1 = require("../numbers/integer/integer");
13
12
  const rational_1 = require("../numbers/rationals/rational");
14
13
  const real_1 = require("../numbers/reals/real");
15
- const discreteSet_1 = require("../sets/discreteSet");
16
- const intervals_1 = require("../sets/intervals/intervals");
17
14
  const polynomial_1 = require("./polynomial");
18
15
  const oppositeNode_1 = require("../../tree/nodes/functions/oppositeNode");
19
16
  const gcd_1 = require("../utils/arithmetic/gcd");
17
+ const randint_1 = require("../utils/random/randint");
18
+ const random_1 = require("../../utils/random");
20
19
  class TrinomConstructor {
21
- static random(domainA = new intervals_1.Interval("[[-10; 10]]").difference(new discreteSet_1.DiscreteSet([new integer_1.Integer(0)])), domainB = new intervals_1.Interval("[[-10; 10]]"), domainC = new intervals_1.Interval("[[-10; 10]]")) {
22
- const a = domainA.getRandomElement();
23
- const b = domainB.getRandomElement();
24
- const c = domainC.getRandomElement();
25
- if (a === null || b === null || c === null)
26
- throw Error("received null in random trinom");
27
- return new Trinom(a.value, b.value, c.value);
28
- }
29
- static randomCanonical(domainA = new intervals_1.Interval("[[-10; 10]]").difference(new discreteSet_1.DiscreteSet([new integer_1.Integer(0)])), domainAlpha = new intervals_1.Interval("[[-10; 10]]"), domainBeta = new intervals_1.Interval("[[-10; 10]]")) {
30
- const a = domainA.getRandomElement();
31
- const alpha = domainAlpha.getRandomElement();
32
- const beta = domainBeta.getRandomElement();
33
- if (a === null || alpha === null || beta === null)
34
- throw Error("received null in random canonical");
35
- const b = -2 * a.value * alpha.value;
36
- const c = a.value * alpha.value ** 2 + beta.value;
37
- return new Trinom(a.value, b, c);
38
- }
39
- static randomFactorized(domainA = new intervals_1.Interval("[[-10; 10]]").difference(new discreteSet_1.DiscreteSet([new integer_1.Integer(0)])), domainX1 = new intervals_1.Interval("[[-10; 10]]"), domainX2 = new intervals_1.Interval("[[-10; 10]]")) {
40
- const a = domainA.getRandomElement();
41
- const x1 = domainX1.getRandomElement();
42
- const x2 = domainX2.getRandomElement();
43
- if (a === null || x1 === null || x2 === null)
44
- throw Error("received null in random factorized");
20
+ static random(aOpts, bOpts, cOpts) {
21
+ const a = (0, randint_1.randint)(aOpts?.min ?? -9, aOpts?.max ?? 10, aOpts?.excludes ?? [0]);
22
+ const b = (0, randint_1.randint)(bOpts?.min ?? -9, bOpts?.max ?? 10, bOpts?.excludes ?? []);
23
+ const c = (0, randint_1.randint)(cOpts?.min ?? -9, cOpts?.max ?? 10, cOpts?.excludes ?? []);
24
+ return new Trinom(a, b, c);
25
+ }
26
+ static randomCanonical(aOpts, alphaOpts, betaOpts) {
27
+ const a = aOpts?.from
28
+ ? (0, random_1.random)(aOpts.from)
29
+ : (0, randint_1.randint)(aOpts?.min ?? -9, aOpts?.max ?? 10, aOpts?.excludes ?? [0]);
30
+ const alpha = (0, randint_1.randint)(alphaOpts?.min ?? -9, alphaOpts?.max ?? 10, alphaOpts?.excludes ?? []);
31
+ const beta = (0, randint_1.randint)(betaOpts?.min ?? -9, betaOpts?.max ?? 10, betaOpts?.excludes ?? []);
32
+ const b = -2 * a * alpha;
33
+ const c = a * alpha ** 2 + beta;
34
+ return new Trinom(a, b, c);
35
+ }
36
+ static randomFactorized(aOpts, x1Opts, x2Opts) {
37
+ const a = (0, randint_1.randint)(aOpts?.min ?? -9, aOpts?.max ?? 10, aOpts?.excludes ?? [0]);
38
+ const x1 = (0, randint_1.randint)(x1Opts?.min ?? -9, x1Opts?.max ?? 10, x1Opts?.excludes ?? []);
39
+ const x2 = (0, randint_1.randint)(x2Opts?.min ?? -9, x2Opts?.max ?? 10, x2Opts?.excludes ?? []);
45
40
  //a*x^2 + ax*-x2 + a*-x1*x + a*-x1*-x2
46
- return new Trinom(a.value, -a.value * (x1.value + x2.value), a.value * x1.value * x2.value);
41
+ return new Trinom(a, -a * (x1 + x2), a * x1 * x2);
47
42
  }
48
43
  }
49
44
  exports.TrinomConstructor = TrinomConstructor;
@@ -1,6 +1,6 @@
1
- import { Nombre, NumberType } from "../../../math/numbers/nombre";
1
+ import { Nombre } from "../../../math/numbers/nombre";
2
+ import { AlgebraicNode } from "../../../tree/nodes/algebraicNode";
2
3
  import { ClosureType, IntervalNode } from "../../../tree/nodes/sets/intervalNode";
3
- import { DiscreteSet } from "../discreteSet";
4
4
  import { MathSet } from "../mathSet";
5
5
  import { MathSetInterface } from "../mathSetInterface";
6
6
  export declare abstract class IntervalConstructor {
@@ -8,29 +8,26 @@ export declare abstract class IntervalConstructor {
8
8
  static differentRandoms(nb: number): Interval[];
9
9
  }
10
10
  export declare class Interval implements MathSetInterface {
11
+ minNode: AlgebraicNode;
11
12
  min: number;
12
13
  minTex: string;
13
14
  max: number;
15
+ maxNode: AlgebraicNode;
14
16
  maxTex: string;
15
17
  closure: ClosureType;
16
18
  leftBracket: "[" | "]";
17
19
  rightBracket: "[" | "]";
18
- leftInequalitySymbol: "\\le" | "<" | "\\ge" | ">";
19
- rightInequalitySymbol: "\\le" | "<" | "\\ge" | ">";
20
- type: NumberType;
20
+ leftInequalitySymbol: "\\le" | "<";
21
+ rightInequalitySymbol: "\\le" | "<";
21
22
  tex: string;
22
- /**
23
- * [[a; b]] pour un interval d'integer; [a;b] pour des réels
24
- */
25
- constructor(tex?: string);
23
+ constructor(min: AlgebraicNode, max: AlgebraicNode, closure: ClosureType);
24
+ equals(interval: Interval): boolean;
26
25
  union(interval: Interval): MathSet;
27
26
  intersection(interval: Interval): MathSet;
28
- exclude(nb: number): MathSet;
29
- difference(set: DiscreteSet): MathSet;
30
27
  insideToTex(): string;
31
28
  toTex(): string;
32
29
  toInequality(): string;
33
- getRandomElement(precision?: number): Nombre;
30
+ getRandomElement(): Nombre;
34
31
  toTree(): IntervalNode;
35
32
  }
36
33
  //# sourceMappingURL=intervals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"intervals.d.ts","sourceRoot":"","sources":["../../../../src/math/sets/intervals/intervals.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAS/D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAG/E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,8BAAsB,mBAAmB;IACvC,MAAM,CAAC,MAAM;IAoCb,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM;CAWnC;AAED,qBAAa,QAAS,YAAW,gBAAgB;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,GAAG,GAAG,GAAG,CAAC;IACvB,YAAY,EAAE,GAAG,GAAG,GAAG,CAAC;IACxB,oBAAoB,EAAE,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;IAClD,qBAAqB,EAAE,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;IAEnD,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;gBACS,GAAG,SAAc;IAuD7B,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAgDlC,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IA0CzC,OAAO,CAAC,EAAE,EAAE,MAAM;IAWlB,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO;IAWrC,WAAW,IAAI,MAAM;IAGrB,KAAK,IAAI,MAAM;IAIf,YAAY,IAAI,MAAM;IAmBtB,gBAAgB,CACd,SAAS,GAAE,MAAiD,GAC3D,MAAM;IAmBT,MAAM;CAOP"}
1
+ {"version":3,"file":"intervals.d.ts","sourceRoot":"","sources":["../../../../src/math/sets/intervals/intervals.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAc,MAAM,2BAA2B,CAAC;AAI/D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAM/D,OAAO,EACL,WAAW,EACX,YAAY,EAEb,MAAM,oCAAoC,CAAC;AAI5C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,8BAAsB,mBAAmB;IACvC,MAAM,CAAC,MAAM;IA2Cb,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM;CAWnC;AAED,qBAAa,QAAS,YAAW,gBAAgB;IAC/C,OAAO,EAAE,aAAa,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,GAAG,GAAG,GAAG,CAAC;IACvB,YAAY,EAAE,GAAG,GAAG,GAAG,CAAC;IACxB,oBAAoB,EAAE,MAAM,GAAG,GAAG,CAAC;IACnC,qBAAqB,EAAE,MAAM,GAAG,GAAG,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;gBACA,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW;IAiBxE,MAAM,CAAC,QAAQ,EAAE,QAAQ;IAOzB,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IA6ClC,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAyCzC,WAAW,IAAI,MAAM;IAGrB,KAAK,IAAI,MAAM;IAMf,YAAY,IAAI,MAAM;IAmBtB,gBAAgB,IAAI,MAAM;IAI1B,MAAM;CAGP"}