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
@@ -1,5 +1,4 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { sechNumber } from '../../plain/number/index.js';
4
3
  var name = 'sech';
5
4
  var dependencies = ['typed', 'BigNumber'];
@@ -13,7 +12,8 @@ export var createSech = /* #__PURE__ */factory(name, dependencies, _ref => {
13
12
  * Calculate the hyperbolic secant of a value,
14
13
  * defined as `sech(x) = 1 / cosh(x)`.
15
14
  *
16
- * For matrices, the function is evaluated element wise.
15
+ * To avoid confusion with the matrix hyperbolic secant, this function does
16
+ * not apply to matrices.
17
17
  *
18
18
  * Syntax:
19
19
  *
@@ -29,26 +29,12 @@ export var createSech = /* #__PURE__ */factory(name, dependencies, _ref => {
29
29
  *
30
30
  * cosh, csch, coth
31
31
  *
32
- * @param {number | Complex | Unit | Array | Matrix} x Function input
33
- * @return {number | Complex | Array | Matrix} Hyperbolic secant of x
32
+ * @param {number | BigNumber | Complex} x Function input
33
+ * @return {number | BigNumber | Complex} Hyperbolic secant of x
34
34
  */
35
35
  return typed(name, {
36
36
  number: sechNumber,
37
- Complex: function Complex(x) {
38
- return x.sech();
39
- },
40
- BigNumber: function BigNumber(x) {
41
- return new _BigNumber(1).div(x.cosh());
42
- },
43
- Unit: function Unit(x) {
44
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
45
- throw new TypeError('Unit in function sech is no angle');
46
- }
47
-
48
- return this(x.value);
49
- },
50
- 'Array | Matrix': function ArrayMatrix(x) {
51
- return deepMap(x, this);
52
- }
37
+ Complex: x => x.sech(),
38
+ BigNumber: x => new _BigNumber(1).div(x.cosh())
53
39
  });
54
40
  });
@@ -1,16 +1,19 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
2
+ import { createTrigUnit } from './trigUnit.js';
3
3
  var name = 'sin';
4
4
  var dependencies = ['typed'];
5
5
  export var createSin = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
9
-
9
+ var trigUnit = createTrigUnit({
10
+ typed
11
+ });
10
12
  /**
11
13
  * Calculate the sine of a value.
12
14
  *
13
- * For matrices, the function is evaluated element wise.
15
+ * To avoid confusion with the matrix sine, this function does not apply
16
+ * to matrices.
14
17
  *
15
18
  * Syntax:
16
19
  *
@@ -30,27 +33,12 @@ export var createSin = /* #__PURE__ */factory(name, dependencies, _ref => {
30
33
  *
31
34
  * cos, tan
32
35
  *
33
- * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input
34
- * @return {number | BigNumber | Complex | Array | Matrix} Sine of x
36
+ * @param {number | BigNumber | Complex | Unit} x Function input
37
+ * @return {number | BigNumber | Complex} Sine of x
35
38
  */
39
+
36
40
  return typed(name, {
37
41
  number: Math.sin,
38
- Complex: function Complex(x) {
39
- return x.sin();
40
- },
41
- BigNumber: function BigNumber(x) {
42
- return x.sin();
43
- },
44
- Unit: function Unit(x) {
45
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
46
- throw new TypeError('Unit in function sin is no angle');
47
- }
48
-
49
- return this(x.value);
50
- },
51
- 'Array | Matrix': function ArrayMatrix(x) {
52
- // deep map collection, skip zeros since sin(0) = 0
53
- return deepMap(x, this, true);
54
- }
55
- });
42
+ 'Complex | BigNumber': x => x.sin()
43
+ }, trigUnit);
56
44
  });
@@ -1,5 +1,4 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { sinhNumber } from '../../plain/number/index.js';
4
3
  var name = 'sinh';
5
4
  var dependencies = ['typed'];
@@ -12,7 +11,8 @@ export var createSinh = /* #__PURE__ */factory(name, dependencies, _ref => {
12
11
  * Calculate the hyperbolic sine of a value,
13
12
  * defined as `sinh(x) = 1/2 * (exp(x) - exp(-x))`.
14
13
  *
15
- * For matrices, the function is evaluated element wise.
14
+ * To avoid confusion with the matrix hyperbolic sine, this function does
15
+ * not apply to matrices.
16
16
  *
17
17
  * Syntax:
18
18
  *
@@ -26,27 +26,11 @@ export var createSinh = /* #__PURE__ */factory(name, dependencies, _ref => {
26
26
  *
27
27
  * cosh, tanh
28
28
  *
29
- * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input
30
- * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic sine of x
29
+ * @param {number | BigNumber | Complex} x Function input
30
+ * @return {number | BigNumber | Complex} Hyperbolic sine of x
31
31
  */
32
32
  return typed(name, {
33
33
  number: sinhNumber,
34
- Complex: function Complex(x) {
35
- return x.sinh();
36
- },
37
- BigNumber: function BigNumber(x) {
38
- return x.sinh();
39
- },
40
- Unit: function Unit(x) {
41
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
42
- throw new TypeError('Unit in function sinh is no angle');
43
- }
44
-
45
- return this(x.value);
46
- },
47
- 'Array | Matrix': function ArrayMatrix(x) {
48
- // deep map collection, skip zeros since sinh(0) = 0
49
- return deepMap(x, this, true);
50
- }
34
+ 'Complex | BigNumber': x => x.sinh()
51
35
  });
52
36
  });
@@ -1,16 +1,19 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
2
+ import { createTrigUnit } from './trigUnit.js';
3
3
  var name = 'tan';
4
4
  var dependencies = ['typed'];
5
5
  export var createTan = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
9
-
9
+ var trigUnit = createTrigUnit({
10
+ typed
11
+ });
10
12
  /**
11
13
  * Calculate the tangent of a value. `tan(x)` is equal to `sin(x) / cos(x)`.
12
14
  *
13
- * For matrices, the function is evaluated element wise.
15
+ * To avoid confusion with the matrix tangent, this function does not apply
16
+ * to matrices.
14
17
  *
15
18
  * Syntax:
16
19
  *
@@ -27,27 +30,12 @@ export var createTan = /* #__PURE__ */factory(name, dependencies, _ref => {
27
30
  *
28
31
  * atan, sin, cos
29
32
  *
30
- * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input
31
- * @return {number | BigNumber | Complex | Array | Matrix} Tangent of x
33
+ * @param {number | BigNumber | Complex | Unit} x Function input
34
+ * @return {number | BigNumber | Complex} Tangent of x
32
35
  */
36
+
33
37
  return typed(name, {
34
38
  number: Math.tan,
35
- Complex: function Complex(x) {
36
- return x.tan();
37
- },
38
- BigNumber: function BigNumber(x) {
39
- return x.tan();
40
- },
41
- Unit: function Unit(x) {
42
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
43
- throw new TypeError('Unit in function tan is no angle');
44
- }
45
-
46
- return this(x.value);
47
- },
48
- 'Array | Matrix': function ArrayMatrix(x) {
49
- // deep map collection, skip zeros since tan(0) = 0
50
- return deepMap(x, this, true);
51
- }
52
- });
39
+ 'Complex | BigNumber': x => x.tan()
40
+ }, trigUnit);
53
41
  });
@@ -1,5 +1,4 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { tanh as _tanh } from '../../utils/number.js';
4
3
  var name = 'tanh';
5
4
  var dependencies = ['typed'];
@@ -12,7 +11,8 @@ export var createTanh = /* #__PURE__ */factory(name, dependencies, _ref => {
12
11
  * Calculate the hyperbolic tangent of a value,
13
12
  * defined as `tanh(x) = (exp(2 * x) - 1) / (exp(2 * x) + 1)`.
14
13
  *
15
- * For matrices, the function is evaluated element wise.
14
+ * To avoid confusion with matrix hyperbolic tangent, this function does
15
+ * not apply to matrices.
16
16
  *
17
17
  * Syntax:
18
18
  *
@@ -29,27 +29,11 @@ export var createTanh = /* #__PURE__ */factory(name, dependencies, _ref => {
29
29
  *
30
30
  * sinh, cosh, coth
31
31
  *
32
- * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input
33
- * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic tangent of x
32
+ * @param {number | BigNumber | Complex} x Function input
33
+ * @return {number | BigNumber | Complex} Hyperbolic tangent of x
34
34
  */
35
35
  return typed('tanh', {
36
36
  number: _tanh,
37
- Complex: function Complex(x) {
38
- return x.tanh();
39
- },
40
- BigNumber: function BigNumber(x) {
41
- return x.tanh();
42
- },
43
- Unit: function Unit(x) {
44
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
45
- throw new TypeError('Unit in function tanh is no angle');
46
- }
47
-
48
- return this(x.value);
49
- },
50
- 'Array | Matrix': function ArrayMatrix(x) {
51
- // deep map collection, skip zeros since tanh(0) = 0
52
- return deepMap(x, this, true);
53
- }
37
+ 'Complex | BigNumber': x => x.tanh()
54
38
  });
55
39
  });
@@ -0,0 +1,15 @@
1
+ import { factory } from '../../utils/factory.js';
2
+ export var createTrigUnit = /* #__PURE__ */factory('trigUnit', ['typed'], _ref => {
3
+ var {
4
+ typed
5
+ } = _ref;
6
+ return {
7
+ Unit: typed.referToSelf(self => x => {
8
+ if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
9
+ throw new TypeError('Unit in function cot is no angle');
10
+ }
11
+
12
+ return typed.find(self, x.valueType())(x.value);
13
+ })
14
+ };
15
+ });
@@ -1,6 +1,5 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';
3
- import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
2
+ import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
4
3
  var name = 'to';
5
4
  var dependencies = ['typed', 'matrix'];
6
5
  export var createTo = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -8,11 +7,9 @@ export var createTo = /* #__PURE__ */factory(name, dependencies, _ref => {
8
7
  typed,
9
8
  matrix
10
9
  } = _ref;
11
- var algorithm13 = createAlgorithm13({
12
- typed
13
- });
14
- var algorithm14 = createAlgorithm14({
15
- typed
10
+ var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
11
+ typed,
12
+ matrix
16
13
  });
17
14
  /**
18
15
  * Change the unit of a value.
@@ -40,40 +37,8 @@ export var createTo = /* #__PURE__ */factory(name, dependencies, _ref => {
40
37
  */
41
38
 
42
39
  return typed(name, {
43
- 'Unit, Unit | string': function UnitUnitString(x, unit) {
44
- return x.to(unit);
45
- },
46
- 'Matrix, Matrix': function MatrixMatrix(x, y) {
47
- // SparseMatrix does not support Units
48
- return algorithm13(x, y, this);
49
- },
50
- 'Array, Array': function ArrayArray(x, y) {
51
- // use matrix implementation
52
- return this(matrix(x), matrix(y)).valueOf();
53
- },
54
- 'Array, Matrix': function ArrayMatrix(x, y) {
55
- // use matrix implementation
56
- return this(matrix(x), y);
57
- },
58
- 'Matrix, Array': function MatrixArray(x, y) {
59
- // use matrix implementation
60
- return this(x, matrix(y));
61
- },
62
- 'Matrix, any': function MatrixAny(x, y) {
63
- // SparseMatrix does not support Units
64
- return algorithm14(x, y, this, false);
65
- },
66
- 'any, Matrix': function anyMatrix(x, y) {
67
- // SparseMatrix does not support Units
68
- return algorithm14(y, x, this, true);
69
- },
70
- 'Array, any': function ArrayAny(x, y) {
71
- // use matrix implementation
72
- return algorithm14(matrix(x), y, this, false).valueOf();
73
- },
74
- 'any, Array': function anyArray(x, y) {
75
- // use matrix implementation
76
- return algorithm14(matrix(y), x, this, true).valueOf();
77
- }
78
- });
40
+ 'Unit, Unit | string': (x, unit) => x.to(unit)
41
+ }, matrixAlgorithmSuite({
42
+ Ds: true
43
+ }));
79
44
  });
@@ -17,7 +17,7 @@ export var createClone = /* #__PURE__ */factory(name, dependencies, _ref => {
17
17
  * Examples:
18
18
  *
19
19
  * math.clone(3.5) // returns number 3.5
20
- * math.clone(math.complex('2-4i') // returns Complex 2 - 4i
20
+ * math.clone(math.complex('2-4i')) // returns Complex 2 - 4i
21
21
  * math.clone(math.unit(45, 'deg')) // returns Unit 45 deg
22
22
  * math.clone([[1, 2], [3, 4]]) // returns Array [[1, 2], [3, 4]]
23
23
  * math.clone("hello world") // returns string "hello world"
@@ -24,7 +24,8 @@ export var createHasNumericValue = /* #__PURE__ */factory(name, dependencies, _r
24
24
  * math.hasNumericValue(0) // returns true
25
25
  * math.hasNumericValue(math.bignumber(500)) // returns true
26
26
  * math.hasNumericValue(math.fraction(4)) // returns true
27
- * math.hasNumericValue(math.complex('2-4i') // returns false
27
+ * math.hasNumericValue(math.complex('2-4i')) // returns false
28
+ * math.hasNumericValue(false) // returns true
28
29
  * math.hasNumericValue([2.3, 'foo', false]) // returns [true, false, true]
29
30
  *
30
31
  * See also:
@@ -37,6 +38,7 @@ export var createHasNumericValue = /* #__PURE__ */factory(name, dependencies, _r
37
38
  * Throws an error in case of unknown types.
38
39
  */
39
40
  return typed(name, {
41
+ boolean: () => true,
40
42
  string: function string(x) {
41
43
  return x.trim().length > 0 && !isNaN(Number(x));
42
44
  },
@@ -27,7 +27,7 @@ export var createIsInteger = /* #__PURE__ */factory(name, dependencies, _ref =>
27
27
  * math.isInteger(math.fraction(4)) // returns true
28
28
  * math.isInteger('3') // returns true
29
29
  * math.isInteger([3, 0.5, -2]) // returns [true, false, true]
30
- * math.isInteger(math.complex('2-4i') // throws an error
30
+ * math.isInteger(math.complex('2-4i')) // throws an error
31
31
  *
32
32
  * See also:
33
33
  *
@@ -46,8 +46,6 @@ export var createIsInteger = /* #__PURE__ */factory(name, dependencies, _ref =>
46
46
  Fraction: function Fraction(x) {
47
47
  return x.d === 1 && isFinite(x.n);
48
48
  },
49
- 'Array | Matrix': function ArrayMatrix(x) {
50
- return deepMap(x, this);
51
- }
49
+ 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))
52
50
  });
53
51
  });
@@ -27,7 +27,7 @@ export var createIsNaN = /* #__PURE__ */factory(name, dependencies, _ref => {
27
27
  * math.isNaN(math.bignumber(0)) // returns false
28
28
  * math.isNaN(math.fraction(-2, 5)) // returns false
29
29
  * math.isNaN('-2') // returns false
30
- * math.isNaN([2, 0, -3, NaN]') // returns [false, false, false, true]
30
+ * math.isNaN([2, 0, -3, NaN]) // returns [false, false, false, true]
31
31
  *
32
32
  * See also:
33
33
  *
@@ -27,7 +27,7 @@ export var createIsNegative = /* #__PURE__ */factory(name, dependencies, _ref =>
27
27
  * math.isNegative(math.bignumber(2)) // returns false
28
28
  * math.isNegative(math.fraction(-2, 5)) // returns true
29
29
  * math.isNegative('-2') // returns true
30
- * math.isNegative([2, 0, -3]') // returns [false, false, true]
30
+ * math.isNegative([2, 0, -3]) // returns [false, false, true]
31
31
  *
32
32
  * See also:
33
33
  *
@@ -45,11 +45,7 @@ export var createIsNegative = /* #__PURE__ */factory(name, dependencies, _ref =>
45
45
  Fraction: function Fraction(x) {
46
46
  return x.s < 0; // It's enough to decide on the sign
47
47
  },
48
- Unit: function Unit(x) {
49
- return this(x.value);
50
- },
51
- 'Array | Matrix': function ArrayMatrix(x) {
52
- return deepMap(x, this);
53
- }
48
+ Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),
49
+ 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))
54
50
  });
55
51
  });
@@ -24,7 +24,7 @@ export var createIsNumeric = /* #__PURE__ */factory(name, dependencies, _ref =>
24
24
  * math.isNumeric(0) // returns true
25
25
  * math.isNumeric(math.bignumber(500)) // returns true
26
26
  * math.isNumeric(math.fraction(4)) // returns true
27
- * math.isNumeric(math.complex('2-4i') // returns false
27
+ * math.isNumeric(math.complex('2-4i')) // returns false
28
28
  * math.isNumeric([2.3, 'foo', false]) // returns [true, false, true]
29
29
  *
30
30
  * See also:
@@ -37,14 +37,8 @@ export var createIsNumeric = /* #__PURE__ */factory(name, dependencies, _ref =>
37
37
  * Throws an error in case of unknown types.
38
38
  */
39
39
  return typed(name, {
40
- 'number | BigNumber | Fraction | boolean': function numberBigNumberFractionBoolean() {
41
- return true;
42
- },
43
- 'Complex | Unit | string | null | undefined | Node': function ComplexUnitStringNullUndefinedNode() {
44
- return false;
45
- },
46
- 'Array | Matrix': function ArrayMatrix(x) {
47
- return deepMap(x, this);
48
- }
40
+ 'number | BigNumber | Fraction | boolean': () => true,
41
+ 'Complex | Unit | string | null | undefined | Node': () => false,
42
+ 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))
49
43
  });
50
44
  });
@@ -27,7 +27,7 @@ export var createIsPositive = /* #__PURE__ */factory(name, dependencies, _ref =>
27
27
  * math.isPositive(0.5) // returns true
28
28
  * math.isPositive(math.bignumber(2)) // returns true
29
29
  * math.isPositive(math.fraction(-2, 5)) // returns false
30
- * math.isPositive(math.fraction(1,3)) // returns false
30
+ * math.isPositive(math.fraction(1, 3)) // returns true
31
31
  * math.isPositive('2') // returns true
32
32
  * math.isPositive([2, 0, -3]) // returns [true, false, false]
33
33
  *
@@ -47,11 +47,7 @@ export var createIsPositive = /* #__PURE__ */factory(name, dependencies, _ref =>
47
47
  Fraction: function Fraction(x) {
48
48
  return x.s > 0 && x.n > 0;
49
49
  },
50
- Unit: function Unit(x) {
51
- return this(x.value);
52
- },
53
- 'Array | Matrix': function ArrayMatrix(x) {
54
- return deepMap(x, this);
55
- }
50
+ Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),
51
+ 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))
56
52
  });
57
53
  });
@@ -135,8 +135,6 @@ export var createIsPrime = /* #__PURE__ */factory(name, dependencies, _ref => {
135
135
 
136
136
  return true;
137
137
  },
138
- 'Array | Matrix': function ArrayMatrix(x) {
139
- return deepMap(x, this);
140
- }
138
+ 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))
141
139
  });
142
140
  });
@@ -21,17 +21,17 @@ export var createIsZero = /* #__PURE__ */factory(name, dependencies, _ref => {
21
21
  *
22
22
  * Examples:
23
23
  *
24
- * math.isZero(0) // returns true
25
- * math.isZero(2) // returns false
26
- * math.isZero(0.5) // returns false
27
- * math.isZero(math.bignumber(0)) // returns true
28
- * math.isZero(math.fraction(0)) // returns true
29
- * math.isZero(math.fraction(1,3)) // returns false
30
- * math.isZero(math.complex('2 - 4i') // returns false
31
- * math.isZero(math.complex('0i') // returns true
32
- * math.isZero('0') // returns true
33
- * math.isZero('2') // returns false
34
- * math.isZero([2, 0, -3]') // returns [false, true, false]
24
+ * math.isZero(0) // returns true
25
+ * math.isZero(2) // returns false
26
+ * math.isZero(0.5) // returns false
27
+ * math.isZero(math.bignumber(0)) // returns true
28
+ * math.isZero(math.fraction(0)) // returns true
29
+ * math.isZero(math.fraction(1,3)) // returns false
30
+ * math.isZero(math.complex('2 - 4i')) // returns false
31
+ * math.isZero(math.complex('0i')) // returns true
32
+ * math.isZero('0') // returns true
33
+ * math.isZero('2') // returns false
34
+ * math.isZero([2, 0, -3]) // returns [false, true, false]
35
35
  *
36
36
  * See also:
37
37
  *
@@ -52,11 +52,7 @@ export var createIsZero = /* #__PURE__ */factory(name, dependencies, _ref => {
52
52
  Fraction: function Fraction(x) {
53
53
  return x.d === 1 && x.n === 0;
54
54
  },
55
- Unit: function Unit(x) {
56
- return this(x.value);
57
- },
58
- 'Array | Matrix': function ArrayMatrix(x) {
59
- return deepMap(x, this);
60
- }
55
+ Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),
56
+ 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))
61
57
  });
62
58
  });
@@ -30,12 +30,12 @@ export var createNumeric = /* #__PURE__ */factory(name, dependencies, _ref => {
30
30
  *
31
31
  * Examples:
32
32
  *
33
- * math.numeric('4') // returns number 4
34
- * math.numeric('4', 'number') // returns number 4
33
+ * math.numeric('4') // returns 4
34
+ * math.numeric('4', 'number') // returns 4
35
35
  * math.numeric('4', 'BigNumber') // returns BigNumber 4
36
36
  * math.numeric('4', 'Fraction') // returns Fraction 4
37
37
  * math.numeric(4, 'Fraction') // returns Fraction 4
38
- * math.numeric(math.fraction(2, 5), 'number') // returns number 0.4
38
+ * math.numeric(math.fraction(2, 5), 'number') // returns 0.4
39
39
  *
40
40
  * See also:
41
41
  *
@@ -50,7 +50,14 @@ export var createNumeric = /* #__PURE__ */factory(name, dependencies, _ref => {
50
50
  * Returns an instance of the numeric in the requested type
51
51
  */
52
52
 
53
- return function numeric(value, outputType) {
53
+ return function numeric(value) {
54
+ var outputType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'number';
55
+ var check = arguments.length > 2 ? arguments[2] : undefined;
56
+
57
+ if (check !== undefined) {
58
+ throw new SyntaxError('numeric() takes one or two arguments');
59
+ }
60
+
54
61
  var inputType = typeOf(value);
55
62
 
56
63
  if (!(inputType in validInputTypes)) {