Namespaces
Variants
Views
Actions

erfc, erfcf, erfcl

From cppreference.com
< c‎ | numeric‎ | math
Revision as of 11:17, 7 June 2014 by Cubbi (Talk | contribs)

 
 
 
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)(C99)(C99)
Exponential functions
(C99)
(C99)
(C99)
(C99)
Power functions
(C99)
(C99)
Trigonometric and hyperbolic functions
(C99)
(C99)
(C99)
Error and gamma functions
(C99)
erfc
(C99)
(C99)
(C99)
Nearest integer floating point operations
(C99)(C99)(C99)
(C99)
(C99)(C99)(C99)
Floating point manipulation functions
(C99)(C99)
(C99)
(C99)
Classification
(C99)
(C99)
(C99)
Macro constants
 
Defined in header <math.h>
float       erfcf( float arg );
(1) (since C99)
double      erfc( double arg );
(2) (since C99)
long double erfcl( long double arg );
(3) (since C99)
Defined in header <tgmath.h>
#define erfc( arg )
(4) (since C99)
1-3) Computes the complementary error function of arg, that is 1.0-erf(arg), but without loss of precision for large arg
4) Type-generic macro: If arg has type long double, erfcl is called. Otherwise, if arg has integer type or the type double, erfc is called. Otherwise, erfcf is called.

Contents

Parameters

arg - floating point value

Return value

If no errors occur, value of the complementary error function of arg, that is
2
π

arg
e-t2
dt
or 1-erf(arg), is returned.

If a range error occurs due to underflow, the correct result (after rounding) is returned

Error handling

Errors are reported as specified in math_errhandling

If the implementation supports IEEE floating-point arithmetic (IEC 60559),

  • If the argument is +∞, +0 is returned
  • If the argument is -∞, 2 is returned
  • If the argument is NaN, NaN is returned

Notes

For the IEEE-compatible type double, underflow is guaranteed if arg > 26.55.

Example

#include <stdio.h>
#include <math.h>
 
double normalCDF(double x) // Phi(-∞, x) aka N(x)
{
    return erfc(-x*sqrt(2))/2;
}
int main(void)
{
    puts("normal cumulative distribution function:");
    for(double n=0; n<1; n+=0.1)
        printf("normalCDF(%.2f) %5.2f%%\n", n, 100*normalCDF(n));
 
    puts("special values:");
    printf("erfc(-Inf) = %f\n", erfc(-INFINITY));
    printf("erfc(Inf) = %f\n", erfc(INFINITY));
}

Output:

normal cumulative distribution function:
normalCDF(0.00) 50.00%
normalCDF(0.10) 57.93%
normalCDF(0.20) 65.54%
normalCDF(0.30) 72.57%
normalCDF(0.40) 78.81%
normalCDF(0.50) 84.13%
normalCDF(0.60) 88.49%
normalCDF(0.70) 91.92%
normalCDF(0.80) 94.52%
normalCDF(0.90) 96.41%
normalCDF(1.00) 97.72%
special values:
erfc(-Inf) = 2.000000
erfc(Inf) = 0.000000

See also

(C99)(C99)(C99)
computes error function
(function) [edit]

External links

Weisstein, Eric W. "Erfc." From MathWorld--A Wolfram Web Resource.