仅使用整数计算sin(x)

时间:2018-02-25 11:39:06

标签: java sin

我创建了一种有趣的编程语言,现在我想编写一些基本的数学函数。我的限制是该语言仅支持整数数据类型。所以我想计算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);
}

0 个答案:

没有答案