mathjs 10.6.2 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/HISTORY.md +74 -1
  2. package/README.md +1 -1
  3. package/lib/browser/math.js +2 -41
  4. package/lib/browser/math.js.LICENSE.txt +43 -0
  5. package/lib/browser/math.js.map +1 -1
  6. package/lib/cjs/core/create.js +6 -5
  7. package/lib/cjs/core/function/import.js +4 -14
  8. package/lib/cjs/core/function/typed.js +54 -12
  9. package/lib/cjs/defaultInstance.js +3 -3
  10. package/lib/cjs/entry/allFactoriesAny.js +1 -1
  11. package/lib/cjs/entry/allFactoriesNumber.js +1 -1
  12. package/lib/cjs/entry/configReadonly.js +1 -1
  13. package/lib/cjs/entry/dependenciesAny/dependenciesChainClass.generated.js +3 -0
  14. package/lib/cjs/entry/dependenciesAny/dependenciesKldivergence.generated.js +3 -0
  15. package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +3 -0
  16. package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +3 -0
  17. package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +3 -0
  18. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +56 -0
  19. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +6 -0
  20. package/lib/cjs/entry/dependenciesAny/dependenciesSqrtm.generated.js +3 -0
  21. package/lib/cjs/entry/dependenciesAny/dependenciesStd.generated.js +3 -0
  22. package/lib/cjs/entry/dependenciesAny/dependenciesStdTransform.generated.js +3 -0
  23. package/lib/cjs/entry/dependenciesAny.generated.js +8 -0
  24. package/lib/cjs/entry/dependenciesNumber/dependenciesChainClass.generated.js +3 -0
  25. package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +3 -0
  26. package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +3 -0
  27. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +3 -0
  28. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +50 -0
  29. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +6 -0
  30. package/lib/cjs/entry/dependenciesNumber/dependenciesStd.generated.js +3 -0
  31. package/lib/cjs/entry/dependenciesNumber/dependenciesStdTransform.generated.js +3 -0
  32. package/lib/cjs/entry/dependenciesNumber.generated.js +8 -0
  33. package/lib/cjs/entry/impureFunctionsAny.generated.js +87 -61
  34. package/lib/cjs/entry/impureFunctionsNumber.generated.js +93 -69
  35. package/lib/cjs/entry/pureFunctionsAny.generated.js +50 -45
  36. package/lib/cjs/entry/pureFunctionsNumber.generated.js +22 -19
  37. package/lib/cjs/expression/Parser.js +1 -1
  38. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +8 -5
  39. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyConstant.js +15 -0
  40. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  41. package/lib/cjs/expression/node/AccessorNode.js +216 -173
  42. package/lib/cjs/expression/node/ArrayNode.js +206 -160
  43. package/lib/cjs/expression/node/AssignmentNode.js +321 -270
  44. package/lib/cjs/expression/node/BlockNode.js +223 -172
  45. package/lib/cjs/expression/node/ConditionalNode.js +253 -193
  46. package/lib/cjs/expression/node/ConstantNode.js +216 -171
  47. package/lib/cjs/expression/node/FunctionAssignmentNode.js +258 -196
  48. package/lib/cjs/expression/node/FunctionNode.js +456 -416
  49. package/lib/cjs/expression/node/IndexNode.js +256 -210
  50. package/lib/cjs/expression/node/Node.js +411 -378
  51. package/lib/cjs/expression/node/ObjectNode.js +223 -178
  52. package/lib/cjs/expression/node/OperatorNode.js +474 -397
  53. package/lib/cjs/expression/node/ParenthesisNode.js +189 -143
  54. package/lib/cjs/expression/node/RangeNode.js +272 -224
  55. package/lib/cjs/expression/node/RelationalNode.js +246 -195
  56. package/lib/cjs/expression/node/SymbolNode.js +219 -172
  57. package/lib/cjs/expression/node/utils/access.js +1 -1
  58. package/lib/cjs/expression/node/utils/assign.js +1 -1
  59. package/lib/cjs/expression/operators.js +117 -23
  60. package/lib/cjs/expression/parse.js +37 -19
  61. package/lib/cjs/expression/transform/std.transform.js +3 -1
  62. package/lib/cjs/factoriesAny.js +8 -0
  63. package/lib/cjs/factoriesNumber.js +10 -1
  64. package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
  65. package/lib/cjs/function/algebra/derivative.js +22 -30
  66. package/lib/cjs/function/algebra/leafCount.js +0 -3
  67. package/lib/cjs/function/algebra/rationalize.js +78 -108
  68. package/lib/cjs/function/algebra/resolve.js +53 -16
  69. package/lib/cjs/function/algebra/simplify/util.js +1 -1
  70. package/lib/cjs/function/algebra/simplify.js +87 -114
  71. package/lib/cjs/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +44 -10
  72. package/lib/cjs/function/algebra/simplifyCore.js +196 -93
  73. package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
  74. package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
  75. package/lib/cjs/function/algebra/symbolicEqual.js +9 -26
  76. package/lib/cjs/function/arithmetic/abs.js +7 -14
  77. package/lib/cjs/function/arithmetic/add.js +26 -70
  78. package/lib/cjs/function/arithmetic/addScalar.js +17 -9
  79. package/lib/cjs/function/arithmetic/cbrt.js +7 -11
  80. package/lib/cjs/function/arithmetic/ceil.js +56 -46
  81. package/lib/cjs/function/arithmetic/cube.js +5 -10
  82. package/lib/cjs/function/arithmetic/divide.js +7 -7
  83. package/lib/cjs/function/arithmetic/divideScalar.js +4 -18
  84. package/lib/cjs/function/arithmetic/dotDivide.js +22 -65
  85. package/lib/cjs/function/arithmetic/dotMultiply.js +16 -61
  86. package/lib/cjs/function/arithmetic/dotPow.js +30 -63
  87. package/lib/cjs/function/arithmetic/exp.js +8 -12
  88. package/lib/cjs/function/arithmetic/expm1.js +10 -10
  89. package/lib/cjs/function/arithmetic/fix.js +33 -27
  90. package/lib/cjs/function/arithmetic/floor.js +56 -46
  91. package/lib/cjs/function/arithmetic/gcd.js +27 -68
  92. package/lib/cjs/function/arithmetic/hypot.js +9 -5
  93. package/lib/cjs/function/arithmetic/invmod.js +1 -1
  94. package/lib/cjs/function/arithmetic/lcm.js +27 -68
  95. package/lib/cjs/function/arithmetic/log.js +10 -12
  96. package/lib/cjs/function/arithmetic/log10.js +5 -3
  97. package/lib/cjs/function/arithmetic/log1p.js +11 -7
  98. package/lib/cjs/function/arithmetic/log2.js +5 -3
  99. package/lib/cjs/function/arithmetic/mod.js +22 -64
  100. package/lib/cjs/function/arithmetic/multiply.js +40 -35
  101. package/lib/cjs/function/arithmetic/multiplyScalar.js +2 -9
  102. package/lib/cjs/function/arithmetic/norm.js +1 -5
  103. package/lib/cjs/function/arithmetic/nthRoot.js +80 -92
  104. package/lib/cjs/function/arithmetic/round.js +56 -42
  105. package/lib/cjs/function/arithmetic/sign.js +14 -10
  106. package/lib/cjs/function/arithmetic/sqrt.js +5 -9
  107. package/lib/cjs/function/arithmetic/square.js +6 -10
  108. package/lib/cjs/function/arithmetic/subtract.js +44 -100
  109. package/lib/cjs/function/arithmetic/unaryMinus.js +14 -16
  110. package/lib/cjs/function/arithmetic/unaryPlus.js +6 -4
  111. package/lib/cjs/function/bitwise/bitAnd.js +17 -61
  112. package/lib/cjs/function/bitwise/bitNot.js +5 -3
  113. package/lib/cjs/function/bitwise/bitOr.js +16 -60
  114. package/lib/cjs/function/bitwise/bitXor.js +17 -61
  115. package/lib/cjs/function/bitwise/leftShift.js +68 -81
  116. package/lib/cjs/function/bitwise/rightArithShift.js +68 -81
  117. package/lib/cjs/function/bitwise/rightLogShift.js +68 -81
  118. package/lib/cjs/function/bitwise/useMatrixForArrayScalar.js +36 -0
  119. package/lib/cjs/function/complex/arg.js +5 -3
  120. package/lib/cjs/function/complex/conj.js +6 -7
  121. package/lib/cjs/function/complex/im.js +7 -8
  122. package/lib/cjs/function/complex/re.js +6 -10
  123. package/lib/cjs/function/logical/and.js +74 -80
  124. package/lib/cjs/function/logical/not.js +13 -6
  125. package/lib/cjs/function/logical/or.js +21 -63
  126. package/lib/cjs/function/logical/xor.js +21 -63
  127. package/lib/cjs/function/matrix/diff.js +10 -7
  128. package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
  129. package/lib/cjs/function/matrix/fft.js +2 -2
  130. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  131. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  132. package/lib/cjs/function/matrix/ones.js +2 -1
  133. package/lib/cjs/function/matrix/sqrtm.js +3 -2
  134. package/lib/cjs/function/matrix/transpose.js +47 -48
  135. package/lib/cjs/function/matrix/zeros.js +2 -1
  136. package/lib/cjs/function/probability/factorial.js +5 -3
  137. package/lib/cjs/function/probability/gamma.js +38 -40
  138. package/lib/cjs/function/probability/kldivergence.js +5 -2
  139. package/lib/cjs/function/probability/lgamma.js +30 -30
  140. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  141. package/lib/cjs/function/relational/compare.js +21 -67
  142. package/lib/cjs/function/relational/compareNatural.js +59 -54
  143. package/lib/cjs/function/relational/compareText.js +10 -43
  144. package/lib/cjs/function/relational/compareUnits.js +24 -0
  145. package/lib/cjs/function/relational/equal.js +19 -80
  146. package/lib/cjs/function/relational/equalScalar.js +7 -9
  147. package/lib/cjs/function/relational/larger.js +21 -67
  148. package/lib/cjs/function/relational/largerEq.js +21 -67
  149. package/lib/cjs/function/relational/smaller.js +21 -67
  150. package/lib/cjs/function/relational/smallerEq.js +21 -67
  151. package/lib/cjs/function/relational/unequal.js +19 -80
  152. package/lib/cjs/function/special/erf.js +5 -3
  153. package/lib/cjs/function/statistics/std.js +11 -2
  154. package/lib/cjs/function/trigonometry/acos.js +4 -8
  155. package/lib/cjs/function/trigonometry/acosh.js +2 -7
  156. package/lib/cjs/function/trigonometry/acot.js +4 -8
  157. package/lib/cjs/function/trigonometry/acoth.js +4 -8
  158. package/lib/cjs/function/trigonometry/acsc.js +4 -8
  159. package/lib/cjs/function/trigonometry/acsch.js +4 -8
  160. package/lib/cjs/function/trigonometry/asec.js +4 -8
  161. package/lib/cjs/function/trigonometry/asech.js +4 -8
  162. package/lib/cjs/function/trigonometry/asin.js +4 -9
  163. package/lib/cjs/function/trigonometry/asinh.js +4 -9
  164. package/lib/cjs/function/trigonometry/atan.js +4 -9
  165. package/lib/cjs/function/trigonometry/atan2.js +24 -62
  166. package/lib/cjs/function/trigonometry/atanh.js +4 -9
  167. package/lib/cjs/function/trigonometry/cos.js +11 -20
  168. package/lib/cjs/function/trigonometry/cosh.js +5 -19
  169. package/lib/cjs/function/trigonometry/cot.js +9 -15
  170. package/lib/cjs/function/trigonometry/coth.js +4 -15
  171. package/lib/cjs/function/trigonometry/csc.js +11 -17
  172. package/lib/cjs/function/trigonometry/csch.js +4 -15
  173. package/lib/cjs/function/trigonometry/sec.js +11 -17
  174. package/lib/cjs/function/trigonometry/sech.js +4 -15
  175. package/lib/cjs/function/trigonometry/sin.js +11 -21
  176. package/lib/cjs/function/trigonometry/sinh.js +5 -20
  177. package/lib/cjs/function/trigonometry/tan.js +11 -21
  178. package/lib/cjs/function/trigonometry/tanh.js +5 -20
  179. package/lib/cjs/function/trigonometry/trigUnit.js +24 -0
  180. package/lib/cjs/function/unit/to.js +7 -41
  181. package/lib/cjs/function/utils/hasNumericValue.js +4 -0
  182. package/lib/cjs/function/utils/isInteger.js +5 -3
  183. package/lib/cjs/function/utils/isNegative.js +10 -6
  184. package/lib/cjs/function/utils/isNumeric.js +5 -3
  185. package/lib/cjs/function/utils/isPositive.js +10 -6
  186. package/lib/cjs/function/utils/isPrime.js +5 -3
  187. package/lib/cjs/function/utils/isZero.js +10 -6
  188. package/lib/cjs/function/utils/numeric.js +11 -4
  189. package/lib/cjs/function/utils/typeOf.js +38 -44
  190. package/lib/cjs/header.js +2 -2
  191. package/lib/cjs/plain/bignumber/index.js +1 -1
  192. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  193. package/lib/cjs/type/bignumber/function/bignumber.js +6 -4
  194. package/lib/cjs/type/boolean.js +7 -5
  195. package/lib/cjs/type/chain/Chain.js +23 -3
  196. package/lib/cjs/type/complex/Complex.js +18 -14
  197. package/lib/cjs/type/complex/function/complex.js +6 -4
  198. package/lib/cjs/type/fraction/Fraction.js +10 -6
  199. package/lib/cjs/type/fraction/function/fraction.js +6 -4
  200. package/lib/cjs/type/matrix/DenseMatrix.js +21 -6
  201. package/lib/cjs/type/matrix/SparseMatrix.js +12 -2
  202. package/lib/cjs/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +4 -4
  203. package/lib/cjs/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +5 -5
  204. package/lib/cjs/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +5 -5
  205. package/lib/cjs/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +7 -7
  206. package/lib/cjs/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +5 -5
  207. package/lib/cjs/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +5 -5
  208. package/lib/cjs/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +5 -5
  209. package/lib/cjs/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +6 -6
  210. package/lib/cjs/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +5 -5
  211. package/lib/cjs/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +5 -5
  212. package/lib/cjs/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +5 -5
  213. package/lib/cjs/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +5 -5
  214. package/lib/cjs/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +5 -5
  215. package/lib/cjs/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +5 -5
  216. package/lib/cjs/type/matrix/utils/matrixAlgorithmSuite.js +238 -0
  217. package/lib/cjs/type/number.js +6 -4
  218. package/lib/cjs/type/string.js +7 -5
  219. package/lib/cjs/type/unit/Unit.js +69 -21
  220. package/lib/cjs/type/unit/function/createUnit.js +2 -1
  221. package/lib/cjs/type/unit/function/unit.js +9 -3
  222. package/lib/cjs/utils/customs.js +2 -2
  223. package/lib/cjs/utils/emitter.js +1 -1
  224. package/lib/cjs/utils/function.js +2 -2
  225. package/lib/cjs/utils/is.js +27 -25
  226. package/lib/cjs/utils/latex.js +3 -3
  227. package/lib/cjs/utils/lruQueue.js +1 -1
  228. package/lib/cjs/utils/map.js +3 -3
  229. package/lib/cjs/utils/object.js +2 -2
  230. package/lib/cjs/utils/snapshot.js +30 -57
  231. package/lib/cjs/utils/string.js +3 -3
  232. package/lib/cjs/version.js +1 -1
  233. package/lib/esm/core/create.js +2 -1
  234. package/lib/esm/core/function/import.js +2 -12
  235. package/lib/esm/core/function/typed.js +47 -11
  236. package/lib/esm/entry/dependenciesAny/dependenciesChainClass.generated.js +2 -0
  237. package/lib/esm/entry/dependenciesAny/dependenciesKldivergence.generated.js +2 -0
  238. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
  239. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +2 -0
  240. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
  241. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +34 -0
  242. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +4 -0
  243. package/lib/esm/entry/dependenciesAny/dependenciesSqrtm.generated.js +2 -0
  244. package/lib/esm/entry/dependenciesAny/dependenciesStd.generated.js +2 -0
  245. package/lib/esm/entry/dependenciesAny/dependenciesStdTransform.generated.js +2 -0
  246. package/lib/esm/entry/dependenciesAny.generated.js +1 -0
  247. package/lib/esm/entry/dependenciesNumber/dependenciesChainClass.generated.js +2 -0
  248. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
  249. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +2 -0
  250. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
  251. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +30 -0
  252. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +4 -0
  253. package/lib/esm/entry/dependenciesNumber/dependenciesStd.generated.js +2 -0
  254. package/lib/esm/entry/dependenciesNumber/dependenciesStdTransform.generated.js +2 -0
  255. package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
  256. package/lib/esm/entry/impureFunctionsAny.generated.js +73 -48
  257. package/lib/esm/entry/impureFunctionsNumber.generated.js +81 -58
  258. package/lib/esm/entry/pureFunctionsAny.generated.js +39 -36
  259. package/lib/esm/entry/pureFunctionsNumber.generated.js +14 -13
  260. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
  261. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js +8 -0
  262. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  263. package/lib/esm/expression/node/AccessorNode.js +158 -153
  264. package/lib/esm/expression/node/ArrayNode.js +162 -154
  265. package/lib/esm/expression/node/AssignmentNode.js +257 -245
  266. package/lib/esm/expression/node/BlockNode.js +177 -163
  267. package/lib/esm/expression/node/ConditionalNode.js +197 -174
  268. package/lib/esm/expression/node/ConstantNode.js +171 -163
  269. package/lib/esm/expression/node/FunctionAssignmentNode.js +205 -180
  270. package/lib/esm/expression/node/FunctionNode.js +407 -407
  271. package/lib/esm/expression/node/IndexNode.js +206 -198
  272. package/lib/esm/expression/node/Node.js +325 -325
  273. package/lib/esm/expression/node/ObjectNode.js +166 -157
  274. package/lib/esm/expression/node/OperatorNode.js +414 -377
  275. package/lib/esm/expression/node/ParenthesisNode.js +146 -138
  276. package/lib/esm/expression/node/RangeNode.js +221 -212
  277. package/lib/esm/expression/node/RelationalNode.js +190 -176
  278. package/lib/esm/expression/node/SymbolNode.js +161 -152
  279. package/lib/esm/expression/operators.js +96 -4
  280. package/lib/esm/expression/parse.js +25 -7
  281. package/lib/esm/expression/transform/std.transform.js +3 -1
  282. package/lib/esm/factoriesAny.js +1 -0
  283. package/lib/esm/factoriesNumber.js +1 -0
  284. package/lib/esm/function/algebra/derivative.js +22 -30
  285. package/lib/esm/function/algebra/leafCount.js +0 -3
  286. package/lib/esm/function/algebra/rationalize.js +83 -114
  287. package/lib/esm/function/algebra/resolve.js +25 -16
  288. package/lib/esm/function/algebra/simplify.js +82 -112
  289. package/lib/esm/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +39 -9
  290. package/lib/esm/function/algebra/simplifyCore.js +192 -91
  291. package/lib/esm/function/algebra/symbolicEqual.js +9 -26
  292. package/lib/esm/function/arithmetic/abs.js +3 -16
  293. package/lib/esm/function/arithmetic/add.js +21 -65
  294. package/lib/esm/function/arithmetic/addScalar.js +11 -5
  295. package/lib/esm/function/arithmetic/cbrt.js +7 -10
  296. package/lib/esm/function/arithmetic/ceil.js +25 -25
  297. package/lib/esm/function/arithmetic/cube.js +5 -9
  298. package/lib/esm/function/arithmetic/divide.js +7 -7
  299. package/lib/esm/function/arithmetic/divideScalar.js +2 -19
  300. package/lib/esm/function/arithmetic/dotDivide.js +22 -64
  301. package/lib/esm/function/arithmetic/dotMultiply.js +16 -60
  302. package/lib/esm/function/arithmetic/dotPow.js +30 -62
  303. package/lib/esm/function/arithmetic/exp.js +8 -11
  304. package/lib/esm/function/arithmetic/expm1.js +10 -9
  305. package/lib/esm/function/arithmetic/fix.js +17 -17
  306. package/lib/esm/function/arithmetic/floor.js +25 -25
  307. package/lib/esm/function/arithmetic/gcd.js +26 -70
  308. package/lib/esm/function/arithmetic/hypot.js +7 -6
  309. package/lib/esm/function/arithmetic/lcm.js +26 -70
  310. package/lib/esm/function/arithmetic/log.js +7 -10
  311. package/lib/esm/function/arithmetic/log10.js +1 -3
  312. package/lib/esm/function/arithmetic/log1p.js +4 -6
  313. package/lib/esm/function/arithmetic/log2.js +1 -3
  314. package/lib/esm/function/arithmetic/mod.js +21 -62
  315. package/lib/esm/function/arithmetic/multiply.js +23 -27
  316. package/lib/esm/function/arithmetic/multiplyScalar.js +2 -13
  317. package/lib/esm/function/arithmetic/norm.js +0 -4
  318. package/lib/esm/function/arithmetic/nthRoot.js +38 -73
  319. package/lib/esm/function/arithmetic/round.js +26 -28
  320. package/lib/esm/function/arithmetic/sign.js +5 -7
  321. package/lib/esm/function/arithmetic/sqrt.js +5 -8
  322. package/lib/esm/function/arithmetic/square.js +6 -9
  323. package/lib/esm/function/arithmetic/subtract.js +31 -95
  324. package/lib/esm/function/arithmetic/unaryMinus.js +6 -16
  325. package/lib/esm/function/arithmetic/unaryPlus.js +2 -4
  326. package/lib/esm/function/bitwise/bitAnd.js +16 -59
  327. package/lib/esm/function/bitwise/bitNot.js +1 -3
  328. package/lib/esm/function/bitwise/bitOr.js +16 -59
  329. package/lib/esm/function/bitwise/bitXor.js +16 -59
  330. package/lib/esm/function/bitwise/leftShift.js +38 -60
  331. package/lib/esm/function/bitwise/rightArithShift.js +38 -60
  332. package/lib/esm/function/bitwise/rightLogShift.js +38 -60
  333. package/lib/esm/function/bitwise/useMatrixForArrayScalar.js +13 -0
  334. package/lib/esm/function/complex/arg.js +1 -3
  335. package/lib/esm/function/complex/conj.js +3 -12
  336. package/lib/esm/function/complex/im.js +4 -15
  337. package/lib/esm/function/complex/re.js +3 -15
  338. package/lib/esm/function/logical/and.js +35 -57
  339. package/lib/esm/function/logical/not.js +3 -6
  340. package/lib/esm/function/logical/or.js +16 -61
  341. package/lib/esm/function/logical/xor.js +16 -61
  342. package/lib/esm/function/matrix/diff.js +2 -7
  343. package/lib/esm/function/matrix/ones.js +2 -1
  344. package/lib/esm/function/matrix/sqrtm.js +3 -2
  345. package/lib/esm/function/matrix/transpose.js +47 -50
  346. package/lib/esm/function/matrix/zeros.js +2 -1
  347. package/lib/esm/function/probability/factorial.js +1 -3
  348. package/lib/esm/function/probability/gamma.js +38 -39
  349. package/lib/esm/function/probability/kldivergence.js +3 -2
  350. package/lib/esm/function/probability/lgamma.js +29 -29
  351. package/lib/esm/function/relational/compare.js +21 -67
  352. package/lib/esm/function/relational/compareNatural.js +54 -49
  353. package/lib/esm/function/relational/compareText.js +10 -42
  354. package/lib/esm/function/relational/compareUnits.js +15 -0
  355. package/lib/esm/function/relational/equal.js +19 -79
  356. package/lib/esm/function/relational/equalScalar.js +6 -9
  357. package/lib/esm/function/relational/larger.js +23 -73
  358. package/lib/esm/function/relational/largerEq.js +23 -73
  359. package/lib/esm/function/relational/smaller.js +23 -73
  360. package/lib/esm/function/relational/smallerEq.js +23 -73
  361. package/lib/esm/function/relational/unequal.js +19 -79
  362. package/lib/esm/function/special/erf.js +1 -3
  363. package/lib/esm/function/statistics/std.js +10 -2
  364. package/lib/esm/function/trigonometry/acos.js +4 -7
  365. package/lib/esm/function/trigonometry/acosh.js +2 -6
  366. package/lib/esm/function/trigonometry/acot.js +4 -7
  367. package/lib/esm/function/trigonometry/acoth.js +4 -7
  368. package/lib/esm/function/trigonometry/acsc.js +4 -7
  369. package/lib/esm/function/trigonometry/acsch.js +4 -7
  370. package/lib/esm/function/trigonometry/asec.js +4 -7
  371. package/lib/esm/function/trigonometry/asech.js +4 -7
  372. package/lib/esm/function/trigonometry/asin.js +4 -8
  373. package/lib/esm/function/trigonometry/asinh.js +4 -8
  374. package/lib/esm/function/trigonometry/atan.js +4 -8
  375. package/lib/esm/function/trigonometry/atan2.js +25 -64
  376. package/lib/esm/function/trigonometry/atanh.js +4 -8
  377. package/lib/esm/function/trigonometry/cos.js +11 -22
  378. package/lib/esm/function/trigonometry/cosh.js +5 -20
  379. package/lib/esm/function/trigonometry/cot.js +10 -20
  380. package/lib/esm/function/trigonometry/coth.js +6 -20
  381. package/lib/esm/function/trigonometry/csc.js +12 -22
  382. package/lib/esm/function/trigonometry/csch.js +6 -20
  383. package/lib/esm/function/trigonometry/sec.js +12 -22
  384. package/lib/esm/function/trigonometry/sech.js +6 -20
  385. package/lib/esm/function/trigonometry/sin.js +11 -23
  386. package/lib/esm/function/trigonometry/sinh.js +5 -21
  387. package/lib/esm/function/trigonometry/tan.js +11 -23
  388. package/lib/esm/function/trigonometry/tanh.js +5 -21
  389. package/lib/esm/function/trigonometry/trigUnit.js +15 -0
  390. package/lib/esm/function/unit/to.js +8 -43
  391. package/lib/esm/function/utils/hasNumericValue.js +2 -0
  392. package/lib/esm/function/utils/isInteger.js +1 -3
  393. package/lib/esm/function/utils/isNegative.js +2 -6
  394. package/lib/esm/function/utils/isNumeric.js +3 -9
  395. package/lib/esm/function/utils/isPositive.js +2 -6
  396. package/lib/esm/function/utils/isPrime.js +1 -3
  397. package/lib/esm/function/utils/isZero.js +2 -6
  398. package/lib/esm/function/utils/numeric.js +11 -4
  399. package/lib/esm/function/utils/typeOf.js +38 -44
  400. package/lib/esm/type/bignumber/function/bignumber.js +1 -3
  401. package/lib/esm/type/boolean.js +1 -3
  402. package/lib/esm/type/chain/Chain.js +23 -3
  403. package/lib/esm/type/complex/Complex.js +4 -0
  404. package/lib/esm/type/complex/function/complex.js +1 -3
  405. package/lib/esm/type/fraction/Fraction.js +4 -0
  406. package/lib/esm/type/fraction/function/fraction.js +1 -3
  407. package/lib/esm/type/matrix/DenseMatrix.js +15 -1
  408. package/lib/esm/type/matrix/SparseMatrix.js +9 -0
  409. package/lib/esm/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +2 -2
  410. package/lib/esm/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +3 -3
  411. package/lib/esm/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +3 -3
  412. package/lib/esm/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +5 -5
  413. package/lib/esm/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +3 -3
  414. package/lib/esm/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +3 -3
  415. package/lib/esm/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +3 -3
  416. package/lib/esm/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +4 -4
  417. package/lib/esm/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +3 -3
  418. package/lib/esm/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +3 -3
  419. package/lib/esm/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +3 -3
  420. package/lib/esm/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +3 -3
  421. package/lib/esm/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +3 -3
  422. package/lib/esm/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +3 -3
  423. package/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js +168 -0
  424. package/lib/esm/type/number.js +1 -3
  425. package/lib/esm/type/string.js +1 -3
  426. package/lib/esm/type/unit/Unit.js +61 -13
  427. package/lib/esm/type/unit/function/createUnit.js +2 -1
  428. package/lib/esm/type/unit/function/unit.js +5 -3
  429. package/lib/esm/utils/is.js +18 -18
  430. package/lib/esm/utils/snapshot.js +22 -48
  431. package/lib/esm/version.js +1 -1
  432. package/package.json +21 -24
  433. package/types/index.d.ts +202 -181
  434. package/types/index.ts +264 -57
  435. package/lib/cjs/utils/polyfills.js +0 -14
  436. package/lib/esm/utils/polyfills.js +0 -12
@@ -9,10 +9,8 @@ var _number = require("../../utils/number.js");
9
9
 
10
10
  var _factory = require("../../utils/factory.js");
11
11
 
12
- var _simplifyConstant = require("./simplify/simplifyConstant.js");
13
-
14
12
  var name = 'rationalize';
15
- var dependencies = ['config', 'typed', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'parse', 'simplifyCore', 'simplify', '?bignumber', '?fraction', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode', 'ParenthesisNode'];
13
+ var dependencies = ['config', 'typed', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'parse', 'simplifyConstant', 'simplifyCore', 'simplify', '?bignumber', '?fraction', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode', 'ParenthesisNode'];
16
14
  var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
17
15
  var config = _ref.config,
18
16
  typed = _ref.typed,
@@ -24,6 +22,7 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
24
22
  divide = _ref.divide,
25
23
  pow = _ref.pow,
26
24
  parse = _ref.parse,
25
+ simplifyConstant = _ref.simplifyConstant,
27
26
  simplifyCore = _ref.simplifyCore,
28
27
  simplify = _ref.simplify,
29
28
  fraction = _ref.fraction,
@@ -39,22 +38,7 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
39
38
  OperatorNode = _ref.OperatorNode,
40
39
  SymbolNode = _ref.SymbolNode,
41
40
  ParenthesisNode = _ref.ParenthesisNode;
42
- var simplifyConstant = (0, _simplifyConstant.createSimplifyConstant)({
43
- typed: typed,
44
- config: config,
45
- mathWithTransform: mathWithTransform,
46
- matrix: matrix,
47
- fraction: fraction,
48
- bignumber: bignumber,
49
- AccessorNode: AccessorNode,
50
- ArrayNode: ArrayNode,
51
- ConstantNode: ConstantNode,
52
- FunctionNode: FunctionNode,
53
- IndexNode: IndexNode,
54
- ObjectNode: ObjectNode,
55
- OperatorNode: OperatorNode,
56
- SymbolNode: SymbolNode
57
- });
41
+
58
42
  /**
59
43
  * Transform a rationalizable expression in a rational fraction.
60
44
  * If rational fraction is one variable polynomial then converts
@@ -108,116 +92,102 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
108
92
  * {Expression Node} node simplified expression
109
93
  *
110
94
  */
95
+ function _rationalize(expr) {
96
+ var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
97
+ var detailed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
98
+ var setRules = rulesRationalize(); // Rules for change polynomial in near canonical form
111
99
 
112
- return typed(name, {
113
- string: function string(expr) {
114
- return this(parse(expr), {}, false);
115
- },
116
- 'string, boolean': function stringBoolean(expr, detailed) {
117
- return this(parse(expr), {}, detailed);
118
- },
119
- 'string, Object': function stringObject(expr, scope) {
120
- return this(parse(expr), scope, false);
121
- },
122
- 'string, Object, boolean': function stringObjectBoolean(expr, scope, detailed) {
123
- return this(parse(expr), scope, detailed);
124
- },
125
- Node: function Node(expr) {
126
- return this(expr, {}, false);
127
- },
128
- 'Node, boolean': function NodeBoolean(expr, detailed) {
129
- return this(expr, {}, detailed);
130
- },
131
- 'Node, Object': function NodeObject(expr, scope) {
132
- return this(expr, scope, false);
133
- },
134
- 'Node, Object, boolean': function NodeObjectBoolean(expr, scope, detailed) {
135
- var setRules = rulesRationalize(); // Rules for change polynomial in near canonical form
136
-
137
- var polyRet = polynomial(expr, scope, true, setRules.firstRules); // Check if expression is a rationalizable polynomial
100
+ var polyRet = polynomial(expr, scope, true, setRules.firstRules); // Check if expression is a rationalizable polynomial
138
101
 
139
- var nVars = polyRet.variables.length;
140
- var noExactFractions = {
141
- exactFractions: false
142
- };
143
- var withExactFractions = {
144
- exactFractions: true
145
- };
146
- expr = polyRet.expression;
147
-
148
- if (nVars >= 1) {
149
- // If expression in not a constant
150
- expr = expandPower(expr); // First expand power of polynomials (cannot be made from rules!)
102
+ var nVars = polyRet.variables.length;
103
+ var noExactFractions = {
104
+ exactFractions: false
105
+ };
106
+ var withExactFractions = {
107
+ exactFractions: true
108
+ };
109
+ expr = polyRet.expression;
151
110
 
152
- var sBefore; // Previous expression
111
+ if (nVars >= 1) {
112
+ // If expression in not a constant
113
+ expr = expandPower(expr); // First expand power of polynomials (cannot be made from rules!)
153
114
 
154
- var rules;
155
- var eDistrDiv = true;
156
- var redoInic = false; // Apply the initial rules, including succ div rules:
115
+ var sBefore; // Previous expression
157
116
 
158
- expr = simplify(expr, setRules.firstRules, {}, noExactFractions);
159
- var s;
117
+ var rules;
118
+ var eDistrDiv = true;
119
+ var redoInic = false; // Apply the initial rules, including succ div rules:
160
120
 
161
- while (true) {
162
- // Alternate applying successive division rules and distr.div.rules
163
- // until there are no more changes:
164
- rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules;
165
- expr = simplify(expr, rules, {}, withExactFractions);
166
- eDistrDiv = !eDistrDiv; // Swap between Distr.Div and Succ. Div. Rules
121
+ expr = simplify(expr, setRules.firstRules, {}, noExactFractions);
122
+ var s;
167
123
 
168
- s = expr.toString();
124
+ while (true) {
125
+ // Alternate applying successive division rules and distr.div.rules
126
+ // until there are no more changes:
127
+ rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules;
128
+ expr = simplify(expr, rules, {}, withExactFractions);
129
+ eDistrDiv = !eDistrDiv; // Swap between Distr.Div and Succ. Div. Rules
169
130
 
170
- if (s === sBefore) {
171
- break; // No changes : end of the loop
172
- }
131
+ s = expr.toString();
173
132
 
174
- redoInic = true;
175
- sBefore = s;
133
+ if (s === sBefore) {
134
+ break; // No changes : end of the loop
176
135
  }
177
136
 
178
- if (redoInic) {
179
- // Apply first rules again without succ div rules (if there are changes)
180
- expr = simplify(expr, setRules.firstRulesAgain, {}, noExactFractions);
181
- } // Apply final rules:
137
+ redoInic = true;
138
+ sBefore = s;
139
+ }
182
140
 
141
+ if (redoInic) {
142
+ // Apply first rules again without succ div rules (if there are changes)
143
+ expr = simplify(expr, setRules.firstRulesAgain, {}, noExactFractions);
144
+ } // Apply final rules:
183
145
 
184
- expr = simplify(expr, setRules.finalRules, {}, noExactFractions);
185
- } // NVars >= 1
186
146
 
147
+ expr = simplify(expr, setRules.finalRules, {}, noExactFractions);
148
+ } // NVars >= 1
187
149
 
188
- var coefficients = [];
189
- var retRationalize = {};
190
150
 
191
- if (expr.type === 'OperatorNode' && expr.isBinary() && expr.op === '/') {
192
- // Separate numerator from denominator
193
- if (nVars === 1) {
194
- expr.args[0] = polyToCanonical(expr.args[0], coefficients);
195
- expr.args[1] = polyToCanonical(expr.args[1]);
196
- }
151
+ var coefficients = [];
152
+ var retRationalize = {};
197
153
 
198
- if (detailed) {
199
- retRationalize.numerator = expr.args[0];
200
- retRationalize.denominator = expr.args[1];
201
- }
202
- } else {
203
- if (nVars === 1) {
204
- expr = polyToCanonical(expr, coefficients);
205
- }
154
+ if (expr.type === 'OperatorNode' && expr.isBinary() && expr.op === '/') {
155
+ // Separate numerator from denominator
156
+ if (nVars === 1) {
157
+ expr.args[0] = polyToCanonical(expr.args[0], coefficients);
158
+ expr.args[1] = polyToCanonical(expr.args[1]);
159
+ }
206
160
 
207
- if (detailed) {
208
- retRationalize.numerator = expr;
209
- retRationalize.denominator = null;
210
- }
211
- } // nVars
161
+ if (detailed) {
162
+ retRationalize.numerator = expr.args[0];
163
+ retRationalize.denominator = expr.args[1];
164
+ }
165
+ } else {
166
+ if (nVars === 1) {
167
+ expr = polyToCanonical(expr, coefficients);
168
+ }
169
+
170
+ if (detailed) {
171
+ retRationalize.numerator = expr;
172
+ retRationalize.denominator = null;
173
+ }
174
+ } // nVars
212
175
 
213
176
 
214
- if (!detailed) return expr;
215
- retRationalize.coefficients = coefficients;
216
- retRationalize.variables = polyRet.variables;
217
- retRationalize.expression = expr;
218
- return retRationalize;
219
- } // ^^^^^^^ end of rationalize ^^^^^^^^
177
+ if (!detailed) return expr;
178
+ retRationalize.coefficients = coefficients;
179
+ retRationalize.variables = polyRet.variables;
180
+ retRationalize.expression = expr;
181
+ return retRationalize;
182
+ }
220
183
 
184
+ return typed(name, {
185
+ Node: _rationalize,
186
+ 'Node, boolean': function NodeBoolean(expr, detailed) {
187
+ return _rationalize(expr, {}, detailed);
188
+ },
189
+ 'Node, Object': _rationalize,
190
+ 'Node, Object, boolean': _rationalize
221
191
  }); // end of typed rationalize
222
192
 
223
193
  /**
@@ -12,9 +12,10 @@ var _is = require("../../utils/is.js");
12
12
  var _factory = require("../../utils/factory.js");
13
13
 
14
14
  var name = 'resolve';
15
- var dependencies = ['parse', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];
15
+ var dependencies = ['typed', 'parse', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];
16
16
  var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
17
- var parse = _ref.parse,
17
+ var typed = _ref.typed,
18
+ parse = _ref.parse,
18
19
  ConstantNode = _ref.ConstantNode,
19
20
  FunctionNode = _ref.FunctionNode,
20
21
  OperatorNode = _ref.OperatorNode,
@@ -29,9 +30,9 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
29
30
  *
30
31
  * Examples:
31
32
  *
32
- * math.resolve('x + y', {x:1, y:2}) // Node {1 + 2}
33
- * math.resolve(math.parse('x+y'), {x:1, y:2}) // Node {1 + 2}
34
- * math.simplify('x+y', {x:2, y:'x+x'}).toString() // "6"
33
+ * math.resolve('x + y', {x:1, y:2}) // Node '1 + 2'
34
+ * math.resolve(math.parse('x+y'), {x:1, y:2}) // Node '1 + 2'
35
+ * math.simplify('x+y', {x:2, y: math.parse('x+x')}).toString() // "6"
35
36
  *
36
37
  * See also:
37
38
  *
@@ -46,7 +47,7 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
46
47
  * If there is a cyclic dependency among the variables in `scope`,
47
48
  * resolution is impossible and a ReferenceError is thrown.
48
49
  */
49
- function resolve(node, scope) {
50
+ function _resolve(node, scope) {
50
51
  var within = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Set();
51
52
 
52
53
  // note `within`:
@@ -56,10 +57,6 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
56
57
  return node;
57
58
  }
58
59
 
59
- if (!(0, _map.isMap)(scope)) {
60
- scope = (0, _map.createMap)(scope);
61
- }
62
-
63
60
  if ((0, _is.isSymbolNode)(node)) {
64
61
  if (within.has(node.name)) {
65
62
  var variables = Array.from(within).join(', ');
@@ -71,7 +68,7 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
71
68
  if ((0, _is.isNode)(value)) {
72
69
  var nextWithin = new Set(within);
73
70
  nextWithin.add(node.name);
74
- return resolve(value, scope, nextWithin);
71
+ return _resolve(value, scope, nextWithin);
75
72
  } else if (typeof value === 'number') {
76
73
  return parse(String(value));
77
74
  } else if (value !== undefined) {
@@ -81,14 +78,14 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
81
78
  }
82
79
  } else if ((0, _is.isOperatorNode)(node)) {
83
80
  var args = node.args.map(function (arg) {
84
- return resolve(arg, scope, within);
81
+ return _resolve(arg, scope, within);
85
82
  });
86
83
  return new OperatorNode(node.op, node.fn, args, node.implicit);
87
84
  } else if ((0, _is.isParenthesisNode)(node)) {
88
- return new ParenthesisNode(resolve(node.content, scope, within));
85
+ return new ParenthesisNode(_resolve(node.content, scope, within));
89
86
  } else if ((0, _is.isFunctionNode)(node)) {
90
87
  var _args = node.args.map(function (arg) {
91
- return resolve(arg, scope, within);
88
+ return _resolve(arg, scope, within);
92
89
  });
93
90
 
94
91
  return new FunctionNode(node.name, _args);
@@ -97,10 +94,50 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
97
94
 
98
95
 
99
96
  return node.map(function (child) {
100
- return resolve(child, scope, within);
97
+ return _resolve(child, scope, within);
101
98
  });
102
99
  }
103
100
 
104
- return resolve;
101
+ return typed('resolve', {
102
+ Node: _resolve,
103
+ 'Node, Map | null | undefined': _resolve,
104
+ 'Node, Object': function NodeObject(n, scope) {
105
+ return _resolve(n, (0, _map.createMap)(scope));
106
+ },
107
+ // For arrays and matrices, we map `self` rather than `_resolve`
108
+ // because resolve is fairly expensive anyway, and this way
109
+ // we get nice error messages if one entry in the array has wrong type.
110
+ 'Array | Matrix': typed.referToSelf(function (self) {
111
+ return function (A) {
112
+ return A.map(function (n) {
113
+ return self(n);
114
+ });
115
+ };
116
+ }),
117
+ 'Array | Matrix, null | undefined': typed.referToSelf(function (self) {
118
+ return function (A) {
119
+ return A.map(function (n) {
120
+ return self(n);
121
+ });
122
+ };
123
+ }),
124
+ 'Array, Object': typed.referTo('Array,Map', function (selfAM) {
125
+ return function (A, scope) {
126
+ return selfAM(A, (0, _map.createMap)(scope));
127
+ };
128
+ }),
129
+ 'Matrix, Object': typed.referTo('Matrix,Map', function (selfMM) {
130
+ return function (A, scope) {
131
+ return selfMM(A, (0, _map.createMap)(scope));
132
+ };
133
+ }),
134
+ 'Array | Matrix, Map': typed.referToSelf(function (self) {
135
+ return function (A, scope) {
136
+ return A.map(function (n) {
137
+ return self(n, scope);
138
+ });
139
+ };
140
+ })
141
+ });
105
142
  });
106
143
  exports.createResolve = createResolve;
@@ -17,7 +17,7 @@ var _object = require("../../../utils/object.js");
17
17
 
18
18
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
19
 
20
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
21
 
22
22
  var name = 'simplifyUtil';
23
23
  var dependencies = ['FunctionNode', 'OperatorNode', 'SymbolNode'];
@@ -15,14 +15,12 @@ var _factory = require("../../utils/factory.js");
15
15
 
16
16
  var _util = require("./simplify/util.js");
17
17
 
18
- var _simplifyConstant = require("./simplify/simplifyConstant.js");
19
-
20
18
  var _object = require("../../utils/object.js");
21
19
 
22
20
  var _map = require("../../utils/map.js");
23
21
 
24
22
  var name = 'simplify';
25
- var dependencies = ['config', 'typed', 'parse', 'add', 'subtract', 'multiply', 'divide', 'pow', 'isZero', 'equal', 'resolve', 'simplifyCore', '?fraction', '?bignumber', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];
23
+ var dependencies = ['config', 'typed', 'parse', 'add', 'subtract', 'multiply', 'divide', 'pow', 'isZero', 'equal', 'resolve', 'simplifyConstant', 'simplifyCore', '?fraction', '?bignumber', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];
26
24
  var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
27
25
  var config = _ref.config,
28
26
  typed = _ref.typed,
@@ -35,6 +33,7 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
35
33
  isZero = _ref.isZero,
36
34
  equal = _ref.equal,
37
35
  resolve = _ref.resolve,
36
+ simplifyConstant = _ref.simplifyConstant,
38
37
  simplifyCore = _ref.simplifyCore,
39
38
  fraction = _ref.fraction,
40
39
  bignumber = _ref.bignumber,
@@ -49,22 +48,6 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
49
48
  OperatorNode = _ref.OperatorNode,
50
49
  ParenthesisNode = _ref.ParenthesisNode,
51
50
  SymbolNode = _ref.SymbolNode;
52
- var simplifyConstant = (0, _simplifyConstant.createSimplifyConstant)({
53
- typed: typed,
54
- config: config,
55
- mathWithTransform: mathWithTransform,
56
- matrix: matrix,
57
- fraction: fraction,
58
- bignumber: bignumber,
59
- AccessorNode: AccessorNode,
60
- ArrayNode: ArrayNode,
61
- ConstantNode: ConstantNode,
62
- FunctionNode: FunctionNode,
63
- IndexNode: IndexNode,
64
- ObjectNode: ObjectNode,
65
- OperatorNode: OperatorNode,
66
- SymbolNode: SymbolNode
67
- });
68
51
 
69
52
  var _createUtil = (0, _util.createUtil)({
70
53
  FunctionNode: FunctionNode,
@@ -110,7 +93,10 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
110
93
  * - 'v' - matches any Node that is not a ConstantNode
111
94
  *
112
95
  * The default list of rules is exposed on the function as `simplify.rules`
113
- * and can be used as a basis to built a set of custom rules.
96
+ * and can be used as a basis to built a set of custom rules. Note that since
97
+ * the `simplifyCore` function is in the default list of rules, by default
98
+ * simplify will convert any function calls in the expression that have
99
+ * operator equivalents to their operator forms.
114
100
  *
115
101
  * To specify a rule as a string, separate the left and right pattern by '->'
116
102
  * When specifying a rule as an object, the following keys are meaningful:
@@ -187,100 +173,27 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
187
173
  */
188
174
 
189
175
 
176
+ typed.addConversion({
177
+ from: 'Object',
178
+ to: 'Map',
179
+ convert: _map.createMap
180
+ });
190
181
  var simplify = typed('simplify', {
191
- string: function string(expr) {
192
- return this(parse(expr), this.rules, (0, _map.createEmptyMap)(), {});
193
- },
194
- 'string, Map | Object': function stringMapObject(expr, scope) {
195
- return this(parse(expr), this.rules, scope, {});
196
- },
197
- 'string, Map | Object, Object': function stringMapObjectObject(expr, scope, options) {
198
- return this(parse(expr), this.rules, scope, options);
199
- },
200
- 'string, Array': function stringArray(expr, rules) {
201
- return this(parse(expr), rules, (0, _map.createEmptyMap)(), {});
202
- },
203
- 'string, Array, Map | Object': function stringArrayMapObject(expr, rules, scope) {
204
- return this(parse(expr), rules, scope, {});
205
- },
206
- 'string, Array, Map | Object, Object': function stringArrayMapObjectObject(expr, rules, scope, options) {
207
- return this(parse(expr), rules, scope, options);
208
- },
209
- 'Node, Map | Object': function NodeMapObject(expr, scope) {
210
- return this(expr, this.rules, scope, {});
211
- },
212
- 'Node, Map | Object, Object': function NodeMapObjectObject(expr, scope, options) {
213
- return this(expr, this.rules, scope, options);
214
- },
215
- Node: function Node(expr) {
216
- return this(expr, this.rules, (0, _map.createEmptyMap)(), {});
217
- },
218
- 'Node, Array': function NodeArray(expr, rules) {
219
- return this(expr, rules, (0, _map.createEmptyMap)(), {});
220
- },
221
- 'Node, Array, Map | Object': function NodeArrayMapObject(expr, rules, scope) {
222
- return this(expr, rules, scope, {});
182
+ Node: _simplify,
183
+ 'Node, Map': function NodeMap(expr, scope) {
184
+ return _simplify(expr, false, scope);
223
185
  },
224
- 'Node, Array, Object, Object': function NodeArrayObjectObject(expr, rules, scope, options) {
225
- return this(expr, rules, (0, _map.createMap)(scope), options);
186
+ 'Node, Map, Object': function NodeMapObject(expr, scope, options) {
187
+ return _simplify(expr, false, scope, options);
226
188
  },
227
- 'Node, Array, Map, Object': function NodeArrayMapObject(expr, rules, scope, options) {
228
- var debug = options.consoleDebug;
229
- rules = _buildRules(rules, options.context);
230
- var res = resolve(expr, scope);
231
- res = removeParens(res);
232
- var visited = {};
233
- var str = res.toString({
234
- parenthesis: 'all'
235
- });
236
-
237
- while (!visited[str]) {
238
- visited[str] = true;
239
- _lastsym = 0; // counter for placeholder symbols
240
-
241
- var laststr = str;
242
- if (debug) console.log('Working on: ', str);
243
-
244
- for (var i = 0; i < rules.length; i++) {
245
- var rulestr = '';
246
-
247
- if (typeof rules[i] === 'function') {
248
- res = rules[i](res, options);
249
- if (debug) rulestr = rules[i].name;
250
- } else {
251
- flatten(res, options.context);
252
- res = applyRule(res, rules[i], options.context);
253
-
254
- if (debug) {
255
- rulestr = "".concat(rules[i].l.toString(), " -> ").concat(rules[i].r.toString());
256
- }
257
- }
258
-
259
- if (debug) {
260
- var newstr = res.toString({
261
- parenthesis: 'all'
262
- });
263
-
264
- if (newstr !== laststr) {
265
- console.log('Applying', rulestr, 'produced', newstr);
266
- laststr = newstr;
267
- }
268
- }
269
- /* Use left-heavy binary tree internally,
270
- * since custom rule functions may expect it
271
- */
272
-
273
-
274
- unflattenl(res, options.context);
275
- }
276
-
277
- str = res.toString({
278
- parenthesis: 'all'
279
- });
280
- }
281
-
282
- return res;
283
- }
189
+ 'Node, Array': _simplify,
190
+ 'Node, Array, Map': _simplify,
191
+ 'Node, Array, Map, Object': _simplify
192
+ });
193
+ typed.removeConversion({
194
+ from: 'Object',
195
+ to: 'Map',
196
+ convert: _map.createMap
284
197
  });
285
198
  simplify.defaultContext = defaultContext;
286
199
  simplify.realContext = realContext;
@@ -294,8 +207,8 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
294
207
 
295
208
 
296
209
  var SUPPORTED_CONSTANTS = {
297
- true: true,
298
- false: true,
210
+ "true": true,
211
+ "false": true,
299
212
  e: true,
300
213
  i: true,
301
214
  Infinity: true,
@@ -739,7 +652,7 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
739
652
  for (var i = 0; i < rules.length; i++) {
740
653
  var rule = rules[i];
741
654
  var newRule = void 0;
742
- var ruleType = (0, _typeof2.default)(rule);
655
+ var ruleType = (0, _typeof2["default"])(rule);
743
656
 
744
657
  switch (ruleType) {
745
658
  case 'string':
@@ -775,6 +688,66 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
775
688
  return new SymbolNode('_p' + _lastsym++);
776
689
  }
777
690
 
691
+ function _simplify(expr, rules) {
692
+ var scope = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (0, _map.createEmptyMap)();
693
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
694
+ var debug = options.consoleDebug;
695
+ rules = _buildRules(rules || simplify.rules, options.context);
696
+ var res = resolve(expr, scope);
697
+ res = removeParens(res);
698
+ var visited = {};
699
+ var str = res.toString({
700
+ parenthesis: 'all'
701
+ });
702
+
703
+ while (!visited[str]) {
704
+ visited[str] = true;
705
+ _lastsym = 0; // counter for placeholder symbols
706
+
707
+ var laststr = str;
708
+ if (debug) console.log('Working on: ', str);
709
+
710
+ for (var i = 0; i < rules.length; i++) {
711
+ var rulestr = '';
712
+
713
+ if (typeof rules[i] === 'function') {
714
+ res = rules[i](res, options);
715
+ if (debug) rulestr = rules[i].name;
716
+ } else {
717
+ flatten(res, options.context);
718
+ res = applyRule(res, rules[i], options.context);
719
+
720
+ if (debug) {
721
+ rulestr = "".concat(rules[i].l.toString(), " -> ").concat(rules[i].r.toString());
722
+ }
723
+ }
724
+
725
+ if (debug) {
726
+ var newstr = res.toString({
727
+ parenthesis: 'all'
728
+ });
729
+
730
+ if (newstr !== laststr) {
731
+ console.log('Applying', rulestr, 'produced', newstr);
732
+ laststr = newstr;
733
+ }
734
+ }
735
+ /* Use left-heavy binary tree internally,
736
+ * since custom rule functions may expect it
737
+ */
738
+
739
+
740
+ unflattenl(res, options.context);
741
+ }
742
+
743
+ str = res.toString({
744
+ parenthesis: 'all'
745
+ });
746
+ }
747
+
748
+ return res;
749
+ }
750
+
778
751
  function mapRule(nodes, rule, context) {
779
752
  var resNodes = nodes;
780
753