mathjs 9.3.2 → 9.4.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 (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,7 +4,7 @@
4
4
  */
5
5
  import { config } from './configReadonly.js';
6
6
  import { createResultSet, createComplexClass, createRangeClass, createFalse, createNull, createTrue, createBigNumberClass, createMatrixClass, createReplacer, createI, createLN10, createLOG10E, createNaN, createPi, createSQRT1_2 // eslint-disable-line camelcase
7
- , createTau, createEfimovFactor, createFineStructure, createSackurTetrode, createWeakMixingAngle, createFractionClass, createE, createInfinity, createLOG2E, createVersion, createDenseMatrixClass, createPhi, createTyped, createIsInteger, createIsNumeric, createIsPositive, createIsNaN, createEqualScalar, createNumber, createBoolean, createComplex, createSplitUnit, createUnaryPlus, createApply, createCube, createExpm1, createLog10, createMultiplyScalar, createSign, createSquare, createBitNot, createArg, createIm, createNot, createFilter, createForEach, createMap, createErf, createFormat, createOct, createPrint, createIsPrime, createAcos, createAcot, createAcsc, createAsec, createAsin, createAtan, createAtanh, createCosh, createCoth, createCsch, createSech, createSinh, createTanh, createCombinations, createPickRandom, createRandomInt, createLN2, createClone, createHasNumericValue, createTypeOf, createString, createFraction, createUnaryMinus, createAddScalar, createExp, createLog2, createSqrt, createConj, createGetMatrixDataType, createMode, createBin, createAcosh, createAcsch, createAsinh, createCos, createCsc, createSin, createCombinationsWithRep, createRandom, createSQRT2, createIsNegative, createSparseMatrixClass, createMatrix, createCbrt, createGcd, createMod, createNthRoot, createXgcd, createBitAnd, createBitXor, createOr, createConcat, createDiag, createIdentity, createOnes, createReshape, createSize, createSubset, createZeros, createHex, createRound, createLeftShift, createRightLogShift, createCompare, createCompareText, createSmaller, createLarger, createUnequal, createImmutableDenseMatrixClass, createFibonacciHeapClass, createSparse, createAcoth, createAtan2, createSec, createAdd, createDot, createComposition, createIsZero, createAbs, createFloor, createMultiply, createDotMultiply, createRe, createFlatten, createResize, createSqueeze, createTo, createPow, createDotPow, createRightArithShift, createCompareNatural, createEqualText, createLargerEq, createPartitionSelect, createIndexClass, createAsech, createTan, createSetDifference, createSetIntersect, createSetMultiplicity, createSetSize, createTrace, createQuantileSeq, createGamma, createBignumber, createLcm, createBitOr, createKron, createTranspose, createNumeric, createAnd, createSmallerEq, createSort, createMin, createCot, createSetDistinct, createSetPowerset, createIndex, createSum, createFactorial, createPermutations, createCeil, createSubtract, createCross, createRange, createRow, createProd, createEqual, createMax, createSetCartesian, createSetSymDifference, createFix, createColumn, createDiff, createCtranspose, createDeepEqual, createSetIsSubset, createXor, createDivideScalar, createNthRoots, createLsolve, createLsolveAll, createSpaClass, createSetUnion, createLup, createSlu, createDet, createDistance, createStirlingS2, createCatalan, createCount, createLog, createDotDivide, createUsolveAll, createHypot, createQr, createInv, createExpm, createDivide, createMean, createVariance, createKldivergence, createBellNumbers, createLog1p, createUnitClass, createCreateUnit, createEigs, createIntersect, createStd, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createDeuteronMass, createElectronMass, createFaraday, createFirstRadiation, createGravitationConstant, createHartreeEnergy, createKlitzing, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createReducedPlanckConstant, createSecondRadiation, createStefanBoltzmann, createVacuumImpedance, createUsolve, createNorm, createLusolve, createSqrtm, createMultinomial, createAvogadro, createClassicalElectronRadius, createElectricConstant, createFermiCoupling, createGravity, createLoschmidt, createMolarMassC12, createNuclearMagneton, createPlanckMass, createQuantumOfCirculation, createSpeedOfLight, createWienDisplacement, createRotationMatrix, createMedian, createBohrRadius, createElementaryCharge, createInverseConductanceQuantum, createMolarVolume, createPlanckTime, createThomsonCrossSection, createRotate, createMad, createCoulomb, createMagneticFluxQuantum, createRydberg, createUnitFunction, createGasConstant, createPlanckConstant } from '../factoriesAny.js';
7
+ , createTau, createEfimovFactor, createFineStructure, createSackurTetrode, createWeakMixingAngle, createFractionClass, createE, createInfinity, createLOG2E, createVersion, createDenseMatrixClass, createPhi, createTyped, createIsInteger, createIsNumeric, createIsPositive, createIsNaN, createEqualScalar, createNumber, createBoolean, createComplex, createSplitUnit, createUnaryPlus, createApply, createCube, createExpm1, createLog10, createMultiplyScalar, createSign, createSquare, createBitNot, createArg, createIm, createNot, createFilter, createForEach, createMap, createErf, createFormat, createOct, createPrint, createIsPrime, createAcos, createAcot, createAcsc, createAsec, createAsin, createAtan, createAtanh, createCosh, createCoth, createCsch, createSech, createSinh, createTanh, createCombinations, createPickRandom, createRandomInt, createLN2, createClone, createHasNumericValue, createTypeOf, createString, createFraction, createUnaryMinus, createAddScalar, createExp, createLog2, createSqrt, createConj, createGetMatrixDataType, createMode, createBin, createAcosh, createAcsch, createAsinh, createCos, createCsc, createSin, createCombinationsWithRep, createRandom, createSQRT2, createIsNegative, createSparseMatrixClass, createMatrix, createAbs, createGcd, createMod, createNthRoot, createXgcd, createBitAnd, createBitXor, createOr, createConcat, createDiag, createIdentity, createOnes, createReshape, createSize, createSubset, createZeros, createHex, createRound, createLeftShift, createRightLogShift, createCompare, createCompareText, createSmaller, createLarger, createUnequal, createImmutableDenseMatrixClass, createFibonacciHeapClass, createSparse, createAcoth, createAtan2, createSec, createAdd, createDot, createComposition, createIsZero, createMatrixFromFunction, createCbrt, createFloor, createMultiply, createDotMultiply, createRe, createFlatten, createResize, createSqueeze, createTo, createPow, createDotPow, createRightArithShift, createCompareNatural, createEqualText, createLargerEq, createPartitionSelect, createIndexClass, createAsech, createTan, createSetDifference, createSetIntersect, createSetMultiplicity, createSetSize, createTrace, createQuantileSeq, createGamma, createBignumber, createMatrixFromColumns, createLcm, createBitOr, createKron, createTranspose, createNumeric, createAnd, createSmallerEq, createSort, createMin, createCot, createSetDistinct, createSetPowerset, createIndex, createSum, createFactorial, createPermutations, createMatrixFromRows, createSubtract, createCross, createRange, createRow, createProd, createEqual, createMax, createSetCartesian, createSetSymDifference, createCeil, createXor, createCount, createCtranspose, createDeepEqual, createSetIsSubset, createFix, createDiff, createDivideScalar, createNthRoots, createLsolve, createLsolveAll, createSpaClass, createSetUnion, createLup, createSlu, createDet, createDistance, createStirlingS2, createCatalan, createColumn, createLog, createDotDivide, createUsolveAll, createHypot, createQr, createInv, createExpm, createDivide, createMean, createVariance, createKldivergence, createBellNumbers, createLog1p, createUnitClass, createCreateUnit, createEigs, createIntersect, createStd, createAtomicMass, createBohrMagneton, createBoltzmann, createConductanceQuantum, createDeuteronMass, createElectronMass, createFaraday, createFirstRadiation, createGravitationConstant, createHartreeEnergy, createKlitzing, createMagneticConstant, createMolarMass, createMolarPlanckConstant, createNeutronMass, createPlanckCharge, createPlanckLength, createPlanckTemperature, createProtonMass, createReducedPlanckConstant, createSecondRadiation, createStefanBoltzmann, createVacuumImpedance, createUsolve, createNorm, createLusolve, createSqrtm, createMultinomial, createAvogadro, createClassicalElectronRadius, createElectricConstant, createFermiCoupling, createGravity, createLoschmidt, createMolarMassC12, createNuclearMagneton, createPlanckMass, createQuantumOfCirculation, createSpeedOfLight, createWienDisplacement, createRotationMatrix, createMedian, createBohrRadius, createElementaryCharge, createInverseConductanceQuantum, createMolarVolume, createPlanckTime, createThomsonCrossSection, createRotate, createMad, createCoulomb, createMagneticFluxQuantum, createRydberg, createUnitFunction, createGasConstant, createPlanckConstant } from '../factoriesAny.js';
8
8
  export var ResultSet = /* #__PURE__ */createResultSet({});
9
9
  export var Complex = /* #__PURE__ */createComplexClass({});
10
10
  export var Range = /* #__PURE__ */createRangeClass({});
@@ -353,15 +353,8 @@ export var matrix = /* #__PURE__ */createMatrix({
353
353
  SparseMatrix,
354
354
  typed
355
355
  });
356
- export var cbrt = /* #__PURE__ */createCbrt({
357
- BigNumber,
358
- Complex,
359
- Fraction,
360
- config,
361
- isNegative,
362
- matrix,
363
- typed,
364
- unaryMinus
356
+ export var abs = /* #__PURE__ */createAbs({
357
+ typed
365
358
  });
366
359
  export var gcd = /* #__PURE__ */createGcd({
367
360
  BigNumber,
@@ -563,9 +556,21 @@ export var composition = /* #__PURE__ */createComposition({
563
556
  export var isZero = /* #__PURE__ */createIsZero({
564
557
  typed
565
558
  });
566
- export var abs = /* #__PURE__ */createAbs({
559
+ export var matrixFromFunction = /* #__PURE__ */createMatrixFromFunction({
560
+ isZero,
561
+ matrix,
567
562
  typed
568
563
  });
564
+ export var cbrt = /* #__PURE__ */createCbrt({
565
+ BigNumber,
566
+ Complex,
567
+ Fraction,
568
+ config,
569
+ isNegative,
570
+ matrix,
571
+ typed,
572
+ unaryMinus
573
+ });
569
574
  export var floor = /* #__PURE__ */createFloor({
570
575
  config,
571
576
  equalScalar,
@@ -714,6 +719,12 @@ export var bignumber = /* #__PURE__ */createBignumber({
714
719
  BigNumber,
715
720
  typed
716
721
  });
722
+ export var matrixFromColumns = /* #__PURE__ */createMatrixFromColumns({
723
+ flatten,
724
+ matrix,
725
+ size,
726
+ typed
727
+ });
717
728
  export var lcm = /* #__PURE__ */createLcm({
718
729
  equalScalar,
719
730
  matrix,
@@ -801,11 +812,10 @@ export var permutations = /* #__PURE__ */createPermutations({
801
812
  factorial,
802
813
  typed
803
814
  });
804
- export var ceil = /* #__PURE__ */createCeil({
805
- config,
806
- equalScalar,
815
+ export var matrixFromRows = /* #__PURE__ */createMatrixFromRows({
816
+ flatten,
807
817
  matrix,
808
- round,
818
+ size,
809
819
  typed
810
820
  });
811
821
  export var subtract = /* #__PURE__ */createSubtract({
@@ -872,23 +882,21 @@ export var setSymDifference = /* #__PURE__ */createSetSymDifference({
872
882
  subset,
873
883
  typed
874
884
  });
875
- export var fix = /* #__PURE__ */createFix({
876
- Complex,
877
- ceil,
878
- floor,
885
+ export var ceil = /* #__PURE__ */createCeil({
886
+ config,
887
+ equalScalar,
879
888
  matrix,
889
+ round,
880
890
  typed
881
891
  });
882
- export var column = /* #__PURE__ */createColumn({
883
- Index,
892
+ export var xor = /* #__PURE__ */createXor({
893
+ DenseMatrix,
884
894
  matrix,
885
- range,
886
895
  typed
887
896
  });
888
- export var diff = /* #__PURE__ */createDiff({
889
- matrix,
890
- number,
891
- subtract,
897
+ export var count = /* #__PURE__ */createCount({
898
+ prod,
899
+ size,
892
900
  typed
893
901
  });
894
902
  export var ctranspose = /* #__PURE__ */createCtranspose({
@@ -907,11 +915,19 @@ export var setIsSubset = /* #__PURE__ */createSetIsSubset({
907
915
  subset,
908
916
  typed
909
917
  });
910
- export var xor = /* #__PURE__ */createXor({
911
- DenseMatrix,
918
+ export var fix = /* #__PURE__ */createFix({
919
+ Complex,
920
+ ceil,
921
+ floor,
912
922
  matrix,
913
923
  typed
914
924
  });
925
+ export var diff = /* #__PURE__ */createDiff({
926
+ matrix,
927
+ number,
928
+ subtract,
929
+ typed
930
+ });
915
931
  export var divideScalar = /* #__PURE__ */createDivideScalar({
916
932
  numeric,
917
933
  typed
@@ -1021,9 +1037,10 @@ export var catalan = /* #__PURE__ */createCatalan({
1021
1037
  multiplyScalar,
1022
1038
  typed
1023
1039
  });
1024
- export var count = /* #__PURE__ */createCount({
1025
- prod,
1026
- size,
1040
+ export var column = /* #__PURE__ */createColumn({
1041
+ Index,
1042
+ matrix,
1043
+ range,
1027
1044
  typed
1028
1045
  });
1029
1046
  export var log = /* #__PURE__ */createLog({
@@ -1168,16 +1185,33 @@ export var eigs = /* #__PURE__ */createEigs({
1168
1185
  addScalar,
1169
1186
  atan,
1170
1187
  bignumber,
1188
+ column,
1189
+ complex,
1171
1190
  config,
1172
1191
  cos,
1192
+ diag,
1193
+ divideScalar,
1173
1194
  equal,
1195
+ flatten,
1196
+ im,
1174
1197
  inv,
1198
+ larger,
1199
+ log10,
1175
1200
  matrix,
1201
+ matrixFromColumns,
1176
1202
  multiply,
1177
1203
  multiplyScalar,
1204
+ number,
1205
+ qr,
1206
+ re,
1207
+ round,
1178
1208
  sin,
1209
+ smaller,
1210
+ sqrt,
1179
1211
  subtract,
1180
- typed
1212
+ transpose,
1213
+ typed,
1214
+ usolveAll
1181
1215
  });
1182
1216
  export var intersect = /* #__PURE__ */createIntersect({
1183
1217
  abs,
@@ -4,7 +4,7 @@ import { format } from '../utils/string.js';
4
4
  import { factory } from '../utils/factory.js';
5
5
  var name = 'Help';
6
6
  var dependencies = ['parse'];
7
- export var createHelpClass = /* #__PURE__ */factory(name, dependencies, (_ref) => {
7
+ export var createHelpClass = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  var {
9
9
  parse
10
10
  } = _ref;
@@ -1,9 +1,8 @@
1
1
  import { factory } from '../utils/factory.js';
2
- import { extend, hasOwnProperty } from '../utils/object.js';
3
- import { getSafeProperty, setSafeProperty } from '../utils/customs.js';
2
+ import { createEmptyMap, toObject } from '../utils/map.js';
4
3
  var name = 'Parser';
5
4
  var dependencies = ['parse'];
6
- export var createParserClass = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createParserClass = /* #__PURE__ */factory(name, dependencies, _ref => {
7
6
  var {
8
7
  parse
9
8
  } = _ref;
@@ -61,7 +60,10 @@ export var createParserClass = /* #__PURE__ */factory(name, dependencies, (_ref)
61
60
  throw new SyntaxError('Constructor must be called with the new operator');
62
61
  }
63
62
 
64
- this.scope = {};
63
+ Object.defineProperty(this, 'scope', {
64
+ value: createEmptyMap(),
65
+ writable: false
66
+ });
65
67
  }
66
68
  /**
67
69
  * Attach type information
@@ -91,7 +93,9 @@ export var createParserClass = /* #__PURE__ */factory(name, dependencies, (_ref)
91
93
 
92
94
  Parser.prototype.get = function (name) {
93
95
  // TODO: validate arguments
94
- return name in this.scope ? getSafeProperty(this.scope, name) : undefined;
96
+ if (this.scope.has(name)) {
97
+ return this.scope.get(name);
98
+ }
95
99
  };
96
100
  /**
97
101
  * Get a map with all defined variables
@@ -100,7 +104,16 @@ export var createParserClass = /* #__PURE__ */factory(name, dependencies, (_ref)
100
104
 
101
105
 
102
106
  Parser.prototype.getAll = function () {
103
- return extend({}, this.scope);
107
+ return toObject(this.scope);
108
+ };
109
+ /**
110
+ * Get a map with all defined variables
111
+ * @return {Map} values
112
+ */
113
+
114
+
115
+ Parser.prototype.getAllAsMap = function () {
116
+ return this.scope;
104
117
  };
105
118
  /**
106
119
  * Set a symbol (a function or variable) by name from the parsers scope.
@@ -110,8 +123,8 @@ export var createParserClass = /* #__PURE__ */factory(name, dependencies, (_ref)
110
123
 
111
124
 
112
125
  Parser.prototype.set = function (name, value) {
113
- // TODO: validate arguments
114
- return setSafeProperty(this.scope, name, value);
126
+ this.scope.set(name, value);
127
+ return value;
115
128
  };
116
129
  /**
117
130
  * Remove a variable from the parsers scope
@@ -120,8 +133,7 @@ export var createParserClass = /* #__PURE__ */factory(name, dependencies, (_ref)
120
133
 
121
134
 
122
135
  Parser.prototype.remove = function (name) {
123
- // TODO: validate arguments
124
- delete this.scope[name];
136
+ this.scope.delete(name);
125
137
  };
126
138
  /**
127
139
  * Clear the scope with variables and functions
@@ -129,11 +141,7 @@ export var createParserClass = /* #__PURE__ */factory(name, dependencies, (_ref)
129
141
 
130
142
 
131
143
  Parser.prototype.clear = function () {
132
- for (var _name in this.scope) {
133
- if (hasOwnProperty(this.scope, _name)) {
134
- delete this.scope[_name];
135
- }
136
- }
144
+ this.scope.clear();
137
145
  };
138
146
 
139
147
  return Parser;
@@ -202,6 +202,9 @@ import { splitUnitDocs } from './construction/splitUnit.js';
202
202
  import { sparseDocs } from './construction/sparse.js';
203
203
  import { numberDocs } from './construction/number.js';
204
204
  import { matrixDocs } from './construction/matrix.js';
205
+ import { matrixFromFunctionDocs } from './function/matrix/matrixFromFunction.js';
206
+ import { matrixFromRowsDocs } from './function/matrix/matrixFromRows.js';
207
+ import { matrixFromColumnsDocs } from './function/matrix/matrixFromColumns.js';
205
208
  import { indexDocs } from './construction/index.js';
206
209
  import { fractionDocs } from './construction/fraction.js';
207
210
  import { createUnitDocs } from './construction/createUnit.js';
@@ -555,6 +558,9 @@ export var embeddedDocs = {
555
558
  inv: invDocs,
556
559
  eigs: eigsDocs,
557
560
  kron: kronDocs,
561
+ matrixFromFunction: matrixFromFunctionDocs,
562
+ matrixFromRows: matrixFromRowsDocs,
563
+ matrixFromColumns: matrixFromColumnsDocs,
558
564
  map: mapDocs,
559
565
  ones: onesDocs,
560
566
  partitionSelect: partitionSelectDocs,
@@ -4,5 +4,5 @@ export var columnDocs = {
4
4
  syntax: ['column(x, index)'],
5
5
  description: 'Return a column from a matrix or array.',
6
6
  examples: ['A = [[1, 2], [3, 4]]', 'column(A, 1)', 'column(A, 2)'],
7
- seealso: ['row']
7
+ seealso: ['row', 'matrixFromColumns']
8
8
  };
@@ -0,0 +1,8 @@
1
+ export var matrixFromColumnsDocs = {
2
+ name: 'matrixFromColumns',
3
+ category: 'Matrix',
4
+ syntax: ['math.matrixFromColumns(...arr)', 'math.matrixFromColumns(row1, row2)', 'math.matrixFromColumns(row1, row2, row3)'],
5
+ description: 'Create a dense matrix from vectors as individual columns.',
6
+ examples: ['matrixFromColumns([1, 2, 3], [[4],[5],[6]])'],
7
+ seealso: ['matrix', 'matrixFromRows', 'matrixFromFunction', 'zeros']
8
+ };
@@ -0,0 +1,8 @@
1
+ export var matrixFromFunctionDocs = {
2
+ name: 'matrixFromFunction',
3
+ category: 'Matrix',
4
+ 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)'],
5
+ description: 'Create a matrix by evaluating a generating function at each index.',
6
+ 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)'],
7
+ seealso: ['matrix', 'matrixFromRows', 'matrixFromColumns', 'zeros']
8
+ };
@@ -0,0 +1,8 @@
1
+ export var matrixFromRowsDocs = {
2
+ name: 'matrixFromRows',
3
+ category: 'Matrix',
4
+ syntax: ['math.matrixFromRows(...arr)', 'math.matrixFromRows(row1, row2)', 'math.matrixFromRows(row1, row2, row3)'],
5
+ description: 'Create a dense matrix from vectors as individual rows.',
6
+ examples: ['matrixFromRows([1, 2, 3], [[4],[5],[6]])'],
7
+ seealso: ['matrix', 'matrixFromColumns', 'matrixFromFunction', 'zeros']
8
+ };
@@ -4,5 +4,5 @@ export var rowDocs = {
4
4
  syntax: ['row(x, index)'],
5
5
  description: 'Return a row from a matrix or array.',
6
6
  examples: ['A = [[1, 2], [3, 4]]', 'row(A, 1)', 'row(A, 2)'],
7
- seealso: ['column']
7
+ seealso: ['column', 'matrixFromRows']
8
8
  };
@@ -2,7 +2,7 @@ import { deepMap } from '../../utils/collection.js';
2
2
  import { factory } from '../../utils/factory.js';
3
3
  var name = 'compile';
4
4
  var dependencies = ['typed', 'parse'];
5
- export var createCompile = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createCompile = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  parse
@@ -1,8 +1,9 @@
1
1
  import { deepMap } from '../../utils/collection.js';
2
2
  import { factory } from '../../utils/factory.js';
3
+ import { createEmptyMap } from '../../utils/map.js';
3
4
  var name = 'evaluate';
4
5
  var dependencies = ['typed', 'parse'];
5
- export var createEvaluate = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createEvaluate = /* #__PURE__ */factory(name, dependencies, _ref => {
6
7
  var {
7
8
  typed,
8
9
  parse
@@ -42,19 +43,19 @@ export var createEvaluate = /* #__PURE__ */factory(name, dependencies, (_ref) =>
42
43
  */
43
44
  return typed(name, {
44
45
  string: function string(expr) {
45
- var scope = {};
46
+ var scope = createEmptyMap();
46
47
  return parse(expr).compile().evaluate(scope);
47
48
  },
48
- 'string, Object': function stringObject(expr, scope) {
49
+ 'string, Map | Object': function stringMapObject(expr, scope) {
49
50
  return parse(expr).compile().evaluate(scope);
50
51
  },
51
52
  'Array | Matrix': function ArrayMatrix(expr) {
52
- var scope = {};
53
+ var scope = createEmptyMap();
53
54
  return deepMap(expr, function (entry) {
54
55
  return parse(entry).compile().evaluate(scope);
55
56
  });
56
57
  },
57
- 'Array | Matrix, Object': function ArrayMatrixObject(expr, scope) {
58
+ 'Array | Matrix, Map | Object': function ArrayMatrixMapObject(expr, scope) {
58
59
  return deepMap(expr, function (entry) {
59
60
  return parse(entry).compile().evaluate(scope);
60
61
  });
@@ -4,7 +4,7 @@ import { embeddedDocs } from '../embeddedDocs/embeddedDocs.js';
4
4
  import { hasOwnProperty } from '../../utils/object.js';
5
5
  var name = 'help';
6
6
  var dependencies = ['typed', 'mathWithTransform', 'Help'];
7
- export var createHelp = /* #__PURE__ */factory(name, dependencies, (_ref) => {
7
+ export var createHelp = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  var {
9
9
  typed,
10
10
  mathWithTransform,
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../utils/factory.js';
2
2
  var name = 'parser';
3
3
  var dependencies = ['typed', 'Parser'];
4
- export var createParser = /* #__PURE__ */factory(name, dependencies, (_ref) => {
4
+ export var createParser = /* #__PURE__ */factory(name, dependencies, _ref => {
5
5
  var {
6
6
  typed,
7
7
  Parser
@@ -1,4 +1,2 @@
1
1
  // Reserved keywords not allowed to use in the parser
2
- export var keywords = {
3
- end: true
4
- };
2
+ export var keywords = new Set(['end']);
@@ -4,7 +4,7 @@ import { factory } from '../../utils/factory.js';
4
4
  import { accessFactory } from './utils/access.js';
5
5
  var name = 'AccessorNode';
6
6
  var dependencies = ['subset', 'Node'];
7
- export var createAccessorNode = /* #__PURE__ */factory(name, dependencies, (_ref) => {
7
+ export var createAccessorNode = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  var {
9
9
  subset,
10
10
  Node
@@ -77,6 +77,7 @@ export var createAccessorNode = /* #__PURE__ */factory(name, dependencies, (_ref
77
77
  if (this.index.isObjectProperty()) {
78
78
  var prop = this.index.getObjectProperty();
79
79
  return function evalAccessorNode(scope, args, context) {
80
+ // get a property from an object evaluated using the scope.
80
81
  return getSafeProperty(evalObject(scope, args, context), prop);
81
82
  };
82
83
  } else {
@@ -3,7 +3,7 @@ import { map } from '../../utils/array.js';
3
3
  import { factory } from '../../utils/factory.js';
4
4
  var name = 'ArrayNode';
5
5
  var dependencies = ['Node'];
6
- export var createArrayNode = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createArrayNode = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  Node
9
9
  } = _ref;
@@ -7,7 +7,7 @@ import { getPrecedence } from '../operators.js';
7
7
  var name = 'AssignmentNode';
8
8
  var dependencies = ['subset', '?matrix', // FIXME: should not be needed at all, should be handled by subset
9
9
  'Node'];
10
- export var createAssignmentNode = /* #__PURE__ */factory(name, dependencies, (_ref) => {
10
+ export var createAssignmentNode = /* #__PURE__ */factory(name, dependencies, _ref => {
11
11
  var {
12
12
  subset,
13
13
  matrix,
@@ -121,7 +121,9 @@ export var createAssignmentNode = /* #__PURE__ */factory(name, dependencies, (_r
121
121
  }
122
122
 
123
123
  return function evalAssignmentNode(scope, args, context) {
124
- return setSafeProperty(scope, name, evalValue(scope, args, context));
124
+ var value = evalValue(scope, args, context);
125
+ scope.set(name, value);
126
+ return value;
125
127
  };
126
128
  } else if (this.index.isObjectProperty()) {
127
129
  // apply an object property for example `a.b=2`
@@ -129,7 +131,8 @@ export var createAssignmentNode = /* #__PURE__ */factory(name, dependencies, (_r
129
131
  return function evalAssignmentNode(scope, args, context) {
130
132
  var object = evalObject(scope, args, context);
131
133
  var value = evalValue(scope, args, context);
132
- return setSafeProperty(object, prop, value);
134
+ setSafeProperty(object, prop, value);
135
+ return value;
133
136
  };
134
137
  } else if (isSymbolNode(this.object)) {
135
138
  // update a matrix subset, for example `a[2]=3`
@@ -138,7 +141,7 @@ export var createAssignmentNode = /* #__PURE__ */factory(name, dependencies, (_r
138
141
  var value = evalValue(scope, args, context);
139
142
  var index = evalIndex(scope, args, childObject); // Important: we pass childObject instead of context
140
143
 
141
- setSafeProperty(scope, name, assign(childObject, index, value));
144
+ scope.set(name, assign(childObject, index, value));
142
145
  return value;
143
146
  };
144
147
  } else {
@@ -3,7 +3,7 @@ import { forEach, map } from '../../utils/array.js';
3
3
  import { factory } from '../../utils/factory.js';
4
4
  var name = 'BlockNode';
5
5
  var dependencies = ['ResultSet', 'Node'];
6
- export var createBlockNode = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createBlockNode = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  ResultSet,
9
9
  Node
@@ -3,7 +3,7 @@ import { factory } from '../../utils/factory.js';
3
3
  import { getPrecedence } from '../operators.js';
4
4
  var name = 'ConditionalNode';
5
5
  var dependencies = ['Node'];
6
- export var createConditionalNode = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createConditionalNode = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  Node
9
9
  } = _ref;
@@ -4,7 +4,7 @@ import { escapeLatex } from '../../utils/latex.js';
4
4
  import { factory } from '../../utils/factory.js';
5
5
  var name = 'ConstantNode';
6
6
  var dependencies = ['Node'];
7
- export var createConstantNode = /* #__PURE__ */factory(name, dependencies, (_ref) => {
7
+ export var createConstantNode = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  var {
9
9
  Node
10
10
  } = _ref;
@@ -4,11 +4,10 @@ import { escape } from '../../utils/string.js';
4
4
  import { forEach, join } from '../../utils/array.js';
5
5
  import { toSymbol } from '../../utils/latex.js';
6
6
  import { getPrecedence } from '../operators.js';
7
- import { setSafeProperty } from '../../utils/customs.js';
8
7
  import { factory } from '../../utils/factory.js';
9
8
  var name = 'FunctionAssignmentNode';
10
9
  var dependencies = ['typed', 'Node'];
11
- export var createFunctionAssignmentNode = /* #__PURE__ */factory(name, dependencies, (_ref) => {
10
+ export var createFunctionAssignmentNode = /* #__PURE__ */factory(name, dependencies, _ref => {
12
11
  var {
13
12
  typed,
14
13
  Node
@@ -35,7 +34,7 @@ export var createFunctionAssignmentNode = /* #__PURE__ */factory(name, dependenc
35
34
  if (typeof name !== 'string') throw new TypeError('String expected for parameter "name"');
36
35
  if (!Array.isArray(params)) throw new TypeError('Array containing strings or objects expected for parameter "params"');
37
36
  if (!isNode(expr)) throw new TypeError('Node expected for parameter "expr"');
38
- if (name in keywords) throw new Error('Illegal function name, "' + name + '" is a reserved keyword');
37
+ if (keywords.has(name)) throw new Error('Illegal function name, "' + name + '" is a reserved keyword');
39
38
  this.name = name;
40
39
  this.params = params.map(function (param) {
41
40
  return param && param.name || param;
@@ -90,7 +89,7 @@ export var createFunctionAssignmentNode = /* #__PURE__ */factory(name, dependenc
90
89
 
91
90
  var fn = typed(name, signatures);
92
91
  fn.syntax = syntax;
93
- setSafeProperty(scope, name, fn);
92
+ scope.set(name, fn);
94
93
  return fn;
95
94
  };
96
95
  };