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