ついでに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<9>::val - y*y*y*y*y * y*y*y*y*y * y*y/Factorial<12>::val; }
オーバーフローを防ぐために
template<> struct Factorial<8> { enum{val = 8*7*6*5*4*3*2}; };
みたいなのをつくってみたけれど一緒だった(40320でも一緒の結果)。多分int幅を超えてしまったのだろう・・・・。よってメタプログラミングで12よりも大きな階乗は私の力では求めることは不可能だった(:D)rz