mathjs 10.6.3 → 11.0.1

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 (451) 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 +25 -33
  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 +90 -115
  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 +14 -32
  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 +34 -28
  90. package/lib/cjs/function/arithmetic/floor.js +57 -47
  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 +2 -2
  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 +83 -95
  104. package/lib/cjs/function/arithmetic/nthRoots.js +2 -2
  105. package/lib/cjs/function/arithmetic/round.js +56 -42
  106. package/lib/cjs/function/arithmetic/sign.js +14 -10
  107. package/lib/cjs/function/arithmetic/sqrt.js +5 -9
  108. package/lib/cjs/function/arithmetic/square.js +6 -10
  109. package/lib/cjs/function/arithmetic/subtract.js +44 -100
  110. package/lib/cjs/function/arithmetic/unaryMinus.js +14 -16
  111. package/lib/cjs/function/arithmetic/unaryPlus.js +6 -4
  112. package/lib/cjs/function/bitwise/bitAnd.js +17 -61
  113. package/lib/cjs/function/bitwise/bitNot.js +6 -4
  114. package/lib/cjs/function/bitwise/bitOr.js +16 -60
  115. package/lib/cjs/function/bitwise/bitXor.js +17 -61
  116. package/lib/cjs/function/bitwise/leftShift.js +69 -82
  117. package/lib/cjs/function/bitwise/rightArithShift.js +69 -82
  118. package/lib/cjs/function/bitwise/rightLogShift.js +69 -82
  119. package/lib/cjs/function/bitwise/useMatrixForArrayScalar.js +36 -0
  120. package/lib/cjs/function/complex/arg.js +5 -3
  121. package/lib/cjs/function/complex/conj.js +6 -7
  122. package/lib/cjs/function/complex/im.js +7 -8
  123. package/lib/cjs/function/complex/re.js +6 -10
  124. package/lib/cjs/function/geometry/distance.js +2 -2
  125. package/lib/cjs/function/logical/and.js +74 -80
  126. package/lib/cjs/function/logical/not.js +13 -6
  127. package/lib/cjs/function/logical/or.js +21 -63
  128. package/lib/cjs/function/logical/xor.js +21 -63
  129. package/lib/cjs/function/matrix/diff.js +11 -8
  130. package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
  131. package/lib/cjs/function/matrix/fft.js +2 -2
  132. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  133. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  134. package/lib/cjs/function/matrix/ones.js +2 -1
  135. package/lib/cjs/function/matrix/rotate.js +5 -5
  136. package/lib/cjs/function/matrix/sqrtm.js +3 -2
  137. package/lib/cjs/function/matrix/transpose.js +47 -48
  138. package/lib/cjs/function/matrix/zeros.js +2 -1
  139. package/lib/cjs/function/probability/factorial.js +5 -3
  140. package/lib/cjs/function/probability/gamma.js +38 -40
  141. package/lib/cjs/function/probability/kldivergence.js +5 -2
  142. package/lib/cjs/function/probability/lgamma.js +30 -30
  143. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  144. package/lib/cjs/function/relational/compare.js +21 -67
  145. package/lib/cjs/function/relational/compareNatural.js +59 -54
  146. package/lib/cjs/function/relational/compareText.js +10 -43
  147. package/lib/cjs/function/relational/compareUnits.js +24 -0
  148. package/lib/cjs/function/relational/equal.js +19 -80
  149. package/lib/cjs/function/relational/equalScalar.js +7 -9
  150. package/lib/cjs/function/relational/larger.js +21 -67
  151. package/lib/cjs/function/relational/largerEq.js +21 -67
  152. package/lib/cjs/function/relational/smaller.js +21 -67
  153. package/lib/cjs/function/relational/smallerEq.js +21 -67
  154. package/lib/cjs/function/relational/unequal.js +19 -80
  155. package/lib/cjs/function/special/erf.js +5 -3
  156. package/lib/cjs/function/statistics/std.js +11 -2
  157. package/lib/cjs/function/string/format.js +2 -2
  158. package/lib/cjs/function/string/hex.js +1 -2
  159. package/lib/cjs/function/trigonometry/acos.js +4 -8
  160. package/lib/cjs/function/trigonometry/acosh.js +2 -7
  161. package/lib/cjs/function/trigonometry/acot.js +6 -11
  162. package/lib/cjs/function/trigonometry/acoth.js +4 -8
  163. package/lib/cjs/function/trigonometry/acsc.js +6 -11
  164. package/lib/cjs/function/trigonometry/acsch.js +4 -8
  165. package/lib/cjs/function/trigonometry/asec.js +6 -10
  166. package/lib/cjs/function/trigonometry/asech.js +4 -8
  167. package/lib/cjs/function/trigonometry/asin.js +5 -10
  168. package/lib/cjs/function/trigonometry/asinh.js +4 -9
  169. package/lib/cjs/function/trigonometry/atan.js +5 -11
  170. package/lib/cjs/function/trigonometry/atan2.js +25 -63
  171. package/lib/cjs/function/trigonometry/atanh.js +4 -9
  172. package/lib/cjs/function/trigonometry/cos.js +11 -20
  173. package/lib/cjs/function/trigonometry/cosh.js +5 -19
  174. package/lib/cjs/function/trigonometry/cot.js +9 -15
  175. package/lib/cjs/function/trigonometry/coth.js +4 -15
  176. package/lib/cjs/function/trigonometry/csc.js +11 -17
  177. package/lib/cjs/function/trigonometry/csch.js +4 -15
  178. package/lib/cjs/function/trigonometry/sec.js +11 -17
  179. package/lib/cjs/function/trigonometry/sech.js +4 -15
  180. package/lib/cjs/function/trigonometry/sin.js +11 -21
  181. package/lib/cjs/function/trigonometry/sinh.js +5 -20
  182. package/lib/cjs/function/trigonometry/tan.js +11 -21
  183. package/lib/cjs/function/trigonometry/tanh.js +5 -20
  184. package/lib/cjs/function/trigonometry/trigUnit.js +24 -0
  185. package/lib/cjs/function/unit/to.js +7 -41
  186. package/lib/cjs/function/utils/clone.js +1 -1
  187. package/lib/cjs/function/utils/hasNumericValue.js +5 -1
  188. package/lib/cjs/function/utils/isInteger.js +6 -4
  189. package/lib/cjs/function/utils/isNaN.js +1 -1
  190. package/lib/cjs/function/utils/isNegative.js +11 -7
  191. package/lib/cjs/function/utils/isNumeric.js +6 -4
  192. package/lib/cjs/function/utils/isPositive.js +11 -7
  193. package/lib/cjs/function/utils/isPrime.js +5 -3
  194. package/lib/cjs/function/utils/isZero.js +21 -17
  195. package/lib/cjs/function/utils/numeric.js +11 -4
  196. package/lib/cjs/function/utils/typeOf.js +38 -44
  197. package/lib/cjs/header.js +2 -2
  198. package/lib/cjs/plain/bignumber/index.js +1 -1
  199. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  200. package/lib/cjs/type/bignumber/function/bignumber.js +6 -4
  201. package/lib/cjs/type/boolean.js +7 -5
  202. package/lib/cjs/type/chain/Chain.js +23 -3
  203. package/lib/cjs/type/complex/Complex.js +18 -14
  204. package/lib/cjs/type/complex/function/complex.js +6 -4
  205. package/lib/cjs/type/fraction/Fraction.js +10 -6
  206. package/lib/cjs/type/fraction/function/fraction.js +6 -4
  207. package/lib/cjs/type/matrix/DenseMatrix.js +21 -6
  208. package/lib/cjs/type/matrix/SparseMatrix.js +12 -2
  209. package/lib/cjs/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +4 -4
  210. package/lib/cjs/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +5 -5
  211. package/lib/cjs/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +5 -5
  212. package/lib/cjs/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +7 -7
  213. package/lib/cjs/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +5 -5
  214. package/lib/cjs/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +5 -5
  215. package/lib/cjs/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +5 -5
  216. package/lib/cjs/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +6 -6
  217. package/lib/cjs/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +5 -5
  218. package/lib/cjs/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +5 -5
  219. package/lib/cjs/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +5 -5
  220. package/lib/cjs/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +5 -5
  221. package/lib/cjs/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +5 -5
  222. package/lib/cjs/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +5 -5
  223. package/lib/cjs/type/matrix/utils/matrixAlgorithmSuite.js +238 -0
  224. package/lib/cjs/type/number.js +6 -4
  225. package/lib/cjs/type/string.js +7 -5
  226. package/lib/cjs/type/unit/Unit.js +69 -21
  227. package/lib/cjs/type/unit/function/createUnit.js +2 -1
  228. package/lib/cjs/type/unit/function/unit.js +9 -3
  229. package/lib/cjs/utils/customs.js +2 -2
  230. package/lib/cjs/utils/emitter.js +1 -1
  231. package/lib/cjs/utils/function.js +2 -2
  232. package/lib/cjs/utils/is.js +27 -25
  233. package/lib/cjs/utils/latex.js +3 -3
  234. package/lib/cjs/utils/lruQueue.js +1 -1
  235. package/lib/cjs/utils/map.js +3 -3
  236. package/lib/cjs/utils/object.js +2 -2
  237. package/lib/cjs/utils/snapshot.js +30 -57
  238. package/lib/cjs/utils/string.js +3 -3
  239. package/lib/cjs/version.js +1 -1
  240. package/lib/esm/core/create.js +2 -1
  241. package/lib/esm/core/function/import.js +2 -12
  242. package/lib/esm/core/function/typed.js +47 -11
  243. package/lib/esm/entry/dependenciesAny/dependenciesChainClass.generated.js +2 -0
  244. package/lib/esm/entry/dependenciesAny/dependenciesKldivergence.generated.js +2 -0
  245. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
  246. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +2 -0
  247. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
  248. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +34 -0
  249. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +4 -0
  250. package/lib/esm/entry/dependenciesAny/dependenciesSqrtm.generated.js +2 -0
  251. package/lib/esm/entry/dependenciesAny/dependenciesStd.generated.js +2 -0
  252. package/lib/esm/entry/dependenciesAny/dependenciesStdTransform.generated.js +2 -0
  253. package/lib/esm/entry/dependenciesAny.generated.js +1 -0
  254. package/lib/esm/entry/dependenciesNumber/dependenciesChainClass.generated.js +2 -0
  255. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
  256. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +2 -0
  257. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
  258. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +30 -0
  259. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +4 -0
  260. package/lib/esm/entry/dependenciesNumber/dependenciesStd.generated.js +2 -0
  261. package/lib/esm/entry/dependenciesNumber/dependenciesStdTransform.generated.js +2 -0
  262. package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
  263. package/lib/esm/entry/impureFunctionsAny.generated.js +73 -48
  264. package/lib/esm/entry/impureFunctionsNumber.generated.js +81 -58
  265. package/lib/esm/entry/pureFunctionsAny.generated.js +39 -36
  266. package/lib/esm/entry/pureFunctionsNumber.generated.js +14 -13
  267. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
  268. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js +8 -0
  269. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  270. package/lib/esm/expression/node/AccessorNode.js +158 -153
  271. package/lib/esm/expression/node/ArrayNode.js +162 -154
  272. package/lib/esm/expression/node/AssignmentNode.js +257 -245
  273. package/lib/esm/expression/node/BlockNode.js +177 -163
  274. package/lib/esm/expression/node/ConditionalNode.js +197 -174
  275. package/lib/esm/expression/node/ConstantNode.js +171 -163
  276. package/lib/esm/expression/node/FunctionAssignmentNode.js +205 -180
  277. package/lib/esm/expression/node/FunctionNode.js +407 -407
  278. package/lib/esm/expression/node/IndexNode.js +206 -198
  279. package/lib/esm/expression/node/Node.js +325 -325
  280. package/lib/esm/expression/node/ObjectNode.js +166 -157
  281. package/lib/esm/expression/node/OperatorNode.js +414 -377
  282. package/lib/esm/expression/node/ParenthesisNode.js +146 -138
  283. package/lib/esm/expression/node/RangeNode.js +221 -212
  284. package/lib/esm/expression/node/RelationalNode.js +190 -176
  285. package/lib/esm/expression/node/SymbolNode.js +161 -152
  286. package/lib/esm/expression/operators.js +96 -4
  287. package/lib/esm/expression/parse.js +25 -7
  288. package/lib/esm/expression/transform/std.transform.js +3 -1
  289. package/lib/esm/factoriesAny.js +1 -0
  290. package/lib/esm/factoriesNumber.js +1 -0
  291. package/lib/esm/function/algebra/derivative.js +25 -33
  292. package/lib/esm/function/algebra/leafCount.js +0 -3
  293. package/lib/esm/function/algebra/rationalize.js +83 -114
  294. package/lib/esm/function/algebra/resolve.js +25 -16
  295. package/lib/esm/function/algebra/simplify.js +85 -113
  296. package/lib/esm/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +39 -9
  297. package/lib/esm/function/algebra/simplifyCore.js +192 -91
  298. package/lib/esm/function/algebra/symbolicEqual.js +14 -32
  299. package/lib/esm/function/arithmetic/abs.js +3 -16
  300. package/lib/esm/function/arithmetic/add.js +21 -65
  301. package/lib/esm/function/arithmetic/addScalar.js +11 -5
  302. package/lib/esm/function/arithmetic/cbrt.js +7 -10
  303. package/lib/esm/function/arithmetic/ceil.js +25 -25
  304. package/lib/esm/function/arithmetic/cube.js +5 -9
  305. package/lib/esm/function/arithmetic/divide.js +7 -7
  306. package/lib/esm/function/arithmetic/divideScalar.js +2 -19
  307. package/lib/esm/function/arithmetic/dotDivide.js +22 -64
  308. package/lib/esm/function/arithmetic/dotMultiply.js +16 -60
  309. package/lib/esm/function/arithmetic/dotPow.js +30 -62
  310. package/lib/esm/function/arithmetic/exp.js +8 -11
  311. package/lib/esm/function/arithmetic/expm1.js +10 -9
  312. package/lib/esm/function/arithmetic/fix.js +18 -18
  313. package/lib/esm/function/arithmetic/floor.js +26 -26
  314. package/lib/esm/function/arithmetic/gcd.js +26 -70
  315. package/lib/esm/function/arithmetic/hypot.js +7 -6
  316. package/lib/esm/function/arithmetic/invmod.js +1 -1
  317. package/lib/esm/function/arithmetic/lcm.js +26 -70
  318. package/lib/esm/function/arithmetic/log.js +7 -10
  319. package/lib/esm/function/arithmetic/log10.js +1 -3
  320. package/lib/esm/function/arithmetic/log1p.js +4 -6
  321. package/lib/esm/function/arithmetic/log2.js +1 -3
  322. package/lib/esm/function/arithmetic/mod.js +21 -62
  323. package/lib/esm/function/arithmetic/multiply.js +23 -27
  324. package/lib/esm/function/arithmetic/multiplyScalar.js +2 -13
  325. package/lib/esm/function/arithmetic/norm.js +0 -4
  326. package/lib/esm/function/arithmetic/nthRoot.js +41 -76
  327. package/lib/esm/function/arithmetic/nthRoots.js +2 -2
  328. package/lib/esm/function/arithmetic/round.js +26 -28
  329. package/lib/esm/function/arithmetic/sign.js +5 -7
  330. package/lib/esm/function/arithmetic/sqrt.js +5 -8
  331. package/lib/esm/function/arithmetic/square.js +6 -9
  332. package/lib/esm/function/arithmetic/subtract.js +31 -95
  333. package/lib/esm/function/arithmetic/unaryMinus.js +6 -16
  334. package/lib/esm/function/arithmetic/unaryPlus.js +2 -4
  335. package/lib/esm/function/bitwise/bitAnd.js +16 -59
  336. package/lib/esm/function/bitwise/bitNot.js +2 -4
  337. package/lib/esm/function/bitwise/bitOr.js +16 -59
  338. package/lib/esm/function/bitwise/bitXor.js +16 -59
  339. package/lib/esm/function/bitwise/leftShift.js +39 -61
  340. package/lib/esm/function/bitwise/rightArithShift.js +39 -61
  341. package/lib/esm/function/bitwise/rightLogShift.js +39 -61
  342. package/lib/esm/function/bitwise/useMatrixForArrayScalar.js +13 -0
  343. package/lib/esm/function/complex/arg.js +1 -3
  344. package/lib/esm/function/complex/conj.js +3 -12
  345. package/lib/esm/function/complex/im.js +4 -15
  346. package/lib/esm/function/complex/re.js +3 -15
  347. package/lib/esm/function/geometry/distance.js +2 -2
  348. package/lib/esm/function/logical/and.js +35 -57
  349. package/lib/esm/function/logical/not.js +3 -6
  350. package/lib/esm/function/logical/or.js +16 -61
  351. package/lib/esm/function/logical/xor.js +16 -61
  352. package/lib/esm/function/matrix/diff.js +3 -8
  353. package/lib/esm/function/matrix/ones.js +2 -1
  354. package/lib/esm/function/matrix/rotate.js +5 -5
  355. package/lib/esm/function/matrix/sqrtm.js +3 -2
  356. package/lib/esm/function/matrix/transpose.js +47 -50
  357. package/lib/esm/function/matrix/zeros.js +2 -1
  358. package/lib/esm/function/probability/factorial.js +1 -3
  359. package/lib/esm/function/probability/gamma.js +38 -39
  360. package/lib/esm/function/probability/kldivergence.js +3 -2
  361. package/lib/esm/function/probability/lgamma.js +29 -29
  362. package/lib/esm/function/relational/compare.js +21 -67
  363. package/lib/esm/function/relational/compareNatural.js +54 -49
  364. package/lib/esm/function/relational/compareText.js +10 -42
  365. package/lib/esm/function/relational/compareUnits.js +15 -0
  366. package/lib/esm/function/relational/equal.js +19 -79
  367. package/lib/esm/function/relational/equalScalar.js +6 -9
  368. package/lib/esm/function/relational/larger.js +23 -73
  369. package/lib/esm/function/relational/largerEq.js +23 -73
  370. package/lib/esm/function/relational/smaller.js +23 -73
  371. package/lib/esm/function/relational/smallerEq.js +23 -73
  372. package/lib/esm/function/relational/unequal.js +19 -79
  373. package/lib/esm/function/special/erf.js +1 -3
  374. package/lib/esm/function/statistics/std.js +10 -2
  375. package/lib/esm/function/string/format.js +2 -2
  376. package/lib/esm/function/string/hex.js +1 -2
  377. package/lib/esm/function/trigonometry/acos.js +4 -7
  378. package/lib/esm/function/trigonometry/acosh.js +2 -6
  379. package/lib/esm/function/trigonometry/acot.js +6 -10
  380. package/lib/esm/function/trigonometry/acoth.js +4 -7
  381. package/lib/esm/function/trigonometry/acsc.js +6 -10
  382. package/lib/esm/function/trigonometry/acsch.js +4 -7
  383. package/lib/esm/function/trigonometry/asec.js +6 -9
  384. package/lib/esm/function/trigonometry/asech.js +4 -7
  385. package/lib/esm/function/trigonometry/asin.js +5 -9
  386. package/lib/esm/function/trigonometry/asinh.js +4 -8
  387. package/lib/esm/function/trigonometry/atan.js +5 -10
  388. package/lib/esm/function/trigonometry/atan2.js +26 -65
  389. package/lib/esm/function/trigonometry/atanh.js +4 -8
  390. package/lib/esm/function/trigonometry/cos.js +11 -22
  391. package/lib/esm/function/trigonometry/cosh.js +5 -20
  392. package/lib/esm/function/trigonometry/cot.js +10 -20
  393. package/lib/esm/function/trigonometry/coth.js +6 -20
  394. package/lib/esm/function/trigonometry/csc.js +12 -22
  395. package/lib/esm/function/trigonometry/csch.js +6 -20
  396. package/lib/esm/function/trigonometry/sec.js +12 -22
  397. package/lib/esm/function/trigonometry/sech.js +6 -20
  398. package/lib/esm/function/trigonometry/sin.js +11 -23
  399. package/lib/esm/function/trigonometry/sinh.js +5 -21
  400. package/lib/esm/function/trigonometry/tan.js +11 -23
  401. package/lib/esm/function/trigonometry/tanh.js +5 -21
  402. package/lib/esm/function/trigonometry/trigUnit.js +15 -0
  403. package/lib/esm/function/unit/to.js +8 -43
  404. package/lib/esm/function/utils/clone.js +1 -1
  405. package/lib/esm/function/utils/hasNumericValue.js +3 -1
  406. package/lib/esm/function/utils/isInteger.js +2 -4
  407. package/lib/esm/function/utils/isNaN.js +1 -1
  408. package/lib/esm/function/utils/isNegative.js +3 -7
  409. package/lib/esm/function/utils/isNumeric.js +4 -10
  410. package/lib/esm/function/utils/isPositive.js +3 -7
  411. package/lib/esm/function/utils/isPrime.js +1 -3
  412. package/lib/esm/function/utils/isZero.js +13 -17
  413. package/lib/esm/function/utils/numeric.js +11 -4
  414. package/lib/esm/function/utils/typeOf.js +38 -44
  415. package/lib/esm/type/bignumber/function/bignumber.js +1 -3
  416. package/lib/esm/type/boolean.js +1 -3
  417. package/lib/esm/type/chain/Chain.js +23 -3
  418. package/lib/esm/type/complex/Complex.js +4 -0
  419. package/lib/esm/type/complex/function/complex.js +1 -3
  420. package/lib/esm/type/fraction/Fraction.js +4 -0
  421. package/lib/esm/type/fraction/function/fraction.js +1 -3
  422. package/lib/esm/type/matrix/DenseMatrix.js +15 -1
  423. package/lib/esm/type/matrix/SparseMatrix.js +9 -0
  424. package/lib/esm/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +2 -2
  425. package/lib/esm/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +3 -3
  426. package/lib/esm/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +3 -3
  427. package/lib/esm/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +5 -5
  428. package/lib/esm/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +3 -3
  429. package/lib/esm/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +3 -3
  430. package/lib/esm/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +3 -3
  431. package/lib/esm/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +4 -4
  432. package/lib/esm/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +3 -3
  433. package/lib/esm/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +3 -3
  434. package/lib/esm/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +3 -3
  435. package/lib/esm/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +3 -3
  436. package/lib/esm/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +3 -3
  437. package/lib/esm/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +3 -3
  438. package/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js +168 -0
  439. package/lib/esm/type/number.js +1 -3
  440. package/lib/esm/type/string.js +1 -3
  441. package/lib/esm/type/unit/Unit.js +61 -13
  442. package/lib/esm/type/unit/function/createUnit.js +2 -1
  443. package/lib/esm/type/unit/function/unit.js +5 -3
  444. package/lib/esm/utils/is.js +18 -18
  445. package/lib/esm/utils/snapshot.js +22 -48
  446. package/lib/esm/version.js +1 -1
  447. package/package.json +21 -24
  448. package/types/index.d.ts +215 -183
  449. package/types/index.ts +358 -144
  450. package/lib/cjs/utils/polyfills.js +0 -14
  451. package/lib/esm/utils/polyfills.js +0 -12
@@ -27,7 +27,7 @@ var _constants = require("../../utils/bignumber/constants.js");
27
27
 
28
28
  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; }
29
29
 
30
- 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; }
30
+ 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; }
31
31
 
32
32
  var name = 'Unit';
33
33
  var dependencies = ['?on', 'config', 'addScalar', 'subtract', 'multiplyScalar', 'divideScalar', 'pow', 'abs', 'fix', 'round', 'equal', 'isNumeric', 'format', 'number', 'Complex', 'BigNumber', 'Fraction'];
@@ -88,12 +88,7 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
88
88
  this.units = u.units;
89
89
  this.dimensions = u.dimensions;
90
90
  } else {
91
- this.units = [{
92
- unit: UNIT_NONE,
93
- prefix: PREFIXES.NONE,
94
- // link to a list with supported prefixes
95
- power: 0
96
- }];
91
+ this.units = [];
97
92
  this.dimensions = [];
98
93
 
99
94
  for (var i = 0; i < BASE_DIMENSIONS.length; i++) {
@@ -115,6 +110,10 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
115
110
  */
116
111
 
117
112
 
113
+ Object.defineProperty(Unit, 'name', {
114
+ value: 'Unit'
115
+ });
116
+ Unit.prototype.constructor = Unit;
118
117
  Unit.prototype.type = 'Unit';
119
118
  Unit.prototype.isUnit = true; // private variables and functions for the Unit parser
120
119
 
@@ -477,6 +476,17 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
477
476
 
478
477
  return unit;
479
478
  };
479
+ /**
480
+ * Return the type of the value of this unit
481
+ *
482
+ * @memberof Unit
483
+ * @ return {string} type of the value of the unit
484
+ */
485
+
486
+
487
+ Unit.prototype.valueType = function () {
488
+ return (0, _is.typeOf)(this.value);
489
+ };
480
490
  /**
481
491
  * Return whether the unit is derived (such as m/s, or cm^2, but not N)
482
492
  * @memberof Unit
@@ -666,15 +676,16 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
666
676
  return this.equalBase(other) && equal(this.value, other.value);
667
677
  };
668
678
  /**
669
- * Multiply this unit with another one
679
+ * Multiply this unit with another one or with a scalar
670
680
  * @memberof Unit
671
681
  * @param {Unit} other
672
682
  * @return {Unit} product of this unit and the other unit
673
683
  */
674
684
 
675
685
 
676
- Unit.prototype.multiply = function (other) {
686
+ Unit.prototype.multiply = function (_other) {
677
687
  var res = this.clone();
688
+ var other = (0, _is.isUnit)(_other) ? _other : new Unit(_other);
678
689
 
679
690
  for (var i = 0; i < BASE_DIMENSIONS.length; i++) {
680
691
  // Dimensions arrays may be of different lengths. Default to 0.
@@ -698,19 +709,35 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
698
709
  res.value = null;
699
710
  }
700
711
 
701
- res.skipAutomaticSimplification = false;
712
+ if ((0, _is.isUnit)(_other)) {
713
+ res.skipAutomaticSimplification = false;
714
+ }
715
+
702
716
  return getNumericIfUnitless(res);
703
717
  };
718
+ /**
719
+ * Divide a number by this unit
720
+ *
721
+ * @memberof Unit
722
+ * @param {numeric} numerator
723
+ * @param {unit} result of dividing numerator by this unit
724
+ */
725
+
726
+
727
+ Unit.prototype.divideInto = function (numerator) {
728
+ return new Unit(numerator).divide(this);
729
+ };
704
730
  /**
705
731
  * Divide this unit by another one
706
732
  * @memberof Unit
707
- * @param {Unit} other
733
+ * @param {Unit | numeric} other
708
734
  * @return {Unit} result of dividing this unit by the other unit
709
735
  */
710
736
 
711
737
 
712
- Unit.prototype.divide = function (other) {
738
+ Unit.prototype.divide = function (_other) {
713
739
  var res = this.clone();
740
+ var other = (0, _is.isUnit)(_other) ? _other : new Unit(_other);
714
741
 
715
742
  for (var i = 0; i < BASE_DIMENSIONS.length; i++) {
716
743
  // Dimensions arrays may be of different lengths. Default to 0.
@@ -736,7 +763,10 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
736
763
  res.value = null;
737
764
  }
738
765
 
739
- res.skipAutomaticSimplification = false;
766
+ if ((0, _is.isUnit)(_other)) {
767
+ res.skipAutomaticSimplification = false;
768
+ }
769
+
740
770
  return getNumericIfUnitless(res);
741
771
  };
742
772
  /**
@@ -805,7 +835,7 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
805
835
  // To give the correct, but unexpected, results for units with an offset.
806
836
  // For example, abs(-283.15 degC) = -263.15 degC !!!
807
837
  // We must take the offset into consideration here
808
- var convert = Unit._getNumberConverter((0, _is.typeOf)(ret.value)); // convert to Fraction or BigNumber if needed
838
+ var convert = ret._numberConverter(); // convert to Fraction or BigNumber if needed
809
839
 
810
840
 
811
841
  var unitValue = convert(ret.units[0].unit.value);
@@ -1939,9 +1969,9 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
1939
1969
  }
1940
1970
  }
1941
1971
  };
1942
- PREFIXES.SHORTLONG = (0, _extends2.default)({}, PREFIXES.SHORT, PREFIXES.LONG);
1943
- PREFIXES.BINARY_SHORT = (0, _extends2.default)({}, PREFIXES.BINARY_SHORT_SI, PREFIXES.BINARY_SHORT_IEC);
1944
- PREFIXES.BINARY_LONG = (0, _extends2.default)({}, PREFIXES.BINARY_LONG_SI, PREFIXES.BINARY_LONG_IEC);
1972
+ PREFIXES.SHORTLONG = (0, _extends2["default"])({}, PREFIXES.SHORT, PREFIXES.LONG);
1973
+ PREFIXES.BINARY_SHORT = (0, _extends2["default"])({}, PREFIXES.BINARY_SHORT_SI, PREFIXES.BINARY_SHORT_IEC);
1974
+ PREFIXES.BINARY_LONG = (0, _extends2["default"])({}, PREFIXES.BINARY_LONG_SI, PREFIXES.BINARY_LONG_IEC);
1945
1975
  /* Internally, each unit is represented by a value and a dimension array. The elements of the dimensions array have the following meaning:
1946
1976
  * Index Dimension
1947
1977
  * ----- ---------
@@ -2125,7 +2155,7 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
2125
2155
  value: 1,
2126
2156
  offset: 0
2127
2157
  },
2128
- in: {
2158
+ "in": {
2129
2159
  name: 'in',
2130
2160
  base: BASE_UNITS.LENGTH,
2131
2161
  prefixes: PREFIXES.NONE,
@@ -3389,7 +3419,7 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
3389
3419
  electronvolts: 'electronvolt',
3390
3420
  moles: 'mole',
3391
3421
  bit: 'bits',
3392
- byte: 'bytes'
3422
+ "byte": 'bytes'
3393
3423
  };
3394
3424
  /**
3395
3425
  * Calculate the values for the angle units.
@@ -3647,6 +3677,23 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
3647
3677
  return x;
3648
3678
  }
3649
3679
  };
3680
+ /**
3681
+ * Retrieve the right converter function corresponding with this unit's
3682
+ * value
3683
+ *
3684
+ * @memberof Unit
3685
+ * @return {Function}
3686
+ */
3687
+
3688
+ Unit.prototype._numberConverter = function () {
3689
+ var convert = Unit.typeConverters[this.valueType()];
3690
+
3691
+ if (convert) {
3692
+ return convert;
3693
+ }
3694
+
3695
+ throw new TypeError('Unsupported Unit value type "' + this.valueType() + '"');
3696
+ };
3650
3697
  /**
3651
3698
  * Retrieve the right convertor function corresponding with the type
3652
3699
  * of provided exampleValue.
@@ -3656,6 +3703,7 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
3656
3703
  * @return {Function}
3657
3704
  */
3658
3705
 
3706
+
3659
3707
  Unit._getNumberConverter = function (type) {
3660
3708
  if (!Unit.typeConverters[type]) {
3661
3709
  throw new TypeError('Unsupported type "' + type + '"');
@@ -3733,7 +3781,7 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
3733
3781
 
3734
3782
 
3735
3783
  Unit.createUnit = function (obj, options) {
3736
- if ((0, _typeof2.default)(obj) !== 'object') {
3784
+ if ((0, _typeof2["default"])(obj) !== 'object') {
3737
3785
  throw new TypeError("createUnit expects first parameter to be of type 'Object'");
3738
3786
  } // Remove all units and aliases we are overriding
3739
3787
 
@@ -3823,7 +3871,7 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
3823
3871
  if (obj !== '') {
3824
3872
  definition = obj;
3825
3873
  }
3826
- } else if ((0, _typeof2.default)(obj) === 'object') {
3874
+ } else if ((0, _typeof2["default"])(obj) === 'object') {
3827
3875
  definition = obj.definition;
3828
3876
  prefixes = obj.prefixes;
3829
3877
  offset = obj.offset;
@@ -40,9 +40,10 @@ var createCreateUnit = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
40
40
  * math.createUnit('foo')
41
41
  * math.createUnit('knot', {definition: '0.514444444 m/s', aliases: ['knots', 'kt', 'kts']})
42
42
  * math.createUnit('mph', '1 mile/hour')
43
+ * math.createUnit('km', math.unit(1000, 'm'))
43
44
  *
44
45
  * @param {string} name The name of the new unit. Must be unique. Example: 'knot'
45
- * @param {string, Unit} definition Definition of the unit in terms of existing units. For example, '0.514444444 m / s'.
46
+ * @param {string, UnitDefinition, Unit} definition Definition of the unit in terms of existing units. For example, '0.514444444 m / s'.
46
47
  * @param {Object} options (optional) An object containing any of the following properties:
47
48
  * - `prefixes {string}` "none", "short", "long", "binary_short", or "binary_long". The default is "none".
48
49
  * - `aliases {Array}` Array of strings. Example: ['knots', 'kt', 'kts']
@@ -55,9 +55,15 @@ var createUnitFunction = /* #__PURE__ */(0, _factory.factory)(name, dependencies
55
55
  'number | BigNumber | Fraction | Complex, string': function numberBigNumberFractionComplexString(value, unit) {
56
56
  return new Unit(value, unit);
57
57
  },
58
- 'Array | Matrix': function ArrayMatrix(x) {
59
- return (0, _collection.deepMap)(x, this);
60
- }
58
+ 'number | BigNumber | Fraction': function numberBigNumberFraction(value) {
59
+ // dimensionless
60
+ return new Unit(value);
61
+ },
62
+ 'Array | Matrix': typed.referToSelf(function (self) {
63
+ return function (x) {
64
+ return (0, _collection.deepMap)(x, self);
65
+ };
66
+ })
61
67
  });
62
68
  });
63
69
  exports.createUnitFunction = createUnitFunction;
@@ -78,7 +78,7 @@ function hasSafeProperty(object, prop) {
78
78
 
79
79
 
80
80
  function isSafeProperty(object, prop) {
81
- if (!object || (0, _typeof2.default)(object) !== 'object') {
81
+ if (!object || (0, _typeof2["default"])(object) !== 'object') {
82
82
  return false;
83
83
  } // SAFE: whitelisted
84
84
  // e.g length
@@ -171,7 +171,7 @@ function isSafeMethod(object, method) {
171
171
  }
172
172
 
173
173
  function isPlainObject(object) {
174
- return (0, _typeof2.default)(object) === 'object' && object && object.constructor === Object;
174
+ return (0, _typeof2["default"])(object) === 'object' && object && object.constructor === Object;
175
175
  }
176
176
 
177
177
  var safeNativeProperties = {
@@ -16,7 +16,7 @@ var _tinyEmitter = _interopRequireDefault(require("tiny-emitter"));
16
16
  */
17
17
  function mixin(obj) {
18
18
  // create event emitter
19
- var emitter = new _tinyEmitter.default(); // bind methods to obj (we don't want to expose the emitter.e Array...)
19
+ var emitter = new _tinyEmitter["default"](); // bind methods to obj (we don't want to expose the emitter.e Array...)
20
20
 
21
21
  obj.on = emitter.on.bind(emitter);
22
22
  obj.off = emitter.off.bind(emitter);
@@ -38,7 +38,7 @@ function memoize(fn) {
38
38
  limit = limit == null ? Number.POSITIVE_INFINITY : limit;
39
39
  hasher = hasher == null ? JSON.stringify : hasher;
40
40
  return function memoize() {
41
- if ((0, _typeof2.default)(memoize.cache) !== 'object') {
41
+ if ((0, _typeof2["default"])(memoize.cache) !== 'object') {
42
42
  memoize.cache = {
43
43
  values: new Map(),
44
44
  lru: (0, _lruQueue.lruQueue)(limit || Number.POSITIVE_INFINITY)
@@ -60,7 +60,7 @@ function memoize(fn) {
60
60
 
61
61
  var newVal = fn.apply(fn, args);
62
62
  memoize.cache.values.set(hash, newVal);
63
- memoize.cache.values.delete(memoize.cache.lru.hit(hash));
63
+ memoize.cache.values["delete"](memoize.cache.lru.hit(hash));
64
64
  return newVal;
65
65
  };
66
66
  }
@@ -43,6 +43,7 @@ exports.isString = isString;
43
43
  exports.isSymbolNode = isSymbolNode;
44
44
  exports.isUndefined = isUndefined;
45
45
  exports.isUnit = isUnit;
46
+ exports.rule2Node = rule2Node;
46
47
  exports.typeOf = typeOf;
47
48
 
48
49
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
@@ -65,11 +66,11 @@ function isNumber(x) {
65
66
  }
66
67
 
67
68
  function isBigNumber(x) {
68
- if (!x || (0, _typeof2.default)(x) !== 'object' || typeof x.constructor !== 'function') {
69
+ if (!x || (0, _typeof2["default"])(x) !== 'object' || typeof x.constructor !== 'function') {
69
70
  return false;
70
71
  }
71
72
 
72
- if (x.isBigNumber === true && (0, _typeof2.default)(x.constructor.prototype) === 'object' && x.constructor.prototype.isBigNumber === true) {
73
+ if (x.isBigNumber === true && (0, _typeof2["default"])(x.constructor.prototype) === 'object' && x.constructor.prototype.isBigNumber === true) {
73
74
  return true;
74
75
  }
75
76
 
@@ -81,11 +82,11 @@ function isBigNumber(x) {
81
82
  }
82
83
 
83
84
  function isComplex(x) {
84
- return x && (0, _typeof2.default)(x) === 'object' && Object.getPrototypeOf(x).isComplex === true || false;
85
+ return x && (0, _typeof2["default"])(x) === 'object' && Object.getPrototypeOf(x).isComplex === true || false;
85
86
  }
86
87
 
87
88
  function isFraction(x) {
88
- return x && (0, _typeof2.default)(x) === 'object' && Object.getPrototypeOf(x).isFraction === true || false;
89
+ return x && (0, _typeof2["default"])(x) === 'object' && Object.getPrototypeOf(x).isFraction === true || false;
89
90
  }
90
91
 
91
92
  function isUnit(x) {
@@ -154,7 +155,7 @@ function isRegExp(x) {
154
155
  }
155
156
 
156
157
  function isObject(x) {
157
- return !!(x && (0, _typeof2.default)(x) === 'object' && x.constructor === Object && !isComplex(x) && !isFraction(x));
158
+ return !!(x && (0, _typeof2["default"])(x) === 'object' && x.constructor === Object && !isComplex(x) && !isFraction(x));
158
159
  }
159
160
 
160
161
  function isNull(x) {
@@ -188,6 +189,21 @@ function isConditionalNode(x) {
188
189
  function isConstantNode(x) {
189
190
  return x && x.isConstantNode === true && x.constructor.prototype.isNode === true || false;
190
191
  }
192
+ /* Very specialized: returns true for those nodes which in the numerator of
193
+ a fraction means that the division in that fraction has precedence over implicit
194
+ multiplication, e.g. -2/3 x parses as (-2/3) x and 3/4 x parses as (3/4) x but
195
+ 6!/8 x parses as 6! / (8x). It is located here because it is shared between
196
+ parse.js and OperatorNode.js (for parsing and printing, respectively).
197
+
198
+ This should *not* be exported from mathjs, unlike most of the tests here.
199
+ Its name does not start with 'is' to prevent utils/snapshot.js from thinking
200
+ it should be exported.
201
+ */
202
+
203
+
204
+ function rule2Node(node) {
205
+ return isConstantNode(node) || isOperatorNode(node) && node.args.length === 1 && isConstantNode(node.args[0]) && '-+~'.includes(node.op);
206
+ }
191
207
 
192
208
  function isFunctionAssignmentNode(x) {
193
209
  return x && x.isFunctionAssignmentNode === true && x.constructor.prototype.isNode === true || false;
@@ -230,29 +246,15 @@ function isChain(x) {
230
246
  }
231
247
 
232
248
  function typeOf(x) {
233
- var t = (0, _typeof2.default)(x);
249
+ var t = (0, _typeof2["default"])(x);
234
250
 
235
251
  if (t === 'object') {
236
- // JavaScript types
237
252
  if (x === null) return 'null';
238
- if (Array.isArray(x)) return 'Array';
239
- if (x instanceof Date) return 'Date';
240
- if (x instanceof RegExp) return 'RegExp'; // math.js types
241
-
242
- if (isBigNumber(x)) return 'BigNumber';
243
- if (isComplex(x)) return 'Complex';
244
- if (isFraction(x)) return 'Fraction';
245
- if (isMatrix(x)) return 'Matrix';
246
- if (isUnit(x)) return 'Unit';
247
- if (isIndex(x)) return 'Index';
248
- if (isRange(x)) return 'Range';
249
- if (isResultSet(x)) return 'ResultSet';
250
- if (isNode(x)) return x.type;
251
- if (isChain(x)) return 'Chain';
252
- if (isHelp(x)) return 'Help';
253
- return 'Object';
253
+ if (isBigNumber(x)) return 'BigNumber'; // Special: weird mashup with Decimal
254
+
255
+ if (x.constructor && x.constructor.name) return x.constructor.name;
256
+ return 'Object'; // just in case
254
257
  }
255
258
 
256
- if (t === 'function') return 'Function';
257
- return t; // can be 'string', 'number', 'boolean', ...
259
+ return t; // can be 'string', 'number', 'boolean', 'function', 'bigint', ...
258
260
  }
@@ -73,8 +73,8 @@ var latexSymbols = {
73
73
  Omega: '\\Omega',
74
74
  omega: '\\omega',
75
75
  // logic
76
- true: '\\mathrm{True}',
77
- false: '\\mathrm{False}',
76
+ "true": '\\mathrm{True}',
77
+ "false": '\\mathrm{False}',
78
78
  // other
79
79
  i: 'i',
80
80
  // TODO use \i ??
@@ -481,7 +481,7 @@ var latexUnits = {
481
481
  };
482
482
 
483
483
  function escapeLatex(string) {
484
- return (0, _escapeLatex.default)(string, {
484
+ return (0, _escapeLatex["default"])(string, {
485
485
  preserveFormatting: true
486
486
  });
487
487
  } // @param {string} name
@@ -59,7 +59,7 @@ function lruQueue(limit) {
59
59
 
60
60
  return undefined;
61
61
  },
62
- delete: del,
62
+ "delete": del,
63
63
  clear: function clear() {
64
64
  size = index = 0;
65
65
  base = 1;
@@ -20,7 +20,7 @@ var _customs = require("./customs.js");
20
20
 
21
21
  var _is = require("./is.js");
22
22
 
23
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
23
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
24
24
 
25
25
  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); }
26
26
 
@@ -36,11 +36,11 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
36
36
  */
37
37
  var ObjectWrappingMap = /*#__PURE__*/function () {
38
38
  function ObjectWrappingMap(object) {
39
- (0, _classCallCheck2.default)(this, ObjectWrappingMap);
39
+ (0, _classCallCheck2["default"])(this, ObjectWrappingMap);
40
40
  this.wrappedObject = object;
41
41
  }
42
42
 
43
- (0, _createClass2.default)(ObjectWrappingMap, [{
43
+ (0, _createClass2["default"])(ObjectWrappingMap, [{
44
44
  key: "keys",
45
45
  value: function keys() {
46
46
  return Object.keys(this.wrappedObject);
@@ -38,7 +38,7 @@ var _is = require("./is.js");
38
38
  * @return {*} clone
39
39
  */
40
40
  function clone(x) {
41
- var type = (0, _typeof2.default)(x); // immutable primitive types
41
+ var type = (0, _typeof2["default"])(x); // immutable primitive types
42
42
 
43
43
  if (type === 'number' || type === 'string' || type === 'boolean' || x === null || x === undefined) {
44
44
  return x;
@@ -213,7 +213,7 @@ function _deepFlatten(nestedObject, flattenedObject) {
213
213
  if (hasOwnProperty(nestedObject, prop)) {
214
214
  var value = nestedObject[prop];
215
215
 
216
- if ((0, _typeof2.default)(value) === 'object' && value !== null) {
216
+ if ((0, _typeof2["default"])(value) === 'object' && value !== null) {
217
217
  _deepFlatten(value, flattenedObject);
218
218
  } else {
219
219
  flattenedObject[prop] = value;
@@ -2,19 +2,17 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _typeof3 = require("@babel/runtime/helpers/typeof");
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
10
  exports.createSnapshotFromFactories = createSnapshotFromFactories;
11
11
  exports.validateBundle = validateBundle;
12
- exports.validateTypeOf = validateTypeOf;
12
+ exports.validateTypeOf = void 0;
13
13
 
14
14
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
15
 
16
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
17
-
18
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
17
 
20
18
  var _assert = _interopRequireDefault(require("assert"));
@@ -27,11 +25,14 @@ var _string = require("./string.js");
27
25
 
28
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
27
 
30
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
29
 
32
30
  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; }
33
31
 
34
- 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; }
32
+ 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; }
33
+
34
+ var validateTypeOf = allIsFunctions.typeOf;
35
+ exports.validateTypeOf = validateTypeOf;
35
36
 
36
37
  function validateBundle(expectedBundleStructure, bundle) {
37
38
  var originalWarn = console.warn;
@@ -101,7 +102,7 @@ function validateBundle(expectedBundleStructure, bundle) {
101
102
  message = _issues$.message;
102
103
  console.warn("".concat(issues.length, " bundle issues found"));
103
104
 
104
- _assert.default.strictEqual(actualType, expectedType, message);
105
+ _assert["default"].strictEqual(actualType, expectedType, message);
105
106
  }
106
107
  } finally {
107
108
  console.warn = originalWarn;
@@ -128,21 +129,21 @@ function createSnapshotFromFactories(factories) {
128
129
  var factory = factories[factoryName];
129
130
  var name = factory.fn;
130
131
  var isTransformFunction = factory.meta && factory.meta.isTransformFunction;
131
- var isClass = !isLowerCase(name[0]) && validateTypeOf(math[name]) === 'Function';
132
+ var isClass = !isLowerCase(name[0]) && validateTypeOf(math[name]) === 'function';
132
133
  var dependenciesName = factory.fn + (isTransformFunction ? 'Transform' : '') + 'Dependencies';
133
- allFactoryFunctions[factoryName] = 'Function';
134
+ allFactoryFunctions[factoryName] = 'function';
134
135
  allFunctionsConstantsClasses[name] = validateTypeOf(math[name]);
135
136
  allDependencyCollections[dependenciesName] = 'Object';
136
137
 
137
138
  if (isTransformFunction) {
138
- allTransformFunctions[name] = 'Function';
139
+ allTransformFunctions[name] = 'function';
139
140
  }
140
141
 
141
142
  if (isClass) {
142
143
  if ((0, _string.endsWith)(name, 'Node')) {
143
- allNodeClasses[name] = 'Function';
144
+ allNodeClasses[name] = 'function';
144
145
  } else {
145
- allClasses[name] = 'Function';
146
+ allClasses[name] = 'function';
146
147
  }
147
148
  } else {
148
149
  allFunctionsConstants[name] = validateTypeOf(math[name]);
@@ -162,37 +163,37 @@ function createSnapshotFromFactories(factories) {
162
163
  var allTypeChecks = {};
163
164
  Object.keys(allIsFunctions).forEach(function (name) {
164
165
  if (name.indexOf('is') === 0) {
165
- allTypeChecks[name] = 'Function';
166
+ allTypeChecks[name] = 'function';
166
167
  }
167
168
  });
168
169
  var allErrorClasses = {
169
- ArgumentsError: 'Function',
170
- DimensionError: 'Function',
171
- IndexError: 'Function'
170
+ ArgumentsError: 'function',
171
+ DimensionError: 'function',
172
+ IndexError: 'function'
172
173
  };
173
174
 
174
175
  var expectedInstanceStructure = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, allFunctionsConstantsClasses), {}, {
175
- on: 'Function',
176
- off: 'Function',
177
- once: 'Function',
178
- emit: 'Function',
179
- import: 'Function',
180
- config: 'Function',
181
- create: 'Function',
182
- factory: 'Function'
176
+ on: 'function',
177
+ off: 'function',
178
+ once: 'function',
179
+ emit: 'function',
180
+ "import": 'function',
181
+ config: 'function',
182
+ create: 'function',
183
+ factory: 'function'
183
184
  }, allTypeChecks), allErrorClasses), {}, {
184
185
  expression: {
185
186
  transform: _objectSpread({}, allTransformFunctions),
186
187
  mathWithTransform: _objectSpread(_objectSpread({}, exclude(allFunctionsConstants, ['chain'])), {}, {
187
- config: 'Function'
188
+ config: 'function'
188
189
  })
189
190
  }
190
191
  });
191
192
 
192
193
  var expectedES6Structure = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, exclude(allFunctionsConstantsClasses, ['E', 'false', 'Infinity', 'NaN', 'null', 'PI', 'true'])), {}, {
193
- create: 'Function',
194
- config: 'Function',
195
- factory: 'Function',
194
+ create: 'function',
195
+ config: 'function',
196
+ factory: 'function',
196
197
  _true: 'boolean',
197
198
  _false: 'boolean',
198
199
  _null: 'null',
@@ -208,34 +209,6 @@ function createSnapshotFromFactories(factories) {
208
209
  };
209
210
  }
210
211
 
211
- function validateTypeOf(x) {
212
- if (x && x.type === 'Unit') {
213
- return 'Unit';
214
- }
215
-
216
- if (x && x.type === 'Complex') {
217
- return 'Complex';
218
- }
219
-
220
- if (Array.isArray(x)) {
221
- return 'Array';
222
- }
223
-
224
- if (x === null) {
225
- return 'null';
226
- }
227
-
228
- if (typeof x === 'function') {
229
- return 'Function';
230
- }
231
-
232
- if ((0, _typeof2.default)(x) === 'object') {
233
- return 'Object';
234
- }
235
-
236
- return (0, _typeof2.default)(x);
237
- }
238
-
239
212
  function traverse(obj) {
240
213
  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (value, path) {};
241
214
  var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
@@ -283,7 +256,7 @@ function get(object, path) {
283
256
 
284
257
 
285
258
  function exclude(object, excludedProperties) {
286
- var strippedObject = (0, _extends2.default)({}, object);
259
+ var strippedObject = (0, _extends2["default"])({}, object);
287
260
  excludedProperties.forEach(function (excludedProperty) {
288
261
  delete strippedObject[excludedProperty];
289
262
  });