素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

円周率いろいろ

*使うより、Math.pow使うほうが遅い。

var PI = function () {
  var sum = 0, n = 100000, d = 1 / n;
  for (var i = 0;i <= n; ++i) {
    var x = i * d, f = Math.sqrt(1 - Math.pow(x, 2));
    if (i == 0 || i == n)
      sum += f;
    else if (i % 2)
      sum += f * 4;
    else
      sum += f * 2;
  }
  return sum * d / 3 * 4;
}();

console.log(PI);

var PI = function () {
  var a = 1, b = 1/ Math.sqrt(2), s = 1, t = 4;
  for (var i = 0; i < 3; ++i) {
    last = a;
    a = (a + b) / 2;
    b = Math.sqrt(last * b);
    s -= t * Math.pow(a - last, 2);
    t  *= 2;
  }
  return Math.pow(a + b, 2)/ s;
}();
console.log(PI);

console.log(Math.PI);