mathjs 10.6.4 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (454) hide show
  1. package/HISTORY.md +79 -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/construction/index.js +1 -1
  39. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +8 -5
  40. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyConstant.js +15 -0
  41. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  42. package/lib/cjs/expression/node/AccessorNode.js +216 -173
  43. package/lib/cjs/expression/node/ArrayNode.js +206 -160
  44. package/lib/cjs/expression/node/AssignmentNode.js +321 -270
  45. package/lib/cjs/expression/node/BlockNode.js +223 -172
  46. package/lib/cjs/expression/node/ConditionalNode.js +253 -193
  47. package/lib/cjs/expression/node/ConstantNode.js +216 -171
  48. package/lib/cjs/expression/node/FunctionAssignmentNode.js +258 -196
  49. package/lib/cjs/expression/node/FunctionNode.js +456 -416
  50. package/lib/cjs/expression/node/IndexNode.js +256 -210
  51. package/lib/cjs/expression/node/Node.js +411 -378
  52. package/lib/cjs/expression/node/ObjectNode.js +223 -178
  53. package/lib/cjs/expression/node/OperatorNode.js +474 -397
  54. package/lib/cjs/expression/node/ParenthesisNode.js +189 -143
  55. package/lib/cjs/expression/node/RangeNode.js +272 -224
  56. package/lib/cjs/expression/node/RelationalNode.js +246 -195
  57. package/lib/cjs/expression/node/SymbolNode.js +219 -172
  58. package/lib/cjs/expression/node/utils/access.js +1 -1
  59. package/lib/cjs/expression/node/utils/assign.js +1 -1
  60. package/lib/cjs/expression/operators.js +117 -23
  61. package/lib/cjs/expression/parse.js +37 -19
  62. package/lib/cjs/expression/transform/std.transform.js +3 -1
  63. package/lib/cjs/factoriesAny.js +8 -0
  64. package/lib/cjs/factoriesNumber.js +10 -1
  65. package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
  66. package/lib/cjs/function/algebra/derivative.js +25 -33
  67. package/lib/cjs/function/algebra/leafCount.js +0 -3
  68. package/lib/cjs/function/algebra/rationalize.js +78 -108
  69. package/lib/cjs/function/algebra/resolve.js +53 -16
  70. package/lib/cjs/function/algebra/simplify/util.js +1 -1
  71. package/lib/cjs/function/algebra/simplify.js +90 -115
  72. package/lib/cjs/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +44 -10
  73. package/lib/cjs/function/algebra/simplifyCore.js +196 -93
  74. package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
  75. package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
  76. package/lib/cjs/function/algebra/symbolicEqual.js +14 -32
  77. package/lib/cjs/function/arithmetic/abs.js +7 -14
  78. package/lib/cjs/function/arithmetic/add.js +26 -70
  79. package/lib/cjs/function/arithmetic/addScalar.js +17 -9
  80. package/lib/cjs/function/arithmetic/cbrt.js +7 -11
  81. package/lib/cjs/function/arithmetic/ceil.js +50 -40
  82. package/lib/cjs/function/arithmetic/cube.js +5 -10
  83. package/lib/cjs/function/arithmetic/divide.js +7 -7
  84. package/lib/cjs/function/arithmetic/divideScalar.js +4 -18
  85. package/lib/cjs/function/arithmetic/dotDivide.js +22 -65
  86. package/lib/cjs/function/arithmetic/dotMultiply.js +16 -61
  87. package/lib/cjs/function/arithmetic/dotPow.js +30 -63
  88. package/lib/cjs/function/arithmetic/exp.js +8 -12
  89. package/lib/cjs/function/arithmetic/expm1.js +10 -10
  90. package/lib/cjs/function/arithmetic/fix.js +34 -28
  91. package/lib/cjs/function/arithmetic/floor.js +51 -41
  92. package/lib/cjs/function/arithmetic/gcd.js +27 -68
  93. package/lib/cjs/function/arithmetic/hypot.js +9 -5
  94. package/lib/cjs/function/arithmetic/invmod.js +2 -2
  95. package/lib/cjs/function/arithmetic/lcm.js +27 -68
  96. package/lib/cjs/function/arithmetic/log.js +10 -12
  97. package/lib/cjs/function/arithmetic/log10.js +5 -3
  98. package/lib/cjs/function/arithmetic/log1p.js +11 -7
  99. package/lib/cjs/function/arithmetic/log2.js +5 -3
  100. package/lib/cjs/function/arithmetic/mod.js +22 -64
  101. package/lib/cjs/function/arithmetic/multiply.js +40 -35
  102. package/lib/cjs/function/arithmetic/multiplyScalar.js +2 -9
  103. package/lib/cjs/function/arithmetic/norm.js +1 -5
  104. package/lib/cjs/function/arithmetic/nthRoot.js +83 -95
  105. package/lib/cjs/function/arithmetic/nthRoots.js +2 -2
  106. package/lib/cjs/function/arithmetic/round.js +56 -42
  107. package/lib/cjs/function/arithmetic/sign.js +14 -10
  108. package/lib/cjs/function/arithmetic/sqrt.js +5 -9
  109. package/lib/cjs/function/arithmetic/square.js +6 -10
  110. package/lib/cjs/function/arithmetic/subtract.js +44 -100
  111. package/lib/cjs/function/arithmetic/unaryMinus.js +14 -16
  112. package/lib/cjs/function/arithmetic/unaryPlus.js +6 -4
  113. package/lib/cjs/function/bitwise/bitAnd.js +17 -61
  114. package/lib/cjs/function/bitwise/bitNot.js +6 -4
  115. package/lib/cjs/function/bitwise/bitOr.js +16 -60
  116. package/lib/cjs/function/bitwise/bitXor.js +17 -61
  117. package/lib/cjs/function/bitwise/leftShift.js +69 -82
  118. package/lib/cjs/function/bitwise/rightArithShift.js +69 -82
  119. package/lib/cjs/function/bitwise/rightLogShift.js +69 -82
  120. package/lib/cjs/function/bitwise/useMatrixForArrayScalar.js +36 -0
  121. package/lib/cjs/function/complex/arg.js +5 -3
  122. package/lib/cjs/function/complex/conj.js +6 -7
  123. package/lib/cjs/function/complex/im.js +7 -8
  124. package/lib/cjs/function/complex/re.js +6 -10
  125. package/lib/cjs/function/geometry/distance.js +2 -2
  126. package/lib/cjs/function/logical/and.js +74 -80
  127. package/lib/cjs/function/logical/not.js +13 -6
  128. package/lib/cjs/function/logical/or.js +21 -63
  129. package/lib/cjs/function/logical/xor.js +21 -63
  130. package/lib/cjs/function/matrix/diff.js +11 -8
  131. package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
  132. package/lib/cjs/function/matrix/fft.js +2 -2
  133. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  134. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  135. package/lib/cjs/function/matrix/ones.js +2 -1
  136. package/lib/cjs/function/matrix/rotate.js +5 -5
  137. package/lib/cjs/function/matrix/sqrtm.js +3 -2
  138. package/lib/cjs/function/matrix/transpose.js +47 -48
  139. package/lib/cjs/function/matrix/zeros.js +2 -1
  140. package/lib/cjs/function/probability/factorial.js +5 -3
  141. package/lib/cjs/function/probability/gamma.js +38 -40
  142. package/lib/cjs/function/probability/kldivergence.js +5 -2
  143. package/lib/cjs/function/probability/lgamma.js +30 -30
  144. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  145. package/lib/cjs/function/relational/compare.js +21 -67
  146. package/lib/cjs/function/relational/compareNatural.js +59 -54
  147. package/lib/cjs/function/relational/compareText.js +10 -43
  148. package/lib/cjs/function/relational/compareUnits.js +24 -0
  149. package/lib/cjs/function/relational/equal.js +19 -80
  150. package/lib/cjs/function/relational/equalScalar.js +7 -9
  151. package/lib/cjs/function/relational/larger.js +21 -67
  152. package/lib/cjs/function/relational/largerEq.js +21 -67
  153. package/lib/cjs/function/relational/smaller.js +21 -67
  154. package/lib/cjs/function/relational/smallerEq.js +21 -67
  155. package/lib/cjs/function/relational/unequal.js +19 -80
  156. package/lib/cjs/function/special/erf.js +5 -3
  157. package/lib/cjs/function/statistics/std.js +11 -2
  158. package/lib/cjs/function/string/format.js +2 -2
  159. package/lib/cjs/function/string/hex.js +1 -2
  160. package/lib/cjs/function/trigonometry/acos.js +4 -8
  161. package/lib/cjs/function/trigonometry/acosh.js +2 -7
  162. package/lib/cjs/function/trigonometry/acot.js +6 -11
  163. package/lib/cjs/function/trigonometry/acoth.js +4 -8
  164. package/lib/cjs/function/trigonometry/acsc.js +6 -11
  165. package/lib/cjs/function/trigonometry/acsch.js +4 -8
  166. package/lib/cjs/function/trigonometry/asec.js +6 -10
  167. package/lib/cjs/function/trigonometry/asech.js +4 -8
  168. package/lib/cjs/function/trigonometry/asin.js +5 -10
  169. package/lib/cjs/function/trigonometry/asinh.js +4 -9
  170. package/lib/cjs/function/trigonometry/atan.js +5 -11
  171. package/lib/cjs/function/trigonometry/atan2.js +25 -63
  172. package/lib/cjs/function/trigonometry/atanh.js +4 -9
  173. package/lib/cjs/function/trigonometry/cos.js +11 -20
  174. package/lib/cjs/function/trigonometry/cosh.js +5 -19
  175. package/lib/cjs/function/trigonometry/cot.js +9 -15
  176. package/lib/cjs/function/trigonometry/coth.js +4 -15
  177. package/lib/cjs/function/trigonometry/csc.js +11 -17
  178. package/lib/cjs/function/trigonometry/csch.js +4 -15
  179. package/lib/cjs/function/trigonometry/sec.js +11 -17
  180. package/lib/cjs/function/trigonometry/sech.js +4 -15
  181. package/lib/cjs/function/trigonometry/sin.js +11 -21
  182. package/lib/cjs/function/trigonometry/sinh.js +5 -20
  183. package/lib/cjs/function/trigonometry/tan.js +11 -21
  184. package/lib/cjs/function/trigonometry/tanh.js +5 -20
  185. package/lib/cjs/function/trigonometry/trigUnit.js +24 -0
  186. package/lib/cjs/function/unit/to.js +7 -41
  187. package/lib/cjs/function/utils/clone.js +1 -1
  188. package/lib/cjs/function/utils/hasNumericValue.js +5 -1
  189. package/lib/cjs/function/utils/isInteger.js +6 -4
  190. package/lib/cjs/function/utils/isNaN.js +1 -1
  191. package/lib/cjs/function/utils/isNegative.js +11 -7
  192. package/lib/cjs/function/utils/isNumeric.js +6 -4
  193. package/lib/cjs/function/utils/isPositive.js +11 -7
  194. package/lib/cjs/function/utils/isPrime.js +5 -3
  195. package/lib/cjs/function/utils/isZero.js +21 -17
  196. package/lib/cjs/function/utils/numeric.js +11 -4
  197. package/lib/cjs/function/utils/typeOf.js +38 -44
  198. package/lib/cjs/header.js +2 -2
  199. package/lib/cjs/plain/bignumber/index.js +1 -1
  200. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  201. package/lib/cjs/type/bignumber/function/bignumber.js +6 -4
  202. package/lib/cjs/type/boolean.js +7 -5
  203. package/lib/cjs/type/chain/Chain.js +23 -3
  204. package/lib/cjs/type/complex/Complex.js +18 -14
  205. package/lib/cjs/type/complex/function/complex.js +6 -4
  206. package/lib/cjs/type/fraction/Fraction.js +10 -6
  207. package/lib/cjs/type/fraction/function/fraction.js +6 -4
  208. package/lib/cjs/type/matrix/DenseMatrix.js +21 -6
  209. package/lib/cjs/type/matrix/SparseMatrix.js +12 -2
  210. package/lib/cjs/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +4 -4
  211. package/lib/cjs/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +5 -5
  212. package/lib/cjs/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +5 -5
  213. package/lib/cjs/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +7 -7
  214. package/lib/cjs/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +5 -5
  215. package/lib/cjs/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +5 -5
  216. package/lib/cjs/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +5 -5
  217. package/lib/cjs/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +6 -6
  218. package/lib/cjs/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +5 -5
  219. package/lib/cjs/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +5 -5
  220. package/lib/cjs/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +5 -5
  221. package/lib/cjs/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +5 -5
  222. package/lib/cjs/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +5 -5
  223. package/lib/cjs/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +5 -5
  224. package/lib/cjs/type/matrix/utils/matrixAlgorithmSuite.js +238 -0
  225. package/lib/cjs/type/number.js +6 -4
  226. package/lib/cjs/type/string.js +7 -5
  227. package/lib/cjs/type/unit/Unit.js +98 -45
  228. package/lib/cjs/type/unit/function/createUnit.js +2 -1
  229. package/lib/cjs/type/unit/function/unit.js +14 -5
  230. package/lib/cjs/utils/customs.js +2 -2
  231. package/lib/cjs/utils/emitter.js +1 -1
  232. package/lib/cjs/utils/function.js +2 -2
  233. package/lib/cjs/utils/is.js +27 -25
  234. package/lib/cjs/utils/latex.js +3 -3
  235. package/lib/cjs/utils/lruQueue.js +1 -1
  236. package/lib/cjs/utils/map.js +3 -3
  237. package/lib/cjs/utils/object.js +2 -2
  238. package/lib/cjs/utils/snapshot.js +30 -57
  239. package/lib/cjs/utils/string.js +3 -3
  240. package/lib/cjs/version.js +1 -1
  241. package/lib/esm/core/create.js +2 -1
  242. package/lib/esm/core/function/import.js +2 -12
  243. package/lib/esm/core/function/typed.js +47 -11
  244. package/lib/esm/entry/dependenciesAny/dependenciesChainClass.generated.js +2 -0
  245. package/lib/esm/entry/dependenciesAny/dependenciesKldivergence.generated.js +2 -0
  246. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
  247. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +2 -0
  248. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
  249. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +34 -0
  250. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +4 -0
  251. package/lib/esm/entry/dependenciesAny/dependenciesSqrtm.generated.js +2 -0
  252. package/lib/esm/entry/dependenciesAny/dependenciesStd.generated.js +2 -0
  253. package/lib/esm/entry/dependenciesAny/dependenciesStdTransform.generated.js +2 -0
  254. package/lib/esm/entry/dependenciesAny.generated.js +1 -0
  255. package/lib/esm/entry/dependenciesNumber/dependenciesChainClass.generated.js +2 -0
  256. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
  257. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +2 -0
  258. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
  259. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +30 -0
  260. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +4 -0
  261. package/lib/esm/entry/dependenciesNumber/dependenciesStd.generated.js +2 -0
  262. package/lib/esm/entry/dependenciesNumber/dependenciesStdTransform.generated.js +2 -0
  263. package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
  264. package/lib/esm/entry/impureFunctionsAny.generated.js +73 -48
  265. package/lib/esm/entry/impureFunctionsNumber.generated.js +81 -58
  266. package/lib/esm/entry/pureFunctionsAny.generated.js +39 -36
  267. package/lib/esm/entry/pureFunctionsNumber.generated.js +14 -13
  268. package/lib/esm/expression/embeddedDocs/construction/index.js +1 -1
  269. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
  270. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js +8 -0
  271. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  272. package/lib/esm/expression/node/AccessorNode.js +158 -153
  273. package/lib/esm/expression/node/ArrayNode.js +162 -154
  274. package/lib/esm/expression/node/AssignmentNode.js +257 -245
  275. package/lib/esm/expression/node/BlockNode.js +177 -163
  276. package/lib/esm/expression/node/ConditionalNode.js +197 -174
  277. package/lib/esm/expression/node/ConstantNode.js +171 -163
  278. package/lib/esm/expression/node/FunctionAssignmentNode.js +205 -180
  279. package/lib/esm/expression/node/FunctionNode.js +407 -407
  280. package/lib/esm/expression/node/IndexNode.js +206 -198
  281. package/lib/esm/expression/node/Node.js +325 -325
  282. package/lib/esm/expression/node/ObjectNode.js +166 -157
  283. package/lib/esm/expression/node/OperatorNode.js +414 -377
  284. package/lib/esm/expression/node/ParenthesisNode.js +146 -138
  285. package/lib/esm/expression/node/RangeNode.js +221 -212
  286. package/lib/esm/expression/node/RelationalNode.js +190 -176
  287. package/lib/esm/expression/node/SymbolNode.js +161 -152
  288. package/lib/esm/expression/operators.js +96 -4
  289. package/lib/esm/expression/parse.js +25 -7
  290. package/lib/esm/expression/transform/std.transform.js +3 -1
  291. package/lib/esm/factoriesAny.js +1 -0
  292. package/lib/esm/factoriesNumber.js +1 -0
  293. package/lib/esm/function/algebra/derivative.js +25 -33
  294. package/lib/esm/function/algebra/leafCount.js +0 -3
  295. package/lib/esm/function/algebra/rationalize.js +83 -114
  296. package/lib/esm/function/algebra/resolve.js +25 -16
  297. package/lib/esm/function/algebra/simplify.js +85 -113
  298. package/lib/esm/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +39 -9
  299. package/lib/esm/function/algebra/simplifyCore.js +192 -91
  300. package/lib/esm/function/algebra/symbolicEqual.js +14 -32
  301. package/lib/esm/function/arithmetic/abs.js +3 -16
  302. package/lib/esm/function/arithmetic/add.js +21 -65
  303. package/lib/esm/function/arithmetic/addScalar.js +11 -5
  304. package/lib/esm/function/arithmetic/cbrt.js +7 -10
  305. package/lib/esm/function/arithmetic/ceil.js +25 -25
  306. package/lib/esm/function/arithmetic/cube.js +5 -9
  307. package/lib/esm/function/arithmetic/divide.js +7 -7
  308. package/lib/esm/function/arithmetic/divideScalar.js +2 -19
  309. package/lib/esm/function/arithmetic/dotDivide.js +22 -64
  310. package/lib/esm/function/arithmetic/dotMultiply.js +16 -60
  311. package/lib/esm/function/arithmetic/dotPow.js +30 -62
  312. package/lib/esm/function/arithmetic/exp.js +8 -11
  313. package/lib/esm/function/arithmetic/expm1.js +10 -9
  314. package/lib/esm/function/arithmetic/fix.js +18 -18
  315. package/lib/esm/function/arithmetic/floor.js +26 -26
  316. package/lib/esm/function/arithmetic/gcd.js +26 -70
  317. package/lib/esm/function/arithmetic/hypot.js +7 -6
  318. package/lib/esm/function/arithmetic/invmod.js +1 -1
  319. package/lib/esm/function/arithmetic/lcm.js +26 -70
  320. package/lib/esm/function/arithmetic/log.js +7 -10
  321. package/lib/esm/function/arithmetic/log10.js +1 -3
  322. package/lib/esm/function/arithmetic/log1p.js +4 -6
  323. package/lib/esm/function/arithmetic/log2.js +1 -3
  324. package/lib/esm/function/arithmetic/mod.js +21 -62
  325. package/lib/esm/function/arithmetic/multiply.js +23 -27
  326. package/lib/esm/function/arithmetic/multiplyScalar.js +2 -13
  327. package/lib/esm/function/arithmetic/norm.js +0 -4
  328. package/lib/esm/function/arithmetic/nthRoot.js +41 -76
  329. package/lib/esm/function/arithmetic/nthRoots.js +2 -2
  330. package/lib/esm/function/arithmetic/round.js +26 -28
  331. package/lib/esm/function/arithmetic/sign.js +5 -7
  332. package/lib/esm/function/arithmetic/sqrt.js +5 -8
  333. package/lib/esm/function/arithmetic/square.js +6 -9
  334. package/lib/esm/function/arithmetic/subtract.js +31 -95
  335. package/lib/esm/function/arithmetic/unaryMinus.js +6 -16
  336. package/lib/esm/function/arithmetic/unaryPlus.js +2 -4
  337. package/lib/esm/function/bitwise/bitAnd.js +16 -59
  338. package/lib/esm/function/bitwise/bitNot.js +2 -4
  339. package/lib/esm/function/bitwise/bitOr.js +16 -59
  340. package/lib/esm/function/bitwise/bitXor.js +16 -59
  341. package/lib/esm/function/bitwise/leftShift.js +39 -61
  342. package/lib/esm/function/bitwise/rightArithShift.js +39 -61
  343. package/lib/esm/function/bitwise/rightLogShift.js +39 -61
  344. package/lib/esm/function/bitwise/useMatrixForArrayScalar.js +13 -0
  345. package/lib/esm/function/complex/arg.js +1 -3
  346. package/lib/esm/function/complex/conj.js +3 -12
  347. package/lib/esm/function/complex/im.js +4 -15
  348. package/lib/esm/function/complex/re.js +3 -15
  349. package/lib/esm/function/geometry/distance.js +2 -2
  350. package/lib/esm/function/logical/and.js +35 -57
  351. package/lib/esm/function/logical/not.js +3 -6
  352. package/lib/esm/function/logical/or.js +16 -61
  353. package/lib/esm/function/logical/xor.js +16 -61
  354. package/lib/esm/function/matrix/diff.js +3 -8
  355. package/lib/esm/function/matrix/ones.js +2 -1
  356. package/lib/esm/function/matrix/rotate.js +5 -5
  357. package/lib/esm/function/matrix/sqrtm.js +3 -2
  358. package/lib/esm/function/matrix/transpose.js +47 -50
  359. package/lib/esm/function/matrix/zeros.js +2 -1
  360. package/lib/esm/function/probability/factorial.js +1 -3
  361. package/lib/esm/function/probability/gamma.js +38 -39
  362. package/lib/esm/function/probability/kldivergence.js +3 -2
  363. package/lib/esm/function/probability/lgamma.js +29 -29
  364. package/lib/esm/function/relational/compare.js +21 -67
  365. package/lib/esm/function/relational/compareNatural.js +54 -49
  366. package/lib/esm/function/relational/compareText.js +10 -42
  367. package/lib/esm/function/relational/compareUnits.js +15 -0
  368. package/lib/esm/function/relational/equal.js +19 -79
  369. package/lib/esm/function/relational/equalScalar.js +6 -9
  370. package/lib/esm/function/relational/larger.js +23 -73
  371. package/lib/esm/function/relational/largerEq.js +23 -73
  372. package/lib/esm/function/relational/smaller.js +23 -73
  373. package/lib/esm/function/relational/smallerEq.js +23 -73
  374. package/lib/esm/function/relational/unequal.js +19 -79
  375. package/lib/esm/function/special/erf.js +1 -3
  376. package/lib/esm/function/statistics/std.js +10 -2
  377. package/lib/esm/function/string/format.js +2 -2
  378. package/lib/esm/function/string/hex.js +1 -2
  379. package/lib/esm/function/trigonometry/acos.js +4 -7
  380. package/lib/esm/function/trigonometry/acosh.js +2 -6
  381. package/lib/esm/function/trigonometry/acot.js +6 -10
  382. package/lib/esm/function/trigonometry/acoth.js +4 -7
  383. package/lib/esm/function/trigonometry/acsc.js +6 -10
  384. package/lib/esm/function/trigonometry/acsch.js +4 -7
  385. package/lib/esm/function/trigonometry/asec.js +6 -9
  386. package/lib/esm/function/trigonometry/asech.js +4 -7
  387. package/lib/esm/function/trigonometry/asin.js +5 -9
  388. package/lib/esm/function/trigonometry/asinh.js +4 -8
  389. package/lib/esm/function/trigonometry/atan.js +5 -10
  390. package/lib/esm/function/trigonometry/atan2.js +26 -65
  391. package/lib/esm/function/trigonometry/atanh.js +4 -8
  392. package/lib/esm/function/trigonometry/cos.js +11 -22
  393. package/lib/esm/function/trigonometry/cosh.js +5 -20
  394. package/lib/esm/function/trigonometry/cot.js +10 -20
  395. package/lib/esm/function/trigonometry/coth.js +6 -20
  396. package/lib/esm/function/trigonometry/csc.js +12 -22
  397. package/lib/esm/function/trigonometry/csch.js +6 -20
  398. package/lib/esm/function/trigonometry/sec.js +12 -22
  399. package/lib/esm/function/trigonometry/sech.js +6 -20
  400. package/lib/esm/function/trigonometry/sin.js +11 -23
  401. package/lib/esm/function/trigonometry/sinh.js +5 -21
  402. package/lib/esm/function/trigonometry/tan.js +11 -23
  403. package/lib/esm/function/trigonometry/tanh.js +5 -21
  404. package/lib/esm/function/trigonometry/trigUnit.js +15 -0
  405. package/lib/esm/function/unit/to.js +8 -43
  406. package/lib/esm/function/utils/clone.js +1 -1
  407. package/lib/esm/function/utils/hasNumericValue.js +3 -1
  408. package/lib/esm/function/utils/isInteger.js +2 -4
  409. package/lib/esm/function/utils/isNaN.js +1 -1
  410. package/lib/esm/function/utils/isNegative.js +3 -7
  411. package/lib/esm/function/utils/isNumeric.js +4 -10
  412. package/lib/esm/function/utils/isPositive.js +3 -7
  413. package/lib/esm/function/utils/isPrime.js +1 -3
  414. package/lib/esm/function/utils/isZero.js +13 -17
  415. package/lib/esm/function/utils/numeric.js +11 -4
  416. package/lib/esm/function/utils/typeOf.js +38 -44
  417. package/lib/esm/type/bignumber/function/bignumber.js +1 -3
  418. package/lib/esm/type/boolean.js +1 -3
  419. package/lib/esm/type/chain/Chain.js +23 -3
  420. package/lib/esm/type/complex/Complex.js +4 -0
  421. package/lib/esm/type/complex/function/complex.js +1 -3
  422. package/lib/esm/type/fraction/Fraction.js +4 -0
  423. package/lib/esm/type/fraction/function/fraction.js +1 -3
  424. package/lib/esm/type/matrix/DenseMatrix.js +15 -1
  425. package/lib/esm/type/matrix/SparseMatrix.js +9 -0
  426. package/lib/esm/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +2 -2
  427. package/lib/esm/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +3 -3
  428. package/lib/esm/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +3 -3
  429. package/lib/esm/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +5 -5
  430. package/lib/esm/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +3 -3
  431. package/lib/esm/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +3 -3
  432. package/lib/esm/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +3 -3
  433. package/lib/esm/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +4 -4
  434. package/lib/esm/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +3 -3
  435. package/lib/esm/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +3 -3
  436. package/lib/esm/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +3 -3
  437. package/lib/esm/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +3 -3
  438. package/lib/esm/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +3 -3
  439. package/lib/esm/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +3 -3
  440. package/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js +168 -0
  441. package/lib/esm/type/number.js +1 -3
  442. package/lib/esm/type/string.js +1 -3
  443. package/lib/esm/type/unit/Unit.js +85 -36
  444. package/lib/esm/type/unit/function/createUnit.js +2 -1
  445. package/lib/esm/type/unit/function/unit.js +10 -5
  446. package/lib/esm/utils/is.js +18 -18
  447. package/lib/esm/utils/snapshot.js +22 -48
  448. package/lib/esm/version.js +1 -1
  449. package/package.json +22 -25
  450. package/types/index.d.ts +211 -180
  451. package/types/index.ts +358 -144
  452. package/types/tsconfig.json +4 -1
  453. package/lib/cjs/utils/polyfills.js +0 -14
  454. package/lib/esm/utils/polyfills.js +0 -12
@@ -7,8 +7,6 @@ exports.createSinh = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- var _collection = require("../../utils/collection.js");
11
-
12
10
  var _index = require("../../plain/number/index.js");
13
11
 
14
12
  var name = 'sinh';
@@ -20,7 +18,8 @@ var createSinh = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
20
18
  * Calculate the hyperbolic sine of a value,
21
19
  * defined as `sinh(x) = 1/2 * (exp(x) - exp(-x))`.
22
20
  *
23
- * For matrices, the function is evaluated element wise.
21
+ * To avoid confusion with the matrix hyperbolic sine, this function does
22
+ * not apply to matrices.
24
23
  *
25
24
  * Syntax:
26
25
  *
@@ -34,27 +33,13 @@ var createSinh = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
34
33
  *
35
34
  * cosh, tanh
36
35
  *
37
- * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input
38
- * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic sine of x
36
+ * @param {number | BigNumber | Complex} x Function input
37
+ * @return {number | BigNumber | Complex} Hyperbolic sine of x
39
38
  */
40
39
  return typed(name, {
41
40
  number: _index.sinhNumber,
42
- Complex: function Complex(x) {
43
- return x.sinh();
44
- },
45
- BigNumber: function BigNumber(x) {
41
+ 'Complex | BigNumber': function ComplexBigNumber(x) {
46
42
  return x.sinh();
47
- },
48
- Unit: function Unit(x) {
49
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
50
- throw new TypeError('Unit in function sinh is no angle');
51
- }
52
-
53
- return this(x.value);
54
- },
55
- 'Array | Matrix': function ArrayMatrix(x) {
56
- // deep map collection, skip zeros since sinh(0) = 0
57
- return (0, _collection.deepMap)(x, this, true);
58
43
  }
59
44
  });
60
45
  });
@@ -7,17 +7,20 @@ exports.createTan = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- var _collection = require("../../utils/collection.js");
10
+ var _trigUnit = require("./trigUnit.js");
11
11
 
12
12
  var name = 'tan';
13
13
  var dependencies = ['typed'];
14
14
  var createTan = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
15
  var typed = _ref.typed;
16
-
16
+ var trigUnit = (0, _trigUnit.createTrigUnit)({
17
+ typed: typed
18
+ });
17
19
  /**
18
20
  * Calculate the tangent of a value. `tan(x)` is equal to `sin(x) / cos(x)`.
19
21
  *
20
- * For matrices, the function is evaluated element wise.
22
+ * To avoid confusion with the matrix tangent, this function does not apply
23
+ * to matrices.
21
24
  *
22
25
  * Syntax:
23
26
  *
@@ -34,28 +37,15 @@ var createTan = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
34
37
  *
35
38
  * atan, sin, cos
36
39
  *
37
- * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input
38
- * @return {number | BigNumber | Complex | Array | Matrix} Tangent of x
40
+ * @param {number | BigNumber | Complex | Unit} x Function input
41
+ * @return {number | BigNumber | Complex} Tangent of x
39
42
  */
43
+
40
44
  return typed(name, {
41
45
  number: Math.tan,
42
- Complex: function Complex(x) {
46
+ 'Complex | BigNumber': function ComplexBigNumber(x) {
43
47
  return x.tan();
44
- },
45
- BigNumber: function BigNumber(x) {
46
- return x.tan();
47
- },
48
- Unit: function Unit(x) {
49
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
50
- throw new TypeError('Unit in function tan is no angle');
51
- }
52
-
53
- return this(x.value);
54
- },
55
- 'Array | Matrix': function ArrayMatrix(x) {
56
- // deep map collection, skip zeros since tan(0) = 0
57
- return (0, _collection.deepMap)(x, this, true);
58
48
  }
59
- });
49
+ }, trigUnit);
60
50
  });
61
51
  exports.createTan = createTan;
@@ -7,8 +7,6 @@ exports.createTanh = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- var _collection = require("../../utils/collection.js");
11
-
12
10
  var _number = require("../../utils/number.js");
13
11
 
14
12
  var name = 'tanh';
@@ -20,7 +18,8 @@ var createTanh = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
20
18
  * Calculate the hyperbolic tangent of a value,
21
19
  * defined as `tanh(x) = (exp(2 * x) - 1) / (exp(2 * x) + 1)`.
22
20
  *
23
- * For matrices, the function is evaluated element wise.
21
+ * To avoid confusion with matrix hyperbolic tangent, this function does
22
+ * not apply to matrices.
24
23
  *
25
24
  * Syntax:
26
25
  *
@@ -37,27 +36,13 @@ var createTanh = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
37
36
  *
38
37
  * sinh, cosh, coth
39
38
  *
40
- * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input
41
- * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic tangent of x
39
+ * @param {number | BigNumber | Complex} x Function input
40
+ * @return {number | BigNumber | Complex} Hyperbolic tangent of x
42
41
  */
43
42
  return typed('tanh', {
44
43
  number: _number.tanh,
45
- Complex: function Complex(x) {
46
- return x.tanh();
47
- },
48
- BigNumber: function BigNumber(x) {
44
+ 'Complex | BigNumber': function ComplexBigNumber(x) {
49
45
  return x.tanh();
50
- },
51
- Unit: function Unit(x) {
52
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
53
- throw new TypeError('Unit in function tanh is no angle');
54
- }
55
-
56
- return this(x.value);
57
- },
58
- 'Array | Matrix': function ArrayMatrix(x) {
59
- // deep map collection, skip zeros since tanh(0) = 0
60
- return (0, _collection.deepMap)(x, this, true);
61
46
  }
62
47
  });
63
48
  });
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createTrigUnit = void 0;
7
+
8
+ var _factory = require("../../utils/factory.js");
9
+
10
+ var createTrigUnit = /* #__PURE__ */(0, _factory.factory)('trigUnit', ['typed'], function (_ref) {
11
+ var typed = _ref.typed;
12
+ return {
13
+ Unit: typed.referToSelf(function (self) {
14
+ return function (x) {
15
+ if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
16
+ throw new TypeError('Unit in function cot is no angle');
17
+ }
18
+
19
+ return typed.find(self, x.valueType())(x.value);
20
+ };
21
+ })
22
+ };
23
+ });
24
+ exports.createTrigUnit = createTrigUnit;
@@ -7,20 +7,16 @@ exports.createTo = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- var _algorithm = require("../../type/matrix/utils/algorithm13.js");
11
-
12
- var _algorithm2 = require("../../type/matrix/utils/algorithm14.js");
10
+ var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
13
11
 
14
12
  var name = 'to';
15
13
  var dependencies = ['typed', 'matrix'];
16
14
  var createTo = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
17
15
  var typed = _ref.typed,
18
16
  matrix = _ref.matrix;
19
- var algorithm13 = (0, _algorithm.createAlgorithm13)({
20
- typed: typed
21
- });
22
- var algorithm14 = (0, _algorithm2.createAlgorithm14)({
23
- typed: typed
17
+ var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
18
+ typed: typed,
19
+ matrix: matrix
24
20
  });
25
21
  /**
26
22
  * Change the unit of a value.
@@ -50,39 +46,9 @@ var createTo = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function
50
46
  return typed(name, {
51
47
  'Unit, Unit | string': function UnitUnitString(x, unit) {
52
48
  return x.to(unit);
53
- },
54
- 'Matrix, Matrix': function MatrixMatrix(x, y) {
55
- // SparseMatrix does not support Units
56
- return algorithm13(x, y, this);
57
- },
58
- 'Array, Array': function ArrayArray(x, y) {
59
- // use matrix implementation
60
- return this(matrix(x), matrix(y)).valueOf();
61
- },
62
- 'Array, Matrix': function ArrayMatrix(x, y) {
63
- // use matrix implementation
64
- return this(matrix(x), y);
65
- },
66
- 'Matrix, Array': function MatrixArray(x, y) {
67
- // use matrix implementation
68
- return this(x, matrix(y));
69
- },
70
- 'Matrix, any': function MatrixAny(x, y) {
71
- // SparseMatrix does not support Units
72
- return algorithm14(x, y, this, false);
73
- },
74
- 'any, Matrix': function anyMatrix(x, y) {
75
- // SparseMatrix does not support Units
76
- return algorithm14(y, x, this, true);
77
- },
78
- 'Array, any': function ArrayAny(x, y) {
79
- // use matrix implementation
80
- return algorithm14(matrix(x), y, this, false).valueOf();
81
- },
82
- 'any, Array': function anyArray(x, y) {
83
- // use matrix implementation
84
- return algorithm14(matrix(y), x, this, true).valueOf();
85
49
  }
86
- });
50
+ }, matrixAlgorithmSuite({
51
+ Ds: true
52
+ }));
87
53
  });
88
54
  exports.createTo = createTo;
@@ -24,7 +24,7 @@ var createClone = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
24
24
  * Examples:
25
25
  *
26
26
  * math.clone(3.5) // returns number 3.5
27
- * math.clone(math.complex('2-4i') // returns Complex 2 - 4i
27
+ * math.clone(math.complex('2-4i')) // returns Complex 2 - 4i
28
28
  * math.clone(math.unit(45, 'deg')) // returns Unit 45 deg
29
29
  * math.clone([[1, 2], [3, 4]]) // returns Array [[1, 2], [3, 4]]
30
30
  * math.clone("hello world") // returns string "hello world"
@@ -30,7 +30,8 @@ var createHasNumericValue = /* #__PURE__ */(0, _factory.factory)(name, dependenc
30
30
  * math.hasNumericValue(0) // returns true
31
31
  * math.hasNumericValue(math.bignumber(500)) // returns true
32
32
  * math.hasNumericValue(math.fraction(4)) // returns true
33
- * math.hasNumericValue(math.complex('2-4i') // returns false
33
+ * math.hasNumericValue(math.complex('2-4i')) // returns false
34
+ * math.hasNumericValue(false) // returns true
34
35
  * math.hasNumericValue([2.3, 'foo', false]) // returns [true, false, true]
35
36
  *
36
37
  * See also:
@@ -43,6 +44,9 @@ var createHasNumericValue = /* #__PURE__ */(0, _factory.factory)(name, dependenc
43
44
  * Throws an error in case of unknown types.
44
45
  */
45
46
  return typed(name, {
47
+ "boolean": function boolean() {
48
+ return true;
49
+ },
46
50
  string: function string(x) {
47
51
  return x.trim().length > 0 && !isNaN(Number(x));
48
52
  },
@@ -35,7 +35,7 @@ var createIsInteger = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
35
35
  * math.isInteger(math.fraction(4)) // returns true
36
36
  * math.isInteger('3') // returns true
37
37
  * math.isInteger([3, 0.5, -2]) // returns [true, false, true]
38
- * math.isInteger(math.complex('2-4i') // throws an error
38
+ * math.isInteger(math.complex('2-4i')) // throws an error
39
39
  *
40
40
  * See also:
41
41
  *
@@ -54,9 +54,11 @@ var createIsInteger = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
54
54
  Fraction: function Fraction(x) {
55
55
  return x.d === 1 && isFinite(x.n);
56
56
  },
57
- 'Array | Matrix': function ArrayMatrix(x) {
58
- return (0, _collection.deepMap)(x, this);
59
- }
57
+ 'Array | Matrix': typed.referToSelf(function (self) {
58
+ return function (x) {
59
+ return (0, _collection.deepMap)(x, self);
60
+ };
61
+ })
60
62
  });
61
63
  });
62
64
  exports.createIsInteger = createIsInteger;
@@ -35,7 +35,7 @@ var createIsNaN = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
35
35
  * math.isNaN(math.bignumber(0)) // returns false
36
36
  * math.isNaN(math.fraction(-2, 5)) // returns false
37
37
  * math.isNaN('-2') // returns false
38
- * math.isNaN([2, 0, -3, NaN]') // returns [false, false, false, true]
38
+ * math.isNaN([2, 0, -3, NaN]) // returns [false, false, false, true]
39
39
  *
40
40
  * See also:
41
41
  *
@@ -35,7 +35,7 @@ var createIsNegative = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
35
35
  * math.isNegative(math.bignumber(2)) // returns false
36
36
  * math.isNegative(math.fraction(-2, 5)) // returns true
37
37
  * math.isNegative('-2') // returns true
38
- * math.isNegative([2, 0, -3]') // returns [false, false, true]
38
+ * math.isNegative([2, 0, -3]) // returns [false, false, true]
39
39
  *
40
40
  * See also:
41
41
  *
@@ -53,12 +53,16 @@ var createIsNegative = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
53
53
  Fraction: function Fraction(x) {
54
54
  return x.s < 0; // It's enough to decide on the sign
55
55
  },
56
- Unit: function Unit(x) {
57
- return this(x.value);
58
- },
59
- 'Array | Matrix': function ArrayMatrix(x) {
60
- return (0, _collection.deepMap)(x, this);
61
- }
56
+ Unit: typed.referToSelf(function (self) {
57
+ return function (x) {
58
+ return typed.find(self, x.valueType())(x.value);
59
+ };
60
+ }),
61
+ 'Array | Matrix': typed.referToSelf(function (self) {
62
+ return function (x) {
63
+ return (0, _collection.deepMap)(x, self);
64
+ };
65
+ })
62
66
  });
63
67
  });
64
68
  exports.createIsNegative = createIsNegative;
@@ -31,7 +31,7 @@ var createIsNumeric = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
31
31
  * math.isNumeric(0) // returns true
32
32
  * math.isNumeric(math.bignumber(500)) // returns true
33
33
  * math.isNumeric(math.fraction(4)) // returns true
34
- * math.isNumeric(math.complex('2-4i') // returns false
34
+ * math.isNumeric(math.complex('2-4i')) // returns false
35
35
  * math.isNumeric([2.3, 'foo', false]) // returns [true, false, true]
36
36
  *
37
37
  * See also:
@@ -50,9 +50,11 @@ var createIsNumeric = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
50
50
  'Complex | Unit | string | null | undefined | Node': function ComplexUnitStringNullUndefinedNode() {
51
51
  return false;
52
52
  },
53
- 'Array | Matrix': function ArrayMatrix(x) {
54
- return (0, _collection.deepMap)(x, this);
55
- }
53
+ 'Array | Matrix': typed.referToSelf(function (self) {
54
+ return function (x) {
55
+ return (0, _collection.deepMap)(x, self);
56
+ };
57
+ })
56
58
  });
57
59
  });
58
60
  exports.createIsNumeric = createIsNumeric;
@@ -35,7 +35,7 @@ var createIsPositive = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
35
35
  * math.isPositive(0.5) // returns true
36
36
  * math.isPositive(math.bignumber(2)) // returns true
37
37
  * math.isPositive(math.fraction(-2, 5)) // returns false
38
- * math.isPositive(math.fraction(1,3)) // returns false
38
+ * math.isPositive(math.fraction(1, 3)) // returns true
39
39
  * math.isPositive('2') // returns true
40
40
  * math.isPositive([2, 0, -3]) // returns [true, false, false]
41
41
  *
@@ -55,12 +55,16 @@ var createIsPositive = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
55
55
  Fraction: function Fraction(x) {
56
56
  return x.s > 0 && x.n > 0;
57
57
  },
58
- Unit: function Unit(x) {
59
- return this(x.value);
60
- },
61
- 'Array | Matrix': function ArrayMatrix(x) {
62
- return (0, _collection.deepMap)(x, this);
63
- }
58
+ Unit: typed.referToSelf(function (self) {
59
+ return function (x) {
60
+ return typed.find(self, x.valueType())(x.value);
61
+ };
62
+ }),
63
+ 'Array | Matrix': typed.referToSelf(function (self) {
64
+ return function (x) {
65
+ return (0, _collection.deepMap)(x, self);
66
+ };
67
+ })
64
68
  });
65
69
  });
66
70
  exports.createIsPositive = createIsPositive;
@@ -144,9 +144,11 @@ var createIsPrime = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
144
144
 
145
145
  return true;
146
146
  },
147
- 'Array | Matrix': function ArrayMatrix(x) {
148
- return (0, _collection.deepMap)(x, this);
149
- }
147
+ 'Array | Matrix': typed.referToSelf(function (self) {
148
+ return function (x) {
149
+ return (0, _collection.deepMap)(x, self);
150
+ };
151
+ })
150
152
  });
151
153
  });
152
154
  exports.createIsPrime = createIsPrime;
@@ -29,17 +29,17 @@ var createIsZero = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
29
29
  *
30
30
  * Examples:
31
31
  *
32
- * math.isZero(0) // returns true
33
- * math.isZero(2) // returns false
34
- * math.isZero(0.5) // returns false
35
- * math.isZero(math.bignumber(0)) // returns true
36
- * math.isZero(math.fraction(0)) // returns true
37
- * math.isZero(math.fraction(1,3)) // returns false
38
- * math.isZero(math.complex('2 - 4i') // returns false
39
- * math.isZero(math.complex('0i') // returns true
40
- * math.isZero('0') // returns true
41
- * math.isZero('2') // returns false
42
- * math.isZero([2, 0, -3]') // returns [false, true, false]
32
+ * math.isZero(0) // returns true
33
+ * math.isZero(2) // returns false
34
+ * math.isZero(0.5) // returns false
35
+ * math.isZero(math.bignumber(0)) // returns true
36
+ * math.isZero(math.fraction(0)) // returns true
37
+ * math.isZero(math.fraction(1,3)) // returns false
38
+ * math.isZero(math.complex('2 - 4i')) // returns false
39
+ * math.isZero(math.complex('0i')) // returns true
40
+ * math.isZero('0') // returns true
41
+ * math.isZero('2') // returns false
42
+ * math.isZero([2, 0, -3]) // returns [false, true, false]
43
43
  *
44
44
  * See also:
45
45
  *
@@ -60,12 +60,16 @@ var createIsZero = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
60
60
  Fraction: function Fraction(x) {
61
61
  return x.d === 1 && x.n === 0;
62
62
  },
63
- Unit: function Unit(x) {
64
- return this(x.value);
65
- },
66
- 'Array | Matrix': function ArrayMatrix(x) {
67
- return (0, _collection.deepMap)(x, this);
68
- }
63
+ Unit: typed.referToSelf(function (self) {
64
+ return function (x) {
65
+ return typed.find(self, x.valueType())(x.value);
66
+ };
67
+ }),
68
+ 'Array | Matrix': typed.referToSelf(function (self) {
69
+ return function (x) {
70
+ return (0, _collection.deepMap)(x, self);
71
+ };
72
+ })
69
73
  });
70
74
  });
71
75
  exports.createIsZero = createIsZero;
@@ -44,12 +44,12 @@ var createNumeric = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
44
44
  *
45
45
  * Examples:
46
46
  *
47
- * math.numeric('4') // returns number 4
48
- * math.numeric('4', 'number') // returns number 4
47
+ * math.numeric('4') // returns 4
48
+ * math.numeric('4', 'number') // returns 4
49
49
  * math.numeric('4', 'BigNumber') // returns BigNumber 4
50
50
  * math.numeric('4', 'Fraction') // returns Fraction 4
51
51
  * math.numeric(4, 'Fraction') // returns Fraction 4
52
- * math.numeric(math.fraction(2, 5), 'number') // returns number 0.4
52
+ * math.numeric(math.fraction(2, 5), 'number') // returns 0.4
53
53
  *
54
54
  * See also:
55
55
  *
@@ -64,7 +64,14 @@ var createNumeric = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
64
64
  * Returns an instance of the numeric in the requested type
65
65
  */
66
66
 
67
- return function numeric(value, outputType) {
67
+ return function numeric(value) {
68
+ var outputType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'number';
69
+ var check = arguments.length > 2 ? arguments[2] : undefined;
70
+
71
+ if (check !== undefined) {
72
+ throw new SyntaxError('numeric() takes one or two arguments');
73
+ }
74
+
68
75
  var inputType = (0, _is.typeOf)(value);
69
76
 
70
77
  if (!(inputType in validInputTypes)) {
@@ -15,46 +15,7 @@ var createTypeOf = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
15
15
  var typed = _ref.typed;
16
16
 
17
17
  /**
18
- * Determine the type of a variable.
19
- *
20
- * Function `typeOf` recognizes the following types of objects:
21
- *
22
- * Object | Returns | Example
23
- * ---------------------- | ------------- | ------------------------------------------
24
- * null | `'null'` | `math.typeOf(null)`
25
- * number | `'number'` | `math.typeOf(3.5)`
26
- * boolean | `'boolean'` | `math.typeOf(true)`
27
- * string | `'string'` | `math.typeOf('hello world')`
28
- * Array | `'Array'` | `math.typeOf([1, 2, 3])`
29
- * Date | `'Date'` | `math.typeOf(new Date())`
30
- * Function | `'Function'` | `math.typeOf(function () {})`
31
- * Object | `'Object'` | `math.typeOf({a: 2, b: 3})`
32
- * RegExp | `'RegExp'` | `math.typeOf(/a regexp/)`
33
- * undefined | `'undefined'` | `math.typeOf(undefined)`
34
- * math.BigNumber | `'BigNumber'` | `math.typeOf(math.bignumber('2.3e500'))`
35
- * math.Chain | `'Chain'` | `math.typeOf(math.chain(2))`
36
- * math.Complex | `'Complex'` | `math.typeOf(math.complex(2, 3))`
37
- * math.Fraction | `'Fraction'` | `math.typeOf(math.fraction(1, 3))`
38
- * math.Help | `'Help'` | `math.typeOf(math.help('sqrt'))`
39
- * math.Help | `'Help'` | `math.typeOf(math.help('sqrt'))`
40
- * math.Index | `'Index'` | `math.typeOf(math.index(1, 3))`
41
- * math.Matrix | `'Matrix'` | `math.typeOf(math.matrix([[1,2], [3, 4]]))`
42
- * math.Range | `'Range'` | `math.typeOf(math.range(0, 10))`
43
- * math.ResultSet | `'ResultSet'` | `math.typeOf(math.evaluate('a=2\nb=3'))`
44
- * math.Unit | `'Unit'` | `math.typeOf(math.unit('45 deg'))`
45
- * math.AccessorNode | `'AccessorNode'` | `math.typeOf(math.parse('A[2]'))`
46
- * math.ArrayNode | `'ArrayNode'` | `math.typeOf(math.parse('[1,2,3]'))`
47
- * math.AssignmentNode | `'AssignmentNode'` | `math.typeOf(math.parse('x=2'))`
48
- * math.BlockNode | `'BlockNode'` | `math.typeOf(math.parse('a=2; b=3'))`
49
- * math.ConditionalNode | `'ConditionalNode'` | `math.typeOf(math.parse('x<0 ? -x : x'))`
50
- * math.ConstantNode | `'ConstantNode'` | `math.typeOf(math.parse('2.3'))`
51
- * math.FunctionAssignmentNode | `'FunctionAssignmentNode'` | `math.typeOf(math.parse('f(x)=x^2'))`
52
- * math.FunctionNode | `'FunctionNode'` | `math.typeOf(math.parse('sqrt(4)'))`
53
- * math.IndexNode | `'IndexNode'` | `math.typeOf(math.parse('A[2]').index)`
54
- * math.ObjectNode | `'ObjectNode'` | `math.typeOf(math.parse('{a:2}'))`
55
- * math.ParenthesisNode | `'ParenthesisNode'` | `math.typeOf(math.parse('(2+3)'))`
56
- * math.RangeNode | `'RangeNode'` | `math.typeOf(math.parse('1:10'))`
57
- * math.SymbolNode | `'SymbolNode'` | `math.typeOf(math.parse('x'))`
18
+ * Determine the type of an entity.
58
19
  *
59
20
  * Syntax:
60
21
  *
@@ -62,10 +23,43 @@ var createTypeOf = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
62
23
  *
63
24
  * Examples:
64
25
  *
65
- * math.typeOf(3.5) // returns 'number'
66
- * math.typeOf(math.complex('2-4i')) // returns 'Complex'
67
- * math.typeOf(math.unit('45 deg')) // returns 'Unit'
68
- * math.typeOf('hello world') // returns 'string'
26
+ * // This list is intended to include all relevant types, for testing
27
+ * // purposes:
28
+ * math.typeOf(3.5) // returns 'number'
29
+ * math.typeOf(math.complex('2-4i')) // returns 'Complex'
30
+ * math.typeOf(math.unit('45 deg')) // returns 'Unit'
31
+ * math.typeOf('hello world') // returns 'string'
32
+ * math.typeOf(null) // returns 'null'
33
+ * math.typeOf(true) // returns 'boolean'
34
+ * math.typeOf([1, 2, 3]) // returns 'Array'
35
+ * math.typeOf(new Date()) // returns 'Date'
36
+ * math.typeOf(function () {}) // returns 'function'
37
+ * math.typeOf({a: 2, b: 3}) // returns 'Object'
38
+ * math.typeOf(/a regexp/) // returns 'RegExp'
39
+ * math.typeOf(undefined) // returns 'undefined'
40
+ * math.typeOf(math.bignumber('23e99')) // returns 'BigNumber'
41
+ * math.typeOf(math.chain(2)) // returns 'Chain'
42
+ * math.typeOf(math.fraction(1, 3)) // returns 'Fraction'
43
+ * math.typeOf(math.help('sqrt')) // returns 'Help'
44
+ * math.typeOf(math.index(1, 3)) // returns 'Index'
45
+ * math.typeOf(math.matrix([[1],[3]])) // returns 'DenseMatrix'
46
+ * math.typeOf(math.matrix([],'sparse')) // returns 'SparseMatrix'
47
+ * math.typeOf(new math.Range(0, 10)) // returns 'Range'
48
+ * math.typeOf(math.evaluate('a=2\na')) // returns 'ResultSet'
49
+ * math.typeOf(math.parse('A[2]')) // returns 'AccessorNode'
50
+ * math.typeOf(math.parse('[1,2,3]')) // returns 'ArrayNode'
51
+ * math.typeOf(math.parse('x=2')) // returns 'AssignmentNode'
52
+ * math.typeOf(math.parse('a=2; b=3')) // returns 'BlockNode'
53
+ * math.typeOf(math.parse('x<0?-1:1')) // returns 'ConditionalNode'
54
+ * math.typeOf(math.parse('2.3')) // returns 'ConstantNode'
55
+ * math.typeOf(math.parse('f(x)=x^2')) // returns 'FunctionAssignmentNode'
56
+ * math.typeOf(math.parse('sqrt(4)')) // returns 'FunctionNode'
57
+ * math.typeOf(math.parse('A[2]').index) // returns 'IndexNode'
58
+ * math.typeOf(math.parse('{a:2}')) // returns 'ObjectNode'
59
+ * math.typeOf(math.parse('(2+3)')) // returns 'ParenthesisNode'
60
+ * math.typeOf(math.parse('1:10')) // returns 'RangeNode'
61
+ * math.typeOf(math.parse('a<b<c')) // returns 'RelationalNode'
62
+ * math.typeOf(math.parse('x')) // returns 'SymbolNode'
69
63
  *
70
64
  * @param {*} x The variable for which to test the type.
71
65
  * @return {string} Returns the name of the type. Primitive types are lower case,
package/lib/cjs/header.js CHANGED
@@ -6,8 +6,8 @@
6
6
  * It features real and complex numbers, units, matrices, a large set of
7
7
  * mathematical functions, and a flexible expression parser.
8
8
  *
9
- * @version 10.6.4
10
- * @date 2022-06-28
9
+ * @version 11.1.0
10
+ * @date 2022-08-23
11
11
  *
12
12
  * @license
13
13
  * Copyright (C) 2013-2022 Jos de Jong <wjosdejong@gmail.com>
@@ -27,7 +27,7 @@ Object.keys(_arithmetic).forEach(function (key) {
27
27
  });
28
28
 
29
29
  // TODO: this is ugly. Instead, be able to pass your own isBigNumber function to typed?
30
- var BigNumber = _decimal.default.clone();
30
+ var BigNumber = _decimal["default"].clone();
31
31
 
32
32
  BigNumber.prototype.isBigNumber = true;
33
33
 
@@ -17,9 +17,9 @@ var createBigNumberClass = /* #__PURE__ */(0, _factory.factory)(name, dependenci
17
17
  var on = _ref.on,
18
18
  config = _ref.config;
19
19
 
20
- var BigNumber = _decimal.default.clone({
20
+ var BigNumber = _decimal["default"].clone({
21
21
  precision: config.precision,
22
- modulo: _decimal.default.EUCLID
22
+ modulo: _decimal["default"].EUCLID
23
23
  });
24
24
 
25
25
  BigNumber.prototype = Object.create(BigNumber.prototype);