9/24(日) 掛川・?

 あー,結局,予期した通り,テキスト執筆は全然進まなかった。今夜,少しは進めたいな,とは思っているけど,まーなかなか。すっかり油が切れたらしい。今週中にもう一本,データ取りをしなければならないモンがあると思うと気は焦るのだが,体が「休め」と命令を受けているようで,すっかり言うことを聞かないのである。まーしゃーない,これが三流学者の体力の限界という奴かな,という諦めの気分蔓延の休日なのでありました。
 忘れないうちに書いておこう。BNCpackなんぞというものを書いて公開していると,C++/Fortranでもっと簡単に多倍長できませんか,というお問い合わせをたまーに受ける。A県立大のH先生からもそーゆー話があって,多倍長の初等関数や特殊関数の多様さやIEEE754-1685との親和性を考えるとMPFRを使いたいのだが,Cからしか使えないのでシチメンドクサイ,何とかできないかということであった。
 しかしまー,困ったことに,MPFR開発陣やワシはすっかりAssembler likeなプログラミングスタイルに慣れてしまっており,余計なInstructionがごそごそ入り込むC++なんぞ不要だ,と言わんばかりの冷たい態度なのである。だってさー,このスタイルで何千行のコード書いたと思ってんの? そりゃ,長い計算式もあっという間に「必要なtempolary variableはいくつ用意して,mpfr_add, mpfr_mul, mpfr_div, mpfr_sub, ….をこの順序で組み合わせればオッケーだな」的な判断が瞬時にできるようになるわさ。洗脳って怖いね。
 とはいえ,単なる一般人にそれを強要するのは難しいし,きちんとObject-orientedにしておけばユーザだって増えるはず,Fortran90対応も見えてくる(期待するなよ)。従ってワシだって考えていない訳じゃないのだ。ちなみに現状のMPFRのC++化はいーかげんな奴しか存在していないので使い物になるレベルではないとワシは判断している。
 で,ワシの考えでは,切り離されてしまったとはいえ,GMP同梱のC++ライブラリ(以下,GMP++と呼ぶ)はTemplateにも対応した優れものなので,それを使わない手はない。大体,多倍長正数・有理数・浮動小数点数がすべて使用可能になるのがベストなんだから,今のGMP++をそのまま拡張して,mpf_sin, mpf_cosのように,mpf prefixを付けた初等関数・特殊関数を呼び出せるようにパッチを当て,MPFRに同梱されているmpf2mpfr.hにもそれに対応したパッチを当てて,GMP++とmpf2mpfr.hを一緒に使うことで解決する,というのが現実的な解決策と言える。
 ・・・という腹案をH先生にお話ししたわけである。C++のプログラミングに達者な方の助力を得れば一月もかからずにできそうな案であるが,ワシ自身が手がけても論文の足しになりそうもない(イマドキこの程度のことで論文なんか書けるかよ)ので,あくまで机上のプランニングにとどまっている。誰もやらないんだったら,来年あたりボチボチ,とは思ってますがねー,ほんと,業績になりそうもない仕事なんだよなー。こちとら論文書くのが仕事なんでねー,業績の足しになりそうもないことに精力を注ぎたくない,というのが偽らざる本音なのである。我ながらすれっからしの中年になったなー。
 なーんにも仕事しなかった疚しさに負けて愚痴ってみました。近頃,弱音を吐くのがトレンドのようなのでそれに乗ってみたかった,ってのもあるけど。
 今日は諦めて寝ます。