Author: psteitz Date: Sun Jul 24 16:45:06 2011 New Revision: 1150433 URL: http://svn.apache.org/viewvc?rev=1150433&view=rev Log: Made scalar division consistent with complex division wrt infinite arguments, improved tests.
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/complex/Complex.java commons/proper/math/trunk/src/test/java/org/apache/commons/math/complex/ComplexTest.java Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/complex/Complex.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/complex/Complex.java?rev=1150433&r1=1150432&r2=1150433&view=diff ============================================================================== --- commons/proper/math/trunk/src/main/java/org/apache/commons/math/complex/Complex.java (original) +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/complex/Complex.java Sun Jul 24 16:45:06 2011 @@ -278,13 +278,12 @@ public class Complex implements FieldEle if (isNaN || Double.isNaN(divisor)) { return NaN; } - if (divisor == 0.0) { + if (divisor == 0d) { return NaN; } - if (Double.isInfinite(divisor) && !isInfinite()) { - return ZERO; + if (Double.isInfinite(divisor)) { + return !isInfinite() ? ZERO : NaN; } - return createComplex(real / divisor, imaginary / divisor); } Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/complex/ComplexTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/complex/ComplexTest.java?rev=1150433&r1=1150432&r2=1150433&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/java/org/apache/commons/math/complex/ComplexTest.java (original) +++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/complex/ComplexTest.java Sun Jul 24 16:45:06 2011 @@ -274,11 +274,20 @@ public class ComplexTest { Complex x = new Complex(1,1); double yDouble = Double.POSITIVE_INFINITY; Complex yComplex = new Complex(yDouble); - Assert.assertEquals(x.divide(yComplex), x.divide(yDouble)); + TestUtils.assertEquals(x.divide(yComplex), x.divide(yDouble), 0); yDouble = Double.NEGATIVE_INFINITY; yComplex = new Complex(yDouble); - Assert.assertEquals(x.divide(yComplex), x.divide(yDouble)); + TestUtils.assertEquals(x.divide(yComplex), x.divide(yDouble), 0); + + x = new Complex(1, Double.NEGATIVE_INFINITY); + TestUtils.assertEquals(x.divide(yComplex), x.divide(yDouble), 0); + } + + @Test + public void testScalarDivideZero() { + Complex x = new Complex(1,1); + TestUtils.assertEquals(x.divide(Complex.ZERO), x.divide(0), 0); } @Test