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 2008/04/23 22:52:39 UTC

svn commit: r651058 - /commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/

Author: luc
Date: Wed Apr 23 13:52:36 2008
New Revision: 651058

URL: http://svn.apache.org/viewvc?rev=651058&view=rev
Log:
added tests for singular values

Modified:
    commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AcosGeneratorTest.java
    commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AsinGeneratorTest.java
    commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AtanGeneratorTest.java
    commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/Log10GeneratorTest.java
    commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/Log1pGeneratorTest.java
    commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/LogGeneratorTest.java
    commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/SqrtGeneratorTest.java

Modified: commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AcosGeneratorTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AcosGeneratorTest.java?rev=651058&r1=651057&r2=651058&view=diff
==============================================================================
--- commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AcosGeneratorTest.java (original)
+++ commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AcosGeneratorTest.java Wed Apr 23 13:52:36 2008
@@ -18,6 +18,11 @@
 
 import org.apache.commons.nabla.ReferenceFunction;
 import org.apache.commons.nabla.automatic.AbstractMathTest;
+import org.apache.commons.nabla.automatic.AutomaticDifferentiator;
+import org.apache.commons.nabla.core.DifferentialPair;
+import org.apache.commons.nabla.core.DifferentiationException;
+import org.apache.commons.nabla.core.UnivariateDerivative;
+import org.apache.commons.nabla.core.UnivariateDifferentiable;
 
 public class AcosGeneratorTest extends AbstractMathTest {
 
@@ -26,6 +31,38 @@
             public double f(double t) { return Math.acos(t); }
             public double fPrime(double t) { return -1 / Math.sqrt(1 - t * t); }
         }, -0.99, 0.99, 30, 0.0);
+    }
+
+    public void testSingularityPlus() throws DifferentiationException {
+        UnivariateDerivative derivative =
+            new AutomaticDifferentiator().differentiate(new UnivariateDifferentiable() {
+                public double f(double t) { return Math.acos(t); }
+            });
+
+        double dPlus = derivative.f(new DifferentialPair(1, 1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dPlus));
+        assertTrue(dPlus > 0);
+
+        double dMinus = derivative.f(new DifferentialPair(1, -1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dMinus));
+        assertTrue(dMinus < 0);
+
+    }
+
+    public void testSingularityMinus() throws DifferentiationException {
+        UnivariateDerivative derivative =
+            new AutomaticDifferentiator().differentiate(new UnivariateDifferentiable() {
+                public double f(double t) { return Math.acos(t); }
+            });
+
+        double dPlus = derivative.f(new DifferentialPair(-1, 1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dPlus));
+        assertTrue(dPlus > 0);
+
+        double dMinus = derivative.f(new DifferentialPair(-1, -1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dMinus));
+        assertTrue(dMinus < 0);
+
     }
 
 }

Modified: commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AsinGeneratorTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AsinGeneratorTest.java?rev=651058&r1=651057&r2=651058&view=diff
==============================================================================
--- commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AsinGeneratorTest.java (original)
+++ commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AsinGeneratorTest.java Wed Apr 23 13:52:36 2008
@@ -18,6 +18,11 @@
 
 import org.apache.commons.nabla.ReferenceFunction;
 import org.apache.commons.nabla.automatic.AbstractMathTest;
+import org.apache.commons.nabla.automatic.AutomaticDifferentiator;
+import org.apache.commons.nabla.core.DifferentialPair;
+import org.apache.commons.nabla.core.DifferentiationException;
+import org.apache.commons.nabla.core.UnivariateDerivative;
+import org.apache.commons.nabla.core.UnivariateDifferentiable;
 
 public class AsinGeneratorTest extends AbstractMathTest {
 
@@ -26,6 +31,38 @@
             public double f(double t) { return Math.asin(t); }
             public double fPrime(double t) { return 1 / Math.sqrt(1 - t * t); }
         }, -0.99, 0.99, 30, 0.0);
+    }
+
+    public void testSingularityPlus() throws DifferentiationException {
+        UnivariateDerivative derivative =
+            new AutomaticDifferentiator().differentiate(new UnivariateDifferentiable() {
+                public double f(double t) { return Math.asin(t); }
+            });
+
+        double dPlus = derivative.f(new DifferentialPair(1, 1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dPlus));
+        assertTrue(dPlus < 0);
+
+        double dMinus = derivative.f(new DifferentialPair(1, -1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dMinus));
+        assertTrue(dMinus > 0);
+
+    }
+
+    public void testSingularityMinus() throws DifferentiationException {
+        UnivariateDerivative derivative =
+            new AutomaticDifferentiator().differentiate(new UnivariateDifferentiable() {
+                public double f(double t) { return Math.asin(t); }
+            });
+
+        double dPlus = derivative.f(new DifferentialPair(-1, 1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dPlus));
+        assertTrue(dPlus < 0);
+
+        double dMinus = derivative.f(new DifferentialPair(-1, -1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dMinus));
+        assertTrue(dMinus > 0);
+
     }
 
 }

Modified: commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AtanGeneratorTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AtanGeneratorTest.java?rev=651058&r1=651057&r2=651058&view=diff
==============================================================================
--- commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AtanGeneratorTest.java (original)
+++ commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/AtanGeneratorTest.java Wed Apr 23 13:52:36 2008
@@ -18,6 +18,11 @@
 
 import org.apache.commons.nabla.ReferenceFunction;
 import org.apache.commons.nabla.automatic.AbstractMathTest;
+import org.apache.commons.nabla.automatic.AutomaticDifferentiator;
+import org.apache.commons.nabla.core.DifferentialPair;
+import org.apache.commons.nabla.core.DifferentiationException;
+import org.apache.commons.nabla.core.UnivariateDerivative;
+import org.apache.commons.nabla.core.UnivariateDifferentiable;
 
 public class AtanGeneratorTest extends AbstractMathTest {
 
@@ -26,6 +31,34 @@
             public double f(double t) { return Math.atan(t); }
             public double fPrime(double t) { return 1 / (1 + t * t); }
         }, -1.5, 1.5, 30, 0.0);
+    }
+
+    public void testSingularityPlus() throws DifferentiationException {
+        UnivariateDerivative derivative =
+            new AutomaticDifferentiator().differentiate(new UnivariateDifferentiable() {
+                public double f(double t) { return Math.atan(t); }
+            });
+
+        double dPlus = derivative.f(new DifferentialPair(Double.POSITIVE_INFINITY, 1)).getFirstDerivative();
+        assertEquals(0, dPlus, 0);
+
+        double dMinus = derivative.f(new DifferentialPair(Double.POSITIVE_INFINITY, -1)).getFirstDerivative();
+        assertEquals(0, dMinus, 0);
+
+    }
+
+    public void testSingularityMinus() throws DifferentiationException {
+        UnivariateDerivative derivative =
+            new AutomaticDifferentiator().differentiate(new UnivariateDifferentiable() {
+                public double f(double t) { return Math.atan(t); }
+            });
+
+        double dPlus = derivative.f(new DifferentialPair(Double.NEGATIVE_INFINITY, 1)).getFirstDerivative();
+        assertEquals(0, dPlus, 0);
+
+        double dMinus = derivative.f(new DifferentialPair(Double.NEGATIVE_INFINITY, -1)).getFirstDerivative();
+        assertEquals(0, dMinus, 0);
+
     }
 
 }

Modified: commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/Log10GeneratorTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/Log10GeneratorTest.java?rev=651058&r1=651057&r2=651058&view=diff
==============================================================================
--- commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/Log10GeneratorTest.java (original)
+++ commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/Log10GeneratorTest.java Wed Apr 23 13:52:36 2008
@@ -18,6 +18,11 @@
 
 import org.apache.commons.nabla.ReferenceFunction;
 import org.apache.commons.nabla.automatic.AbstractMathTest;
+import org.apache.commons.nabla.automatic.AutomaticDifferentiator;
+import org.apache.commons.nabla.core.DifferentialPair;
+import org.apache.commons.nabla.core.DifferentiationException;
+import org.apache.commons.nabla.core.UnivariateDerivative;
+import org.apache.commons.nabla.core.UnivariateDifferentiable;
 
 public class Log10GeneratorTest extends AbstractMathTest {
 
@@ -26,6 +31,22 @@
             public double f(double t) { return Math.log10(t); }
             public double fPrime(double t) { return 1 / (Math.log(10) * t); }
         }, 0.1, 10, 50, 0.0);
+    }
+
+    public void testSingularity() throws DifferentiationException {
+        UnivariateDerivative derivative =
+            new AutomaticDifferentiator().differentiate(new UnivariateDifferentiable() {
+                public double f(double t) { return Math.log10(t); }
+            });
+
+        double dPlus = derivative.f(new DifferentialPair(0, 1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dPlus));
+        assertTrue(dPlus > 0);
+
+        double dMinus = derivative.f(new DifferentialPair(0, -1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dMinus));
+        assertTrue(dMinus < 0);
+
     }
 
 }

Modified: commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/Log1pGeneratorTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/Log1pGeneratorTest.java?rev=651058&r1=651057&r2=651058&view=diff
==============================================================================
--- commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/Log1pGeneratorTest.java (original)
+++ commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/Log1pGeneratorTest.java Wed Apr 23 13:52:36 2008
@@ -18,6 +18,11 @@
 
 import org.apache.commons.nabla.ReferenceFunction;
 import org.apache.commons.nabla.automatic.AbstractMathTest;
+import org.apache.commons.nabla.automatic.AutomaticDifferentiator;
+import org.apache.commons.nabla.core.DifferentialPair;
+import org.apache.commons.nabla.core.DifferentiationException;
+import org.apache.commons.nabla.core.UnivariateDerivative;
+import org.apache.commons.nabla.core.UnivariateDifferentiable;
 
 public class Log1pGeneratorTest extends AbstractMathTest {
 
@@ -26,6 +31,22 @@
             public double f(double t) { return Math.log1p(t); }
             public double fPrime(double t) { return 1 / (1 + t); }
         }, -0.2, 0.2, 50, 0.0);
+    }
+
+    public void testSingularity() throws DifferentiationException {
+        UnivariateDerivative derivative =
+            new AutomaticDifferentiator().differentiate(new UnivariateDifferentiable() {
+                public double f(double t) { return Math.log1p(t); }
+            });
+
+        double dPlus = derivative.f(new DifferentialPair(-1, 1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dPlus));
+        assertTrue(dPlus > 0);
+
+        double dMinus = derivative.f(new DifferentialPair(-1, -1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dMinus));
+        assertTrue(dMinus < 0);
+
     }
 
 }

Modified: commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/LogGeneratorTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/LogGeneratorTest.java?rev=651058&r1=651057&r2=651058&view=diff
==============================================================================
--- commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/LogGeneratorTest.java (original)
+++ commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/LogGeneratorTest.java Wed Apr 23 13:52:36 2008
@@ -18,6 +18,11 @@
 
 import org.apache.commons.nabla.ReferenceFunction;
 import org.apache.commons.nabla.automatic.AbstractMathTest;
+import org.apache.commons.nabla.automatic.AutomaticDifferentiator;
+import org.apache.commons.nabla.core.DifferentialPair;
+import org.apache.commons.nabla.core.DifferentiationException;
+import org.apache.commons.nabla.core.UnivariateDerivative;
+import org.apache.commons.nabla.core.UnivariateDifferentiable;
 
 public class LogGeneratorTest extends AbstractMathTest {
 
@@ -26,6 +31,22 @@
             public double f(double t) { return Math.log(t); }
             public double fPrime(double t) { return 1 / t; }
         }, 0.1, 10, 50, 0.0);
+    }
+
+    public void testSingularity() throws DifferentiationException {
+        UnivariateDerivative derivative =
+            new AutomaticDifferentiator().differentiate(new UnivariateDifferentiable() {
+                public double f(double t) { return Math.log(t); }
+            });
+
+        double dPlus = derivative.f(new DifferentialPair(0, 1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dPlus));
+        assertTrue(dPlus > 0);
+
+        double dMinus = derivative.f(new DifferentialPair(0, -1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dMinus));
+        assertTrue(dMinus < 0);
+
     }
 
 }

Modified: commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/SqrtGeneratorTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/SqrtGeneratorTest.java?rev=651058&r1=651057&r2=651058&view=diff
==============================================================================
--- commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/SqrtGeneratorTest.java (original)
+++ commons/sandbox/nabla/trunk/src/test/java/org/apache/commons/nabla/automatic/functions/SqrtGeneratorTest.java Wed Apr 23 13:52:36 2008
@@ -18,6 +18,11 @@
 
 import org.apache.commons.nabla.ReferenceFunction;
 import org.apache.commons.nabla.automatic.AbstractMathTest;
+import org.apache.commons.nabla.automatic.AutomaticDifferentiator;
+import org.apache.commons.nabla.core.DifferentialPair;
+import org.apache.commons.nabla.core.DifferentiationException;
+import org.apache.commons.nabla.core.UnivariateDerivative;
+import org.apache.commons.nabla.core.UnivariateDifferentiable;
 
 public class SqrtGeneratorTest extends AbstractMathTest {
 
@@ -26,6 +31,22 @@
             public double f(double t) { return Math.sqrt(t); }
             public double fPrime(double t) { return 1 / (2 * Math.sqrt(t)); }
         }, 0.001, 10, 50, 0.0);
+    }
+
+    public void testSingularity() throws DifferentiationException {
+        UnivariateDerivative derivative =
+            new AutomaticDifferentiator().differentiate(new UnivariateDifferentiable() {
+                public double f(double t) { return Math.sqrt(t); }
+            });
+
+        double dPlus = derivative.f(new DifferentialPair(0, 1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dPlus));
+        assertTrue(dPlus > 0);
+
+        double dMinus = derivative.f(new DifferentialPair(0, -1)).getFirstDerivative();
+        assertTrue(Double.isInfinite(dMinus));
+        assertTrue(dMinus < 0);
+
     }
 
 }