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 2017/05/21 02:55:54 UTC
[math] MATH-1416: Deleted "ContinuedFraction".
Repository: commons-math
Updated Branches:
refs/heads/master b81be1fea -> 96c8597c0
MATH-1416: Deleted "ContinuedFraction".
Code is now part of "Commons Numbers" (in module "commons-numbers-fraction").
Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/96c8597c
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/96c8597c
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/96c8597c
Branch: refs/heads/master
Commit: 96c8597c0f6eba2252bae4107ddacabeaf2be0e6
Parents: b81be1f
Author: Gilles <er...@apache.org>
Authored: Sun May 21 04:53:09 2017 +0200
Committer: Gilles <er...@apache.org>
Committed: Sun May 21 04:53:09 2017 +0200
----------------------------------------------------------------------
.../commons/math4/util/ContinuedFraction.java | 180 -------------------
.../math4/util/ContinuedFractionTest.java | 46 -----
2 files changed, 226 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-math/blob/96c8597c/src/main/java/org/apache/commons/math4/util/ContinuedFraction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/util/ContinuedFraction.java b/src/main/java/org/apache/commons/math4/util/ContinuedFraction.java
deleted file mode 100644
index 536638e..0000000
--- a/src/main/java/org/apache/commons/math4/util/ContinuedFraction.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * 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.math4.util;
-
-import org.apache.commons.numbers.core.Precision;
-import org.apache.commons.math4.exception.ConvergenceException;
-import org.apache.commons.math4.exception.MaxCountExceededException;
-import org.apache.commons.math4.exception.util.LocalizedFormats;
-
-/**
- * Provides a generic means to evaluate continued fractions. Subclasses simply
- * provided the a and b coefficients to evaluate the continued fraction.
- *
- * <p>
- * References:
- * <ul>
- * <li><a href="http://mathworld.wolfram.com/ContinuedFraction.html">
- * Continued Fraction</a></li>
- * </ul>
- *
- */
-public abstract class ContinuedFraction {
- /** Maximum allowed numerical error. */
- private static final double DEFAULT_EPSILON = 10e-9;
-
- /**
- * Default constructor.
- */
- protected ContinuedFraction() {
- super();
- }
-
- /**
- * Access the n-th a coefficient of the continued fraction. Since a can be
- * a function of the evaluation point, x, that is passed in as well.
- * @param n the coefficient index to retrieve.
- * @param x the evaluation point.
- * @return the n-th a coefficient.
- */
- protected abstract double getA(int n, double x);
-
- /**
- * Access the n-th b coefficient of the continued fraction. Since b can be
- * a function of the evaluation point, x, that is passed in as well.
- * @param n the coefficient index to retrieve.
- * @param x the evaluation point.
- * @return the n-th b coefficient.
- */
- protected abstract double getB(int n, double x);
-
- /**
- * Evaluates the continued fraction at the value x.
- * @param x the evaluation point.
- * @return the value of the continued fraction evaluated at x.
- * @throws ConvergenceException if the algorithm fails to converge.
- */
- public double evaluate(double x) throws ConvergenceException {
- return evaluate(x, DEFAULT_EPSILON, Integer.MAX_VALUE);
- }
-
- /**
- * Evaluates the continued fraction at the value x.
- * @param x the evaluation point.
- * @param epsilon maximum error allowed.
- * @return the value of the continued fraction evaluated at x.
- * @throws ConvergenceException if the algorithm fails to converge.
- */
- public double evaluate(double x, double epsilon) throws ConvergenceException {
- return evaluate(x, epsilon, Integer.MAX_VALUE);
- }
-
- /**
- * Evaluates the continued fraction at the value x.
- * @param x the evaluation point.
- * @param maxIterations maximum number of convergents
- * @return the value of the continued fraction evaluated at x.
- * @throws ConvergenceException if the algorithm fails to converge.
- * @throws MaxCountExceededException if maximal number of iterations is reached
- */
- public double evaluate(double x, int maxIterations)
- throws ConvergenceException, MaxCountExceededException {
- return evaluate(x, DEFAULT_EPSILON, maxIterations);
- }
-
- /**
- * Evaluates the continued fraction at the value x.
- * <p>
- * The implementation of this method is based on the modified Lentz algorithm as described
- * on page 18 ff. in:
- * <ul>
- * <li>
- * I. J. Thompson, A. R. Barnett. "Coulomb and Bessel Functions of Complex Arguments and Order."
- * <a target="_blank" href="http://www.fresco.org.uk/papers/Thompson-JCP64p490.pdf">
- * http://www.fresco.org.uk/papers/Thompson-JCP64p490.pdf</a>
- * </li>
- * </ul>
- * <b>Note:</b> the implementation uses the terms a<sub>i</sub> and b<sub>i</sub> as defined in
- * <a href="http://mathworld.wolfram.com/ContinuedFraction.html">Continued Fraction @ MathWorld</a>.
- *
- * @param x the evaluation point.
- * @param epsilon maximum error allowed.
- * @param maxIterations maximum number of convergents
- * @return the value of the continued fraction evaluated at x.
- * @throws ConvergenceException if the algorithm fails to converge.
- * @throws MaxCountExceededException if maximal number of iterations is reached
- */
- public double evaluate(double x, double epsilon, int maxIterations)
- throws ConvergenceException, MaxCountExceededException {
- final double small = 1e-50;
- double hPrev = getA(0, x);
-
- // use the value of small as epsilon criteria for zero checks
- if (Precision.equals(hPrev, 0.0, small)) {
- hPrev = small;
- }
-
- int n = 1;
- double dPrev = 0.0;
- double cPrev = hPrev;
- double hN = hPrev;
-
- while (n < maxIterations) {
- final double a = getA(n, x);
- final double b = getB(n, x);
-
- double dN = a + b * dPrev;
- if (Precision.equals(dN, 0.0, small)) {
- dN = small;
- }
- double cN = a + b / cPrev;
- if (Precision.equals(cN, 0.0, small)) {
- cN = small;
- }
-
- dN = 1 / dN;
- final double deltaN = cN * dN;
- hN = hPrev * deltaN;
-
- if (Double.isInfinite(hN)) {
- throw new ConvergenceException(LocalizedFormats.CONTINUED_FRACTION_INFINITY_DIVERGENCE,
- x);
- }
- if (Double.isNaN(hN)) {
- throw new ConvergenceException(LocalizedFormats.CONTINUED_FRACTION_NAN_DIVERGENCE,
- x);
- }
-
- if (FastMath.abs(deltaN - 1.0) < epsilon) {
- break;
- }
-
- dPrev = dN;
- cPrev = cN;
- hPrev = hN;
- n++;
- }
-
- if (n >= maxIterations) {
- throw new MaxCountExceededException(LocalizedFormats.NON_CONVERGENT_CONTINUED_FRACTION,
- maxIterations, x);
- }
-
- return hN;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/commons-math/blob/96c8597c/src/test/java/org/apache/commons/math4/util/ContinuedFractionTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/math4/util/ContinuedFractionTest.java b/src/test/java/org/apache/commons/math4/util/ContinuedFractionTest.java
deleted file mode 100644
index 686fb51..0000000
--- a/src/test/java/org/apache/commons/math4/util/ContinuedFractionTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.math4.util;
-
-import org.apache.commons.math4.util.ContinuedFraction;
-import org.junit.Assert;
-import org.junit.Test;
-
-
-/**
- */
-public class ContinuedFractionTest {
-
- @Test
- public void testGoldenRatio() throws Exception {
- ContinuedFraction cf = new ContinuedFraction() {
-
- @Override
- public double getA(int n, double x) {
- return 1.0;
- }
-
- @Override
- public double getB(int n, double x) {
- return 1.0;
- }
- };
-
- double gr = cf.evaluate(0.0, 10e-9);
- Assert.assertEquals(1.61803399, gr, 10e-9);
- }
-}