西松です。

> いづれにしても、ちょっと見た感じでは、このパッチは専ら
> Complex(float,float) の場合を考えているようですし、

そうか、infinite?はFloatにしか使えないんですね。
$ ruby -r complex -e 'p Math::cproj(Complex(1,1))'
/usr/local/lib/ruby/1.9.1/cmath.rb:79:in `cproj': undefined method `infinite?' for 1:Fixnum
(NoMethodError)
	from -e:1:in `<main>'
出直します。


> 若干の不備もあるので、そのまま当てられないように見えます。

はい、

  「division by zero」を避けるためにはcopysignが必要。
    ↓
  copysignを採用していただくためにはおそらくmissing/copysign.cが必要。
  (本体はだいたい [ruby-list:45861] に書きました。)
    ↓
  missing/copysign.cは「division by zero」を使うか
  IEEE 754を仮定するかすれば簡単に書けるけど…
  簡単な実装はないかしらん。

という状況でしょうか。