using namespace OTL;

28 Sep

昨晩の話。
オセロにおいては、白/黒/空白 の3値をとるデータ構造が頻出するので、3の累乗計算が頻出します。

それに関して、U野が3の累乗をC++テンプレートによって計算する方法を編み出した。
コード中に


<?php
pow3<5>
 ?>

とか書けば、その部分が3の5乗の定数に置き換わる。

それじゃ・・・と思って、いろいろ。
NのM乗, Nの階乗, ・・・あれこれは既にネット上にあるぞ?

それでもめげずに・・・
素数判定。
返り値だと、doubleとかも扱えることに気づいてルート
そして、ルートを採用した高速な素数判定。
コンパイル時間の高!速!化!

そして・・・数値計算といえば円周率!!
円周率の展開公式をテンプレートで実装して、
円周率計算。
GCCの制限(展開は499段まで)により3.139以上の精度向上は不可能かと思われたが、U野の思い付きにより解決。3.14達成!!

何かないかと探してみて・・・sin関数!これだ!初めてちょっとだけ実用かもしれなくなってきた。


<?php
sin(60)
 ?>

とか、


<?php
sin(30)
 ?>

とかだと定数化はたぶん行われないけど・・・


<?php
sin<30,4>
 ?>

なら確実に定数化されます。はい。角度を変えたいときに、毎回電卓で計算する必要なし。ちょっと有用・・・・かも!?

まぁ、そんな感じで。

前々からつけてみたかった名前
Ohkura Template Library
をつけてみた。


<?php
using namespace OTL;
 ?>

詳しい事は実装者U野のページに。

OTLとは関係ありません。たぶん・・・;

Leave a Reply

Your email address will not be published.