AM中波放送用SDR.CICフィルタのみを使用.CQ出版社「トランジスタ技術」誌,2021年5月号に掲載

Dependencies:   mbed

Committer:
MikamiUitOpen
Date:
Sat Aug 29 11:26:29 2020 +0000
Revision:
0:7a653530c8ce
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:7a653530c8ce 1 //--------------------------------------------------------------
MikamiUitOpen 0:7a653530c8ce 2 // 高速低精度 sin 計算
MikamiUitOpen 0:7a653530c8ce 3 // sin(πx/2), -2< = x <= 2 を計算する
MikamiUitOpen 0:7a653530c8ce 4 // 誤差の絶対値の最大値:6.7706E-5
MikamiUitOpen 0:7a653530c8ce 5 //
MikamiUitOpen 0:7a653530c8ce 6 // 係数はミニマックス近似で求めたもの.ただし,誤差は絶対誤差で評価した
MikamiUitOpen 0:7a653530c8ce 7 //
MikamiUitOpen 0:7a653530c8ce 8 // 2020/08/11, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 0:7a653530c8ce 9 //--------------------------------------------------------------
MikamiUitOpen 0:7a653530c8ce 10
MikamiUitOpen 0:7a653530c8ce 11 #include "mbed.h"
MikamiUitOpen 0:7a653530c8ce 12
MikamiUitOpen 0:7a653530c8ce 13 #ifndef FAST_SINE_LOW_PRECISION_HPP
MikamiUitOpen 0:7a653530c8ce 14 #define FAST_SINE_LOW_PRECISION_HPP
MikamiUitOpen 0:7a653530c8ce 15
MikamiUitOpen 0:7a653530c8ce 16 namespace Mikami
MikamiUitOpen 0:7a653530c8ce 17 {
MikamiUitOpen 0:7a653530c8ce 18 float FastSin(float x)
MikamiUitOpen 0:7a653530c8ce 19 {
MikamiUitOpen 0:7a653530c8ce 20 static const float A1 = 1.57032033f;
MikamiUitOpen 0:7a653530c8ce 21 static const float A3 = -0.64211427f;
MikamiUitOpen 0:7a653530c8ce 22 static const float A5 = 0.07186159f;
MikamiUitOpen 0:7a653530c8ce 23
MikamiUitOpen 0:7a653530c8ce 24 x = (x > 1.0f) ? 2.0f - x : x;
MikamiUitOpen 0:7a653530c8ce 25 x = (x < -1.0f) ? -2.0f - x : x;
MikamiUitOpen 0:7a653530c8ce 26
MikamiUitOpen 0:7a653530c8ce 27 float x2 = x*x;
MikamiUitOpen 0:7a653530c8ce 28 float sinx = ((A5*x2 + A3)*x2 + A1)*x;
MikamiUitOpen 0:7a653530c8ce 29
MikamiUitOpen 0:7a653530c8ce 30 return sinx;
MikamiUitOpen 0:7a653530c8ce 31 }
MikamiUitOpen 0:7a653530c8ce 32 }
MikamiUitOpen 0:7a653530c8ce 33 #endif // FAST_SINE_LOW_PRECISION_HPP