math-exercises 1.3.31 → 1.3.32

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 (368) hide show
  1. package/README.md +73 -73
  2. package/lib/exercises/calcul/addAndSub.d.ts +6 -6
  3. package/lib/exercises/calcul/addAndSub.js +41 -41
  4. package/lib/exercises/calcul/addAndSubWithoutRelatives.d.ts +6 -6
  5. package/lib/exercises/calcul/addAndSubWithoutRelatives.js +51 -51
  6. package/lib/exercises/calcul/fractions/fractionAndIntegerDivision.d.ts +3 -3
  7. package/lib/exercises/calcul/fractions/fractionAndIntegerDivision.js +37 -37
  8. package/lib/exercises/calcul/fractions/fractionAndIntegerProduct.d.ts +3 -3
  9. package/lib/exercises/calcul/fractions/fractionAndIntegerProduct.js +34 -34
  10. package/lib/exercises/calcul/fractions/fractionAndIntegerSum.d.ts +3 -3
  11. package/lib/exercises/calcul/fractions/fractionAndIntegerSum.js +34 -34
  12. package/lib/exercises/calcul/fractions/fractionToPercentToDecimal.d.ts +3 -3
  13. package/lib/exercises/calcul/fractions/fractionToPercentToDecimal.js +69 -69
  14. package/lib/exercises/calcul/fractions/fractionsDivision.d.ts +3 -3
  15. package/lib/exercises/calcul/fractions/fractionsDivision.js +31 -31
  16. package/lib/exercises/calcul/fractions/fractionsProduct.d.ts +3 -3
  17. package/lib/exercises/calcul/fractions/fractionsProduct.js +30 -30
  18. package/lib/exercises/calcul/fractions/fractionsSum.d.ts +3 -3
  19. package/lib/exercises/calcul/fractions/fractionsSum.js +30 -30
  20. package/lib/exercises/calcul/fractions/simplifyFraction.d.ts +3 -3
  21. package/lib/exercises/calcul/fractions/simplifyFraction.js +26 -26
  22. package/lib/exercises/calcul/mentalCaluls.ts/mentalAddAndSub.d.ts +3 -3
  23. package/lib/exercises/calcul/mentalCaluls.ts/mentalAddAndSub.js +46 -46
  24. package/lib/exercises/calcul/mentalCaluls.ts/mentalDivisions.d.ts +3 -3
  25. package/lib/exercises/calcul/mentalCaluls.ts/mentalDivisions.js +64 -64
  26. package/lib/exercises/calcul/mentalCaluls.ts/mentalMultiplications.d.ts +3 -3
  27. package/lib/exercises/calcul/mentalCaluls.ts/mentalMultiplications.js +51 -51
  28. package/lib/exercises/calcul/mentalCaluls.ts/mentalPercentage.d.ts +3 -3
  29. package/lib/exercises/calcul/mentalCaluls.ts/mentalPercentage.js +67 -67
  30. package/lib/exercises/calcul/operations/operationsPriorities.d.ts +10 -10
  31. package/lib/exercises/calcul/operations/operationsPriorities.js +100 -100
  32. package/lib/exercises/calcul/operations/operationsPrioritiesWithoutRelative.d.ts +10 -10
  33. package/lib/exercises/calcul/operations/operationsPrioritiesWithoutRelative.js +181 -181
  34. package/lib/exercises/calcul/operationsPriorities.js +88 -0
  35. package/lib/exercises/calcul/rounding/rounding.d.ts +19 -19
  36. package/lib/exercises/calcul/rounding/rounding.js +87 -87
  37. package/lib/exercises/calculLitteral/distributivity/allIdentities.d.ts +3 -3
  38. package/lib/exercises/calculLitteral/distributivity/allIdentities.js +27 -27
  39. package/lib/exercises/calculLitteral/distributivity/doubleDistributivity.d.ts +3 -3
  40. package/lib/exercises/calculLitteral/distributivity/doubleDistributivity.js +32 -32
  41. package/lib/exercises/calculLitteral/distributivity/firstIdentity.d.ts +3 -3
  42. package/lib/exercises/calculLitteral/distributivity/firstIdentity.js +33 -33
  43. package/lib/exercises/calculLitteral/distributivity/secondIdentity.d.ts +3 -3
  44. package/lib/exercises/calculLitteral/distributivity/secondIdentity.js +34 -34
  45. package/lib/exercises/calculLitteral/distributivity/simpleDistributivity.d.ts +3 -3
  46. package/lib/exercises/calculLitteral/distributivity/simpleDistributivity.js +34 -34
  47. package/lib/exercises/calculLitteral/distributivity/thirdIdentity.d.ts +3 -3
  48. package/lib/exercises/calculLitteral/distributivity/thirdIdentity.js +33 -33
  49. package/lib/exercises/calculLitteral/equation/equationSimpleSquare.d.ts +3 -3
  50. package/lib/exercises/calculLitteral/equation/equationSimpleSquare.js +47 -47
  51. package/lib/exercises/calculLitteral/equation/equationType1Exercise.d.ts +6 -6
  52. package/lib/exercises/calculLitteral/equation/equationType1Exercise.js +39 -39
  53. package/lib/exercises/calculLitteral/equation/equationType2Exercise.d.ts +6 -6
  54. package/lib/exercises/calculLitteral/equation/equationType2Exercise.js +42 -42
  55. package/lib/exercises/calculLitteral/equation/equationType3Exercise.d.ts +6 -6
  56. package/lib/exercises/calculLitteral/equation/equationType3Exercise.js +43 -43
  57. package/lib/exercises/calculLitteral/equation/equationType4Exercise.d.ts +6 -6
  58. package/lib/exercises/calculLitteral/equation/equationType4Exercise.js +45 -45
  59. package/lib/exercises/calculLitteral/equation/firstDegreeEquation.d.ts +3 -3
  60. package/lib/exercises/calculLitteral/equation/firstDegreeEquation.js +30 -30
  61. package/lib/exercises/calculLitteral/equation/firstDegreeGeneralEquation.d.ts +3 -3
  62. package/lib/exercises/calculLitteral/equation/firstDegreeGeneralEquation.js +32 -32
  63. package/lib/exercises/calculLitteral/equation/fractionEquation.d.ts +4 -0
  64. package/lib/exercises/calculLitteral/equation/fractionEquation.d.ts.map +1 -0
  65. package/lib/exercises/calculLitteral/equation/fractionEquation.js +39 -0
  66. package/lib/exercises/calculLitteral/equation/multiplicationEquation.d.ts +4 -0
  67. package/lib/exercises/calculLitteral/equation/multiplicationEquation.d.ts.map +1 -0
  68. package/lib/exercises/calculLitteral/equation/multiplicationEquation.js +39 -0
  69. package/lib/exercises/calculLitteral/factorisation/factoIdRmq1.d.ts +3 -3
  70. package/lib/exercises/calculLitteral/factorisation/factoIdRmq1.js +34 -34
  71. package/lib/exercises/calculLitteral/factorisation/factoIdRmq2.d.ts +3 -3
  72. package/lib/exercises/calculLitteral/factorisation/factoIdRmq2.js +35 -35
  73. package/lib/exercises/calculLitteral/factorisation/factoIdRmq3.d.ts +3 -3
  74. package/lib/exercises/calculLitteral/factorisation/factoIdRmq3.js +34 -34
  75. package/lib/exercises/calculLitteral/factorisation/factoType1Exercise.d.ts +6 -6
  76. package/lib/exercises/calculLitteral/factorisation/factoType1Exercise.js +40 -40
  77. package/lib/exercises/conversion/aeraConversion.d.ts +3 -3
  78. package/lib/exercises/conversion/aeraConversion.js +32 -32
  79. package/lib/exercises/conversion/capacityConversion.d.ts +3 -3
  80. package/lib/exercises/conversion/capacityConversion.js +30 -30
  81. package/lib/exercises/conversion/lengthConversion.d.ts +3 -3
  82. package/lib/exercises/conversion/lengthConversion.js +30 -30
  83. package/lib/exercises/conversion/massConversion.d.ts +3 -3
  84. package/lib/exercises/conversion/massConversion.js +30 -30
  85. package/lib/exercises/conversion/volumeCapacityConversion.d.ts +3 -3
  86. package/lib/exercises/conversion/volumeCapacityConversion.js +47 -47
  87. package/lib/exercises/conversion/volumeConversion.d.ts +3 -3
  88. package/lib/exercises/conversion/volumeConversion.js +32 -32
  89. package/lib/exercises/derivation/derivative/affineDerivative.d.ts +4 -0
  90. package/lib/exercises/derivation/derivative/affineDerivative.d.ts.map +1 -0
  91. package/lib/exercises/derivation/derivative/affineDerivative.js +27 -0
  92. package/lib/exercises/derivation/derivative/constanteDerivative.d.ts +3 -3
  93. package/lib/exercises/derivation/derivative/constanteDerivative.js +27 -27
  94. package/lib/exercises/derivation/derivative/firstDegreeDerivative.d.ts +3 -3
  95. package/lib/exercises/derivation/derivative/firstDegreeDerivative.js +29 -29
  96. package/lib/exercises/derivation/derivative/inverseFunctionDerivative.d.ts +3 -3
  97. package/lib/exercises/derivation/derivative/inverseFunctionDerivative.js +27 -27
  98. package/lib/exercises/derivation/derivative/powerFunctionDerivative.d.ts +3 -3
  99. package/lib/exercises/derivation/derivative/powerFunctionDerivative.js +35 -35
  100. package/lib/exercises/derivation/derivative/rootFunctionDerivative.d.ts +3 -3
  101. package/lib/exercises/derivation/derivative/rootFunctionDerivative.js +40 -40
  102. package/lib/exercises/derivation/derivative/secondDegreeDerivative.d.ts +3 -3
  103. package/lib/exercises/derivation/derivative/secondDegreeDerivative.js +30 -30
  104. package/lib/exercises/derivation/derivative/thirdDegreeDerivative.d.ts +3 -3
  105. package/lib/exercises/derivation/derivative/thirdDegreeDerivative.js +33 -33
  106. package/lib/exercises/derivation/derivative/thridDegreeDerivative.d.ts +1 -0
  107. package/lib/exercises/derivation/derivative/thridDegreeDerivative.d.ts.map +1 -0
  108. package/lib/exercises/derivation/derivative/thridDegreeDerivative.js +1 -0
  109. package/lib/exercises/derivation/derivative/usualderivative.d.ts +3 -3
  110. package/lib/exercises/derivation/derivative/usualderivative.js +36 -36
  111. package/lib/exercises/exercise.d.ts +21 -21
  112. package/lib/exercises/exercise.js +7 -7
  113. package/lib/exercises/exercises.d.ts +1 -1
  114. package/lib/exercises/exercises.d.ts.map +1 -1
  115. package/lib/exercises/exercises.js +224 -198
  116. package/lib/exercises/geometry/cartesian/derivativeNumberReading.d.ts +3 -3
  117. package/lib/exercises/geometry/cartesian/derivativeNumberReading.js +51 -51
  118. package/lib/exercises/geometry/cartesian/derivativeNumberReading2.js +91 -91
  119. package/lib/exercises/geometry/cartesian/leadingCoefficient.d.ts +3 -3
  120. package/lib/exercises/geometry/cartesian/leadingCoefficient.js +60 -60
  121. package/lib/exercises/geometry/cartesian/leadingCoefficientCalculV1.d.ts +4 -0
  122. package/lib/exercises/geometry/cartesian/leadingCoefficientCalculV1.d.ts.map +1 -0
  123. package/lib/exercises/geometry/cartesian/leadingCoefficientCalculV1.js +30 -0
  124. package/lib/exercises/geometry/cartesian/leadingCoefficientCalculV2.d.ts +4 -0
  125. package/lib/exercises/geometry/cartesian/leadingCoefficientCalculV2.d.ts.map +1 -0
  126. package/lib/exercises/geometry/cartesian/leadingCoefficientCalculV2.js +29 -0
  127. package/lib/exercises/geometry/cartesian/midpoint.d.ts +3 -3
  128. package/lib/exercises/geometry/cartesian/midpoint.js +31 -31
  129. package/lib/exercises/geometry/euclidean/TriangleArea.d.ts +4 -0
  130. package/lib/exercises/geometry/euclidean/TriangleArea.d.ts.map +1 -0
  131. package/lib/exercises/geometry/euclidean/TriangleArea.js +53 -0
  132. package/lib/exercises/geometry/euclidean/pythagore.d.ts +4 -0
  133. package/lib/exercises/geometry/euclidean/pythagore.d.ts.map +1 -0
  134. package/lib/exercises/geometry/euclidean/pythagore.js +31 -0
  135. package/lib/exercises/geometry/euclidean/pythagoreCalcul.d.ts +4 -0
  136. package/lib/exercises/geometry/euclidean/pythagoreCalcul.d.ts.map +1 -0
  137. package/lib/exercises/geometry/euclidean/pythagoreCalcul.js +60 -0
  138. package/lib/exercises/geometry/euclidean/rightTriangleArea.d.ts +4 -0
  139. package/lib/exercises/geometry/euclidean/rightTriangleArea.d.ts.map +1 -0
  140. package/lib/exercises/geometry/euclidean/rightTriangleArea.js +39 -0
  141. package/lib/exercises/geometry/euclidean/thales.d.ts +4 -0
  142. package/lib/exercises/geometry/euclidean/thales.d.ts.map +1 -0
  143. package/lib/exercises/geometry/euclidean/thales.js +67 -0
  144. package/lib/exercises/geometry/euclidean/thalesCalcul.d.ts +4 -0
  145. package/lib/exercises/geometry/euclidean/thalesCalcul.d.ts.map +1 -0
  146. package/lib/exercises/geometry/euclidean/thalesCalcul.js +104 -0
  147. package/lib/exercises/geometry/euclidean/trigonometry.d.ts +4 -0
  148. package/lib/exercises/geometry/euclidean/trigonometry.d.ts.map +1 -0
  149. package/lib/exercises/geometry/euclidean/trigonometry.js +55 -0
  150. package/lib/exercises/geometry/euclidean/trigonometryAngleCalcul.d.ts +4 -0
  151. package/lib/exercises/geometry/euclidean/trigonometryAngleCalcul.d.ts.map +1 -0
  152. package/lib/exercises/geometry/euclidean/trigonometryAngleCalcul.js +42 -0
  153. package/lib/exercises/geometry/euclidean/trigonometrySideCalcul.d.ts +4 -0
  154. package/lib/exercises/geometry/euclidean/trigonometrySideCalcul.d.ts.map +1 -0
  155. package/lib/exercises/geometry/euclidean/trigonometrySideCalcul.js +52 -0
  156. package/lib/exercises/geometry/vectors/scalarProductViaCoords.d.ts +3 -3
  157. package/lib/exercises/geometry/vectors/scalarProductViaCoords.js +30 -30
  158. package/lib/exercises/geometry/vectors/scalarProductViaNorms.js +27 -27
  159. package/lib/exercises/percent/applyPercent.d.ts +3 -3
  160. package/lib/exercises/percent/applyPercent.js +41 -41
  161. package/lib/exercises/percent/averageEvolutionRate.d.ts +3 -3
  162. package/lib/exercises/percent/averageEvolutionRate.js +30 -30
  163. package/lib/exercises/percent/globalPercent.d.ts +3 -3
  164. package/lib/exercises/percent/globalPercent.js +44 -44
  165. package/lib/exercises/percent/reciprocalPercentage.d.ts +3 -3
  166. package/lib/exercises/percent/reciprocalPercentage.js +32 -32
  167. package/lib/exercises/powers/powersDivision.d.ts +7 -7
  168. package/lib/exercises/powers/powersDivision.js +46 -46
  169. package/lib/exercises/powers/powersOfTenToDecimal.d.ts +6 -6
  170. package/lib/exercises/powers/powersOfTenToDecimal.js +34 -34
  171. package/lib/exercises/powers/powersPower.d.ts +7 -7
  172. package/lib/exercises/powers/powersPower.js +45 -45
  173. package/lib/exercises/powers/powersProduct.d.ts +7 -7
  174. package/lib/exercises/powers/powersProduct.js +46 -46
  175. package/lib/exercises/powers/scientificToDecimal.d.ts +6 -6
  176. package/lib/exercises/powers/scientificToDecimal.js +39 -39
  177. package/lib/exercises/proba/conditionalProbability.d.ts +3 -3
  178. package/lib/exercises/proba/conditionalProbability.js +74 -74
  179. package/lib/exercises/proba/marginalAndConditionalFrequency.d.ts +3 -3
  180. package/lib/exercises/proba/marginalAndConditionalFrequency.js +81 -81
  181. package/lib/exercises/proba/probabilityTree.d.ts +3 -3
  182. package/lib/exercises/proba/probabilityTree.js +105 -105
  183. package/lib/exercises/sequences/arithmetic/arithmeticExplicitFormulaUsage.d.ts +3 -3
  184. package/lib/exercises/sequences/arithmetic/arithmeticExplicitFormulaUsage.js +31 -31
  185. package/lib/exercises/sequences/arithmetic/arithmeticFindExplicitFormula.d.ts +3 -3
  186. package/lib/exercises/sequences/arithmetic/arithmeticFindExplicitFormula.js +31 -31
  187. package/lib/exercises/sequences/arithmetic/arithmeticFindReason.d.ts +3 -3
  188. package/lib/exercises/sequences/arithmetic/arithmeticFindReason.js +31 -31
  189. package/lib/exercises/sequences/arithmetic/arithmeticReasonUsage.d.ts +3 -3
  190. package/lib/exercises/sequences/arithmetic/arithmeticReasonUsage.js +30 -30
  191. package/lib/exercises/sequences/arithmetic/arithmeticRecurrenceFormulaUsage.d.ts +3 -3
  192. package/lib/exercises/sequences/arithmetic/arithmeticRecurrenceFormulaUsage.js +30 -30
  193. package/lib/exercises/sequences/arithmetic/arithmeticThresholdFind.d.ts +3 -3
  194. package/lib/exercises/sequences/arithmetic/arithmeticThresholdFind.js +40 -40
  195. package/lib/exercises/sequences/geometric/geometricExplicitFormulaUsage.d.ts +3 -3
  196. package/lib/exercises/sequences/geometric/geometricExplicitFormulaUsage.js +36 -36
  197. package/lib/exercises/sequences/geometric/geometricFindExplicitFormula.d.ts +3 -3
  198. package/lib/exercises/sequences/geometric/geometricFindExplicitFormula.js +35 -35
  199. package/lib/exercises/sequences/geometric/geometricFindReason.d.ts +3 -3
  200. package/lib/exercises/sequences/geometric/geometricFindReason.js +31 -31
  201. package/lib/exercises/sequences/geometric/geometricReasonUsage.d.ts +3 -3
  202. package/lib/exercises/sequences/geometric/geometricReasonUsage.js +30 -30
  203. package/lib/exercises/sequences/geometric/geometricRecurrenceFormulaUsage.d.ts +7 -7
  204. package/lib/exercises/sequences/geometric/geometricRecurrenceFormulaUsage.js +30 -30
  205. package/lib/exercises/squareRoots/simpifySquareRoot.d.ts +3 -3
  206. package/lib/exercises/squareRoots/simpifySquareRoot.js +29 -29
  207. package/lib/exercises/trigonometry/mainRemarkableValues.d.ts +3 -3
  208. package/lib/exercises/trigonometry/mainRemarkableValues.js +30 -30
  209. package/lib/exercises/trigonometry/remarkableValues.d.ts +3 -3
  210. package/lib/exercises/trigonometry/remarkableValues.js +30 -30
  211. package/lib/exercises/utils/getDistinctQuestions.d.ts +3 -3
  212. package/lib/exercises/utils/getDistinctQuestions.js +28 -28
  213. package/lib/geometry/point.js +27 -0
  214. package/lib/geometry/vector.js +31 -0
  215. package/lib/index.d.ts +2 -2
  216. package/lib/index.js +6 -6
  217. package/lib/math/geometry/droite.d.ts +19 -19
  218. package/lib/math/geometry/droite.d.ts.map +1 -1
  219. package/lib/math/geometry/droite.js +62 -61
  220. package/lib/math/geometry/point.d.ts +29 -25
  221. package/lib/math/geometry/point.d.ts.map +1 -1
  222. package/lib/math/geometry/point.js +55 -40
  223. package/lib/math/geometry/triangles.d.ts +54 -0
  224. package/lib/math/geometry/triangles.d.ts.map +1 -0
  225. package/lib/math/geometry/triangles.js +183 -0
  226. package/lib/math/geometry/vector.d.ts +15 -15
  227. package/lib/math/geometry/vector.js +31 -31
  228. package/lib/math/numbers/decimals/decimal.d.ts +24 -24
  229. package/lib/math/numbers/decimals/decimal.js +140 -140
  230. package/lib/math/numbers/epsilon.d.ts +1 -1
  231. package/lib/math/numbers/epsilon.js +10 -10
  232. package/lib/math/numbers/integer/integer.d.ts +14 -14
  233. package/lib/math/numbers/integer/integer.js +68 -68
  234. package/lib/math/numbers/integer/power.d.ts +13 -13
  235. package/lib/math/numbers/integer/power.js +52 -52
  236. package/lib/math/numbers/nombre.d.ts +13 -13
  237. package/lib/math/numbers/nombre.js +10 -10
  238. package/lib/math/numbers/rationals/rational.d.ts +25 -25
  239. package/lib/math/numbers/rationals/rational.js +113 -113
  240. package/lib/math/numbers/reals/real.d.ts +9 -9
  241. package/lib/math/numbers/reals/real.js +16 -16
  242. package/lib/math/numbers/reals/squareRoot.d.ts +18 -18
  243. package/lib/math/numbers/reals/squareRoot.js +63 -63
  244. package/lib/math/polynomials/affine.d.ts +15 -15
  245. package/lib/math/polynomials/affine.js +42 -42
  246. package/lib/math/polynomials/polynomial.d.ts +25 -25
  247. package/lib/math/polynomials/polynomial.js +131 -131
  248. package/lib/math/sequences/arithmeticSequence.js +1 -1
  249. package/lib/math/sequences/geometricSequence.d.ts +3 -3
  250. package/lib/math/sequences/geometricSequence.js +8 -8
  251. package/lib/math/sequences/sequence.d.ts +22 -22
  252. package/lib/math/sequences/sequence.js +21 -21
  253. package/lib/math/sets/discreteSet.d.ts +10 -10
  254. package/lib/math/sets/discreteSet.js +28 -28
  255. package/lib/math/sets/emptySet.js +6 -6
  256. package/lib/math/sets/intervals/intervals.d.ts +26 -26
  257. package/lib/math/sets/intervals/intervals.js +104 -104
  258. package/lib/math/sets/mathSet.d.ts +7 -7
  259. package/lib/math/sets/mathSet.js +10 -10
  260. package/lib/math/sets/mathSetInterface.d.ts +5 -5
  261. package/lib/math/sets/mathSetInterface.js +2 -2
  262. package/lib/math/trigonometry/remarkableValue.d.ts +10 -10
  263. package/lib/math/trigonometry/remarkableValue.js +29 -29
  264. package/lib/math/trigonometry/remarkableValues.d.ts +2 -2
  265. package/lib/math/trigonometry/remarkableValues.js +51 -51
  266. package/lib/math/utils/arithmetic/coprimesOf.d.ts +1 -1
  267. package/lib/math/utils/arithmetic/coprimesOf.js +13 -13
  268. package/lib/math/utils/arithmetic/dividersOf.d.ts +1 -1
  269. package/lib/math/utils/arithmetic/dividersOf.js +12 -12
  270. package/lib/math/utils/arithmetic/gcd.d.ts +1 -1
  271. package/lib/math/utils/arithmetic/gcd.js +7 -7
  272. package/lib/math/utils/arithmetic/isSquare.d.ts +1 -1
  273. package/lib/math/utils/arithmetic/isSquare.js +7 -7
  274. package/lib/math/utils/arithmetic/lcd.d.ts +1 -1
  275. package/lib/math/utils/arithmetic/lcd.js +12 -12
  276. package/lib/math/utils/arithmetic/nonCoprimesOf.d.ts +1 -1
  277. package/lib/math/utils/arithmetic/nonCoprimesOf.js +13 -13
  278. package/lib/math/utils/arithmetic/nonDividersOf.d.ts +1 -1
  279. package/lib/math/utils/arithmetic/nonDividersOf.js +14 -14
  280. package/lib/math/utils/arithmetic/primeFactors.d.ts +5 -5
  281. package/lib/math/utils/arithmetic/primeFactors.js +22 -22
  282. package/lib/math/utils/decimals/decimalPartLengthOf.d.ts +1 -1
  283. package/lib/math/utils/decimals/decimalPartLengthOf.js +14 -14
  284. package/lib/math/utils/random/randTupleInt.d.ts +13 -13
  285. package/lib/math/utils/random/randTupleInt.js +30 -30
  286. package/lib/math/utils/random/randint.d.ts +4 -4
  287. package/lib/math/utils/random/randint.js +18 -18
  288. package/lib/math/utils/round.d.ts +1 -1
  289. package/lib/math/utils/round.js +8 -8
  290. package/lib/mathutils/arithmetic/coprimesOf.js +13 -0
  291. package/lib/mathutils/arithmetic/dividersOf.js +12 -0
  292. package/lib/mathutils/arithmetic/gcd.js +7 -0
  293. package/lib/mathutils/arithmetic/isSquare.js +7 -0
  294. package/lib/mathutils/arithmetic/lcd.js +12 -0
  295. package/lib/mathutils/arithmetic/nonCoprimesOf.js +13 -0
  296. package/lib/mathutils/arithmetic/nonDividersOf.js +14 -0
  297. package/lib/mathutils/arithmetic/primeFactors.js +22 -0
  298. package/lib/mathutils/decimals/decimalPartLengthOf.js +14 -0
  299. package/lib/mathutils/random/randTupleInt.js +30 -0
  300. package/lib/mathutils/random/randint.js +18 -0
  301. package/lib/mathutils/round.js +8 -0
  302. package/lib/numbers/decimals/decimal.js +140 -0
  303. package/lib/numbers/epsilon.js +10 -0
  304. package/lib/numbers/integer/integer.js +68 -0
  305. package/lib/numbers/integer/power.js +52 -0
  306. package/lib/numbers/nombre.js +10 -0
  307. package/lib/numbers/rationals/rational.js +113 -0
  308. package/lib/numbers/reals/real.js +16 -0
  309. package/lib/numbers/reals/squareRoot.js +63 -0
  310. package/lib/polynomials/affine.js +42 -0
  311. package/lib/polynomials/polynomial.js +125 -0
  312. package/lib/server.d.ts +1 -1
  313. package/lib/server.js +53 -53
  314. package/lib/sets/discreteSet.js +28 -0
  315. package/lib/sets/emptySet.js +6 -0
  316. package/lib/sets/intervals/intervals.js +108 -0
  317. package/lib/sets/intervals/union.js +1 -0
  318. package/lib/sets/mathSet.js +10 -0
  319. package/lib/sets/mathSetInterface.js +2 -0
  320. package/lib/tree/nodes/functions/cosNode.d.ts +9 -9
  321. package/lib/tree/nodes/functions/cosNode.js +21 -21
  322. package/lib/tree/nodes/functions/functionNode.d.ts +14 -14
  323. package/lib/tree/nodes/functions/functionNode.js +20 -20
  324. package/lib/tree/nodes/functions/oppositeNode.d.ts +7 -7
  325. package/lib/tree/nodes/functions/oppositeNode.js +26 -26
  326. package/lib/tree/nodes/functions/sinNode.js +1 -1
  327. package/lib/tree/nodes/functions/sqrtNode.d.ts +8 -8
  328. package/lib/tree/nodes/functions/sqrtNode.js +18 -18
  329. package/lib/tree/nodes/node.d.ts +12 -12
  330. package/lib/tree/nodes/node.js +11 -11
  331. package/lib/tree/nodes/numbers/constantNode.d.ts +9 -9
  332. package/lib/tree/nodes/numbers/constantNode.js +18 -18
  333. package/lib/tree/nodes/numbers/numberNode.d.ts +10 -10
  334. package/lib/tree/nodes/numbers/numberNode.js +19 -19
  335. package/lib/tree/nodes/numbers/piNode.d.ts +2 -2
  336. package/lib/tree/nodes/numbers/piNode.js +5 -5
  337. package/lib/tree/nodes/operators/addNode.d.ts +7 -7
  338. package/lib/tree/nodes/operators/addNode.js +19 -19
  339. package/lib/tree/nodes/operators/divideNode.d.ts +11 -11
  340. package/lib/tree/nodes/operators/divideNode.js +34 -34
  341. package/lib/tree/nodes/operators/equalNode.d.ts +7 -7
  342. package/lib/tree/nodes/operators/equalNode.js +16 -16
  343. package/lib/tree/nodes/operators/fractionNode.d.ts +11 -11
  344. package/lib/tree/nodes/operators/fractionNode.js +20 -20
  345. package/lib/tree/nodes/operators/multiplyNode.d.ts +7 -7
  346. package/lib/tree/nodes/operators/multiplyNode.js +43 -43
  347. package/lib/tree/nodes/operators/operatorNode.d.ts +21 -21
  348. package/lib/tree/nodes/operators/operatorNode.js +35 -35
  349. package/lib/tree/nodes/operators/powerNode.d.ts +7 -7
  350. package/lib/tree/nodes/operators/powerNode.js +33 -33
  351. package/lib/tree/nodes/operators/substractNode.d.ts +7 -7
  352. package/lib/tree/nodes/operators/substractNode.js +24 -24
  353. package/lib/tree/nodes/variables/variableNode.d.ts +8 -8
  354. package/lib/tree/nodes/variables/variableNode.js +19 -19
  355. package/lib/tree/parsers/derivateParser.js +62 -62
  356. package/lib/tree/parsers/latexParser.js +110 -0
  357. package/lib/tree/parsers/simplify.d.ts +2 -2
  358. package/lib/tree/parsers/simplify.js +52 -52
  359. package/lib/utils/arrayEqual.d.ts +1 -1
  360. package/lib/utils/arrayEqual.js +13 -13
  361. package/lib/utils/coin.js +7 -0
  362. package/lib/utils/coinFlip.d.ts +1 -1
  363. package/lib/utils/coinFlip.js +7 -7
  364. package/lib/utils/random.d.ts +1 -1
  365. package/lib/utils/random.js +7 -7
  366. package/lib/utils/shuffle.d.ts +1 -1
  367. package/lib/utils/shuffle.js +15 -15
  368. package/package.json +50 -50
@@ -1,16 +1,16 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Real = void 0;
4
- const numberNode_1 = require("../../../tree/nodes/numbers/numberNode");
5
- const nombre_1 = require("../nombre");
6
- class Real {
7
- constructor(value, tex) {
8
- this.value = value;
9
- this.tex = tex;
10
- this.type = nombre_1.NumberType.Real;
11
- }
12
- toTree() {
13
- return new numberNode_1.NumberNode(this.value);
14
- }
15
- }
16
- exports.Real = Real;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Real = void 0;
4
+ const numberNode_1 = require("../../../tree/nodes/numbers/numberNode");
5
+ const nombre_1 = require("../nombre");
6
+ class Real {
7
+ constructor(value, tex) {
8
+ this.value = value;
9
+ this.tex = tex;
10
+ this.type = nombre_1.NumberType.Real;
11
+ }
12
+ toTree() {
13
+ return new numberNode_1.NumberNode(this.value);
14
+ }
15
+ }
16
+ exports.Real = Real;
@@ -1,19 +1,19 @@
1
- import { Node } from '../../../tree/nodes/node';
2
- import { Real } from './real';
3
- export declare abstract class SquareRootConstructor {
4
- /**
5
- * @returns simplifiable square root type sqrt(c)=a*sqrt(b)
6
- */
7
- static randomSimplifiable({ allowPerfectSquare, maxSquare }: {
8
- allowPerfectSquare?: boolean | undefined;
9
- maxSquare?: number | undefined;
10
- }): SquareRoot;
11
- }
12
- export declare class SquareRoot extends Real {
13
- operand: number;
14
- constructor(operand: number);
15
- simplify(): Real;
16
- toTex(): string;
17
- toTree(): Node;
18
- }
1
+ import { Node } from '../../../tree/nodes/node';
2
+ import { Real } from './real';
3
+ export declare abstract class SquareRootConstructor {
4
+ /**
5
+ * @returns simplifiable square root type sqrt(c)=a*sqrt(b)
6
+ */
7
+ static randomSimplifiable({ allowPerfectSquare, maxSquare }: {
8
+ allowPerfectSquare?: boolean | undefined;
9
+ maxSquare?: number | undefined;
10
+ }): SquareRoot;
11
+ }
12
+ export declare class SquareRoot extends Real {
13
+ operand: number;
14
+ constructor(operand: number);
15
+ simplify(): Real;
16
+ toTex(): string;
17
+ toTree(): Node;
18
+ }
19
19
  //# sourceMappingURL=squareRoot.d.ts.map
@@ -1,63 +1,63 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SquareRoot = exports.SquareRootConstructor = void 0;
4
- const isSquare_1 = require("../../../math/utils/arithmetic/isSquare");
5
- const primeFactors_1 = require("../../../math/utils/arithmetic/primeFactors");
6
- const randint_1 = require("../../../math/utils/random/randint");
7
- const sqrtNode_1 = require("../../../tree/nodes/functions/sqrtNode");
8
- const numberNode_1 = require("../../../tree/nodes/numbers/numberNode");
9
- const multiplyNode_1 = require("../../../tree/nodes/operators/multiplyNode");
10
- const real_1 = require("./real");
11
- class SquareRootConstructor {
12
- /**
13
- * @returns simplifiable square root type sqrt(c)=a*sqrt(b)
14
- */
15
- static randomSimplifiable({ allowPerfectSquare = false, maxSquare = 11 }) {
16
- const a = (0, randint_1.randint)(2, maxSquare);
17
- let b;
18
- let bMin = allowPerfectSquare ? 1 : 2;
19
- do {
20
- b = (0, randint_1.randint)(bMin, maxSquare);
21
- } while (b % (a * a) === 0 || (0, isSquare_1.isSquare)(b));
22
- return new SquareRoot(a * a * b);
23
- }
24
- }
25
- exports.SquareRootConstructor = SquareRootConstructor;
26
- class SquareRoot extends real_1.Real {
27
- constructor(operand) {
28
- super(Math.sqrt(operand), `\\sqrt{${operand}}`);
29
- this.operand = operand;
30
- }
31
- simplify() {
32
- const factors = (0, primeFactors_1.primeFactors)(this.operand);
33
- // finds primes with even exponents
34
- const multiples = [1];
35
- for (let i = 0; i < factors.length - 1; i++) {
36
- if (factors[i] === factors[i + 1]) {
37
- multiples.push(factors[i]);
38
- factors.splice(i, 2);
39
- i--;
40
- }
41
- }
42
- const outsideSqrt = multiples.reduce((x, y) => x * y);
43
- const insideSqrt = factors.length === 0 ? 1 : factors.reduce((x, y) => x * y);
44
- const simplified = insideSqrt !== 1
45
- ? new real_1.Real(outsideSqrt * Math.sqrt(insideSqrt), `${outsideSqrt === 1 ? '' : `${outsideSqrt}`}\\sqrt{${insideSqrt}}`)
46
- : new real_1.Real(outsideSqrt, outsideSqrt + '');
47
- simplified.toTree = () => {
48
- return insideSqrt !== 1
49
- ? outsideSqrt === 1
50
- ? new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(insideSqrt))
51
- : new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(outsideSqrt), new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(insideSqrt)))
52
- : new numberNode_1.NumberNode(outsideSqrt);
53
- };
54
- return simplified;
55
- }
56
- toTex() {
57
- return this.tex;
58
- }
59
- toTree() {
60
- return new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(this.operand));
61
- }
62
- }
63
- exports.SquareRoot = SquareRoot;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SquareRoot = exports.SquareRootConstructor = void 0;
4
+ const isSquare_1 = require("../../../math/utils/arithmetic/isSquare");
5
+ const primeFactors_1 = require("../../../math/utils/arithmetic/primeFactors");
6
+ const randint_1 = require("../../../math/utils/random/randint");
7
+ const sqrtNode_1 = require("../../../tree/nodes/functions/sqrtNode");
8
+ const numberNode_1 = require("../../../tree/nodes/numbers/numberNode");
9
+ const multiplyNode_1 = require("../../../tree/nodes/operators/multiplyNode");
10
+ const real_1 = require("./real");
11
+ class SquareRootConstructor {
12
+ /**
13
+ * @returns simplifiable square root type sqrt(c)=a*sqrt(b)
14
+ */
15
+ static randomSimplifiable({ allowPerfectSquare = false, maxSquare = 11 }) {
16
+ const a = (0, randint_1.randint)(2, maxSquare);
17
+ let b;
18
+ let bMin = allowPerfectSquare ? 1 : 2;
19
+ do {
20
+ b = (0, randint_1.randint)(bMin, maxSquare);
21
+ } while (b % (a * a) === 0 || (0, isSquare_1.isSquare)(b));
22
+ return new SquareRoot(a * a * b);
23
+ }
24
+ }
25
+ exports.SquareRootConstructor = SquareRootConstructor;
26
+ class SquareRoot extends real_1.Real {
27
+ constructor(operand) {
28
+ super(Math.sqrt(operand), `\\sqrt{${operand}}`);
29
+ this.operand = operand;
30
+ }
31
+ simplify() {
32
+ const factors = (0, primeFactors_1.primeFactors)(this.operand);
33
+ // finds primes with even exponents
34
+ const multiples = [1];
35
+ for (let i = 0; i < factors.length - 1; i++) {
36
+ if (factors[i] === factors[i + 1]) {
37
+ multiples.push(factors[i]);
38
+ factors.splice(i, 2);
39
+ i--;
40
+ }
41
+ }
42
+ const outsideSqrt = multiples.reduce((x, y) => x * y);
43
+ const insideSqrt = factors.length === 0 ? 1 : factors.reduce((x, y) => x * y);
44
+ const simplified = insideSqrt !== 1
45
+ ? new real_1.Real(outsideSqrt * Math.sqrt(insideSqrt), `${outsideSqrt === 1 ? '' : `${outsideSqrt}`}\\sqrt{${insideSqrt}}`)
46
+ : new real_1.Real(outsideSqrt, outsideSqrt + '');
47
+ simplified.toTree = () => {
48
+ return insideSqrt !== 1
49
+ ? outsideSqrt === 1
50
+ ? new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(insideSqrt))
51
+ : new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(outsideSqrt), new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(insideSqrt)))
52
+ : new numberNode_1.NumberNode(outsideSqrt);
53
+ };
54
+ return simplified;
55
+ }
56
+ toTex() {
57
+ return this.tex;
58
+ }
59
+ toTree() {
60
+ return new sqrtNode_1.SqrtNode(new numberNode_1.NumberNode(this.operand));
61
+ }
62
+ }
63
+ exports.SquareRoot = SquareRoot;
@@ -1,16 +1,16 @@
1
- import { Nombre } from '../numbers/nombre';
2
- import { MathSet } from '../sets/mathSet';
3
- import { Polynomial } from './polynomial';
4
- export declare abstract class AffineConstructor {
5
- static random(domainA?: MathSet, domainB?: MathSet): Affine;
6
- static differentRandoms(nb: number, domainA?: MathSet, domainB?: MathSet): Affine[];
7
- }
8
- export declare class Affine extends Polynomial {
9
- a: number;
10
- b: number;
11
- variable: string;
12
- constructor(a: number, b: number, variable?: string);
13
- getRoot(): Nombre;
14
- toString(): string;
15
- }
1
+ import { Nombre } from '../numbers/nombre';
2
+ import { MathSet } from '../sets/mathSet';
3
+ import { Polynomial } from './polynomial';
4
+ export declare abstract class AffineConstructor {
5
+ static random(domainA?: MathSet, domainB?: MathSet): Affine;
6
+ static differentRandoms(nb: number, domainA?: MathSet, domainB?: MathSet): Affine[];
7
+ }
8
+ export declare class Affine extends Polynomial {
9
+ a: number;
10
+ b: number;
11
+ variable: string;
12
+ constructor(a: number, b: number, variable?: string);
13
+ getRoot(): Nombre;
14
+ toString(): string;
15
+ }
16
16
  //# sourceMappingURL=affine.d.ts.map
@@ -1,42 +1,42 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Affine = exports.AffineConstructor = void 0;
4
- const integer_1 = require("../numbers/integer/integer");
5
- const rational_1 = require("../numbers/rationals/rational");
6
- const discreteSet_1 = require("../sets/discreteSet");
7
- const intervals_1 = require("../sets/intervals/intervals");
8
- const polynomial_1 = require("./polynomial");
9
- 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
- return new Affine(a.value, b.value);
14
- }
15
- 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]]')) {
16
- const res = [];
17
- for (let i = 0; i < nb; i++) {
18
- let aff;
19
- do {
20
- aff = AffineConstructor.random(domainA, domainB);
21
- } while (res.some((affine) => affine.equals(aff)));
22
- res.push(aff);
23
- }
24
- return res;
25
- }
26
- }
27
- exports.AffineConstructor = AffineConstructor;
28
- class Affine extends polynomial_1.Polynomial {
29
- constructor(a, b, variable = 'x') {
30
- super([b, a], variable);
31
- this.a = a;
32
- this.b = b;
33
- this.variable = variable;
34
- }
35
- getRoot() {
36
- return new rational_1.Rational(-this.b, this.a).simplify();
37
- }
38
- toString() {
39
- return super.toTex();
40
- }
41
- }
42
- exports.Affine = Affine;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Affine = exports.AffineConstructor = void 0;
4
+ const integer_1 = require("../numbers/integer/integer");
5
+ const rational_1 = require("../numbers/rationals/rational");
6
+ const discreteSet_1 = require("../sets/discreteSet");
7
+ const intervals_1 = require("../sets/intervals/intervals");
8
+ const polynomial_1 = require("./polynomial");
9
+ 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
+ return new Affine(a.value, b.value);
14
+ }
15
+ 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]]')) {
16
+ const res = [];
17
+ for (let i = 0; i < nb; i++) {
18
+ let aff;
19
+ do {
20
+ aff = AffineConstructor.random(domainA, domainB);
21
+ } while (res.some((affine) => affine.equals(aff)));
22
+ res.push(aff);
23
+ }
24
+ return res;
25
+ }
26
+ }
27
+ exports.AffineConstructor = AffineConstructor;
28
+ class Affine extends polynomial_1.Polynomial {
29
+ constructor(a, b, variable = 'x') {
30
+ super([b, a], variable);
31
+ this.a = a;
32
+ this.b = b;
33
+ this.variable = variable;
34
+ }
35
+ getRoot() {
36
+ return new rational_1.Rational(-this.b, this.a).simplify();
37
+ }
38
+ toString() {
39
+ return super.toTex();
40
+ }
41
+ }
42
+ exports.Affine = Affine;
@@ -1,26 +1,26 @@
1
- import { Node } from '../../tree/nodes/node';
2
- export declare class Polynomial {
3
- degree: number;
4
- variable: string;
5
- /**
6
- * coefficients[i] est le coeff de x^i
7
- */
8
- coefficients: number[];
9
- /**
10
- *
11
- * @param coefficients coefficients[i] est le coeff de x^i
12
- * @param variable
13
- */
14
- constructor(coefficients: number[], variable?: string);
15
- equals(P: Polynomial): boolean;
16
- getRoots(): void;
17
- add(P: Polynomial): Polynomial;
18
- times(nb: number): Polynomial;
19
- multiply(Q: Polynomial): Polynomial;
20
- opposite(): Polynomial;
21
- derivate(): Polynomial;
22
- toTree(): Node;
23
- toTex(): string;
24
- toString(): string;
25
- }
1
+ import { Node } from '../../tree/nodes/node';
2
+ export declare class Polynomial {
3
+ degree: number;
4
+ variable: string;
5
+ /**
6
+ * coefficients[i] est le coeff de x^i
7
+ */
8
+ coefficients: number[];
9
+ /**
10
+ *
11
+ * @param coefficients coefficients[i] est le coeff de x^i
12
+ * @param variable
13
+ */
14
+ constructor(coefficients: number[], variable?: string);
15
+ equals(P: Polynomial): boolean;
16
+ getRoots(): void;
17
+ add(P: Polynomial): Polynomial;
18
+ times(nb: number): Polynomial;
19
+ multiply(Q: Polynomial): Polynomial;
20
+ opposite(): Polynomial;
21
+ derivate(): Polynomial;
22
+ toTree(): Node;
23
+ toTex(): string;
24
+ toString(): string;
25
+ }
26
26
  //# sourceMappingURL=polynomial.d.ts.map
@@ -1,131 +1,131 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Polynomial = void 0;
4
- const numberNode_1 = require("../../tree/nodes/numbers/numberNode");
5
- const addNode_1 = require("../../tree/nodes/operators/addNode");
6
- const multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
7
- const oppositeNode_1 = require("../../tree/nodes/functions/oppositeNode");
8
- const powerNode_1 = require("../../tree/nodes/operators/powerNode");
9
- const variableNode_1 = require("../../tree/nodes/variables/variableNode");
10
- class Polynomial {
11
- /**
12
- *
13
- * @param coefficients coefficients[i] est le coeff de x^i
14
- * @param variable
15
- */
16
- constructor(coefficients, variable = 'x') {
17
- if (coefficients.length === 0)
18
- throw Error('coeffs must be not null');
19
- if (coefficients[coefficients.length - 1] === 0) {
20
- throw Error('n-th coeff must be not null');
21
- }
22
- this.coefficients = coefficients;
23
- this.variable = variable;
24
- this.degree = coefficients.length - 1;
25
- }
26
- equals(P) {
27
- return P.degree === this.degree && this.coefficients.every((coeff, i) => coeff === P.coefficients[i]);
28
- }
29
- getRoots() { }
30
- add(P) {
31
- if (P.variable !== this.variable)
32
- throw Error("Can't add two polynomials with different variables");
33
- const newDegree = P.degree === this.degree && P.coefficients[P.degree] === -this.coefficients[this.degree]
34
- ? P.degree - 1
35
- : Math.max(P.degree, this.degree);
36
- const res = [];
37
- for (let i = 0; i < newDegree + 1; i++) {
38
- res[i] = P.coefficients[i] + this.coefficients[i];
39
- }
40
- return new Polynomial(res, this.variable);
41
- }
42
- times(nb) {
43
- return new Polynomial(this.coefficients.map((coeff) => coeff * nb), this.variable);
44
- }
45
- multiply(Q) {
46
- if (Q.variable !== this.variable)
47
- throw Error("Can't multiply two polynomials with different variables");
48
- const p = this.degree;
49
- const q = Q.degree;
50
- const res = Array.apply(0, new Array(this.degree)).map((i) => 0);
51
- for (let k = 0; k <= p + q; k++) {
52
- let sum = 0;
53
- for (let m = 0; m <= k; m++) {
54
- sum += (this.coefficients[m] || 0) * (Q.coefficients[k - m] || 0);
55
- }
56
- res[k] = sum;
57
- }
58
- return new Polynomial(res, this.variable);
59
- }
60
- opposite() {
61
- return new Polynomial(this.coefficients.map((coeff) => -coeff), this.variable);
62
- }
63
- derivate() {
64
- const res = [];
65
- for (let i = 1; i < this.coefficients.length; i++)
66
- res.push(i * this.coefficients[i]);
67
- return new Polynomial(res, this.variable);
68
- }
69
- toTree() {
70
- const recursive = (cursor) => {
71
- const coeff = this.coefficients[cursor];
72
- if (coeff === 0)
73
- return recursive(cursor - 1);
74
- if (cursor === 0) {
75
- return new numberNode_1.NumberNode(coeff);
76
- }
77
- const monome = cursor > 1
78
- ? new powerNode_1.PowerNode(new variableNode_1.VariableNode(this.variable), new numberNode_1.NumberNode(cursor))
79
- : new variableNode_1.VariableNode(this.variable);
80
- let res;
81
- if (coeff === 1)
82
- res = monome;
83
- else if (coeff === -1)
84
- res = new oppositeNode_1.OppositeNode(monome);
85
- else
86
- res = new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(coeff), monome);
87
- let nextCoeff;
88
- for (let i = cursor - 1; i > -1; i--) {
89
- if (this.coefficients[i]) {
90
- nextCoeff = this.coefficients[i];
91
- break;
92
- }
93
- }
94
- if (nextCoeff) {
95
- return new addNode_1.AddNode(res, recursive(cursor - 1));
96
- }
97
- else {
98
- return res;
99
- }
100
- };
101
- return recursive(this.degree);
102
- }
103
- toTex() {
104
- let s = '';
105
- for (let i = this.degree; i > -1; i--) {
106
- const coeff = this.coefficients[i];
107
- if (coeff === 0)
108
- continue;
109
- if (i === 0)
110
- s += coeff > 0 ? `+${coeff}` : coeff;
111
- else if (i === this.degree) {
112
- s += coeff === 1 ? '' : coeff === -1 ? '-' : coeff;
113
- }
114
- else {
115
- s += coeff === 1 ? '+' : coeff === -1 ? '-' : coeff > 0 ? `+${coeff}` : coeff;
116
- }
117
- //x^n
118
- if (i === 0)
119
- continue;
120
- if (i === 1)
121
- s += this.variable;
122
- else
123
- s += `${this.variable}^{${i}}`;
124
- }
125
- return s;
126
- }
127
- toString() {
128
- return this.toTex();
129
- }
130
- }
131
- exports.Polynomial = Polynomial;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Polynomial = void 0;
4
+ const numberNode_1 = require("../../tree/nodes/numbers/numberNode");
5
+ const addNode_1 = require("../../tree/nodes/operators/addNode");
6
+ const multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
7
+ const oppositeNode_1 = require("../../tree/nodes/functions/oppositeNode");
8
+ const powerNode_1 = require("../../tree/nodes/operators/powerNode");
9
+ const variableNode_1 = require("../../tree/nodes/variables/variableNode");
10
+ class Polynomial {
11
+ /**
12
+ *
13
+ * @param coefficients coefficients[i] est le coeff de x^i
14
+ * @param variable
15
+ */
16
+ constructor(coefficients, variable = 'x') {
17
+ if (coefficients.length === 0)
18
+ throw Error('coeffs must be not null');
19
+ if (coefficients[coefficients.length - 1] === 0) {
20
+ throw Error('n-th coeff must be not null');
21
+ }
22
+ this.coefficients = coefficients;
23
+ this.variable = variable;
24
+ this.degree = coefficients.length - 1;
25
+ }
26
+ equals(P) {
27
+ return P.degree === this.degree && this.coefficients.every((coeff, i) => coeff === P.coefficients[i]);
28
+ }
29
+ getRoots() { }
30
+ add(P) {
31
+ if (P.variable !== this.variable)
32
+ throw Error("Can't add two polynomials with different variables");
33
+ const newDegree = P.degree === this.degree && P.coefficients[P.degree] === -this.coefficients[this.degree]
34
+ ? P.degree - 1
35
+ : Math.max(P.degree, this.degree);
36
+ const res = [];
37
+ for (let i = 0; i < newDegree + 1; i++) {
38
+ res[i] = P.coefficients[i] + this.coefficients[i];
39
+ }
40
+ return new Polynomial(res, this.variable);
41
+ }
42
+ times(nb) {
43
+ return new Polynomial(this.coefficients.map((coeff) => coeff * nb), this.variable);
44
+ }
45
+ multiply(Q) {
46
+ if (Q.variable !== this.variable)
47
+ throw Error("Can't multiply two polynomials with different variables");
48
+ const p = this.degree;
49
+ const q = Q.degree;
50
+ const res = Array.apply(0, new Array(this.degree)).map((i) => 0);
51
+ for (let k = 0; k <= p + q; k++) {
52
+ let sum = 0;
53
+ for (let m = 0; m <= k; m++) {
54
+ sum += (this.coefficients[m] || 0) * (Q.coefficients[k - m] || 0);
55
+ }
56
+ res[k] = sum;
57
+ }
58
+ return new Polynomial(res, this.variable);
59
+ }
60
+ opposite() {
61
+ return new Polynomial(this.coefficients.map((coeff) => -coeff), this.variable);
62
+ }
63
+ derivate() {
64
+ const res = [];
65
+ for (let i = 1; i < this.coefficients.length; i++)
66
+ res.push(i * this.coefficients[i]);
67
+ return new Polynomial(res, this.variable);
68
+ }
69
+ toTree() {
70
+ const recursive = (cursor) => {
71
+ const coeff = this.coefficients[cursor];
72
+ if (coeff === 0)
73
+ return recursive(cursor - 1);
74
+ if (cursor === 0) {
75
+ return new numberNode_1.NumberNode(coeff);
76
+ }
77
+ const monome = cursor > 1
78
+ ? new powerNode_1.PowerNode(new variableNode_1.VariableNode(this.variable), new numberNode_1.NumberNode(cursor))
79
+ : new variableNode_1.VariableNode(this.variable);
80
+ let res;
81
+ if (coeff === 1)
82
+ res = monome;
83
+ else if (coeff === -1)
84
+ res = new oppositeNode_1.OppositeNode(monome);
85
+ else
86
+ res = new multiplyNode_1.MultiplyNode(new numberNode_1.NumberNode(coeff), monome);
87
+ let nextCoeff;
88
+ for (let i = cursor - 1; i > -1; i--) {
89
+ if (this.coefficients[i]) {
90
+ nextCoeff = this.coefficients[i];
91
+ break;
92
+ }
93
+ }
94
+ if (nextCoeff) {
95
+ return new addNode_1.AddNode(res, recursive(cursor - 1));
96
+ }
97
+ else {
98
+ return res;
99
+ }
100
+ };
101
+ return recursive(this.degree);
102
+ }
103
+ toTex() {
104
+ let s = '';
105
+ for (let i = this.degree; i > -1; i--) {
106
+ const coeff = this.coefficients[i];
107
+ if (coeff === 0)
108
+ continue;
109
+ if (i === 0)
110
+ s += coeff > 0 ? `+${coeff}` : coeff;
111
+ else if (i === this.degree) {
112
+ s += coeff === 1 ? '' : coeff === -1 ? '-' : coeff;
113
+ }
114
+ else {
115
+ s += coeff === 1 ? '+' : coeff === -1 ? '-' : coeff > 0 ? `+${coeff}` : coeff;
116
+ }
117
+ //x^n
118
+ if (i === 0)
119
+ continue;
120
+ if (i === 1)
121
+ s += this.variable;
122
+ else
123
+ s += `${this.variable}^{${i}}`;
124
+ }
125
+ return s;
126
+ }
127
+ toString() {
128
+ return this.toTex();
129
+ }
130
+ }
131
+ exports.Polynomial = Polynomial;
@@ -1 +1 @@
1
- "use strict";
1
+ "use strict";
@@ -1,4 +1,4 @@
1
- export declare abstract class GeometricSequenceConstructor {
2
- static random(): void;
3
- }
1
+ export declare abstract class GeometricSequenceConstructor {
2
+ static random(): void;
3
+ }
4
4
  //# sourceMappingURL=geometricSequence.d.ts.map