std::erfc, std::erfcf, std::erfcl
来自cppreference.com
在标头 <cmath> 定义 | ||
(1) | ||
float erfc (float num ); double erfc (double num ); | (C++23 前) | |
/* 浮点数类型 */ erfc (/* 浮点数类型 */ num ); | (C++23 起) (C++26 起 constexpr) | |
float erfcf(float num ); | (2) | (C++11 起) (C++26 起为 constexpr) |
longdouble erfcl(longdouble num ); | (3) | (C++11 起) (C++26 起为 constexpr) |
SIMD 重载(C++26 起) | ||
在标头 <simd> 定义 | ||
template</*math-floating-point*/ V > constexpr/*deduced-simd-t*/<V> | (S) | (C++26 起) |
额外重载(C++11 起) | ||
在标头 <cmath> 定义 | ||
template<class Integer > double erfc ( Integer num ); | (A) | (C++26 起为 constexpr) |
1-3) 计算 num 的补误差函数,即 1.0-std::erf(num),但对于大的 num 无精度损失。标准库提供所有以无 cv 限定的浮点数类型作为形参的类型的
std::erfc
重载。(C++23 起)S) SIMD 重载对 v_num 实施逐元素 std::erfc 。
| (C++26 起) |
A) 为所有整数类型提供额外重载,将它们当做 double。 | (C++11 起) |
目录 |
[编辑]参数
num | - | 浮点数或整数 |
[编辑]返回值
如果没有发生错误,那么返回 num 的补误差函数的值,即2 |
√π |
nume-t2
dt 或 1-erf(num)。
如果发生下溢导致的值域错误,那么返回(舍入后的)正确结果。
[编辑]错误处理
报告 math_errhandling 中指定的错误。
如果实现支持 IEEE 浮点数算术(IEC 60559),那么
- 如果实参是 +∞,那么返回 +0
- 如果实参是 -∞,那么返回 2
- 如果实参是 NaN,那么返回 NaN
[编辑]注解
对于 IEEE 兼容的 double 类型在 num >26.55 时保证下溢。
额外重载不需要以 (A) 的形式提供。它们只需要能够对它们的整数类型实参 num 确保 std::erfc(num) 和 std::erfc(static_cast<double>(num)) 的效果相同。
[编辑]示例
运行此代码
#include <cmath>#include <iomanip>#include <iostream> double normalCDF(double x)// Phi(-∞, x),又称为 N(x){return std::erfc(-x /std::sqrt(2))/2;} int main(){std::cout<<"正态累积分布函数(normal CDF):\n"<<std::fixed<<std::setprecision(2);for(double n =0; n <1; n +=0.1)std::cout<<"normalCDF("<< n <<") = "<<100* normalCDF(n)<<"%\n"; std::cout<<"特殊值:\n"<<"erfc(-Inf) = "<< std::erfc(-INFINITY)<<'\n'<<"erfc(Inf) = "<< std::erfc(INFINITY)<<'\n';}
输出:
正态累积分布函数(normal CDF): normalCDF(0.00) = 50.00% normalCDF(0.10) = 53.98% normalCDF(0.20) = 57.93% normalCDF(0.30) = 61.79% normalCDF(0.40) = 65.54% normalCDF(0.50) = 69.15% normalCDF(0.60) = 72.57% normalCDF(0.70) = 75.80% normalCDF(0.80) = 78.81% normalCDF(0.90) = 81.59% normalCDF(1.00) = 84.13% 特殊值: erfc(-Inf) = 2.00 erfc(Inf) = 0.00
[编辑]参阅
(C++11)(C++11)(C++11) | 误差函数 (函数) |
erfc 的 C 文档 |
[编辑]外部链接
Weisstein, Eric W. "Erfc." 来自 MathWorld--A Wolfram Web Resource。 |