Policy.java
- /*
- * 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.numbers.gamma;
- /**
- * Encapsulate the policy for function evaluation.
- * This is a reduced implementation of the Boost {@code boost::math::policies}
- * functionality. No settings are preserved for the error handling policy or
- * promotion of data types for computations.
- * This controls the convergence criteria and maximum iterations for series evaluations.
- *
- * @see <a href="https://www.boost.org/doc/libs/1_77_0/libs/math/doc/html/policy.html">
- * Policies: Controlling Precision, Error Handling etc</a>
- */
- final class Policy {
- /** Default policy. The Boost default uses 2^-52 for the epsilon. This uses
- * 2^-53 to use an extra guard digit in the Kahan series summations.
- * The minimum value for the Commons continued fraction epsilon is also 2^-53. */
- private static final Policy DEFAULT = new Policy(0x1.0p-53, 1000000);
- /** Epsilon value for relative error. */
- private final double eps;
- /** The maximum number of iterations permitted in a series evaluation. */
- private final int maxIterations;
- /**
- * Instantiates a new policy.
- *
- * @param eps the eps
- * @param maxIterations the maximum number of iterations permitted in a series
- * evaluation
- */
- Policy(double eps, int maxIterations) {
- this.eps = eps;
- this.maxIterations = maxIterations;
- }
- /**
- * Gets the default.
- *
- * @return the default policy
- */
- static Policy getDefault() {
- return DEFAULT;
- }
- /**
- * Gets the epsilon value for relative error.
- *
- * @return the epsilon
- */
- double getEps() {
- return eps;
- }
- /**
- * Gets the maximum number of iterations permitted in a series evaluation.
- *
- * @return max iterations
- */
- int getMaxIterations() {
- return maxIterations;
- }
- }