You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by lu...@apache.org on 2013/02/18 14:57:23 UTC

svn commit: r1447260 - /commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/differentiation/DerivativeStructureTest.java

Author: luc
Date: Mon Feb 18 13:57:23 2013
New Revision: 1447260

URL: http://svn.apache.org/r1447260
Log:
Improved test coverage.

Modified:
    commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/differentiation/DerivativeStructureTest.java

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/differentiation/DerivativeStructureTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/differentiation/DerivativeStructureTest.java?rev=1447260&r1=1447259&r2=1447260&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/differentiation/DerivativeStructureTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/analysis/differentiation/DerivativeStructureTest.java Mon Feb 18 13:57:23 2013
@@ -520,6 +520,46 @@ public class DerivativeStructureTest {
     }
 
     @Test
+    public void testHypotNeglectible() {
+
+        DerivativeStructure dsSmall = new DerivativeStructure(2, 5, 0, +3.0e-10);
+        DerivativeStructure dsLarge = new DerivativeStructure(2, 5, 1, -4.0e25);
+
+        Assert.assertEquals(dsLarge.abs().getValue(),
+                            DerivativeStructure.hypot(dsSmall, dsLarge).getValue(),
+                            1.0e-10);
+        Assert.assertEquals(0,
+                            DerivativeStructure.hypot(dsSmall, dsLarge).getPartialDerivative(1, 0),
+                            1.0e-10);
+        Assert.assertEquals(-1,
+                            DerivativeStructure.hypot(dsSmall, dsLarge).getPartialDerivative(0, 1),
+                            1.0e-10);
+
+        Assert.assertEquals(dsLarge.abs().getValue(),
+                            DerivativeStructure.hypot(dsLarge, dsSmall).getValue(),
+                            1.0e-10);
+        Assert.assertEquals(0,
+                            DerivativeStructure.hypot(dsLarge, dsSmall).getPartialDerivative(1, 0),
+                            1.0e-10);
+        Assert.assertEquals(-1,
+                            DerivativeStructure.hypot(dsLarge, dsSmall).getPartialDerivative(0, 1),
+                            1.0e-10);
+
+    }
+
+    @Test
+    public void testHypotSpecial() {
+        Assert.assertTrue(Double.isNaN(DerivativeStructure.hypot(new DerivativeStructure(2, 5, 0, Double.NaN),
+                                                                 new DerivativeStructure(2, 5, 0, +3.0e250)).getValue()));
+        Assert.assertTrue(Double.isNaN(DerivativeStructure.hypot(new DerivativeStructure(2, 5, 0, +3.0e250),
+                                                                 new DerivativeStructure(2, 5, 0, Double.NaN)).getValue()));
+        Assert.assertTrue(Double.isInfinite(DerivativeStructure.hypot(new DerivativeStructure(2, 5, 0, Double.POSITIVE_INFINITY),
+                                                                      new DerivativeStructure(2, 5, 0, +3.0e250)).getValue()));
+        Assert.assertTrue(Double.isInfinite(DerivativeStructure.hypot(new DerivativeStructure(2, 5, 0, +3.0e250),
+                                                                      new DerivativeStructure(2, 5, 0, Double.POSITIVE_INFINITY)).getValue()));
+    }
+
+    @Test
     public void testPrimitiveRemainder() {
         double epsilon = 1.0e-15;
         for (int maxOrder = 0; maxOrder < 5; ++maxOrder) {
@@ -1060,6 +1100,7 @@ public class DerivativeStructureTest {
 
     @Test
     public void testCopySign() {
+
         DerivativeStructure minusOne = new DerivativeStructure(1, 1, 0, -1.0);
         Assert.assertEquals(+1.0, minusOne.copySign(+1.0).getPartialDerivative(0), 1.0e-15);
         Assert.assertEquals(-1.0, minusOne.copySign(+1.0).getPartialDerivative(1), 1.0e-15);
@@ -1071,6 +1112,19 @@ public class DerivativeStructureTest {
         Assert.assertEquals(+1.0, minusOne.copySign(-0.0).getPartialDerivative(1), 1.0e-15);
         Assert.assertEquals(+1.0, minusOne.copySign(Double.NaN).getPartialDerivative(0), 1.0e-15);
         Assert.assertEquals(-1.0, minusOne.copySign(Double.NaN).getPartialDerivative(1), 1.0e-15);
+
+        DerivativeStructure plusOne = new DerivativeStructure(1, 1, 0, +1.0);
+        Assert.assertEquals(+1.0, plusOne.copySign(+1.0).getPartialDerivative(0), 1.0e-15);
+        Assert.assertEquals(+1.0, plusOne.copySign(+1.0).getPartialDerivative(1), 1.0e-15);
+        Assert.assertEquals(-1.0, plusOne.copySign(-1.0).getPartialDerivative(0), 1.0e-15);
+        Assert.assertEquals(-1.0, plusOne.copySign(-1.0).getPartialDerivative(1), 1.0e-15);
+        Assert.assertEquals(+1.0, plusOne.copySign(+0.0).getPartialDerivative(0), 1.0e-15);
+        Assert.assertEquals(+1.0, plusOne.copySign(+0.0).getPartialDerivative(1), 1.0e-15);
+        Assert.assertEquals(-1.0, plusOne.copySign(-0.0).getPartialDerivative(0), 1.0e-15);
+        Assert.assertEquals(-1.0, plusOne.copySign(-0.0).getPartialDerivative(1), 1.0e-15);
+        Assert.assertEquals(+1.0, plusOne.copySign(Double.NaN).getPartialDerivative(0), 1.0e-15);
+        Assert.assertEquals(+1.0, plusOne.copySign(Double.NaN).getPartialDerivative(1), 1.0e-15);
+
     }
 
     @Test