You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ce...@apache.org on 2012/06/27 07:53:09 UTC

svn commit: r1354330 - /commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorAbstractTest.java

Author: celestin
Date: Wed Jun 27 05:53:09 2012
New Revision: 1354330

URL: http://svn.apache.org/viewvc?rev=1354330&view=rev
Log:
MATH-795: factored out unit test of
RealMatrix RealVector.outerProduct(RealVector)
This test fails with the default implementation provided by the abstract class RealMatrix.

Modified:
    commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorAbstractTest.java

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorAbstractTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorAbstractTest.java?rev=1354330&r1=1354329&r2=1354330&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorAbstractTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorAbstractTest.java Wed Jun 27 05:53:09 2012
@@ -924,6 +924,45 @@ public abstract class RealVectorAbstract
         }
     }
 
+    private void doTestOuterProduct(final boolean mixed) {
+        final double[] dataU = values;
+        final RealVector u = create(dataU);
+        final double[] dataV = new double[values.length + 3];
+        System.arraycopy(values, 0, dataV, 0, values.length);
+        dataV[values.length] = 1d;
+        dataV[values.length] = -2d;
+        dataV[values.length] = 3d;
+        final RealVector v;
+        if (mixed) {
+            v = createAlien(dataV);
+        } else {
+            v = create(dataV);
+        }
+        final RealMatrix uv = u.outerProduct(v);
+        Assert.assertEquals("number of rows", dataU.length, uv
+            .getRowDimension());
+        Assert.assertEquals("number of columns", dataV.length, uv
+            .getColumnDimension());
+        for (int i = 0; i < dataU.length; i++) {
+            for (int j = 0; j < dataV.length; j++) {
+                final double expected = dataU[i] * dataV[j];
+                final double actual = uv.getEntry(i, j);
+                Assert.assertEquals("[" + i + "][" + j + "]", expected, actual,
+                    0d);
+            }
+        }
+    }
+
+    @Test
+    public void testOuterProductSameType() {
+        doTestOuterProduct(false);
+    }
+
+    @Test
+    public void testOuterProductMixedTypes() {
+        doTestOuterProduct(true);
+    }
+
     @Test
     public void testDataInOut() {
         final RealVector v1 = create(vec1);
@@ -998,14 +1037,6 @@ public abstract class RealVectorAbstract
         double dot_2 = v1.dotProduct(v2_t);
         Assert.assertEquals("compare val ", 32d, dot_2, normTolerance);
 
-        RealMatrix m_outerProduct = v1.outerProduct(v2);
-        Assert.assertEquals("compare val ", 4d, m_outerProduct.getEntry(0, 0),
-                            normTolerance);
-
-        RealMatrix m_outerProduct_2 = v1.outerProduct(v2_t);
-        Assert.assertEquals("compare val ", 4d,
-                            m_outerProduct_2.getEntry(0, 0), normTolerance);
-
         RealVector v_unitVector = v1.unitVector();
         RealVector v_unitVector_2 = v1.mapDivide(v1.getNorm());
         assertClose("compare vect", v_unitVector.toArray(),
@@ -1038,22 +1069,6 @@ public abstract class RealVectorAbstract
     }
 
     @Test
-    public void testOuterProduct() {
-        final RealVector u = create(new double[] {1, 2, -3});
-        final RealVector v = create(new double[] {4, -2});
-
-        final RealMatrix uv = u.outerProduct(v);
-
-        final double tol = Math.ulp(1d);
-        Assert.assertEquals(4, uv.getEntry(0, 0), tol);
-        Assert.assertEquals(-2, uv.getEntry(0, 1), tol);
-        Assert.assertEquals(8, uv.getEntry(1, 0), tol);
-        Assert.assertEquals(-4, uv.getEntry(1, 1), tol);
-        Assert.assertEquals(-12, uv.getEntry(2, 0), tol);
-        Assert.assertEquals(6, uv.getEntry(2, 1), tol);
-    }
-
-    @Test
     public void testMisc() {
         RealVector v1 = create(vec1);
         RealVector v4 = create(vec4);