AOT計算で呼び出し自体を早くする三角関数

Dependents:   NuMidi401 NuFM401

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