- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
该库的许多实现深入到所有弧函数的 FPATAN 指令。 FPATAN 是如何实现的?假设我们有 1 位符号,M 位尾数和 N 位指数,得到这个数反正切的算法是什么?应该有这样的算法,因为 FPU 做到了。
最佳答案
FPATAN 指令在 x86 处理器中的实现通常是专有的。要计算反正切或其他(逆)三角函数,常用算法遵循三个步骤:
fpminimax()
功能。
fma()
标准库函数,但是它需要在不提供硬件支持的平台上进行模拟,这使得它在这些平台上运行缓慢。
double my_atan (double x)
{
double a, z, p, r, s, q, o;
/* argument reduction:
arctan (-x) = -arctan(x);
arctan (1/x) = 1/2 * pi - arctan (x), when x > 0
*/
z = fabs (x);
a = (z > 1.0) ? 1.0 / z : z;
/* evaluate minimax polynomial approximation */
s = a * a; // a**2
q = s * s; // a**4
o = q * q; // a**8
/* use Estrin's scheme for low-order terms */
p = fma (fma (fma (-0x1.53e1d2a25ff34p-16, s, 0x1.d3b63dbb65af4p-13), q,
fma (-0x1.312788dde0801p-10, s, 0x1.f9690c82492dbp-9)), o,
fma (fma (-0x1.2cf5aabc7cef3p-7, s, 0x1.162b0b2a3bfcep-6), q,
fma (-0x1.a7256feb6fc5cp-6, s, 0x1.171560ce4a483p-5)));
/* use Horner's scheme for high-order terms */
p = fma (fma (fma (fma (fma (fma (fma (fma (fma (fma (fma (fma (p, s,
-0x1.4f44d841450e1p-5), s,
0x1.7ee3d3f36bb94p-5), s,
-0x1.ad32ae04a9fd1p-5), s,
0x1.e17813d66954fp-5), s,
-0x1.11089ca9a5bcdp-4), s,
0x1.3b12b2db51738p-4), s,
-0x1.745d022f8dc5cp-4), s,
0x1.c71c709dfe927p-4), s,
-0x1.2492491fa1744p-3), s,
0x1.99999999840d2p-3), s,
-0x1.555555555544cp-2) * s, a, a);
/* back substitution based on argument reduction */
r = (z > 1.0) ? (0x1.921fb54442d18p+0 - p) : p;
return copysign (r, x);
}
关于algorithm - arctan 是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23047978/
我尝试从点 (n,m) 确定角度至 (0,0) .无 arctan2可用,我遇到了 m 的问题可以是 0,这导致可能被零除。 解决这个问题的优雅、正确的解决方案是什么? 最佳答案 不要使用传统的象限,
该库的许多实现深入到所有弧函数的 FPATAN 指令。 FPATAN 是如何实现的?假设我们有 1 位符号,M 位尾数和 N 位指数,得到这个数反正切的算法是什么?应该有这样的算法,因为 FPU 做到
我尝试使用两者,但它给了我错误的答案,根据我的计算器,答案应该是: arctan(0.35) = 19.29 我使用的: Math.atan(Math.toRadians(angle)) and Ma
我正在使用 arctan(x) 的麦克劳林级数,但没有得到正确的答案。我正在以弧度进行计算。这是到目前为止的功能: fp32 t32rArcTangent(fp32 number) { fp32 a,
我正在尝试使用OpenCvSharp计算灰度图像的梯度大小和方向。问题在于“Pow”功能似乎不适用于IplImage。 我也想知道如何计算FeatureImage的tan-1(或arctan)。 谢谢
基于 Sjoerd,很好的解决方案和扩展 From Cartesian Plot to Polar Histogram using Mathematica ,请考虑以下事项: list = {{21,
在下面的代码中, float i = Float.parseFloat(a); float j = Float.parseFloat(b); double div = (double)j/i; fl
我需要对反正切值执行泰勒级数 50 次。表示 arctan Taylor 级数的域之间的 50 个数字,即 [-1,1]。我已经用手动用户输入对其进行了测试并且它工作正常,但是我在代码中递增 0.01
你好,我必须以度数来区分计算,我有以下代码,但我没有返回确切的值。唯一对的就是sin90的值degree = 1 //////***** DEGREES ******////// var sinus
如何在 iphone SDK 中获取 arctan MATH 函数? 最佳答案 你要找的函数是atan(double) 关于ios - 如何在 iOS 中获取 arctan MATH 函数?,我们在S
在 Python 和 Matlab 中,我编写了生成矩阵并使用索引函数填充它的代码。 Python代码的执行时间是Matlab代码执行时间的20倍左右。两个具有相同结果的函数是用 python 编写的
如何在没有数学函数(arctan)的情况下快速计算点和 org(0,0) 之间的角度(最接近八个提供值之一)?我将 xy 坐标系分成 8 个部分(0、45、90、135、180、225、270、315
我正在尝试复制 Curtis 在 Orbital Mechanics 中的情节,但我就是不太明白。但是,我通过从 np.arctan 切换到 np.arctan2 取得了进展。 也许我错误地实现了 a
我的 C 作业之一是编写 arctan(x) 的近似值在 C 语言中。我应该基于的方程是 arctan(x)=\sum {k=0}^{\infty }(-1)^{k} \tfrac{x^{2k+1}}
我对 Python 完全陌生,并且在完成部分作业时遇到了一些问题。 首先,我们必须定义一个使用泰勒级数展开来近似 arctan(x) 的函数。 现在,我必须利用 arctan(1) = pi/4 这一
我是一名优秀的程序员,十分优秀!