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