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
@@ -11,15 +11,15 @@ var _number = require("../../utils/number.js");
11
11
 
12
12
  var _factory = require("../../utils/factory.js");
13
13
 
14
- var _algorithm = require("../../type/matrix/utils/algorithm03.js");
14
+ var _matAlgo03xDSf = require("../../type/matrix/utils/matAlgo03xDSf.js");
15
15
 
16
- var _algorithm2 = require("../../type/matrix/utils/algorithm12.js");
16
+ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
17
17
 
18
- var _algorithm3 = require("../../type/matrix/utils/algorithm14.js");
18
+ var _matAlgo05xSfSf = require("../../type/matrix/utils/matAlgo05xSfSf.js");
19
19
 
20
- var _algorithm4 = require("../../type/matrix/utils/algorithm13.js");
20
+ var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
21
21
 
22
- var _algorithm5 = require("../../type/matrix/utils/algorithm05.js");
22
+ var _compareUnits = require("./compareUnits.js");
23
23
 
24
24
  var name = 'compare';
25
25
  var dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'BigNumber', 'Fraction', 'DenseMatrix'];
@@ -31,21 +31,22 @@ var createCompare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
31
31
  BigNumber = _ref.BigNumber,
32
32
  Fraction = _ref.Fraction,
33
33
  DenseMatrix = _ref.DenseMatrix;
34
- var algorithm03 = (0, _algorithm.createAlgorithm03)({
34
+ var matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
35
35
  typed: typed
36
36
  });
37
- var algorithm05 = (0, _algorithm5.createAlgorithm05)({
37
+ var matAlgo05xSfSf = (0, _matAlgo05xSfSf.createMatAlgo05xSfSf)({
38
38
  typed: typed,
39
39
  equalScalar: equalScalar
40
40
  });
41
- var algorithm12 = (0, _algorithm2.createAlgorithm12)({
41
+ var matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
42
42
  typed: typed,
43
43
  DenseMatrix: DenseMatrix
44
44
  });
45
- var algorithm13 = (0, _algorithm4.createAlgorithm13)({
46
- typed: typed
45
+ var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
46
+ typed: typed,
47
+ matrix: matrix
47
48
  });
48
- var algorithm14 = (0, _algorithm3.createAlgorithm14)({
49
+ var compareUnits = (0, _compareUnits.createCompareUnits)({
49
50
  typed: typed
50
51
  });
51
52
  /**
@@ -86,13 +87,13 @@ var createCompare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
86
87
  * 1 when x > y, -1 when x < y, and 0 when x == y.
87
88
  */
88
89
 
89
- return typed(name, {
90
+ return typed(name, createCompareNumber({
91
+ typed: typed,
92
+ config: config
93
+ }), {
90
94
  'boolean, boolean': function booleanBoolean(x, y) {
91
95
  return x === y ? 0 : x > y ? 1 : -1;
92
96
  },
93
- 'number, number': function numberNumber(x, y) {
94
- return (0, _number.nearlyEqual)(x, y, config.epsilon) ? 0 : x > y ? 1 : -1;
95
- },
96
97
  'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
97
98
  return (0, _nearlyEqual.nearlyEqual)(x, y, config.epsilon) ? new BigNumber(0) : new BigNumber(x.cmp(y));
98
99
  },
@@ -101,59 +102,12 @@ var createCompare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
101
102
  },
102
103
  'Complex, Complex': function ComplexComplex() {
103
104
  throw new TypeError('No ordering relation is defined for complex numbers');
104
- },
105
- 'Unit, Unit': function UnitUnit(x, y) {
106
- if (!x.equalBase(y)) {
107
- throw new Error('Cannot compare units with different base');
108
- }
109
-
110
- return this(x.value, y.value);
111
- },
112
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
113
- return algorithm05(x, y, this);
114
- },
115
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
116
- return algorithm03(y, x, this, true);
117
- },
118
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
119
- return algorithm03(x, y, this, false);
120
- },
121
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
122
- return algorithm13(x, y, this);
123
- },
124
- 'Array, Array': function ArrayArray(x, y) {
125
- // use matrix implementation
126
- return this(matrix(x), matrix(y)).valueOf();
127
- },
128
- 'Array, Matrix': function ArrayMatrix(x, y) {
129
- // use matrix implementation
130
- return this(matrix(x), y);
131
- },
132
- 'Matrix, Array': function MatrixArray(x, y) {
133
- // use matrix implementation
134
- return this(x, matrix(y));
135
- },
136
- 'SparseMatrix, any': function SparseMatrixAny(x, y) {
137
- return algorithm12(x, y, this, false);
138
- },
139
- 'DenseMatrix, any': function DenseMatrixAny(x, y) {
140
- return algorithm14(x, y, this, false);
141
- },
142
- 'any, SparseMatrix': function anySparseMatrix(x, y) {
143
- return algorithm12(y, x, this, true);
144
- },
145
- 'any, DenseMatrix': function anyDenseMatrix(x, y) {
146
- return algorithm14(y, x, this, true);
147
- },
148
- 'Array, any': function ArrayAny(x, y) {
149
- // use matrix implementation
150
- return algorithm14(matrix(x), y, this, false).valueOf();
151
- },
152
- 'any, Array': function anyArray(x, y) {
153
- // use matrix implementation
154
- return algorithm14(matrix(y), x, this, true).valueOf();
155
105
  }
156
- });
106
+ }, compareUnits, matrixAlgorithmSuite({
107
+ SS: matAlgo05xSfSf,
108
+ DS: matAlgo03xDSf,
109
+ Ss: matAlgo12xSfs
110
+ }));
157
111
  });
158
112
  exports.createCompare = createCompare;
159
113
  var createCompareNumber = /* #__PURE__ */(0, _factory.factory)(name, ['typed', 'config'], function (_ref2) {
@@ -89,75 +89,79 @@ var createCompareNatural = /* #__PURE__ */(0, _factory.factory)(name, dependenci
89
89
  */
90
90
 
91
91
  return typed(name, {
92
- 'any, any': function anyAny(x, y) {
93
- var typeX = (0, _is.typeOf)(x);
94
- var typeY = (0, _is.typeOf)(y);
95
- var c; // numeric types
96
-
97
- if ((typeX === 'number' || typeX === 'BigNumber' || typeX === 'Fraction') && (typeY === 'number' || typeY === 'BigNumber' || typeY === 'Fraction')) {
98
- c = compare(x, y);
92
+ 'any, any': _compareNatural
93
+ }); // just to check # args
94
+
95
+ function _compareNatural(x, y) {
96
+ var typeX = (0, _is.typeOf)(x);
97
+ var typeY = (0, _is.typeOf)(y);
98
+ var c; // numeric types
99
+
100
+ if ((typeX === 'number' || typeX === 'BigNumber' || typeX === 'Fraction') && (typeY === 'number' || typeY === 'BigNumber' || typeY === 'Fraction')) {
101
+ c = compare(x, y);
102
+
103
+ if (c.toString() !== '0') {
104
+ // c can be number, BigNumber, or Fraction
105
+ return c > 0 ? 1 : -1; // return a number
106
+ } else {
107
+ return (0, _javascriptNaturalSort["default"])(typeX, typeY);
108
+ }
109
+ } // matrix types
99
110
 
100
- if (c.toString() !== '0') {
101
- // c can be number, BigNumber, or Fraction
102
- return c > 0 ? 1 : -1; // return a number
103
- } else {
104
- return (0, _javascriptNaturalSort.default)(typeX, typeY);
105
- }
106
- } // matrix types
107
111
 
112
+ var matTypes = ['Array', 'DenseMatrix', 'SparseMatrix'];
108
113
 
109
- if (typeX === 'Array' || typeX === 'Matrix' || typeY === 'Array' || typeY === 'Matrix') {
110
- c = compareMatricesAndArrays(this, x, y);
114
+ if (matTypes.includes(typeX) || matTypes.includes(typeY)) {
115
+ c = compareMatricesAndArrays(_compareNatural, x, y);
111
116
 
112
- if (c !== 0) {
113
- return c;
114
- } else {
115
- return (0, _javascriptNaturalSort.default)(typeX, typeY);
116
- }
117
- } // in case of different types, order by name of type, i.e. 'BigNumber' < 'Complex'
117
+ if (c !== 0) {
118
+ return c;
119
+ } else {
120
+ return (0, _javascriptNaturalSort["default"])(typeX, typeY);
121
+ }
122
+ } // in case of different types, order by name of type, i.e. 'BigNumber' < 'Complex'
118
123
 
119
124
 
120
- if (typeX !== typeY) {
121
- return (0, _javascriptNaturalSort.default)(typeX, typeY);
122
- }
125
+ if (typeX !== typeY) {
126
+ return (0, _javascriptNaturalSort["default"])(typeX, typeY);
127
+ }
123
128
 
124
- if (typeX === 'Complex') {
125
- return compareComplexNumbers(x, y);
126
- }
129
+ if (typeX === 'Complex') {
130
+ return compareComplexNumbers(x, y);
131
+ }
127
132
 
128
- if (typeX === 'Unit') {
129
- if (x.equalBase(y)) {
130
- return this(x.value, y.value);
131
- } // compare by units
133
+ if (typeX === 'Unit') {
134
+ if (x.equalBase(y)) {
135
+ return _compareNatural(x.value, y.value);
136
+ } // compare by units
132
137
 
133
138
 
134
- return compareArrays(this, x.formatUnits(), y.formatUnits());
135
- }
139
+ return compareArrays(_compareNatural, x.formatUnits(), y.formatUnits());
140
+ }
136
141
 
137
- if (typeX === 'boolean') {
138
- return compareBooleans(x, y);
139
- }
142
+ if (typeX === 'boolean') {
143
+ return compareBooleans(x, y);
144
+ }
140
145
 
141
- if (typeX === 'string') {
142
- return (0, _javascriptNaturalSort.default)(x, y);
143
- }
146
+ if (typeX === 'string') {
147
+ return (0, _javascriptNaturalSort["default"])(x, y);
148
+ }
144
149
 
145
- if (typeX === 'Object') {
146
- return compareObjects(this, x, y);
147
- }
150
+ if (typeX === 'Object') {
151
+ return compareObjects(_compareNatural, x, y);
152
+ }
148
153
 
149
- if (typeX === 'null') {
150
- return 0;
151
- }
154
+ if (typeX === 'null') {
155
+ return 0;
156
+ }
152
157
 
153
- if (typeX === 'undefined') {
154
- return 0;
155
- } // this should not occur...
158
+ if (typeX === 'undefined') {
159
+ return 0;
160
+ } // this should not occur...
156
161
 
157
162
 
158
- throw new TypeError('Unsupported type of value "' + typeX + '"');
159
- }
160
- });
163
+ throw new TypeError('Unsupported type of value "' + typeX + '"');
164
+ }
161
165
  /**
162
166
  * Compare mixed matrix/array types, by converting to same-shaped array.
163
167
  * This comparator is non-deterministic regarding input types.
@@ -166,6 +170,7 @@ var createCompareNatural = /* #__PURE__ */(0, _factory.factory)(name, dependenci
166
170
  * @returns {number} Returns the comparison result: -1, 0, or 1
167
171
  */
168
172
 
173
+
169
174
  function compareMatricesAndArrays(compareNatural, x, y) {
170
175
  if ((0, _is.isSparseMatrix)(x) && (0, _is.isSparseMatrix)(y)) {
171
176
  return compareArrays(compareNatural, x.toJSON().values, y.toJSON().values);
@@ -252,8 +257,8 @@ var createCompareNatural = /* #__PURE__ */(0, _factory.factory)(name, dependenci
252
257
  var keysX = Object.keys(x);
253
258
  var keysY = Object.keys(y); // compare keys
254
259
 
255
- keysX.sort(_javascriptNaturalSort.default);
256
- keysY.sort(_javascriptNaturalSort.default);
260
+ keysX.sort(_javascriptNaturalSort["default"]);
261
+ keysY.sort(_javascriptNaturalSort["default"]);
257
262
  var c = compareArrays(compareNatural, keysX, keysY);
258
263
 
259
264
  if (c !== 0) {
@@ -9,20 +9,17 @@ var _string = require("../../utils/string.js");
9
9
 
10
10
  var _factory = require("../../utils/factory.js");
11
11
 
12
- var _algorithm = require("../../type/matrix/utils/algorithm14.js");
13
-
14
- var _algorithm2 = require("../../type/matrix/utils/algorithm13.js");
12
+ var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
15
13
 
16
14
  var name = 'compareText';
17
15
  var dependencies = ['typed', 'matrix'];
16
+ _string.compareText.signature = 'any, any';
18
17
  var createCompareText = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
19
18
  var typed = _ref.typed,
20
19
  matrix = _ref.matrix;
21
- var algorithm13 = (0, _algorithm2.createAlgorithm13)({
22
- typed: typed
23
- });
24
- var algorithm14 = (0, _algorithm.createAlgorithm14)({
25
- typed: typed
20
+ var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
21
+ typed: typed,
22
+ matrix: matrix
26
23
  });
27
24
  /**
28
25
  * Compare two strings lexically. Comparison is case sensitive.
@@ -53,44 +50,14 @@ var createCompareText = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
53
50
  * 1 when x > y, -1 when x < y, and 0 when x == y.
54
51
  */
55
52
 
56
- return typed(name, {
57
- 'any, any': _string.compareText,
58
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
59
- return algorithm13(x, y, _string.compareText);
60
- },
61
- 'Array, Array': function ArrayArray(x, y) {
62
- // use matrix implementation
63
- return this(matrix(x), matrix(y)).valueOf();
64
- },
65
- 'Array, Matrix': function ArrayMatrix(x, y) {
66
- // use matrix implementation
67
- return this(matrix(x), y);
68
- },
69
- 'Matrix, Array': function MatrixArray(x, y) {
70
- // use matrix implementation
71
- return this(x, matrix(y));
72
- },
73
- 'DenseMatrix, any': function DenseMatrixAny(x, y) {
74
- return algorithm14(x, y, _string.compareText, false);
75
- },
76
- 'any, DenseMatrix': function anyDenseMatrix(x, y) {
77
- return algorithm14(y, x, _string.compareText, true);
78
- },
79
- 'Array, any': function ArrayAny(x, y) {
80
- // use matrix implementation
81
- return algorithm14(matrix(x), y, _string.compareText, false).valueOf();
82
- },
83
- 'any, Array': function anyArray(x, y) {
84
- // use matrix implementation
85
- return algorithm14(matrix(y), x, _string.compareText, true).valueOf();
86
- }
87
- });
53
+ return typed(name, _string.compareText, matrixAlgorithmSuite({
54
+ elop: _string.compareText,
55
+ Ds: true
56
+ }));
88
57
  });
89
58
  exports.createCompareText = createCompareText;
90
59
  var createCompareTextNumber = /* #__PURE__ */(0, _factory.factory)(name, ['typed'], function (_ref2) {
91
60
  var typed = _ref2.typed;
92
- return typed(name, {
93
- 'any, any': _string.compareText
94
- });
61
+ return typed(name, _string.compareText);
95
62
  });
96
63
  exports.createCompareTextNumber = createCompareTextNumber;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createCompareUnits = void 0;
7
+
8
+ var _factory = require("../../utils/factory.js");
9
+
10
+ var createCompareUnits = /* #__PURE__ */(0, _factory.factory)('compareUnits', ['typed'], function (_ref) {
11
+ var typed = _ref.typed;
12
+ return {
13
+ 'Unit, Unit': typed.referToSelf(function (self) {
14
+ return function (x, y) {
15
+ if (!x.equalBase(y)) {
16
+ throw new Error('Cannot compare units with different base');
17
+ }
18
+
19
+ return typed.find(self, [x.valueType(), y.valueType()])(x.value, y.value);
20
+ };
21
+ })
22
+ };
23
+ });
24
+ exports.createCompareUnits = createCompareUnits;
@@ -7,15 +7,13 @@ exports.createEqualNumber = exports.createEqual = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- var _algorithm = require("../../type/matrix/utils/algorithm03.js");
10
+ var _matAlgo03xDSf = require("../../type/matrix/utils/matAlgo03xDSf.js");
11
11
 
12
- var _algorithm2 = require("../../type/matrix/utils/algorithm07.js");
12
+ var _matAlgo07xSSf = require("../../type/matrix/utils/matAlgo07xSSf.js");
13
13
 
14
- var _algorithm3 = require("../../type/matrix/utils/algorithm12.js");
14
+ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
15
15
 
16
- var _algorithm4 = require("../../type/matrix/utils/algorithm13.js");
17
-
18
- var _algorithm5 = require("../../type/matrix/utils/algorithm14.js");
16
+ var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
19
17
 
20
18
  var name = 'equal';
21
19
  var dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix'];
@@ -24,22 +22,20 @@ var createEqual = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
24
22
  matrix = _ref.matrix,
25
23
  equalScalar = _ref.equalScalar,
26
24
  DenseMatrix = _ref.DenseMatrix;
27
- var algorithm03 = (0, _algorithm.createAlgorithm03)({
25
+ var matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
28
26
  typed: typed
29
27
  });
30
- var algorithm07 = (0, _algorithm2.createAlgorithm07)({
28
+ var matAlgo07xSSf = (0, _matAlgo07xSSf.createMatAlgo07xSSf)({
31
29
  typed: typed,
32
30
  DenseMatrix: DenseMatrix
33
31
  });
34
- var algorithm12 = (0, _algorithm3.createAlgorithm12)({
32
+ var matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
35
33
  typed: typed,
36
34
  DenseMatrix: DenseMatrix
37
35
  });
38
- var algorithm13 = (0, _algorithm4.createAlgorithm13)({
39
- typed: typed
40
- });
41
- var algorithm14 = (0, _algorithm5.createAlgorithm14)({
42
- typed: typed
36
+ var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
37
+ typed: typed,
38
+ matrix: matrix
43
39
  });
44
40
  /**
45
41
  * Test whether two values are equal.
@@ -86,72 +82,15 @@ var createEqual = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
86
82
  * @return {boolean | Array | Matrix} Returns true when the compared values are equal, else returns false
87
83
  */
88
84
 
89
- return typed(name, {
90
- 'any, any': function anyAny(x, y) {
91
- // strict equality for null and undefined?
92
- if (x === null) {
93
- return y === null;
94
- }
95
-
96
- if (y === null) {
97
- return x === null;
98
- }
99
-
100
- if (x === undefined) {
101
- return y === undefined;
102
- }
103
-
104
- if (y === undefined) {
105
- return x === undefined;
106
- }
107
-
108
- return equalScalar(x, y);
109
- },
110
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
111
- return algorithm07(x, y, equalScalar);
112
- },
113
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
114
- return algorithm03(y, x, equalScalar, true);
115
- },
116
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
117
- return algorithm03(x, y, equalScalar, false);
118
- },
119
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
120
- return algorithm13(x, y, equalScalar);
121
- },
122
- 'Array, Array': function ArrayArray(x, y) {
123
- // use matrix implementation
124
- return this(matrix(x), matrix(y)).valueOf();
125
- },
126
- 'Array, Matrix': function ArrayMatrix(x, y) {
127
- // use matrix implementation
128
- return this(matrix(x), y);
129
- },
130
- 'Matrix, Array': function MatrixArray(x, y) {
131
- // use matrix implementation
132
- return this(x, matrix(y));
133
- },
134
- 'SparseMatrix, any': function SparseMatrixAny(x, y) {
135
- return algorithm12(x, y, equalScalar, false);
136
- },
137
- 'DenseMatrix, any': function DenseMatrixAny(x, y) {
138
- return algorithm14(x, y, equalScalar, false);
139
- },
140
- 'any, SparseMatrix': function anySparseMatrix(x, y) {
141
- return algorithm12(y, x, equalScalar, true);
142
- },
143
- 'any, DenseMatrix': function anyDenseMatrix(x, y) {
144
- return algorithm14(y, x, equalScalar, true);
145
- },
146
- 'Array, any': function ArrayAny(x, y) {
147
- // use matrix implementation
148
- return algorithm14(matrix(x), y, equalScalar, false).valueOf();
149
- },
150
- 'any, Array': function anyArray(x, y) {
151
- // use matrix implementation
152
- return algorithm14(matrix(y), x, equalScalar, true).valueOf();
153
- }
154
- });
85
+ return typed(name, createEqualNumber({
86
+ typed: typed,
87
+ equalScalar: equalScalar
88
+ }), matrixAlgorithmSuite({
89
+ elop: equalScalar,
90
+ SS: matAlgo07xSSf,
91
+ DS: matAlgo03xDSf,
92
+ Ss: matAlgo12xSfs
93
+ }));
155
94
  });
156
95
  exports.createEqual = createEqual;
157
96
  var createEqualNumber = (0, _factory.factory)(name, ['typed', 'equalScalar'], function (_ref2) {
@@ -13,12 +13,16 @@ var _factory = require("../../utils/factory.js");
13
13
 
14
14
  var _complex = require("../../utils/complex.js");
15
15
 
16
+ var _compareUnits = require("./compareUnits.js");
17
+
16
18
  var name = 'equalScalar';
17
19
  var dependencies = ['typed', 'config'];
18
20
  var createEqualScalar = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
19
21
  var typed = _ref.typed,
20
22
  config = _ref.config;
21
-
23
+ var compareUnits = (0, _compareUnits.createCompareUnits)({
24
+ typed: typed
25
+ });
22
26
  /**
23
27
  * Test whether two scalar values are nearly equal.
24
28
  *
@@ -27,6 +31,7 @@ var createEqualScalar = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
27
31
  * @return {boolean} Returns true when the compared values are equal, else returns false
28
32
  * @private
29
33
  */
34
+
30
35
  return typed(name, {
31
36
  'boolean, boolean': function booleanBoolean(x, y) {
32
37
  return x === y;
@@ -42,15 +47,8 @@ var createEqualScalar = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
42
47
  },
43
48
  'Complex, Complex': function ComplexComplex(x, y) {
44
49
  return (0, _complex.complexEquals)(x, y, config.epsilon);
45
- },
46
- 'Unit, Unit': function UnitUnit(x, y) {
47
- if (!x.equalBase(y)) {
48
- throw new Error('Cannot compare units with different base');
49
- }
50
-
51
- return this(x.value, y.value);
52
50
  }
53
- });
51
+ }, compareUnits);
54
52
  });
55
53
  exports.createEqualScalar = createEqualScalar;
56
54
  var createEqualScalarNumber = (0, _factory.factory)(name, ['typed', 'config'], function (_ref2) {