環境ですが、x64プロセッサ(第3世代Core i7)・Win7 x64・Visual C++ 2008です。
メインメモリ上での一時的な記憶用に欲しいだけなので、floatなりdoubleなりのデータを半精度に変換してメモリに保存、後で読み出して演算する時はfloatかdoubleに再変換してから処理って流れを考えています。
という訳で、最低限必要なのは「float・doubleと半精度間の変換」のみです。
出来れば無償で使用可能で、ソースが公開されていると嬉しいです。
以上、よろしくお願いします。
OpenEXR の IlmBase に含まれる half クラスを使うのはどうでしょうか。
http://www.openexr.com/downloads.html
軽くソースを見てみましたけど、値の実体は unsigned short で持ってます。
half float → float が表引きで変換してるので、多少メモリは食いますが速そうです。
その分、ビルドにはひと手間必要ですが、VC7、VC8 のプロジェクトファイルもついているようなので。
ライセンスは、修正BSDライセンスのようです。
こんなのもありました。
http://half.sourceforge.net/
多分、値の実体を u_int16 で持ってる。
でも、ざっと見ただけでは、どうしてテンプレートライブラリになってるのかが、よく分からなかった。
クラスを使うだけだったら、テンプレートを意識しないと思います。
ライセンスは MIT ライセンスだそうです。
あと、おまけ。
Dr.Dobb's Journal に、こんなのがあって「おおっ」って思ったんですけど、D 言語だった ><
http://www.drdobbs.com/cpp/implementing-half-floats-in-d/240146674
でも、移植はそれほど難しくないのかもしれない。
https://github.com/WalterBright/phobos/blob/1825238110186a1b9e71bca3fa6591de1e8c6dc7/std/halffloat.d
http://en.wikipedia.org/wiki/Half_precision