Index: lutinmatrix/src/test/org/codelutin/math/matrix/BasicMatrixTest.java diff -u lutinmatrix/src/test/org/codelutin/math/matrix/BasicMatrixTest.java:1.1.1.1 lutinmatrix/src/test/org/codelutin/math/matrix/BasicMatrixTest.java:1.2 --- lutinmatrix/src/test/org/codelutin/math/matrix/BasicMatrixTest.java:1.1.1.1 Tue Nov 2 16:25:32 2004 +++ lutinmatrix/src/test/org/codelutin/math/matrix/BasicMatrixTest.java Thu Nov 4 13:50:17 2004 @@ -23,9 +23,9 @@ * Created: 27 oct. 2004 * * @author Benjamin Poussin - * @version $Revision: 1.1.1.1 $ + * @version $Revision: 1.2 $ * - * Mise a jour: $Date: 2004/11/02 16:25:32 $ + * Mise a jour: $Date: 2004/11/04 13:50:17 $ * par : $Author: bpoussin $ */ @@ -128,7 +128,7 @@ assertEquals(98, mat.getValue(new int[]{0, 9, 4}), 0); assertEquals(97, mat.getValue(new int[]{0, 4, 2}), 0); - System.out.println(mat.toString()); +// System.out.println(mat.toString()); // acces a un element qui n'existe pas try{ @@ -189,7 +189,7 @@ int [][] val1 = new int[][]{{0}}; BasicMatrix m1 = new BasicMatrix(new int[]{3,3,3}); - System.out.println("Matrice a 27 valeurs"); +// System.out.println("Matrice a 27 valeurs"); int cpt = 0; for(BasicMatrixIterator iter = m1.iterator(); iter.next();){ Arrays.equals(val27[cpt], iter.getCoordinates()); @@ -200,7 +200,7 @@ cpt = 0; BasicMatrix m2 = new BasicMatrix(new int[]{1}); - System.out.println("Matrice a 1 valeurs"); +// System.out.println("Matrice a 1 valeurs"); for(BasicMatrixIterator iter = m2.iterator(); iter.next();){ Arrays.equals(val1[cpt], iter.getCoordinates()); cpt ++; @@ -209,7 +209,7 @@ assertEquals(1, cpt); } - public void testPerf() throws Exception { + public void testPerfLineaire() throws Exception { MapFunction f = new MapFunction(){ public double apply(double value){ return value + 2; @@ -217,24 +217,15 @@ }; BasicMatrix m1 = new BasicMatrix(new int[]{30,30,30,30}); + m1.map(f); + } + + public void testPerfCoordonnee() throws Exception { BasicMatrix m2 = new BasicMatrix(new int[]{30,30,30,30}); - { - System.out.println("Test en lineaire"); - long start = System.currentTimeMillis(); - m1.map(f); - long end = System.currentTimeMillis(); - System.out.println("time: " + (end - start)); - } - { - System.out.println("Test en coordonnee"); - BasicMatrixIterator inc = m2.iterator(); - long start = System.currentTimeMillis(); - while(inc.next()){ - inc.setValue(inc.getValue() + 2); - } - long end = System.currentTimeMillis(); - System.out.println("time: " + (end - start)); + BasicMatrixIterator inc = m2.iterator(); + while(inc.next()){ + inc.setValue(inc.getValue() + 2); } } Index: lutinmatrix/src/test/org/codelutin/math/matrix/MatrixEncoderDecoderTest.java diff -u lutinmatrix/src/test/org/codelutin/math/matrix/MatrixEncoderDecoderTest.java:1.1.1.1 lutinmatrix/src/test/org/codelutin/math/matrix/MatrixEncoderDecoderTest.java:1.2 --- lutinmatrix/src/test/org/codelutin/math/matrix/MatrixEncoderDecoderTest.java:1.1.1.1 Tue Nov 2 16:25:32 2004 +++ lutinmatrix/src/test/org/codelutin/math/matrix/MatrixEncoderDecoderTest.java Thu Nov 4 13:50:17 2004 @@ -23,9 +23,9 @@ * Created: 31 oct. 2004 * * @author Benjamin Poussin - * @version $Revision: 1.1.1.1 $ + * @version $Revision: 1.2 $ * - * Mise a jour: $Date: 2004/11/02 16:25:32 $ + * Mise a jour: $Date: 2004/11/04 13:50:17 $ * par : $Author: bpoussin $ */ @@ -72,12 +72,12 @@ mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}); subtestEncoderDecoder(mat); - mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}); + mat = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}); subtestEncoderDecoder(mat); // on modifie S1 pour avoir un null au milieu s1.set(1, null); - mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + mat = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); mat.setSemantics(1, Collections.nCopies(3, null)); subtestEncoderDecoder(mat); } Index: lutinmatrix/src/test/org/codelutin/math/matrix/MatrixNDTest.java diff -u lutinmatrix/src/test/org/codelutin/math/matrix/MatrixNDTest.java:1.1.1.1 lutinmatrix/src/test/org/codelutin/math/matrix/MatrixNDTest.java:1.2 --- lutinmatrix/src/test/org/codelutin/math/matrix/MatrixNDTest.java:1.1.1.1 Tue Nov 2 16:25:32 2004 +++ lutinmatrix/src/test/org/codelutin/math/matrix/MatrixNDTest.java Thu Nov 4 13:50:17 2004 @@ -21,9 +21,9 @@ * * Created: 10 mai 2004 * -* @version $Revision: 1.1.1.1 $ +* @version $Revision: 1.2 $ * -* Mise a jour: $Date: 2004/11/02 16:25:32 $ +* Mise a jour: $Date: 2004/11/04 13:50:17 $ * par : $Author: bpoussin $ */ @@ -44,9 +44,9 @@ mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}); - mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}); + mat = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}); - mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + mat = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); } @@ -61,7 +61,7 @@ assertTrue(null == mat.getSemantics(1).get(1)); - mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}); + mat = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}); // la matrice doit avoir ca propre copie des semantiques s2.set(1, "pas bon"); @@ -78,7 +78,7 @@ MatrixNDImpl mat = null; - mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + mat = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); assertEquals("Ma mat", mat.getName()); mat.setName("Renamed"); @@ -96,7 +96,7 @@ MatrixNDImpl mat = null; - mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + mat = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); mat.setValue(1,1,1, 34); assertEquals(34, mat.getValue("b", "f", "l"), 0); @@ -172,7 +172,7 @@ MatrixNDImpl mat = null; - mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + mat = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); int cpt = 0; for(MatrixIterator i=mat.iterator(); i.hasNext();){ @@ -189,8 +189,8 @@ List s2 = Arrays.asList(new String[]{"e", "f", "g"}); List s3 = Arrays.asList(new String[]{"k", "l", "m"}); - MatrixND mat1 = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); - MatrixND mat2 = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + MatrixND mat1 = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + MatrixND mat2 = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); MatrixHelper.fill(mat1, 3); MatrixHelper.fill(mat2, 26); @@ -207,8 +207,8 @@ List s2 = Arrays.asList(new String[]{"e", "f", "g"}); List s3 = Arrays.asList(new String[]{"k", "l", "m"}); - MatrixND mat1 = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); - MatrixND mat2 = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + MatrixND mat1 = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + MatrixND mat2 = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); MatrixHelper.fill(mat1, 3); MatrixHelper.fill(mat2, 26); @@ -225,9 +225,9 @@ List s2 = Arrays.asList(new String[]{"e", "f", "g"}); List s3 = Arrays.asList(new String[]{"k", "l", "m"}); - MatrixND mat1 = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); - MatrixND mat2 = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); - MatrixND mat3 = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + MatrixND mat1 = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + MatrixND mat2 = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + MatrixND mat3 = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); MatrixHelper.fill(mat1, 3); MatrixHelper.fill(mat2, 26); @@ -245,28 +245,75 @@ MatrixND mat = null; - mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); - MatrixHelper.fill(mat, 3); + mat = new MatrixNDImpl(new int[]{4,4}); + MatrixND mat2 = mat; + int i=0; + for(MatrixIterator mi=mat.iterator(); mi.next();){ + mi.setValue(++i); + } + + assertEquals(mat, mat2); + mat2 = mat.sumOverDim(1, 0); + assertEquals(mat, mat2); + mat2 = mat.sumOverDim(1, 1); + assertEquals(mat, mat2); + mat2 = mat.sumOverDim(1, 2); + assertEquals(2, mat2.getDim(1)); + assertEquals(3, mat2.getValue(0, 0), 0); + assertEquals(7, mat2.getValue(0, 1), 0); + assertEquals(11, mat2.getValue(1, 0), 0); + assertEquals(15, mat2.getValue(1, 1), 0); + assertEquals(19, mat2.getValue(2, 0), 0); + assertEquals(23, mat2.getValue(2, 1), 0); + assertEquals(27, mat2.getValue(3, 0), 0); + assertEquals(31, mat2.getValue(3, 1), 0); + + mat2 = mat.sumOverDim(1, 3); + assertEquals(1, mat2.getDim(1)); + assertEquals(6, mat2.getValue(0, 0), 0); + assertEquals(18, mat2.getValue(1, 0), 0); + assertEquals(30, mat2.getValue(2, 0), 0); + assertEquals(42, mat2.getValue(3, 0), 0); + + mat2 = mat.sumOverDim(1, 4); + assertEquals(1, mat2.getDim(1)); + assertEquals(10, mat2.getValue(0, 0), 0); + assertEquals(26, mat2.getValue(1, 0), 0); + assertEquals(42, mat2.getValue(2, 0), 0); + assertEquals(58, mat2.getValue(3, 0), 0); + + mat = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + + MatrixHelper.fill(mat, 3); + mat.setValue(0, 0, 0, 2); + mat.setValue(2, 2, 2, 4); mat = mat.sumOverDim(1); assertTrue(MatrixHelper.sameDimension(new int[]{3,1,3}, mat.getDim())); - assertEquals(9, mat.getValue(0,0,0), 0); + assertEquals(8, mat.getValue(0,0,0), 0); assertEquals(9, mat.getValue(2,0,1), 0); - assertEquals(9, mat.getValue(2,0,2), 0); + assertEquals(10, mat.getValue(2,0,2), 0); + mat = new MatrixNDImpl(new int[]{6,6,6}); MatrixHelper.fill(mat, 3); + mat.setValue(0, 0, 0, 0); + mat.setValue(0, 1, 0, 1); + mat.setValue(0, 2, 0, 2); + mat.setValue(0, 3, 0, 3); + mat.setValue(0, 4, 0, 4); + mat.setValue(0, 5, 0, 5); mat = mat.sumOverDim(1, 3); - assertTrue(MatrixHelper.sameDimension(new int[]{6,3,6}, mat.getDim())); - - assertEquals(6, mat.getValue(0,0,0), 0); - assertEquals(6, mat.getValue(2,0,1), 0); - assertEquals(6, mat.getValue(5,2,5), 0); + assertTrue(MatrixHelper.sameDimension(new int[]{6,2,6}, mat.getDim())); + assertEquals(3, mat.getValue(0,0,0), 0); + assertEquals(12, mat.getValue(0,1,0), 0); + assertEquals(9, mat.getValue(1,1,5), 0); + assertEquals(9, mat.getValue(5,0,3), 0); } public void testTranspose() throws Exception { @@ -296,4 +343,102 @@ assertEquals(64, mat.getValue(0, 3), 0); assertEquals(46, mat.getValue(0, 0), 0); } + + public void testMults() throws Exception { + List s1 = Arrays.asList(new String[]{"a", "b", "c"}); + List s2 = Arrays.asList(new String[]{"e", "f", "g"}); + List s3 = Arrays.asList(new String[]{"k", "l", "m"}); + + MatrixND mat1 = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + MatrixND mat2 = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + + MatrixHelper.fill(mat1, 3); + MatrixHelper.fill(mat2, 26); + + mat1.mults(3); + mat2.mults(0); + + assertEquals(9, mat1.getValue(0,0,0), 0); + assertEquals(9, mat1.getValue(1,2,0), 0); + assertEquals(0, mat2.getValue(2,2,2), 0); + } + + public void testDivs() throws Exception { + List s1 = Arrays.asList(new String[]{"a", "b", "c"}); + List s2 = Arrays.asList(new String[]{"e", "f", "g"}); + List s3 = Arrays.asList(new String[]{"k", "l", "m"}); + + MatrixND mat1 = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + MatrixND mat2 = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + + MatrixHelper.fill(mat1, 3); + MatrixHelper.fill(mat2, 26); + + mat1.divs(3); + mat2.divs(4); + + assertEquals(1, mat1.getValue(0,0,0), 0); + assertEquals(6.5, mat2.getValue(1,2,0), 0); + assertEquals(6.5, mat2.getValue(2,2,2), 0); + } + + public void testPaste() throws Exception { + + MatrixND mat1 = new MatrixNDImpl(new int[]{6, 7, 8}); + MatrixND mat2 = new MatrixNDImpl(new int[]{2, 2, 2}); + + MatrixHelper.fill(mat1, 3); + MatrixHelper.fill(mat2, 26); + + mat1.paste(new int[]{3, 0, 4}, mat2); + + assertEquals(3, mat1.getValue(0,0,0), 0); + assertEquals(26, mat1.getValue(3,0,4), 0); + assertEquals(26, mat1.getValue(4,1,5), 0); + assertEquals(3, mat1.getValue(5,2,6), 0); + } + + public void testReduce() throws Exception { + + MatrixND mat = null; + + mat = new MatrixNDImpl(new int[]{6, 7, 8}); + MatrixHelper.fill(mat, 3); + + mat = mat.sumOverDim(1); + assertEquals(21, mat.getValue(0, 0, 0), 0); + mat = mat.reduce(); + assertEquals(2, mat.getNbDim()); + assertEquals(6, mat.getDim(0)); + assertEquals(8, mat.getDim(1)); + assertEquals(21, mat.getValue(0, 0), 0); + assertEquals(21, mat.getValue(5, 7), 0); + + + mat = new MatrixNDImpl(new int[]{2, 2, 2}); + MatrixHelper.fill(mat, 26); + + mat = mat.sumOverDim(1); + mat = mat.sumOverDim(0); + assertEquals(104, mat.getValue(0, 0, 0), 0); + mat = mat.reduce(); + assertEquals(1, mat.getNbDim()); + assertEquals(2, mat.getDim(0)); + assertEquals(104, mat.getValue(0), 0); + assertEquals(104, mat.getValue(1), 0); + + + mat = new MatrixNDImpl(new int[]{2, 2, 2}); + MatrixHelper.fill(mat, 6); + + mat = mat.sumOverDim(1); + mat = mat.sumOverDim(2); + mat = mat.sumOverDim(0); + assertEquals(48, mat.getValue(0, 0, 0), 0); + mat = mat.reduce(); + assertEquals(1, mat.getNbDim()); + assertEquals(1, mat.getDim(0)); + assertEquals(48, mat.getValue(0), 0); + } + } Index: lutinmatrix/src/test/org/codelutin/math/matrix/SubMatrixTest.java diff -u lutinmatrix/src/test/org/codelutin/math/matrix/SubMatrixTest.java:1.1.1.1 lutinmatrix/src/test/org/codelutin/math/matrix/SubMatrixTest.java:1.2 --- lutinmatrix/src/test/org/codelutin/math/matrix/SubMatrixTest.java:1.1.1.1 Tue Nov 2 16:25:32 2004 +++ lutinmatrix/src/test/org/codelutin/math/matrix/SubMatrixTest.java Thu Nov 4 13:50:17 2004 @@ -23,9 +23,9 @@ * Created: 29 oct. 2004 * * @author Benjamin Poussin - * @version $Revision: 1.1.1.1 $ + * @version $Revision: 1.2 $ * - * Mise a jour: $Date: 2004/11/02 16:25:32 $ + * Mise a jour: $Date: 2004/11/04 13:50:17 $ * par : $Author: bpoussin $ */ @@ -45,7 +45,7 @@ MatrixNDImpl mat = null; - mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + mat = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); MatrixND smat = mat.getSubMatrix(1, 0, 2); assertTrue(Arrays.equals(new int[]{3,2,3}, smat.getDim())); @@ -100,18 +100,18 @@ MatrixNDImpl mat = null; - mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + mat = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); MatrixND smat = mat.getSubMatrix(1, 0, 2); - System.out.println(MatrixHelper.coordinatesToString(smat.getDim())); +// System.out.println(MatrixHelper.coordinatesToString(smat.getDim())); int cpt = 0; for(MatrixIterator i=smat.iterator(); i.hasNext();){ i.next(); - System.out.println(MatrixHelper.coordinatesToString(i.getCoordinates())); - System.out.println(MatrixHelper.coordinatesToString(i.getSemanticsCoordinates())); +// System.out.println(MatrixHelper.coordinatesToString(i.getCoordinates())); +// System.out.println(MatrixHelper.coordinatesToString(i.getSemanticsCoordinates())); assertTrue(Arrays.equals(val18[cpt], i.getCoordinates())); assertTrue(Arrays.equals(vals18[cpt], i.getSemanticsCoordinates())); @@ -145,15 +145,15 @@ MatrixNDImpl mat = null; - mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + mat = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); MatrixND smat1 = mat.getSubMatrix(1, 0, 2); MatrixND smat2 = smat1.getSubMatrix(0, 2, 1); - System.out.println(" smat2.getDim: "+MatrixHelper.coordinatesToString(smat2.getDim())); +// System.out.println(" smat2.getDim: "+MatrixHelper.coordinatesToString(smat2.getDim())); assertTrue(Arrays.equals(new int[]{1, 2, 3}, smat2.getDim())); - System.out.println(MatrixHelper.coordinatesToString(smat2.getDim())); +// System.out.println(MatrixHelper.coordinatesToString(smat2.getDim())); int cpt = 0; for(MatrixIterator i=smat2.iterator(); i.hasNext();){ @@ -174,7 +174,7 @@ MatrixNDImpl mat = null; - mat = new MatrixNDImpl("Ma mat", new int[]{3,3,3}, new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + mat = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); MatrixND smat1 = mat.getSubMatrix(1, 0, 2); MatrixND smat2 = smat1.getSubMatrix(0, 2, 1); @@ -183,6 +183,54 @@ assertEquals(34, smat2.getValue("c", "e", "k"), 0); smat2.setValue("c", "f", "l", 23); assertEquals(23, smat2.getValue(0, 1, 1), 0); + } + + public void testSubAdd() throws Exception { + List s1 = Arrays.asList(new String[]{"a", "b", "c"}); + List s2 = Arrays.asList(new String[]{"e", "f", "g"}); + List s3 = Arrays.asList(new String[]{"k", "l", "m"}); + + MatrixND mat1 = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + + MatrixND mat2 = new MatrixNDImpl("Ma mat", new List[]{s1, s2, s3}, new String[]{"dim abc", "dim efg", "dim klm"}); + + MatrixHelper.fill(mat1, 5); + MatrixHelper.fill(mat2, 3); + + MatrixND smat1 = mat1.getSubMatrix(1, "e", 1); + MatrixND smat2 = mat2.getSubMatrix(1, "f", 1); + + smat1.add(smat2); + + assertEquals(5, mat1.getValue(0, 1, 0), 0); + assertEquals(5, mat1.getValue(0, 1, 1), 0); + assertEquals(5, mat1.getValue(0, 1, 2), 0); + assertEquals(5, mat1.getValue(1, 1, 0), 0); + assertEquals(5, mat1.getValue(1, 1, 1), 0); + assertEquals(5, mat1.getValue(1, 1, 2), 0); + assertEquals(5, mat1.getValue(2, 1, 0), 0); + assertEquals(5, mat1.getValue(2, 1, 1), 0); + assertEquals(5, mat1.getValue(2, 1, 2), 0); + assertEquals(5, mat1.getValue(0, 2, 0), 0); + assertEquals(5, mat1.getValue(0, 2, 1), 0); + assertEquals(5, mat1.getValue(0, 2, 2), 0); + assertEquals(5, mat1.getValue(1, 2, 0), 0); + assertEquals(5, mat1.getValue(1, 2, 1), 0); + assertEquals(5, mat1.getValue(1, 2, 2), 0); + assertEquals(5, mat1.getValue(2, 2, 0), 0); + assertEquals(5, mat1.getValue(2, 2, 1), 0); + assertEquals(5, mat1.getValue(2, 2, 2), 0); + + assertEquals(8, mat1.getValue(0, 0, 0), 0); + assertEquals(8, mat1.getValue(0, 0, 1), 0); + assertEquals(8, mat1.getValue(0, 0, 2), 0); + assertEquals(8, mat1.getValue(1, 0, 0), 0); + assertEquals(8, mat1.getValue(1, 0, 1), 0); + assertEquals(8, mat1.getValue(1, 0, 2), 0); + assertEquals(8, mat1.getValue(2, 0, 0), 0); + assertEquals(8, mat1.getValue(2, 0, 1), 0); + assertEquals(8, mat1.getValue(2, 0, 2), 0); + } } // SubMatrixTest