Matrices { public static final Matrix functionalMatrixView(final int rows, final int columns, final IntIntFunction gf, final boolean denseLike) { return new FunctionalMatrixView(rows, columns, gf, denseLike); }  static final Matrix functionalMatrixView(final int rows,
                                                  final int columns,
                                                  final IntIntFunction gf,
                                                  final boolean denseLike); static final Matrix functionalMatrixView(final int rows,
                                                  final int columns,
                                                  final IntIntFunction gf); static final Matrix transposedView(final Matrix m); static final Matrix gaussianView(final int rows,
                                          final int columns,
                                          long seed); static final Matrix symmetricUniformView(final int rows,
                                                  final int columns,
                                                  int seed); static final Matrix uniformView(final int rows,
                                         final int columns,
                                         int seed); static final IntIntFunction gaussianGenerator(final long seed); static final IntIntFunction uniformSymmetricGenerator(final int seed); static final IntIntFunction uniformGenerator(final int seed);  }
@Test public void testFunctionalView() { Matrix m = Matrices.functionalMatrixView(5, 6, new IntIntFunction() { @Override public double apply(int row, int col) { assertTrue(row < 5); assertTrue(col < 6); return row + col; } }); assertEquals(135, m.aggregate(Functions.PLUS, Functions.IDENTITY), 1e-10); }