2011-02-25から1日間の記事一覧

メタプログラミングでcos : 追記

2段階進めたら精度が上がるとか書きましたが、アレは嘘です。いや、上がりますが、それ以上に円周率の値の精度が悪すぎた。そしてVS2010でテストしたところ演算中にオーバーフローします。故に、円周率の精度を上げた以下のコードにすると精度があがりまし…

メタプログラミングでcos

メタプログラミングの練習にcosを求めるコードを作ってみた。もう2段階くらいテーラー展開をすると更に精度は上がるだろうが、今のままでも普通に使う分には十分だ。 #include<iostream> #include<boost/format.hpp> //const double PI = 3.141592653; template<unsigned int x> struct Factorial { enum </unsigned></boost/format.hpp></iostream>…

ついでにsin

ついでにsinも求めてみた。それだけ template<int x> inline const double get_sin() { const double y = 0.00000001*x; return y - y*y*y/Factorial<3>::val + y*y*y*y*y/Factorial<5>::val - y*y*y*y*y * y*y/Factorial<7>::val + y*y*y*y*y * y*y*y*y/Factorial<</int>…