MatrixUtils { public static int[] maxInColumns(DoubleMatrix2D A, int[] indices, double[] maxValues) { return maxInColumns(A, indices, maxValues, Functions.IDENTITY); }  static DoubleMatrix2D normalizeColumnL2(DoubleMatrix2D A, double[] work); static DoubleMatrix2D normalizeSparseColumnL2(
      final DoubleMatrix2D A, final double[] work); static DoubleMatrix2D normalizeColumnL1(DoubleMatrix2D A, double[] work); static double computeOrthogonality(DoubleMatrix2D A); static double computeSparseness(DoubleMatrix2D A); static int[] minInColumns(DoubleMatrix2D A, int[] indices, double[] minValues); static int[] maxInColumns(DoubleMatrix2D A, int[] indices, double[] maxValues); static int[] maxInColumns(
      DoubleMatrix2D A, int[] indices, double[] maxValues, DoubleFunction transform); static int maxInRow(DoubleMatrix2D A, int row); static double[] sumRows(DoubleMatrix2D A, double[] sums); static double frobeniusNorm(DoubleMatrix2D matrix); static DoubleMatrix2D sortedRowsView(
      DoubleMatrix2D matrix, IndirectComparator comparator);  }
@Test public void testMaxInColumns() { final double[] expectedMaxValues = new double[] {0.00, 5.00, 5.00, 19.00}; final int[] expectedMaxIndices = new int[] {1, 2, 2, 1}; final double[] actualMaxValues = new double[4]; final int[] actualMaxColumnIndices = MatrixUtils.maxInColumns(nonZeroColumnMatrix(), null, actualMaxValues); assertThat(actualMaxColumnIndices).isEqualTo(expectedMaxIndices); assertThat(actualMaxValues).isEqualTo(expectedMaxValues); }