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,3 +1,4 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
1
2
  import { isNode, isSymbolNode } from '../../utils/is.js';
2
3
  import { factory } from '../../utils/factory.js';
3
4
  import { getPrecedence } from '../operators.js';
@@ -8,278 +9,286 @@ export var createRangeNode = /* #__PURE__ */factory(name, dependencies, _ref =>
8
9
  Node
9
10
  } = _ref;
10
11
 
11
- /**
12
- * @constructor RangeNode
13
- * @extends {Node}
14
- * create a range
15
- * @param {Node} start included lower-bound
16
- * @param {Node} end included upper-bound
17
- * @param {Node} [step] optional step
18
- */
19
- function RangeNode(start, end, step) {
20
- if (!(this instanceof RangeNode)) {
21
- throw new SyntaxError('Constructor must be called with the new operator');
22
- } // validate inputs
23
-
24
-
25
- if (!isNode(start)) throw new TypeError('Node expected');
26
- if (!isNode(end)) throw new TypeError('Node expected');
27
- if (step && !isNode(step)) throw new TypeError('Node expected');
28
- if (arguments.length > 3) throw new Error('Too many arguments');
29
- this.start = start; // included lower-bound
30
-
31
- this.end = end; // included upper-bound
32
-
33
- this.step = step || null; // optional step
34
- }
35
-
36
- RangeNode.prototype = new Node();
37
- RangeNode.prototype.type = 'RangeNode';
38
- RangeNode.prototype.isRangeNode = true;
39
- /**
40
- * Check whether the RangeNode needs the `end` symbol to be defined.
41
- * This end is the size of the Matrix in current dimension.
42
- * @return {boolean}
43
- */
44
-
45
- RangeNode.prototype.needsEnd = function () {
46
- // find all `end` symbols in this RangeNode
47
- var endSymbols = this.filter(function (node) {
48
- return isSymbolNode(node) && node.name === 'end';
49
- });
50
- return endSymbols.length > 0;
51
- };
52
- /**
53
- * Compile a node into a JavaScript function.
54
- * This basically pre-calculates as much as possible and only leaves open
55
- * calculations which depend on a dynamic scope with variables.
56
- * @param {Object} math Math.js namespace with functions and constants.
57
- * @param {Object} argNames An object with argument names as key and `true`
58
- * as value. Used in the SymbolNode to optimize
59
- * for arguments from user assigned functions
60
- * (see FunctionAssignmentNode) or special symbols
61
- * like `end` (see IndexNode).
62
- * @return {function} Returns a function which can be called like:
63
- * evalNode(scope: Object, args: Object, context: *)
64
- */
65
-
66
-
67
- RangeNode.prototype._compile = function (math, argNames) {
68
- var range = math.range;
69
-
70
- var evalStart = this.start._compile(math, argNames);
71
-
72
- var evalEnd = this.end._compile(math, argNames);
73
-
74
- if (this.step) {
75
- var evalStep = this.step._compile(math, argNames);
76
-
77
- return function evalRangeNode(scope, args, context) {
78
- return range(evalStart(scope, args, context), evalEnd(scope, args, context), evalStep(scope, args, context));
79
- };
80
- } else {
81
- return function evalRangeNode(scope, args, context) {
82
- return range(evalStart(scope, args, context), evalEnd(scope, args, context));
83
- };
84
- }
85
- };
86
- /**
87
- * Execute a callback for each of the child nodes of this node
88
- * @param {function(child: Node, path: string, parent: Node)} callback
89
- */
90
-
91
-
92
- RangeNode.prototype.forEach = function (callback) {
93
- callback(this.start, 'start', this);
94
- callback(this.end, 'end', this);
95
-
96
- if (this.step) {
97
- callback(this.step, 'step', this);
98
- }
99
- };
100
- /**
101
- * Create a new RangeNode having it's childs be the results of calling
102
- * the provided callback function for each of the childs of the original node.
103
- * @param {function(child: Node, path: string, parent: Node): Node} callback
104
- * @returns {RangeNode} Returns a transformed copy of the node
105
- */
106
-
107
-
108
- RangeNode.prototype.map = function (callback) {
109
- 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)));
110
- };
111
- /**
112
- * Create a clone of this node, a shallow copy
113
- * @return {RangeNode}
114
- */
115
-
116
-
117
- RangeNode.prototype.clone = function () {
118
- return new RangeNode(this.start, this.end, this.step && this.step);
119
- };
120
12
  /**
121
13
  * Calculate the necessary parentheses
122
14
  * @param {Node} node
123
15
  * @param {string} parenthesis
16
+ * @param {string} implicit
124
17
  * @return {Object} parentheses
125
18
  * @private
126
19
  */
127
-
128
-
129
- function calculateNecessaryParentheses(node, parenthesis) {
130
- var precedence = getPrecedence(node, parenthesis);
20
+ function calculateNecessaryParentheses(node, parenthesis, implicit) {
21
+ var precedence = getPrecedence(node, parenthesis, implicit);
131
22
  var parens = {};
132
- var startPrecedence = getPrecedence(node.start, parenthesis);
23
+ var startPrecedence = getPrecedence(node.start, parenthesis, implicit);
133
24
  parens.start = startPrecedence !== null && startPrecedence <= precedence || parenthesis === 'all';
134
25
 
135
26
  if (node.step) {
136
- var stepPrecedence = getPrecedence(node.step, parenthesis);
27
+ var stepPrecedence = getPrecedence(node.step, parenthesis, implicit);
137
28
  parens.step = stepPrecedence !== null && stepPrecedence <= precedence || parenthesis === 'all';
138
29
  }
139
30
 
140
- var endPrecedence = getPrecedence(node.end, parenthesis);
31
+ var endPrecedence = getPrecedence(node.end, parenthesis, implicit);
141
32
  parens.end = endPrecedence !== null && endPrecedence <= precedence || parenthesis === 'all';
142
33
  return parens;
143
34
  }
144
- /**
145
- * Get string representation
146
- * @param {Object} options
147
- * @return {string} str
148
- */
149
-
150
35
 
151
- RangeNode.prototype._toString = function (options) {
152
- var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
153
- var parens = calculateNecessaryParentheses(this, parenthesis); // format string as start:step:stop
36
+ class RangeNode extends Node {
37
+ /**
38
+ * @constructor RangeNode
39
+ * @extends {Node}
40
+ * create a range
41
+ * @param {Node} start included lower-bound
42
+ * @param {Node} end included upper-bound
43
+ * @param {Node} [step] optional step
44
+ */
45
+ constructor(start, end, step) {
46
+ super(); // validate inputs
47
+
48
+ if (!isNode(start)) throw new TypeError('Node expected');
49
+ if (!isNode(end)) throw new TypeError('Node expected');
50
+ if (step && !isNode(step)) throw new TypeError('Node expected');
51
+ if (arguments.length > 3) throw new Error('Too many arguments');
52
+ this.start = start; // included lower-bound
53
+
54
+ this.end = end; // included upper-bound
55
+
56
+ this.step = step || null; // optional step
57
+ }
154
58
 
155
- var str;
156
- var start = this.start.toString(options);
59
+ get type() {
60
+ return name;
61
+ }
157
62
 
158
- if (parens.start) {
159
- start = '(' + start + ')';
63
+ get isRangeNode() {
64
+ return true;
65
+ }
66
+ /**
67
+ * Check whether the RangeNode needs the `end` symbol to be defined.
68
+ * This end is the size of the Matrix in current dimension.
69
+ * @return {boolean}
70
+ */
71
+
72
+
73
+ needsEnd() {
74
+ // find all `end` symbols in this RangeNode
75
+ var endSymbols = this.filter(function (node) {
76
+ return isSymbolNode(node) && node.name === 'end';
77
+ });
78
+ return endSymbols.length > 0;
160
79
  }
80
+ /**
81
+ * Compile a node into a JavaScript function.
82
+ * This basically pre-calculates as much as possible and only leaves open
83
+ * calculations which depend on a dynamic scope with variables.
84
+ * @param {Object} math Math.js namespace with functions and constants.
85
+ * @param {Object} argNames An object with argument names as key and `true`
86
+ * as value. Used in the SymbolNode to optimize
87
+ * for arguments from user assigned functions
88
+ * (see FunctionAssignmentNode) or special symbols
89
+ * like `end` (see IndexNode).
90
+ * @return {function} Returns a function which can be called like:
91
+ * evalNode(scope: Object, args: Object, context: *)
92
+ */
93
+
94
+
95
+ _compile(math, argNames) {
96
+ var range = math.range;
97
+
98
+ var evalStart = this.start._compile(math, argNames);
99
+
100
+ var evalEnd = this.end._compile(math, argNames);
101
+
102
+ if (this.step) {
103
+ var evalStep = this.step._compile(math, argNames);
104
+
105
+ return function evalRangeNode(scope, args, context) {
106
+ return range(evalStart(scope, args, context), evalEnd(scope, args, context), evalStep(scope, args, context));
107
+ };
108
+ } else {
109
+ return function evalRangeNode(scope, args, context) {
110
+ return range(evalStart(scope, args, context), evalEnd(scope, args, context));
111
+ };
112
+ }
113
+ }
114
+ /**
115
+ * Execute a callback for each of the child nodes of this node
116
+ * @param {function(child: Node, path: string, parent: Node)} callback
117
+ */
161
118
 
162
- str = start;
163
119
 
164
- if (this.step) {
165
- var step = this.step.toString(options);
120
+ forEach(callback) {
121
+ callback(this.start, 'start', this);
122
+ callback(this.end, 'end', this);
166
123
 
167
- if (parens.step) {
168
- step = '(' + step + ')';
124
+ if (this.step) {
125
+ callback(this.step, 'step', this);
169
126
  }
127
+ }
128
+ /**
129
+ * Create a new RangeNode whose children are the results of calling
130
+ * the provided callback function for each child of the original node.
131
+ * @param {function(child: Node, path: string, parent: Node): Node} callback
132
+ * @returns {RangeNode} Returns a transformed copy of the node
133
+ */
170
134
 
171
- str += ':' + step;
135
+
136
+ map(callback) {
137
+ 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)));
172
138
  }
139
+ /**
140
+ * Create a clone of this node, a shallow copy
141
+ * @return {RangeNode}
142
+ */
173
143
 
174
- var end = this.end.toString(options);
175
144
 
176
- if (parens.end) {
177
- end = '(' + end + ')';
145
+ clone() {
146
+ return new RangeNode(this.start, this.end, this.step && this.step);
178
147
  }
148
+ /**
149
+ * Get string representation
150
+ * @param {Object} options
151
+ * @return {string} str
152
+ */
179
153
 
180
- str += ':' + end;
181
- return str;
182
- };
183
- /**
184
- * Get a JSON representation of the node
185
- * @returns {Object}
186
- */
187
154
 
155
+ _toString(options) {
156
+ var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
157
+ var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit); // format string as start:step:stop
188
158
 
189
- RangeNode.prototype.toJSON = function () {
190
- return {
191
- mathjs: 'RangeNode',
192
- start: this.start,
193
- end: this.end,
194
- step: this.step
195
- };
196
- };
197
- /**
198
- * Instantiate an RangeNode from its JSON representation
199
- * @param {Object} json An object structured like
200
- * `{"mathjs": "RangeNode", "start": ..., "end": ..., "step": ...}`,
201
- * where mathjs is optional
202
- * @returns {RangeNode}
203
- */
159
+ var str;
160
+ var start = this.start.toString(options);
204
161
 
162
+ if (parens.start) {
163
+ start = '(' + start + ')';
164
+ }
205
165
 
206
- RangeNode.fromJSON = function (json) {
207
- return new RangeNode(json.start, json.end, json.step);
208
- };
209
- /**
210
- * Get HTML representation
211
- * @param {Object} options
212
- * @return {string} str
213
- */
166
+ str = start;
167
+
168
+ if (this.step) {
169
+ var step = this.step.toString(options);
214
170
 
171
+ if (parens.step) {
172
+ step = '(' + step + ')';
173
+ }
215
174
 
216
- RangeNode.prototype.toHTML = function (options) {
217
- var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
218
- var parens = calculateNecessaryParentheses(this, parenthesis); // format string as start:step:stop
175
+ str += ':' + step;
176
+ }
219
177
 
220
- var str;
221
- var start = this.start.toHTML(options);
178
+ var end = this.end.toString(options);
179
+
180
+ if (parens.end) {
181
+ end = '(' + end + ')';
182
+ }
222
183
 
223
- if (parens.start) {
224
- start = '<span class="math-parenthesis math-round-parenthesis">(</span>' + start + '<span class="math-parenthesis math-round-parenthesis">)</span>';
184
+ str += ':' + end;
185
+ return str;
225
186
  }
187
+ /**
188
+ * Get a JSON representation of the node
189
+ * @returns {Object}
190
+ */
191
+
192
+
193
+ toJSON() {
194
+ return {
195
+ mathjs: name,
196
+ start: this.start,
197
+ end: this.end,
198
+ step: this.step
199
+ };
200
+ }
201
+ /**
202
+ * Instantiate an RangeNode from its JSON representation
203
+ * @param {Object} json
204
+ * An object structured like
205
+ * `{"mathjs": "RangeNode", "start": ..., "end": ..., "step": ...}`,
206
+ * where mathjs is optional
207
+ * @returns {RangeNode}
208
+ */
209
+
210
+
211
+ static fromJSON(json) {
212
+ return new RangeNode(json.start, json.end, json.step);
213
+ }
214
+ /**
215
+ * Get HTML representation
216
+ * @param {Object} options
217
+ * @return {string} str
218
+ */
226
219
 
227
- str = start;
228
220
 
229
- if (this.step) {
230
- var step = this.step.toHTML(options);
221
+ toHTML(options) {
222
+ var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
223
+ var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit); // format string as start:step:stop
231
224
 
232
- if (parens.step) {
233
- step = '<span class="math-parenthesis math-round-parenthesis">(</span>' + step + '<span class="math-parenthesis math-round-parenthesis">)</span>';
225
+ var str;
226
+ var start = this.start.toHTML(options);
227
+
228
+ if (parens.start) {
229
+ start = '<span class="math-parenthesis math-round-parenthesis">(</span>' + start + '<span class="math-parenthesis math-round-parenthesis">)</span>';
234
230
  }
235
231
 
236
- str += '<span class="math-operator math-range-operator">:</span>' + step;
237
- }
232
+ str = start;
238
233
 
239
- var end = this.end.toHTML(options);
234
+ if (this.step) {
235
+ var step = this.step.toHTML(options);
240
236
 
241
- if (parens.end) {
242
- end = '<span class="math-parenthesis math-round-parenthesis">(</span>' + end + '<span class="math-parenthesis math-round-parenthesis">)</span>';
243
- }
237
+ if (parens.step) {
238
+ step = '<span class="math-parenthesis math-round-parenthesis">(</span>' + step + '<span class="math-parenthesis math-round-parenthesis">)</span>';
239
+ }
244
240
 
245
- str += '<span class="math-operator math-range-operator">:</span>' + end;
246
- return str;
247
- };
248
- /**
249
- * Get LaTeX representation
250
- * @params {Object} options
251
- * @return {string} str
252
- */
241
+ str += '<span class="math-operator math-range-operator">:</span>' + step;
242
+ }
253
243
 
244
+ var end = this.end.toHTML(options);
254
245
 
255
- RangeNode.prototype._toTex = function (options) {
256
- var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
257
- var parens = calculateNecessaryParentheses(this, parenthesis);
258
- var str = this.start.toTex(options);
246
+ if (parens.end) {
247
+ end = '<span class="math-parenthesis math-round-parenthesis">(</span>' + end + '<span class="math-parenthesis math-round-parenthesis">)</span>';
248
+ }
259
249
 
260
- if (parens.start) {
261
- str = "\\left(".concat(str, "\\right)");
250
+ str += '<span class="math-operator math-range-operator">:</span>' + end;
251
+ return str;
262
252
  }
253
+ /**
254
+ * Get LaTeX representation
255
+ * @params {Object} options
256
+ * @return {string} str
257
+ */
263
258
 
264
- if (this.step) {
265
- var step = this.step.toTex(options);
266
259
 
267
- if (parens.step) {
268
- step = "\\left(".concat(step, "\\right)");
260
+ _toTex(options) {
261
+ var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
262
+ var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);
263
+ var str = this.start.toTex(options);
264
+
265
+ if (parens.start) {
266
+ str = "\\left(".concat(str, "\\right)");
269
267
  }
270
268
 
271
- str += ':' + step;
272
- }
269
+ if (this.step) {
270
+ var step = this.step.toTex(options);
271
+
272
+ if (parens.step) {
273
+ step = "\\left(".concat(step, "\\right)");
274
+ }
275
+
276
+ str += ':' + step;
277
+ }
273
278
 
274
- var end = this.end.toTex(options);
279
+ var end = this.end.toTex(options);
275
280
 
276
- if (parens.end) {
277
- end = "\\left(".concat(end, "\\right)");
281
+ if (parens.end) {
282
+ end = "\\left(".concat(end, "\\right)");
283
+ }
284
+
285
+ str += ':' + end;
286
+ return str;
278
287
  }
279
288
 
280
- str += ':' + end;
281
- return str;
282
- };
289
+ }
290
+
291
+ _defineProperty(RangeNode, "name", name);
283
292
 
284
293
  return RangeNode;
285
294
  }, {