math-exercises 1.3.31 → 1.3.33

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,35 +1,35 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OperatorNode = exports.OperatorIds = void 0;
4
- const coinFlip_1 = require("../../../utils/coinFlip");
5
- const node_1 = require("../node");
6
- var OperatorIds;
7
- (function (OperatorIds) {
8
- OperatorIds[OperatorIds["add"] = 0] = "add";
9
- OperatorIds[OperatorIds["substract"] = 1] = "substract";
10
- OperatorIds[OperatorIds["multiply"] = 2] = "multiply";
11
- OperatorIds[OperatorIds["fraction"] = 3] = "fraction";
12
- OperatorIds[OperatorIds["divide"] = 4] = "divide";
13
- OperatorIds[OperatorIds["power"] = 5] = "power";
14
- OperatorIds[OperatorIds["equal"] = 6] = "equal";
15
- })(OperatorIds = exports.OperatorIds || (exports.OperatorIds = {}));
16
- class OperatorNode {
17
- constructor(id, leftChild, rightChild, isCommutative, tex) {
18
- this.type = node_1.NodeType.operator;
19
- this.id = id;
20
- this.leftChild = leftChild;
21
- this.rightChild = rightChild;
22
- this.isCommutative = isCommutative;
23
- this.tex = tex;
24
- }
25
- /**shuffles in place */
26
- shuffle() {
27
- if (!this.isCommutative)
28
- return;
29
- if ((0, coinFlip_1.coinFlip)())
30
- return;
31
- [this.leftChild, this.rightChild] = [this.rightChild, this.leftChild];
32
- return;
33
- }
34
- }
35
- exports.OperatorNode = OperatorNode;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OperatorNode = exports.OperatorIds = void 0;
4
+ const coinFlip_1 = require("../../../utils/coinFlip");
5
+ const node_1 = require("../node");
6
+ var OperatorIds;
7
+ (function (OperatorIds) {
8
+ OperatorIds[OperatorIds["add"] = 0] = "add";
9
+ OperatorIds[OperatorIds["substract"] = 1] = "substract";
10
+ OperatorIds[OperatorIds["multiply"] = 2] = "multiply";
11
+ OperatorIds[OperatorIds["fraction"] = 3] = "fraction";
12
+ OperatorIds[OperatorIds["divide"] = 4] = "divide";
13
+ OperatorIds[OperatorIds["power"] = 5] = "power";
14
+ OperatorIds[OperatorIds["equal"] = 6] = "equal";
15
+ })(OperatorIds = exports.OperatorIds || (exports.OperatorIds = {}));
16
+ class OperatorNode {
17
+ constructor(id, leftChild, rightChild, isCommutative, tex) {
18
+ this.type = node_1.NodeType.operator;
19
+ this.id = id;
20
+ this.leftChild = leftChild;
21
+ this.rightChild = rightChild;
22
+ this.isCommutative = isCommutative;
23
+ this.tex = tex;
24
+ }
25
+ /**shuffles in place */
26
+ shuffle() {
27
+ if (!this.isCommutative)
28
+ return;
29
+ if ((0, coinFlip_1.coinFlip)())
30
+ return;
31
+ [this.leftChild, this.rightChild] = [this.rightChild, this.leftChild];
32
+ return;
33
+ }
34
+ }
35
+ exports.OperatorNode = OperatorNode;
@@ -1,8 +1,8 @@
1
- import { Node } from '../node';
2
- import { OperatorNode } from './operatorNode';
3
- export declare class PowerNode extends OperatorNode implements Node {
4
- constructor(leftChild: Node, rightChild: Node);
5
- toMathString(): string;
6
- toTex(): string;
7
- }
1
+ import { Node } from '../node';
2
+ import { OperatorNode } from './operatorNode';
3
+ export declare class PowerNode extends OperatorNode implements Node {
4
+ constructor(leftChild: Node, rightChild: Node);
5
+ toMathString(): string;
6
+ toTex(): string;
7
+ }
8
8
  //# sourceMappingURL=powerNode.d.ts.map
@@ -1,33 +1,33 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PowerNode = void 0;
4
- const node_1 = require("../node");
5
- const operatorNode_1 = require("./operatorNode");
6
- class PowerNode extends operatorNode_1.OperatorNode {
7
- constructor(leftChild, rightChild) {
8
- super(operatorNode_1.OperatorIds.power, leftChild, rightChild, false, '^');
9
- }
10
- toMathString() {
11
- return `(${this.leftChild.toMathString()})^(${this.rightChild.toMathString()})`;
12
- }
13
- toTex() {
14
- let rightTex = this.rightChild.toTex();
15
- let leftTex = this.leftChild.toTex();
16
- let needBrackets = leftTex[0] === '-';
17
- if (this.leftChild.type === node_1.NodeType.operator) {
18
- const childOperator = this.leftChild;
19
- needBrackets || (needBrackets = [
20
- operatorNode_1.OperatorIds.add,
21
- operatorNode_1.OperatorIds.substract,
22
- operatorNode_1.OperatorIds.multiply,
23
- operatorNode_1.OperatorIds.divide,
24
- operatorNode_1.OperatorIds.fraction,
25
- operatorNode_1.OperatorIds.power,
26
- ].includes(childOperator.id));
27
- }
28
- if (needBrackets)
29
- leftTex = `(${leftTex})`;
30
- return `${leftTex}^{${rightTex}}`;
31
- }
32
- }
33
- exports.PowerNode = PowerNode;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PowerNode = void 0;
4
+ const node_1 = require("../node");
5
+ const operatorNode_1 = require("./operatorNode");
6
+ class PowerNode extends operatorNode_1.OperatorNode {
7
+ constructor(leftChild, rightChild) {
8
+ super(operatorNode_1.OperatorIds.power, leftChild, rightChild, false, '^');
9
+ }
10
+ toMathString() {
11
+ return `(${this.leftChild.toMathString()})^(${this.rightChild.toMathString()})`;
12
+ }
13
+ toTex() {
14
+ let rightTex = this.rightChild.toTex();
15
+ let leftTex = this.leftChild.toTex();
16
+ let needBrackets = leftTex[0] === '-';
17
+ if (this.leftChild.type === node_1.NodeType.operator) {
18
+ const childOperator = this.leftChild;
19
+ needBrackets || (needBrackets = [
20
+ operatorNode_1.OperatorIds.add,
21
+ operatorNode_1.OperatorIds.substract,
22
+ operatorNode_1.OperatorIds.multiply,
23
+ operatorNode_1.OperatorIds.divide,
24
+ operatorNode_1.OperatorIds.fraction,
25
+ operatorNode_1.OperatorIds.power,
26
+ ].includes(childOperator.id));
27
+ }
28
+ if (needBrackets)
29
+ leftTex = `(${leftTex})`;
30
+ return `${leftTex}^{${rightTex}}`;
31
+ }
32
+ }
33
+ exports.PowerNode = PowerNode;
@@ -1,8 +1,8 @@
1
- import { Node } from '../node';
2
- import { OperatorNode } from './operatorNode';
3
- export declare class SubstractNode extends OperatorNode implements Node {
4
- constructor(leftChild: Node, rightChild: Node);
5
- toMathString(): string;
6
- toTex(): string;
7
- }
1
+ import { Node } from '../node';
2
+ import { OperatorNode } from './operatorNode';
3
+ export declare class SubstractNode extends OperatorNode implements Node {
4
+ constructor(leftChild: Node, rightChild: Node);
5
+ toMathString(): string;
6
+ toTex(): string;
7
+ }
8
8
  //# sourceMappingURL=substractNode.d.ts.map
@@ -1,24 +1,24 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SubstractNode = void 0;
4
- const node_1 = require("../node");
5
- const operatorNode_1 = require("./operatorNode");
6
- class SubstractNode extends operatorNode_1.OperatorNode {
7
- constructor(leftChild, rightChild) {
8
- super(operatorNode_1.OperatorIds.substract, leftChild, rightChild, false, '-');
9
- }
10
- toMathString() {
11
- return `${this.leftChild.toMathString()}-(${this.rightChild.toMathString()})`;
12
- }
13
- toTex() {
14
- let rightTex = this.rightChild.toTex();
15
- let leftTex = this.leftChild.toTex();
16
- const needBrackets = (this.rightChild.type === node_1.NodeType.operator &&
17
- [operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract].includes(this.rightChild.id)) ||
18
- rightTex[0] === '-';
19
- if (needBrackets)
20
- rightTex = `(${rightTex})`;
21
- return `${leftTex} - ${rightTex}`;
22
- }
23
- }
24
- exports.SubstractNode = SubstractNode;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SubstractNode = void 0;
4
+ const node_1 = require("../node");
5
+ const operatorNode_1 = require("./operatorNode");
6
+ class SubstractNode extends operatorNode_1.OperatorNode {
7
+ constructor(leftChild, rightChild) {
8
+ super(operatorNode_1.OperatorIds.substract, leftChild, rightChild, false, '-');
9
+ }
10
+ toMathString() {
11
+ return `${this.leftChild.toMathString()}-(${this.rightChild.toMathString()})`;
12
+ }
13
+ toTex() {
14
+ let rightTex = this.rightChild.toTex();
15
+ let leftTex = this.leftChild.toTex();
16
+ const needBrackets = (this.rightChild.type === node_1.NodeType.operator &&
17
+ [operatorNode_1.OperatorIds.add, operatorNode_1.OperatorIds.substract].includes(this.rightChild.id)) ||
18
+ rightTex[0] === '-';
19
+ if (needBrackets)
20
+ rightTex = `(${rightTex})`;
21
+ return `${leftTex} - ${rightTex}`;
22
+ }
23
+ }
24
+ exports.SubstractNode = SubstractNode;
@@ -1,9 +1,9 @@
1
- import { Node, NodeType } from '../node';
2
- export declare class VariableNode implements Node {
3
- name: string;
4
- type: NodeType;
5
- constructor(name: string);
6
- toTex(): string;
7
- toMathString(): string;
8
- }
1
+ import { Node, NodeType } from '../node';
2
+ export declare class VariableNode implements Node {
3
+ name: string;
4
+ type: NodeType;
5
+ constructor(name: string);
6
+ toTex(): string;
7
+ toMathString(): string;
8
+ }
9
9
  //# sourceMappingURL=variableNode.d.ts.map
@@ -1,19 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VariableNode = void 0;
4
- const node_1 = require("../node");
5
- class VariableNode {
6
- constructor(name) {
7
- this.type = node_1.NodeType.variable;
8
- if (name.length !== 1 || !name.match('[a-zA-Z]'))
9
- throw Error('variable must be a letter');
10
- this.name = name;
11
- }
12
- toTex() {
13
- return `${this.name}`;
14
- }
15
- toMathString() {
16
- return `${this.name}`;
17
- }
18
- }
19
- exports.VariableNode = VariableNode;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VariableNode = void 0;
4
+ const node_1 = require("../node");
5
+ class VariableNode {
6
+ constructor(name) {
7
+ this.type = node_1.NodeType.variable;
8
+ if (name.length !== 1 || !name.match('[a-zA-Z]'))
9
+ throw Error('variable must be a letter');
10
+ this.name = name;
11
+ }
12
+ toTex() {
13
+ return `${this.name}`;
14
+ }
15
+ toMathString() {
16
+ return `${this.name}`;
17
+ }
18
+ }
19
+ exports.VariableNode = VariableNode;
@@ -1,62 +1,62 @@
1
- "use strict";
2
- // import { Node, NodeType } from "../nodes/node";
3
- // import { NumberNode } from "../nodes/numbers/numberNode";
4
- // import { PowerNode } from "../nodes/operators/powerNode";
5
- // import { AddNode } from "../nodes/operators/addNode";
6
- // import { FractionNode } from "../nodes/operators/fractionNode";
7
- // import { MultiplyNode } from "../nodes/operators/multiplyNode";
8
- // import { OperatorIds, OperatorNode } from "../nodes/operators/operatorNode";
9
- // import { SubstractNode } from "../nodes/operators/substractNode";
10
- // import { FunctionNode, FunctionsIds } from "../nodes/functions/functionNode";
11
- // import { SqrtNode } from "../nodes/functions/sqrtNode";
12
- // import { OppositeNode } from "../nodes/functions/oppositeNode";
13
- // export function derivateParser(node: Node): Node {
14
- // if (!node) throw Error("encountered a null node ??");
15
- // switch (node.type) {
16
- // case NodeType.variable:
17
- // return new NumberNode(1);
18
- // case NodeType.number:
19
- // return new NumberNode(0);
20
- // case NodeType.operator:
21
- // const operatorNode = node as OperatorNode;
22
- // const u = operatorNode.leftChild;
23
- // const v = operatorNode.rightChild;
24
- // switch (operatorNode.id) {
25
- // case OperatorIds.add:
26
- // return new AddNode(derivateParser(u), derivateParser(v));
27
- // case OperatorIds.substract: {
28
- // return new SubstractNode(derivateParser(u), derivateParser(v));
29
- // }
30
- // case OperatorIds.multiply: {
31
- // return new AddNode(new MultiplyNode(derivateParser(u), v), new MultiplyNode(u, derivateParser(v)));
32
- // }
33
- // case OperatorIds.divide:
34
- // case OperatorIds.fraction:
35
- // return new FractionNode(
36
- // new SubstractNode(new MultiplyNode(derivateParser(u), v), new MultiplyNode(u, derivateParser(v))),
37
- // new PowerNode(v, new NumberNode(2))
38
- // );
39
- // case OperatorIds.power: {
40
- // const operatorNode = node as OperatorNode;
41
- // const n = operatorNode.rightChild as NumberNode;
42
- // const u = operatorNode.leftChild;
43
- // return new MultiplyNode(
44
- // n,
45
- // new MultiplyNode(derivateParser(u), new PowerNode(u, new NumberNode(n.value - 1)))
46
- // );
47
- // }
48
- // }
49
- // case NodeType.function: {
50
- // const functionNode = node as FunctionNode;
51
- // const child = functionNode.child;
52
- // switch (functionNode.id) {
53
- // case FunctionsIds.sqrt: {
54
- // return new FractionNode(derivateParser(child), new MultiplyNode(new NumberNode(2), new SqrtNode(child)));
55
- // }
56
- // case FunctionsIds.opposite: {
57
- // return new OppositeNode(derivateParser(child));
58
- // }
59
- // }
60
- // }
61
- // }
62
- // }
1
+ "use strict";
2
+ // import { Node, NodeType } from "../nodes/node";
3
+ // import { NumberNode } from "../nodes/numbers/numberNode";
4
+ // import { PowerNode } from "../nodes/operators/powerNode";
5
+ // import { AddNode } from "../nodes/operators/addNode";
6
+ // import { FractionNode } from "../nodes/operators/fractionNode";
7
+ // import { MultiplyNode } from "../nodes/operators/multiplyNode";
8
+ // import { OperatorIds, OperatorNode } from "../nodes/operators/operatorNode";
9
+ // import { SubstractNode } from "../nodes/operators/substractNode";
10
+ // import { FunctionNode, FunctionsIds } from "../nodes/functions/functionNode";
11
+ // import { SqrtNode } from "../nodes/functions/sqrtNode";
12
+ // import { OppositeNode } from "../nodes/functions/oppositeNode";
13
+ // export function derivateParser(node: Node): Node {
14
+ // if (!node) throw Error("encountered a null node ??");
15
+ // switch (node.type) {
16
+ // case NodeType.variable:
17
+ // return new NumberNode(1);
18
+ // case NodeType.number:
19
+ // return new NumberNode(0);
20
+ // case NodeType.operator:
21
+ // const operatorNode = node as OperatorNode;
22
+ // const u = operatorNode.leftChild;
23
+ // const v = operatorNode.rightChild;
24
+ // switch (operatorNode.id) {
25
+ // case OperatorIds.add:
26
+ // return new AddNode(derivateParser(u), derivateParser(v));
27
+ // case OperatorIds.substract: {
28
+ // return new SubstractNode(derivateParser(u), derivateParser(v));
29
+ // }
30
+ // case OperatorIds.multiply: {
31
+ // return new AddNode(new MultiplyNode(derivateParser(u), v), new MultiplyNode(u, derivateParser(v)));
32
+ // }
33
+ // case OperatorIds.divide:
34
+ // case OperatorIds.fraction:
35
+ // return new FractionNode(
36
+ // new SubstractNode(new MultiplyNode(derivateParser(u), v), new MultiplyNode(u, derivateParser(v))),
37
+ // new PowerNode(v, new NumberNode(2))
38
+ // );
39
+ // case OperatorIds.power: {
40
+ // const operatorNode = node as OperatorNode;
41
+ // const n = operatorNode.rightChild as NumberNode;
42
+ // const u = operatorNode.leftChild;
43
+ // return new MultiplyNode(
44
+ // n,
45
+ // new MultiplyNode(derivateParser(u), new PowerNode(u, new NumberNode(n.value - 1)))
46
+ // );
47
+ // }
48
+ // }
49
+ // case NodeType.function: {
50
+ // const functionNode = node as FunctionNode;
51
+ // const child = functionNode.child;
52
+ // switch (functionNode.id) {
53
+ // case FunctionsIds.sqrt: {
54
+ // return new FractionNode(derivateParser(child), new MultiplyNode(new NumberNode(2), new SqrtNode(child)));
55
+ // }
56
+ // case FunctionsIds.opposite: {
57
+ // return new OppositeNode(derivateParser(child));
58
+ // }
59
+ // }
60
+ // }
61
+ // }
62
+ // }
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ // import { FunctionNode, FunctionsIds } from "../nodes/functions/functionNode";
3
+ // import { Node, NodeType } from "../nodes/node";
4
+ // import { OperatorIds, OperatorNode } from "../nodes/operators/operatorNode";
5
+ // export function latexParser(node: Node): string {
6
+ // if (!node) {
7
+ // console.log("parsing a null node ???");
8
+ // return "";
9
+ // }
10
+ // switch (node.type) {
11
+ // case NodeType.variable:
12
+ // return node.tex;
13
+ // case NodeType.number:
14
+ // return node.tex;
15
+ // case NodeType.operator:
16
+ // const operatorNode = node as OperatorNode;
17
+ // let rightTex = latexParser(operatorNode.rightChild);
18
+ // let leftTex = latexParser(operatorNode.leftChild);
19
+ // const { leftChild, rightChild } = operatorNode;
20
+ // switch (operatorNode.id) {
21
+ // case OperatorIds.add:
22
+ // return `${leftTex} ${rightTex[0] === "-" ? "" : "+ "}${rightTex}`;
23
+ // case OperatorIds.substract: {
24
+ // const needBrackets =
25
+ // (rightChild.type === NodeType.operator &&
26
+ // [OperatorIds.add, OperatorIds.substract].includes((rightChild as OperatorNode).id)) ||
27
+ // rightTex[0] === "-";
28
+ // if (needBrackets) rightTex = `(${rightTex})`;
29
+ // return `${leftTex} - ${rightTex}`;
30
+ // }
31
+ // case OperatorIds.multiply: {
32
+ // if (leftChild.type === NodeType.operator) {
33
+ // if ([OperatorIds.add, OperatorIds.substract, OperatorIds.divide].includes((leftChild as OperatorNode).id))
34
+ // leftTex = `(${leftTex})`;
35
+ // }
36
+ // let needBrackets = rightTex[0] === "-";
37
+ // if (rightChild.type === NodeType.operator) {
38
+ // const operatorRightChild = rightChild as OperatorNode;
39
+ // needBrackets ||= [OperatorIds.add, OperatorIds.substract].includes(operatorRightChild.id);
40
+ // }
41
+ // if (needBrackets) rightTex = `(${rightTex})`;
42
+ // // permet de gérer le cas 3*2^x
43
+ // let showTimesSign = !isNaN(+rightTex[0]) || rightChild.type === NodeType.number;
44
+ // if (rightChild.type === NodeType.operator) {
45
+ // const operatorRightChild = rightChild as OperatorNode;
46
+ // showTimesSign ||= [OperatorIds.fraction].includes(operatorRightChild.id);
47
+ // }
48
+ // return `${leftTex}${showTimesSign ? "\\times " : ""}${rightTex}`;
49
+ // }
50
+ // case OperatorIds.divide: {
51
+ // if (leftChild.type === NodeType.operator) {
52
+ // if ([OperatorIds.add, OperatorIds.substract, OperatorIds.multiply].includes((leftChild as OperatorNode).id))
53
+ // leftTex = `(${leftTex})`;
54
+ // }
55
+ // let needBrackets = rightTex[0] === "-";
56
+ // if (rightChild.type === NodeType.operator) {
57
+ // const operatorRightChild = rightChild as OperatorNode;
58
+ // needBrackets ||= [OperatorIds.add, OperatorIds.substract].includes(operatorRightChild.id);
59
+ // }
60
+ // if (needBrackets) rightTex = `(${rightTex})`;
61
+ // return `${leftTex} \\div ${rightTex}`;
62
+ // }
63
+ // case OperatorIds.fraction: {
64
+ // return `\\frac{${leftTex}}{${rightTex}}`;
65
+ // }
66
+ // case OperatorIds.power: {
67
+ // let needBrackets = leftTex[0] === "-";
68
+ // if (leftChild.type === NodeType.operator) {
69
+ // const childOperator = leftChild as OperatorNode;
70
+ // needBrackets ||= [
71
+ // OperatorIds.add,
72
+ // OperatorIds.substract,
73
+ // OperatorIds.multiply,
74
+ // OperatorIds.divide,
75
+ // OperatorIds.fraction,
76
+ // OperatorIds.power,
77
+ // ].includes(childOperator.id);
78
+ // }
79
+ // if (needBrackets) leftTex = `(${leftTex})`;
80
+ // return `${leftTex}^{${rightTex}}`;
81
+ // }
82
+ // case OperatorIds.equal: {
83
+ // return `${leftTex} = ${rightTex}`;
84
+ // }
85
+ // default:
86
+ // return node.tex;
87
+ // }
88
+ // case NodeType.function: {
89
+ // const functionNode = node as FunctionNode;
90
+ // const child = functionNode.child;
91
+ // let childTex = latexParser(functionNode.child);
92
+ // switch (functionNode.id) {
93
+ // case FunctionsIds.sqrt: {
94
+ // return `\\sqrt{${childTex}}`;
95
+ // }
96
+ // case FunctionsIds.opposite: {
97
+ // let needBrackets = childTex[0] === "-";
98
+ // if (child.type === NodeType.operator) {
99
+ // const operatorChild = child as OperatorNode;
100
+ // needBrackets ||= [OperatorIds.add, OperatorIds.substract].includes(operatorChild.id);
101
+ // }
102
+ // if (needBrackets) childTex = `(${childTex})`;
103
+ // return `-${childTex}`;
104
+ // }
105
+ // }
106
+ // }
107
+ // default:
108
+ // return "";
109
+ // }
110
+ // }
@@ -1,3 +1,3 @@
1
- import { Node } from '../nodes/node';
2
- export declare const simplifyNode: (node: Node) => Node;
1
+ import { Node } from '../nodes/node';
2
+ export declare const simplifyNode: (node: Node) => Node;
3
3
  //# sourceMappingURL=simplify.d.ts.map
@@ -1,52 +1,52 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.simplifyNode = void 0;
4
- const mathjs_1 = require("mathjs");
5
- const oppositeNode_1 = require("../nodes/functions/oppositeNode");
6
- const sqrtNode_1 = require("../nodes/functions/sqrtNode");
7
- const numberNode_1 = require("../nodes/numbers/numberNode");
8
- const piNode_1 = require("../nodes/numbers/piNode");
9
- const addNode_1 = require("../nodes/operators/addNode");
10
- const fractionNode_1 = require("../nodes/operators/fractionNode");
11
- const multiplyNode_1 = require("../nodes/operators/multiplyNode");
12
- const powerNode_1 = require("../nodes/operators/powerNode");
13
- const substractNode_1 = require("../nodes/operators/substractNode");
14
- const variableNode_1 = require("../nodes/variables/variableNode");
15
- const simplifyNode = (node) => {
16
- return mathjsNodeToNode((0, mathjs_1.simplify)(node.toMathString()));
17
- };
18
- exports.simplifyNode = simplifyNode;
19
- const mathjsNodeToNode = (mathjsNode) => {
20
- if (mathjsNode.isSymbolNode) {
21
- if (mathjsNode.name === 'pi')
22
- return piNode_1.PiNode;
23
- return new variableNode_1.VariableNode(mathjsNode.name);
24
- }
25
- else if (mathjsNode.isConstantNode) {
26
- return new numberNode_1.NumberNode(mathjsNode.value);
27
- }
28
- else if (mathjsNode.isOperatorNode) {
29
- switch (mathjsNode.fn) {
30
- case 'add':
31
- return new addNode_1.AddNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
32
- case 'subtract':
33
- return new substractNode_1.SubstractNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
34
- case 'unaryMinus':
35
- return new oppositeNode_1.OppositeNode(mathjsNodeToNode(mathjsNode.args[0]));
36
- case 'divide':
37
- return new fractionNode_1.FractionNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
38
- case 'multiply':
39
- return new multiplyNode_1.MultiplyNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
40
- case 'pow':
41
- return new powerNode_1.PowerNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
42
- }
43
- }
44
- else if (mathjsNode.isFunctionNode) {
45
- const fn = mathjsNode.fn;
46
- switch (fn.name) {
47
- case 'sqrt':
48
- return new sqrtNode_1.SqrtNode(mathjsNodeToNode(mathjsNode.args[0]));
49
- }
50
- }
51
- throw Error('unrecognized mathjs node');
52
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.simplifyNode = void 0;
4
+ const mathjs_1 = require("mathjs");
5
+ const oppositeNode_1 = require("../nodes/functions/oppositeNode");
6
+ const sqrtNode_1 = require("../nodes/functions/sqrtNode");
7
+ const numberNode_1 = require("../nodes/numbers/numberNode");
8
+ const piNode_1 = require("../nodes/numbers/piNode");
9
+ const addNode_1 = require("../nodes/operators/addNode");
10
+ const fractionNode_1 = require("../nodes/operators/fractionNode");
11
+ const multiplyNode_1 = require("../nodes/operators/multiplyNode");
12
+ const powerNode_1 = require("../nodes/operators/powerNode");
13
+ const substractNode_1 = require("../nodes/operators/substractNode");
14
+ const variableNode_1 = require("../nodes/variables/variableNode");
15
+ const simplifyNode = (node) => {
16
+ return mathjsNodeToNode((0, mathjs_1.simplify)(node.toMathString()));
17
+ };
18
+ exports.simplifyNode = simplifyNode;
19
+ const mathjsNodeToNode = (mathjsNode) => {
20
+ if (mathjsNode.isSymbolNode) {
21
+ if (mathjsNode.name === 'pi')
22
+ return piNode_1.PiNode;
23
+ return new variableNode_1.VariableNode(mathjsNode.name);
24
+ }
25
+ else if (mathjsNode.isConstantNode) {
26
+ return new numberNode_1.NumberNode(mathjsNode.value);
27
+ }
28
+ else if (mathjsNode.isOperatorNode) {
29
+ switch (mathjsNode.fn) {
30
+ case 'add':
31
+ return new addNode_1.AddNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
32
+ case 'subtract':
33
+ return new substractNode_1.SubstractNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
34
+ case 'unaryMinus':
35
+ return new oppositeNode_1.OppositeNode(mathjsNodeToNode(mathjsNode.args[0]));
36
+ case 'divide':
37
+ return new fractionNode_1.FractionNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
38
+ case 'multiply':
39
+ return new multiplyNode_1.MultiplyNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
40
+ case 'pow':
41
+ return new powerNode_1.PowerNode(mathjsNodeToNode(mathjsNode.args[0]), mathjsNodeToNode(mathjsNode.args[1]));
42
+ }
43
+ }
44
+ else if (mathjsNode.isFunctionNode) {
45
+ const fn = mathjsNode.fn;
46
+ switch (fn.name) {
47
+ case 'sqrt':
48
+ return new sqrtNode_1.SqrtNode(mathjsNodeToNode(mathjsNode.args[0]));
49
+ }
50
+ }
51
+ throw Error('unrecognized mathjs node');
52
+ };
@@ -1,2 +1,2 @@
1
- export declare function arrayEqual<T>(arr1: T[], arr2: T[]): boolean;
1
+ export declare function arrayEqual<T>(arr1: T[], arr2: T[]): boolean;
2
2
  //# sourceMappingURL=arrayEqual.d.ts.map