哪位给个sin/cos的优化版?(C/C++)
程序中调用了20亿次的样子,要将近80多秒(1.3G cpu)的运行时间
哪位收藏有更好的?
偶运行的程序大致如下(实际使用的修修补补过,不过并没有很大的变化,也就是少做一两次乘法的样子)
如果哪位有基于查表法之类的,请不要吝啬
哪位收藏有更好的?
偶运行的程序大致如下(实际使用的修修补补过,不过并没有很大的变化,也就是少做一两次乘法的样子)
如果哪位有基于查表法之类的,请不要吝啬
/*
* cosine_sine.cpp
*
* Created on: 2009-8-28
* Author: Administrator
*/
//1.27323954 = 4/pi
//0.405284735 =-4/(pi^2)
/*********************************************************
* high precision sine/cosine
*********************************************************/
double shift(const double x) {
//always wrap input angle to -PI..PI
while (x < -3.14159265)
x += 6.28318531;
while (x > 3.14159265)
x -= 6.28318531;
return x;
}
double sine(const double x) {
double sin = 0;
x = shift( x );
//compute sine
if (x < 0) {
sin = 1.27323954 * x + .405284735 * x * x;
if (sin < 0)
sin = .225 * (sin * -sin - sin) + sin;
else
sin = .225 * (sin * sin - sin) + sin;
} else {
sin = 1.27323954 * x - 0.405284735 * x * x;
if (sin < 0)
sin = .225 * (sin * -sin - sin) + sin;
else
sin = .225 * (sin * sin - sin) + sin;
}
return sin;
}
double cosine(const double x) {
double cos = 0;
//compute cosine: sin(x + PI/2) = cos(x)
x += 1.57079632;
if (x > 3.14159265)
x -= 6.28318531;
if (x < 0) {
cos = 1.27323954 * x + 0.405284735 * x * x;
if (cos < 0)
cos = .225 * (cos *-cos - cos) + cos;
else
cos = .225 * (cos * cos - cos) + cos;
}
else
{
cos = 1.27323954 * x - 0.405284735 * x * x;
if (cos < 0)
cos = .225 * (cos *-cos - cos) + cos;
else
cos = .225 * (cos * cos - cos) + cos;
}
return cos;
}
...全文
相关推荐
C语言实现sin-cos-sqrt-pow函数-综合文档
下面将详细解释如何用C语言实现sin、cos、sqrt和pow。首先,我们来看`abs`函数,这是一个求浮点数绝对值的函数。
嵌入式系统中基于线性插值和查表法的Sin/Cos函数C语言高效实现及应用
内容概要:本文介绍了一种用于嵌入式系统的高效Sin和Cos函数C语言实现方法。该方法采用线性插值和查表法,支持Q15格式输入输出,覆盖-pi到pi的角度范围。文中详细展示了核心数据结构和关键算法,如Q
用VC++画数学函数图(sin,cos ,二项式等等)
对于三角函数sin和cos,我们可以使用标准库中的`<cmath>`,其中包含了sin和cos的实现。
遗传算法求函数f=x+10*sin(5*x)+7*cos(4*x)的最大值点的MATLAB程序
本文介绍了使用单点交叉遗传算法解决函数f=x+10*sin(5*x)+7*cos(4*x)最大值问题的过程。代码实现了初始化种群、交叉、变异和选择等操作,并通过300次迭代找到最优解24.689。
fft.rar_COS FFT_FFT SIN表_fft_fft设计sin函数_sin 表
标题中的"fft.rar_COS FFT_FFT SIN表_fft_fft设计sin函数_sin 表"提示我们,这个压缩包可能包含了一组关于快速傅里叶变换(FFT)的代码和相关资源,特别是与计算余弦(COS


