MatrixUtils { public static double computeSparseness(DoubleMatrix2D A) { int count = 0; for (int r = 0; r < A.rows(); r++) { for (int c = 0; c < A.columns(); c++) { if (A.getQuick(r, c) != 0) { count++; } } } return count / (double) (A.rows() * A.columns()); }  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 testMinSparseness() { final DoubleMatrix2D sparse = new DenseDoubleMatrix2D(2, 2); assertThat(MatrixUtils.computeSparseness(sparse)).isEqualTo(0); }
@Test public void testMaxSparseness() { final DoubleMatrix2D sparse = new DenseDoubleMatrix2D(2, 2); sparse.assign(3); assertThat(MatrixUtils.computeSparseness(sparse)).isEqualTo(1); }