Improved test coverage.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1447260 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Luc Maisonobe 2013-02-18 13:57:23 +00:00
parent 74806d2e06
commit 2962744c71
1 changed files with 54 additions and 0 deletions

View File

@ -519,6 +519,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;
@ -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