mathjs 9.3.2 → 9.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (410) hide show
  1. package/HISTORY.md +22 -0
  2. package/README.md +1 -0
  3. package/bin/cli.js +11 -11
  4. package/docs/expressions/parsing.md +21 -4
  5. package/docs/reference/functions/complex.md +5 -49
  6. package/docs/reference/functions/eigs.md +12 -12
  7. package/docs/reference/functions/flatten.md +1 -0
  8. package/docs/reference/functions/matrixFromColumns.md +1 -1
  9. package/docs/reference/functions/matrixFromFunction.md +12 -0
  10. package/docs/reference/functions/matrixFromRows.md +1 -1
  11. package/docs/reference/functions.md +4 -1
  12. package/examples/advanced/custom_scope_objects.js +115 -0
  13. package/lib/browser/math.js +10 -10
  14. package/lib/browser/math.js.map +1 -1
  15. package/lib/cjs/core/create.js +8 -7
  16. package/lib/cjs/core/function/import.js +9 -7
  17. package/lib/cjs/core/function/typed.js +6 -1
  18. package/lib/cjs/defaultInstance.js +3 -3
  19. package/lib/cjs/entry/allFactoriesAny.js +3 -3
  20. package/lib/cjs/entry/allFactoriesNumber.js +3 -3
  21. package/lib/cjs/entry/configReadonly.js +5 -4
  22. package/lib/cjs/entry/dependenciesAny/dependenciesEigs.generated.js +51 -0
  23. package/lib/cjs/entry/dependenciesAny/dependenciesMatrixFromColumns.generated.js +29 -0
  24. package/lib/cjs/entry/dependenciesAny/dependenciesMatrixFromFunction.generated.js +26 -0
  25. package/lib/cjs/entry/dependenciesAny/dependenciesMatrixFromRows.generated.js +29 -0
  26. package/lib/cjs/entry/dependenciesAny.generated.js +24 -0
  27. package/lib/cjs/entry/impureFunctionsAny.generated.js +22 -17
  28. package/lib/cjs/entry/impureFunctionsNumber.generated.js +11 -9
  29. package/lib/cjs/entry/pureFunctionsAny.generated.js +78 -41
  30. package/lib/cjs/expression/Parser.js +22 -15
  31. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +9 -0
  32. package/lib/cjs/expression/embeddedDocs/function/matrix/column.js +1 -1
  33. package/lib/cjs/expression/embeddedDocs/function/matrix/matrixFromColumns.js +15 -0
  34. package/lib/cjs/expression/embeddedDocs/function/matrix/matrixFromFunction.js +15 -0
  35. package/lib/cjs/expression/embeddedDocs/function/matrix/matrixFromRows.js +15 -0
  36. package/lib/cjs/expression/embeddedDocs/function/matrix/row.js +1 -1
  37. package/lib/cjs/expression/function/evaluate.js +6 -4
  38. package/lib/cjs/expression/keywords.js +1 -3
  39. package/lib/cjs/expression/node/AccessorNode.js +1 -0
  40. package/lib/cjs/expression/node/AssignmentNode.js +6 -3
  41. package/lib/cjs/expression/node/FunctionAssignmentNode.js +2 -4
  42. package/lib/cjs/expression/node/FunctionNode.js +76 -46
  43. package/lib/cjs/expression/node/IndexNode.js +5 -13
  44. package/lib/cjs/expression/node/Node.js +15 -9
  45. package/lib/cjs/expression/node/ObjectNode.js +5 -3
  46. package/lib/cjs/expression/node/SymbolNode.js +2 -2
  47. package/lib/cjs/expression/node/utils/access.js +5 -3
  48. package/lib/cjs/expression/node/utils/assign.js +5 -3
  49. package/lib/cjs/expression/parse.js +10 -14
  50. package/lib/cjs/expression/transform/utils/compileInlineExpression.js +5 -3
  51. package/lib/cjs/factoriesAny.js +24 -0
  52. package/lib/cjs/function/algebra/decomposition/qr.js +5 -3
  53. package/lib/cjs/function/algebra/simplify/resolve.js +7 -1
  54. package/lib/cjs/function/algebra/simplify.js +20 -14
  55. package/lib/cjs/function/algebra/solver/lsolveAll.js +6 -16
  56. package/lib/cjs/function/algebra/solver/usolveAll.js +6 -16
  57. package/lib/cjs/function/arithmetic/ceil.js +6 -16
  58. package/lib/cjs/function/arithmetic/floor.js +6 -16
  59. package/lib/cjs/function/arithmetic/norm.js +2 -2
  60. package/lib/cjs/function/arithmetic/pow.js +9 -7
  61. package/lib/cjs/function/arithmetic/round.js +7 -5
  62. package/lib/cjs/function/complex/im.js +3 -0
  63. package/lib/cjs/function/complex/re.js +3 -0
  64. package/lib/cjs/function/matrix/eigs/complexEigs.js +631 -0
  65. package/lib/cjs/function/matrix/eigs/realSymetric.js +341 -0
  66. package/lib/cjs/function/matrix/eigs.js +188 -334
  67. package/lib/cjs/function/matrix/flatten.js +1 -0
  68. package/lib/cjs/function/matrix/matrixFromColumns.js +118 -0
  69. package/lib/cjs/function/matrix/matrixFromFunction.js +85 -0
  70. package/lib/cjs/function/matrix/matrixFromRows.js +108 -0
  71. package/lib/cjs/function/probability/pickRandom.js +1 -1
  72. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  73. package/lib/cjs/function/relational/compareNatural.js +2 -2
  74. package/lib/cjs/header.js +2 -2
  75. package/lib/cjs/plain/bignumber/index.js +2 -2
  76. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  77. package/lib/cjs/type/complex/Complex.js +5 -5
  78. package/lib/cjs/type/fraction/Fraction.js +2 -2
  79. package/lib/cjs/type/matrix/DenseMatrix.js +138 -0
  80. package/lib/cjs/type/matrix/Matrix.js +10 -0
  81. package/lib/cjs/type/matrix/SparseMatrix.js +77 -3
  82. package/lib/cjs/type/matrix/function/matrix.js +2 -1
  83. package/lib/cjs/type/unit/Unit.js +15 -13
  84. package/lib/cjs/utils/array.js +1 -1
  85. package/lib/cjs/utils/customs.js +18 -4
  86. package/lib/cjs/utils/emitter.js +2 -2
  87. package/lib/cjs/utils/function.js +6 -2
  88. package/lib/cjs/utils/is.js +7 -5
  89. package/lib/cjs/utils/latex.js +2 -2
  90. package/lib/cjs/utils/map.js +197 -0
  91. package/lib/cjs/utils/object.js +6 -5
  92. package/lib/cjs/utils/scope.js +33 -0
  93. package/lib/cjs/utils/snapshot.js +17 -16
  94. package/lib/cjs/utils/string.js +6 -4
  95. package/lib/cjs/version.js +1 -1
  96. package/lib/esm/constants.js +15 -15
  97. package/lib/esm/core/create.js +1 -2
  98. package/lib/esm/core/function/typed.js +5 -1
  99. package/lib/esm/entry/configReadonly.js +1 -2
  100. package/lib/esm/entry/dependenciesAny/dependenciesEigs.generated.js +34 -0
  101. package/lib/esm/entry/dependenciesAny/dependenciesMatrixFromColumns.generated.js +16 -0
  102. package/lib/esm/entry/dependenciesAny/dependenciesMatrixFromFunction.generated.js +14 -0
  103. package/lib/esm/entry/dependenciesAny/dependenciesMatrixFromRows.generated.js +16 -0
  104. package/lib/esm/entry/dependenciesAny.generated.js +3 -0
  105. package/lib/esm/entry/impureFunctionsAny.generated.js +13 -10
  106. package/lib/esm/entry/impureFunctionsNumber.generated.js +1 -1
  107. package/lib/esm/entry/pureFunctionsAny.generated.js +66 -32
  108. package/lib/esm/expression/Help.js +1 -1
  109. package/lib/esm/expression/Parser.js +23 -15
  110. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +6 -0
  111. package/lib/esm/expression/embeddedDocs/function/matrix/column.js +1 -1
  112. package/lib/esm/expression/embeddedDocs/function/matrix/matrixFromColumns.js +8 -0
  113. package/lib/esm/expression/embeddedDocs/function/matrix/matrixFromFunction.js +8 -0
  114. package/lib/esm/expression/embeddedDocs/function/matrix/matrixFromRows.js +8 -0
  115. package/lib/esm/expression/embeddedDocs/function/matrix/row.js +1 -1
  116. package/lib/esm/expression/function/compile.js +1 -1
  117. package/lib/esm/expression/function/evaluate.js +6 -5
  118. package/lib/esm/expression/function/help.js +1 -1
  119. package/lib/esm/expression/function/parser.js +1 -1
  120. package/lib/esm/expression/keywords.js +1 -3
  121. package/lib/esm/expression/node/AccessorNode.js +2 -1
  122. package/lib/esm/expression/node/ArrayNode.js +1 -1
  123. package/lib/esm/expression/node/AssignmentNode.js +7 -4
  124. package/lib/esm/expression/node/BlockNode.js +1 -1
  125. package/lib/esm/expression/node/ConditionalNode.js +1 -1
  126. package/lib/esm/expression/node/ConstantNode.js +1 -1
  127. package/lib/esm/expression/node/FunctionAssignmentNode.js +3 -4
  128. package/lib/esm/expression/node/FunctionNode.js +57 -39
  129. package/lib/esm/expression/node/IndexNode.js +1 -1
  130. package/lib/esm/expression/node/Node.js +7 -8
  131. package/lib/esm/expression/node/ObjectNode.js +1 -1
  132. package/lib/esm/expression/node/OperatorNode.js +1 -1
  133. package/lib/esm/expression/node/ParenthesisNode.js +1 -1
  134. package/lib/esm/expression/node/RangeNode.js +1 -1
  135. package/lib/esm/expression/node/RelationalNode.js +1 -1
  136. package/lib/esm/expression/node/SymbolNode.js +3 -3
  137. package/lib/esm/expression/parse.js +2 -3
  138. package/lib/esm/expression/transform/apply.transform.js +1 -1
  139. package/lib/esm/expression/transform/column.transform.js +1 -1
  140. package/lib/esm/expression/transform/concat.transform.js +1 -1
  141. package/lib/esm/expression/transform/diff.transform.js +1 -1
  142. package/lib/esm/expression/transform/filter.transform.js +1 -1
  143. package/lib/esm/expression/transform/forEach.transform.js +1 -1
  144. package/lib/esm/expression/transform/index.transform.js +1 -1
  145. package/lib/esm/expression/transform/map.transform.js +1 -1
  146. package/lib/esm/expression/transform/max.transform.js +1 -1
  147. package/lib/esm/expression/transform/mean.transform.js +1 -1
  148. package/lib/esm/expression/transform/min.transform.js +1 -1
  149. package/lib/esm/expression/transform/range.transform.js +1 -1
  150. package/lib/esm/expression/transform/row.transform.js +1 -1
  151. package/lib/esm/expression/transform/std.transform.js +1 -1
  152. package/lib/esm/expression/transform/subset.transform.js +1 -1
  153. package/lib/esm/expression/transform/sum.transform.js +1 -1
  154. package/lib/esm/expression/transform/utils/compileInlineExpression.js +4 -3
  155. package/lib/esm/expression/transform/variance.transform.js +1 -1
  156. package/lib/esm/factoriesAny.js +3 -0
  157. package/lib/esm/factoriesNumber.js +1 -1
  158. package/lib/esm/function/algebra/decomposition/lup.js +1 -1
  159. package/lib/esm/function/algebra/decomposition/qr.js +2 -3
  160. package/lib/esm/function/algebra/decomposition/slu.js +1 -1
  161. package/lib/esm/function/algebra/derivative.js +1 -1
  162. package/lib/esm/function/algebra/rationalize.js +1 -1
  163. package/lib/esm/function/algebra/simplify/resolve.js +7 -2
  164. package/lib/esm/function/algebra/simplify/simplifyConstant.js +1 -1
  165. package/lib/esm/function/algebra/simplify/simplifyCore.js +1 -1
  166. package/lib/esm/function/algebra/simplify/util.js +1 -1
  167. package/lib/esm/function/algebra/simplify.js +16 -12
  168. package/lib/esm/function/algebra/solver/lsolve.js +1 -1
  169. package/lib/esm/function/algebra/solver/lsolveAll.js +1 -1
  170. package/lib/esm/function/algebra/solver/lusolve.js +1 -1
  171. package/lib/esm/function/algebra/solver/usolve.js +1 -1
  172. package/lib/esm/function/algebra/solver/usolveAll.js +1 -1
  173. package/lib/esm/function/algebra/sparse/csAmd.js +1 -1
  174. package/lib/esm/function/algebra/sparse/csChol.js +1 -1
  175. package/lib/esm/function/algebra/sparse/csCounts.js +1 -1
  176. package/lib/esm/function/algebra/sparse/csLu.js +1 -1
  177. package/lib/esm/function/algebra/sparse/csSpsolve.js +1 -1
  178. package/lib/esm/function/algebra/sparse/csSqr.js +1 -1
  179. package/lib/esm/function/algebra/sparse/csSymperm.js +1 -1
  180. package/lib/esm/function/arithmetic/abs.js +1 -1
  181. package/lib/esm/function/arithmetic/add.js +1 -1
  182. package/lib/esm/function/arithmetic/addScalar.js +1 -1
  183. package/lib/esm/function/arithmetic/cbrt.js +1 -1
  184. package/lib/esm/function/arithmetic/ceil.js +1 -1
  185. package/lib/esm/function/arithmetic/cube.js +1 -1
  186. package/lib/esm/function/arithmetic/divide.js +1 -1
  187. package/lib/esm/function/arithmetic/divideScalar.js +1 -1
  188. package/lib/esm/function/arithmetic/dotDivide.js +1 -1
  189. package/lib/esm/function/arithmetic/dotMultiply.js +1 -1
  190. package/lib/esm/function/arithmetic/dotPow.js +1 -1
  191. package/lib/esm/function/arithmetic/exp.js +1 -1
  192. package/lib/esm/function/arithmetic/expm1.js +1 -1
  193. package/lib/esm/function/arithmetic/fix.js +1 -1
  194. package/lib/esm/function/arithmetic/floor.js +1 -1
  195. package/lib/esm/function/arithmetic/gcd.js +1 -1
  196. package/lib/esm/function/arithmetic/hypot.js +1 -1
  197. package/lib/esm/function/arithmetic/lcm.js +1 -1
  198. package/lib/esm/function/arithmetic/log.js +1 -1
  199. package/lib/esm/function/arithmetic/log10.js +1 -1
  200. package/lib/esm/function/arithmetic/log1p.js +1 -1
  201. package/lib/esm/function/arithmetic/log2.js +1 -1
  202. package/lib/esm/function/arithmetic/mod.js +1 -1
  203. package/lib/esm/function/arithmetic/multiply.js +1 -1
  204. package/lib/esm/function/arithmetic/multiplyScalar.js +1 -1
  205. package/lib/esm/function/arithmetic/norm.js +3 -3
  206. package/lib/esm/function/arithmetic/nthRoot.js +2 -2
  207. package/lib/esm/function/arithmetic/nthRoots.js +1 -1
  208. package/lib/esm/function/arithmetic/pow.js +10 -8
  209. package/lib/esm/function/arithmetic/round.js +6 -6
  210. package/lib/esm/function/arithmetic/sign.js +1 -1
  211. package/lib/esm/function/arithmetic/sqrt.js +1 -1
  212. package/lib/esm/function/arithmetic/square.js +1 -1
  213. package/lib/esm/function/arithmetic/subtract.js +1 -1
  214. package/lib/esm/function/arithmetic/unaryMinus.js +1 -1
  215. package/lib/esm/function/arithmetic/unaryPlus.js +1 -1
  216. package/lib/esm/function/arithmetic/xgcd.js +1 -1
  217. package/lib/esm/function/bitwise/bitAnd.js +1 -1
  218. package/lib/esm/function/bitwise/bitNot.js +1 -1
  219. package/lib/esm/function/bitwise/bitOr.js +1 -1
  220. package/lib/esm/function/bitwise/bitXor.js +1 -1
  221. package/lib/esm/function/bitwise/leftShift.js +1 -1
  222. package/lib/esm/function/bitwise/rightArithShift.js +1 -1
  223. package/lib/esm/function/bitwise/rightLogShift.js +1 -1
  224. package/lib/esm/function/combinatorics/bellNumbers.js +1 -1
  225. package/lib/esm/function/combinatorics/catalan.js +1 -1
  226. package/lib/esm/function/combinatorics/composition.js +1 -1
  227. package/lib/esm/function/combinatorics/stirlingS2.js +1 -1
  228. package/lib/esm/function/complex/arg.js +1 -1
  229. package/lib/esm/function/complex/conj.js +1 -1
  230. package/lib/esm/function/complex/im.js +4 -1
  231. package/lib/esm/function/complex/re.js +4 -1
  232. package/lib/esm/function/geometry/distance.js +1 -1
  233. package/lib/esm/function/geometry/intersect.js +1 -1
  234. package/lib/esm/function/logical/and.js +1 -1
  235. package/lib/esm/function/logical/not.js +1 -1
  236. package/lib/esm/function/logical/or.js +1 -1
  237. package/lib/esm/function/logical/xor.js +1 -1
  238. package/lib/esm/function/matrix/apply.js +1 -1
  239. package/lib/esm/function/matrix/column.js +1 -1
  240. package/lib/esm/function/matrix/concat.js +1 -1
  241. package/lib/esm/function/matrix/count.js +1 -1
  242. package/lib/esm/function/matrix/cross.js +1 -1
  243. package/lib/esm/function/matrix/ctranspose.js +1 -1
  244. package/lib/esm/function/matrix/det.js +1 -1
  245. package/lib/esm/function/matrix/diag.js +1 -1
  246. package/lib/esm/function/matrix/diff.js +1 -1
  247. package/lib/esm/function/matrix/dot.js +1 -1
  248. package/lib/esm/function/matrix/eigs/complexEigs.js +586 -0
  249. package/lib/esm/function/matrix/eigs/realSymetric.js +335 -0
  250. package/lib/esm/function/matrix/eigs.js +187 -335
  251. package/lib/esm/function/matrix/expm.js +1 -1
  252. package/lib/esm/function/matrix/filter.js +1 -1
  253. package/lib/esm/function/matrix/flatten.js +2 -1
  254. package/lib/esm/function/matrix/forEach.js +1 -1
  255. package/lib/esm/function/matrix/getMatrixDataType.js +1 -1
  256. package/lib/esm/function/matrix/identity.js +1 -1
  257. package/lib/esm/function/matrix/inv.js +1 -1
  258. package/lib/esm/function/matrix/kron.js +1 -1
  259. package/lib/esm/function/matrix/map.js +1 -1
  260. package/lib/esm/function/matrix/matrixFromColumns.js +93 -0
  261. package/lib/esm/function/matrix/matrixFromFunction.js +78 -0
  262. package/lib/esm/function/matrix/matrixFromRows.js +83 -0
  263. package/lib/esm/function/matrix/ones.js +1 -1
  264. package/lib/esm/function/matrix/partitionSelect.js +1 -1
  265. package/lib/esm/function/matrix/range.js +1 -1
  266. package/lib/esm/function/matrix/reshape.js +1 -1
  267. package/lib/esm/function/matrix/resize.js +1 -1
  268. package/lib/esm/function/matrix/rotate.js +1 -1
  269. package/lib/esm/function/matrix/rotationMatrix.js +1 -1
  270. package/lib/esm/function/matrix/row.js +1 -1
  271. package/lib/esm/function/matrix/size.js +1 -1
  272. package/lib/esm/function/matrix/sort.js +1 -1
  273. package/lib/esm/function/matrix/sqrtm.js +1 -1
  274. package/lib/esm/function/matrix/squeeze.js +1 -1
  275. package/lib/esm/function/matrix/subset.js +1 -1
  276. package/lib/esm/function/matrix/trace.js +1 -1
  277. package/lib/esm/function/matrix/transpose.js +1 -1
  278. package/lib/esm/function/matrix/zeros.js +1 -1
  279. package/lib/esm/function/probability/combinations.js +1 -1
  280. package/lib/esm/function/probability/combinationsWithRep.js +1 -1
  281. package/lib/esm/function/probability/factorial.js +1 -1
  282. package/lib/esm/function/probability/gamma.js +1 -1
  283. package/lib/esm/function/probability/kldivergence.js +1 -1
  284. package/lib/esm/function/probability/multinomial.js +1 -1
  285. package/lib/esm/function/probability/permutations.js +1 -1
  286. package/lib/esm/function/probability/pickRandom.js +2 -2
  287. package/lib/esm/function/probability/random.js +2 -2
  288. package/lib/esm/function/probability/randomInt.js +1 -1
  289. package/lib/esm/function/relational/compare.js +2 -2
  290. package/lib/esm/function/relational/compareNatural.js +1 -1
  291. package/lib/esm/function/relational/compareText.js +2 -2
  292. package/lib/esm/function/relational/deepEqual.js +1 -1
  293. package/lib/esm/function/relational/equal.js +2 -2
  294. package/lib/esm/function/relational/equalScalar.js +2 -2
  295. package/lib/esm/function/relational/equalText.js +1 -1
  296. package/lib/esm/function/relational/larger.js +2 -2
  297. package/lib/esm/function/relational/largerEq.js +2 -2
  298. package/lib/esm/function/relational/smaller.js +2 -2
  299. package/lib/esm/function/relational/smallerEq.js +2 -2
  300. package/lib/esm/function/relational/unequal.js +2 -2
  301. package/lib/esm/function/set/setCartesian.js +1 -1
  302. package/lib/esm/function/set/setDifference.js +1 -1
  303. package/lib/esm/function/set/setDistinct.js +1 -1
  304. package/lib/esm/function/set/setIntersect.js +1 -1
  305. package/lib/esm/function/set/setIsSubset.js +1 -1
  306. package/lib/esm/function/set/setMultiplicity.js +1 -1
  307. package/lib/esm/function/set/setPowerset.js +1 -1
  308. package/lib/esm/function/set/setSize.js +1 -1
  309. package/lib/esm/function/set/setSymDifference.js +1 -1
  310. package/lib/esm/function/set/setUnion.js +1 -1
  311. package/lib/esm/function/special/erf.js +1 -1
  312. package/lib/esm/function/statistics/mad.js +1 -1
  313. package/lib/esm/function/statistics/max.js +1 -1
  314. package/lib/esm/function/statistics/mean.js +1 -1
  315. package/lib/esm/function/statistics/median.js +1 -1
  316. package/lib/esm/function/statistics/min.js +1 -1
  317. package/lib/esm/function/statistics/mode.js +1 -1
  318. package/lib/esm/function/statistics/prod.js +1 -1
  319. package/lib/esm/function/statistics/quantileSeq.js +1 -1
  320. package/lib/esm/function/statistics/std.js +1 -1
  321. package/lib/esm/function/statistics/sum.js +1 -1
  322. package/lib/esm/function/statistics/variance.js +1 -1
  323. package/lib/esm/function/string/bin.js +1 -1
  324. package/lib/esm/function/string/format.js +1 -1
  325. package/lib/esm/function/string/hex.js +1 -1
  326. package/lib/esm/function/string/oct.js +1 -1
  327. package/lib/esm/function/string/print.js +1 -1
  328. package/lib/esm/function/trigonometry/acos.js +1 -1
  329. package/lib/esm/function/trigonometry/acosh.js +1 -1
  330. package/lib/esm/function/trigonometry/acot.js +1 -1
  331. package/lib/esm/function/trigonometry/acoth.js +1 -1
  332. package/lib/esm/function/trigonometry/acsc.js +1 -1
  333. package/lib/esm/function/trigonometry/acsch.js +1 -1
  334. package/lib/esm/function/trigonometry/asec.js +1 -1
  335. package/lib/esm/function/trigonometry/asech.js +1 -1
  336. package/lib/esm/function/trigonometry/asin.js +1 -1
  337. package/lib/esm/function/trigonometry/asinh.js +1 -1
  338. package/lib/esm/function/trigonometry/atan.js +1 -1
  339. package/lib/esm/function/trigonometry/atan2.js +1 -1
  340. package/lib/esm/function/trigonometry/atanh.js +1 -1
  341. package/lib/esm/function/trigonometry/cos.js +1 -1
  342. package/lib/esm/function/trigonometry/cosh.js +1 -1
  343. package/lib/esm/function/trigonometry/cot.js +1 -1
  344. package/lib/esm/function/trigonometry/coth.js +1 -1
  345. package/lib/esm/function/trigonometry/csc.js +1 -1
  346. package/lib/esm/function/trigonometry/csch.js +1 -1
  347. package/lib/esm/function/trigonometry/sec.js +1 -1
  348. package/lib/esm/function/trigonometry/sech.js +1 -1
  349. package/lib/esm/function/trigonometry/sin.js +1 -1
  350. package/lib/esm/function/trigonometry/sinh.js +1 -1
  351. package/lib/esm/function/trigonometry/tan.js +1 -1
  352. package/lib/esm/function/trigonometry/tanh.js +1 -1
  353. package/lib/esm/function/unit/to.js +1 -1
  354. package/lib/esm/function/utils/clone.js +1 -1
  355. package/lib/esm/function/utils/hasNumericValue.js +1 -1
  356. package/lib/esm/function/utils/isInteger.js +1 -1
  357. package/lib/esm/function/utils/isNaN.js +1 -1
  358. package/lib/esm/function/utils/isNegative.js +1 -1
  359. package/lib/esm/function/utils/isNumeric.js +1 -1
  360. package/lib/esm/function/utils/isPositive.js +1 -1
  361. package/lib/esm/function/utils/isPrime.js +1 -1
  362. package/lib/esm/function/utils/isZero.js +1 -1
  363. package/lib/esm/function/utils/numeric.js +1 -1
  364. package/lib/esm/function/utils/typeOf.js +1 -1
  365. package/lib/esm/json/reviver.js +1 -1
  366. package/lib/esm/type/bignumber/BigNumber.js +1 -1
  367. package/lib/esm/type/bignumber/function/bignumber.js +1 -1
  368. package/lib/esm/type/boolean.js +1 -1
  369. package/lib/esm/type/chain/Chain.js +1 -1
  370. package/lib/esm/type/chain/function/chain.js +1 -1
  371. package/lib/esm/type/complex/function/complex.js +1 -1
  372. package/lib/esm/type/fraction/function/fraction.js +1 -1
  373. package/lib/esm/type/matrix/DenseMatrix.js +75 -1
  374. package/lib/esm/type/matrix/FibonacciHeap.js +1 -1
  375. package/lib/esm/type/matrix/ImmutableDenseMatrix.js +1 -1
  376. package/lib/esm/type/matrix/Matrix.js +10 -0
  377. package/lib/esm/type/matrix/MatrixIndex.js +1 -1
  378. package/lib/esm/type/matrix/Spa.js +1 -1
  379. package/lib/esm/type/matrix/SparseMatrix.js +37 -3
  380. package/lib/esm/type/matrix/function/index.js +1 -1
  381. package/lib/esm/type/matrix/function/matrix.js +3 -2
  382. package/lib/esm/type/matrix/function/sparse.js +1 -1
  383. package/lib/esm/type/matrix/utils/algorithm01.js +1 -1
  384. package/lib/esm/type/matrix/utils/algorithm02.js +1 -1
  385. package/lib/esm/type/matrix/utils/algorithm03.js +1 -1
  386. package/lib/esm/type/matrix/utils/algorithm04.js +1 -1
  387. package/lib/esm/type/matrix/utils/algorithm05.js +1 -1
  388. package/lib/esm/type/matrix/utils/algorithm06.js +1 -1
  389. package/lib/esm/type/matrix/utils/algorithm07.js +1 -1
  390. package/lib/esm/type/matrix/utils/algorithm08.js +1 -1
  391. package/lib/esm/type/matrix/utils/algorithm09.js +1 -1
  392. package/lib/esm/type/matrix/utils/algorithm10.js +1 -1
  393. package/lib/esm/type/matrix/utils/algorithm11.js +1 -1
  394. package/lib/esm/type/matrix/utils/algorithm12.js +1 -1
  395. package/lib/esm/type/matrix/utils/algorithm13.js +1 -1
  396. package/lib/esm/type/matrix/utils/algorithm14.js +1 -1
  397. package/lib/esm/type/number.js +1 -1
  398. package/lib/esm/type/string.js +1 -1
  399. package/lib/esm/type/unit/Unit.js +4 -5
  400. package/lib/esm/type/unit/function/createUnit.js +1 -1
  401. package/lib/esm/type/unit/function/splitUnit.js +1 -1
  402. package/lib/esm/type/unit/function/unit.js +1 -1
  403. package/lib/esm/type/unit/physicalConstants.js +2 -2
  404. package/lib/esm/utils/array.js +1 -1
  405. package/lib/esm/utils/customs.js +10 -0
  406. package/lib/esm/utils/map.js +135 -0
  407. package/lib/esm/utils/scope.js +26 -0
  408. package/lib/esm/utils/snapshot.js +3 -4
  409. package/lib/esm/version.js +1 -1
  410. package/package.json +18 -9
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.matrix = exports.SparseMatrix = exports.isNegative = exports.SQRT2 = exports.random = exports.combinationsWithRep = exports.sin = exports.csc = exports.cos = exports.asinh = exports.acsch = exports.acosh = exports.bin = exports.mode = exports.getMatrixDataType = exports.conj = exports.sqrt = exports.log2 = exports.exp = exports.addScalar = exports.unaryMinus = exports.fraction = exports.string = exports.typeOf = exports.hasNumericValue = exports.clone = exports.LN2 = exports.randomInt = exports.pickRandom = exports.combinations = exports.tanh = exports.sinh = exports.sech = exports.csch = exports.coth = exports.cosh = exports.atanh = exports.atan = exports.asin = exports.asec = exports.acsc = exports.acot = exports.acos = exports.isPrime = exports.print = exports.oct = exports.format = exports.erf = exports.map = exports.forEach = exports.filter = exports.not = exports.im = exports.arg = exports.bitNot = exports.square = exports.sign = exports.multiplyScalar = exports.log10 = exports.expm1 = exports.cube = exports.apply = exports.unaryPlus = exports.splitUnit = exports.complex = exports["boolean"] = exports.number = exports.equalScalar = exports.isNaN = exports.isPositive = exports.isNumeric = exports.isInteger = exports.typed = exports.phi = exports.DenseMatrix = exports.version = exports.LOG2E = exports._Infinity = exports.e = exports.Fraction = exports.weakMixingAngle = exports.sackurTetrode = exports.fineStructure = exports.efimovFactor = exports.tau = exports.SQRT1_2 = exports.pi = exports._NaN = exports.LOG10E = exports.LN10 = exports.i = exports.replacer = exports.Matrix = exports.BigNumber = exports._true = exports._null = exports._false = exports.Range = exports.Complex = exports.ResultSet = void 0;
7
- exports.Spa = exports.lsolveAll = exports.lsolve = exports.nthRoots = exports.divideScalar = exports.xor = exports.setIsSubset = exports.deepEqual = exports.ctranspose = exports.diff = exports.column = exports.fix = exports.setSymDifference = exports.setCartesian = exports.max = exports.equal = exports.prod = exports.row = exports.range = exports.cross = exports.subtract = exports.ceil = exports.permutations = exports.factorial = exports.sum = exports.index = exports.setPowerset = exports.setDistinct = exports.cot = exports.min = exports.sort = exports.smallerEq = exports.and = exports.numeric = exports.transpose = exports.kron = exports.bitOr = exports.lcm = exports.bignumber = exports.gamma = exports.quantileSeq = exports.trace = exports.setSize = exports.setMultiplicity = exports.setIntersect = exports.setDifference = exports.tan = exports.asech = exports.Index = exports.partitionSelect = exports.largerEq = exports.equalText = exports.compareNatural = exports.rightArithShift = exports.dotPow = exports.pow = exports.to = exports.squeeze = exports.resize = exports.flatten = exports.re = exports.dotMultiply = exports.multiply = exports.floor = exports.abs = exports.isZero = exports.composition = exports.dot = exports.add = exports.sec = exports.atan2 = exports.acoth = exports.sparse = exports.FibonacciHeap = exports.ImmutableDenseMatrix = exports.unequal = exports.larger = exports.smaller = exports.compareText = exports.compare = exports.rightLogShift = exports.leftShift = exports.round = exports.hex = exports.zeros = exports.subset = exports.size = exports.reshape = exports.ones = exports.identity = exports.diag = exports.concat = exports.or = exports.bitXor = exports.bitAnd = exports.xgcd = exports.nthRoot = exports.mod = exports.gcd = exports.cbrt = void 0;
8
- exports.planckConstant = exports.gasConstant = exports.unit = exports.rydberg = exports.magneticFluxQuantum = exports.coulomb = exports.mad = exports.rotate = exports.thomsonCrossSection = exports.planckTime = exports.molarVolume = exports.inverseConductanceQuantum = exports.elementaryCharge = exports.bohrRadius = exports.median = exports.rotationMatrix = exports.wienDisplacement = exports.speedOfLight = exports.quantumOfCirculation = exports.planckMass = exports.nuclearMagneton = exports.molarMassC12 = exports.loschmidt = exports.gravity = exports.fermiCoupling = exports.electricConstant = exports.classicalElectronRadius = exports.avogadro = exports.multinomial = exports.sqrtm = exports.lusolve = exports.norm = exports.usolve = exports.vacuumImpedance = exports.stefanBoltzmann = exports.secondRadiation = exports.reducedPlanckConstant = exports.protonMass = exports.planckTemperature = exports.planckLength = exports.planckCharge = exports.neutronMass = exports.molarPlanckConstant = exports.molarMass = exports.magneticConstant = exports.klitzing = exports.hartreeEnergy = exports.gravitationConstant = exports.firstRadiation = exports.faraday = exports.electronMass = exports.deuteronMass = exports.conductanceQuantum = exports.boltzmann = exports.bohrMagneton = exports.atomicMass = exports.std = exports.intersect = exports.eigs = exports.createUnit = exports.Unit = exports.log1p = exports.bellNumbers = exports.kldivergence = exports.variance = exports.mean = exports.divide = exports.expm = exports.inv = exports.qr = exports.hypot = exports.usolveAll = exports.dotDivide = exports.log = exports.count = exports.catalan = exports.stirlingS2 = exports.distance = exports.det = exports.slu = exports.lup = exports.setUnion = void 0;
7
+ exports.nthRoots = exports.divideScalar = exports.diff = exports.fix = exports.setIsSubset = exports.deepEqual = exports.ctranspose = exports.count = exports.xor = exports.ceil = exports.setSymDifference = exports.setCartesian = exports.max = exports.equal = exports.prod = exports.row = exports.range = exports.cross = exports.subtract = exports.matrixFromRows = exports.permutations = exports.factorial = exports.sum = exports.index = exports.setPowerset = exports.setDistinct = exports.cot = exports.min = exports.sort = exports.smallerEq = exports.and = exports.numeric = exports.transpose = exports.kron = exports.bitOr = exports.lcm = exports.matrixFromColumns = exports.bignumber = exports.gamma = exports.quantileSeq = exports.trace = exports.setSize = exports.setMultiplicity = exports.setIntersect = exports.setDifference = exports.tan = exports.asech = exports.Index = exports.partitionSelect = exports.largerEq = exports.equalText = exports.compareNatural = exports.rightArithShift = exports.dotPow = exports.pow = exports.to = exports.squeeze = exports.resize = exports.flatten = exports.re = exports.dotMultiply = exports.multiply = exports.floor = exports.cbrt = exports.matrixFromFunction = exports.isZero = exports.composition = exports.dot = exports.add = exports.sec = exports.atan2 = exports.acoth = exports.sparse = exports.FibonacciHeap = exports.ImmutableDenseMatrix = exports.unequal = exports.larger = exports.smaller = exports.compareText = exports.compare = exports.rightLogShift = exports.leftShift = exports.round = exports.hex = exports.zeros = exports.subset = exports.size = exports.reshape = exports.ones = exports.identity = exports.diag = exports.concat = exports.or = exports.bitXor = exports.bitAnd = exports.xgcd = exports.nthRoot = exports.mod = exports.gcd = exports.abs = void 0;
8
+ exports.planckConstant = exports.gasConstant = exports.unit = exports.rydberg = exports.magneticFluxQuantum = exports.coulomb = exports.mad = exports.rotate = exports.thomsonCrossSection = exports.planckTime = exports.molarVolume = exports.inverseConductanceQuantum = exports.elementaryCharge = exports.bohrRadius = exports.median = exports.rotationMatrix = exports.wienDisplacement = exports.speedOfLight = exports.quantumOfCirculation = exports.planckMass = exports.nuclearMagneton = exports.molarMassC12 = exports.loschmidt = exports.gravity = exports.fermiCoupling = exports.electricConstant = exports.classicalElectronRadius = exports.avogadro = exports.multinomial = exports.sqrtm = exports.lusolve = exports.norm = exports.usolve = exports.vacuumImpedance = exports.stefanBoltzmann = exports.secondRadiation = exports.reducedPlanckConstant = exports.protonMass = exports.planckTemperature = exports.planckLength = exports.planckCharge = exports.neutronMass = exports.molarPlanckConstant = exports.molarMass = exports.magneticConstant = exports.klitzing = exports.hartreeEnergy = exports.gravitationConstant = exports.firstRadiation = exports.faraday = exports.electronMass = exports.deuteronMass = exports.conductanceQuantum = exports.boltzmann = exports.bohrMagneton = exports.atomicMass = exports.std = exports.intersect = exports.eigs = exports.createUnit = exports.Unit = exports.log1p = exports.bellNumbers = exports.kldivergence = exports.variance = exports.mean = exports.divide = exports.expm = exports.inv = exports.qr = exports.hypot = exports.usolveAll = exports.dotDivide = exports.log = exports.column = exports.catalan = exports.stirlingS2 = exports.distance = exports.det = exports.slu = exports.lup = exports.setUnion = exports.Spa = exports.lsolveAll = exports.lsolve = void 0;
9
9
 
10
10
  var _configReadonly = require("./configReadonly.js");
11
11
 
@@ -475,17 +475,10 @@ var matrix = /* #__PURE__ */(0, _factoriesAny.createMatrix)({
475
475
  typed: typed
476
476
  });
477
477
  exports.matrix = matrix;
478
- var cbrt = /* #__PURE__ */(0, _factoriesAny.createCbrt)({
479
- BigNumber: BigNumber,
480
- Complex: Complex,
481
- Fraction: Fraction,
482
- config: _configReadonly.config,
483
- isNegative: isNegative,
484
- matrix: matrix,
485
- typed: typed,
486
- unaryMinus: unaryMinus
478
+ var abs = /* #__PURE__ */(0, _factoriesAny.createAbs)({
479
+ typed: typed
487
480
  });
488
- exports.cbrt = cbrt;
481
+ exports.abs = abs;
489
482
  var gcd = /* #__PURE__ */(0, _factoriesAny.createGcd)({
490
483
  BigNumber: BigNumber,
491
484
  DenseMatrix: DenseMatrix,
@@ -720,10 +713,23 @@ var isZero = /* #__PURE__ */(0, _factoriesAny.createIsZero)({
720
713
  typed: typed
721
714
  });
722
715
  exports.isZero = isZero;
723
- var abs = /* #__PURE__ */(0, _factoriesAny.createAbs)({
716
+ var matrixFromFunction = /* #__PURE__ */(0, _factoriesAny.createMatrixFromFunction)({
717
+ isZero: isZero,
718
+ matrix: matrix,
724
719
  typed: typed
725
720
  });
726
- exports.abs = abs;
721
+ exports.matrixFromFunction = matrixFromFunction;
722
+ var cbrt = /* #__PURE__ */(0, _factoriesAny.createCbrt)({
723
+ BigNumber: BigNumber,
724
+ Complex: Complex,
725
+ Fraction: Fraction,
726
+ config: _configReadonly.config,
727
+ isNegative: isNegative,
728
+ matrix: matrix,
729
+ typed: typed,
730
+ unaryMinus: unaryMinus
731
+ });
732
+ exports.cbrt = cbrt;
727
733
  var floor = /* #__PURE__ */(0, _factoriesAny.createFloor)({
728
734
  config: _configReadonly.config,
729
735
  equalScalar: equalScalar,
@@ -898,6 +904,13 @@ var bignumber = /* #__PURE__ */(0, _factoriesAny.createBignumber)({
898
904
  typed: typed
899
905
  });
900
906
  exports.bignumber = bignumber;
907
+ var matrixFromColumns = /* #__PURE__ */(0, _factoriesAny.createMatrixFromColumns)({
908
+ flatten: flatten,
909
+ matrix: matrix,
910
+ size: size,
911
+ typed: typed
912
+ });
913
+ exports.matrixFromColumns = matrixFromColumns;
901
914
  var lcm = /* #__PURE__ */(0, _factoriesAny.createLcm)({
902
915
  equalScalar: equalScalar,
903
916
  matrix: matrix,
@@ -1001,14 +1014,13 @@ var permutations = /* #__PURE__ */(0, _factoriesAny.createPermutations)({
1001
1014
  typed: typed
1002
1015
  });
1003
1016
  exports.permutations = permutations;
1004
- var ceil = /* #__PURE__ */(0, _factoriesAny.createCeil)({
1005
- config: _configReadonly.config,
1006
- equalScalar: equalScalar,
1017
+ var matrixFromRows = /* #__PURE__ */(0, _factoriesAny.createMatrixFromRows)({
1018
+ flatten: flatten,
1007
1019
  matrix: matrix,
1008
- round: round,
1020
+ size: size,
1009
1021
  typed: typed
1010
1022
  });
1011
- exports.ceil = ceil;
1023
+ exports.matrixFromRows = matrixFromRows;
1012
1024
  var subtract = /* #__PURE__ */(0, _factoriesAny.createSubtract)({
1013
1025
  DenseMatrix: DenseMatrix,
1014
1026
  addScalar: addScalar,
@@ -1082,28 +1094,26 @@ var setSymDifference = /* #__PURE__ */(0, _factoriesAny.createSetSymDifference)(
1082
1094
  typed: typed
1083
1095
  });
1084
1096
  exports.setSymDifference = setSymDifference;
1085
- var fix = /* #__PURE__ */(0, _factoriesAny.createFix)({
1086
- Complex: Complex,
1087
- ceil: ceil,
1088
- floor: floor,
1097
+ var ceil = /* #__PURE__ */(0, _factoriesAny.createCeil)({
1098
+ config: _configReadonly.config,
1099
+ equalScalar: equalScalar,
1089
1100
  matrix: matrix,
1101
+ round: round,
1090
1102
  typed: typed
1091
1103
  });
1092
- exports.fix = fix;
1093
- var column = /* #__PURE__ */(0, _factoriesAny.createColumn)({
1094
- Index: Index,
1104
+ exports.ceil = ceil;
1105
+ var xor = /* #__PURE__ */(0, _factoriesAny.createXor)({
1106
+ DenseMatrix: DenseMatrix,
1095
1107
  matrix: matrix,
1096
- range: range,
1097
1108
  typed: typed
1098
1109
  });
1099
- exports.column = column;
1100
- var diff = /* #__PURE__ */(0, _factoriesAny.createDiff)({
1101
- matrix: matrix,
1102
- number: number,
1103
- subtract: subtract,
1110
+ exports.xor = xor;
1111
+ var count = /* #__PURE__ */(0, _factoriesAny.createCount)({
1112
+ prod: prod,
1113
+ size: size,
1104
1114
  typed: typed
1105
1115
  });
1106
- exports.diff = diff;
1116
+ exports.count = count;
1107
1117
  var ctranspose = /* #__PURE__ */(0, _factoriesAny.createCtranspose)({
1108
1118
  conj: conj,
1109
1119
  transpose: transpose,
@@ -1123,12 +1133,21 @@ var setIsSubset = /* #__PURE__ */(0, _factoriesAny.createSetIsSubset)({
1123
1133
  typed: typed
1124
1134
  });
1125
1135
  exports.setIsSubset = setIsSubset;
1126
- var xor = /* #__PURE__ */(0, _factoriesAny.createXor)({
1127
- DenseMatrix: DenseMatrix,
1136
+ var fix = /* #__PURE__ */(0, _factoriesAny.createFix)({
1137
+ Complex: Complex,
1138
+ ceil: ceil,
1139
+ floor: floor,
1128
1140
  matrix: matrix,
1129
1141
  typed: typed
1130
1142
  });
1131
- exports.xor = xor;
1143
+ exports.fix = fix;
1144
+ var diff = /* #__PURE__ */(0, _factoriesAny.createDiff)({
1145
+ matrix: matrix,
1146
+ number: number,
1147
+ subtract: subtract,
1148
+ typed: typed
1149
+ });
1150
+ exports.diff = diff;
1132
1151
  var divideScalar = /* #__PURE__ */(0, _factoriesAny.createDivideScalar)({
1133
1152
  numeric: numeric,
1134
1153
  typed: typed
@@ -1250,12 +1269,13 @@ var catalan = /* #__PURE__ */(0, _factoriesAny.createCatalan)({
1250
1269
  typed: typed
1251
1270
  });
1252
1271
  exports.catalan = catalan;
1253
- var count = /* #__PURE__ */(0, _factoriesAny.createCount)({
1254
- prod: prod,
1255
- size: size,
1272
+ var column = /* #__PURE__ */(0, _factoriesAny.createColumn)({
1273
+ Index: Index,
1274
+ matrix: matrix,
1275
+ range: range,
1256
1276
  typed: typed
1257
1277
  });
1258
- exports.count = count;
1278
+ exports.column = column;
1259
1279
  var log = /* #__PURE__ */(0, _factoriesAny.createLog)({
1260
1280
  Complex: Complex,
1261
1281
  config: _configReadonly.config,
@@ -1413,16 +1433,33 @@ var eigs = /* #__PURE__ */(0, _factoriesAny.createEigs)({
1413
1433
  addScalar: addScalar,
1414
1434
  atan: atan,
1415
1435
  bignumber: bignumber,
1436
+ column: column,
1437
+ complex: complex,
1416
1438
  config: _configReadonly.config,
1417
1439
  cos: cos,
1440
+ diag: diag,
1441
+ divideScalar: divideScalar,
1418
1442
  equal: equal,
1443
+ flatten: flatten,
1444
+ im: im,
1419
1445
  inv: inv,
1446
+ larger: larger,
1447
+ log10: log10,
1420
1448
  matrix: matrix,
1449
+ matrixFromColumns: matrixFromColumns,
1421
1450
  multiply: multiply,
1422
1451
  multiplyScalar: multiplyScalar,
1452
+ number: number,
1453
+ qr: qr,
1454
+ re: re,
1455
+ round: round,
1423
1456
  sin: sin,
1457
+ smaller: smaller,
1458
+ sqrt: sqrt,
1424
1459
  subtract: subtract,
1425
- typed: typed
1460
+ transpose: transpose,
1461
+ typed: typed,
1462
+ usolveAll: usolveAll
1426
1463
  });
1427
1464
  exports.eigs = eigs;
1428
1465
  var intersect = /* #__PURE__ */(0, _factoriesAny.createIntersect)({
@@ -7,9 +7,7 @@ exports.createParserClass = void 0;
7
7
 
8
8
  var _factory = require("../utils/factory.js");
9
9
 
10
- var _object = require("../utils/object.js");
11
-
12
- var _customs = require("../utils/customs.js");
10
+ var _map = require("../utils/map.js");
13
11
 
14
12
  var name = 'Parser';
15
13
  var dependencies = ['parse'];
@@ -69,7 +67,10 @@ var createParserClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
69
67
  throw new SyntaxError('Constructor must be called with the new operator');
70
68
  }
71
69
 
72
- this.scope = {};
70
+ Object.defineProperty(this, 'scope', {
71
+ value: (0, _map.createEmptyMap)(),
72
+ writable: false
73
+ });
73
74
  }
74
75
  /**
75
76
  * Attach type information
@@ -99,7 +100,9 @@ var createParserClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
99
100
 
100
101
  Parser.prototype.get = function (name) {
101
102
  // TODO: validate arguments
102
- return name in this.scope ? (0, _customs.getSafeProperty)(this.scope, name) : undefined;
103
+ if (this.scope.has(name)) {
104
+ return this.scope.get(name);
105
+ }
103
106
  };
104
107
  /**
105
108
  * Get a map with all defined variables
@@ -108,7 +111,16 @@ var createParserClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
108
111
 
109
112
 
110
113
  Parser.prototype.getAll = function () {
111
- return (0, _object.extend)({}, this.scope);
114
+ return (0, _map.toObject)(this.scope);
115
+ };
116
+ /**
117
+ * Get a map with all defined variables
118
+ * @return {Map} values
119
+ */
120
+
121
+
122
+ Parser.prototype.getAllAsMap = function () {
123
+ return this.scope;
112
124
  };
113
125
  /**
114
126
  * Set a symbol (a function or variable) by name from the parsers scope.
@@ -118,8 +130,8 @@ var createParserClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
118
130
 
119
131
 
120
132
  Parser.prototype.set = function (name, value) {
121
- // TODO: validate arguments
122
- return (0, _customs.setSafeProperty)(this.scope, name, value);
133
+ this.scope.set(name, value);
134
+ return value;
123
135
  };
124
136
  /**
125
137
  * Remove a variable from the parsers scope
@@ -128,8 +140,7 @@ var createParserClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
128
140
 
129
141
 
130
142
  Parser.prototype.remove = function (name) {
131
- // TODO: validate arguments
132
- delete this.scope[name];
143
+ this.scope["delete"](name);
133
144
  };
134
145
  /**
135
146
  * Clear the scope with variables and functions
@@ -137,11 +148,7 @@ var createParserClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
137
148
 
138
149
 
139
150
  Parser.prototype.clear = function () {
140
- for (var _name in this.scope) {
141
- if ((0, _object.hasOwnProperty)(this.scope, _name)) {
142
- delete this.scope[_name];
143
- }
144
- }
151
+ this.scope.clear();
145
152
  };
146
153
 
147
154
  return Parser;
@@ -413,6 +413,12 @@ var _number = require("./construction/number.js");
413
413
 
414
414
  var _matrix = require("./construction/matrix.js");
415
415
 
416
+ var _matrixFromFunction = require("./function/matrix/matrixFromFunction.js");
417
+
418
+ var _matrixFromRows = require("./function/matrix/matrixFromRows.js");
419
+
420
+ var _matrixFromColumns = require("./function/matrix/matrixFromColumns.js");
421
+
416
422
  var _index = require("./construction/index.js");
417
423
 
418
424
  var _fraction = require("./construction/fraction.js");
@@ -781,6 +787,9 @@ var embeddedDocs = {
781
787
  inv: _inv.invDocs,
782
788
  eigs: _eigs.eigsDocs,
783
789
  kron: _kron.kronDocs,
790
+ matrixFromFunction: _matrixFromFunction.matrixFromFunctionDocs,
791
+ matrixFromRows: _matrixFromRows.matrixFromRowsDocs,
792
+ matrixFromColumns: _matrixFromColumns.matrixFromColumnsDocs,
784
793
  map: _map.mapDocs,
785
794
  ones: _ones.onesDocs,
786
795
  partitionSelect: _partitionSelect.partitionSelectDocs,
@@ -10,6 +10,6 @@ var columnDocs = {
10
10
  syntax: ['column(x, index)'],
11
11
  description: 'Return a column from a matrix or array.',
12
12
  examples: ['A = [[1, 2], [3, 4]]', 'column(A, 1)', 'column(A, 2)'],
13
- seealso: ['row']
13
+ seealso: ['row', 'matrixFromColumns']
14
14
  };
15
15
  exports.columnDocs = columnDocs;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.matrixFromColumnsDocs = void 0;
7
+ var matrixFromColumnsDocs = {
8
+ name: 'matrixFromColumns',
9
+ category: 'Matrix',
10
+ syntax: ['math.matrixFromColumns(...arr)', 'math.matrixFromColumns(row1, row2)', 'math.matrixFromColumns(row1, row2, row3)'],
11
+ description: 'Create a dense matrix from vectors as individual columns.',
12
+ examples: ['matrixFromColumns([1, 2, 3], [[4],[5],[6]])'],
13
+ seealso: ['matrix', 'matrixFromRows', 'matrixFromFunction', 'zeros']
14
+ };
15
+ exports.matrixFromColumnsDocs = matrixFromColumnsDocs;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.matrixFromFunctionDocs = void 0;
7
+ var matrixFromFunctionDocs = {
8
+ name: 'matrixFromFunction',
9
+ category: 'Matrix',
10
+ syntax: ['math.matrixFromFunction(size, fn)', 'math.matrixFromFunction(size, fn, format)', 'math.matrixFromFunction(size, fn, format, datatype)', 'math.matrixFromFunction(size, format, fn)', 'math.matrixFromFunction(size, format, datatype, fn)'],
11
+ description: 'Create a matrix by evaluating a generating function at each index.',
12
+ examples: ['f(I) = I[1] - I[2]', 'matrixFromFunction([3,3], f)', 'g(I) = I[1] - I[2] == 1 ? 4 : 0', 'matrixFromFunction([100, 100], "sparse", g)', 'matrixFromFunction([5], random)'],
13
+ seealso: ['matrix', 'matrixFromRows', 'matrixFromColumns', 'zeros']
14
+ };
15
+ exports.matrixFromFunctionDocs = matrixFromFunctionDocs;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.matrixFromRowsDocs = void 0;
7
+ var matrixFromRowsDocs = {
8
+ name: 'matrixFromRows',
9
+ category: 'Matrix',
10
+ syntax: ['math.matrixFromRows(...arr)', 'math.matrixFromRows(row1, row2)', 'math.matrixFromRows(row1, row2, row3)'],
11
+ description: 'Create a dense matrix from vectors as individual rows.',
12
+ examples: ['matrixFromRows([1, 2, 3], [[4],[5],[6]])'],
13
+ seealso: ['matrix', 'matrixFromColumns', 'matrixFromFunction', 'zeros']
14
+ };
15
+ exports.matrixFromRowsDocs = matrixFromRowsDocs;
@@ -10,6 +10,6 @@ var rowDocs = {
10
10
  syntax: ['row(x, index)'],
11
11
  description: 'Return a row from a matrix or array.',
12
12
  examples: ['A = [[1, 2], [3, 4]]', 'row(A, 1)', 'row(A, 2)'],
13
- seealso: ['column']
13
+ seealso: ['column', 'matrixFromRows']
14
14
  };
15
15
  exports.rowDocs = rowDocs;
@@ -9,6 +9,8 @@ var _collection = require("../../utils/collection.js");
9
9
 
10
10
  var _factory = require("../../utils/factory.js");
11
11
 
12
+ var _map = require("../../utils/map.js");
13
+
12
14
  var name = 'evaluate';
13
15
  var dependencies = ['typed', 'parse'];
14
16
  var createEvaluate = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
@@ -49,19 +51,19 @@ var createEvaluate = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
49
51
  */
50
52
  return typed(name, {
51
53
  string: function string(expr) {
52
- var scope = {};
54
+ var scope = (0, _map.createEmptyMap)();
53
55
  return parse(expr).compile().evaluate(scope);
54
56
  },
55
- 'string, Object': function stringObject(expr, scope) {
57
+ 'string, Map | Object': function stringMapObject(expr, scope) {
56
58
  return parse(expr).compile().evaluate(scope);
57
59
  },
58
60
  'Array | Matrix': function ArrayMatrix(expr) {
59
- var scope = {};
61
+ var scope = (0, _map.createEmptyMap)();
60
62
  return (0, _collection.deepMap)(expr, function (entry) {
61
63
  return parse(entry).compile().evaluate(scope);
62
64
  });
63
65
  },
64
- 'Array | Matrix, Object': function ArrayMatrixObject(expr, scope) {
66
+ 'Array | Matrix, Map | Object': function ArrayMatrixMapObject(expr, scope) {
65
67
  return (0, _collection.deepMap)(expr, function (entry) {
66
68
  return parse(entry).compile().evaluate(scope);
67
69
  });
@@ -5,7 +5,5 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.keywords = void 0;
7
7
  // Reserved keywords not allowed to use in the parser
8
- var keywords = {
9
- end: true
10
- };
8
+ var keywords = new Set(['end']);
11
9
  exports.keywords = keywords;
@@ -86,6 +86,7 @@ var createAccessorNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
86
86
  if (this.index.isObjectProperty()) {
87
87
  var prop = this.index.getObjectProperty();
88
88
  return function evalAccessorNode(scope, args, context) {
89
+ // get a property from an object evaluated using the scope.
89
90
  return (0, _customs.getSafeProperty)(evalObject(scope, args, context), prop);
90
91
  };
91
92
  } else {
@@ -132,7 +132,9 @@ var createAssignmentNode = /* #__PURE__ */(0, _factory.factory)(name, dependenci
132
132
  }
133
133
 
134
134
  return function evalAssignmentNode(scope, args, context) {
135
- return (0, _customs.setSafeProperty)(scope, name, evalValue(scope, args, context));
135
+ var value = evalValue(scope, args, context);
136
+ scope.set(name, value);
137
+ return value;
136
138
  };
137
139
  } else if (this.index.isObjectProperty()) {
138
140
  // apply an object property for example `a.b=2`
@@ -140,7 +142,8 @@ var createAssignmentNode = /* #__PURE__ */(0, _factory.factory)(name, dependenci
140
142
  return function evalAssignmentNode(scope, args, context) {
141
143
  var object = evalObject(scope, args, context);
142
144
  var value = evalValue(scope, args, context);
143
- return (0, _customs.setSafeProperty)(object, prop, value);
145
+ (0, _customs.setSafeProperty)(object, prop, value);
146
+ return value;
144
147
  };
145
148
  } else if ((0, _is.isSymbolNode)(this.object)) {
146
149
  // update a matrix subset, for example `a[2]=3`
@@ -149,7 +152,7 @@ var createAssignmentNode = /* #__PURE__ */(0, _factory.factory)(name, dependenci
149
152
  var value = evalValue(scope, args, context);
150
153
  var index = evalIndex(scope, args, childObject); // Important: we pass childObject instead of context
151
154
 
152
- (0, _customs.setSafeProperty)(scope, name, assign(childObject, index, value));
155
+ scope.set(name, assign(childObject, index, value));
153
156
  return value;
154
157
  };
155
158
  } else {
@@ -17,8 +17,6 @@ var _latex = require("../../utils/latex.js");
17
17
 
18
18
  var _operators = require("../operators.js");
19
19
 
20
- var _customs = require("../../utils/customs.js");
21
-
22
20
  var _factory = require("../../utils/factory.js");
23
21
 
24
22
  var name = 'FunctionAssignmentNode';
@@ -48,7 +46,7 @@ var createFunctionAssignmentNode = /* #__PURE__ */(0, _factory.factory)(name, de
48
46
  if (typeof name !== 'string') throw new TypeError('String expected for parameter "name"');
49
47
  if (!Array.isArray(params)) throw new TypeError('Array containing strings or objects expected for parameter "params"');
50
48
  if (!(0, _is.isNode)(expr)) throw new TypeError('Node expected for parameter "expr"');
51
- if (name in _keywords.keywords) throw new Error('Illegal function name, "' + name + '" is a reserved keyword');
49
+ if (_keywords.keywords.has(name)) throw new Error('Illegal function name, "' + name + '" is a reserved keyword');
52
50
  this.name = name;
53
51
  this.params = params.map(function (param) {
54
52
  return param && param.name || param;
@@ -103,7 +101,7 @@ var createFunctionAssignmentNode = /* #__PURE__ */(0, _factory.factory)(name, de
103
101
 
104
102
  var fn = typed(name, signatures);
105
103
  fn.syntax = syntax;
106
- (0, _customs.setSafeProperty)(scope, name, fn);
104
+ scope.set(name, fn);
107
105
  return fn;
108
106
  };
109
107
  };