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とは関係ありません。たぶん・・・;