mathjs 10.6.2 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/HISTORY.md +74 -1
  2. package/README.md +1 -1
  3. package/lib/browser/math.js +2 -41
  4. package/lib/browser/math.js.LICENSE.txt +43 -0
  5. package/lib/browser/math.js.map +1 -1
  6. package/lib/cjs/core/create.js +6 -5
  7. package/lib/cjs/core/function/import.js +4 -14
  8. package/lib/cjs/core/function/typed.js +54 -12
  9. package/lib/cjs/defaultInstance.js +3 -3
  10. package/lib/cjs/entry/allFactoriesAny.js +1 -1
  11. package/lib/cjs/entry/allFactoriesNumber.js +1 -1
  12. package/lib/cjs/entry/configReadonly.js +1 -1
  13. package/lib/cjs/entry/dependenciesAny/dependenciesChainClass.generated.js +3 -0
  14. package/lib/cjs/entry/dependenciesAny/dependenciesKldivergence.generated.js +3 -0
  15. package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +3 -0
  16. package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +3 -0
  17. package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +3 -0
  18. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +56 -0
  19. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +6 -0
  20. package/lib/cjs/entry/dependenciesAny/dependenciesSqrtm.generated.js +3 -0
  21. package/lib/cjs/entry/dependenciesAny/dependenciesStd.generated.js +3 -0
  22. package/lib/cjs/entry/dependenciesAny/dependenciesStdTransform.generated.js +3 -0
  23. package/lib/cjs/entry/dependenciesAny.generated.js +8 -0
  24. package/lib/cjs/entry/dependenciesNumber/dependenciesChainClass.generated.js +3 -0
  25. package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +3 -0
  26. package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +3 -0
  27. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +3 -0
  28. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +50 -0
  29. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +6 -0
  30. package/lib/cjs/entry/dependenciesNumber/dependenciesStd.generated.js +3 -0
  31. package/lib/cjs/entry/dependenciesNumber/dependenciesStdTransform.generated.js +3 -0
  32. package/lib/cjs/entry/dependenciesNumber.generated.js +8 -0
  33. package/lib/cjs/entry/impureFunctionsAny.generated.js +87 -61
  34. package/lib/cjs/entry/impureFunctionsNumber.generated.js +93 -69
  35. package/lib/cjs/entry/pureFunctionsAny.generated.js +50 -45
  36. package/lib/cjs/entry/pureFunctionsNumber.generated.js +22 -19
  37. package/lib/cjs/expression/Parser.js +1 -1
  38. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +8 -5
  39. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyConstant.js +15 -0
  40. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  41. package/lib/cjs/expression/node/AccessorNode.js +216 -173
  42. package/lib/cjs/expression/node/ArrayNode.js +206 -160
  43. package/lib/cjs/expression/node/AssignmentNode.js +321 -270
  44. package/lib/cjs/expression/node/BlockNode.js +223 -172
  45. package/lib/cjs/expression/node/ConditionalNode.js +253 -193
  46. package/lib/cjs/expression/node/ConstantNode.js +216 -171
  47. package/lib/cjs/expression/node/FunctionAssignmentNode.js +258 -196
  48. package/lib/cjs/expression/node/FunctionNode.js +456 -416
  49. package/lib/cjs/expression/node/IndexNode.js +256 -210
  50. package/lib/cjs/expression/node/Node.js +411 -378
  51. package/lib/cjs/expression/node/ObjectNode.js +223 -178
  52. package/lib/cjs/expression/node/OperatorNode.js +474 -397
  53. package/lib/cjs/expression/node/ParenthesisNode.js +189 -143
  54. package/lib/cjs/expression/node/RangeNode.js +272 -224
  55. package/lib/cjs/expression/node/RelationalNode.js +246 -195
  56. package/lib/cjs/expression/node/SymbolNode.js +219 -172
  57. package/lib/cjs/expression/node/utils/access.js +1 -1
  58. package/lib/cjs/expression/node/utils/assign.js +1 -1
  59. package/lib/cjs/expression/operators.js +117 -23
  60. package/lib/cjs/expression/parse.js +37 -19
  61. package/lib/cjs/expression/transform/std.transform.js +3 -1
  62. package/lib/cjs/factoriesAny.js +8 -0
  63. package/lib/cjs/factoriesNumber.js +10 -1
  64. package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
  65. package/lib/cjs/function/algebra/derivative.js +22 -30
  66. package/lib/cjs/function/algebra/leafCount.js +0 -3
  67. package/lib/cjs/function/algebra/rationalize.js +78 -108
  68. package/lib/cjs/function/algebra/resolve.js +53 -16
  69. package/lib/cjs/function/algebra/simplify/util.js +1 -1
  70. package/lib/cjs/function/algebra/simplify.js +87 -114
  71. package/lib/cjs/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +44 -10
  72. package/lib/cjs/function/algebra/simplifyCore.js +196 -93
  73. package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
  74. package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
  75. package/lib/cjs/function/algebra/symbolicEqual.js +9 -26
  76. package/lib/cjs/function/arithmetic/abs.js +7 -14
  77. package/lib/cjs/function/arithmetic/add.js +26 -70
  78. package/lib/cjs/function/arithmetic/addScalar.js +17 -9
  79. package/lib/cjs/function/arithmetic/cbrt.js +7 -11
  80. package/lib/cjs/function/arithmetic/ceil.js +56 -46
  81. package/lib/cjs/function/arithmetic/cube.js +5 -10
  82. package/lib/cjs/function/arithmetic/divide.js +7 -7
  83. package/lib/cjs/function/arithmetic/divideScalar.js +4 -18
  84. package/lib/cjs/function/arithmetic/dotDivide.js +22 -65
  85. package/lib/cjs/function/arithmetic/dotMultiply.js +16 -61
  86. package/lib/cjs/function/arithmetic/dotPow.js +30 -63
  87. package/lib/cjs/function/arithmetic/exp.js +8 -12
  88. package/lib/cjs/function/arithmetic/expm1.js +10 -10
  89. package/lib/cjs/function/arithmetic/fix.js +33 -27
  90. package/lib/cjs/function/arithmetic/floor.js +56 -46
  91. package/lib/cjs/function/arithmetic/gcd.js +27 -68
  92. package/lib/cjs/function/arithmetic/hypot.js +9 -5
  93. package/lib/cjs/function/arithmetic/invmod.js +1 -1
  94. package/lib/cjs/function/arithmetic/lcm.js +27 -68
  95. package/lib/cjs/function/arithmetic/log.js +10 -12
  96. package/lib/cjs/function/arithmetic/log10.js +5 -3
  97. package/lib/cjs/function/arithmetic/log1p.js +11 -7
  98. package/lib/cjs/function/arithmetic/log2.js +5 -3
  99. package/lib/cjs/function/arithmetic/mod.js +22 -64
  100. package/lib/cjs/function/arithmetic/multiply.js +40 -35
  101. package/lib/cjs/function/arithmetic/multiplyScalar.js +2 -9
  102. package/lib/cjs/function/arithmetic/norm.js +1 -5
  103. package/lib/cjs/function/arithmetic/nthRoot.js +80 -92
  104. package/lib/cjs/function/arithmetic/round.js +56 -42
  105. package/lib/cjs/function/arithmetic/sign.js +14 -10
  106. package/lib/cjs/function/arithmetic/sqrt.js +5 -9
  107. package/lib/cjs/function/arithmetic/square.js +6 -10
  108. package/lib/cjs/function/arithmetic/subtract.js +44 -100
  109. package/lib/cjs/function/arithmetic/unaryMinus.js +14 -16
  110. package/lib/cjs/function/arithmetic/unaryPlus.js +6 -4
  111. package/lib/cjs/function/bitwise/bitAnd.js +17 -61
  112. package/lib/cjs/function/bitwise/bitNot.js +5 -3
  113. package/lib/cjs/function/bitwise/bitOr.js +16 -60
  114. package/lib/cjs/function/bitwise/bitXor.js +17 -61
  115. package/lib/cjs/function/bitwise/leftShift.js +68 -81
  116. package/lib/cjs/function/bitwise/rightArithShift.js +68 -81
  117. package/lib/cjs/function/bitwise/rightLogShift.js +68 -81
  118. package/lib/cjs/function/bitwise/useMatrixForArrayScalar.js +36 -0
  119. package/lib/cjs/function/complex/arg.js +5 -3
  120. package/lib/cjs/function/complex/conj.js +6 -7
  121. package/lib/cjs/function/complex/im.js +7 -8
  122. package/lib/cjs/function/complex/re.js +6 -10
  123. package/lib/cjs/function/logical/and.js +74 -80
  124. package/lib/cjs/function/logical/not.js +13 -6
  125. package/lib/cjs/function/logical/or.js +21 -63
  126. package/lib/cjs/function/logical/xor.js +21 -63
  127. package/lib/cjs/function/matrix/diff.js +10 -7
  128. package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
  129. package/lib/cjs/function/matrix/fft.js +2 -2
  130. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  131. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  132. package/lib/cjs/function/matrix/ones.js +2 -1
  133. package/lib/cjs/function/matrix/sqrtm.js +3 -2
  134. package/lib/cjs/function/matrix/transpose.js +47 -48
  135. package/lib/cjs/function/matrix/zeros.js +2 -1
  136. package/lib/cjs/function/probability/factorial.js +5 -3
  137. package/lib/cjs/function/probability/gamma.js +38 -40
  138. package/lib/cjs/function/probability/kldivergence.js +5 -2
  139. package/lib/cjs/function/probability/lgamma.js +30 -30
  140. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  141. package/lib/cjs/function/relational/compare.js +21 -67
  142. package/lib/cjs/function/relational/compareNatural.js +59 -54
  143. package/lib/cjs/function/relational/compareText.js +10 -43
  144. package/lib/cjs/function/relational/compareUnits.js +24 -0
  145. package/lib/cjs/function/relational/equal.js +19 -80
  146. package/lib/cjs/function/relational/equalScalar.js +7 -9
  147. package/lib/cjs/function/relational/larger.js +21 -67
  148. package/lib/cjs/function/relational/largerEq.js +21 -67
  149. package/lib/cjs/function/relational/smaller.js +21 -67
  150. package/lib/cjs/function/relational/smallerEq.js +21 -67
  151. package/lib/cjs/function/relational/unequal.js +19 -80
  152. package/lib/cjs/function/special/erf.js +5 -3
  153. package/lib/cjs/function/statistics/std.js +11 -2
  154. package/lib/cjs/function/trigonometry/acos.js +4 -8
  155. package/lib/cjs/function/trigonometry/acosh.js +2 -7
  156. package/lib/cjs/function/trigonometry/acot.js +4 -8
  157. package/lib/cjs/function/trigonometry/acoth.js +4 -8
  158. package/lib/cjs/function/trigonometry/acsc.js +4 -8
  159. package/lib/cjs/function/trigonometry/acsch.js +4 -8
  160. package/lib/cjs/function/trigonometry/asec.js +4 -8
  161. package/lib/cjs/function/trigonometry/asech.js +4 -8
  162. package/lib/cjs/function/trigonometry/asin.js +4 -9
  163. package/lib/cjs/function/trigonometry/asinh.js +4 -9
  164. package/lib/cjs/function/trigonometry/atan.js +4 -9
  165. package/lib/cjs/function/trigonometry/atan2.js +24 -62
  166. package/lib/cjs/function/trigonometry/atanh.js +4 -9
  167. package/lib/cjs/function/trigonometry/cos.js +11 -20
  168. package/lib/cjs/function/trigonometry/cosh.js +5 -19
  169. package/lib/cjs/function/trigonometry/cot.js +9 -15
  170. package/lib/cjs/function/trigonometry/coth.js +4 -15
  171. package/lib/cjs/function/trigonometry/csc.js +11 -17
  172. package/lib/cjs/function/trigonometry/csch.js +4 -15
  173. package/lib/cjs/function/trigonometry/sec.js +11 -17
  174. package/lib/cjs/function/trigonometry/sech.js +4 -15
  175. package/lib/cjs/function/trigonometry/sin.js +11 -21
  176. package/lib/cjs/function/trigonometry/sinh.js +5 -20
  177. package/lib/cjs/function/trigonometry/tan.js +11 -21
  178. package/lib/cjs/function/trigonometry/tanh.js +5 -20
  179. package/lib/cjs/function/trigonometry/trigUnit.js +24 -0
  180. package/lib/cjs/function/unit/to.js +7 -41
  181. package/lib/cjs/function/utils/hasNumericValue.js +4 -0
  182. package/lib/cjs/function/utils/isInteger.js +5 -3
  183. package/lib/cjs/function/utils/isNegative.js +10 -6
  184. package/lib/cjs/function/utils/isNumeric.js +5 -3
  185. package/lib/cjs/function/utils/isPositive.js +10 -6
  186. package/lib/cjs/function/utils/isPrime.js +5 -3
  187. package/lib/cjs/function/utils/isZero.js +10 -6
  188. package/lib/cjs/function/utils/numeric.js +11 -4
  189. package/lib/cjs/function/utils/typeOf.js +38 -44
  190. package/lib/cjs/header.js +2 -2
  191. package/lib/cjs/plain/bignumber/index.js +1 -1
  192. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  193. package/lib/cjs/type/bignumber/function/bignumber.js +6 -4
  194. package/lib/cjs/type/boolean.js +7 -5
  195. package/lib/cjs/type/chain/Chain.js +23 -3
  196. package/lib/cjs/type/complex/Complex.js +18 -14
  197. package/lib/cjs/type/complex/function/complex.js +6 -4
  198. package/lib/cjs/type/fraction/Fraction.js +10 -6
  199. package/lib/cjs/type/fraction/function/fraction.js +6 -4
  200. package/lib/cjs/type/matrix/DenseMatrix.js +21 -6
  201. package/lib/cjs/type/matrix/SparseMatrix.js +12 -2
  202. package/lib/cjs/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +4 -4
  203. package/lib/cjs/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +5 -5
  204. package/lib/cjs/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +5 -5
  205. package/lib/cjs/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +7 -7
  206. package/lib/cjs/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +5 -5
  207. package/lib/cjs/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +5 -5
  208. package/lib/cjs/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +5 -5
  209. package/lib/cjs/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +6 -6
  210. package/lib/cjs/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +5 -5
  211. package/lib/cjs/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +5 -5
  212. package/lib/cjs/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +5 -5
  213. package/lib/cjs/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +5 -5
  214. package/lib/cjs/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +5 -5
  215. package/lib/cjs/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +5 -5
  216. package/lib/cjs/type/matrix/utils/matrixAlgorithmSuite.js +238 -0
  217. package/lib/cjs/type/number.js +6 -4
  218. package/lib/cjs/type/string.js +7 -5
  219. package/lib/cjs/type/unit/Unit.js +69 -21
  220. package/lib/cjs/type/unit/function/createUnit.js +2 -1
  221. package/lib/cjs/type/unit/function/unit.js +9 -3
  222. package/lib/cjs/utils/customs.js +2 -2
  223. package/lib/cjs/utils/emitter.js +1 -1
  224. package/lib/cjs/utils/function.js +2 -2
  225. package/lib/cjs/utils/is.js +27 -25
  226. package/lib/cjs/utils/latex.js +3 -3
  227. package/lib/cjs/utils/lruQueue.js +1 -1
  228. package/lib/cjs/utils/map.js +3 -3
  229. package/lib/cjs/utils/object.js +2 -2
  230. package/lib/cjs/utils/snapshot.js +30 -57
  231. package/lib/cjs/utils/string.js +3 -3
  232. package/lib/cjs/version.js +1 -1
  233. package/lib/esm/core/create.js +2 -1
  234. package/lib/esm/core/function/import.js +2 -12
  235. package/lib/esm/core/function/typed.js +47 -11
  236. package/lib/esm/entry/dependenciesAny/dependenciesChainClass.generated.js +2 -0
  237. package/lib/esm/entry/dependenciesAny/dependenciesKldivergence.generated.js +2 -0
  238. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
  239. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +2 -0
  240. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
  241. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +34 -0
  242. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +4 -0
  243. package/lib/esm/entry/dependenciesAny/dependenciesSqrtm.generated.js +2 -0
  244. package/lib/esm/entry/dependenciesAny/dependenciesStd.generated.js +2 -0
  245. package/lib/esm/entry/dependenciesAny/dependenciesStdTransform.generated.js +2 -0
  246. package/lib/esm/entry/dependenciesAny.generated.js +1 -0
  247. package/lib/esm/entry/dependenciesNumber/dependenciesChainClass.generated.js +2 -0
  248. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
  249. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +2 -0
  250. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
  251. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +30 -0
  252. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +4 -0
  253. package/lib/esm/entry/dependenciesNumber/dependenciesStd.generated.js +2 -0
  254. package/lib/esm/entry/dependenciesNumber/dependenciesStdTransform.generated.js +2 -0
  255. package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
  256. package/lib/esm/entry/impureFunctionsAny.generated.js +73 -48
  257. package/lib/esm/entry/impureFunctionsNumber.generated.js +81 -58
  258. package/lib/esm/entry/pureFunctionsAny.generated.js +39 -36
  259. package/lib/esm/entry/pureFunctionsNumber.generated.js +14 -13
  260. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
  261. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js +8 -0
  262. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  263. package/lib/esm/expression/node/AccessorNode.js +158 -153
  264. package/lib/esm/expression/node/ArrayNode.js +162 -154
  265. package/lib/esm/expression/node/AssignmentNode.js +257 -245
  266. package/lib/esm/expression/node/BlockNode.js +177 -163
  267. package/lib/esm/expression/node/ConditionalNode.js +197 -174
  268. package/lib/esm/expression/node/ConstantNode.js +171 -163
  269. package/lib/esm/expression/node/FunctionAssignmentNode.js +205 -180
  270. package/lib/esm/expression/node/FunctionNode.js +407 -407
  271. package/lib/esm/expression/node/IndexNode.js +206 -198
  272. package/lib/esm/expression/node/Node.js +325 -325
  273. package/lib/esm/expression/node/ObjectNode.js +166 -157
  274. package/lib/esm/expression/node/OperatorNode.js +414 -377
  275. package/lib/esm/expression/node/ParenthesisNode.js +146 -138
  276. package/lib/esm/expression/node/RangeNode.js +221 -212
  277. package/lib/esm/expression/node/RelationalNode.js +190 -176
  278. package/lib/esm/expression/node/SymbolNode.js +161 -152
  279. package/lib/esm/expression/operators.js +96 -4
  280. package/lib/esm/expression/parse.js +25 -7
  281. package/lib/esm/expression/transform/std.transform.js +3 -1
  282. package/lib/esm/factoriesAny.js +1 -0
  283. package/lib/esm/factoriesNumber.js +1 -0
  284. package/lib/esm/function/algebra/derivative.js +22 -30
  285. package/lib/esm/function/algebra/leafCount.js +0 -3
  286. package/lib/esm/function/algebra/rationalize.js +83 -114
  287. package/lib/esm/function/algebra/resolve.js +25 -16
  288. package/lib/esm/function/algebra/simplify.js +82 -112
  289. package/lib/esm/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +39 -9
  290. package/lib/esm/function/algebra/simplifyCore.js +192 -91
  291. package/lib/esm/function/algebra/symbolicEqual.js +9 -26
  292. package/lib/esm/function/arithmetic/abs.js +3 -16
  293. package/lib/esm/function/arithmetic/add.js +21 -65
  294. package/lib/esm/function/arithmetic/addScalar.js +11 -5
  295. package/lib/esm/function/arithmetic/cbrt.js +7 -10
  296. package/lib/esm/function/arithmetic/ceil.js +25 -25
  297. package/lib/esm/function/arithmetic/cube.js +5 -9
  298. package/lib/esm/function/arithmetic/divide.js +7 -7
  299. package/lib/esm/function/arithmetic/divideScalar.js +2 -19
  300. package/lib/esm/function/arithmetic/dotDivide.js +22 -64
  301. package/lib/esm/function/arithmetic/dotMultiply.js +16 -60
  302. package/lib/esm/function/arithmetic/dotPow.js +30 -62
  303. package/lib/esm/function/arithmetic/exp.js +8 -11
  304. package/lib/esm/function/arithmetic/expm1.js +10 -9
  305. package/lib/esm/function/arithmetic/fix.js +17 -17
  306. package/lib/esm/function/arithmetic/floor.js +25 -25
  307. package/lib/esm/function/arithmetic/gcd.js +26 -70
  308. package/lib/esm/function/arithmetic/hypot.js +7 -6
  309. package/lib/esm/function/arithmetic/lcm.js +26 -70
  310. package/lib/esm/function/arithmetic/log.js +7 -10
  311. package/lib/esm/function/arithmetic/log10.js +1 -3
  312. package/lib/esm/function/arithmetic/log1p.js +4 -6
  313. package/lib/esm/function/arithmetic/log2.js +1 -3
  314. package/lib/esm/function/arithmetic/mod.js +21 -62
  315. package/lib/esm/function/arithmetic/multiply.js +23 -27
  316. package/lib/esm/function/arithmetic/multiplyScalar.js +2 -13
  317. package/lib/esm/function/arithmetic/norm.js +0 -4
  318. package/lib/esm/function/arithmetic/nthRoot.js +38 -73
  319. package/lib/esm/function/arithmetic/round.js +26 -28
  320. package/lib/esm/function/arithmetic/sign.js +5 -7
  321. package/lib/esm/function/arithmetic/sqrt.js +5 -8
  322. package/lib/esm/function/arithmetic/square.js +6 -9
  323. package/lib/esm/function/arithmetic/subtract.js +31 -95
  324. package/lib/esm/function/arithmetic/unaryMinus.js +6 -16
  325. package/lib/esm/function/arithmetic/unaryPlus.js +2 -4
  326. package/lib/esm/function/bitwise/bitAnd.js +16 -59
  327. package/lib/esm/function/bitwise/bitNot.js +1 -3
  328. package/lib/esm/function/bitwise/bitOr.js +16 -59
  329. package/lib/esm/function/bitwise/bitXor.js +16 -59
  330. package/lib/esm/function/bitwise/leftShift.js +38 -60
  331. package/lib/esm/function/bitwise/rightArithShift.js +38 -60
  332. package/lib/esm/function/bitwise/rightLogShift.js +38 -60
  333. package/lib/esm/function/bitwise/useMatrixForArrayScalar.js +13 -0
  334. package/lib/esm/function/complex/arg.js +1 -3
  335. package/lib/esm/function/complex/conj.js +3 -12
  336. package/lib/esm/function/complex/im.js +4 -15
  337. package/lib/esm/function/complex/re.js +3 -15
  338. package/lib/esm/function/logical/and.js +35 -57
  339. package/lib/esm/function/logical/not.js +3 -6
  340. package/lib/esm/function/logical/or.js +16 -61
  341. package/lib/esm/function/logical/xor.js +16 -61
  342. package/lib/esm/function/matrix/diff.js +2 -7
  343. package/lib/esm/function/matrix/ones.js +2 -1
  344. package/lib/esm/function/matrix/sqrtm.js +3 -2
  345. package/lib/esm/function/matrix/transpose.js +47 -50
  346. package/lib/esm/function/matrix/zeros.js +2 -1
  347. package/lib/esm/function/probability/factorial.js +1 -3
  348. package/lib/esm/function/probability/gamma.js +38 -39
  349. package/lib/esm/function/probability/kldivergence.js +3 -2
  350. package/lib/esm/function/probability/lgamma.js +29 -29
  351. package/lib/esm/function/relational/compare.js +21 -67
  352. package/lib/esm/function/relational/compareNatural.js +54 -49
  353. package/lib/esm/function/relational/compareText.js +10 -42
  354. package/lib/esm/function/relational/compareUnits.js +15 -0
  355. package/lib/esm/function/relational/equal.js +19 -79
  356. package/lib/esm/function/relational/equalScalar.js +6 -9
  357. package/lib/esm/function/relational/larger.js +23 -73
  358. package/lib/esm/function/relational/largerEq.js +23 -73
  359. package/lib/esm/function/relational/smaller.js +23 -73
  360. package/lib/esm/function/relational/smallerEq.js +23 -73
  361. package/lib/esm/function/relational/unequal.js +19 -79
  362. package/lib/esm/function/special/erf.js +1 -3
  363. package/lib/esm/function/statistics/std.js +10 -2
  364. package/lib/esm/function/trigonometry/acos.js +4 -7
  365. package/lib/esm/function/trigonometry/acosh.js +2 -6
  366. package/lib/esm/function/trigonometry/acot.js +4 -7
  367. package/lib/esm/function/trigonometry/acoth.js +4 -7
  368. package/lib/esm/function/trigonometry/acsc.js +4 -7
  369. package/lib/esm/function/trigonometry/acsch.js +4 -7
  370. package/lib/esm/function/trigonometry/asec.js +4 -7
  371. package/lib/esm/function/trigonometry/asech.js +4 -7
  372. package/lib/esm/function/trigonometry/asin.js +4 -8
  373. package/lib/esm/function/trigonometry/asinh.js +4 -8
  374. package/lib/esm/function/trigonometry/atan.js +4 -8
  375. package/lib/esm/function/trigonometry/atan2.js +25 -64
  376. package/lib/esm/function/trigonometry/atanh.js +4 -8
  377. package/lib/esm/function/trigonometry/cos.js +11 -22
  378. package/lib/esm/function/trigonometry/cosh.js +5 -20
  379. package/lib/esm/function/trigonometry/cot.js +10 -20
  380. package/lib/esm/function/trigonometry/coth.js +6 -20
  381. package/lib/esm/function/trigonometry/csc.js +12 -22
  382. package/lib/esm/function/trigonometry/csch.js +6 -20
  383. package/lib/esm/function/trigonometry/sec.js +12 -22
  384. package/lib/esm/function/trigonometry/sech.js +6 -20
  385. package/lib/esm/function/trigonometry/sin.js +11 -23
  386. package/lib/esm/function/trigonometry/sinh.js +5 -21
  387. package/lib/esm/function/trigonometry/tan.js +11 -23
  388. package/lib/esm/function/trigonometry/tanh.js +5 -21
  389. package/lib/esm/function/trigonometry/trigUnit.js +15 -0
  390. package/lib/esm/function/unit/to.js +8 -43
  391. package/lib/esm/function/utils/hasNumericValue.js +2 -0
  392. package/lib/esm/function/utils/isInteger.js +1 -3
  393. package/lib/esm/function/utils/isNegative.js +2 -6
  394. package/lib/esm/function/utils/isNumeric.js +3 -9
  395. package/lib/esm/function/utils/isPositive.js +2 -6
  396. package/lib/esm/function/utils/isPrime.js +1 -3
  397. package/lib/esm/function/utils/isZero.js +2 -6
  398. package/lib/esm/function/utils/numeric.js +11 -4
  399. package/lib/esm/function/utils/typeOf.js +38 -44
  400. package/lib/esm/type/bignumber/function/bignumber.js +1 -3
  401. package/lib/esm/type/boolean.js +1 -3
  402. package/lib/esm/type/chain/Chain.js +23 -3
  403. package/lib/esm/type/complex/Complex.js +4 -0
  404. package/lib/esm/type/complex/function/complex.js +1 -3
  405. package/lib/esm/type/fraction/Fraction.js +4 -0
  406. package/lib/esm/type/fraction/function/fraction.js +1 -3
  407. package/lib/esm/type/matrix/DenseMatrix.js +15 -1
  408. package/lib/esm/type/matrix/SparseMatrix.js +9 -0
  409. package/lib/esm/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +2 -2
  410. package/lib/esm/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +3 -3
  411. package/lib/esm/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +3 -3
  412. package/lib/esm/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +5 -5
  413. package/lib/esm/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +3 -3
  414. package/lib/esm/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +3 -3
  415. package/lib/esm/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +3 -3
  416. package/lib/esm/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +4 -4
  417. package/lib/esm/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +3 -3
  418. package/lib/esm/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +3 -3
  419. package/lib/esm/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +3 -3
  420. package/lib/esm/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +3 -3
  421. package/lib/esm/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +3 -3
  422. package/lib/esm/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +3 -3
  423. package/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js +168 -0
  424. package/lib/esm/type/number.js +1 -3
  425. package/lib/esm/type/string.js +1 -3
  426. package/lib/esm/type/unit/Unit.js +61 -13
  427. package/lib/esm/type/unit/function/createUnit.js +2 -1
  428. package/lib/esm/type/unit/function/unit.js +5 -3
  429. package/lib/esm/utils/is.js +18 -18
  430. package/lib/esm/utils/snapshot.js +22 -48
  431. package/lib/esm/version.js +1 -1
  432. package/package.json +21 -24
  433. package/types/index.d.ts +202 -181
  434. package/types/index.ts +264 -57
  435. package/lib/cjs/utils/polyfills.js +0 -14
  436. package/lib/esm/utils/polyfills.js +0 -12
@@ -1,5 +1,4 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  var name = 'atan';
4
3
  var dependencies = ['typed'];
5
4
  export var createAtan = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -10,7 +9,8 @@ export var createAtan = /* #__PURE__ */factory(name, dependencies, _ref => {
10
9
  /**
11
10
  * Calculate the inverse tangent of a value.
12
11
  *
13
- * For matrices, the function is evaluated element wise.
12
+ * To avoid confusion with matrix arctangent, this function does not apply
13
+ * to matrices.
14
14
  *
15
15
  * Syntax:
16
16
  *
@@ -27,8 +27,8 @@ export var createAtan = /* #__PURE__ */factory(name, dependencies, _ref => {
27
27
  *
28
28
  * tan, asin, acos
29
29
  *
30
- * @param {number | BigNumber | Complex | Array | Matrix} x Function input
31
- * @return {number | BigNumber | Complex | Array | Matrix} The arc tangent of x
30
+ * @param {number | BigNumber | Complex} x Function input
31
+ * @return {number | BigNumber | Complex} The arc tangent of x
32
32
  */
33
33
  return typed('atan', {
34
34
  number: function number(x) {
@@ -39,10 +39,6 @@ export var createAtan = /* #__PURE__ */factory(name, dependencies, _ref => {
39
39
  },
40
40
  BigNumber: function BigNumber(x) {
41
41
  return x.atan();
42
- },
43
- 'Array | Matrix': function ArrayMatrix(x) {
44
- // deep map collection, skip zeros since atan(0) = 0
45
- return deepMap(x, this, true);
46
42
  }
47
43
  });
48
44
  });
@@ -1,11 +1,10 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';
3
- import { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';
4
- import { createAlgorithm09 } from '../../type/matrix/utils/algorithm09.js';
5
- import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';
6
- import { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';
7
- import { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';
8
- import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
2
+ import { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';
3
+ import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';
4
+ import { createMatAlgo09xS0Sf } from '../../type/matrix/utils/matAlgo09xS0Sf.js';
5
+ import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
6
+ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
7
+ import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
9
8
  var name = 'atan2';
10
9
  var dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'DenseMatrix'];
11
10
  export var createAtan2 = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -16,30 +15,28 @@ export var createAtan2 = /* #__PURE__ */factory(name, dependencies, _ref => {
16
15
  BigNumber,
17
16
  DenseMatrix
18
17
  } = _ref;
19
- var algorithm02 = createAlgorithm02({
18
+ var matAlgo02xDS0 = createMatAlgo02xDS0({
20
19
  typed,
21
20
  equalScalar
22
21
  });
23
- var algorithm03 = createAlgorithm03({
22
+ var matAlgo03xDSf = createMatAlgo03xDSf({
24
23
  typed
25
24
  });
26
- var algorithm09 = createAlgorithm09({
25
+ var matAlgo09xS0Sf = createMatAlgo09xS0Sf({
27
26
  typed,
28
27
  equalScalar
29
28
  });
30
- var algorithm11 = createAlgorithm11({
29
+ var matAlgo11xS0s = createMatAlgo11xS0s({
31
30
  typed,
32
31
  equalScalar
33
32
  });
34
- var algorithm12 = createAlgorithm12({
33
+ var matAlgo12xSfs = createMatAlgo12xSfs({
35
34
  typed,
36
35
  DenseMatrix
37
36
  });
38
- var algorithm13 = createAlgorithm13({
39
- typed
40
- });
41
- var algorithm14 = createAlgorithm14({
42
- typed
37
+ var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
38
+ typed,
39
+ matrix
43
40
  });
44
41
  /**
45
42
  * Calculate the inverse tangent function with two arguments, y/x.
@@ -75,51 +72,15 @@ export var createAtan2 = /* #__PURE__ */factory(name, dependencies, _ref => {
75
72
  'number, number': Math.atan2,
76
73
  // Complex numbers doesn't seem to have a reasonable implementation of
77
74
  // atan2(). Even Matlab removed the support, after they only calculated
78
- // the atan only on base of the real part of the numbers and ignored the imaginary.
79
- 'BigNumber, BigNumber': function BigNumberBigNumber(y, x) {
80
- return BigNumber.atan2(y, x);
81
- },
82
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
83
- return algorithm09(x, y, this, false);
84
- },
85
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
86
- // mind the order of y and x!
87
- return algorithm02(y, x, this, true);
88
- },
89
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
90
- return algorithm03(x, y, this, false);
91
- },
92
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
93
- return algorithm13(x, y, this);
94
- },
95
- 'Array, Array': function ArrayArray(x, y) {
96
- return this(matrix(x), matrix(y)).valueOf();
97
- },
98
- 'Array, Matrix': function ArrayMatrix(x, y) {
99
- return this(matrix(x), y);
100
- },
101
- 'Matrix, Array': function MatrixArray(x, y) {
102
- return this(x, matrix(y));
103
- },
104
- 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
105
- return algorithm11(x, y, this, false);
106
- },
107
- 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
108
- return algorithm14(x, y, this, false);
109
- },
110
- 'number | BigNumber, SparseMatrix': function numberBigNumberSparseMatrix(x, y) {
111
- // mind the order of y and x
112
- return algorithm12(y, x, this, true);
113
- },
114
- 'number | BigNumber, DenseMatrix': function numberBigNumberDenseMatrix(x, y) {
115
- // mind the order of y and x
116
- return algorithm14(y, x, this, true);
117
- },
118
- 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {
119
- return algorithm14(matrix(x), y, this, false).valueOf();
120
- },
121
- 'number | BigNumber, Array': function numberBigNumberArray(x, y) {
122
- return algorithm14(matrix(y), x, this, true).valueOf();
123
- }
124
- });
75
+ // the atan only on base of the real part of the numbers and ignored
76
+ // the imaginary.
77
+ 'BigNumber, BigNumber': (y, x) => BigNumber.atan2(y, x)
78
+ }, matrixAlgorithmSuite({
79
+ scalar: 'number | BigNumber',
80
+ SS: matAlgo09xS0Sf,
81
+ DS: matAlgo03xDSf,
82
+ SD: matAlgo02xDS0,
83
+ Ss: matAlgo11xS0s,
84
+ sS: matAlgo12xSfs
85
+ }));
125
86
  });
@@ -1,5 +1,4 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { atanhNumber } from '../../plain/number/index.js';
4
3
  var name = 'atanh';
5
4
  var dependencies = ['typed', 'config', 'Complex'];
@@ -14,7 +13,8 @@ export var createAtanh = /* #__PURE__ */factory(name, dependencies, _ref => {
14
13
  * Calculate the hyperbolic arctangent of a value,
15
14
  * defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.
16
15
  *
17
- * For matrices, the function is evaluated element wise.
16
+ * To avoid confusion with the matrix hyperbolic arctangent, this function
17
+ * does not apply to matrices.
18
18
  *
19
19
  * Syntax:
20
20
  *
@@ -28,8 +28,8 @@ export var createAtanh = /* #__PURE__ */factory(name, dependencies, _ref => {
28
28
  *
29
29
  * acosh, asinh
30
30
  *
31
- * @param {number | Complex | Array | Matrix} x Function input
32
- * @return {number | Complex | Array | Matrix} Hyperbolic arctangent of x
31
+ * @param {number | BigNumber | Complex} x Function input
32
+ * @return {number | BigNumber | Complex} Hyperbolic arctangent of x
33
33
  */
34
34
  return typed(name, {
35
35
  number: function number(x) {
@@ -44,10 +44,6 @@ export var createAtanh = /* #__PURE__ */factory(name, dependencies, _ref => {
44
44
  },
45
45
  BigNumber: function BigNumber(x) {
46
46
  return x.atanh();
47
- },
48
- 'Array | Matrix': function ArrayMatrix(x) {
49
- // deep map collection, skip zeros since atanh(0) = 0
50
- return deepMap(x, this, true);
51
47
  }
52
48
  });
53
49
  });
@@ -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 = 'cos';
4
4
  var dependencies = ['typed'];
5
5
  export var createCos = /* #__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 cosine of a value.
12
14
  *
13
- * For matrices, the function is evaluated element wise.
15
+ * To avoid confusion with the matrix cosine, this function does not
16
+ * apply to matrices.
14
17
  *
15
18
  * Syntax:
16
19
  *
@@ -30,26 +33,12 @@ export var createCos = /* #__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} Cosine of x
36
+ * @param {number | BigNumber | Complex | Unit} x Function input
37
+ * @return {number | BigNumber | Complex} Cosine of x
35
38
  */
39
+
36
40
  return typed(name, {
37
41
  number: Math.cos,
38
- Complex: function Complex(x) {
39
- return x.cos();
40
- },
41
- BigNumber: function BigNumber(x) {
42
- return x.cos();
43
- },
44
- Unit: function Unit(x) {
45
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
46
- throw new TypeError('Unit in function cos is no angle');
47
- }
48
-
49
- return this(x.value);
50
- },
51
- 'Array | Matrix': function ArrayMatrix(x) {
52
- return deepMap(x, this);
53
- }
54
- });
42
+ 'Complex | BigNumber': x => x.cos()
43
+ }, trigUnit);
55
44
  });
@@ -1,5 +1,4 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { cosh as coshNumber } from '../../utils/number.js';
4
3
  var name = 'cosh';
5
4
  var dependencies = ['typed'];
@@ -12,7 +11,8 @@ export var createCosh = /* #__PURE__ */factory(name, dependencies, _ref => {
12
11
  * Calculate the hyperbolic cosine of a value,
13
12
  * defined as `cosh(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 cosine, this function does
15
+ * not apply to matrices.
16
16
  *
17
17
  * Syntax:
18
18
  *
@@ -26,26 +26,11 @@ export var createCosh = /* #__PURE__ */factory(name, dependencies, _ref => {
26
26
  *
27
27
  * sinh, tanh
28
28
  *
29
- * @param {number | BigNumber | Complex | Unit | Array | Matrix} x Function input
30
- * @return {number | BigNumber | Complex | Array | Matrix} Hyperbolic cosine of x
29
+ * @param {number | BigNumber | Complex} x Function input
30
+ * @return {number | BigNumber | Complex} Hyperbolic cosine of x
31
31
  */
32
32
  return typed(name, {
33
33
  number: coshNumber,
34
- Complex: function Complex(x) {
35
- return x.cosh();
36
- },
37
- BigNumber: function BigNumber(x) {
38
- return x.cosh();
39
- },
40
- Unit: function Unit(x) {
41
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
42
- throw new TypeError('Unit in function cosh is no angle');
43
- }
44
-
45
- return this(x.value);
46
- },
47
- 'Array | Matrix': function ArrayMatrix(x) {
48
- return deepMap(x, this);
49
- }
34
+ 'Complex | BigNumber': x => x.cosh()
50
35
  });
51
36
  });
@@ -1,6 +1,6 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { cotNumber } from '../../plain/number/index.js';
3
+ import { createTrigUnit } from './trigUnit.js';
4
4
  var name = 'cot';
5
5
  var dependencies = ['typed', 'BigNumber'];
6
6
  export var createCot = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -8,11 +8,14 @@ export var createCot = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  typed,
9
9
  BigNumber: _BigNumber
10
10
  } = _ref;
11
-
11
+ var trigUnit = createTrigUnit({
12
+ typed
13
+ });
12
14
  /**
13
15
  * Calculate the cotangent of a value. Defined as `cot(x) = 1 / tan(x)`.
14
16
  *
15
- * For matrices, the function is evaluated element wise.
17
+ * To avoid confusion with the matrix cotangent, this function does not
18
+ * apply to matrices.
16
19
  *
17
20
  * Syntax:
18
21
  *
@@ -30,23 +33,10 @@ export var createCot = /* #__PURE__ */factory(name, dependencies, _ref => {
30
33
  * @param {number | Complex | Unit | Array | Matrix} x Function input
31
34
  * @return {number | Complex | Array | Matrix} Cotangent of x
32
35
  */
36
+
33
37
  return typed(name, {
34
38
  number: cotNumber,
35
- Complex: function Complex(x) {
36
- return x.cot();
37
- },
38
- BigNumber: function BigNumber(x) {
39
- return new _BigNumber(1).div(x.tan());
40
- },
41
- Unit: function Unit(x) {
42
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
43
- throw new TypeError('Unit in function cot is no angle');
44
- }
45
-
46
- return this(x.value);
47
- },
48
- 'Array | Matrix': function ArrayMatrix(x) {
49
- return deepMap(x, this);
50
- }
51
- });
39
+ Complex: x => x.cot(),
40
+ BigNumber: x => new _BigNumber(1).div(x.tan())
41
+ }, trigUnit);
52
42
  });
@@ -1,5 +1,4 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { cothNumber } from '../../plain/number/index.js';
4
3
  var name = 'coth';
5
4
  var dependencies = ['typed', 'BigNumber'];
@@ -13,7 +12,8 @@ export var createCoth = /* #__PURE__ */factory(name, dependencies, _ref => {
13
12
  * Calculate the hyperbolic cotangent of a value,
14
13
  * defined as `coth(x) = 1 / tanh(x)`.
15
14
  *
16
- * For matrices, the function is evaluated element wise.
15
+ * To avoid confusion with the matrix hyperbolic cotangent, this function
16
+ * does not apply to matrices.
17
17
  *
18
18
  * Syntax:
19
19
  *
@@ -29,26 +29,12 @@ export var createCoth = /* #__PURE__ */factory(name, dependencies, _ref => {
29
29
  *
30
30
  * sinh, tanh, cosh
31
31
  *
32
- * @param {number | Complex | Unit | Array | Matrix} x Function input
33
- * @return {number | Complex | Array | Matrix} Hyperbolic cotangent of x
32
+ * @param {number | BigNumber | Complex} x Function input
33
+ * @return {number | BigNumber | Complex} Hyperbolic cotangent of x
34
34
  */
35
35
  return typed(name, {
36
36
  number: cothNumber,
37
- Complex: function Complex(x) {
38
- return x.coth();
39
- },
40
- BigNumber: function BigNumber(x) {
41
- return new _BigNumber(1).div(x.tanh());
42
- },
43
- Unit: function Unit(x) {
44
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
45
- throw new TypeError('Unit in function coth 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.coth(),
38
+ BigNumber: x => new _BigNumber(1).div(x.tanh())
53
39
  });
54
40
  });
@@ -1,6 +1,6 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { cscNumber } from '../../plain/number/index.js';
3
+ import { createTrigUnit } from './trigUnit.js';
4
4
  var name = 'csc';
5
5
  var dependencies = ['typed', 'BigNumber'];
6
6
  export var createCsc = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -8,11 +8,14 @@ export var createCsc = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  typed,
9
9
  BigNumber: _BigNumber
10
10
  } = _ref;
11
-
11
+ var trigUnit = createTrigUnit({
12
+ typed
13
+ });
12
14
  /**
13
15
  * Calculate the cosecant of a value, defined as `csc(x) = 1/sin(x)`.
14
16
  *
15
- * For matrices, the function is evaluated element wise.
17
+ * To avoid confusion with the matrix cosecant, this function does not
18
+ * apply to matrices.
16
19
  *
17
20
  * Syntax:
18
21
  *
@@ -27,26 +30,13 @@ export var createCsc = /* #__PURE__ */factory(name, dependencies, _ref => {
27
30
  *
28
31
  * sin, sec, cot
29
32
  *
30
- * @param {number | Complex | Unit | Array | Matrix} x Function input
31
- * @return {number | Complex | Array | Matrix} Cosecant of x
33
+ * @param {number | BigNumber | Complex | Unit} x Function input
34
+ * @return {number | BigNumber | Complex} Cosecant of x
32
35
  */
36
+
33
37
  return typed(name, {
34
38
  number: cscNumber,
35
- Complex: function Complex(x) {
36
- return x.csc();
37
- },
38
- BigNumber: function BigNumber(x) {
39
- return new _BigNumber(1).div(x.sin());
40
- },
41
- Unit: function Unit(x) {
42
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
43
- throw new TypeError('Unit in function csc is no angle');
44
- }
45
-
46
- return this(x.value);
47
- },
48
- 'Array | Matrix': function ArrayMatrix(x) {
49
- return deepMap(x, this);
50
- }
51
- });
39
+ Complex: x => x.csc(),
40
+ BigNumber: x => new _BigNumber(1).div(x.sin())
41
+ }, trigUnit);
52
42
  });
@@ -1,5 +1,4 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { cschNumber } from '../../plain/number/index.js';
4
3
  var name = 'csch';
5
4
  var dependencies = ['typed', 'BigNumber'];
@@ -13,7 +12,8 @@ export var createCsch = /* #__PURE__ */factory(name, dependencies, _ref => {
13
12
  * Calculate the hyperbolic cosecant of a value,
14
13
  * defined as `csch(x) = 1 / sinh(x)`.
15
14
  *
16
- * For matrices, the function is evaluated element wise.
15
+ * To avoid confusion with the matrix hyperbolic cosecant, this function
16
+ * does not apply to matrices.
17
17
  *
18
18
  * Syntax:
19
19
  *
@@ -29,26 +29,12 @@ export var createCsch = /* #__PURE__ */factory(name, dependencies, _ref => {
29
29
  *
30
30
  * sinh, sech, coth
31
31
  *
32
- * @param {number | Complex | Unit | Array | Matrix} x Function input
33
- * @return {number | Complex | Array | Matrix} Hyperbolic cosecant of x
32
+ * @param {number | BigNumber | Complex} x Function input
33
+ * @return {number | BigNumber | Complex} Hyperbolic cosecant of x
34
34
  */
35
35
  return typed(name, {
36
36
  number: cschNumber,
37
- Complex: function Complex(x) {
38
- return x.csch();
39
- },
40
- BigNumber: function BigNumber(x) {
41
- return new _BigNumber(1).div(x.sinh());
42
- },
43
- Unit: function Unit(x) {
44
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
45
- throw new TypeError('Unit in function csch 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.csch(),
38
+ BigNumber: x => new _BigNumber(1).div(x.sinh())
53
39
  });
54
40
  });
@@ -1,6 +1,6 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { secNumber } from '../../plain/number/index.js';
3
+ import { createTrigUnit } from './trigUnit.js';
4
4
  var name = 'sec';
5
5
  var dependencies = ['typed', 'BigNumber'];
6
6
  export var createSec = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -8,11 +8,14 @@ export var createSec = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  typed,
9
9
  BigNumber: _BigNumber
10
10
  } = _ref;
11
-
11
+ var trigUnit = createTrigUnit({
12
+ typed
13
+ });
12
14
  /**
13
15
  * Calculate the secant of a value, defined as `sec(x) = 1/cos(x)`.
14
16
  *
15
- * For matrices, the function is evaluated element wise.
17
+ * To avoid confusion with the matrix secant, this function does not
18
+ * apply to matrices.
16
19
  *
17
20
  * Syntax:
18
21
  *
@@ -27,26 +30,13 @@ export var createSec = /* #__PURE__ */factory(name, dependencies, _ref => {
27
30
  *
28
31
  * cos, csc, cot
29
32
  *
30
- * @param {number | Complex | Unit | Array | Matrix} x Function input
31
- * @return {number | Complex | Array | Matrix} Secant of x
33
+ * @param {number | BigNumber | Complex | Unit} x Function input
34
+ * @return {number | BigNumber | Complex} Secant of x
32
35
  */
36
+
33
37
  return typed(name, {
34
38
  number: secNumber,
35
- Complex: function Complex(x) {
36
- return x.sec();
37
- },
38
- BigNumber: function BigNumber(x) {
39
- return new _BigNumber(1).div(x.cos());
40
- },
41
- Unit: function Unit(x) {
42
- if (!x.hasBase(x.constructor.BASE_UNITS.ANGLE)) {
43
- throw new TypeError('Unit in function sec is no angle');
44
- }
45
-
46
- return this(x.value);
47
- },
48
- 'Array | Matrix': function ArrayMatrix(x) {
49
- return deepMap(x, this);
50
- }
51
- });
39
+ Complex: x => x.sec(),
40
+ BigNumber: x => new _BigNumber(1).div(x.cos())
41
+ }, trigUnit);
52
42
  });
@@ -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
  });