AOT計算で呼び出し自体を早くする三角関数
Diff: AOTTrigon.h
- Revision:
- 3:ba78a1dd8b55
- Parent:
- 2:d8c9637a5f09
- Child:
- 4:c15b45812c25
--- a/AOTTrigon.h Tue Dec 23 05:32:28 2014 +0000 +++ b/AOTTrigon.h Thu Dec 25 04:41:19 2014 +0000 @@ -12,18 +12,26 @@ */ AOTTrigon(int divide=256); - inline double sine(double x) { - return t_sin[(int)(fmod(x,3.14159265358979323846264*2.0)*rate)]; - } - inline double cosine(double x) { - return sine(x+3.14159265358979323846264/2.0); - } - inline double tangent(double x) { - return sine(x)/cosine(x); - } + inline double sin(double); + inline double cos(double); + inline double tan(double); private: double *t_sin; int division; double rate; + const double pi; }; + +inline double AOTTrigon::sin(double x) +{ + return t_sin[((int)(x * rate)) & (division - 1)]; +} +inline double AOTTrigon::cos(double x) +{ + return sin(x + pi / 2.0); +} +inline double AOTTrigon::tan(double x) +{ + return sin(x) / cos(x); +} \ No newline at end of file