我创建了一种有趣的编程语言,现在我想编写一些基本的数学函数。我的限制是该语言仅支持整数数据类型。所以我想计算100 * sin(x)。我已经设法用sqrt做同样的事情,但我被困在这里。我尝试过使用此处描述的方法: https://stackoverflow.com/a/2284929/6291515
还有一个如下所述的快速算法:http://lab.polygonal.de/2007/07/18/fast-and-accurate-sinecosine-approximation/
我首先尝试在java中对算法进行建模(因为它更易于处理和调试),但它并不是很有效。也许你对如何使其发挥作用有所了解。
int mult = 100;
int pi = (int)(Math.PI * (double) mult);
int x = (int)( 5 * (double) mult );
x = x % (2*pi);
int res=0, pow=x, fact=1, buf1 = pow;
for(int i=0; i<10; i++){
buf1 = pow;
buf1 /= fact;
res+=buf1;
pow*=x;
pow /= mult;
pow*=x;
pow /= mult;
pow*=-1;
fact*=(2*(i+1))*(2*(i+1)+1);
}