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

Dependents:   NuMidi401 NuFM401

AOTTrigon.h

Committer:
kb10uy
Date:
2014-12-23
Revision:
2:d8c9637a5f09
Parent:
1:f1e55d228f6a
Child:
3:ba78a1dd8b55

File content as of revision 2:d8c9637a5f09:

#pragma once
#include "math.h"

/** AOTTrigon class
 * AOT計算によって三角関数の計算を高速化します。
 */
class AOTTrigon
{
public:
    /** AOTTrigon コンストラクター
     * @param divide 分割数
     */
    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);
    }

private:
    double *t_sin;
    int division;
    double rate;
};