## Uses of Class
org.apache.sysds.runtime.matrix.operators.BinaryOperator

- Packages that use BinaryOperator
  Package | Description
  --- | ---
  org.apache.sysds.runtime.compress |
  org.apache.sysds.runtime.compress.colgroup |
  org.apache.sysds.runtime.compress.colgroup.dictionary |
  org.apache.sysds.runtime.compress.lib |
  org.apache.sysds.runtime.data |
  org.apache.sysds.runtime.functionobjects |
  org.apache.sysds.runtime.instructions |
  org.apache.sysds.runtime.instructions.spark |
  org.apache.sysds.runtime.instructions.spark.functions |
  org.apache.sysds.runtime.matrix.data |
  org.apache.sysds.runtime.matrix.operators |

- - ### Uses of BinaryOperator in org.apache.sysds.runtime.compress

    Methods in org.apache.sysds.runtime.compress with parameters of type BinaryOperator
    Modifier and Type | Method | Description
    --- | --- | ---
    `MatrixBlock` | CompressedMatrixBlock.`binaryOperations​(BinaryOperator op, MatrixValue thatValue, MatrixValue result)` |
    `MatrixBlock` | CompressedMatrixBlock.`binaryOperationsInPlace​(BinaryOperator op, MatrixValue thatValue)` |
    `MatrixBlock` | CompressedMatrixBlock.`binaryOperationsLeft​(BinaryOperator op, MatrixValue thatValue, MatrixValue result)` |
    `MatrixBlock` | CompressedMatrixBlock.`uaggouterchainOperations​(MatrixBlock mbLeft, MatrixBlock mbRight, MatrixBlock mbOut, BinaryOperator bOp, AggregateUnaryOperator uaggOp)` |

  - ### Uses of BinaryOperator in org.apache.sysds.runtime.compress.colgroup

    Methods in org.apache.sysds.runtime.compress.colgroup with parameters of type BinaryOperator
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract AColGroup` | AColGroup.`binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` | Perform a binary row operation.
    `AColGroup` | ColGroupConst.`binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupDDC.`binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupDDCFOR.`binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupEmpty.`binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupOLE.`binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupRLE.`binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupSDC.`binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupSDCFOR.`binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupSDCSingle.`binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupSDCSingleZeros.`binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupSDCZeros.`binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupUncompressed.`binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `abstract AColGroup` | AColGroup.`binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` | Perform a binary row operation.
    `AColGroup` | ColGroupConst.`binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupDDC.`binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupDDCFOR.`binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupEmpty.`binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupOLE.`binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupRLE.`binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupSDC.`binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupSDCFOR.`binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupSDCSingle.`binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupSDCSingleZeros.`binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupSDCZeros.`binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` |
    `AColGroup` | ColGroupUncompressed.`binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` |

  - ### Uses of BinaryOperator in org.apache.sysds.runtime.compress.colgroup.dictionary

    Methods in org.apache.sysds.runtime.compress.colgroup.dictionary with parameters of type BinaryOperator
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract ADictionary` | ADictionary.`binOpLeft​(BinaryOperator op, double[] v, int[] colIndexes)` | Apply binary row operation on the left side in place
    `Dictionary` | Dictionary.`binOpLeft​(BinaryOperator op, double[] v, int[] colIndexes)` |
    `ADictionary` | MatrixBlockDictionary.`binOpLeft​(BinaryOperator op, double[] v, int[] colIndexes)` |
    `ADictionary` | QDictionary.`binOpLeft​(BinaryOperator op, double[] v, int[] colIndexes)` |
    `abstract ADictionary` | ADictionary.`binOpLeftWithReference​(BinaryOperator op, double[] v, int[] colIndexes, double[] reference, double[] newReference)` | Apply the binary operator such that each value is offset by the reference before application.
    `Dictionary` | Dictionary.`binOpLeftWithReference​(BinaryOperator op, double[] v, int[] colIndexes, double[] reference, double[] newReference)` |
    `Dictionary` | MatrixBlockDictionary.`binOpLeftWithReference​(BinaryOperator op, double[] v, int[] colIndexes, double[] reference, double[] newReference)` |
    `ADictionary` | QDictionary.`binOpLeftWithReference​(BinaryOperator op, double[] v, int[] colIndexes, double[] reference, double[] newReference)` |
    `abstract ADictionary` | ADictionary.`binOpRight​(BinaryOperator op, double[] v)` | Apply binary row operation on the right side.
    `abstract ADictionary` | ADictionary.`binOpRight​(BinaryOperator op, double[] v, int[] colIndexes)` | Apply binary row operation on the right side.
    `Dictionary` | Dictionary.`binOpRight​(BinaryOperator op, double[] v)` |
    `Dictionary` | Dictionary.`binOpRight​(BinaryOperator op, double[] v, int[] colIndexes)` |
    `MatrixBlockDictionary` | MatrixBlockDictionary.`binOpRight​(BinaryOperator op, double[] v)` |
    `MatrixBlockDictionary` | MatrixBlockDictionary.`binOpRight​(BinaryOperator op, double[] v, int[] colIndexes)` |
    `ADictionary` | QDictionary.`binOpRight​(BinaryOperator op, double[] v)` |
    `ADictionary` | QDictionary.`binOpRight​(BinaryOperator op, double[] v, int[] colIndexes)` |
    `abstract ADictionary` | ADictionary.`binOpRightWithReference​(BinaryOperator op, double[] v, int[] colIndexes, double[] reference, double[] newReference)` | Apply the binary operator such that each value is offset by the reference before application.
    `Dictionary` | Dictionary.`binOpRightWithReference​(BinaryOperator op, double[] v, int[] colIndexes, double[] reference, double[] newReference)` |
    `Dictionary` | MatrixBlockDictionary.`binOpRightWithReference​(BinaryOperator op, double[] v, int[] colIndexes, double[] reference, double[] newReference)` |
    `ADictionary` | QDictionary.`binOpRightWithReference​(BinaryOperator op, double[] v, int[] colIndexes, double[] reference, double[] newReference)` |

  - ### Uses of BinaryOperator in org.apache.sysds.runtime.compress.lib

    Methods in org.apache.sysds.runtime.compress.lib with parameters of type BinaryOperator
    Modifier and Type | Method | Description
    --- | --- | ---
    `static MatrixBlock` | CLALibBinaryCellOp.`binaryOperationsLeft​(BinaryOperator op, CompressedMatrixBlock m1, MatrixBlock that, MatrixBlock result)` |
    `static MatrixBlock` | CLALibBinaryCellOp.`binaryOperationsRight​(BinaryOperator op, CompressedMatrixBlock m1, MatrixBlock that, MatrixBlock result)` |

  - ### Uses of BinaryOperator in org.apache.sysds.runtime.data

    Methods in org.apache.sysds.runtime.data with parameters of type BinaryOperator
    Modifier and Type | Method | Description
    --- | --- | ---
    `TensorBlock` | TensorBlock.`binaryOperations​(BinaryOperator op, TensorBlock thatValue, TensorBlock result)` |
    `static void` | LibTensorBincell.`bincellOp​(TensorBlock m1, TensorBlock m2, TensorBlock ret, BinaryOperator op)` | tensor-tensor binary operations

  - ### Uses of BinaryOperator in org.apache.sysds.runtime.functionobjects

    Methods in org.apache.sysds.runtime.functionobjects that return BinaryOperator
    Modifier and Type | Method | Description
    --- | --- | ---
    `BinaryOperator` | MinusMultiply.`setOp2Constant​(double cnt)` |
    `BinaryOperator` | PlusMultiply.`setOp2Constant​(double cnt)` |
    `BinaryOperator` | TernaryValueFunction.ValueFunctionWithConstant.`setOp2Constant​(double cnt)` |

  - ### Uses of BinaryOperator in org.apache.sysds.runtime.instructions

    Methods in org.apache.sysds.runtime.instructions that return BinaryOperator
    Modifier and Type | Method | Description
    --- | --- | ---
    `static BinaryOperator` | InstructionUtils.`parseBinaryOperator​(String opcode)` |
    `static BinaryOperator` | InstructionUtils.`parseExtendedBinaryOperator​(String opcode)` |

  - ### Uses of BinaryOperator in org.apache.sysds.runtime.instructions.spark

    Constructors in org.apache.sysds.runtime.instructions.spark with parameters of type BinaryOperator
    Constructor | Description
    --- | ---
    `RDDBinUaggChainFunction​(BinaryOperator bop, AggregateUnaryOperator uaggop)` |

  - ### Uses of BinaryOperator in org.apache.sysds.runtime.instructions.spark.functions

    Constructors in org.apache.sysds.runtime.instructions.spark.functions with parameters of type BinaryOperator
    Constructor | Description
    --- | ---
    `MatrixMatrixBinaryOpFunction​(BinaryOperator op)` |
    `MatrixVectorBinaryOpPartitionFunction​(BinaryOperator op, PartitionedBroadcast<MatrixBlock> binput, BinaryM.VectorType vtype)` |
    `OuterVectorBinaryOpFunction​(BinaryOperator op, PartitionedBroadcast<MatrixBlock> binput)` |
    `TensorTensorBinaryOpFunction​(BinaryOperator op)` |
    `TensorTensorBinaryOpPartitionFunction​(BinaryOperator op, PartitionedBroadcast<TensorBlock> binput, boolean[] replicateDim)` |

  - ### Uses of BinaryOperator in org.apache.sysds.runtime.matrix.data

    Methods in org.apache.sysds.runtime.matrix.data with parameters of type BinaryOperator
    Modifier and Type | Method | Description
    --- | --- | ---
    `static void` | LibMatrixOuterAgg.`adjustRowIndicesMax​(int[] vix, double[] vmb, BinaryOperator bOp)` | This function adjusts indices to be leveraged in uarimaxXX functions.
    `static void` | LibMatrixOuterAgg.`adjustRowIndicesMin​(int[] vix, double[] vmb, BinaryOperator bOp)` | This function adjusts indices to be leveraged in uariminXX functions.
    `static void` | LibMatrixOuterAgg.`aggregateMatrix​(MatrixBlock in1Val, MatrixBlock outVal, double[] bv, int[] bvi, BinaryOperator bOp, AggregateUnaryOperator uaggOp)` |
    `MatrixValue` | CM_N_COVCell.`binaryOperations​(BinaryOperator op, MatrixValue thatValue, MatrixValue result)` |
    `FrameBlock` | FrameBlock.`binaryOperations​(BinaryOperator bop, FrameBlock that, FrameBlock out)` | This method performs the value comparison on two frames if the values in both frames are equal, not equal, less than, greater than, less than/greater than and equal to the output frame will store boolean value for each each comparison
    `MatrixBlock` | MatrixBlock.`binaryOperations​(BinaryOperator op, MatrixValue thatValue)` |
    `MatrixBlock` | MatrixBlock.`binaryOperations​(BinaryOperator op, MatrixValue thatValue, MatrixValue result)` |
    `MatrixValue` | MatrixCell.`binaryOperations​(BinaryOperator op, MatrixValue thatValue, MatrixValue result)` |
    `abstract MatrixValue` | MatrixValue.`binaryOperations​(BinaryOperator op, MatrixValue thatValue, MatrixValue result)` |
    `MatrixValue` | CM_N_COVCell.`binaryOperationsInPlace​(BinaryOperator op, MatrixValue thatValue)` |
    `MatrixBlock` | MatrixBlock.`binaryOperationsInPlace​(BinaryOperator op, MatrixValue thatValue)` |
    `MatrixValue` | MatrixCell.`binaryOperationsInPlace​(BinaryOperator op, MatrixValue thatValue)` |
    `abstract MatrixValue` | MatrixValue.`binaryOperationsInPlace​(BinaryOperator op, MatrixValue thatValue)` |
    `static void` | LibMatrixBincell.`bincellOp​(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, BinaryOperator op)` | matrix-matrix binary operations, MM, MV
    `static void` | LibMatrixBincell.`bincellOp​(MatrixBlock m1, MatrixBlock m2, MatrixBlock ret, BinaryOperator op, int k)` |
    `static MatrixBlock` | LibMatrixBincell.`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` | LibMatrixBincell.`bincellOpInPlaceLeft​(MatrixBlock m1ret, MatrixBlock m2, BinaryOperator op)` | Left side operations, updating the m1 matrix like: m2 op m1ret
    `static MatrixBlock` | LibMatrixBincell.`bincellOpInPlaceRight​(MatrixBlock m1ret, MatrixBlock m2, BinaryOperator op)` | Right side operations, updating the m1 matrix like: m1ret op m2
    `static boolean` | LibMatrixOuterAgg.`isCompareOperator​(BinaryOperator bOp)` | This will return if uaggOp is of type RowIndexMin
    `static boolean` | LibMatrixBincell.`isSparseSafeDivide​(BinaryOperator op, MatrixBlock rhs)` |
    `static boolean` | LibMatrixOuterAgg.`isSupportedUaggOp​(AggregateUnaryOperator uaggOp, BinaryOperator bOp)` |
    `static void` | LibMatrixCUDA.`matrixMatrixArithmetic​(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, MatrixObject in2, String outputName, boolean isLeftTransposed, boolean isRightTransposed, BinaryOperator op)` | Performs elementwise arithmetic operation specified by op of two input matrices in1 and in2
    `static void` | LibMatrixCUDA.`matrixMatrixRelational​(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, MatrixObject in2, String outputName, BinaryOperator op)` | Performs elementwise operation relational specified by op of two input matrices in1 and in2
    `static void` | OperationsOnMatrixValues.`performBinaryIgnoreIndexes​(MatrixValue value1, MatrixValue value2, MatrixValue valueOut, BinaryOperator op)` |
    `static int[]` | LibMatrixOuterAgg.`prepareRowIndices​(int iCols, double[] vmb, BinaryOperator bOp, AggregateUnaryOperator uaggOp)` |
    `static int[]` | LibMatrixOuterAgg.`prepareRowIndicesMax​(int iCols, double[] vmb, BinaryOperator bOp)` | This function will return max indices, based on column vector data.
    `static int[]` | LibMatrixOuterAgg.`prepareRowIndicesMin​(int iCols, double[] vmb, BinaryOperator bOp)` | This function will return min indices, based on column vector data.
    `MatrixBlock` | MatrixBlock.`uaggouterchainOperations​(MatrixBlock mbLeft, MatrixBlock mbRight, MatrixBlock mbOut, BinaryOperator bOp, AggregateUnaryOperator uaggOp)` |

  - ### Uses of BinaryOperator in org.apache.sysds.runtime.matrix.operators

    Fields in org.apache.sysds.runtime.matrix.operators declared as BinaryOperator
    Modifier and Type | Field | Description
    --- | --- | ---
    `BinaryOperator` | AggregateOperator.`increOp` |