児玉 です.

From: 正木 功 <GEC01122 / nifty.ne.jp>
Subject: [ruby-math:00406] Re: class Real
Date: Thu, 15 Mar 2001 10:47:15 +0900
Message-ID: <200103150147.KAA03487 / ums507.nifty.ne.jp>
...
> (atan 以外はほぼ大丈夫なようですが、 atan 計算に使った級数の収斂が
> あまり良くないようです。)

tan の方が収束が良いので,
atan を 級数で求めておいて Newton法を1回通すと 精度が良くなると思います.
遅くなるとは思うけど, どうでしょうか?

  def atan0
    # 元のatan を atan0 に改名
    x=self
    Sequence.new([],x){"|n,x| Rational(Power[2][2*n]*Fact[n]**2,Fact[2*n+1])*P
ower[x][2*n+1]/Power[1+x**2][n+1]"}.Sum
  end

  def atan
    x=self; z=x.atan0
    z = z - (z.tan-x)*(z.cos**2)} # Newton's method
  end

-- 
K.Kodama(kodama / kobe-kosen.ac.jp)