Author: erans
Date: Sun Oct 16 00:51:42 2011
New Revision: 1183776
URL: http://svn.apache.org/viewvc?rev=1183776&view=rev
Log:
Added "derivative".
Added:
commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/function/SqrtTest.java
(with props)
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sqrt.java
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sqrt.java
URL:
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sqrt.java?rev=1183776&r1=1183775&r2=1183776&view=diff
==============================================================================
---
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sqrt.java
(original)
+++
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sqrt.java
Sun Oct 16 00:51:42 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 Sqrt implements UnivariateRealFunction {
+public class Sqrt implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.sqrt(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return 1 / (2 * FastMath.sqrt(x));
+ }
+ };
+ }
}
Added:
commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/function/SqrtTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/function/SqrtTest.java?rev=1183776&view=auto
==============================================================================
---
commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/function/SqrtTest.java
(added)
+++
commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/function/SqrtTest.java
Sun Oct 16 00:51:42 2011
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.math.analysis.function;
+
+import org.apache.commons.math.analysis.UnivariateRealFunction;
+
+import org.junit.Test;
+import org.junit.Assert;
+
+public class SqrtTest {
+ @Test
+ public void testComparison() {
+ final Sqrt s = new Sqrt();
+ final UnivariateRealFunction f = new UnivariateRealFunction() {
+ public double value(double x) {
+ return Math.sqrt(x);
+ }
+ };
+
+ for (double x = 1e-30; x < 1e10; x *= 2) {
+ final double fX = f.value(x);
+ final double sX = s.value(x);
+ Assert.assertEquals("x=" + x, fX, sX, 0);
+ }
+ }
+
+ @Test
+ public void testDerivativeComparison() {
+ final UnivariateRealFunction sPrime = (new Sqrt()).derivative();
+ final UnivariateRealFunction f = new UnivariateRealFunction() {
+ public double value(double x) {
+ return 1 / (2 * Math.sqrt(x));
+ }
+ };
+
+ for (double x = 1e-30; x < 1e10; x *= 2) {
+ final double fX = f.value(x);
+ final double sX = sPrime.value(x);
+ Assert.assertEquals("x=" + x, fX, sX, 0);
+ }
+ }
+}
Propchange:
commons/proper/math/trunk/src/test/java/org/apache/commons/math/analysis/function/SqrtTest.java
------------------------------------------------------------------------------
svn:eol-style = native