相关疑难解决方法(0)

三角函数如何工作?

因此,在高中数学,也可能是大学,我们学习如何使用三角函数,他们做什么,以及他们解决了什么样的问题.但它们总是作为一个黑盒子呈现给我.如果你需要某些东西的正弦或余弦,你可以点击计算器上的sin或cos按钮然后进行设置.哪个好.

我想知道的是三角函数通常是如何实现的.

algorithm math trigonometry

99
推荐指数
4
解决办法
5万
查看次数

快速弧算法算法?

我有自己的,非常快的cos函数:

float sine(float x)
{
    const float B = 4/pi;
    const float C = -4/(pi*pi);

    float y = B * x + C * x * abs(x);

    //  const float Q = 0.775;
    const float P = 0.225;

    y = P * (y * abs(y) - y) + y;   // Q * y + P * y * abs(y)


    return y;
}

float cosine(float x)
{
    return sine(x + (pi / 2));
}
Run Code Online (Sandbox Code Playgroud)

但是现在当我描述时,我发现acos()正在杀死处理器.我不需要高度精确.什么是计算acos的快速方法(x)谢谢.

c c++ algorithm math performance

22
推荐指数
7
解决办法
2万
查看次数

CORDIC Arcsine实现失败

我最近实现了一个CORDIC函数库来减少所需的计算能力(我的项目基于PowerPC,并且其执行时间规范非常严格).语言是ANSI-C.

其他函数(sin/cos/atan)在32位和64位实现中的精度限制内工作.

不幸的是,asin()函数系统地失败了某些输入.

出于测试目的,我已经实现了一个.h用于simulink S-Function的文件.(这只是为了方便起见,您可以将以下内容编译为独立版.exe,只需进行少量更改)

注意:我强制进行32次迭代,因为我工作在32位精度,并且需要最大可能的精度.

Cordic.h:

#include <stdio.h>
#include <stdlib.h>

#define FLOAT32 float
#define INT32 signed long int
#define BIT_XOR ^

#define CORDIC_1K_32 0x26DD3B6A                  
#define MUL_32       1073741824.0F     /*needed to scale float -> int*/            
#define INV_MUL_32   9.313225746E-10F  /*needed to scale int -> float*/

INT32 CORDIC_CTAB_32 [] = {0x3243f6a8, 0x1dac6705, 0x0fadbafc, 0x07f56ea6, 0x03feab76, 0x01ffd55b, 0x00fffaaa, 0x007fff55, 
                           0x003fffea, 0x001ffffd, 0x000fffff, 0x0007ffff, 0x0003ffff, 0x0001ffff, 0x0000ffff, 0x00007fff, 
                           0x00003fff, 0x00001fff, 0x00000fff, 0x000007ff, 0x000003ff, 0x000001ff, 0x000000ff, 0x0000007f, 
                           0x0000003f, 0x0000001f, 0x0000000f, 0x00000008, 0x00000004, …
Run Code Online (Sandbox Code Playgroud)

c math

10
推荐指数
1
解决办法
1561
查看次数

标签 统计

math ×3

algorithm ×2

c ×2

c++ ×1

performance ×1

trigonometry ×1