using namespace OTL;
昨晩の話。 オセロにおいては、白/黒/空白 の3値をとるデータ構造が頻出するので、3の累乗計算が頻出します。
それに関して、U野が3の累乗をC++テンプレートによって計算する方法を編み出した。 コード中に
pow3<5>
とか書けば、その部分が3の5乗の定数に置き換わる。
それじゃ・・・と思って、いろいろ。 NのM乗, Nの階乗, ・・・あれこれは既にネット上にあるぞ?
それでもめげずに・・・ 素数判定。 返り値だと、doubleとかも扱えることに気づいてルート そして、ルートを採用した高速な素数判定。 コンパイル時間の高!速!化!
そして・・・数値計算といえば円周率!! 円周率の展開公式をテンプレートで実装して、 円周率計算。 GCCの制限(展開は499段まで)により3.139以上の精度向上は不可能かと思われたが、U野の思い付きにより解決。3.14達成!!
何かないかと探してみて・・・sin関数!これだ!初めてちょっとだけ実用かもしれなくなってきた。
sin(60)
とか、
sin(30)
とかだと定数化はたぶん行われないけど・・・ sin<30,4> なら確実に定数化されます。はい。角度を変えたいときに、毎回電卓で計算する必要なし。ちょっと有用・・・・かも!?
まぁ、そんな感じで。
前々からつけてみたかった名前 Ohkura Template Library をつけてみた。
using namespace OTL;
詳しい事は実装者U野のページに。
OTLとは関係ありません。たぶん・・・;