@Override public void test() throws Exception { Matrix<BigDecimal> matrix = allOneMatrix(dimension, dimension, precision); Vector<BigDecimal> vector = allOneVector(dimension - 1, precision); Application<List<Vector<BigDecimal>>, ProtocolBuilderNumeric> testApplication = root -> { DRes<Vector<DRes<SReal>>> closedVector = root.realLinAlg().input(vector, 1); root.realLinAlg().vectorMult(matrix, closedVector); return () -> null; }; try { runApplication(testApplication); fail("Expected IllegalArgumentException"); } catch (RuntimeException e) { if (e.getCause().getClass() != IllegalArgumentException.class) { throw e; } } } };
@Override public void test() throws Exception { Matrix<BigDecimal> matrix1 = allOneMatrix(dimension, dimension, precision); Matrix<BigDecimal> matrix2 = allOneMatrix(dimension, dimension - 1, precision); Application<List<Vector<BigDecimal>>, ProtocolBuilderNumeric> testApplication1 = root -> { DRes<Matrix<DRes<SReal>>> closedMatrix = root.realLinAlg().input(matrix1, 1); root.realLinAlg().mult(matrix2, closedMatrix); return () -> null; }; try { runApplication(testApplication1); fail("Expected IllegalArgumentException"); } catch (RuntimeException e) { if (e.getCause().getClass() != IllegalArgumentException.class) { throw e; } else { // Success - Ignore the exception } } } };
@Override public void test() throws Exception { // define input and output ArrayList<BigDecimal> rowOne = new ArrayList<>(); rowOne.add(BigDecimal.valueOf(1.1)); rowOne.add(BigDecimal.valueOf(2.2)); ArrayList<BigDecimal> rowTwo = new ArrayList<>(); rowTwo.add(BigDecimal.valueOf(3.3)); rowTwo.add(BigDecimal.valueOf(4.4)); ArrayList<BigDecimal> rowThree = new ArrayList<>(); rowThree.add(BigDecimal.valueOf(5.5)); rowThree.add(BigDecimal.valueOf(6.6)); ArrayList<ArrayList<BigDecimal>> mat = new ArrayList<>(); mat.add(rowOne); mat.add(rowTwo); mat.add(rowThree); Matrix<BigDecimal> input = new Matrix<>(3, 2, mat); // define functionality to be tested Application<Matrix<BigDecimal>, ProtocolBuilderNumeric> testApplication = root -> { DRes<Matrix<DRes<SReal>>> closed = root.realLinAlg().input(input, 1); DRes<Matrix<DRes<BigDecimal>>> opened = root.realLinAlg().openMatrix(closed); return () -> new MatrixUtils().unwrapMatrix(opened); }; Matrix<BigDecimal> output = runApplication(testApplication); for (int i = 0; i < input.getHeight(); i++) { RealTestUtils.assertEqual(output.getRow(i), input.getRow(i), 15); } } };
DRes<Matrix<DRes<SReal>>> closedA = root.realLinAlg().input(a, 1); DRes<Matrix<DRes<SReal>>> closedB = root.realLinAlg().input(b, 1); DRes<Matrix<DRes<SReal>>> res1 = root.realLinAlg().add(closedA, closedB); DRes<Matrix<DRes<SReal>>> res2 = root.realLinAlg().add(a, closedB); DRes<Matrix<DRes<SReal>>> res3 = root.realLinAlg().add(b, closedA); DRes<Matrix<DRes<BigDecimal>>> open1 = root.realLinAlg().openMatrix(res1); DRes<Matrix<DRes<BigDecimal>>> open2 = root.realLinAlg().openMatrix(res2); DRes<Matrix<DRes<BigDecimal>>> open3 = root.realLinAlg().openMatrix(res3); return () -> Arrays.asList(new MatrixUtils().unwrapMatrix(open1), new MatrixUtils().unwrapMatrix(open2), new MatrixUtils().unwrapMatrix(open3));
DRes<Matrix<DRes<SReal>>> closed = root.realLinAlg().input(input, 1); DRes<Matrix<DRes<SReal>>> transposed = root.realLinAlg().transpose(closed); DRes<Matrix<DRes<BigDecimal>>> opened = root.realLinAlg().openMatrix(transposed); return () -> new MatrixUtils().unwrapMatrix(opened); };
DRes<Matrix<DRes<SReal>>> closedA = root.realLinAlg().input(a, 1); DRes<Matrix<DRes<SReal>>> closedB = root.realLinAlg().input(b, 1); DRes<Matrix<DRes<SReal>>> res1 = root.realLinAlg().sub(closedA, closedB); DRes<Matrix<DRes<SReal>>> res2 = root.realLinAlg().sub(a, closedB); DRes<Matrix<DRes<SReal>>> res3 = root.realLinAlg().sub(closedA, b); DRes<Matrix<DRes<BigDecimal>>> open1 = root.realLinAlg().openMatrix(res1); DRes<Matrix<DRes<BigDecimal>>> open2 = root.realLinAlg().openMatrix(res2); DRes<Matrix<DRes<BigDecimal>>> open3 = root.realLinAlg().openMatrix(res3); return () -> Arrays.asList(new MatrixUtils().unwrapMatrix(open1), new MatrixUtils().unwrapMatrix(open2), new MatrixUtils().unwrapMatrix(open3));
DRes<Matrix<DRes<SReal>>> closedMatrix = root.realLinAlg().input(matrix, 1); DRes<Vector<DRes<SReal>>> closedVector = root.realLinAlg().input(vector, 1); DRes<Vector<DRes<SReal>>> res1 = root.realLinAlg().vectorMult(closedMatrix, closedVector); DRes<Vector<DRes<SReal>>> res2 = root.realLinAlg().vectorMult(matrix, closedVector); DRes<Vector<DRes<SReal>>> res3 = root.realLinAlg().vectorMult(closedMatrix, vector); DRes<Vector<DRes<BigDecimal>>> open1 = root.realLinAlg().openVector(res1); DRes<Vector<DRes<BigDecimal>>> open2 = root.realLinAlg().openVector(res2); DRes<Vector<DRes<BigDecimal>>> open3 = root.realLinAlg().openVector(res3); return () -> Arrays.asList( open1.out().stream().map(x -> x.out())
Matrix<BigDecimal> matrix3 = allOneMatrix(dimension, dimension - 1, precision); Application<List<Vector<BigDecimal>>, ProtocolBuilderNumeric> testApplication1 = root -> { DRes<Matrix<DRes<SReal>>> closedMatrix = root.realLinAlg().input(matrix1, 1); root.realLinAlg().add(matrix2, closedMatrix); return () -> null; }; DRes<Matrix<DRes<SReal>>> closedMatrix = root.realLinAlg().input(matrix1, 1); root.realLinAlg().add(matrix3, closedMatrix); return () -> null; };
DRes<Matrix<DRes<SReal>>> closedMatrix = root.realLinAlg().input(matrix, 1); DRes<SReal> closedScalar = root.realNumeric().input(s, 1); DRes<Matrix<DRes<SReal>>> res1 = root.realLinAlg().scale(closedScalar, closedMatrix); DRes<Matrix<DRes<SReal>>> res2 = root.realLinAlg().scale(s, closedMatrix); DRes<Matrix<DRes<SReal>>> res3 = root.realLinAlg().scale(closedScalar, matrix); DRes<Matrix<DRes<BigDecimal>>> open1 = root.realLinAlg().openMatrix(res1); DRes<Matrix<DRes<BigDecimal>>> open2 = root.realLinAlg().openMatrix(res2); DRes<Matrix<DRes<BigDecimal>>> open3 = root.realLinAlg().openMatrix(res3); return () -> Arrays.asList(new MatrixUtils().unwrapMatrix(open1), new MatrixUtils().unwrapMatrix(open2), new MatrixUtils().unwrapMatrix(open3));
DRes<Matrix<DRes<SReal>>> closedMatrix = root.realLinAlg().input(matrix, 1); DRes<Matrix<DRes<SReal>>> closedVector = root.realLinAlg().input(vector, 1); DRes<Matrix<DRes<SReal>>> res1 = root.realLinAlg().mult(closedMatrix, closedVector); DRes<Matrix<DRes<SReal>>> res2 = root.realLinAlg().mult(matrix, closedVector); DRes<Matrix<DRes<SReal>>> res3 = root.realLinAlg().mult(closedMatrix, vector); DRes<Matrix<DRes<BigDecimal>>> open1 = root.realLinAlg().openMatrix(res1); DRes<Matrix<DRes<BigDecimal>>> open2 = root.realLinAlg().openMatrix(res2); DRes<Matrix<DRes<BigDecimal>>> open3 = root.realLinAlg().openMatrix(res3); return () -> Arrays.asList(new MatrixUtils().unwrapMatrix(open1), new MatrixUtils().unwrapMatrix(open2), new MatrixUtils().unwrapMatrix(open3));
@Override public void test() throws Exception { // input Matrix<BigDecimal> input = new Matrix<>(0, 0, new ArrayList<>()); // functionality to be tested Application<Matrix<SReal>, ProtocolBuilderNumeric> testApplication = root -> { // close inputs DRes<Matrix<DRes<SReal>>> mat = root.realLinAlg().input(input, 1); // unwrap and return result return () -> new MatrixUtils().unwrapMatrix(mat); }; Matrix<SReal> output = runApplication(testApplication); assertTrue(output.getRows().isEmpty()); } };