org.apache.sysds.runtime.matrix.data

## Class LibMatrixBincell

- java.lang.Object
- - org.apache.sysds.runtime.matrix.data.LibMatrixBincell

-     public class LibMatrixBincell
      extends Object

  Library for binary cellwise operations (incl arithmetic, relational, etc). Currently, we don't have dedicated support for the individual operations but for categories of operations and combinations of dense/sparse and MM/MV. Safe/unsafe refer to sparse-safe and sparse-unsafe operations.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `LibMatrixBincell.BinaryAccessType`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `bincellOp(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, BinaryOperator op)` matrix-matrix binary operations, MM, MV
    `static void` | `bincellOp(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, BinaryOperator op, int k)`
    `static void` | `bincellOp(MatrixBlock m1, MatrixBlock ret, ScalarOperator op)` matrix-scalar, scalar-matrix binary operations.
    `static void` | `bincellOp(MatrixBlock m1, MatrixBlock ret, ScalarOperator op, int k)`
    `static MatrixBlock` | `bincellOpInPlace(MatrixBlock m1ret, MatrixBlock m2, BinaryOperator op)` NOTE: operations in place always require m1 and m2 to be of equal dimensions defaults to right side operations, updating the m1 matrix with like: m1ret op m2
    `static MatrixBlock` | `bincellOpInPlaceLeft(MatrixBlock m1ret, MatrixBlock m2, BinaryOperator op)` Left side operations, updating the m1 matrix like: m2 op m1ret
    `static MatrixBlock` | `bincellOpInPlaceRight(MatrixBlock m1ret, MatrixBlock m2, BinaryOperator op)` Right side operations, updating the m1 matrix like: m1ret op m2
    `static LibMatrixBincell.BinaryAccessType` | `getBinaryAccessType(MatrixBlock m1, MatrixBlock m2)`
    `static boolean` | `isAllDense(MatrixBlock... mb)`
    `static boolean` | `isSparseSafeDivide(BinaryOperator op, MatrixBlock rhs)`
    `static void` | `isValidDimensionsBinary(MatrixBlock m1, MatrixBlock m2)`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### bincellOp

          public static void bincellOp(MatrixBlock m1,
                                       MatrixBlock ret,
                                       ScalarOperator op)

      matrix-scalar, scalar-matrix binary operations.
      Parameters:
        `m1` - input matrix
        `ret` - result matrix
        `op` - scalar operator

    - #### bincellOp

          public static void bincellOp(MatrixBlock m1,
                                       MatrixBlock ret,
                                       ScalarOperator op,
                                       int k)

    - #### bincellOp

          public static void bincellOp(MatrixBlock m1,
                                       MatrixBlock m2,
                                       MatrixBlock ret,
                                       BinaryOperator op)

      matrix-matrix binary operations, MM, MV
      Parameters:
        `m1` - input matrix 1
        `m2` - input matrix 2
        `ret` - result matrix
        `op` - binary operator

    - #### bincellOp

          public static void bincellOp(MatrixBlock m1,
                                       MatrixBlock m2,
                                       MatrixBlock ret,
                                       BinaryOperator op,
                                       int k)

    - #### bincellOpInPlace

          public static MatrixBlock bincellOpInPlace(MatrixBlock m1ret,
                                                     MatrixBlock m2,
                                                     BinaryOperator op)

      NOTE: operations in place always require m1 and m2 to be of equal dimensions defaults to right side operations, updating the m1 matrix with like: m1ret op m2
      Parameters:
        `m1ret` - result matrix updated in place
        `m2` - matrix block the other matrix to take values from
        `op` - binary operator the operator that is placed in the middle of m1ret and m2
      Returns:
        The same pointer to m1ret argument, and the updated result.

    - #### bincellOpInPlaceRight

          public static MatrixBlock bincellOpInPlaceRight(MatrixBlock m1ret,
                                                          MatrixBlock m2,
                                                          BinaryOperator op)

      Right side operations, updating the m1 matrix like: m1ret op m2
      Parameters:
        `m1ret` - result matrix updated in place
        `m2` - matrix block the other matrix to take values from
        `op` - binary operator the operator that is placed in the middle of m1ret and m2
      Returns:
        The result MatrixBlock (same object pointer to m1ret argument)

    - #### bincellOpInPlaceLeft

          public static MatrixBlock bincellOpInPlaceLeft(MatrixBlock m1ret,
                                                         MatrixBlock m2,
                                                         BinaryOperator op)

      Left side operations, updating the m1 matrix like: m2 op m1ret
      Parameters:
        `m1ret` - result matrix updated in place
        `m2` - matrix block the other matrix to take values from
        `op` - binary operator the operator that is placed in the middle of m1ret and m2
      Returns:
        The result MatrixBlock (same object pointer to m1ret argument)

    - #### getBinaryAccessType

          public static LibMatrixBincell.BinaryAccessType getBinaryAccessType(MatrixBlock m1,
                                                                              MatrixBlock m2)

    - #### isValidDimensionsBinary

          public static void isValidDimensionsBinary(MatrixBlock m1,
                                                     MatrixBlock m2)

    - #### isSparseSafeDivide

          public static boolean isSparseSafeDivide(BinaryOperator op,
                                                   MatrixBlock rhs)

    - #### isAllDense

          public static boolean isAllDense(MatrixBlock... mb)

Copyright © 2021 The Apache Software Foundation. All rights reserved.