or.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';
  2. import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
  3. import { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js';
  4. import { factory } from '../../utils/factory.js';
  5. import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
  6. import { orNumber } from '../../plain/number/index.js';
  7. var name = 'or';
  8. var dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];
  9. export var createOr = /* #__PURE__ */factory(name, dependencies, _ref => {
  10. var {
  11. typed,
  12. matrix,
  13. equalScalar,
  14. DenseMatrix,
  15. concat
  16. } = _ref;
  17. var matAlgo03xDSf = createMatAlgo03xDSf({
  18. typed
  19. });
  20. var matAlgo05xSfSf = createMatAlgo05xSfSf({
  21. typed,
  22. equalScalar
  23. });
  24. var matAlgo12xSfs = createMatAlgo12xSfs({
  25. typed,
  26. DenseMatrix
  27. });
  28. var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
  29. typed,
  30. matrix,
  31. concat
  32. });
  33. /**
  34. * Logical `or`. Test if at least one value is defined with a nonzero/nonempty value.
  35. * For matrices, the function is evaluated element wise.
  36. *
  37. * Syntax:
  38. *
  39. * math.or(x, y)
  40. *
  41. * Examples:
  42. *
  43. * math.or(2, 4) // returns true
  44. *
  45. * a = [2, 5, 0]
  46. * b = [0, 22, 0]
  47. * c = 0
  48. *
  49. * math.or(a, b) // returns [true, true, false]
  50. * math.or(b, c) // returns [false, true, false]
  51. *
  52. * See also:
  53. *
  54. * and, not, xor
  55. *
  56. * @param {number | BigNumber | Complex | Unit | Array | Matrix} x First value to check
  57. * @param {number | BigNumber | Complex | Unit | Array | Matrix} y Second value to check
  58. * @return {boolean | Array | Matrix}
  59. * Returns true when one of the inputs is defined with a nonzero/nonempty value.
  60. */
  61. return typed(name, {
  62. 'number, number': orNumber,
  63. 'Complex, Complex': function ComplexComplex(x, y) {
  64. return x.re !== 0 || x.im !== 0 || y.re !== 0 || y.im !== 0;
  65. },
  66. 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
  67. return !x.isZero() && !x.isNaN() || !y.isZero() && !y.isNaN();
  68. },
  69. 'Unit, Unit': typed.referToSelf(self => (x, y) => self(x.value || 0, y.value || 0))
  70. }, matrixAlgorithmSuite({
  71. SS: matAlgo05xSfSf,
  72. DS: matAlgo03xDSf,
  73. Ss: matAlgo12xSfs
  74. }));
  75. });