sin , cos の値を計算で求めるアルゴリズム

sin , cos の値を計算で求めるアルゴリズム

\displaystyle \sin x \in x - \frac{1}{3!} x^{3} + \frac{1}{5!}x^{5} - \dots + \frac{1}{n!}x^n\\

\displaystyle \cos x \in 1 - \frac{1}{2!}x^2 + \frac{1}{4!}x^4 - \dots + \frac{1}{n!}x^n\\

\displaystyle x = 0 \le x \le \frac{\pi}{4}

var sin_cnt = 0, cos_cnt = 0;

function sin (x) {
  let s = x, y = -x*x, b = 1, i = 1, r = x, m;
  do {
    sin_cnt++;
    m = r;
    r += (s*=y) / (b *= ++i*++i);
  } while (m - r);
  return r;
}

function cos (x) {
  let s = 1, b = 1, y = -x*x, i = 0, r = 1, m;
  do {
    cos_cnt++;
    m = r;
    r += (s *= y) / (b *= ++i * ++i); 
  } while (m - r);
  return r;
}

for (let x = 0; x < 45; x++) {
  let i = x * Math.PI/180;
  console.log (x,Math.sin (i)- sin (i));
  console.log (x,Math.cos (i)- cos (i));
}
console.log (sin_cnt / 45, cos_cnt /45);

おおよそではあるが、ループ内は平均で7回程度回っている