Author: celestin Date: Fri Jun 22 07:06:28 2012 New Revision: 1352782 URL: http://svn.apache.org/viewvc?rev=1352782&view=rev Log: MATH-803 : deprecated RealVector.ebeMultiply() and RealVector.ebeDivide(), and updated unit tests accordingly.
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/RealVector.java commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/RealVectorAbstractTest.java commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/UnmodifiableRealVectorAbstractTest.java Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/RealVector.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/RealVector.java?rev=1352782&r1=1352781&r2=1352782&view=diff ============================================================================== --- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/RealVector.java (original) +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/linear/RealVector.java Fri Jun 22 07:06:28 2012 @@ -336,7 +336,17 @@ public abstract class RealVector { * @return a vector containing this[i] / v[i] for all i. * @throws org.apache.commons.math3.exception.DimensionMismatchException * if {@code v} is not the same size as this vector. + * @deprecated As of version 3.1, this method is deprecated, and will be + * removed in version 4.0. This decision follows the discussion reported in + * <a href="https://issues.apache.org/jira/browse/MATH-803?focusedCommentId=13399150#comment-13399150">MATH-803</a>. + * Uses of this method involving sparse implementations of + * {@link RealVector} might lead to wrong results. Since there is no + * satisfactory correction to this bug, this method is deprecated. Users who + * want to preserve this feature are advised to implement + * {@link RealVectorPreservingVisitor} (possibly ignoring corner cases for + * the sake of efficiency). */ + @Deprecated public abstract RealVector ebeDivide(RealVector v); /** @@ -346,7 +356,17 @@ public abstract class RealVector { * @return a vector containing this[i] * v[i] for all i. * @throws org.apache.commons.math3.exception.DimensionMismatchException * if {@code v} is not the same size as this vector. + * @deprecated As of version 3.1, this method is deprecated, and will be + * removed in version 4.0. This decision follows the discussion reported in + * <a href="https://issues.apache.org/jira/browse/MATH-803?focusedCommentId=13399150#comment-13399150">MATH-803</a>. + * Uses of this method involving sparse implementations of + * {@link RealVector} might lead to wrong results. Since there is no + * satisfactory correction to this bug, this method is deprecated. Users who + * want to preserve this feature are advised to implement + * {@link RealVectorPreservingVisitor} (possibly ignoring corner cases for + * the sake of efficiency). */ + @Deprecated public abstract RealVector ebeMultiply(RealVector v); /** 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=1352782&r1=1352781&r2=1352782&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 Fri Jun 22 07:06:28 2012 @@ -53,6 +53,7 @@ import org.apache.commons.math3.exceptio import org.apache.commons.math3.util.FastMath; import org.apache.commons.math3.util.MathArrays; import org.junit.Assert; +import org.junit.Ignore; import org.junit.Test; @@ -463,9 +464,14 @@ public abstract class RealVectorAbstract * * The values to be considered are: x, y, z, x * x. * - * Also to be considered NaN, POSITIVE_INFINITY, NEGATIVE_INFINITY. + * Also to be considered NaN, POSITIVE_INFINITY, NEGATIVE_INFINITY, + * +0.0, -0.0. */ - final double[] values = {x, y, z, 2 * x, -x, 1 / x, x * x, x + y, x - y, y - x}; + final double[] values = + { + Double.NaN, Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, + 0d, -0d, x, y, z, 2 * x, -x, 1 / x, x * x, x + y, x - y, y - x + }; final double[] data1 = new double[values.length * values.length]; final double[] data2 = new double[values.length * values.length]; int k = 0; @@ -570,31 +576,37 @@ public abstract class RealVectorAbstract doTestEbeBinaryOperationDimensionMismatch(BinaryOperation.SUB); } + @Ignore("ebeMultiply(RealVector) is known to be faulty (MATH-803) and is deprecated.") @Test public void testEbeMultiplySameType() { doTestEbeBinaryOperation(BinaryOperation.MUL, false); } + @Ignore("ebeMultiply(RealVector) is known to be faulty (MATH-803) and is deprecated.") @Test public void testEbeMultiplyMixedTypes() { doTestEbeBinaryOperation(BinaryOperation.MUL, true); } + @Ignore("ebeMultiply(RealVector) is known to be faulty (MATH-803) and is deprecated.") @Test(expected = DimensionMismatchException.class) public void testEbeMultiplyDimensionMismatch() { doTestEbeBinaryOperationDimensionMismatch(BinaryOperation.MUL); } + @Ignore("ebeDivide(RealVector) is known to be faulty (MATH-803) and is deprecated.") @Test public void testEbeDivideSameType() { doTestEbeBinaryOperation(BinaryOperation.DIV, false); } + @Ignore("ebeDivide(RealVector) is known to be faulty (MATH-803) and is deprecated.") @Test public void testEbeDivideMixedTypes() { doTestEbeBinaryOperation(BinaryOperation.DIV, true); } + @Ignore("ebeDivide(RealVector) is known to be faulty (MATH-803) and is deprecated.") @Test(expected = DimensionMismatchException.class) public void testEbeDivideDimensionMismatch() { doTestEbeBinaryOperationDimensionMismatch(BinaryOperation.DIV); Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/UnmodifiableRealVectorAbstractTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/UnmodifiableRealVectorAbstractTest.java?rev=1352782&r1=1352781&r2=1352782&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/UnmodifiableRealVectorAbstractTest.java (original) +++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/linear/UnmodifiableRealVectorAbstractTest.java Fri Jun 22 07:06:28 2012 @@ -64,6 +64,8 @@ public abstract class UnmodifiableRealVe EXCLUDE.add("sparseIterator"); EXCLUDE.add("walkInDefaultOrder"); EXCLUDE.add("walkInOptimizedOrder"); + EXCLUDE.add("ebeDivide"); + EXCLUDE.add("ebeMultiply"); // Excluded because they are inherited from "Object". for (Method m : Object.class.getMethods()) {