堀之内です。

ベクトルや行列など、数値を要素に持つクラスを定義した場合、要素毎
に Math の関数を適用できるようにしたいというケースは多いでしょう。
その場合のやり方としては、メソッドにして

    x.sin       # x はベクトルなどのオブジェクト

などと出来るようにするのが一般的だろうと思います。しかし、
やはり sin は

    sin(x)

と書きたくありませんか。現状では、sin(x) は x を Float にcoerce 
して math.h の sin に渡すようになってます。coerce失敗なら例外発
生です。そこで、もしも coerce が失敗したらそのオブジェクトの sin 
メソッドを呼ぶという風に rescue されれば良いと思います。そのオブ
ジェクトにsin メソッドがなければ勿論結局例外発生です。

各ユーザーが Math の関数をそれぞれ再定義しても良いのですが、出来
ればおおもとの math.c が上記のように変るのが良いだろうと思います。
賛同が得られましたら(特にまつもとさんの)、試作してみたいと思い
ます。ただ、ruby で書く場合 rescue を使って簡単に出来ますが、Cで
書く場合にどうするのがいいのか知らないので、似たような例をご存じ
の方は教えて頂ければ幸いです。

--
堀之内 武 (horinout / kurasc.kyoto-u.ac.jp)