MatrixUtils { public static int[] minInColumns(DoubleMatrix2D A, int[] indices, double[] minValues) { return inColumns(A, indices, minValues, DoubleComparators.REVERSED_ORDER, 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 testMinInColumns() { final double[] expectedMinValues = new double[] {-1.00, 0, 0.50, -7.00}; final int[] expectedMinIndices = new int[] {0, 0, 1, 2}; final double[] actualMinValues = new double[4]; final int[] actualMinColumnIndices = MatrixUtils.minInColumns(nonZeroColumnMatrix(), null, actualMinValues); assertThat(actualMinColumnIndices).isEqualTo(expectedMinIndices); assertThat(actualMinValues).isEqualTo(expectedMinValues); }