0. 写在最前面
本文持续更新地址:https://haoqchen.site/2020/12/01/summary-of-trigonomatric-function/
本文主要总结cpp中各种三角函数、反三角函数的输入是角度还是弧度;结果范围是怎么样的;有哪些限制条件等。
这里需要注意,对于C++版本的三角函数和C版本的三角函数而言,两者并没有太大的差距,无论是性能上还是输入输出上。本质上C++和C都是对底层实现的一种封装,如果你测试出了性能上的差别,可能是因为你的时间浪费在了float和double的转换。
如果觉得写得还不错,可以找我其他文章来看看哦~~~可以的话帮我github点个赞呗。
你的Star是作者坚持下去的最大动力哦~~~
1. 三角函数
函数名 | 语言 | 输入 | 返回范围 | 备注 |
---|---|---|---|---|
std::sin | CPP<cmath> | 弧度 | [-1, +1] | 1. 如果输入参数超出范围,将返回一个默认值,一般为NaN 2. 如果是下溢导致范围错误,则返回将返回正确结果取整后返回 3. ±无穷及NaN参数将返回NaN 4. 上述异常处理与系统实现有关 5. 整数参数默认转换为double |
std::tan | CPP<cmath> | 弧度 | 1. 如果参数数量级过大,结果会不准确(C++11后面的版本修复了) 2. 错误处理同 std::sin |
2. 反三角函数
函数名 | 语言 | 输入 | 返回范围 | 备注 |
---|---|---|---|---|
std::asin | CPP<cmath> | [-1.0, 1.0] | [ − π 2 -\frac{\pi}{2} −2π, π 2 \frac{\pi}{2} 2π] | 1. 计算参数的参数的反正弦的主值 2. 如果输入参数不在范围内,将返回一个默认值,一般为NaN 3. 如果是下溢导致范围错误,则返回将返回正确结果取整后返回 4. ±无穷及NaN参数将返回NaN |
std::acos | CPP<cmath> | [-1.0, 1.0] | [ 0 0 0, π \pi π] | 异常处理同 std::asin |
std::atan | CPP<cmath> | [ − π 2 -\frac{\pi}{2} −2π, π 2 \frac{\pi}{2} 2π] | 1. 当输入为
±
∞
\plusmn\infin
±∞时,输出
±
π
2
\plusmn\frac{\pi}{2}
±2π 2. 输入为NaN时返回NaN 3. 如果是下溢导致范围错误,则返回将返回正确结果取整后返回 | |
std::atan2 ( double y, double x ); | CPP<cmath> | [ − π -\pi −π, π \pi π] | 1. 默认是double,计算的是 arctan ( y x ) \arctan(\frac{y}{x}) arctan(xy)的值,错误处理详见下两图 |
std::atan2错误处理 | std::atan2正负号 |
---|---|
![]() | ![]() |
待续
后面用到再总结Matlab和Python的
参考
喜欢我的文章的话Star一下呗Star
版权声明:本文为白夜行的狼原创文章,未经允许不得以任何形式转载