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
@@ -1,28 +1,30 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.createFunctionNode = void 0;
7
9
 
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
8
14
  var _is = require("../../utils/is.js");
9
15
 
10
16
  var _string = require("../../utils/string.js");
11
17
 
12
18
  var _object = require("../../utils/object.js");
13
19
 
14
- var _array = require("../../utils/array.js");
15
-
16
20
  var _customs = require("../../utils/customs.js");
17
21
 
22
+ var _scope = require("../../utils/scope.js");
23
+
18
24
  var _factory = require("../../utils/factory.js");
19
25
 
20
26
  var _latex = require("../../utils/latex.js");
21
27
 
22
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
23
-
24
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
25
-
26
28
  var name = 'FunctionNode';
27
29
  var dependencies = ['math', 'Node', 'SymbolNode'];
28
30
  var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
@@ -90,50 +92,68 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
90
92
  } // compile arguments
91
93
 
92
94
 
93
- var evalArgs = (0, _array.map)(this.args, function (arg) {
95
+ var evalArgs = this.args.map(function (arg) {
94
96
  return arg._compile(math, argNames);
95
97
  });
96
98
 
97
99
  if ((0, _is.isSymbolNode)(this.fn)) {
98
- var resolveFn = function resolveFn(scope) {
99
- return _name in scope ? (0, _customs.getSafeProperty)(scope, _name) : _name in math ? (0, _customs.getSafeProperty)(math, _name) : FunctionNode.onUndefinedFunction(_name);
100
- };
101
-
102
100
  // we can statically determine whether the function has an rawArgs property
103
101
  var _name = this.fn.name;
104
102
  var fn = _name in math ? (0, _customs.getSafeProperty)(math, _name) : undefined;
105
103
  var isRaw = typeof fn === 'function' && fn.rawArgs === true;
106
104
 
105
+ var resolveFn = function resolveFn(scope) {
106
+ if (scope.has(_name)) {
107
+ return scope.get(_name);
108
+ }
109
+
110
+ if (_name in math) {
111
+ return (0, _customs.getSafeProperty)(math, _name);
112
+ }
113
+
114
+ return FunctionNode.onUndefinedFunction(_name);
115
+ };
116
+
107
117
  if (isRaw) {
108
118
  // pass unevaluated parameters (nodes) to the function
109
119
  // "raw" evaluation
110
120
  var rawArgs = this.args;
111
121
  return function evalFunctionNode(scope, args, context) {
112
122
  var fn = resolveFn(scope);
113
- return fn(rawArgs, math, _extends({}, scope, args));
123
+ return fn(rawArgs, math, (0, _scope.createSubScope)(scope, args), scope);
114
124
  };
115
125
  } else {
116
126
  // "regular" evaluation
117
- if (evalArgs.length === 1) {
118
- var evalArg0 = evalArgs[0];
119
- return function evalFunctionNode(scope, args, context) {
120
- var fn = resolveFn(scope);
121
- return fn(evalArg0(scope, args, context));
122
- };
123
- } else if (evalArgs.length === 2) {
124
- var _evalArg = evalArgs[0];
125
- var evalArg1 = evalArgs[1];
126
- return function evalFunctionNode(scope, args, context) {
127
- var fn = resolveFn(scope);
128
- return fn(_evalArg(scope, args, context), evalArg1(scope, args, context));
129
- };
130
- } else {
131
- return function evalFunctionNode(scope, args, context) {
132
- var fn = resolveFn(scope);
133
- return fn.apply(null, (0, _array.map)(evalArgs, function (evalArg) {
134
- return evalArg(scope, args, context);
135
- }));
136
- };
127
+ switch (evalArgs.length) {
128
+ case 0:
129
+ return function evalFunctionNode(scope, args, context) {
130
+ var fn = resolveFn(scope);
131
+ return fn();
132
+ };
133
+
134
+ case 1:
135
+ return function evalFunctionNode(scope, args, context) {
136
+ var fn = resolveFn(scope);
137
+ var evalArg0 = evalArgs[0];
138
+ return fn(evalArg0(scope, args, context));
139
+ };
140
+
141
+ case 2:
142
+ return function evalFunctionNode(scope, args, context) {
143
+ var fn = resolveFn(scope);
144
+ var evalArg0 = evalArgs[0];
145
+ var evalArg1 = evalArgs[1];
146
+ return fn(evalArg0(scope, args, context), evalArg1(scope, args, context));
147
+ };
148
+
149
+ default:
150
+ return function evalFunctionNode(scope, args, context) {
151
+ var fn = resolveFn(scope);
152
+ var values = evalArgs.map(function (evalArg) {
153
+ return evalArg(scope, args, context);
154
+ });
155
+ return fn.apply(void 0, (0, _toConsumableArray2["default"])(values));
156
+ };
137
157
  }
138
158
  }
139
159
  } else if ((0, _is.isAccessorNode)(this.fn) && (0, _is.isIndexNode)(this.fn.index) && this.fn.index.isObjectProperty()) {
@@ -146,11 +166,16 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
146
166
  var object = evalObject(scope, args, context);
147
167
  (0, _customs.validateSafeMethod)(object, prop);
148
168
  var isRaw = object[prop] && object[prop].rawArgs;
149
- return isRaw ? object[prop](_rawArgs, math, _extends({}, scope, args)) // "raw" evaluation
150
- : object[prop].apply(object, (0, _array.map)(evalArgs, function (evalArg) {
169
+
170
+ if (isRaw) {
171
+ return object[prop](_rawArgs, math, (0, _scope.createSubScope)(scope, args), scope); // "raw" evaluation
172
+ } else {
151
173
  // "regular" evaluation
152
- return evalArg(scope, args, context);
153
- }));
174
+ var values = evalArgs.map(function (evalArg) {
175
+ return evalArg(scope, args, context);
176
+ });
177
+ return object[prop].apply(object, values);
178
+ }
154
179
  };
155
180
  } else {
156
181
  // node.fn.isAccessorNode && !node.fn.index.isObjectProperty()
@@ -161,11 +186,16 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
161
186
  return function evalFunctionNode(scope, args, context) {
162
187
  var fn = evalFn(scope, args, context);
163
188
  var isRaw = fn && fn.rawArgs;
164
- return isRaw ? fn(_rawArgs2, math, _extends({}, scope, args)) // "raw" evaluation
165
- : fn.apply(fn, (0, _array.map)(evalArgs, function (evalArg) {
189
+
190
+ if (isRaw) {
191
+ return fn(_rawArgs2, math, (0, _scope.createSubScope)(scope, args), scope); // "raw" evaluation
192
+ } else {
166
193
  // "regular" evaluation
167
- return evalArg(scope, args, context);
168
- }));
194
+ var values = evalArgs.map(function (evalArg) {
195
+ return evalArg(scope, args, context);
196
+ });
197
+ return fn.apply(fn, values);
198
+ }
169
199
  };
170
200
  }
171
201
  };
@@ -240,7 +270,7 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
240
270
  var customString;
241
271
  var name = this.fn.toString(options);
242
272
 
243
- if (options && _typeof(options.handler) === 'object' && (0, _object.hasOwnProperty)(options.handler, name)) {
273
+ if (options && (0, _typeof2["default"])(options.handler) === 'object' && (0, _object.hasOwnProperty)(options.handler, name)) {
244
274
  // callback is a map of callback functions
245
275
  customString = options.handler[name](this, options);
246
276
  }
@@ -346,7 +376,7 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
346
376
 
347
377
  if (match[2] === undefined) {
348
378
  // no square brackets
349
- switch (_typeof(property)) {
379
+ switch ((0, _typeof2["default"])(property)) {
350
380
  case 'string':
351
381
  latex += property;
352
382
  break;
@@ -406,7 +436,7 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
406
436
  FunctionNode.prototype.toTex = function (options) {
407
437
  var customTex;
408
438
 
409
- if (options && _typeof(options.handler) === 'object' && (0, _object.hasOwnProperty)(options.handler, this.name)) {
439
+ if (options && (0, _typeof2["default"])(options.handler) === 'object' && (0, _object.hasOwnProperty)(options.handler, this.name)) {
410
440
  // callback is a map of callback functions
411
441
  customTex = options.handler[this.name](this, options);
412
442
  }
@@ -437,14 +467,14 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
437
467
  } // toTex property on the function itself
438
468
 
439
469
 
440
- if (math[this.name] && (typeof math[this.name].toTex === 'function' || _typeof(math[this.name].toTex) === 'object' || typeof math[this.name].toTex === 'string')) {
470
+ if (math[this.name] && (typeof math[this.name].toTex === 'function' || (0, _typeof2["default"])(math[this.name].toTex) === 'object' || typeof math[this.name].toTex === 'string')) {
441
471
  // .toTex is a callback function
442
472
  latexConverter = math[this.name].toTex;
443
473
  }
444
474
 
445
475
  var customToTex;
446
476
 
447
- switch (_typeof(latexConverter)) {
477
+ switch ((0, _typeof2["default"])(latexConverter)) {
448
478
  case 'function':
449
479
  // a callback function
450
480
  customToTex = latexConverter(this, options);
@@ -457,7 +487,7 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
457
487
 
458
488
  case 'object':
459
489
  // an object with different "converters" for different numbers of arguments
460
- switch (_typeof(latexConverter[args.length])) {
490
+ switch ((0, _typeof2["default"])(latexConverter[args.length])) {
461
491
  case 'function':
462
492
  customToTex = latexConverter[args.length](this, options);
463
493
  break;
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.createIndexNode = void 0;
7
9
 
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
8
12
  var _is = require("../../utils/is.js");
9
13
 
10
14
  var _array = require("../../utils/array.js");
@@ -15,18 +19,6 @@ var _factory = require("../../utils/factory.js");
15
19
 
16
20
  var _customs = require("../../utils/customs.js");
17
21
 
18
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
19
-
20
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21
-
22
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23
-
24
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
25
-
26
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
27
-
28
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
29
-
30
22
  var name = 'IndexNode';
31
23
  var dependencies = ['Range', 'Node', 'size'];
32
24
  var createIndexNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
@@ -151,7 +143,7 @@ var createIndexNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
151
143
  var dimensions = (0, _array.map)(evalDimensions, function (evalDimension) {
152
144
  return evalDimension(scope, args, context);
153
145
  });
154
- return index.apply(void 0, _toConsumableArray(dimensions));
146
+ return index.apply(void 0, (0, _toConsumableArray2["default"])(dimensions));
155
147
  };
156
148
  };
157
149
  /**
@@ -1,10 +1,16 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.createNode = void 0;
7
9
 
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
+
8
14
  var _is = require("../../utils/is.js");
9
15
 
10
16
  var _keywords = require("../keywords.js");
@@ -13,7 +19,7 @@ var _object = require("../../utils/object.js");
13
19
 
14
20
  var _factory = require("../../utils/factory.js");
15
21
 
16
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
22
+ var _map = require("../../utils/map.js");
17
23
 
18
24
  var name = 'Node';
19
25
  var dependencies = ['mathWithTransform'];
@@ -58,7 +64,7 @@ var createNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
58
64
  var context = null;
59
65
 
60
66
  function evaluate(scope) {
61
- var s = scope || {};
67
+ var s = (0, _map.createMap)(scope);
62
68
 
63
69
  _validateScope(s);
64
70
 
@@ -361,8 +367,8 @@ var createNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
361
367
 
362
368
 
363
369
  Node.prototype._getCustomString = function (options) {
364
- if (options && _typeof(options) === 'object') {
365
- switch (_typeof(options.handler)) {
370
+ if (options && (0, _typeof2["default"])(options) === 'object') {
371
+ switch ((0, _typeof2["default"])(options.handler)) {
366
372
  case 'object':
367
373
  case 'undefined':
368
374
  return;
@@ -401,11 +407,11 @@ var createNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
401
407
 
402
408
 
403
409
  function _validateScope(scope) {
404
- for (var symbol in scope) {
405
- if ((0, _object.hasOwnProperty)(scope, symbol)) {
406
- if (symbol in _keywords.keywords) {
407
- throw new Error('Scope contains an illegal symbol, "' + symbol + '" is a reserved keyword');
408
- }
410
+ for (var _i = 0, _arr = (0, _toConsumableArray2["default"])(_keywords.keywords); _i < _arr.length; _i++) {
411
+ var symbol = _arr[_i];
412
+
413
+ if (scope.has(symbol)) {
414
+ throw new Error('Scope contains an illegal symbol, "' + symbol + '" is a reserved keyword');
409
415
  }
410
416
  }
411
417
  }
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.createObjectNode = void 0;
7
9
 
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+
8
12
  var _is = require("../../utils/is.js");
9
13
 
10
14
  var _string = require("../../utils/string.js");
@@ -15,8 +19,6 @@ var _object = require("../../utils/object.js");
15
19
 
16
20
  var _factory = require("../../utils/factory.js");
17
21
 
18
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
19
-
20
22
  var name = 'ObjectNode';
21
23
  var dependencies = ['Node'];
22
24
  var createObjectNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
@@ -36,7 +38,7 @@ var createObjectNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
36
38
  this.properties = properties || {}; // validate input
37
39
 
38
40
  if (properties) {
39
- if (!(_typeof(properties) === 'object') || !Object.keys(properties).every(function (key) {
41
+ if (!((0, _typeof2["default"])(properties) === 'object') || !Object.keys(properties).every(function (key) {
40
42
  return (0, _is.isNode)(properties[key]);
41
43
  })) {
42
44
  throw new TypeError('Object containing Nodes expected');
@@ -75,12 +75,12 @@ var createSymbolNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
75
75
  };
76
76
  } else if (name in math) {
77
77
  return function (scope, args, context) {
78
- return name in scope ? (0, _customs.getSafeProperty)(scope, name) : (0, _customs.getSafeProperty)(math, name);
78
+ return scope.has(name) ? scope.get(name) : (0, _customs.getSafeProperty)(math, name);
79
79
  };
80
80
  } else {
81
81
  var isUnit = isValuelessUnit(name);
82
82
  return function (scope, args, context) {
83
- return name in scope ? (0, _customs.getSafeProperty)(scope, name) : isUnit ? new Unit(null, name) : SymbolNode.onUndefinedSymbol(name);
83
+ return scope.has(name) ? scope.get(name) : isUnit ? new Unit(null, name) : SymbolNode.onUndefinedSymbol(name);
84
84
  };
85
85
  }
86
86
  };
@@ -1,16 +1,18 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.accessFactory = accessFactory;
7
9
 
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+
8
12
  var _errorTransform = require("../../transform/utils/errorTransform.js");
9
13
 
10
14
  var _customs = require("../../../utils/customs.js");
11
15
 
12
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13
-
14
16
  function accessFactory(_ref) {
15
17
  var subset = _ref.subset;
16
18
 
@@ -35,7 +37,7 @@ function accessFactory(_ref) {
35
37
  } else if (typeof object === 'string') {
36
38
  // TODO: move getStringSubset into a separate util file, use that
37
39
  return subset(object, index);
38
- } else if (_typeof(object) === 'object') {
40
+ } else if ((0, _typeof2["default"])(object) === 'object') {
39
41
  if (!index.isObjectProperty()) {
40
42
  throw new TypeError('Cannot apply a numeric index as object property');
41
43
  }
@@ -1,16 +1,18 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.assignFactory = assignFactory;
7
9
 
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+
8
12
  var _errorTransform = require("../../transform/utils/errorTransform.js");
9
13
 
10
14
  var _customs = require("../../../utils/customs.js");
11
15
 
12
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13
-
14
16
  function assignFactory(_ref) {
15
17
  var subset = _ref.subset,
16
18
  matrix = _ref.matrix;
@@ -40,7 +42,7 @@ function assignFactory(_ref) {
40
42
  } else if (typeof object === 'string') {
41
43
  // TODO: move setStringSubset into a separate util file, use that
42
44
  return subset(object, index, value);
43
- } else if (_typeof(object) === 'object') {
45
+ } else if ((0, _typeof2["default"])(object) === 'object') {
44
46
  if (!index.isObjectProperty()) {
45
47
  throw TypeError('Cannot apply a numeric index as object property');
46
48
  }
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.createParse = void 0;
7
9
 
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
8
12
  var _factory = require("../utils/factory.js");
9
13
 
10
14
  var _is = require("../utils/is.js");
@@ -13,8 +17,6 @@ var _collection = require("../utils/collection.js");
13
17
 
14
18
  var _object = require("../utils/object.js");
15
19
 
16
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
17
-
18
20
  var name = 'parse';
19
21
  var dependencies = ['typed', 'numeric', 'config', 'AccessorNode', 'ArrayNode', 'AssignmentNode', 'BlockNode', 'ConditionalNode', 'ConstantNode', 'FunctionAssignmentNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'RangeNode', 'RelationalNode', 'SymbolNode'];
20
22
  var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
@@ -581,12 +583,10 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
581
583
 
582
584
  function parseStart(expression, extraNodes) {
583
585
  var state = initialState();
584
-
585
- _extends(state, {
586
+ (0, _extends2["default"])(state, {
586
587
  expression: expression,
587
588
  extraNodes: extraNodes
588
589
  });
589
-
590
590
  getToken(state);
591
591
  var node = parseBlock(state); // check for garbage at the end of the expression
592
592
  // an expression ends with a empty character '' and tokenType DELIMITER
@@ -1106,34 +1106,30 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
1106
1106
  // Match the "number /" part of the pattern "number / number symbol"
1107
1107
  if (state.token === '/' && (0, _is.isConstantNode)(last)) {
1108
1108
  // Look ahead to see if the next token is a number
1109
- tokenStates.push(_extends({}, state));
1109
+ tokenStates.push((0, _extends2["default"])({}, state));
1110
1110
  getTokenSkipNewline(state); // Match the "number / number" part of the pattern
1111
1111
 
1112
1112
  if (state.tokenType === TOKENTYPE.NUMBER) {
1113
1113
  // Look ahead again
1114
- tokenStates.push(_extends({}, state));
1114
+ tokenStates.push((0, _extends2["default"])({}, state));
1115
1115
  getTokenSkipNewline(state); // Match the "symbol" part of the pattern, or a left parenthesis
1116
1116
 
1117
1117
  if (state.tokenType === TOKENTYPE.SYMBOL || state.token === '(') {
1118
1118
  // We've matched the pattern "number / number symbol".
1119
1119
  // Rewind once and build the "number / number" node; the symbol will be consumed later
1120
- _extends(state, tokenStates.pop());
1121
-
1120
+ (0, _extends2["default"])(state, tokenStates.pop());
1122
1121
  tokenStates.pop();
1123
1122
  last = parseUnary(state);
1124
1123
  node = new OperatorNode('/', 'divide', [node, last]);
1125
1124
  } else {
1126
1125
  // Not a match, so rewind
1127
1126
  tokenStates.pop();
1128
-
1129
- _extends(state, tokenStates.pop());
1130
-
1127
+ (0, _extends2["default"])(state, tokenStates.pop());
1131
1128
  break;
1132
1129
  }
1133
1130
  } else {
1134
1131
  // Not a match, so rewind
1135
- _extends(state, tokenStates.pop());
1136
-
1132
+ (0, _extends2["default"])(state, tokenStates.pop());
1137
1133
  break;
1138
1134
  }
1139
1135
  } else {
@@ -7,6 +7,8 @@ exports.compileInlineExpression = compileInlineExpression;
7
7
 
8
8
  var _is = require("../../../utils/is.js");
9
9
 
10
+ var _scope = require("../../../utils/scope.js");
11
+
10
12
  /**
11
13
  * Compile an inline expression like "x > 0"
12
14
  * @param {Node} expression
@@ -18,7 +20,7 @@ var _is = require("../../../utils/is.js");
18
20
  function compileInlineExpression(expression, math, scope) {
19
21
  // find an undefined symbol
20
22
  var symbol = expression.filter(function (node) {
21
- return (0, _is.isSymbolNode)(node) && !(node.name in math) && !(node.name in scope);
23
+ return (0, _is.isSymbolNode)(node) && !(node.name in math) && !scope.has(node.name);
22
24
  })[0];
23
25
 
24
26
  if (!symbol) {
@@ -28,10 +30,10 @@ function compileInlineExpression(expression, math, scope) {
28
30
 
29
31
  var name = symbol.name; // variable name
30
32
 
31
- var subScope = Object.create(scope);
33
+ var subScope = (0, _scope.createSubScope)(scope);
32
34
  var eq = expression.compile();
33
35
  return function inlineExpression(x) {
34
- subScope[name] = x;
36
+ subScope.set(name, x);
35
37
  return eq.evaluate(subScope);
36
38
  };
37
39
  }
@@ -159,6 +159,24 @@ Object.defineProperty(exports, "createMatrix", {
159
159
  return _matrix.createMatrix;
160
160
  }
161
161
  });
162
+ Object.defineProperty(exports, "createMatrixFromFunction", {
163
+ enumerable: true,
164
+ get: function get() {
165
+ return _matrixFromFunction.createMatrixFromFunction;
166
+ }
167
+ });
168
+ Object.defineProperty(exports, "createMatrixFromRows", {
169
+ enumerable: true,
170
+ get: function get() {
171
+ return _matrixFromRows.createMatrixFromRows;
172
+ }
173
+ });
174
+ Object.defineProperty(exports, "createMatrixFromColumns", {
175
+ enumerable: true,
176
+ get: function get() {
177
+ return _matrixFromColumns.createMatrixFromColumns;
178
+ }
179
+ });
162
180
  Object.defineProperty(exports, "createSplitUnit", {
163
181
  enumerable: true,
164
182
  get: function get() {
@@ -2036,6 +2054,12 @@ var _fraction = require("./type/fraction/function/fraction.js");
2036
2054
 
2037
2055
  var _matrix = require("./type/matrix/function/matrix.js");
2038
2056
 
2057
+ var _matrixFromFunction = require("./function/matrix/matrixFromFunction.js");
2058
+
2059
+ var _matrixFromRows = require("./function/matrix/matrixFromRows.js");
2060
+
2061
+ var _matrixFromColumns = require("./function/matrix/matrixFromColumns.js");
2062
+
2039
2063
  var _splitUnit = require("./type/unit/function/splitUnit.js");
2040
2064
 
2041
2065
  var _unaryMinus = require("./function/arithmetic/unaryMinus.js");
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.createQr = void 0;
7
9
 
8
- var _factory = require("../../../utils/factory.js");
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
11
 
10
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
12
+ var _factory = require("../../../utils/factory.js");
11
13
 
12
14
  var name = 'qr';
13
15
  var dependencies = ['typed', 'matrix', 'zeros', 'identity', 'isZero', 'equal', 'sign', 'sqrt', 'conj', 'unaryMinus', 'addScalar', 'divideScalar', 'multiplyScalar', 'subtract', 'complex'];
@@ -71,7 +73,7 @@ var createQr = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function
71
73
  * @return {{Q: Array | Matrix, R: Array | Matrix}} Q: the orthogonal
72
74
  * matrix and R: the upper triangular matrix
73
75
  */
74
- return _extends(typed(name, {
76
+ return (0, _extends2["default"])(typed(name, {
75
77
  DenseMatrix: function DenseMatrix(m) {
76
78
  return _denseQR(m);
77
79
  },
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createResolve = void 0;
7
7
 
8
+ var _map = require("../../../utils/map.js");
9
+
8
10
  var _is = require("../../../utils/is.js");
9
11
 
10
12
  var _factory = require("../../../utils/factory.js");
@@ -39,8 +41,12 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
39
41
  return node;
40
42
  }
41
43
 
44
+ if (!(0, _map.isMap)(scope)) {
45
+ scope = (0, _map.createMap)(scope);
46
+ }
47
+
42
48
  if ((0, _is.isSymbolNode)(node)) {
43
- var value = scope[node.name];
49
+ var value = scope.get(node.name);
44
50
 
45
51
  if ((0, _is.isNode)(value)) {
46
52
  return resolve(value, scope);