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

Dependents:   NuMidi401 NuFM401

AOTTrigon.h

Committer:
kb10uy
Date:
2014-12-29
Revision:
7:eed80268ab34
Parent:
6:fddf871eba15
Child:
8:b771ac4871bb

File content as of revision 7:eed80268ab34:

#pragma once
#include "math.h"

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

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

private:
    float *t_sin;
    float rate;
    const float pi;
};

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