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

Dependents:   NuMidi401 NuFM401

AOTTrigon.h

Committer:
kb10uy
Date:
2014-12-26
Revision:
5:2a67061cea78
Parent:
4:c15b45812c25
Child:
6:fddf871eba15

File content as of revision 5:2a67061cea78:

#pragma once
#include "math.h"

/** AOTTrigon class
 * AOT計算によって三角関数の計算を高速化します。
 */
class AOTTrigon
{
public:
    AOTTrigon();

    inline double sin(double);
    inline double cos(double);
    inline double tan(double);

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

inline double AOTTrigon::sin(double x)
{
    return t_sin[((int)(x * rate)) & 0xFF];
}
inline double AOTTrigon::cos(double x)
{
    return sin(x + pi / 2.0);
}
inline double AOTTrigon::tan(double x)
{
    return sin(x) / cos(x);
}