精度はどこまで必要か

倍精度浮動小数点数で計算するのは、研究者にとっては「常識」ですが、設計の現場ではどうでしょうか。たとえば、医療用機器の多くが単精度浮動小数点数で演算されているのは周知のとおり(言っちゃったよ)。
かのフォンノイマンは、「事前に値の範囲をちゃんと調べておけば、整数演算で何でもできるさ」と言ったとか言わなかったとか。これは天才ならではの発言として話半分として聞くにしても、「倍精度が必須です」といっている人のほとんどは、単精度での誤差見積もりが面倒だから言ってるんじゃないですかね。違いますか?本当はほとんど単精度ですんで、倍精度が必要なところなんてごく一部、それも実はボトルネックじゃなかったりして。
そろそろ時効だとよいのですが、私はオペアンプの置き換えプログラムに「倍精度浮動小数点数が必要です」といわれたことがあります。何いってるんですか、よほど実装に気を使わない限り、オペアンプのダイナミックレンジなんて10進5桁がいいところですよ。倍精度浮動小数点がほしいのは、ワークステーションのシミュレータをエミュレートしたいからでしょ。まぁ、こんな感じでぶつぶつ言いながら倍精度演算ライブラリをアセンブラで組んだことがあったりします。私は研究者の倍精度信仰を少々胡散臭い目で見ています。
そんなこんなで、倍精度が必要と研究者が言っている分野では実際には大部分が単精度ですんだりします。でしょ。単精度浮動小数点数が必要とメーカーが言っている分野では、実際には大部分が固定小数点数ですんだりします。でしょ。
なんでこんなことを考えるかというと、特にFPGAで精度と回路規模が直結しているのではないかと考えているからです。いや、経験はないのですが、多分そうですよね。DSPの場合、速度とのトレード・オフになるわけですが、FPGAの場合、トレード・オフのファクターが多そうで、興味深いです。たとえば、面積に転嫁するとか、演算時間に転嫁するとか。FPGAの場合、演算時間への転嫁をどうするのかも興味あるところ。特に固定小数点で済むか浮動小数点で済むかは大きな違いになりそうです。IEEE754に従わなければそうでもないのかな。
興味があります、といいつつ、実はDesign Wave Magazinに全部載っているのではないかと思ったりしています。でも、もう限界っす。今の仕事が終わるまで新しいことに手を出せそうにありません。