ComplexやRationalがautoloadに設定されているときに
require 'mathn'をするとまずいことがあるようです。

% cat a.rb
autoload :Complex, 'complex'
require 'mathn'
p Math.sqrt(-1)
% cat b.rb
autoload :Rational, 'rational'
require 'complex'
require 'mathn'
p Math.sqrt(-1)
% ruby -v
ruby 1.6.5 (2001-10-05) [i386-linux]
% ruby a.rb
complex.rb:341:in `**': undefined method `power!' for 2:Fixnum (NameError)
        from mathn.rb:255:in `rsqrt'
        from mathn.rb:244:in `sqrt'
        from a.rb:3
% ruby17 -v
ruby 1.7.2 (2001-11-25) [i686-linux]
% ruby17 a.rb
complex.rb:336:in `**': undefined method `power!' for 2:Fixnum (NoMethodError)
(略)


-- 
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)