mathjs 10.6.2 → 11.0.0

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 (436) hide show
  1. package/HISTORY.md +74 -1
  2. package/README.md +1 -1
  3. package/lib/browser/math.js +2 -41
  4. package/lib/browser/math.js.LICENSE.txt +43 -0
  5. package/lib/browser/math.js.map +1 -1
  6. package/lib/cjs/core/create.js +6 -5
  7. package/lib/cjs/core/function/import.js +4 -14
  8. package/lib/cjs/core/function/typed.js +54 -12
  9. package/lib/cjs/defaultInstance.js +3 -3
  10. package/lib/cjs/entry/allFactoriesAny.js +1 -1
  11. package/lib/cjs/entry/allFactoriesNumber.js +1 -1
  12. package/lib/cjs/entry/configReadonly.js +1 -1
  13. package/lib/cjs/entry/dependenciesAny/dependenciesChainClass.generated.js +3 -0
  14. package/lib/cjs/entry/dependenciesAny/dependenciesKldivergence.generated.js +3 -0
  15. package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +3 -0
  16. package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +3 -0
  17. package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +3 -0
  18. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +56 -0
  19. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +6 -0
  20. package/lib/cjs/entry/dependenciesAny/dependenciesSqrtm.generated.js +3 -0
  21. package/lib/cjs/entry/dependenciesAny/dependenciesStd.generated.js +3 -0
  22. package/lib/cjs/entry/dependenciesAny/dependenciesStdTransform.generated.js +3 -0
  23. package/lib/cjs/entry/dependenciesAny.generated.js +8 -0
  24. package/lib/cjs/entry/dependenciesNumber/dependenciesChainClass.generated.js +3 -0
  25. package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +3 -0
  26. package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +3 -0
  27. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +3 -0
  28. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +50 -0
  29. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +6 -0
  30. package/lib/cjs/entry/dependenciesNumber/dependenciesStd.generated.js +3 -0
  31. package/lib/cjs/entry/dependenciesNumber/dependenciesStdTransform.generated.js +3 -0
  32. package/lib/cjs/entry/dependenciesNumber.generated.js +8 -0
  33. package/lib/cjs/entry/impureFunctionsAny.generated.js +87 -61
  34. package/lib/cjs/entry/impureFunctionsNumber.generated.js +93 -69
  35. package/lib/cjs/entry/pureFunctionsAny.generated.js +50 -45
  36. package/lib/cjs/entry/pureFunctionsNumber.generated.js +22 -19
  37. package/lib/cjs/expression/Parser.js +1 -1
  38. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +8 -5
  39. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyConstant.js +15 -0
  40. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  41. package/lib/cjs/expression/node/AccessorNode.js +216 -173
  42. package/lib/cjs/expression/node/ArrayNode.js +206 -160
  43. package/lib/cjs/expression/node/AssignmentNode.js +321 -270
  44. package/lib/cjs/expression/node/BlockNode.js +223 -172
  45. package/lib/cjs/expression/node/ConditionalNode.js +253 -193
  46. package/lib/cjs/expression/node/ConstantNode.js +216 -171
  47. package/lib/cjs/expression/node/FunctionAssignmentNode.js +258 -196
  48. package/lib/cjs/expression/node/FunctionNode.js +456 -416
  49. package/lib/cjs/expression/node/IndexNode.js +256 -210
  50. package/lib/cjs/expression/node/Node.js +411 -378
  51. package/lib/cjs/expression/node/ObjectNode.js +223 -178
  52. package/lib/cjs/expression/node/OperatorNode.js +474 -397
  53. package/lib/cjs/expression/node/ParenthesisNode.js +189 -143
  54. package/lib/cjs/expression/node/RangeNode.js +272 -224
  55. package/lib/cjs/expression/node/RelationalNode.js +246 -195
  56. package/lib/cjs/expression/node/SymbolNode.js +219 -172
  57. package/lib/cjs/expression/node/utils/access.js +1 -1
  58. package/lib/cjs/expression/node/utils/assign.js +1 -1
  59. package/lib/cjs/expression/operators.js +117 -23
  60. package/lib/cjs/expression/parse.js +37 -19
  61. package/lib/cjs/expression/transform/std.transform.js +3 -1
  62. package/lib/cjs/factoriesAny.js +8 -0
  63. package/lib/cjs/factoriesNumber.js +10 -1
  64. package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
  65. package/lib/cjs/function/algebra/derivative.js +22 -30
  66. package/lib/cjs/function/algebra/leafCount.js +0 -3
  67. package/lib/cjs/function/algebra/rationalize.js +78 -108
  68. package/lib/cjs/function/algebra/resolve.js +53 -16
  69. package/lib/cjs/function/algebra/simplify/util.js +1 -1
  70. package/lib/cjs/function/algebra/simplify.js +87 -114
  71. package/lib/cjs/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +44 -10
  72. package/lib/cjs/function/algebra/simplifyCore.js +196 -93
  73. package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
  74. package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
  75. package/lib/cjs/function/algebra/symbolicEqual.js +9 -26
  76. package/lib/cjs/function/arithmetic/abs.js +7 -14
  77. package/lib/cjs/function/arithmetic/add.js +26 -70
  78. package/lib/cjs/function/arithmetic/addScalar.js +17 -9
  79. package/lib/cjs/function/arithmetic/cbrt.js +7 -11
  80. package/lib/cjs/function/arithmetic/ceil.js +56 -46
  81. package/lib/cjs/function/arithmetic/cube.js +5 -10
  82. package/lib/cjs/function/arithmetic/divide.js +7 -7
  83. package/lib/cjs/function/arithmetic/divideScalar.js +4 -18
  84. package/lib/cjs/function/arithmetic/dotDivide.js +22 -65
  85. package/lib/cjs/function/arithmetic/dotMultiply.js +16 -61
  86. package/lib/cjs/function/arithmetic/dotPow.js +30 -63
  87. package/lib/cjs/function/arithmetic/exp.js +8 -12
  88. package/lib/cjs/function/arithmetic/expm1.js +10 -10
  89. package/lib/cjs/function/arithmetic/fix.js +33 -27
  90. package/lib/cjs/function/arithmetic/floor.js +56 -46
  91. package/lib/cjs/function/arithmetic/gcd.js +27 -68
  92. package/lib/cjs/function/arithmetic/hypot.js +9 -5
  93. package/lib/cjs/function/arithmetic/invmod.js +1 -1
  94. package/lib/cjs/function/arithmetic/lcm.js +27 -68
  95. package/lib/cjs/function/arithmetic/log.js +10 -12
  96. package/lib/cjs/function/arithmetic/log10.js +5 -3
  97. package/lib/cjs/function/arithmetic/log1p.js +11 -7
  98. package/lib/cjs/function/arithmetic/log2.js +5 -3
  99. package/lib/cjs/function/arithmetic/mod.js +22 -64
  100. package/lib/cjs/function/arithmetic/multiply.js +40 -35
  101. package/lib/cjs/function/arithmetic/multiplyScalar.js +2 -9
  102. package/lib/cjs/function/arithmetic/norm.js +1 -5
  103. package/lib/cjs/function/arithmetic/nthRoot.js +80 -92
  104. package/lib/cjs/function/arithmetic/round.js +56 -42
  105. package/lib/cjs/function/arithmetic/sign.js +14 -10
  106. package/lib/cjs/function/arithmetic/sqrt.js +5 -9
  107. package/lib/cjs/function/arithmetic/square.js +6 -10
  108. package/lib/cjs/function/arithmetic/subtract.js +44 -100
  109. package/lib/cjs/function/arithmetic/unaryMinus.js +14 -16
  110. package/lib/cjs/function/arithmetic/unaryPlus.js +6 -4
  111. package/lib/cjs/function/bitwise/bitAnd.js +17 -61
  112. package/lib/cjs/function/bitwise/bitNot.js +5 -3
  113. package/lib/cjs/function/bitwise/bitOr.js +16 -60
  114. package/lib/cjs/function/bitwise/bitXor.js +17 -61
  115. package/lib/cjs/function/bitwise/leftShift.js +68 -81
  116. package/lib/cjs/function/bitwise/rightArithShift.js +68 -81
  117. package/lib/cjs/function/bitwise/rightLogShift.js +68 -81
  118. package/lib/cjs/function/bitwise/useMatrixForArrayScalar.js +36 -0
  119. package/lib/cjs/function/complex/arg.js +5 -3
  120. package/lib/cjs/function/complex/conj.js +6 -7
  121. package/lib/cjs/function/complex/im.js +7 -8
  122. package/lib/cjs/function/complex/re.js +6 -10
  123. package/lib/cjs/function/logical/and.js +74 -80
  124. package/lib/cjs/function/logical/not.js +13 -6
  125. package/lib/cjs/function/logical/or.js +21 -63
  126. package/lib/cjs/function/logical/xor.js +21 -63
  127. package/lib/cjs/function/matrix/diff.js +10 -7
  128. package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
  129. package/lib/cjs/function/matrix/fft.js +2 -2
  130. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  131. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  132. package/lib/cjs/function/matrix/ones.js +2 -1
  133. package/lib/cjs/function/matrix/sqrtm.js +3 -2
  134. package/lib/cjs/function/matrix/transpose.js +47 -48
  135. package/lib/cjs/function/matrix/zeros.js +2 -1
  136. package/lib/cjs/function/probability/factorial.js +5 -3
  137. package/lib/cjs/function/probability/gamma.js +38 -40
  138. package/lib/cjs/function/probability/kldivergence.js +5 -2
  139. package/lib/cjs/function/probability/lgamma.js +30 -30
  140. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  141. package/lib/cjs/function/relational/compare.js +21 -67
  142. package/lib/cjs/function/relational/compareNatural.js +59 -54
  143. package/lib/cjs/function/relational/compareText.js +10 -43
  144. package/lib/cjs/function/relational/compareUnits.js +24 -0
  145. package/lib/cjs/function/relational/equal.js +19 -80
  146. package/lib/cjs/function/relational/equalScalar.js +7 -9
  147. package/lib/cjs/function/relational/larger.js +21 -67
  148. package/lib/cjs/function/relational/largerEq.js +21 -67
  149. package/lib/cjs/function/relational/smaller.js +21 -67
  150. package/lib/cjs/function/relational/smallerEq.js +21 -67
  151. package/lib/cjs/function/relational/unequal.js +19 -80
  152. package/lib/cjs/function/special/erf.js +5 -3
  153. package/lib/cjs/function/statistics/std.js +11 -2
  154. package/lib/cjs/function/trigonometry/acos.js +4 -8
  155. package/lib/cjs/function/trigonometry/acosh.js +2 -7
  156. package/lib/cjs/function/trigonometry/acot.js +4 -8
  157. package/lib/cjs/function/trigonometry/acoth.js +4 -8
  158. package/lib/cjs/function/trigonometry/acsc.js +4 -8
  159. package/lib/cjs/function/trigonometry/acsch.js +4 -8
  160. package/lib/cjs/function/trigonometry/asec.js +4 -8
  161. package/lib/cjs/function/trigonometry/asech.js +4 -8
  162. package/lib/cjs/function/trigonometry/asin.js +4 -9
  163. package/lib/cjs/function/trigonometry/asinh.js +4 -9
  164. package/lib/cjs/function/trigonometry/atan.js +4 -9
  165. package/lib/cjs/function/trigonometry/atan2.js +24 -62
  166. package/lib/cjs/function/trigonometry/atanh.js +4 -9
  167. package/lib/cjs/function/trigonometry/cos.js +11 -20
  168. package/lib/cjs/function/trigonometry/cosh.js +5 -19
  169. package/lib/cjs/function/trigonometry/cot.js +9 -15
  170. package/lib/cjs/function/trigonometry/coth.js +4 -15
  171. package/lib/cjs/function/trigonometry/csc.js +11 -17
  172. package/lib/cjs/function/trigonometry/csch.js +4 -15
  173. package/lib/cjs/function/trigonometry/sec.js +11 -17
  174. package/lib/cjs/function/trigonometry/sech.js +4 -15
  175. package/lib/cjs/function/trigonometry/sin.js +11 -21
  176. package/lib/cjs/function/trigonometry/sinh.js +5 -20
  177. package/lib/cjs/function/trigonometry/tan.js +11 -21
  178. package/lib/cjs/function/trigonometry/tanh.js +5 -20
  179. package/lib/cjs/function/trigonometry/trigUnit.js +24 -0
  180. package/lib/cjs/function/unit/to.js +7 -41
  181. package/lib/cjs/function/utils/hasNumericValue.js +4 -0
  182. package/lib/cjs/function/utils/isInteger.js +5 -3
  183. package/lib/cjs/function/utils/isNegative.js +10 -6
  184. package/lib/cjs/function/utils/isNumeric.js +5 -3
  185. package/lib/cjs/function/utils/isPositive.js +10 -6
  186. package/lib/cjs/function/utils/isPrime.js +5 -3
  187. package/lib/cjs/function/utils/isZero.js +10 -6
  188. package/lib/cjs/function/utils/numeric.js +11 -4
  189. package/lib/cjs/function/utils/typeOf.js +38 -44
  190. package/lib/cjs/header.js +2 -2
  191. package/lib/cjs/plain/bignumber/index.js +1 -1
  192. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  193. package/lib/cjs/type/bignumber/function/bignumber.js +6 -4
  194. package/lib/cjs/type/boolean.js +7 -5
  195. package/lib/cjs/type/chain/Chain.js +23 -3
  196. package/lib/cjs/type/complex/Complex.js +18 -14
  197. package/lib/cjs/type/complex/function/complex.js +6 -4
  198. package/lib/cjs/type/fraction/Fraction.js +10 -6
  199. package/lib/cjs/type/fraction/function/fraction.js +6 -4
  200. package/lib/cjs/type/matrix/DenseMatrix.js +21 -6
  201. package/lib/cjs/type/matrix/SparseMatrix.js +12 -2
  202. package/lib/cjs/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +4 -4
  203. package/lib/cjs/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +5 -5
  204. package/lib/cjs/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +5 -5
  205. package/lib/cjs/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +7 -7
  206. package/lib/cjs/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +5 -5
  207. package/lib/cjs/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +5 -5
  208. package/lib/cjs/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +5 -5
  209. package/lib/cjs/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +6 -6
  210. package/lib/cjs/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +5 -5
  211. package/lib/cjs/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +5 -5
  212. package/lib/cjs/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +5 -5
  213. package/lib/cjs/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +5 -5
  214. package/lib/cjs/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +5 -5
  215. package/lib/cjs/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +5 -5
  216. package/lib/cjs/type/matrix/utils/matrixAlgorithmSuite.js +238 -0
  217. package/lib/cjs/type/number.js +6 -4
  218. package/lib/cjs/type/string.js +7 -5
  219. package/lib/cjs/type/unit/Unit.js +69 -21
  220. package/lib/cjs/type/unit/function/createUnit.js +2 -1
  221. package/lib/cjs/type/unit/function/unit.js +9 -3
  222. package/lib/cjs/utils/customs.js +2 -2
  223. package/lib/cjs/utils/emitter.js +1 -1
  224. package/lib/cjs/utils/function.js +2 -2
  225. package/lib/cjs/utils/is.js +27 -25
  226. package/lib/cjs/utils/latex.js +3 -3
  227. package/lib/cjs/utils/lruQueue.js +1 -1
  228. package/lib/cjs/utils/map.js +3 -3
  229. package/lib/cjs/utils/object.js +2 -2
  230. package/lib/cjs/utils/snapshot.js +30 -57
  231. package/lib/cjs/utils/string.js +3 -3
  232. package/lib/cjs/version.js +1 -1
  233. package/lib/esm/core/create.js +2 -1
  234. package/lib/esm/core/function/import.js +2 -12
  235. package/lib/esm/core/function/typed.js +47 -11
  236. package/lib/esm/entry/dependenciesAny/dependenciesChainClass.generated.js +2 -0
  237. package/lib/esm/entry/dependenciesAny/dependenciesKldivergence.generated.js +2 -0
  238. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
  239. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +2 -0
  240. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
  241. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +34 -0
  242. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +4 -0
  243. package/lib/esm/entry/dependenciesAny/dependenciesSqrtm.generated.js +2 -0
  244. package/lib/esm/entry/dependenciesAny/dependenciesStd.generated.js +2 -0
  245. package/lib/esm/entry/dependenciesAny/dependenciesStdTransform.generated.js +2 -0
  246. package/lib/esm/entry/dependenciesAny.generated.js +1 -0
  247. package/lib/esm/entry/dependenciesNumber/dependenciesChainClass.generated.js +2 -0
  248. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
  249. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +2 -0
  250. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
  251. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +30 -0
  252. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +4 -0
  253. package/lib/esm/entry/dependenciesNumber/dependenciesStd.generated.js +2 -0
  254. package/lib/esm/entry/dependenciesNumber/dependenciesStdTransform.generated.js +2 -0
  255. package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
  256. package/lib/esm/entry/impureFunctionsAny.generated.js +73 -48
  257. package/lib/esm/entry/impureFunctionsNumber.generated.js +81 -58
  258. package/lib/esm/entry/pureFunctionsAny.generated.js +39 -36
  259. package/lib/esm/entry/pureFunctionsNumber.generated.js +14 -13
  260. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
  261. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js +8 -0
  262. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  263. package/lib/esm/expression/node/AccessorNode.js +158 -153
  264. package/lib/esm/expression/node/ArrayNode.js +162 -154
  265. package/lib/esm/expression/node/AssignmentNode.js +257 -245
  266. package/lib/esm/expression/node/BlockNode.js +177 -163
  267. package/lib/esm/expression/node/ConditionalNode.js +197 -174
  268. package/lib/esm/expression/node/ConstantNode.js +171 -163
  269. package/lib/esm/expression/node/FunctionAssignmentNode.js +205 -180
  270. package/lib/esm/expression/node/FunctionNode.js +407 -407
  271. package/lib/esm/expression/node/IndexNode.js +206 -198
  272. package/lib/esm/expression/node/Node.js +325 -325
  273. package/lib/esm/expression/node/ObjectNode.js +166 -157
  274. package/lib/esm/expression/node/OperatorNode.js +414 -377
  275. package/lib/esm/expression/node/ParenthesisNode.js +146 -138
  276. package/lib/esm/expression/node/RangeNode.js +221 -212
  277. package/lib/esm/expression/node/RelationalNode.js +190 -176
  278. package/lib/esm/expression/node/SymbolNode.js +161 -152
  279. package/lib/esm/expression/operators.js +96 -4
  280. package/lib/esm/expression/parse.js +25 -7
  281. package/lib/esm/expression/transform/std.transform.js +3 -1
  282. package/lib/esm/factoriesAny.js +1 -0
  283. package/lib/esm/factoriesNumber.js +1 -0
  284. package/lib/esm/function/algebra/derivative.js +22 -30
  285. package/lib/esm/function/algebra/leafCount.js +0 -3
  286. package/lib/esm/function/algebra/rationalize.js +83 -114
  287. package/lib/esm/function/algebra/resolve.js +25 -16
  288. package/lib/esm/function/algebra/simplify.js +82 -112
  289. package/lib/esm/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +39 -9
  290. package/lib/esm/function/algebra/simplifyCore.js +192 -91
  291. package/lib/esm/function/algebra/symbolicEqual.js +9 -26
  292. package/lib/esm/function/arithmetic/abs.js +3 -16
  293. package/lib/esm/function/arithmetic/add.js +21 -65
  294. package/lib/esm/function/arithmetic/addScalar.js +11 -5
  295. package/lib/esm/function/arithmetic/cbrt.js +7 -10
  296. package/lib/esm/function/arithmetic/ceil.js +25 -25
  297. package/lib/esm/function/arithmetic/cube.js +5 -9
  298. package/lib/esm/function/arithmetic/divide.js +7 -7
  299. package/lib/esm/function/arithmetic/divideScalar.js +2 -19
  300. package/lib/esm/function/arithmetic/dotDivide.js +22 -64
  301. package/lib/esm/function/arithmetic/dotMultiply.js +16 -60
  302. package/lib/esm/function/arithmetic/dotPow.js +30 -62
  303. package/lib/esm/function/arithmetic/exp.js +8 -11
  304. package/lib/esm/function/arithmetic/expm1.js +10 -9
  305. package/lib/esm/function/arithmetic/fix.js +17 -17
  306. package/lib/esm/function/arithmetic/floor.js +25 -25
  307. package/lib/esm/function/arithmetic/gcd.js +26 -70
  308. package/lib/esm/function/arithmetic/hypot.js +7 -6
  309. package/lib/esm/function/arithmetic/lcm.js +26 -70
  310. package/lib/esm/function/arithmetic/log.js +7 -10
  311. package/lib/esm/function/arithmetic/log10.js +1 -3
  312. package/lib/esm/function/arithmetic/log1p.js +4 -6
  313. package/lib/esm/function/arithmetic/log2.js +1 -3
  314. package/lib/esm/function/arithmetic/mod.js +21 -62
  315. package/lib/esm/function/arithmetic/multiply.js +23 -27
  316. package/lib/esm/function/arithmetic/multiplyScalar.js +2 -13
  317. package/lib/esm/function/arithmetic/norm.js +0 -4
  318. package/lib/esm/function/arithmetic/nthRoot.js +38 -73
  319. package/lib/esm/function/arithmetic/round.js +26 -28
  320. package/lib/esm/function/arithmetic/sign.js +5 -7
  321. package/lib/esm/function/arithmetic/sqrt.js +5 -8
  322. package/lib/esm/function/arithmetic/square.js +6 -9
  323. package/lib/esm/function/arithmetic/subtract.js +31 -95
  324. package/lib/esm/function/arithmetic/unaryMinus.js +6 -16
  325. package/lib/esm/function/arithmetic/unaryPlus.js +2 -4
  326. package/lib/esm/function/bitwise/bitAnd.js +16 -59
  327. package/lib/esm/function/bitwise/bitNot.js +1 -3
  328. package/lib/esm/function/bitwise/bitOr.js +16 -59
  329. package/lib/esm/function/bitwise/bitXor.js +16 -59
  330. package/lib/esm/function/bitwise/leftShift.js +38 -60
  331. package/lib/esm/function/bitwise/rightArithShift.js +38 -60
  332. package/lib/esm/function/bitwise/rightLogShift.js +38 -60
  333. package/lib/esm/function/bitwise/useMatrixForArrayScalar.js +13 -0
  334. package/lib/esm/function/complex/arg.js +1 -3
  335. package/lib/esm/function/complex/conj.js +3 -12
  336. package/lib/esm/function/complex/im.js +4 -15
  337. package/lib/esm/function/complex/re.js +3 -15
  338. package/lib/esm/function/logical/and.js +35 -57
  339. package/lib/esm/function/logical/not.js +3 -6
  340. package/lib/esm/function/logical/or.js +16 -61
  341. package/lib/esm/function/logical/xor.js +16 -61
  342. package/lib/esm/function/matrix/diff.js +2 -7
  343. package/lib/esm/function/matrix/ones.js +2 -1
  344. package/lib/esm/function/matrix/sqrtm.js +3 -2
  345. package/lib/esm/function/matrix/transpose.js +47 -50
  346. package/lib/esm/function/matrix/zeros.js +2 -1
  347. package/lib/esm/function/probability/factorial.js +1 -3
  348. package/lib/esm/function/probability/gamma.js +38 -39
  349. package/lib/esm/function/probability/kldivergence.js +3 -2
  350. package/lib/esm/function/probability/lgamma.js +29 -29
  351. package/lib/esm/function/relational/compare.js +21 -67
  352. package/lib/esm/function/relational/compareNatural.js +54 -49
  353. package/lib/esm/function/relational/compareText.js +10 -42
  354. package/lib/esm/function/relational/compareUnits.js +15 -0
  355. package/lib/esm/function/relational/equal.js +19 -79
  356. package/lib/esm/function/relational/equalScalar.js +6 -9
  357. package/lib/esm/function/relational/larger.js +23 -73
  358. package/lib/esm/function/relational/largerEq.js +23 -73
  359. package/lib/esm/function/relational/smaller.js +23 -73
  360. package/lib/esm/function/relational/smallerEq.js +23 -73
  361. package/lib/esm/function/relational/unequal.js +19 -79
  362. package/lib/esm/function/special/erf.js +1 -3
  363. package/lib/esm/function/statistics/std.js +10 -2
  364. package/lib/esm/function/trigonometry/acos.js +4 -7
  365. package/lib/esm/function/trigonometry/acosh.js +2 -6
  366. package/lib/esm/function/trigonometry/acot.js +4 -7
  367. package/lib/esm/function/trigonometry/acoth.js +4 -7
  368. package/lib/esm/function/trigonometry/acsc.js +4 -7
  369. package/lib/esm/function/trigonometry/acsch.js +4 -7
  370. package/lib/esm/function/trigonometry/asec.js +4 -7
  371. package/lib/esm/function/trigonometry/asech.js +4 -7
  372. package/lib/esm/function/trigonometry/asin.js +4 -8
  373. package/lib/esm/function/trigonometry/asinh.js +4 -8
  374. package/lib/esm/function/trigonometry/atan.js +4 -8
  375. package/lib/esm/function/trigonometry/atan2.js +25 -64
  376. package/lib/esm/function/trigonometry/atanh.js +4 -8
  377. package/lib/esm/function/trigonometry/cos.js +11 -22
  378. package/lib/esm/function/trigonometry/cosh.js +5 -20
  379. package/lib/esm/function/trigonometry/cot.js +10 -20
  380. package/lib/esm/function/trigonometry/coth.js +6 -20
  381. package/lib/esm/function/trigonometry/csc.js +12 -22
  382. package/lib/esm/function/trigonometry/csch.js +6 -20
  383. package/lib/esm/function/trigonometry/sec.js +12 -22
  384. package/lib/esm/function/trigonometry/sech.js +6 -20
  385. package/lib/esm/function/trigonometry/sin.js +11 -23
  386. package/lib/esm/function/trigonometry/sinh.js +5 -21
  387. package/lib/esm/function/trigonometry/tan.js +11 -23
  388. package/lib/esm/function/trigonometry/tanh.js +5 -21
  389. package/lib/esm/function/trigonometry/trigUnit.js +15 -0
  390. package/lib/esm/function/unit/to.js +8 -43
  391. package/lib/esm/function/utils/hasNumericValue.js +2 -0
  392. package/lib/esm/function/utils/isInteger.js +1 -3
  393. package/lib/esm/function/utils/isNegative.js +2 -6
  394. package/lib/esm/function/utils/isNumeric.js +3 -9
  395. package/lib/esm/function/utils/isPositive.js +2 -6
  396. package/lib/esm/function/utils/isPrime.js +1 -3
  397. package/lib/esm/function/utils/isZero.js +2 -6
  398. package/lib/esm/function/utils/numeric.js +11 -4
  399. package/lib/esm/function/utils/typeOf.js +38 -44
  400. package/lib/esm/type/bignumber/function/bignumber.js +1 -3
  401. package/lib/esm/type/boolean.js +1 -3
  402. package/lib/esm/type/chain/Chain.js +23 -3
  403. package/lib/esm/type/complex/Complex.js +4 -0
  404. package/lib/esm/type/complex/function/complex.js +1 -3
  405. package/lib/esm/type/fraction/Fraction.js +4 -0
  406. package/lib/esm/type/fraction/function/fraction.js +1 -3
  407. package/lib/esm/type/matrix/DenseMatrix.js +15 -1
  408. package/lib/esm/type/matrix/SparseMatrix.js +9 -0
  409. package/lib/esm/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +2 -2
  410. package/lib/esm/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +3 -3
  411. package/lib/esm/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +3 -3
  412. package/lib/esm/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +5 -5
  413. package/lib/esm/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +3 -3
  414. package/lib/esm/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +3 -3
  415. package/lib/esm/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +3 -3
  416. package/lib/esm/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +4 -4
  417. package/lib/esm/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +3 -3
  418. package/lib/esm/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +3 -3
  419. package/lib/esm/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +3 -3
  420. package/lib/esm/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +3 -3
  421. package/lib/esm/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +3 -3
  422. package/lib/esm/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +3 -3
  423. package/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js +168 -0
  424. package/lib/esm/type/number.js +1 -3
  425. package/lib/esm/type/string.js +1 -3
  426. package/lib/esm/type/unit/Unit.js +61 -13
  427. package/lib/esm/type/unit/function/createUnit.js +2 -1
  428. package/lib/esm/type/unit/function/unit.js +5 -3
  429. package/lib/esm/utils/is.js +18 -18
  430. package/lib/esm/utils/snapshot.js +22 -48
  431. package/lib/esm/version.js +1 -1
  432. package/package.json +21 -24
  433. package/types/index.d.ts +202 -181
  434. package/types/index.ts +264 -57
  435. package/lib/cjs/utils/polyfills.js +0 -14
  436. package/lib/esm/utils/polyfills.js +0 -12
@@ -1,294 +1,342 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.createRangeNode = void 0;
7
9
 
8
- var _is = require("../../utils/is.js");
9
-
10
- var _factory = require("../../utils/factory.js");
11
-
12
- var _operators = require("../operators.js");
13
-
14
- var name = 'RangeNode';
15
- var dependencies = ['Node'];
16
- var createRangeNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
17
- var Node = _ref.Node;
18
-
19
- /**
20
- * @constructor RangeNode
21
- * @extends {Node}
22
- * create a range
23
- * @param {Node} start included lower-bound
24
- * @param {Node} end included upper-bound
25
- * @param {Node} [step] optional step
26
- */
27
- function RangeNode(start, end, step) {
28
- if (!(this instanceof RangeNode)) {
29
- throw new SyntaxError('Constructor must be called with the new operator');
30
- } // validate inputs
31
-
32
-
33
- if (!(0, _is.isNode)(start)) throw new TypeError('Node expected');
34
- if (!(0, _is.isNode)(end)) throw new TypeError('Node expected');
35
- if (step && !(0, _is.isNode)(step)) throw new TypeError('Node expected');
36
- if (arguments.length > 3) throw new Error('Too many arguments');
37
- this.start = start; // included lower-bound
38
-
39
- this.end = end; // included upper-bound
40
-
41
- this.step = step || null; // optional step
42
- }
43
-
44
- RangeNode.prototype = new Node();
45
- RangeNode.prototype.type = 'RangeNode';
46
- RangeNode.prototype.isRangeNode = true;
47
- /**
48
- * Check whether the RangeNode needs the `end` symbol to be defined.
49
- * This end is the size of the Matrix in current dimension.
50
- * @return {boolean}
51
- */
52
-
53
- RangeNode.prototype.needsEnd = function () {
54
- // find all `end` symbols in this RangeNode
55
- var endSymbols = this.filter(function (node) {
56
- return (0, _is.isSymbolNode)(node) && node.name === 'end';
57
- });
58
- return endSymbols.length > 0;
59
- };
60
- /**
61
- * Compile a node into a JavaScript function.
62
- * This basically pre-calculates as much as possible and only leaves open
63
- * calculations which depend on a dynamic scope with variables.
64
- * @param {Object} math Math.js namespace with functions and constants.
65
- * @param {Object} argNames An object with argument names as key and `true`
66
- * as value. Used in the SymbolNode to optimize
67
- * for arguments from user assigned functions
68
- * (see FunctionAssignmentNode) or special symbols
69
- * like `end` (see IndexNode).
70
- * @return {function} Returns a function which can be called like:
71
- * evalNode(scope: Object, args: Object, context: *)
72
- */
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
73
11
 
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
74
13
 
75
- RangeNode.prototype._compile = function (math, argNames) {
76
- var range = math.range;
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
77
15
 
78
- var evalStart = this.start._compile(math, argNames);
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
79
17
 
80
- var evalEnd = this.end._compile(math, argNames);
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
81
19
 
82
- if (this.step) {
83
- var evalStep = this.step._compile(math, argNames);
84
-
85
- return function evalRangeNode(scope, args, context) {
86
- return range(evalStart(scope, args, context), evalEnd(scope, args, context), evalStep(scope, args, context));
87
- };
88
- } else {
89
- return function evalRangeNode(scope, args, context) {
90
- return range(evalStart(scope, args, context), evalEnd(scope, args, context));
91
- };
92
- }
93
- };
94
- /**
95
- * Execute a callback for each of the child nodes of this node
96
- * @param {function(child: Node, path: string, parent: Node)} callback
97
- */
20
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
98
21
 
22
+ var _is = require("../../utils/is.js");
99
23
 
100
- RangeNode.prototype.forEach = function (callback) {
101
- callback(this.start, 'start', this);
102
- callback(this.end, 'end', this);
24
+ var _factory = require("../../utils/factory.js");
103
25
 
104
- if (this.step) {
105
- callback(this.step, 'step', this);
106
- }
107
- };
108
- /**
109
- * Create a new RangeNode having it's childs be the results of calling
110
- * the provided callback function for each of the childs of the original node.
111
- * @param {function(child: Node, path: string, parent: Node): Node} callback
112
- * @returns {RangeNode} Returns a transformed copy of the node
113
- */
26
+ var _operators = require("../operators.js");
114
27
 
28
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
115
29
 
116
- RangeNode.prototype.map = function (callback) {
117
- return new RangeNode(this._ifNode(callback(this.start, 'start', this)), this._ifNode(callback(this.end, 'end', this)), this.step && this._ifNode(callback(this.step, 'step', this)));
118
- };
119
- /**
120
- * Create a clone of this node, a shallow copy
121
- * @return {RangeNode}
122
- */
30
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
123
31
 
32
+ var name = 'RangeNode';
33
+ var dependencies = ['Node'];
34
+ var createRangeNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
35
+ var Node = _ref.Node;
124
36
 
125
- RangeNode.prototype.clone = function () {
126
- return new RangeNode(this.start, this.end, this.step && this.step);
127
- };
128
37
  /**
129
38
  * Calculate the necessary parentheses
130
39
  * @param {Node} node
131
40
  * @param {string} parenthesis
41
+ * @param {string} implicit
132
42
  * @return {Object} parentheses
133
43
  * @private
134
44
  */
135
-
136
-
137
- function calculateNecessaryParentheses(node, parenthesis) {
138
- var precedence = (0, _operators.getPrecedence)(node, parenthesis);
45
+ function calculateNecessaryParentheses(node, parenthesis, implicit) {
46
+ var precedence = (0, _operators.getPrecedence)(node, parenthesis, implicit);
139
47
  var parens = {};
140
- var startPrecedence = (0, _operators.getPrecedence)(node.start, parenthesis);
48
+ var startPrecedence = (0, _operators.getPrecedence)(node.start, parenthesis, implicit);
141
49
  parens.start = startPrecedence !== null && startPrecedence <= precedence || parenthesis === 'all';
142
50
 
143
51
  if (node.step) {
144
- var stepPrecedence = (0, _operators.getPrecedence)(node.step, parenthesis);
52
+ var stepPrecedence = (0, _operators.getPrecedence)(node.step, parenthesis, implicit);
145
53
  parens.step = stepPrecedence !== null && stepPrecedence <= precedence || parenthesis === 'all';
146
54
  }
147
55
 
148
- var endPrecedence = (0, _operators.getPrecedence)(node.end, parenthesis);
56
+ var endPrecedence = (0, _operators.getPrecedence)(node.end, parenthesis, implicit);
149
57
  parens.end = endPrecedence !== null && endPrecedence <= precedence || parenthesis === 'all';
150
58
  return parens;
151
59
  }
152
- /**
153
- * Get string representation
154
- * @param {Object} options
155
- * @return {string} str
156
- */
157
60
 
61
+ var RangeNode = /*#__PURE__*/function (_Node) {
62
+ (0, _inherits2["default"])(RangeNode, _Node);
158
63
 
159
- RangeNode.prototype._toString = function (options) {
160
- var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
161
- var parens = calculateNecessaryParentheses(this, parenthesis); // format string as start:step:stop
64
+ var _super = _createSuper(RangeNode);
162
65
 
163
- var str;
164
- var start = this.start.toString(options);
66
+ /**
67
+ * @constructor RangeNode
68
+ * @extends {Node}
69
+ * create a range
70
+ * @param {Node} start included lower-bound
71
+ * @param {Node} end included upper-bound
72
+ * @param {Node} [step] optional step
73
+ */
74
+ function RangeNode(start, end, step) {
75
+ var _this;
165
76
 
166
- if (parens.start) {
167
- start = '(' + start + ')';
168
- }
169
-
170
- str = start;
77
+ (0, _classCallCheck2["default"])(this, RangeNode);
78
+ _this = _super.call(this); // validate inputs
171
79
 
172
- if (this.step) {
173
- var step = this.step.toString(options);
80
+ if (!(0, _is.isNode)(start)) throw new TypeError('Node expected');
81
+ if (!(0, _is.isNode)(end)) throw new TypeError('Node expected');
82
+ if (step && !(0, _is.isNode)(step)) throw new TypeError('Node expected');
83
+ if (arguments.length > 3) throw new Error('Too many arguments');
84
+ _this.start = start; // included lower-bound
174
85
 
175
- if (parens.step) {
176
- step = '(' + step + ')';
177
- }
178
-
179
- str += ':' + step;
180
- }
86
+ _this.end = end; // included upper-bound
181
87
 
182
- var end = this.end.toString(options);
88
+ _this.step = step || null; // optional step
183
89
 
184
- if (parens.end) {
185
- end = '(' + end + ')';
90
+ return _this;
186
91
  }
187
92
 
188
- str += ':' + end;
189
- return str;
190
- };
191
- /**
192
- * Get a JSON representation of the node
193
- * @returns {Object}
194
- */
195
-
93
+ (0, _createClass2["default"])(RangeNode, [{
94
+ key: "type",
95
+ get: function get() {
96
+ return name;
97
+ }
98
+ }, {
99
+ key: "isRangeNode",
100
+ get: function get() {
101
+ return true;
102
+ }
103
+ /**
104
+ * Check whether the RangeNode needs the `end` symbol to be defined.
105
+ * This end is the size of the Matrix in current dimension.
106
+ * @return {boolean}
107
+ */
108
+
109
+ }, {
110
+ key: "needsEnd",
111
+ value: function needsEnd() {
112
+ // find all `end` symbols in this RangeNode
113
+ var endSymbols = this.filter(function (node) {
114
+ return (0, _is.isSymbolNode)(node) && node.name === 'end';
115
+ });
116
+ return endSymbols.length > 0;
117
+ }
118
+ /**
119
+ * Compile a node into a JavaScript function.
120
+ * This basically pre-calculates as much as possible and only leaves open
121
+ * calculations which depend on a dynamic scope with variables.
122
+ * @param {Object} math Math.js namespace with functions and constants.
123
+ * @param {Object} argNames An object with argument names as key and `true`
124
+ * as value. Used in the SymbolNode to optimize
125
+ * for arguments from user assigned functions
126
+ * (see FunctionAssignmentNode) or special symbols
127
+ * like `end` (see IndexNode).
128
+ * @return {function} Returns a function which can be called like:
129
+ * evalNode(scope: Object, args: Object, context: *)
130
+ */
131
+
132
+ }, {
133
+ key: "_compile",
134
+ value: function _compile(math, argNames) {
135
+ var range = math.range;
136
+
137
+ var evalStart = this.start._compile(math, argNames);
138
+
139
+ var evalEnd = this.end._compile(math, argNames);
140
+
141
+ if (this.step) {
142
+ var evalStep = this.step._compile(math, argNames);
143
+
144
+ return function evalRangeNode(scope, args, context) {
145
+ return range(evalStart(scope, args, context), evalEnd(scope, args, context), evalStep(scope, args, context));
146
+ };
147
+ } else {
148
+ return function evalRangeNode(scope, args, context) {
149
+ return range(evalStart(scope, args, context), evalEnd(scope, args, context));
150
+ };
151
+ }
152
+ }
153
+ /**
154
+ * Execute a callback for each of the child nodes of this node
155
+ * @param {function(child: Node, path: string, parent: Node)} callback
156
+ */
157
+
158
+ }, {
159
+ key: "forEach",
160
+ value: function forEach(callback) {
161
+ callback(this.start, 'start', this);
162
+ callback(this.end, 'end', this);
163
+
164
+ if (this.step) {
165
+ callback(this.step, 'step', this);
166
+ }
167
+ }
168
+ /**
169
+ * Create a new RangeNode whose children are the results of calling
170
+ * the provided callback function for each child of the original node.
171
+ * @param {function(child: Node, path: string, parent: Node): Node} callback
172
+ * @returns {RangeNode} Returns a transformed copy of the node
173
+ */
174
+
175
+ }, {
176
+ key: "map",
177
+ value: function map(callback) {
178
+ return new RangeNode(this._ifNode(callback(this.start, 'start', this)), this._ifNode(callback(this.end, 'end', this)), this.step && this._ifNode(callback(this.step, 'step', this)));
179
+ }
180
+ /**
181
+ * Create a clone of this node, a shallow copy
182
+ * @return {RangeNode}
183
+ */
184
+
185
+ }, {
186
+ key: "clone",
187
+ value: function clone() {
188
+ return new RangeNode(this.start, this.end, this.step && this.step);
189
+ }
190
+ /**
191
+ * Get string representation
192
+ * @param {Object} options
193
+ * @return {string} str
194
+ */
196
195
 
197
- RangeNode.prototype.toJSON = function () {
198
- return {
199
- mathjs: 'RangeNode',
200
- start: this.start,
201
- end: this.end,
202
- step: this.step
203
- };
204
- };
205
- /**
206
- * Instantiate an RangeNode from its JSON representation
207
- * @param {Object} json An object structured like
208
- * `{"mathjs": "RangeNode", "start": ..., "end": ..., "step": ...}`,
209
- * where mathjs is optional
210
- * @returns {RangeNode}
211
- */
196
+ }, {
197
+ key: "_toString",
198
+ value: function _toString(options) {
199
+ var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
200
+ var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit); // format string as start:step:stop
212
201
 
202
+ var str;
203
+ var start = this.start.toString(options);
213
204
 
214
- RangeNode.fromJSON = function (json) {
215
- return new RangeNode(json.start, json.end, json.step);
216
- };
217
- /**
218
- * Get HTML representation
219
- * @param {Object} options
220
- * @return {string} str
221
- */
205
+ if (parens.start) {
206
+ start = '(' + start + ')';
207
+ }
222
208
 
209
+ str = start;
223
210
 
224
- RangeNode.prototype.toHTML = function (options) {
225
- var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
226
- var parens = calculateNecessaryParentheses(this, parenthesis); // format string as start:step:stop
211
+ if (this.step) {
212
+ var step = this.step.toString(options);
227
213
 
228
- var str;
229
- var start = this.start.toHTML(options);
214
+ if (parens.step) {
215
+ step = '(' + step + ')';
216
+ }
230
217
 
231
- if (parens.start) {
232
- start = '<span class="math-parenthesis math-round-parenthesis">(</span>' + start + '<span class="math-parenthesis math-round-parenthesis">)</span>';
233
- }
218
+ str += ':' + step;
219
+ }
234
220
 
235
- str = start;
221
+ var end = this.end.toString(options);
236
222
 
237
- if (this.step) {
238
- var step = this.step.toHTML(options);
223
+ if (parens.end) {
224
+ end = '(' + end + ')';
225
+ }
239
226
 
240
- if (parens.step) {
241
- step = '<span class="math-parenthesis math-round-parenthesis">(</span>' + step + '<span class="math-parenthesis math-round-parenthesis">)</span>';
227
+ str += ':' + end;
228
+ return str;
242
229
  }
230
+ /**
231
+ * Get a JSON representation of the node
232
+ * @returns {Object}
233
+ */
234
+
235
+ }, {
236
+ key: "toJSON",
237
+ value: function toJSON() {
238
+ return {
239
+ mathjs: name,
240
+ start: this.start,
241
+ end: this.end,
242
+ step: this.step
243
+ };
244
+ }
245
+ /**
246
+ * Instantiate an RangeNode from its JSON representation
247
+ * @param {Object} json
248
+ * An object structured like
249
+ * `{"mathjs": "RangeNode", "start": ..., "end": ..., "step": ...}`,
250
+ * where mathjs is optional
251
+ * @returns {RangeNode}
252
+ */
253
+
254
+ }, {
255
+ key: "toHTML",
256
+ value:
257
+ /**
258
+ * Get HTML representation
259
+ * @param {Object} options
260
+ * @return {string} str
261
+ */
262
+ function toHTML(options) {
263
+ var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
264
+ var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit); // format string as start:step:stop
265
+
266
+ var str;
267
+ var start = this.start.toHTML(options);
268
+
269
+ if (parens.start) {
270
+ start = '<span class="math-parenthesis math-round-parenthesis">(</span>' + start + '<span class="math-parenthesis math-round-parenthesis">)</span>';
271
+ }
272
+
273
+ str = start;
274
+
275
+ if (this.step) {
276
+ var step = this.step.toHTML(options);
277
+
278
+ if (parens.step) {
279
+ step = '<span class="math-parenthesis math-round-parenthesis">(</span>' + step + '<span class="math-parenthesis math-round-parenthesis">)</span>';
280
+ }
281
+
282
+ str += '<span class="math-operator math-range-operator">:</span>' + step;
283
+ }
284
+
285
+ var end = this.end.toHTML(options);
286
+
287
+ if (parens.end) {
288
+ end = '<span class="math-parenthesis math-round-parenthesis">(</span>' + end + '<span class="math-parenthesis math-round-parenthesis">)</span>';
289
+ }
290
+
291
+ str += '<span class="math-operator math-range-operator">:</span>' + end;
292
+ return str;
293
+ }
294
+ /**
295
+ * Get LaTeX representation
296
+ * @params {Object} options
297
+ * @return {string} str
298
+ */
243
299
 
244
- str += '<span class="math-operator math-range-operator">:</span>' + step;
245
- }
246
-
247
- var end = this.end.toHTML(options);
300
+ }, {
301
+ key: "_toTex",
302
+ value: function _toTex(options) {
303
+ var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
304
+ var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);
305
+ var str = this.start.toTex(options);
248
306
 
249
- if (parens.end) {
250
- end = '<span class="math-parenthesis math-round-parenthesis">(</span>' + end + '<span class="math-parenthesis math-round-parenthesis">)</span>';
251
- }
307
+ if (parens.start) {
308
+ str = "\\left(".concat(str, "\\right)");
309
+ }
252
310
 
253
- str += '<span class="math-operator math-range-operator">:</span>' + end;
254
- return str;
255
- };
256
- /**
257
- * Get LaTeX representation
258
- * @params {Object} options
259
- * @return {string} str
260
- */
311
+ if (this.step) {
312
+ var step = this.step.toTex(options);
261
313
 
314
+ if (parens.step) {
315
+ step = "\\left(".concat(step, "\\right)");
316
+ }
262
317
 
263
- RangeNode.prototype._toTex = function (options) {
264
- var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
265
- var parens = calculateNecessaryParentheses(this, parenthesis);
266
- var str = this.start.toTex(options);
318
+ str += ':' + step;
319
+ }
267
320
 
268
- if (parens.start) {
269
- str = "\\left(".concat(str, "\\right)");
270
- }
321
+ var end = this.end.toTex(options);
271
322
 
272
- if (this.step) {
273
- var step = this.step.toTex(options);
323
+ if (parens.end) {
324
+ end = "\\left(".concat(end, "\\right)");
325
+ }
274
326
 
275
- if (parens.step) {
276
- step = "\\left(".concat(step, "\\right)");
327
+ str += ':' + end;
328
+ return str;
277
329
  }
330
+ }], [{
331
+ key: "fromJSON",
332
+ value: function fromJSON(json) {
333
+ return new RangeNode(json.start, json.end, json.step);
334
+ }
335
+ }]);
336
+ return RangeNode;
337
+ }(Node);
278
338
 
279
- str += ':' + step;
280
- }
281
-
282
- var end = this.end.toTex(options);
283
-
284
- if (parens.end) {
285
- end = "\\left(".concat(end, "\\right)");
286
- }
287
-
288
- str += ':' + end;
289
- return str;
290
- };
291
-
339
+ (0, _defineProperty2["default"])(RangeNode, "name", name);
292
340
  return RangeNode;
293
341
  }, {
294
342
  isClass: true,