mathjs 10.6.3 → 11.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
  });