private static void s_uaColSumEqNe(MatrixBlock in,MatrixBlock out,double[] bv,BinaryOperator bOp) throws DMLRuntimeException {
  int agg0=sumEqNe(0.0,bv,bOp);
  out.allocateDenseBlock(true);
  Arrays.fill(out.getDenseBlock(),0,out.getNumColumns(),agg0);
  if (agg0 != 0.0)   out.setNonZeros(out.getNumColumns());
  if (in.isEmptyBlock(false))   return;
  SparseBlock sblock=in.getSparseBlock();
  for (int j=0; j < sblock.numRows(); j++)   if (!sblock.isEmpty(j)) {
    int apos=sblock.pos(j);
    int alen=sblock.size(j);
    int[] aix=sblock.indexes(j);
    double[] avals=sblock.values(j);
    for (int i=apos; i < apos + alen; i++) {
      int cnt=sumEqNe(avals[i],bv,bOp);
      out.quickSetValue(0,aix[i],cnt);
    }
  }
}

private static void s_uaColSumEqNe ( MatrixBlock in , MatrixBlock out , double [ ] bv , BinaryOperator bOp ) throws DMLRuntimeException { int agg0 = sumEqNe ( 0.0 , bv , bOp ) ; out . allocateDenseBlock ( true ) ; Arrays . fill ( out . getDenseBlock ( ) , 0 , out . getNumColumns ( ) , agg0 ) ; if ( agg0 != 0.0 ) out . setNonZeros ( out . getNumColumns ( ) ) ; if ( in . isEmptyBlock ( false ) ) return ; SparseBlock sblock = in . getSparseBlock ( ) ; for ( int j = 0 ; j < sblock . numRows ( ) ; j ++ ) if ( ! sblock . isEmpty ( j ) ) { int apos = sblock . pos ( j ) ; int alen = sblock . size ( j ) ; int [ ] aix = sblock . indexes ( j ) ; double [ ] avals = sblock . values ( j ) ; for ( int i = apos ; i < apos + alen ; i ++ ) { int cnt = sumEqNe ( avals [ i ] , bv , bOp ) ; out . quickSetValue ( 0 , aix [ i ] , cnt ) ; } } }
uagg colsums sparse matrix for equal and notequal operator
