rightLogShift.js 4.2 KB

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