1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.numbers.gamma; 18 19 /** 20 * <a href="https://mathworld.wolfram.com/Erf.html">Error function</a>. 21 * 22 * <p>\[ \operatorname{erf}(z) = \frac{2}{\sqrt\pi}\int_0^z e^{-t^2}\,dt \] 23 */ 24 public final class Erf { 25 /** Private constructor. */ 26 private Erf() { 27 // intentionally empty. 28 } 29 30 /** 31 * Returns the error function. 32 * 33 * <p>The returned value is always between -1 and 1 (inclusive). 34 * The appropriate extreme is returned when {@code erf(x)} is 35 * indistinguishable from either -1 or 1 at {@code double} precision. 36 * 37 * <p>Special cases: 38 * <ul> 39 * <li>If the argument is 0, then the result is 0. 40 * <li>If the argument is {@code > 6}, then the result is 1. 41 * <li>If the argument is {@code < 6}, then the result is -1. 42 * <li>If the argument is nan, then the result is nan. 43 * </ul> 44 * 45 * @param x the value. 46 * @return the error function. 47 */ 48 public static double value(double x) { 49 return BoostErf.erf(x); 50 } 51 }