You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2011/10/16 23:04:19 UTC

svn commit: r1184933 - /commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/

Author: erans
Date: Sun Oct 16 21:04:19 2011
New Revision: 1184933

URL: http://svn.apache.org/viewvc?rev=1184933&view=rev
Log:
Added "derivative".

Modified:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acos.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acosh.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asin.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asinh.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atan.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atanh.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cbrt.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Constant.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cos.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cosh.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Exp.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Expm1.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Identity.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Inverse.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log1p.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Power.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sin.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sinh.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tan.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tanh.java

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acos.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acos.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acos.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acos.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Acos implements UnivariateRealFunction {
+public class Acos implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.acos(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return -1 / FastMath.sqrt(1 - x * x);
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acosh.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acosh.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acosh.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acosh.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Acosh implements UnivariateRealFunction {
+public class Acosh implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.acosh(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return 1 / FastMath.sqrt(x * x - 1);
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asin.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asin.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asin.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asin.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Asin implements UnivariateRealFunction {
+public class Asin implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.asin(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return 1 / FastMath.sqrt(1 - x * x);
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asinh.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asinh.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asinh.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asinh.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Asinh implements UnivariateRealFunction {
+public class Asinh implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.asinh(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return 1 / FastMath.sqrt(1 + x * x);
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atan.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atan.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atan.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atan.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Atan implements UnivariateRealFunction {
+public class Atan implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.atan(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return 1 / (1 + x * x);
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atanh.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atanh.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atanh.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atanh.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Atanh implements UnivariateRealFunction {
+public class Atanh implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.atanh(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return 1 / (1 - x * x);
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cbrt.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cbrt.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cbrt.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cbrt.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Cbrt implements UnivariateRealFunction {
+public class Cbrt implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.cbrt(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return 1 / (3 * FastMath.cbrt(x * x));
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Constant.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Constant.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Constant.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Constant.java Sun Oct 16 21:04:19 2011
@@ -17,7 +17,7 @@
 
 package org.apache.commons.math.analysis.function;
 
-import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 
 /**
  * Constant function.
@@ -25,7 +25,7 @@ import org.apache.commons.math.analysis.
  * @version $Id$
  * @since 3.0
  */
-public class Constant implements UnivariateRealFunction {
+public class Constant implements DifferentiableUnivariateRealFunction {
     /** Constant. */
     private final double c;
 
@@ -40,4 +40,9 @@ public class Constant implements Univari
     public double value(double x) {
         return c;
     }
+
+    /** {@inheritDoc} */
+    public DifferentiableUnivariateRealFunction derivative() {
+        return new Constant(0);
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cos.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cos.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cos.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cos.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Cos implements UnivariateRealFunction {
+public class Cos implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.cos(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return -FastMath.sin(x);
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cosh.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cosh.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cosh.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cosh.java Sun Oct 16 21:04:19 2011
@@ -17,7 +17,7 @@
 
 package org.apache.commons.math.analysis.function;
 
-import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +26,14 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Cosh implements UnivariateRealFunction {
+public class Cosh implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.cosh(x);
     }
+
+    /** {@inheritDoc} */
+    public DifferentiableUnivariateRealFunction derivative() {
+        return new Sinh();
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Exp.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Exp.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Exp.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Exp.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Exp implements UnivariateRealFunction {
+public class Exp implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.exp(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return FastMath.exp(x);
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Expm1.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Expm1.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Expm1.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Expm1.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Expm1 implements UnivariateRealFunction {
+public class Expm1 implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.expm1(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return FastMath.exp(x);
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Identity.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Identity.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Identity.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Identity.java Sun Oct 16 21:04:19 2011
@@ -17,7 +17,7 @@
 
 package org.apache.commons.math.analysis.function;
 
-import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 
 /**
  * Identity function.
@@ -25,9 +25,14 @@ import org.apache.commons.math.analysis.
  * @version $Id$
  * @since 3.0
  */
-public class Identity implements UnivariateRealFunction {
+public class Identity implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return x;
     }
+
+    /** {@inheritDoc} */
+    public DifferentiableUnivariateRealFunction derivative() {
+        return new Constant(1);
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Inverse.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Inverse.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Inverse.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Inverse.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 
 /**
  * Inverse function.
@@ -25,9 +26,19 @@ import org.apache.commons.math.analysis.
  * @version $Id$
  * @since 3.0
  */
-public class Inverse implements UnivariateRealFunction {
+public class Inverse implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return 1 / x;
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return -1 / (x * x);
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Log implements UnivariateRealFunction {
+public class Log implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.log(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return 1 / x;
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log1p.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log1p.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log1p.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log1p.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Log1p implements UnivariateRealFunction {
+public class Log1p implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.log1p(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return 1 / (1 + x);
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Power.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Power.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Power.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Power.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,7 +27,7 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Power implements UnivariateRealFunction {
+public class Power implements DifferentiableUnivariateRealFunction {
     /** Power. */
     private final double p;
 
@@ -41,4 +42,14 @@ public class Power implements Univariate
     public double value(double x) {
         return FastMath.pow(x, p);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                return p * FastMath.pow(x, p - 1);
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sin.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sin.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sin.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sin.java Sun Oct 16 21:04:19 2011
@@ -17,7 +17,7 @@
 
 package org.apache.commons.math.analysis.function;
 
-import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +26,14 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Sin implements UnivariateRealFunction {
+public class Sin implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.sin(x);
     }
+
+    /** {@inheritDoc} */
+    public DifferentiableUnivariateRealFunction derivative() {
+        return new Cos();
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sinh.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sinh.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sinh.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sinh.java Sun Oct 16 21:04:19 2011
@@ -17,7 +17,7 @@
 
 package org.apache.commons.math.analysis.function;
 
-import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +26,14 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Sinh implements UnivariateRealFunction {
+public class Sinh implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.sinh(x);
     }
+
+    /** {@inheritDoc} */
+    public DifferentiableUnivariateRealFunction derivative() {
+        return new Cosh();
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tan.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tan.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tan.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tan.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,20 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Tan implements UnivariateRealFunction {
+public class Tan implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.tan(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                final double tanX = FastMath.tan(x);
+                return 1 + tanX * tanX;
+            }
+        };
+    }
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tanh.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tanh.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tanh.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tanh.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
 package org.apache.commons.math.analysis.function;
 
 import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
 import org.apache.commons.math.util.FastMath;
 
 /**
@@ -26,9 +27,20 @@ import org.apache.commons.math.util.Fast
  * @version $Id$
  * @since 3.0
  */
-public class Tanh implements UnivariateRealFunction {
+public class Tanh implements DifferentiableUnivariateRealFunction {
     /** {@inheritDoc} */
     public double value(double x) {
         return FastMath.tanh(x);
     }
+
+    /** {@inheritDoc} */
+    public UnivariateRealFunction derivative() {
+        return new UnivariateRealFunction() {
+            /** {@inheritDoc} */
+            public double value(double x) {
+                final double tanhX = FastMath.tanh(x);
+                return 1 - tanhX * tanhX;
+            }
+        };
+    }
 }