Всем привет. Есть код, который, который делает вот так:
for (unsigned int k = 0; k < 50000; ++k) {
float curSample = (float)samples.get()[k];
complexSamples.get()[2 * k] = mycos((float)k*K)*curSample;
complexSamples.get()[2 * k + 1] = mysin((float)k*K)*curSample;
}
И это выполняется ну ооочень долго.
Если делать так:
inline float mysin(const float& x) {
float x3 = x*x*x;
return x - x3/6 + x3*x*x/120 - x3*x3*x/5040;
}
inline float mycos(const float& x) {
float _sin = mysin(x);
return sqrt(1-_sin*_sin);
}
, то время более-менее сокращается, но опять же не устраивает.
Табличный метод почему-то работает медленнее серии Тейлора.
Хочется, чтобы этот код мог вызываться по 500 раз в секунду и успевать работать долгое время на Intel Xeon 1220l v3.