正木です。

In message "[ruby-math:00407] Re: class Real"
 "K.Kodama" <kdm / kobe-kosen.ac.jp> writes:

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

児玉さん、有難うございます。これで精度についてはほぼ解決しました。
Real#print(n,r) は精度は保証しないといっても、できるなら n 桁近く
の精度は確保したいですから。
あとは速度の問題ですが良い方法があったら教えて下さい。

|    z = z - (z.tan-x)*(z.cos**2)} # Newton's method
は、今のままでは error になりますので、
    z = z - (z.tan-Real(x))*(z.cos**2)}
にするか、あるいは Real.rb に

Real = Sequence
class Real
  def coerce(other)
    case other
    when Numeric
      return Real(other), self
    else
      super
    end
  end

  def -(y)
    x=self
    case y
    when Real
      Real.new([],x,y){"|n,x,y| x[n]-y[n]"}
    else
      y,=x.coerce(y)
      x-y
    end
  end
end

を追加して下さい。
それから
Rational.rb のなかの def printd 中の
    print s[0],"."
を
    print s[0]
    print "." if n>0
に修正します。
なお、この printd は四捨五入ではなくて切捨です。

実行速度ですが、 testReal.rb の case 文の前後に

t=Time.new
と
print "\t",Time.new-t," sec\n"
を付けて

ruby testReal.rb -m0 -x1 -f atan -n16
を Pentium 150MHz で実行した結果は以下の通り:

atan(1.0)=0.7853981633974484    276.1282 sec

精度については最後の桁が違うことがある程度でまあまあですが、
あまりにも時間がかかりすぎます。
もう少し工夫してみます。 
最新の CPU ではどれ位になるものでしょうか?