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,10 +1,24 @@
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.createFunctionAssignmentNode = void 0;
7
9
 
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
+
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
+
20
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
+
8
22
  var _is = require("../../utils/is.js");
9
23
 
10
24
  var _keywords = require("../keywords.js");
@@ -19,226 +33,274 @@ var _operators = require("../operators.js");
19
33
 
20
34
  var _factory = require("../../utils/factory.js");
21
35
 
36
+ 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); }; }
37
+
38
+ 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; } }
39
+
22
40
  var name = 'FunctionAssignmentNode';
23
41
  var dependencies = ['typed', 'Node'];
24
42
  var createFunctionAssignmentNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
25
43
  var typed = _ref.typed,
26
44
  Node = _ref.Node;
27
45
 
28
- /**
29
- * @constructor FunctionAssignmentNode
30
- * @extends {Node}
31
- * Function assignment
32
- *
33
- * @param {string} name Function name
34
- * @param {string[] | Array.<{name: string, type: string}>} params
35
- * Array with function parameter names, or an
36
- * array with objects containing the name
37
- * and type of the parameter
38
- * @param {Node} expr The function expression
39
- */
40
- function FunctionAssignmentNode(name, params, expr) {
41
- if (!(this instanceof FunctionAssignmentNode)) {
42
- throw new SyntaxError('Constructor must be called with the new operator');
43
- } // validate input
44
-
45
-
46
- if (typeof name !== 'string') throw new TypeError('String expected for parameter "name"');
47
- if (!Array.isArray(params)) throw new TypeError('Array containing strings or objects expected for parameter "params"');
48
- if (!(0, _is.isNode)(expr)) throw new TypeError('Node expected for parameter "expr"');
49
- if (_keywords.keywords.has(name)) throw new Error('Illegal function name, "' + name + '" is a reserved keyword');
50
- this.name = name;
51
- this.params = params.map(function (param) {
52
- return param && param.name || param;
53
- });
54
- this.types = params.map(function (param) {
55
- return param && param.type || 'any';
56
- });
57
- this.expr = expr;
58
- }
59
-
60
- FunctionAssignmentNode.prototype = new Node();
61
- FunctionAssignmentNode.prototype.type = 'FunctionAssignmentNode';
62
- FunctionAssignmentNode.prototype.isFunctionAssignmentNode = true;
63
- /**
64
- * Compile a node into a JavaScript function.
65
- * This basically pre-calculates as much as possible and only leaves open
66
- * calculations which depend on a dynamic scope with variables.
67
- * @param {Object} math Math.js namespace with functions and constants.
68
- * @param {Object} argNames An object with argument names as key and `true`
69
- * as value. Used in the SymbolNode to optimize
70
- * for arguments from user assigned functions
71
- * (see FunctionAssignmentNode) or special symbols
72
- * like `end` (see IndexNode).
73
- * @return {function} Returns a function which can be called like:
74
- * evalNode(scope: Object, args: Object, context: *)
75
- */
76
-
77
- FunctionAssignmentNode.prototype._compile = function (math, argNames) {
78
- var childArgNames = Object.create(argNames);
79
- (0, _array.forEach)(this.params, function (param) {
80
- childArgNames[param] = true;
81
- }); // compile the function expression with the child args
82
-
83
- var evalExpr = this.expr._compile(math, childArgNames);
84
-
85
- var name = this.name;
86
- var params = this.params;
87
- var signature = (0, _array.join)(this.types, ',');
88
- var syntax = name + '(' + (0, _array.join)(this.params, ', ') + ')';
89
- return function evalFunctionAssignmentNode(scope, args, context) {
90
- var signatures = {};
91
-
92
- signatures[signature] = function () {
93
- var childArgs = Object.create(args);
94
-
95
- for (var i = 0; i < params.length; i++) {
96
- childArgs[params[i]] = arguments[i];
97
- }
98
-
99
- return evalExpr(scope, childArgs, context);
100
- };
101
-
102
- var fn = typed(name, signatures);
103
- fn.syntax = syntax;
104
- scope.set(name, fn);
105
- return fn;
106
- };
107
- };
108
- /**
109
- * Execute a callback for each of the child nodes of this node
110
- * @param {function(child: Node, path: string, parent: Node)} callback
111
- */
112
-
113
-
114
- FunctionAssignmentNode.prototype.forEach = function (callback) {
115
- callback(this.expr, 'expr', this);
116
- };
117
- /**
118
- * Create a new FunctionAssignmentNode having it's childs be the results of calling
119
- * the provided callback function for each of the childs of the original node.
120
- * @param {function(child: Node, path: string, parent: Node): Node} callback
121
- * @returns {FunctionAssignmentNode} Returns a transformed copy of the node
122
- */
123
-
124
-
125
- FunctionAssignmentNode.prototype.map = function (callback) {
126
- var expr = this._ifNode(callback(this.expr, 'expr', this));
127
-
128
- return new FunctionAssignmentNode(this.name, this.params.slice(0), expr);
129
- };
130
- /**
131
- * Create a clone of this node, a shallow copy
132
- * @return {FunctionAssignmentNode}
133
- */
134
-
135
-
136
- FunctionAssignmentNode.prototype.clone = function () {
137
- return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr);
138
- };
139
46
  /**
140
47
  * Is parenthesis needed?
141
48
  * @param {Node} node
142
49
  * @param {Object} parenthesis
50
+ * @param {string} implicit
143
51
  * @private
144
52
  */
145
-
146
-
147
- function needParenthesis(node, parenthesis) {
148
- var precedence = (0, _operators.getPrecedence)(node, parenthesis);
149
- var exprPrecedence = (0, _operators.getPrecedence)(node.expr, parenthesis);
53
+ function needParenthesis(node, parenthesis, implicit) {
54
+ var precedence = (0, _operators.getPrecedence)(node, parenthesis, implicit);
55
+ var exprPrecedence = (0, _operators.getPrecedence)(node.expr, parenthesis, implicit);
150
56
  return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;
151
57
  }
152
- /**
153
- * get string representation
154
- * @param {Object} options
155
- * @return {string} str
156
- */
157
-
158
58
 
159
- FunctionAssignmentNode.prototype._toString = function (options) {
160
- var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
161
- var expr = this.expr.toString(options);
162
-
163
- if (needParenthesis(this, parenthesis)) {
164
- expr = '(' + expr + ')';
59
+ var FunctionAssignmentNode = /*#__PURE__*/function (_Node) {
60
+ (0, _inherits2["default"])(FunctionAssignmentNode, _Node);
61
+
62
+ var _super = _createSuper(FunctionAssignmentNode);
63
+
64
+ /**
65
+ * @constructor FunctionAssignmentNode
66
+ * @extends {Node}
67
+ * Function assignment
68
+ *
69
+ * @param {string} name Function name
70
+ * @param {string[] | Array.<{name: string, type: string}>} params
71
+ * Array with function parameter names, or an
72
+ * array with objects containing the name
73
+ * and type of the parameter
74
+ * @param {Node} expr The function expression
75
+ */
76
+ function FunctionAssignmentNode(name, params, expr) {
77
+ var _this;
78
+
79
+ (0, _classCallCheck2["default"])(this, FunctionAssignmentNode);
80
+ _this = _super.call(this); // validate input
81
+
82
+ if (typeof name !== 'string') {
83
+ throw new TypeError('String expected for parameter "name"');
84
+ }
85
+
86
+ if (!Array.isArray(params)) {
87
+ throw new TypeError('Array containing strings or objects expected for parameter "params"');
88
+ }
89
+
90
+ if (!(0, _is.isNode)(expr)) {
91
+ throw new TypeError('Node expected for parameter "expr"');
92
+ }
93
+
94
+ if (_keywords.keywords.has(name)) {
95
+ throw new Error('Illegal function name, "' + name + '" is a reserved keyword');
96
+ }
97
+
98
+ _this.name = name;
99
+ _this.params = params.map(function (param) {
100
+ return param && param.name || param;
101
+ });
102
+ _this.types = params.map(function (param) {
103
+ return param && param.type || 'any';
104
+ });
105
+ _this.expr = expr;
106
+ return _this;
165
107
  }
166
108
 
167
- return this.name + '(' + this.params.join(', ') + ') = ' + expr;
168
- };
169
- /**
170
- * Get a JSON representation of the node
171
- * @returns {Object}
172
- */
173
-
109
+ (0, _createClass2["default"])(FunctionAssignmentNode, [{
110
+ key: "type",
111
+ get: function get() {
112
+ return name;
113
+ }
114
+ }, {
115
+ key: "isFunctionAssignmentNode",
116
+ get: function get() {
117
+ return true;
118
+ }
119
+ /**
120
+ * Compile a node into a JavaScript function.
121
+ * This basically pre-calculates as much as possible and only leaves open
122
+ * calculations which depend on a dynamic scope with variables.
123
+ * @param {Object} math Math.js namespace with functions and constants.
124
+ * @param {Object} argNames An object with argument names as key and `true`
125
+ * as value. Used in the SymbolNode to optimize
126
+ * for arguments from user assigned functions
127
+ * (see FunctionAssignmentNode) or special symbols
128
+ * like `end` (see IndexNode).
129
+ * @return {function} Returns a function which can be called like:
130
+ * evalNode(scope: Object, args: Object, context: *)
131
+ */
132
+
133
+ }, {
134
+ key: "_compile",
135
+ value: function _compile(math, argNames) {
136
+ var childArgNames = Object.create(argNames);
137
+ (0, _array.forEach)(this.params, function (param) {
138
+ childArgNames[param] = true;
139
+ }); // compile the function expression with the child args
140
+
141
+ var evalExpr = this.expr._compile(math, childArgNames);
142
+
143
+ var name = this.name;
144
+ var params = this.params;
145
+ var signature = (0, _array.join)(this.types, ',');
146
+ var syntax = name + '(' + (0, _array.join)(this.params, ', ') + ')';
147
+ return function evalFunctionAssignmentNode(scope, args, context) {
148
+ var signatures = {};
149
+
150
+ signatures[signature] = function () {
151
+ var childArgs = Object.create(args);
152
+
153
+ for (var i = 0; i < params.length; i++) {
154
+ childArgs[params[i]] = arguments[i];
155
+ }
156
+
157
+ return evalExpr(scope, childArgs, context);
158
+ };
159
+
160
+ var fn = typed(name, signatures);
161
+ fn.syntax = syntax;
162
+ scope.set(name, fn);
163
+ return fn;
164
+ };
165
+ }
166
+ /**
167
+ * Execute a callback for each of the child nodes of this node
168
+ * @param {function(child: Node, path: string, parent: Node)} callback
169
+ */
170
+
171
+ }, {
172
+ key: "forEach",
173
+ value: function forEach(callback) {
174
+ callback(this.expr, 'expr', this);
175
+ }
176
+ /**
177
+ * Create a new FunctionAssignmentNode whose children are the results of
178
+ * calling the provided callback function for each child of the original
179
+ * node.
180
+ * @param {function(child: Node, path: string, parent: Node): Node} callback
181
+ * @returns {FunctionAssignmentNode} Returns a transformed copy of the node
182
+ */
183
+
184
+ }, {
185
+ key: "map",
186
+ value: function map(callback) {
187
+ var expr = this._ifNode(callback(this.expr, 'expr', this));
188
+
189
+ return new FunctionAssignmentNode(this.name, this.params.slice(0), expr);
190
+ }
191
+ /**
192
+ * Create a clone of this node, a shallow copy
193
+ * @return {FunctionAssignmentNode}
194
+ */
195
+
196
+ }, {
197
+ key: "clone",
198
+ value: function clone() {
199
+ return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr);
200
+ }
201
+ /**
202
+ * get string representation
203
+ * @param {Object} options
204
+ * @return {string} str
205
+ */
206
+
207
+ }, {
208
+ key: "_toString",
209
+ value: function _toString(options) {
210
+ var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
211
+ var expr = this.expr.toString(options);
212
+
213
+ if (needParenthesis(this, parenthesis, options && options.implicit)) {
214
+ expr = '(' + expr + ')';
215
+ }
174
216
 
175
- FunctionAssignmentNode.prototype.toJSON = function () {
176
- var types = this.types;
177
- return {
178
- mathjs: 'FunctionAssignmentNode',
179
- name: this.name,
180
- params: this.params.map(function (param, index) {
217
+ return this.name + '(' + this.params.join(', ') + ') = ' + expr;
218
+ }
219
+ /**
220
+ * Get a JSON representation of the node
221
+ * @returns {Object}
222
+ */
223
+
224
+ }, {
225
+ key: "toJSON",
226
+ value: function toJSON() {
227
+ var types = this.types;
181
228
  return {
182
- name: param,
183
- type: types[index]
229
+ mathjs: name,
230
+ name: this.name,
231
+ params: this.params.map(function (param, index) {
232
+ return {
233
+ name: param,
234
+ type: types[index]
235
+ };
236
+ }),
237
+ expr: this.expr
184
238
  };
185
- }),
186
- expr: this.expr
187
- };
188
- };
189
- /**
190
- * Instantiate an FunctionAssignmentNode from its JSON representation
191
- * @param {Object} json An object structured like
192
- * `{"mathjs": "FunctionAssignmentNode", name: ..., params: ..., expr: ...}`,
193
- * where mathjs is optional
194
- * @returns {FunctionAssignmentNode}
195
- */
196
-
197
-
198
- FunctionAssignmentNode.fromJSON = function (json) {
199
- return new FunctionAssignmentNode(json.name, json.params, json.expr);
200
- };
201
- /**
202
- * get HTML representation
203
- * @param {Object} options
204
- * @return {string} str
205
- */
206
-
207
-
208
- FunctionAssignmentNode.prototype.toHTML = function (options) {
209
- var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
210
- var params = [];
211
-
212
- for (var i = 0; i < this.params.length; i++) {
213
- params.push('<span class="math-symbol math-parameter">' + (0, _string.escape)(this.params[i]) + '</span>');
214
- }
215
-
216
- var expr = this.expr.toHTML(options);
217
-
218
- if (needParenthesis(this, parenthesis)) {
219
- expr = '<span class="math-parenthesis math-round-parenthesis">(</span>' + expr + '<span class="math-parenthesis math-round-parenthesis">)</span>';
220
- }
221
-
222
- return '<span class="math-function">' + (0, _string.escape)(this.name) + '</span>' + '<span class="math-parenthesis math-round-parenthesis">(</span>' + params.join('<span class="math-separator">,</span>') + '<span class="math-parenthesis math-round-parenthesis">)</span><span class="math-operator math-assignment-operator math-variable-assignment-operator math-binary-operator">=</span>' + expr;
223
- };
224
- /**
225
- * get LaTeX representation
226
- * @param {Object} options
227
- * @return {string} str
228
- */
229
-
239
+ }
240
+ /**
241
+ * Instantiate an FunctionAssignmentNode from its JSON representation
242
+ * @param {Object} json
243
+ * An object structured like
244
+ * ```
245
+ * {"mathjs": "FunctionAssignmentNode",
246
+ * name: ..., params: ..., expr: ...}
247
+ * ```
248
+ * where mathjs is optional
249
+ * @returns {FunctionAssignmentNode}
250
+ */
251
+
252
+ }, {
253
+ key: "toHTML",
254
+ value:
255
+ /**
256
+ * get HTML representation
257
+ * @param {Object} options
258
+ * @return {string} str
259
+ */
260
+ function toHTML(options) {
261
+ var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
262
+ var params = [];
263
+
264
+ for (var i = 0; i < this.params.length; i++) {
265
+ params.push('<span class="math-symbol math-parameter">' + (0, _string.escape)(this.params[i]) + '</span>');
266
+ }
230
267
 
231
- FunctionAssignmentNode.prototype._toTex = function (options) {
232
- var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
233
- var expr = this.expr.toTex(options);
268
+ var expr = this.expr.toHTML(options);
234
269
 
235
- if (needParenthesis(this, parenthesis)) {
236
- expr = "\\left(".concat(expr, "\\right)");
237
- }
270
+ if (needParenthesis(this, parenthesis, options && options.implicit)) {
271
+ expr = '<span class="math-parenthesis math-round-parenthesis">(</span>' + expr + '<span class="math-parenthesis math-round-parenthesis">)</span>';
272
+ }
238
273
 
239
- return '\\mathrm{' + this.name + '}\\left(' + this.params.map(_latex.toSymbol).join(',') + '\\right):=' + expr;
240
- };
274
+ return '<span class="math-function">' + (0, _string.escape)(this.name) + '</span>' + '<span class="math-parenthesis math-round-parenthesis">(</span>' + params.join('<span class="math-separator">,</span>') + '<span class="math-parenthesis math-round-parenthesis">)</span>' + '<span class="math-operator math-assignment-operator ' + 'math-variable-assignment-operator math-binary-operator">=</span>' + expr;
275
+ }
276
+ /**
277
+ * get LaTeX representation
278
+ * @param {Object} options
279
+ * @return {string} str
280
+ */
281
+
282
+ }, {
283
+ key: "_toTex",
284
+ value: function _toTex(options) {
285
+ var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
286
+ var expr = this.expr.toTex(options);
287
+
288
+ if (needParenthesis(this, parenthesis, options && options.implicit)) {
289
+ expr = "\\left(".concat(expr, "\\right)");
290
+ }
241
291
 
292
+ return '\\mathrm{' + this.name + '}\\left(' + this.params.map(_latex.toSymbol).join(',') + '\\right):=' + expr;
293
+ }
294
+ }], [{
295
+ key: "fromJSON",
296
+ value: function fromJSON(json) {
297
+ return new FunctionAssignmentNode(json.name, json.params, json.expr);
298
+ }
299
+ }]);
300
+ return FunctionAssignmentNode;
301
+ }(Node);
302
+
303
+ (0, _defineProperty2["default"])(FunctionAssignmentNode, "name", name);
242
304
  return FunctionAssignmentNode;
243
305
  }, {
244
306
  isClass: true,