rightLogShift.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.createRightLogShift = void 0;
  6. var _matAlgo02xDS = require("../../type/matrix/utils/matAlgo02xDS0.js");
  7. var _matAlgo11xS0s = require("../../type/matrix/utils/matAlgo11xS0s.js");
  8. var _matAlgo14xDs = require("../../type/matrix/utils/matAlgo14xDs.js");
  9. var _matAlgo01xDSid = require("../../type/matrix/utils/matAlgo01xDSid.js");
  10. var _matAlgo10xSids = require("../../type/matrix/utils/matAlgo10xSids.js");
  11. var _matAlgo08xS0Sid = require("../../type/matrix/utils/matAlgo08xS0Sid.js");
  12. var _factory = require("../../utils/factory.js");
  13. var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
  14. var _index = require("../../plain/number/index.js");
  15. var _useMatrixForArrayScalar = require("./useMatrixForArrayScalar.js");
  16. var name = 'rightLogShift';
  17. var dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
  18. var createRightLogShift = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
  19. var typed = _ref.typed,
  20. matrix = _ref.matrix,
  21. equalScalar = _ref.equalScalar,
  22. zeros = _ref.zeros,
  23. DenseMatrix = _ref.DenseMatrix;
  24. var matAlgo01xDSid = (0, _matAlgo01xDSid.createMatAlgo01xDSid)({
  25. typed: typed
  26. });
  27. var matAlgo02xDS0 = (0, _matAlgo02xDS.createMatAlgo02xDS0)({
  28. typed: typed,
  29. equalScalar: equalScalar
  30. });
  31. var matAlgo08xS0Sid = (0, _matAlgo08xS0Sid.createMatAlgo08xS0Sid)({
  32. typed: typed,
  33. equalScalar: equalScalar
  34. });
  35. var matAlgo10xSids = (0, _matAlgo10xSids.createMatAlgo10xSids)({
  36. typed: typed,
  37. DenseMatrix: DenseMatrix
  38. });
  39. var matAlgo11xS0s = (0, _matAlgo11xS0s.createMatAlgo11xS0s)({
  40. typed: typed,
  41. equalScalar: equalScalar
  42. });
  43. var matAlgo14xDs = (0, _matAlgo14xDs.createMatAlgo14xDs)({
  44. typed: typed
  45. });
  46. var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
  47. typed: typed,
  48. matrix: matrix
  49. });
  50. var useMatrixForArrayScalar = (0, _useMatrixForArrayScalar.createUseMatrixForArrayScalar)({
  51. typed: typed,
  52. matrix: matrix
  53. });
  54. /**
  55. * Bitwise right logical shift of value x by y number of bits, `x >>> y`.
  56. * For matrices, the function is evaluated element wise.
  57. * For units, the function is evaluated on the best prefix base.
  58. *
  59. * Syntax:
  60. *
  61. * math.rightLogShift(x, y)
  62. *
  63. * Examples:
  64. *
  65. * math.rightLogShift(4, 2) // returns number 1
  66. *
  67. * math.rightLogShift([16, 32, 64], 4) // returns Array [1, 2, 4]
  68. *
  69. * See also:
  70. *
  71. * bitAnd, bitNot, bitOr, bitXor, leftShift, rightLogShift
  72. *
  73. * @param {number | Array | Matrix} x Value to be shifted
  74. * @param {number} y Amount of shifts
  75. * @return {number | Array | Matrix} `x` zero-filled shifted right `y` times
  76. */
  77. return typed(name, {
  78. 'number, number': _index.rightLogShiftNumber,
  79. // 'BigNumber, BigNumber': ..., // TODO: implement BigNumber support for rightLogShift
  80. 'SparseMatrix, number | BigNumber': typed.referToSelf(function (self) {
  81. return function (x, y) {
  82. // check scalar
  83. if (equalScalar(y, 0)) {
  84. return x.clone();
  85. }
  86. return matAlgo11xS0s(x, y, self, false);
  87. };
  88. }),
  89. 'DenseMatrix, number | BigNumber': typed.referToSelf(function (self) {
  90. return function (x, y) {
  91. // check scalar
  92. if (equalScalar(y, 0)) {
  93. return x.clone();
  94. }
  95. return matAlgo14xDs(x, y, self, false);
  96. };
  97. }),
  98. 'number | BigNumber, SparseMatrix': typed.referToSelf(function (self) {
  99. return function (x, y) {
  100. // check scalar
  101. if (equalScalar(x, 0)) {
  102. return zeros(y.size(), y.storage());
  103. }
  104. return matAlgo10xSids(y, x, self, true);
  105. };
  106. }),
  107. 'number | BigNumber, DenseMatrix': typed.referToSelf(function (self) {
  108. return function (x, y) {
  109. // check scalar
  110. if (equalScalar(x, 0)) {
  111. return zeros(y.size(), y.storage());
  112. }
  113. return matAlgo14xDs(y, x, self, true);
  114. };
  115. })
  116. }, useMatrixForArrayScalar, matrixAlgorithmSuite({
  117. SS: matAlgo08xS0Sid,
  118. DS: matAlgo01xDSid,
  119. SD: matAlgo02xDS0
  120. }));
  121. });
  122. exports.createRightLogShift = createRightLogShift;