|
|
|
|
|
|
|
|
|
|
|
|
|
#include <math.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
|
|
#include "fftw.h"
|
|
|
|
static const int AUP_FFTW_g_ip256[] = {64, 64, 0, 16, 0, 64, 32, 96};
|
|
static const float AUP_FFTW_g_w256[] = {
|
|
1.000000e+00f, 7.071068e-01f, 5.006030e-01f, 5.054710e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.024193e-01f, 5.224986e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.097956e-01f, 6.013449e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 9.238795e-01f, 3.826834e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 0.000000e+00f, 0.000000e+00f,
|
|
7.071068e-01f, 4.998494e-01f, 4.993977e-01f, 4.986452e-01f,
|
|
4.975924e-01f, 4.962398e-01f, 4.945883e-01f, 4.926388e-01f,
|
|
4.903926e-01f, 4.878511e-01f, 4.850156e-01f, 4.818880e-01f,
|
|
4.784702e-01f, 4.747641e-01f, 4.707720e-01f, 4.664964e-01f,
|
|
4.619398e-01f, 4.571049e-01f, 4.519946e-01f, 4.466122e-01f,
|
|
4.409606e-01f, 4.350435e-01f, 4.288643e-01f, 4.224268e-01f,
|
|
4.157348e-01f, 4.087924e-01f, 4.016038e-01f, 3.941732e-01f,
|
|
3.865052e-01f, 3.786044e-01f, 3.704756e-01f, 3.621235e-01f,
|
|
3.535534e-01f, 3.447703e-01f, 3.357795e-01f, 3.265864e-01f,
|
|
3.171966e-01f, 3.076158e-01f, 2.978497e-01f, 2.879041e-01f,
|
|
2.777851e-01f, 2.674988e-01f, 2.570514e-01f, 2.464491e-01f,
|
|
2.356984e-01f, 2.248057e-01f, 2.137775e-01f, 2.026207e-01f,
|
|
1.913417e-01f, 1.799475e-01f, 1.684449e-01f, 1.568409e-01f,
|
|
1.451423e-01f, 1.333564e-01f, 1.214901e-01f, 1.095506e-01f,
|
|
9.754516e-02f, 8.548094e-02f, 7.336524e-02f, 6.120534e-02f,
|
|
4.900857e-02f, 3.678228e-02f, 2.453384e-02f, 1.227061e-02f};
|
|
static const int AUP_FFTW_g_ip512[] = {128, 128, 0, 16, 0, 64, 32, 96};
|
|
static const float AUP_FFTW_g_w512[] = {
|
|
1.000000e+00f, 7.071068e-01f, 5.001506e-01f, 5.013585e-01f,
|
|
9.987955e-01f, 4.906767e-02f, 9.891765e-01f, -1.467305e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.891765e-01f, 1.467305e-01f, 9.039893e-01f, -4.275551e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.700313e-01f, 2.429802e-01f, 7.409511e-01f, -6.715590e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.415441e-01f, 3.368899e-01f, 5.141027e-01f, -8.577286e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
9.039893e-01f, 4.275551e-01f, 2.429802e-01f, -9.700313e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.577286e-01f, 5.141027e-01f, -4.906767e-02f, -9.987955e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
8.032075e-01f, 5.956993e-01f, -3.368899e-01f, -9.415441e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
7.409511e-01f, 6.715590e-01f, -5.956993e-01f, -8.032075e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.006030e-01f, 5.054710e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.024193e-01f, 5.224986e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.097956e-01f, 6.013449e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 9.238795e-01f, 3.826834e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 0.000000e+00f, 0.000000e+00f,
|
|
7.071068e-01f, 4.999624e-01f, 4.998494e-01f, 4.996612e-01f,
|
|
4.993977e-01f, 4.990591e-01f, 4.986452e-01f, 4.981563e-01f,
|
|
4.975924e-01f, 4.969535e-01f, 4.962398e-01f, 4.954513e-01f,
|
|
4.945883e-01f, 4.936507e-01f, 4.926388e-01f, 4.915527e-01f,
|
|
4.903926e-01f, 4.891587e-01f, 4.878511e-01f, 4.864700e-01f,
|
|
4.850156e-01f, 4.834882e-01f, 4.818880e-01f, 4.802153e-01f,
|
|
4.784702e-01f, 4.766530e-01f, 4.747641e-01f, 4.728037e-01f,
|
|
4.707720e-01f, 4.686695e-01f, 4.664964e-01f, 4.642530e-01f,
|
|
4.619398e-01f, 4.595569e-01f, 4.571049e-01f, 4.545840e-01f,
|
|
4.519946e-01f, 4.493372e-01f, 4.466122e-01f, 4.438198e-01f,
|
|
4.409606e-01f, 4.380350e-01f, 4.350435e-01f, 4.319864e-01f,
|
|
4.288643e-01f, 4.256776e-01f, 4.224268e-01f, 4.191124e-01f,
|
|
4.157348e-01f, 4.122947e-01f, 4.087924e-01f, 4.052286e-01f,
|
|
4.016038e-01f, 3.979185e-01f, 3.941732e-01f, 3.903686e-01f,
|
|
3.865052e-01f, 3.825836e-01f, 3.786044e-01f, 3.745682e-01f,
|
|
3.704756e-01f, 3.663271e-01f, 3.621235e-01f, 3.578654e-01f,
|
|
3.535534e-01f, 3.491881e-01f, 3.447703e-01f, 3.403005e-01f,
|
|
3.357795e-01f, 3.312079e-01f, 3.265864e-01f, 3.219158e-01f,
|
|
3.171966e-01f, 3.124297e-01f, 3.076158e-01f, 3.027555e-01f,
|
|
2.978497e-01f, 2.928989e-01f, 2.879041e-01f, 2.828659e-01f,
|
|
2.777851e-01f, 2.726625e-01f, 2.674988e-01f, 2.622948e-01f,
|
|
2.570514e-01f, 2.517692e-01f, 2.464491e-01f, 2.410919e-01f,
|
|
2.356984e-01f, 2.302694e-01f, 2.248057e-01f, 2.193081e-01f,
|
|
2.137775e-01f, 2.082148e-01f, 2.026207e-01f, 1.969960e-01f,
|
|
1.913417e-01f, 1.856586e-01f, 1.799475e-01f, 1.742093e-01f,
|
|
1.684449e-01f, 1.626551e-01f, 1.568409e-01f, 1.510030e-01f,
|
|
1.451423e-01f, 1.392598e-01f, 1.333564e-01f, 1.274328e-01f,
|
|
1.214901e-01f, 1.155291e-01f, 1.095506e-01f, 1.035557e-01f,
|
|
9.754516e-02f, 9.151994e-02f, 8.548094e-02f, 7.942907e-02f,
|
|
7.336524e-02f, 6.729035e-02f, 6.120534e-02f, 5.511110e-02f,
|
|
4.900857e-02f, 4.289866e-02f, 3.678228e-02f, 3.066037e-02f,
|
|
2.453384e-02f, 1.840361e-02f, 1.227061e-02f, 6.135769e-03f};
|
|
static const int AUP_FFTW_g_ip1024[] = {256, 256, 0, 16, 0, 64, 32, 96,
|
|
0, 256, 128, 384, 64, 320, 192, 448};
|
|
static const float AUP_FFTW_g_w1024[] = {
|
|
1.000000e+00f, 7.071068e-01f, 5.000377e-01f, 5.003390e-01f,
|
|
9.996988e-01f, 2.454123e-02f, 9.972905e-01f, -7.356456e-02f,
|
|
9.987955e-01f, 4.906767e-02f, 9.891765e-01f, -1.467305e-01f,
|
|
9.972905e-01f, 7.356456e-02f, 9.757021e-01f, -2.191012e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.924795e-01f, 1.224107e-01f, 9.329928e-01f, -3.598950e-01f,
|
|
9.891765e-01f, 1.467305e-01f, 9.039893e-01f, -4.275551e-01f,
|
|
9.852776e-01f, 1.709619e-01f, 8.700870e-01f, -4.928982e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.757021e-01f, 2.191012e-01f, 7.883464e-01f, -6.152316e-01f,
|
|
9.700313e-01f, 2.429802e-01f, 7.409511e-01f, -6.715590e-01f,
|
|
9.637761e-01f, 2.667128e-01f, 6.895405e-01f, -7.242471e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.495282e-01f, 3.136817e-01f, 5.758082e-01f, -8.175848e-01f,
|
|
9.415441e-01f, 3.368899e-01f, 5.141027e-01f, -8.577286e-01f,
|
|
9.329928e-01f, 3.598950e-01f, 4.496113e-01f, -8.932243e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
9.142098e-01f, 4.052413e-01f, 3.136817e-01f, -9.495282e-01f,
|
|
9.039893e-01f, 4.275551e-01f, 2.429802e-01f, -9.700313e-01f,
|
|
8.932243e-01f, 4.496113e-01f, 1.709619e-01f, -9.852776e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.700870e-01f, 4.928982e-01f, 2.454123e-02f, -9.996988e-01f,
|
|
8.577286e-01f, 5.141027e-01f, -4.906767e-02f, -9.987955e-01f,
|
|
8.448536e-01f, 5.349976e-01f, -1.224107e-01f, -9.924795e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
8.175848e-01f, 5.758082e-01f, -2.667128e-01f, -9.637761e-01f,
|
|
8.032075e-01f, 5.956993e-01f, -3.368899e-01f, -9.415441e-01f,
|
|
7.883464e-01f, 6.152316e-01f, -4.052413e-01f, -9.142098e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
7.572088e-01f, 6.531728e-01f, -5.349976e-01f, -8.448536e-01f,
|
|
7.409511e-01f, 6.715590e-01f, -5.956993e-01f, -8.032075e-01f,
|
|
7.242471e-01f, 6.895405e-01f, -6.531728e-01f, -7.572088e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.001506e-01f, 5.013585e-01f,
|
|
9.987955e-01f, 4.906767e-02f, 9.891765e-01f, -1.467305e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.891765e-01f, 1.467305e-01f, 9.039893e-01f, -4.275551e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.700313e-01f, 2.429802e-01f, 7.409511e-01f, -6.715590e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.415441e-01f, 3.368899e-01f, 5.141027e-01f, -8.577286e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
9.039893e-01f, 4.275551e-01f, 2.429802e-01f, -9.700313e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.577286e-01f, 5.141027e-01f, -4.906767e-02f, -9.987955e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
8.032075e-01f, 5.956993e-01f, -3.368899e-01f, -9.415441e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
7.409511e-01f, 6.715590e-01f, -5.956993e-01f, -8.032075e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.006030e-01f, 5.054710e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.024193e-01f, 5.224986e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.097956e-01f, 6.013449e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 9.238795e-01f, 3.826834e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 0.000000e+00f, 0.000000e+00f,
|
|
7.071068e-01f, 4.999906e-01f, 4.999624e-01f, 4.999153e-01f,
|
|
4.998494e-01f, 4.997647e-01f, 4.996612e-01f, 4.995389e-01f,
|
|
4.993977e-01f, 4.992378e-01f, 4.990591e-01f, 4.988615e-01f,
|
|
4.986452e-01f, 4.984101e-01f, 4.981563e-01f, 4.978837e-01f,
|
|
4.975924e-01f, 4.972823e-01f, 4.969535e-01f, 4.966060e-01f,
|
|
4.962398e-01f, 4.958549e-01f, 4.954513e-01f, 4.950291e-01f,
|
|
4.945883e-01f, 4.941288e-01f, 4.936507e-01f, 4.931540e-01f,
|
|
4.926388e-01f, 4.921050e-01f, 4.915527e-01f, 4.909819e-01f,
|
|
4.903926e-01f, 4.897849e-01f, 4.891587e-01f, 4.885141e-01f,
|
|
4.878511e-01f, 4.871697e-01f, 4.864700e-01f, 4.857519e-01f,
|
|
4.850156e-01f, 4.842610e-01f, 4.834882e-01f, 4.826972e-01f,
|
|
4.818880e-01f, 4.810607e-01f, 4.802153e-01f, 4.793517e-01f,
|
|
4.784702e-01f, 4.775706e-01f, 4.766530e-01f, 4.757175e-01f,
|
|
4.747641e-01f, 4.737928e-01f, 4.728037e-01f, 4.717967e-01f,
|
|
4.707720e-01f, 4.697296e-01f, 4.686695e-01f, 4.675918e-01f,
|
|
4.664964e-01f, 4.653835e-01f, 4.642530e-01f, 4.631051e-01f,
|
|
4.619398e-01f, 4.607570e-01f, 4.595569e-01f, 4.583395e-01f,
|
|
4.571049e-01f, 4.558530e-01f, 4.545840e-01f, 4.532979e-01f,
|
|
4.519946e-01f, 4.506744e-01f, 4.493372e-01f, 4.479831e-01f,
|
|
4.466122e-01f, 4.452244e-01f, 4.438198e-01f, 4.423985e-01f,
|
|
4.409606e-01f, 4.395061e-01f, 4.380350e-01f, 4.365475e-01f,
|
|
4.350435e-01f, 4.335231e-01f, 4.319864e-01f, 4.304335e-01f,
|
|
4.288643e-01f, 4.272790e-01f, 4.256776e-01f, 4.240602e-01f,
|
|
4.224268e-01f, 4.207775e-01f, 4.191124e-01f, 4.174314e-01f,
|
|
4.157348e-01f, 4.140225e-01f, 4.122947e-01f, 4.105513e-01f,
|
|
4.087924e-01f, 4.070182e-01f, 4.052286e-01f, 4.034238e-01f,
|
|
4.016038e-01f, 3.997686e-01f, 3.979185e-01f, 3.960533e-01f,
|
|
3.941732e-01f, 3.922783e-01f, 3.903686e-01f, 3.884442e-01f,
|
|
3.865052e-01f, 3.845517e-01f, 3.825836e-01f, 3.806012e-01f,
|
|
3.786044e-01f, 3.765934e-01f, 3.745682e-01f, 3.725289e-01f,
|
|
3.704756e-01f, 3.684083e-01f, 3.663271e-01f, 3.642322e-01f,
|
|
3.621235e-01f, 3.600013e-01f, 3.578654e-01f, 3.557161e-01f,
|
|
3.535534e-01f, 3.513774e-01f, 3.491881e-01f, 3.469857e-01f,
|
|
3.447703e-01f, 3.425418e-01f, 3.403005e-01f, 3.380464e-01f,
|
|
3.357795e-01f, 3.335000e-01f, 3.312079e-01f, 3.289033e-01f,
|
|
3.265864e-01f, 3.242572e-01f, 3.219158e-01f, 3.195622e-01f,
|
|
3.171966e-01f, 3.148191e-01f, 3.124297e-01f, 3.100286e-01f,
|
|
3.076158e-01f, 3.051914e-01f, 3.027555e-01f, 3.003082e-01f,
|
|
2.978497e-01f, 2.953799e-01f, 2.928989e-01f, 2.904070e-01f,
|
|
2.879041e-01f, 2.853904e-01f, 2.828659e-01f, 2.803308e-01f,
|
|
2.777851e-01f, 2.752290e-01f, 2.726625e-01f, 2.700857e-01f,
|
|
2.674988e-01f, 2.649018e-01f, 2.622948e-01f, 2.596780e-01f,
|
|
2.570514e-01f, 2.544151e-01f, 2.517692e-01f, 2.491138e-01f,
|
|
2.464491e-01f, 2.437751e-01f, 2.410919e-01f, 2.383996e-01f,
|
|
2.356984e-01f, 2.329882e-01f, 2.302694e-01f, 2.275418e-01f,
|
|
2.248057e-01f, 2.220611e-01f, 2.193081e-01f, 2.165469e-01f,
|
|
2.137775e-01f, 2.110001e-01f, 2.082148e-01f, 2.054216e-01f,
|
|
2.026207e-01f, 1.998121e-01f, 1.969960e-01f, 1.941725e-01f,
|
|
1.913417e-01f, 1.885037e-01f, 1.856586e-01f, 1.828065e-01f,
|
|
1.799475e-01f, 1.770818e-01f, 1.742093e-01f, 1.713304e-01f,
|
|
1.684449e-01f, 1.655532e-01f, 1.626551e-01f, 1.597510e-01f,
|
|
1.568409e-01f, 1.539248e-01f, 1.510030e-01f, 1.480754e-01f,
|
|
1.451423e-01f, 1.422038e-01f, 1.392598e-01f, 1.363107e-01f,
|
|
1.333564e-01f, 1.303971e-01f, 1.274328e-01f, 1.244638e-01f,
|
|
1.214901e-01f, 1.185118e-01f, 1.155291e-01f, 1.125420e-01f,
|
|
1.095506e-01f, 1.065552e-01f, 1.035557e-01f, 1.005523e-01f,
|
|
9.754516e-02f, 9.453433e-02f, 9.151994e-02f, 8.850211e-02f,
|
|
8.548094e-02f, 8.245656e-02f, 7.942907e-02f, 7.639859e-02f,
|
|
7.336524e-02f, 7.032912e-02f, 6.729035e-02f, 6.424906e-02f,
|
|
6.120534e-02f, 5.815932e-02f, 5.511110e-02f, 5.206082e-02f,
|
|
4.900857e-02f, 4.595448e-02f, 4.289866e-02f, 3.984122e-02f,
|
|
3.678228e-02f, 3.372196e-02f, 3.066037e-02f, 2.759762e-02f,
|
|
2.453384e-02f, 2.146913e-02f, 1.840361e-02f, 1.533740e-02f,
|
|
1.227061e-02f, 9.203365e-03f, 6.135769e-03f, 3.067942e-03f};
|
|
static const int AUP_FFTW_g_ip2048[] = {512, 512, 0, 16, 0, 64, 32, 96,
|
|
0, 256, 128, 384, 64, 320, 192, 448};
|
|
static const float AUP_FFTW_g_w2048[] = {
|
|
1.000000e+00f, 7.071068e-01f, 5.000094e-01f, 5.000847e-01f,
|
|
9.999247e-01f, 1.227154e-02f, 9.993224e-01f, -3.680722e-02f,
|
|
9.996988e-01f, 2.454123e-02f, 9.972905e-01f, -7.356456e-02f,
|
|
9.993224e-01f, 3.680722e-02f, 9.939070e-01f, -1.102222e-01f,
|
|
9.987955e-01f, 4.906767e-02f, 9.891765e-01f, -1.467305e-01f,
|
|
9.981181e-01f, 6.132074e-02f, 9.831055e-01f, -1.830399e-01f,
|
|
9.972905e-01f, 7.356456e-02f, 9.757021e-01f, -2.191012e-01f,
|
|
9.963126e-01f, 8.579731e-02f, 9.669765e-01f, -2.548657e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.939070e-01f, 1.102222e-01f, 9.456073e-01f, -3.253103e-01f,
|
|
9.924795e-01f, 1.224107e-01f, 9.329928e-01f, -3.598950e-01f,
|
|
9.909026e-01f, 1.345807e-01f, 9.191139e-01f, -3.939920e-01f,
|
|
9.891765e-01f, 1.467305e-01f, 9.039893e-01f, -4.275551e-01f,
|
|
9.873014e-01f, 1.588581e-01f, 8.876396e-01f, -4.605387e-01f,
|
|
9.852776e-01f, 1.709619e-01f, 8.700870e-01f, -4.928982e-01f,
|
|
9.831055e-01f, 1.830399e-01f, 8.513552e-01f, -5.245897e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.783174e-01f, 2.071114e-01f, 8.104572e-01f, -5.857979e-01f,
|
|
9.757021e-01f, 2.191012e-01f, 7.883464e-01f, -6.152316e-01f,
|
|
9.729400e-01f, 2.310581e-01f, 7.651673e-01f, -6.438315e-01f,
|
|
9.700313e-01f, 2.429802e-01f, 7.409511e-01f, -6.715590e-01f,
|
|
9.669765e-01f, 2.548657e-01f, 7.157308e-01f, -6.983762e-01f,
|
|
9.637761e-01f, 2.667128e-01f, 6.895405e-01f, -7.242471e-01f,
|
|
9.604305e-01f, 2.785197e-01f, 6.624158e-01f, -7.491364e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.533060e-01f, 3.020059e-01f, 6.055110e-01f, -7.958369e-01f,
|
|
9.495282e-01f, 3.136817e-01f, 5.758082e-01f, -8.175848e-01f,
|
|
9.456073e-01f, 3.253103e-01f, 5.453250e-01f, -8.382247e-01f,
|
|
9.415441e-01f, 3.368899e-01f, 5.141027e-01f, -8.577286e-01f,
|
|
9.373390e-01f, 3.484187e-01f, 4.821838e-01f, -8.760701e-01f,
|
|
9.329928e-01f, 3.598950e-01f, 4.496113e-01f, -8.932243e-01f,
|
|
9.285061e-01f, 3.713172e-01f, 4.164296e-01f, -9.091680e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
9.191139e-01f, 3.939920e-01f, 3.484187e-01f, -9.373390e-01f,
|
|
9.142098e-01f, 4.052413e-01f, 3.136817e-01f, -9.495282e-01f,
|
|
9.091680e-01f, 4.164296e-01f, 2.785197e-01f, -9.604305e-01f,
|
|
9.039893e-01f, 4.275551e-01f, 2.429802e-01f, -9.700313e-01f,
|
|
8.986745e-01f, 4.386162e-01f, 2.071114e-01f, -9.783174e-01f,
|
|
8.932243e-01f, 4.496113e-01f, 1.709619e-01f, -9.852776e-01f,
|
|
8.876396e-01f, 4.605387e-01f, 1.345807e-01f, -9.909026e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.760701e-01f, 4.821838e-01f, 6.132074e-02f, -9.981181e-01f,
|
|
8.700870e-01f, 4.928982e-01f, 2.454123e-02f, -9.996988e-01f,
|
|
8.639729e-01f, 5.035384e-01f, -1.227154e-02f, -9.999247e-01f,
|
|
8.577286e-01f, 5.141027e-01f, -4.906767e-02f, -9.987955e-01f,
|
|
8.513552e-01f, 5.245897e-01f, -8.579731e-02f, -9.963126e-01f,
|
|
8.448536e-01f, 5.349976e-01f, -1.224107e-01f, -9.924795e-01f,
|
|
8.382247e-01f, 5.453250e-01f, -1.588581e-01f, -9.873014e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
8.245893e-01f, 5.657318e-01f, -2.310581e-01f, -9.729400e-01f,
|
|
8.175848e-01f, 5.758082e-01f, -2.667128e-01f, -9.637761e-01f,
|
|
8.104572e-01f, 5.857979e-01f, -3.020059e-01f, -9.533060e-01f,
|
|
8.032075e-01f, 5.956993e-01f, -3.368899e-01f, -9.415441e-01f,
|
|
7.958369e-01f, 6.055110e-01f, -3.713172e-01f, -9.285061e-01f,
|
|
7.883464e-01f, 6.152316e-01f, -4.052413e-01f, -9.142098e-01f,
|
|
7.807372e-01f, 6.248595e-01f, -4.386162e-01f, -8.986745e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
7.651673e-01f, 6.438315e-01f, -5.035384e-01f, -8.639729e-01f,
|
|
7.572088e-01f, 6.531728e-01f, -5.349976e-01f, -8.448536e-01f,
|
|
7.491364e-01f, 6.624158e-01f, -5.657318e-01f, -8.245893e-01f,
|
|
7.409511e-01f, 6.715590e-01f, -5.956993e-01f, -8.032075e-01f,
|
|
7.326543e-01f, 6.806010e-01f, -6.248595e-01f, -7.807372e-01f,
|
|
7.242471e-01f, 6.895405e-01f, -6.531728e-01f, -7.572088e-01f,
|
|
7.157308e-01f, 6.983762e-01f, -6.806010e-01f, -7.326543e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.000377e-01f, 5.003390e-01f,
|
|
9.996988e-01f, 2.454123e-02f, 9.972905e-01f, -7.356456e-02f,
|
|
9.987955e-01f, 4.906767e-02f, 9.891765e-01f, -1.467305e-01f,
|
|
9.972905e-01f, 7.356456e-02f, 9.757021e-01f, -2.191012e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.924795e-01f, 1.224107e-01f, 9.329928e-01f, -3.598950e-01f,
|
|
9.891765e-01f, 1.467305e-01f, 9.039893e-01f, -4.275551e-01f,
|
|
9.852776e-01f, 1.709619e-01f, 8.700870e-01f, -4.928982e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.757021e-01f, 2.191012e-01f, 7.883464e-01f, -6.152316e-01f,
|
|
9.700313e-01f, 2.429802e-01f, 7.409511e-01f, -6.715590e-01f,
|
|
9.637761e-01f, 2.667128e-01f, 6.895405e-01f, -7.242471e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.495282e-01f, 3.136817e-01f, 5.758082e-01f, -8.175848e-01f,
|
|
9.415441e-01f, 3.368899e-01f, 5.141027e-01f, -8.577286e-01f,
|
|
9.329928e-01f, 3.598950e-01f, 4.496113e-01f, -8.932243e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
9.142098e-01f, 4.052413e-01f, 3.136817e-01f, -9.495282e-01f,
|
|
9.039893e-01f, 4.275551e-01f, 2.429802e-01f, -9.700313e-01f,
|
|
8.932243e-01f, 4.496113e-01f, 1.709619e-01f, -9.852776e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.700870e-01f, 4.928982e-01f, 2.454123e-02f, -9.996988e-01f,
|
|
8.577286e-01f, 5.141027e-01f, -4.906767e-02f, -9.987955e-01f,
|
|
8.448536e-01f, 5.349976e-01f, -1.224107e-01f, -9.924795e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
8.175848e-01f, 5.758082e-01f, -2.667128e-01f, -9.637761e-01f,
|
|
8.032075e-01f, 5.956993e-01f, -3.368899e-01f, -9.415441e-01f,
|
|
7.883464e-01f, 6.152316e-01f, -4.052413e-01f, -9.142098e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
7.572088e-01f, 6.531728e-01f, -5.349976e-01f, -8.448536e-01f,
|
|
7.409511e-01f, 6.715590e-01f, -5.956993e-01f, -8.032075e-01f,
|
|
7.242471e-01f, 6.895405e-01f, -6.531728e-01f, -7.572088e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.001506e-01f, 5.013585e-01f,
|
|
9.987955e-01f, 4.906767e-02f, 9.891765e-01f, -1.467305e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.891765e-01f, 1.467305e-01f, 9.039893e-01f, -4.275551e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.700313e-01f, 2.429802e-01f, 7.409511e-01f, -6.715590e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.415441e-01f, 3.368899e-01f, 5.141027e-01f, -8.577286e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
9.039893e-01f, 4.275551e-01f, 2.429802e-01f, -9.700313e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.577286e-01f, 5.141027e-01f, -4.906767e-02f, -9.987955e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
8.032075e-01f, 5.956993e-01f, -3.368899e-01f, -9.415441e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
7.409511e-01f, 6.715590e-01f, -5.956993e-01f, -8.032075e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.006030e-01f, 5.054710e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.024193e-01f, 5.224986e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.097956e-01f, 6.013449e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 9.238795e-01f, 3.826834e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 0.000000e+00f, 0.000000e+00f,
|
|
7.071068e-01f, 4.999976e-01f, 4.999906e-01f, 4.999788e-01f,
|
|
4.999624e-01f, 4.999412e-01f, 4.999153e-01f, 4.998847e-01f,
|
|
4.998494e-01f, 4.998094e-01f, 4.997647e-01f, 4.997153e-01f,
|
|
4.996612e-01f, 4.996024e-01f, 4.995389e-01f, 4.994706e-01f,
|
|
4.993977e-01f, 4.993201e-01f, 4.992378e-01f, 4.991508e-01f,
|
|
4.990591e-01f, 4.989626e-01f, 4.988615e-01f, 4.987557e-01f,
|
|
4.986452e-01f, 4.985300e-01f, 4.984101e-01f, 4.982856e-01f,
|
|
4.981563e-01f, 4.980224e-01f, 4.978837e-01f, 4.977404e-01f,
|
|
4.975924e-01f, 4.974397e-01f, 4.972823e-01f, 4.971202e-01f,
|
|
4.969535e-01f, 4.967821e-01f, 4.966060e-01f, 4.964252e-01f,
|
|
4.962398e-01f, 4.960497e-01f, 4.958549e-01f, 4.956554e-01f,
|
|
4.954513e-01f, 4.952425e-01f, 4.950291e-01f, 4.948110e-01f,
|
|
4.945883e-01f, 4.943608e-01f, 4.941288e-01f, 4.938921e-01f,
|
|
4.936507e-01f, 4.934047e-01f, 4.931540e-01f, 4.928988e-01f,
|
|
4.926388e-01f, 4.923743e-01f, 4.921050e-01f, 4.918312e-01f,
|
|
4.915527e-01f, 4.912697e-01f, 4.909819e-01f, 4.906896e-01f,
|
|
4.903926e-01f, 4.900911e-01f, 4.897849e-01f, 4.894741e-01f,
|
|
4.891587e-01f, 4.888387e-01f, 4.885141e-01f, 4.881849e-01f,
|
|
4.878511e-01f, 4.875127e-01f, 4.871697e-01f, 4.868221e-01f,
|
|
4.864700e-01f, 4.861132e-01f, 4.857519e-01f, 4.853861e-01f,
|
|
4.850156e-01f, 4.846406e-01f, 4.842610e-01f, 4.838769e-01f,
|
|
4.834882e-01f, 4.830950e-01f, 4.826972e-01f, 4.822949e-01f,
|
|
4.818880e-01f, 4.814766e-01f, 4.810607e-01f, 4.806402e-01f,
|
|
4.802153e-01f, 4.797858e-01f, 4.793517e-01f, 4.789132e-01f,
|
|
4.784702e-01f, 4.780226e-01f, 4.775706e-01f, 4.771140e-01f,
|
|
4.766530e-01f, 4.761875e-01f, 4.757175e-01f, 4.752430e-01f,
|
|
4.747641e-01f, 4.742807e-01f, 4.737928e-01f, 4.733005e-01f,
|
|
4.728037e-01f, 4.723024e-01f, 4.717967e-01f, 4.712866e-01f,
|
|
4.707720e-01f, 4.702530e-01f, 4.697296e-01f, 4.692018e-01f,
|
|
4.686695e-01f, 4.681328e-01f, 4.675918e-01f, 4.670463e-01f,
|
|
4.664964e-01f, 4.659421e-01f, 4.653835e-01f, 4.648204e-01f,
|
|
4.642530e-01f, 4.636813e-01f, 4.631051e-01f, 4.625246e-01f,
|
|
4.619398e-01f, 4.613506e-01f, 4.607570e-01f, 4.601591e-01f,
|
|
4.595569e-01f, 4.589504e-01f, 4.583395e-01f, 4.577244e-01f,
|
|
4.571049e-01f, 4.564811e-01f, 4.558530e-01f, 4.552206e-01f,
|
|
4.545840e-01f, 4.539431e-01f, 4.532979e-01f, 4.526484e-01f,
|
|
4.519946e-01f, 4.513367e-01f, 4.506744e-01f, 4.500079e-01f,
|
|
4.493372e-01f, 4.486623e-01f, 4.479831e-01f, 4.472997e-01f,
|
|
4.466122e-01f, 4.459204e-01f, 4.452244e-01f, 4.445242e-01f,
|
|
4.438198e-01f, 4.431113e-01f, 4.423985e-01f, 4.416817e-01f,
|
|
4.409606e-01f, 4.402354e-01f, 4.395061e-01f, 4.387726e-01f,
|
|
4.380350e-01f, 4.372933e-01f, 4.365475e-01f, 4.357975e-01f,
|
|
4.350435e-01f, 4.342854e-01f, 4.335231e-01f, 4.327568e-01f,
|
|
4.319864e-01f, 4.312120e-01f, 4.304335e-01f, 4.296509e-01f,
|
|
4.288643e-01f, 4.280737e-01f, 4.272790e-01f, 4.264803e-01f,
|
|
4.256776e-01f, 4.248709e-01f, 4.240602e-01f, 4.232455e-01f,
|
|
4.224268e-01f, 4.216041e-01f, 4.207775e-01f, 4.199469e-01f,
|
|
4.191124e-01f, 4.182739e-01f, 4.174314e-01f, 4.165851e-01f,
|
|
4.157348e-01f, 4.148806e-01f, 4.140225e-01f, 4.131605e-01f,
|
|
4.122947e-01f, 4.114249e-01f, 4.105513e-01f, 4.096738e-01f,
|
|
4.087924e-01f, 4.079072e-01f, 4.070182e-01f, 4.061253e-01f,
|
|
4.052286e-01f, 4.043281e-01f, 4.034238e-01f, 4.025157e-01f,
|
|
4.016038e-01f, 4.006881e-01f, 3.997686e-01f, 3.988454e-01f,
|
|
3.979185e-01f, 3.969877e-01f, 3.960533e-01f, 3.951151e-01f,
|
|
3.941732e-01f, 3.932276e-01f, 3.922783e-01f, 3.913253e-01f,
|
|
3.903686e-01f, 3.894083e-01f, 3.884442e-01f, 3.874766e-01f,
|
|
3.865052e-01f, 3.855303e-01f, 3.845517e-01f, 3.835695e-01f,
|
|
3.825836e-01f, 3.815942e-01f, 3.806012e-01f, 3.796046e-01f,
|
|
3.786044e-01f, 3.776007e-01f, 3.765934e-01f, 3.755826e-01f,
|
|
3.745682e-01f, 3.735503e-01f, 3.725289e-01f, 3.715040e-01f,
|
|
3.704756e-01f, 3.694437e-01f, 3.684083e-01f, 3.673694e-01f,
|
|
3.663271e-01f, 3.652814e-01f, 3.642322e-01f, 3.631796e-01f,
|
|
3.621235e-01f, 3.610641e-01f, 3.600013e-01f, 3.589350e-01f,
|
|
3.578654e-01f, 3.567924e-01f, 3.557161e-01f, 3.546364e-01f,
|
|
3.535534e-01f, 3.524670e-01f, 3.513774e-01f, 3.502844e-01f,
|
|
3.491881e-01f, 3.480886e-01f, 3.469857e-01f, 3.458796e-01f,
|
|
3.447703e-01f, 3.436577e-01f, 3.425418e-01f, 3.414228e-01f,
|
|
3.403005e-01f, 3.391750e-01f, 3.380464e-01f, 3.369145e-01f,
|
|
3.357795e-01f, 3.346413e-01f, 3.335000e-01f, 3.323555e-01f,
|
|
3.312079e-01f, 3.300572e-01f, 3.289033e-01f, 3.277464e-01f,
|
|
3.265864e-01f, 3.254233e-01f, 3.242572e-01f, 3.230880e-01f,
|
|
3.219158e-01f, 3.207405e-01f, 3.195622e-01f, 3.183809e-01f,
|
|
3.171966e-01f, 3.160094e-01f, 3.148191e-01f, 3.136259e-01f,
|
|
3.124297e-01f, 3.112306e-01f, 3.100286e-01f, 3.088237e-01f,
|
|
3.076158e-01f, 3.064050e-01f, 3.051914e-01f, 3.039749e-01f,
|
|
3.027555e-01f, 3.015333e-01f, 3.003082e-01f, 2.990804e-01f,
|
|
2.978497e-01f, 2.966161e-01f, 2.953799e-01f, 2.941408e-01f,
|
|
2.928989e-01f, 2.916543e-01f, 2.904070e-01f, 2.891569e-01f,
|
|
2.879041e-01f, 2.866486e-01f, 2.853904e-01f, 2.841295e-01f,
|
|
2.828659e-01f, 2.815997e-01f, 2.803308e-01f, 2.790593e-01f,
|
|
2.777851e-01f, 2.765084e-01f, 2.752290e-01f, 2.739470e-01f,
|
|
2.726625e-01f, 2.713754e-01f, 2.700857e-01f, 2.687935e-01f,
|
|
2.674988e-01f, 2.662016e-01f, 2.649018e-01f, 2.635996e-01f,
|
|
2.622948e-01f, 2.609876e-01f, 2.596780e-01f, 2.583659e-01f,
|
|
2.570514e-01f, 2.557344e-01f, 2.544151e-01f, 2.530933e-01f,
|
|
2.517692e-01f, 2.504427e-01f, 2.491138e-01f, 2.477826e-01f,
|
|
2.464491e-01f, 2.451132e-01f, 2.437751e-01f, 2.424346e-01f,
|
|
2.410919e-01f, 2.397469e-01f, 2.383996e-01f, 2.370501e-01f,
|
|
2.356984e-01f, 2.343444e-01f, 2.329882e-01f, 2.316299e-01f,
|
|
2.302694e-01f, 2.289067e-01f, 2.275418e-01f, 2.261748e-01f,
|
|
2.248057e-01f, 2.234344e-01f, 2.220611e-01f, 2.206856e-01f,
|
|
2.193081e-01f, 2.179285e-01f, 2.165469e-01f, 2.151632e-01f,
|
|
2.137775e-01f, 2.123898e-01f, 2.110001e-01f, 2.096084e-01f,
|
|
2.082148e-01f, 2.068192e-01f, 2.054216e-01f, 2.040221e-01f,
|
|
2.026207e-01f, 2.012173e-01f, 1.998121e-01f, 1.984050e-01f,
|
|
1.969960e-01f, 1.955852e-01f, 1.941725e-01f, 1.927580e-01f,
|
|
1.913417e-01f, 1.899236e-01f, 1.885037e-01f, 1.870820e-01f,
|
|
1.856586e-01f, 1.842334e-01f, 1.828065e-01f, 1.813779e-01f,
|
|
1.799475e-01f, 1.785155e-01f, 1.770818e-01f, 1.756464e-01f,
|
|
1.742093e-01f, 1.727707e-01f, 1.713304e-01f, 1.698884e-01f,
|
|
1.684449e-01f, 1.669998e-01f, 1.655532e-01f, 1.641049e-01f,
|
|
1.626551e-01f, 1.612038e-01f, 1.597510e-01f, 1.582967e-01f,
|
|
1.568409e-01f, 1.553836e-01f, 1.539248e-01f, 1.524646e-01f,
|
|
1.510030e-01f, 1.495399e-01f, 1.480754e-01f, 1.466096e-01f,
|
|
1.451423e-01f, 1.436737e-01f, 1.422038e-01f, 1.407325e-01f,
|
|
1.392598e-01f, 1.377859e-01f, 1.363107e-01f, 1.348342e-01f,
|
|
1.333564e-01f, 1.318773e-01f, 1.303971e-01f, 1.289156e-01f,
|
|
1.274328e-01f, 1.259489e-01f, 1.244638e-01f, 1.229775e-01f,
|
|
1.214901e-01f, 1.200015e-01f, 1.185118e-01f, 1.170210e-01f,
|
|
1.155291e-01f, 1.140360e-01f, 1.125420e-01f, 1.110468e-01f,
|
|
1.095506e-01f, 1.080534e-01f, 1.065552e-01f, 1.050559e-01f,
|
|
1.035557e-01f, 1.020545e-01f, 1.005523e-01f, 9.904921e-02f,
|
|
9.754516e-02f, 9.604020e-02f, 9.453433e-02f, 9.302758e-02f,
|
|
9.151994e-02f, 9.001145e-02f, 8.850211e-02f, 8.699194e-02f,
|
|
8.548094e-02f, 8.396915e-02f, 8.245656e-02f, 8.094320e-02f,
|
|
7.942907e-02f, 7.791420e-02f, 7.639859e-02f, 7.488227e-02f,
|
|
7.336524e-02f, 7.184752e-02f, 7.032912e-02f, 6.881006e-02f,
|
|
6.729035e-02f, 6.577001e-02f, 6.424906e-02f, 6.272749e-02f,
|
|
6.120534e-02f, 5.968261e-02f, 5.815932e-02f, 5.663548e-02f,
|
|
5.511110e-02f, 5.358621e-02f, 5.206082e-02f, 5.053493e-02f,
|
|
4.900857e-02f, 4.748175e-02f, 4.595448e-02f, 4.442678e-02f,
|
|
4.289866e-02f, 4.137013e-02f, 3.984122e-02f, 3.831193e-02f,
|
|
3.678228e-02f, 3.525229e-02f, 3.372196e-02f, 3.219132e-02f,
|
|
3.066037e-02f, 2.912913e-02f, 2.759762e-02f, 2.606585e-02f,
|
|
2.453384e-02f, 2.300159e-02f, 2.146913e-02f, 1.993646e-02f,
|
|
1.840361e-02f, 1.687059e-02f, 1.533740e-02f, 1.380407e-02f,
|
|
1.227061e-02f, 1.073704e-02f, 9.203365e-03f, 7.669603e-03f,
|
|
6.135769e-03f, 4.601877e-03f, 3.067942e-03f, 1.533978e-03f};
|
|
static const int AUP_FFTW_g_ip4096[] = {
|
|
1024, 1024, 0, 16, 0, 64, 32, 96, 0, 256, 128,
|
|
384, 64, 320, 192, 448, 0, 1024, 512, 1536, 256, 1280,
|
|
768, 1792, 128, 1152, 640, 1664, 384, 1408, 896, 1920};
|
|
static const float AUP_FFTW_g_w4096[] = {
|
|
1.000000e+00f, 7.071068e-01f, 5.000024e-01f, 5.000212e-01f,
|
|
9.999812e-01f, 6.135885e-03f, 9.998306e-01f, -1.840673e-02f,
|
|
9.999247e-01f, 1.227154e-02f, 9.993224e-01f, -3.680722e-02f,
|
|
9.998306e-01f, 1.840673e-02f, 9.984756e-01f, -5.519524e-02f,
|
|
9.996988e-01f, 2.454123e-02f, 9.972905e-01f, -7.356456e-02f,
|
|
9.995294e-01f, 3.067480e-02f, 9.957674e-01f, -9.190896e-02f,
|
|
9.993224e-01f, 3.680722e-02f, 9.939070e-01f, -1.102222e-01f,
|
|
9.990777e-01f, 4.293826e-02f, 9.917098e-01f, -1.284981e-01f,
|
|
9.987955e-01f, 4.906767e-02f, 9.891765e-01f, -1.467305e-01f,
|
|
9.984756e-01f, 5.519524e-02f, 9.863081e-01f, -1.649131e-01f,
|
|
9.981181e-01f, 6.132074e-02f, 9.831055e-01f, -1.830399e-01f,
|
|
9.977231e-01f, 6.744392e-02f, 9.795698e-01f, -2.011046e-01f,
|
|
9.972905e-01f, 7.356456e-02f, 9.757021e-01f, -2.191012e-01f,
|
|
9.968203e-01f, 7.968244e-02f, 9.715039e-01f, -2.370236e-01f,
|
|
9.963126e-01f, 8.579731e-02f, 9.669765e-01f, -2.548657e-01f,
|
|
9.957674e-01f, 9.190896e-02f, 9.621214e-01f, -2.726214e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.945646e-01f, 1.041216e-01f, 9.514350e-01f, -3.078496e-01f,
|
|
9.939070e-01f, 1.102222e-01f, 9.456073e-01f, -3.253103e-01f,
|
|
9.932119e-01f, 1.163186e-01f, 9.394592e-01f, -3.426607e-01f,
|
|
9.924795e-01f, 1.224107e-01f, 9.329928e-01f, -3.598950e-01f,
|
|
9.917098e-01f, 1.284981e-01f, 9.262102e-01f, -3.770074e-01f,
|
|
9.909026e-01f, 1.345807e-01f, 9.191139e-01f, -3.939920e-01f,
|
|
9.900582e-01f, 1.406582e-01f, 9.117060e-01f, -4.108432e-01f,
|
|
9.891765e-01f, 1.467305e-01f, 9.039893e-01f, -4.275551e-01f,
|
|
9.882576e-01f, 1.527972e-01f, 8.959662e-01f, -4.441221e-01f,
|
|
9.873014e-01f, 1.588581e-01f, 8.876396e-01f, -4.605387e-01f,
|
|
9.863081e-01f, 1.649131e-01f, 8.790122e-01f, -4.767992e-01f,
|
|
9.852776e-01f, 1.709619e-01f, 8.700870e-01f, -4.928982e-01f,
|
|
9.842101e-01f, 1.770042e-01f, 8.608669e-01f, -5.088301e-01f,
|
|
9.831055e-01f, 1.830399e-01f, 8.513552e-01f, -5.245897e-01f,
|
|
9.819639e-01f, 1.890687e-01f, 8.415550e-01f, -5.401715e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.795698e-01f, 2.011046e-01f, 8.211025e-01f, -5.707807e-01f,
|
|
9.783174e-01f, 2.071114e-01f, 8.104572e-01f, -5.857979e-01f,
|
|
9.770281e-01f, 2.131103e-01f, 7.995373e-01f, -6.006165e-01f,
|
|
9.757021e-01f, 2.191012e-01f, 7.883464e-01f, -6.152316e-01f,
|
|
9.743394e-01f, 2.250839e-01f, 7.768885e-01f, -6.296382e-01f,
|
|
9.729400e-01f, 2.310581e-01f, 7.651673e-01f, -6.438315e-01f,
|
|
9.715039e-01f, 2.370236e-01f, 7.531868e-01f, -6.578067e-01f,
|
|
9.700313e-01f, 2.429802e-01f, 7.409511e-01f, -6.715590e-01f,
|
|
9.685221e-01f, 2.489276e-01f, 7.284644e-01f, -6.850837e-01f,
|
|
9.669765e-01f, 2.548657e-01f, 7.157308e-01f, -6.983762e-01f,
|
|
9.653944e-01f, 2.607941e-01f, 7.027547e-01f, -7.114322e-01f,
|
|
9.637761e-01f, 2.667128e-01f, 6.895405e-01f, -7.242471e-01f,
|
|
9.621214e-01f, 2.726214e-01f, 6.760927e-01f, -7.368166e-01f,
|
|
9.604305e-01f, 2.785197e-01f, 6.624158e-01f, -7.491364e-01f,
|
|
9.587035e-01f, 2.844075e-01f, 6.485144e-01f, -7.612024e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.551412e-01f, 2.961509e-01f, 6.200572e-01f, -7.845566e-01f,
|
|
9.533060e-01f, 3.020059e-01f, 6.055110e-01f, -7.958369e-01f,
|
|
9.514350e-01f, 3.078496e-01f, 5.907597e-01f, -8.068476e-01f,
|
|
9.495282e-01f, 3.136817e-01f, 5.758082e-01f, -8.175848e-01f,
|
|
9.475856e-01f, 3.195020e-01f, 5.606616e-01f, -8.280450e-01f,
|
|
9.456073e-01f, 3.253103e-01f, 5.453250e-01f, -8.382247e-01f,
|
|
9.435935e-01f, 3.311063e-01f, 5.298036e-01f, -8.481203e-01f,
|
|
9.415441e-01f, 3.368899e-01f, 5.141027e-01f, -8.577286e-01f,
|
|
9.394592e-01f, 3.426607e-01f, 4.982277e-01f, -8.670462e-01f,
|
|
9.373390e-01f, 3.484187e-01f, 4.821838e-01f, -8.760701e-01f,
|
|
9.351835e-01f, 3.541635e-01f, 4.659765e-01f, -8.847971e-01f,
|
|
9.329928e-01f, 3.598950e-01f, 4.496113e-01f, -8.932243e-01f,
|
|
9.307670e-01f, 3.656130e-01f, 4.330938e-01f, -9.013488e-01f,
|
|
9.285061e-01f, 3.713172e-01f, 4.164296e-01f, -9.091680e-01f,
|
|
9.262102e-01f, 3.770074e-01f, 3.996242e-01f, -9.166791e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
9.215140e-01f, 3.883450e-01f, 3.656130e-01f, -9.307670e-01f,
|
|
9.191139e-01f, 3.939920e-01f, 3.484187e-01f, -9.373390e-01f,
|
|
9.166791e-01f, 3.996242e-01f, 3.311063e-01f, -9.435935e-01f,
|
|
9.142098e-01f, 4.052413e-01f, 3.136817e-01f, -9.495282e-01f,
|
|
9.117060e-01f, 4.108432e-01f, 2.961509e-01f, -9.551412e-01f,
|
|
9.091680e-01f, 4.164296e-01f, 2.785197e-01f, -9.604305e-01f,
|
|
9.065957e-01f, 4.220003e-01f, 2.607941e-01f, -9.653944e-01f,
|
|
9.039893e-01f, 4.275551e-01f, 2.429802e-01f, -9.700313e-01f,
|
|
9.013488e-01f, 4.330938e-01f, 2.250839e-01f, -9.743394e-01f,
|
|
8.986745e-01f, 4.386162e-01f, 2.071114e-01f, -9.783174e-01f,
|
|
8.959662e-01f, 4.441221e-01f, 1.890687e-01f, -9.819639e-01f,
|
|
8.932243e-01f, 4.496113e-01f, 1.709619e-01f, -9.852776e-01f,
|
|
8.904487e-01f, 4.550836e-01f, 1.527972e-01f, -9.882576e-01f,
|
|
8.876396e-01f, 4.605387e-01f, 1.345807e-01f, -9.909026e-01f,
|
|
8.847971e-01f, 4.659765e-01f, 1.163186e-01f, -9.932119e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.790122e-01f, 4.767992e-01f, 7.968244e-02f, -9.968203e-01f,
|
|
8.760701e-01f, 4.821838e-01f, 6.132074e-02f, -9.981181e-01f,
|
|
8.730950e-01f, 4.875502e-01f, 4.293826e-02f, -9.990777e-01f,
|
|
8.700870e-01f, 4.928982e-01f, 2.454123e-02f, -9.996988e-01f,
|
|
8.670462e-01f, 4.982277e-01f, 6.135885e-03f, -9.999812e-01f,
|
|
8.639729e-01f, 5.035384e-01f, -1.227154e-02f, -9.999247e-01f,
|
|
8.608669e-01f, 5.088301e-01f, -3.067480e-02f, -9.995294e-01f,
|
|
8.577286e-01f, 5.141027e-01f, -4.906767e-02f, -9.987955e-01f,
|
|
8.545580e-01f, 5.193560e-01f, -6.744392e-02f, -9.977231e-01f,
|
|
8.513552e-01f, 5.245897e-01f, -8.579731e-02f, -9.963126e-01f,
|
|
8.481203e-01f, 5.298036e-01f, -1.041216e-01f, -9.945646e-01f,
|
|
8.448536e-01f, 5.349976e-01f, -1.224107e-01f, -9.924795e-01f,
|
|
8.415550e-01f, 5.401715e-01f, -1.406582e-01f, -9.900582e-01f,
|
|
8.382247e-01f, 5.453250e-01f, -1.588581e-01f, -9.873014e-01f,
|
|
8.348629e-01f, 5.504580e-01f, -1.770042e-01f, -9.842101e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
8.280450e-01f, 5.606616e-01f, -2.131103e-01f, -9.770281e-01f,
|
|
8.245893e-01f, 5.657318e-01f, -2.310581e-01f, -9.729400e-01f,
|
|
8.211025e-01f, 5.707807e-01f, -2.489276e-01f, -9.685221e-01f,
|
|
8.175848e-01f, 5.758082e-01f, -2.667128e-01f, -9.637761e-01f,
|
|
8.140363e-01f, 5.808140e-01f, -2.844075e-01f, -9.587035e-01f,
|
|
8.104572e-01f, 5.857979e-01f, -3.020059e-01f, -9.533060e-01f,
|
|
8.068476e-01f, 5.907597e-01f, -3.195020e-01f, -9.475856e-01f,
|
|
8.032075e-01f, 5.956993e-01f, -3.368899e-01f, -9.415441e-01f,
|
|
7.995373e-01f, 6.006165e-01f, -3.541635e-01f, -9.351835e-01f,
|
|
7.958369e-01f, 6.055110e-01f, -3.713172e-01f, -9.285061e-01f,
|
|
7.921066e-01f, 6.103828e-01f, -3.883450e-01f, -9.215140e-01f,
|
|
7.883464e-01f, 6.152316e-01f, -4.052413e-01f, -9.142098e-01f,
|
|
7.845566e-01f, 6.200572e-01f, -4.220003e-01f, -9.065957e-01f,
|
|
7.807372e-01f, 6.248595e-01f, -4.386162e-01f, -8.986745e-01f,
|
|
7.768885e-01f, 6.296382e-01f, -4.550836e-01f, -8.904487e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
7.691033e-01f, 6.391244e-01f, -4.875502e-01f, -8.730950e-01f,
|
|
7.651673e-01f, 6.438315e-01f, -5.035384e-01f, -8.639729e-01f,
|
|
7.612024e-01f, 6.485144e-01f, -5.193560e-01f, -8.545580e-01f,
|
|
7.572088e-01f, 6.531728e-01f, -5.349976e-01f, -8.448536e-01f,
|
|
7.531868e-01f, 6.578067e-01f, -5.504580e-01f, -8.348629e-01f,
|
|
7.491364e-01f, 6.624158e-01f, -5.657318e-01f, -8.245893e-01f,
|
|
7.450578e-01f, 6.669999e-01f, -5.808140e-01f, -8.140363e-01f,
|
|
7.409511e-01f, 6.715590e-01f, -5.956993e-01f, -8.032075e-01f,
|
|
7.368166e-01f, 6.760927e-01f, -6.103828e-01f, -7.921066e-01f,
|
|
7.326543e-01f, 6.806010e-01f, -6.248595e-01f, -7.807372e-01f,
|
|
7.284644e-01f, 6.850837e-01f, -6.391244e-01f, -7.691033e-01f,
|
|
7.242471e-01f, 6.895405e-01f, -6.531728e-01f, -7.572088e-01f,
|
|
7.200025e-01f, 6.939715e-01f, -6.669999e-01f, -7.450578e-01f,
|
|
7.157308e-01f, 6.983762e-01f, -6.806010e-01f, -7.326543e-01f,
|
|
7.114322e-01f, 7.027547e-01f, -6.939715e-01f, -7.200025e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.000094e-01f, 5.000847e-01f,
|
|
9.999247e-01f, 1.227154e-02f, 9.993224e-01f, -3.680722e-02f,
|
|
9.996988e-01f, 2.454123e-02f, 9.972905e-01f, -7.356456e-02f,
|
|
9.993224e-01f, 3.680722e-02f, 9.939070e-01f, -1.102222e-01f,
|
|
9.987955e-01f, 4.906767e-02f, 9.891765e-01f, -1.467305e-01f,
|
|
9.981181e-01f, 6.132074e-02f, 9.831055e-01f, -1.830399e-01f,
|
|
9.972905e-01f, 7.356456e-02f, 9.757021e-01f, -2.191012e-01f,
|
|
9.963126e-01f, 8.579731e-02f, 9.669765e-01f, -2.548657e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.939070e-01f, 1.102222e-01f, 9.456073e-01f, -3.253103e-01f,
|
|
9.924795e-01f, 1.224107e-01f, 9.329928e-01f, -3.598950e-01f,
|
|
9.909026e-01f, 1.345807e-01f, 9.191139e-01f, -3.939920e-01f,
|
|
9.891765e-01f, 1.467305e-01f, 9.039893e-01f, -4.275551e-01f,
|
|
9.873014e-01f, 1.588581e-01f, 8.876396e-01f, -4.605387e-01f,
|
|
9.852776e-01f, 1.709619e-01f, 8.700870e-01f, -4.928982e-01f,
|
|
9.831055e-01f, 1.830399e-01f, 8.513552e-01f, -5.245897e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.783174e-01f, 2.071114e-01f, 8.104572e-01f, -5.857979e-01f,
|
|
9.757021e-01f, 2.191012e-01f, 7.883464e-01f, -6.152316e-01f,
|
|
9.729400e-01f, 2.310581e-01f, 7.651673e-01f, -6.438315e-01f,
|
|
9.700313e-01f, 2.429802e-01f, 7.409511e-01f, -6.715590e-01f,
|
|
9.669765e-01f, 2.548657e-01f, 7.157308e-01f, -6.983762e-01f,
|
|
9.637761e-01f, 2.667128e-01f, 6.895405e-01f, -7.242471e-01f,
|
|
9.604305e-01f, 2.785197e-01f, 6.624158e-01f, -7.491364e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.533060e-01f, 3.020059e-01f, 6.055110e-01f, -7.958369e-01f,
|
|
9.495282e-01f, 3.136817e-01f, 5.758082e-01f, -8.175848e-01f,
|
|
9.456073e-01f, 3.253103e-01f, 5.453250e-01f, -8.382247e-01f,
|
|
9.415441e-01f, 3.368899e-01f, 5.141027e-01f, -8.577286e-01f,
|
|
9.373390e-01f, 3.484187e-01f, 4.821838e-01f, -8.760701e-01f,
|
|
9.329928e-01f, 3.598950e-01f, 4.496113e-01f, -8.932243e-01f,
|
|
9.285061e-01f, 3.713172e-01f, 4.164296e-01f, -9.091680e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
9.191139e-01f, 3.939920e-01f, 3.484187e-01f, -9.373390e-01f,
|
|
9.142098e-01f, 4.052413e-01f, 3.136817e-01f, -9.495282e-01f,
|
|
9.091680e-01f, 4.164296e-01f, 2.785197e-01f, -9.604305e-01f,
|
|
9.039893e-01f, 4.275551e-01f, 2.429802e-01f, -9.700313e-01f,
|
|
8.986745e-01f, 4.386162e-01f, 2.071114e-01f, -9.783174e-01f,
|
|
8.932243e-01f, 4.496113e-01f, 1.709619e-01f, -9.852776e-01f,
|
|
8.876396e-01f, 4.605387e-01f, 1.345807e-01f, -9.909026e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.760701e-01f, 4.821838e-01f, 6.132074e-02f, -9.981181e-01f,
|
|
8.700870e-01f, 4.928982e-01f, 2.454123e-02f, -9.996988e-01f,
|
|
8.639729e-01f, 5.035384e-01f, -1.227154e-02f, -9.999247e-01f,
|
|
8.577286e-01f, 5.141027e-01f, -4.906767e-02f, -9.987955e-01f,
|
|
8.513552e-01f, 5.245897e-01f, -8.579731e-02f, -9.963126e-01f,
|
|
8.448536e-01f, 5.349976e-01f, -1.224107e-01f, -9.924795e-01f,
|
|
8.382247e-01f, 5.453250e-01f, -1.588581e-01f, -9.873014e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
8.245893e-01f, 5.657318e-01f, -2.310581e-01f, -9.729400e-01f,
|
|
8.175848e-01f, 5.758082e-01f, -2.667128e-01f, -9.637761e-01f,
|
|
8.104572e-01f, 5.857979e-01f, -3.020059e-01f, -9.533060e-01f,
|
|
8.032075e-01f, 5.956993e-01f, -3.368899e-01f, -9.415441e-01f,
|
|
7.958369e-01f, 6.055110e-01f, -3.713172e-01f, -9.285061e-01f,
|
|
7.883464e-01f, 6.152316e-01f, -4.052413e-01f, -9.142098e-01f,
|
|
7.807372e-01f, 6.248595e-01f, -4.386162e-01f, -8.986745e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
7.651673e-01f, 6.438315e-01f, -5.035384e-01f, -8.639729e-01f,
|
|
7.572088e-01f, 6.531728e-01f, -5.349976e-01f, -8.448536e-01f,
|
|
7.491364e-01f, 6.624158e-01f, -5.657318e-01f, -8.245893e-01f,
|
|
7.409511e-01f, 6.715590e-01f, -5.956993e-01f, -8.032075e-01f,
|
|
7.326543e-01f, 6.806010e-01f, -6.248595e-01f, -7.807372e-01f,
|
|
7.242471e-01f, 6.895405e-01f, -6.531728e-01f, -7.572088e-01f,
|
|
7.157308e-01f, 6.983762e-01f, -6.806010e-01f, -7.326543e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.000377e-01f, 5.003390e-01f,
|
|
9.996988e-01f, 2.454123e-02f, 9.972905e-01f, -7.356456e-02f,
|
|
9.987955e-01f, 4.906767e-02f, 9.891765e-01f, -1.467305e-01f,
|
|
9.972905e-01f, 7.356456e-02f, 9.757021e-01f, -2.191012e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.924795e-01f, 1.224107e-01f, 9.329928e-01f, -3.598950e-01f,
|
|
9.891765e-01f, 1.467305e-01f, 9.039893e-01f, -4.275551e-01f,
|
|
9.852776e-01f, 1.709619e-01f, 8.700870e-01f, -4.928982e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.757021e-01f, 2.191012e-01f, 7.883464e-01f, -6.152316e-01f,
|
|
9.700313e-01f, 2.429802e-01f, 7.409511e-01f, -6.715590e-01f,
|
|
9.637761e-01f, 2.667128e-01f, 6.895405e-01f, -7.242471e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.495282e-01f, 3.136817e-01f, 5.758082e-01f, -8.175848e-01f,
|
|
9.415441e-01f, 3.368899e-01f, 5.141027e-01f, -8.577286e-01f,
|
|
9.329928e-01f, 3.598950e-01f, 4.496113e-01f, -8.932243e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
9.142098e-01f, 4.052413e-01f, 3.136817e-01f, -9.495282e-01f,
|
|
9.039893e-01f, 4.275551e-01f, 2.429802e-01f, -9.700313e-01f,
|
|
8.932243e-01f, 4.496113e-01f, 1.709619e-01f, -9.852776e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.700870e-01f, 4.928982e-01f, 2.454123e-02f, -9.996988e-01f,
|
|
8.577286e-01f, 5.141027e-01f, -4.906767e-02f, -9.987955e-01f,
|
|
8.448536e-01f, 5.349976e-01f, -1.224107e-01f, -9.924795e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
8.175848e-01f, 5.758082e-01f, -2.667128e-01f, -9.637761e-01f,
|
|
8.032075e-01f, 5.956993e-01f, -3.368899e-01f, -9.415441e-01f,
|
|
7.883464e-01f, 6.152316e-01f, -4.052413e-01f, -9.142098e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
7.572088e-01f, 6.531728e-01f, -5.349976e-01f, -8.448536e-01f,
|
|
7.409511e-01f, 6.715590e-01f, -5.956993e-01f, -8.032075e-01f,
|
|
7.242471e-01f, 6.895405e-01f, -6.531728e-01f, -7.572088e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.001506e-01f, 5.013585e-01f,
|
|
9.987955e-01f, 4.906767e-02f, 9.891765e-01f, -1.467305e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.891765e-01f, 1.467305e-01f, 9.039893e-01f, -4.275551e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.700313e-01f, 2.429802e-01f, 7.409511e-01f, -6.715590e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.415441e-01f, 3.368899e-01f, 5.141027e-01f, -8.577286e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
9.039893e-01f, 4.275551e-01f, 2.429802e-01f, -9.700313e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.577286e-01f, 5.141027e-01f, -4.906767e-02f, -9.987955e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
8.032075e-01f, 5.956993e-01f, -3.368899e-01f, -9.415441e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
7.409511e-01f, 6.715590e-01f, -5.956993e-01f, -8.032075e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.006030e-01f, 5.054710e-01f,
|
|
9.951847e-01f, 9.801714e-02f, 9.569403e-01f, -2.902847e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.569403e-01f, 2.902847e-01f, 6.343933e-01f, -7.730105e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
8.819213e-01f, 4.713967e-01f, 9.801714e-02f, -9.951847e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
7.730105e-01f, 6.343933e-01f, -4.713967e-01f, -8.819213e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.024193e-01f, 5.224986e-01f,
|
|
9.807853e-01f, 1.950903e-01f, 8.314696e-01f, -5.555702e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
8.314696e-01f, 5.555702e-01f, -1.950903e-01f, -9.807853e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 5.097956e-01f, 6.013449e-01f,
|
|
9.238795e-01f, 3.826834e-01f, 3.826834e-01f, -9.238795e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 9.238795e-01f, 3.826834e-01f,
|
|
1.000000e+00f, 7.071068e-01f, 0.000000e+00f, 0.000000e+00f,
|
|
7.071068e-01f, 4.999994e-01f, 4.999976e-01f, 4.999947e-01f,
|
|
4.999906e-01f, 4.999853e-01f, 4.999788e-01f, 4.999712e-01f,
|
|
4.999624e-01f, 4.999524e-01f, 4.999412e-01f, 4.999288e-01f,
|
|
4.999153e-01f, 4.999006e-01f, 4.998847e-01f, 4.998676e-01f,
|
|
4.998494e-01f, 4.998300e-01f, 4.998094e-01f, 4.997876e-01f,
|
|
4.997647e-01f, 4.997406e-01f, 4.997153e-01f, 4.996888e-01f,
|
|
4.996612e-01f, 4.996324e-01f, 4.996024e-01f, 4.995712e-01f,
|
|
4.995389e-01f, 4.995053e-01f, 4.994706e-01f, 4.994348e-01f,
|
|
4.993977e-01f, 4.993595e-01f, 4.993201e-01f, 4.992795e-01f,
|
|
4.992378e-01f, 4.991949e-01f, 4.991508e-01f, 4.991055e-01f,
|
|
4.990591e-01f, 4.990114e-01f, 4.989626e-01f, 4.989127e-01f,
|
|
4.988615e-01f, 4.988092e-01f, 4.987557e-01f, 4.987011e-01f,
|
|
4.986452e-01f, 4.985882e-01f, 4.985300e-01f, 4.984707e-01f,
|
|
4.984101e-01f, 4.983484e-01f, 4.982856e-01f, 4.982215e-01f,
|
|
4.981563e-01f, 4.980899e-01f, 4.980224e-01f, 4.979536e-01f,
|
|
4.978837e-01f, 4.978126e-01f, 4.977404e-01f, 4.976670e-01f,
|
|
4.975924e-01f, 4.975166e-01f, 4.974397e-01f, 4.973616e-01f,
|
|
4.972823e-01f, 4.972018e-01f, 4.971202e-01f, 4.970374e-01f,
|
|
4.969535e-01f, 4.968684e-01f, 4.967821e-01f, 4.966946e-01f,
|
|
4.966060e-01f, 4.965162e-01f, 4.964252e-01f, 4.963331e-01f,
|
|
4.962398e-01f, 4.961453e-01f, 4.960497e-01f, 4.959529e-01f,
|
|
4.958549e-01f, 4.957557e-01f, 4.956554e-01f, 4.955540e-01f,
|
|
4.954513e-01f, 4.953475e-01f, 4.952425e-01f, 4.951364e-01f,
|
|
4.950291e-01f, 4.949206e-01f, 4.948110e-01f, 4.947002e-01f,
|
|
4.945883e-01f, 4.944751e-01f, 4.943608e-01f, 4.942454e-01f,
|
|
4.941288e-01f, 4.940110e-01f, 4.938921e-01f, 4.937720e-01f,
|
|
4.936507e-01f, 4.935283e-01f, 4.934047e-01f, 4.932800e-01f,
|
|
4.931540e-01f, 4.930270e-01f, 4.928988e-01f, 4.927694e-01f,
|
|
4.926388e-01f, 4.925071e-01f, 4.923743e-01f, 4.922402e-01f,
|
|
4.921050e-01f, 4.919687e-01f, 4.918312e-01f, 4.916926e-01f,
|
|
4.915527e-01f, 4.914118e-01f, 4.912697e-01f, 4.911264e-01f,
|
|
4.909819e-01f, 4.908363e-01f, 4.906896e-01f, 4.905417e-01f,
|
|
4.903926e-01f, 4.902424e-01f, 4.900911e-01f, 4.899386e-01f,
|
|
4.897849e-01f, 4.896301e-01f, 4.894741e-01f, 4.893170e-01f,
|
|
4.891587e-01f, 4.889993e-01f, 4.888387e-01f, 4.886770e-01f,
|
|
4.885141e-01f, 4.883500e-01f, 4.881849e-01f, 4.880185e-01f,
|
|
4.878511e-01f, 4.876824e-01f, 4.875127e-01f, 4.873418e-01f,
|
|
4.871697e-01f, 4.869965e-01f, 4.868221e-01f, 4.866466e-01f,
|
|
4.864700e-01f, 4.862922e-01f, 4.861132e-01f, 4.859332e-01f,
|
|
4.857519e-01f, 4.855696e-01f, 4.853861e-01f, 4.852014e-01f,
|
|
4.850156e-01f, 4.848287e-01f, 4.846406e-01f, 4.844514e-01f,
|
|
4.842610e-01f, 4.840696e-01f, 4.838769e-01f, 4.836831e-01f,
|
|
4.834882e-01f, 4.832922e-01f, 4.830950e-01f, 4.828967e-01f,
|
|
4.826972e-01f, 4.824966e-01f, 4.822949e-01f, 4.820920e-01f,
|
|
4.818880e-01f, 4.816829e-01f, 4.814766e-01f, 4.812692e-01f,
|
|
4.810607e-01f, 4.808510e-01f, 4.806402e-01f, 4.804283e-01f,
|
|
4.802153e-01f, 4.800011e-01f, 4.797858e-01f, 4.795693e-01f,
|
|
4.793517e-01f, 4.791330e-01f, 4.789132e-01f, 4.786923e-01f,
|
|
4.784702e-01f, 4.782470e-01f, 4.780226e-01f, 4.777972e-01f,
|
|
4.775706e-01f, 4.773429e-01f, 4.771140e-01f, 4.768841e-01f,
|
|
4.766530e-01f, 4.764208e-01f, 4.761875e-01f, 4.759531e-01f,
|
|
4.757175e-01f, 4.754808e-01f, 4.752430e-01f, 4.750041e-01f,
|
|
4.747641e-01f, 4.745229e-01f, 4.742807e-01f, 4.740373e-01f,
|
|
4.737928e-01f, 4.735472e-01f, 4.733005e-01f, 4.730526e-01f,
|
|
4.728037e-01f, 4.725536e-01f, 4.723024e-01f, 4.720501e-01f,
|
|
4.717967e-01f, 4.715422e-01f, 4.712866e-01f, 4.710299e-01f,
|
|
4.707720e-01f, 4.705131e-01f, 4.702530e-01f, 4.699919e-01f,
|
|
4.697296e-01f, 4.694662e-01f, 4.692018e-01f, 4.689362e-01f,
|
|
4.686695e-01f, 4.684017e-01f, 4.681328e-01f, 4.678628e-01f,
|
|
4.675918e-01f, 4.673196e-01f, 4.670463e-01f, 4.667719e-01f,
|
|
4.664964e-01f, 4.662198e-01f, 4.659421e-01f, 4.656634e-01f,
|
|
4.653835e-01f, 4.651025e-01f, 4.648204e-01f, 4.645373e-01f,
|
|
4.642530e-01f, 4.639677e-01f, 4.636813e-01f, 4.633937e-01f,
|
|
4.631051e-01f, 4.628154e-01f, 4.625246e-01f, 4.622327e-01f,
|
|
4.619398e-01f, 4.616457e-01f, 4.613506e-01f, 4.610543e-01f,
|
|
4.607570e-01f, 4.604586e-01f, 4.601591e-01f, 4.598586e-01f,
|
|
4.595569e-01f, 4.592542e-01f, 4.589504e-01f, 4.586455e-01f,
|
|
4.583395e-01f, 4.580325e-01f, 4.577244e-01f, 4.574152e-01f,
|
|
4.571049e-01f, 4.567935e-01f, 4.564811e-01f, 4.561676e-01f,
|
|
4.558530e-01f, 4.555374e-01f, 4.552206e-01f, 4.549029e-01f,
|
|
4.545840e-01f, 4.542641e-01f, 4.539431e-01f, 4.536210e-01f,
|
|
4.532979e-01f, 4.529736e-01f, 4.526484e-01f, 4.523220e-01f,
|
|
4.519946e-01f, 4.516662e-01f, 4.513367e-01f, 4.510061e-01f,
|
|
4.506744e-01f, 4.503417e-01f, 4.500079e-01f, 4.496731e-01f,
|
|
4.493372e-01f, 4.490003e-01f, 4.486623e-01f, 4.483232e-01f,
|
|
4.479831e-01f, 4.476420e-01f, 4.472997e-01f, 4.469565e-01f,
|
|
4.466122e-01f, 4.462668e-01f, 4.459204e-01f, 4.455729e-01f,
|
|
4.452244e-01f, 4.448748e-01f, 4.445242e-01f, 4.441725e-01f,
|
|
4.438198e-01f, 4.434661e-01f, 4.431113e-01f, 4.427554e-01f,
|
|
4.423985e-01f, 4.420406e-01f, 4.416817e-01f, 4.413217e-01f,
|
|
4.409606e-01f, 4.405986e-01f, 4.402354e-01f, 4.398713e-01f,
|
|
4.395061e-01f, 4.391399e-01f, 4.387726e-01f, 4.384044e-01f,
|
|
4.380350e-01f, 4.376647e-01f, 4.372933e-01f, 4.369209e-01f,
|
|
4.365475e-01f, 4.361730e-01f, 4.357975e-01f, 4.354210e-01f,
|
|
4.350435e-01f, 4.346649e-01f, 4.342854e-01f, 4.339047e-01f,
|
|
4.335231e-01f, 4.331405e-01f, 4.327568e-01f, 4.323721e-01f,
|
|
4.319864e-01f, 4.315997e-01f, 4.312120e-01f, 4.308232e-01f,
|
|
4.304335e-01f, 4.300427e-01f, 4.296509e-01f, 4.292581e-01f,
|
|
4.288643e-01f, 4.284695e-01f, 4.280737e-01f, 4.276768e-01f,
|
|
4.272790e-01f, 4.268802e-01f, 4.264803e-01f, 4.260795e-01f,
|
|
4.256776e-01f, 4.252747e-01f, 4.248709e-01f, 4.244660e-01f,
|
|
4.240602e-01f, 4.236533e-01f, 4.232455e-01f, 4.228366e-01f,
|
|
4.224268e-01f, 4.220159e-01f, 4.216041e-01f, 4.211913e-01f,
|
|
4.207775e-01f, 4.203627e-01f, 4.199469e-01f, 4.195301e-01f,
|
|
4.191124e-01f, 4.186936e-01f, 4.182739e-01f, 4.178531e-01f,
|
|
4.174314e-01f, 4.170088e-01f, 4.165851e-01f, 4.161604e-01f,
|
|
4.157348e-01f, 4.153082e-01f, 4.148806e-01f, 4.144521e-01f,
|
|
4.140225e-01f, 4.135920e-01f, 4.131605e-01f, 4.127281e-01f,
|
|
4.122947e-01f, 4.118603e-01f, 4.114249e-01f, 4.109886e-01f,
|
|
4.105513e-01f, 4.101130e-01f, 4.096738e-01f, 4.092336e-01f,
|
|
4.087924e-01f, 4.083503e-01f, 4.079072e-01f, 4.074632e-01f,
|
|
4.070182e-01f, 4.065722e-01f, 4.061253e-01f, 4.056774e-01f,
|
|
4.052286e-01f, 4.047788e-01f, 4.043281e-01f, 4.038764e-01f,
|
|
4.034238e-01f, 4.029702e-01f, 4.025157e-01f, 4.020602e-01f,
|
|
4.016038e-01f, 4.011464e-01f, 4.006881e-01f, 4.002288e-01f,
|
|
3.997686e-01f, 3.993075e-01f, 3.988454e-01f, 3.983824e-01f,
|
|
3.979185e-01f, 3.974536e-01f, 3.969877e-01f, 3.965210e-01f,
|
|
3.960533e-01f, 3.955847e-01f, 3.951151e-01f, 3.946446e-01f,
|
|
3.941732e-01f, 3.937009e-01f, 3.932276e-01f, 3.927534e-01f,
|
|
3.922783e-01f, 3.918023e-01f, 3.913253e-01f, 3.908474e-01f,
|
|
3.903686e-01f, 3.898889e-01f, 3.894083e-01f, 3.889267e-01f,
|
|
3.884442e-01f, 3.879608e-01f, 3.874766e-01f, 3.869913e-01f,
|
|
3.865052e-01f, 3.860182e-01f, 3.855303e-01f, 3.850414e-01f,
|
|
3.845517e-01f, 3.840610e-01f, 3.835695e-01f, 3.830770e-01f,
|
|
3.825836e-01f, 3.820894e-01f, 3.815942e-01f, 3.810981e-01f,
|
|
3.806012e-01f, 3.801033e-01f, 3.796046e-01f, 3.791050e-01f,
|
|
3.786044e-01f, 3.781030e-01f, 3.776007e-01f, 3.770975e-01f,
|
|
3.765934e-01f, 3.760884e-01f, 3.755826e-01f, 3.750758e-01f,
|
|
3.745682e-01f, 3.740597e-01f, 3.735503e-01f, 3.730400e-01f,
|
|
3.725289e-01f, 3.720169e-01f, 3.715040e-01f, 3.709902e-01f,
|
|
3.704756e-01f, 3.699600e-01f, 3.694437e-01f, 3.689264e-01f,
|
|
3.684083e-01f, 3.678893e-01f, 3.673694e-01f, 3.668487e-01f,
|
|
3.663271e-01f, 3.658047e-01f, 3.652814e-01f, 3.647572e-01f,
|
|
3.642322e-01f, 3.637063e-01f, 3.631796e-01f, 3.626520e-01f,
|
|
3.621235e-01f, 3.615942e-01f, 3.610641e-01f, 3.605331e-01f,
|
|
3.600013e-01f, 3.594686e-01f, 3.589350e-01f, 3.584006e-01f,
|
|
3.578654e-01f, 3.573293e-01f, 3.567924e-01f, 3.562547e-01f,
|
|
3.557161e-01f, 3.551767e-01f, 3.546364e-01f, 3.540953e-01f,
|
|
3.535534e-01f, 3.530106e-01f, 3.524670e-01f, 3.519226e-01f,
|
|
3.513774e-01f, 3.508313e-01f, 3.502844e-01f, 3.497367e-01f,
|
|
3.491881e-01f, 3.486388e-01f, 3.480886e-01f, 3.475376e-01f,
|
|
3.469857e-01f, 3.464331e-01f, 3.458796e-01f, 3.453254e-01f,
|
|
3.447703e-01f, 3.442144e-01f, 3.436577e-01f, 3.431002e-01f,
|
|
3.425418e-01f, 3.419827e-01f, 3.414228e-01f, 3.408620e-01f,
|
|
3.403005e-01f, 3.397382e-01f, 3.391750e-01f, 3.386111e-01f,
|
|
3.380464e-01f, 3.374808e-01f, 3.369145e-01f, 3.363474e-01f,
|
|
3.357795e-01f, 3.352108e-01f, 3.346413e-01f, 3.340710e-01f,
|
|
3.335000e-01f, 3.329281e-01f, 3.323555e-01f, 3.317821e-01f,
|
|
3.312079e-01f, 3.306329e-01f, 3.300572e-01f, 3.294806e-01f,
|
|
3.289033e-01f, 3.283253e-01f, 3.277464e-01f, 3.271668e-01f,
|
|
3.265864e-01f, 3.260053e-01f, 3.254233e-01f, 3.248407e-01f,
|
|
3.242572e-01f, 3.236730e-01f, 3.230880e-01f, 3.225023e-01f,
|
|
3.219158e-01f, 3.213285e-01f, 3.207405e-01f, 3.201517e-01f,
|
|
3.195622e-01f, 3.189720e-01f, 3.183809e-01f, 3.177892e-01f,
|
|
3.171966e-01f, 3.166034e-01f, 3.160094e-01f, 3.154146e-01f,
|
|
3.148191e-01f, 3.142229e-01f, 3.136259e-01f, 3.130282e-01f,
|
|
3.124297e-01f, 3.118306e-01f, 3.112306e-01f, 3.106300e-01f,
|
|
3.100286e-01f, 3.094265e-01f, 3.088237e-01f, 3.082201e-01f,
|
|
3.076158e-01f, 3.070108e-01f, 3.064050e-01f, 3.057986e-01f,
|
|
3.051914e-01f, 3.045835e-01f, 3.039749e-01f, 3.033656e-01f,
|
|
3.027555e-01f, 3.021448e-01f, 3.015333e-01f, 3.009211e-01f,
|
|
3.003082e-01f, 2.996946e-01f, 2.990804e-01f, 2.984654e-01f,
|
|
2.978497e-01f, 2.972332e-01f, 2.966161e-01f, 2.959983e-01f,
|
|
2.953799e-01f, 2.947607e-01f, 2.941408e-01f, 2.935202e-01f,
|
|
2.928989e-01f, 2.922770e-01f, 2.916543e-01f, 2.910310e-01f,
|
|
2.904070e-01f, 2.897823e-01f, 2.891569e-01f, 2.885308e-01f,
|
|
2.879041e-01f, 2.872767e-01f, 2.866486e-01f, 2.860198e-01f,
|
|
2.853904e-01f, 2.847603e-01f, 2.841295e-01f, 2.834980e-01f,
|
|
2.828659e-01f, 2.822331e-01f, 2.815997e-01f, 2.809656e-01f,
|
|
2.803308e-01f, 2.796954e-01f, 2.790593e-01f, 2.784225e-01f,
|
|
2.777851e-01f, 2.771471e-01f, 2.765084e-01f, 2.758690e-01f,
|
|
2.752290e-01f, 2.745883e-01f, 2.739470e-01f, 2.733051e-01f,
|
|
2.726625e-01f, 2.720193e-01f, 2.713754e-01f, 2.707309e-01f,
|
|
2.700857e-01f, 2.694400e-01f, 2.687935e-01f, 2.681465e-01f,
|
|
2.674988e-01f, 2.668505e-01f, 2.662016e-01f, 2.655520e-01f,
|
|
2.649018e-01f, 2.642510e-01f, 2.635996e-01f, 2.629475e-01f,
|
|
2.622948e-01f, 2.616416e-01f, 2.609876e-01f, 2.603331e-01f,
|
|
2.596780e-01f, 2.590223e-01f, 2.583659e-01f, 2.577089e-01f,
|
|
2.570514e-01f, 2.563932e-01f, 2.557344e-01f, 2.550750e-01f,
|
|
2.544151e-01f, 2.537545e-01f, 2.530933e-01f, 2.524316e-01f,
|
|
2.517692e-01f, 2.511062e-01f, 2.504427e-01f, 2.497786e-01f,
|
|
2.491138e-01f, 2.484485e-01f, 2.477826e-01f, 2.471162e-01f,
|
|
2.464491e-01f, 2.457815e-01f, 2.451132e-01f, 2.444444e-01f,
|
|
2.437751e-01f, 2.431051e-01f, 2.424346e-01f, 2.417635e-01f,
|
|
2.410919e-01f, 2.404197e-01f, 2.397469e-01f, 2.390735e-01f,
|
|
2.383996e-01f, 2.377251e-01f, 2.370501e-01f, 2.363745e-01f,
|
|
2.356984e-01f, 2.350217e-01f, 2.343444e-01f, 2.336666e-01f,
|
|
2.329882e-01f, 2.323093e-01f, 2.316299e-01f, 2.309499e-01f,
|
|
2.302694e-01f, 2.295883e-01f, 2.289067e-01f, 2.282245e-01f,
|
|
2.275418e-01f, 2.268586e-01f, 2.261748e-01f, 2.254905e-01f,
|
|
2.248057e-01f, 2.241203e-01f, 2.234344e-01f, 2.227480e-01f,
|
|
2.220611e-01f, 2.213736e-01f, 2.206856e-01f, 2.199971e-01f,
|
|
2.193081e-01f, 2.186186e-01f, 2.179285e-01f, 2.172380e-01f,
|
|
2.165469e-01f, 2.158553e-01f, 2.151632e-01f, 2.144706e-01f,
|
|
2.137775e-01f, 2.130839e-01f, 2.123898e-01f, 2.116952e-01f,
|
|
2.110001e-01f, 2.103045e-01f, 2.096084e-01f, 2.089119e-01f,
|
|
2.082148e-01f, 2.075172e-01f, 2.068192e-01f, 2.061206e-01f,
|
|
2.054216e-01f, 2.047221e-01f, 2.040221e-01f, 2.033216e-01f,
|
|
2.026207e-01f, 2.019192e-01f, 2.012173e-01f, 2.005149e-01f,
|
|
1.998121e-01f, 1.991088e-01f, 1.984050e-01f, 1.977007e-01f,
|
|
1.969960e-01f, 1.962908e-01f, 1.955852e-01f, 1.948791e-01f,
|
|
1.941725e-01f, 1.934655e-01f, 1.927580e-01f, 1.920501e-01f,
|
|
1.913417e-01f, 1.906329e-01f, 1.899236e-01f, 1.892139e-01f,
|
|
1.885037e-01f, 1.877931e-01f, 1.870820e-01f, 1.863705e-01f,
|
|
1.856586e-01f, 1.849462e-01f, 1.842334e-01f, 1.835202e-01f,
|
|
1.828065e-01f, 1.820924e-01f, 1.813779e-01f, 1.806629e-01f,
|
|
1.799475e-01f, 1.792317e-01f, 1.785155e-01f, 1.777988e-01f,
|
|
1.770818e-01f, 1.763643e-01f, 1.756464e-01f, 1.749281e-01f,
|
|
1.742093e-01f, 1.734902e-01f, 1.727707e-01f, 1.720507e-01f,
|
|
1.713304e-01f, 1.706096e-01f, 1.698884e-01f, 1.691669e-01f,
|
|
1.684449e-01f, 1.677226e-01f, 1.669998e-01f, 1.662767e-01f,
|
|
1.655532e-01f, 1.648292e-01f, 1.641049e-01f, 1.633802e-01f,
|
|
1.626551e-01f, 1.619297e-01f, 1.612038e-01f, 1.604776e-01f,
|
|
1.597510e-01f, 1.590240e-01f, 1.582967e-01f, 1.575690e-01f,
|
|
1.568409e-01f, 1.561124e-01f, 1.553836e-01f, 1.546544e-01f,
|
|
1.539248e-01f, 1.531949e-01f, 1.524646e-01f, 1.517340e-01f,
|
|
1.510030e-01f, 1.502716e-01f, 1.495399e-01f, 1.488079e-01f,
|
|
1.480754e-01f, 1.473427e-01f, 1.466096e-01f, 1.458761e-01f,
|
|
1.451423e-01f, 1.444082e-01f, 1.436737e-01f, 1.429389e-01f,
|
|
1.422038e-01f, 1.414683e-01f, 1.407325e-01f, 1.399963e-01f,
|
|
1.392598e-01f, 1.385230e-01f, 1.377859e-01f, 1.370485e-01f,
|
|
1.363107e-01f, 1.355726e-01f, 1.348342e-01f, 1.340954e-01f,
|
|
1.333564e-01f, 1.326170e-01f, 1.318773e-01f, 1.311374e-01f,
|
|
1.303971e-01f, 1.296565e-01f, 1.289156e-01f, 1.281743e-01f,
|
|
1.274328e-01f, 1.266910e-01f, 1.259489e-01f, 1.252065e-01f,
|
|
1.244638e-01f, 1.237208e-01f, 1.229775e-01f, 1.222340e-01f,
|
|
1.214901e-01f, 1.207459e-01f, 1.200015e-01f, 1.192568e-01f,
|
|
1.185118e-01f, 1.177665e-01f, 1.170210e-01f, 1.162752e-01f,
|
|
1.155291e-01f, 1.147827e-01f, 1.140360e-01f, 1.132891e-01f,
|
|
1.125420e-01f, 1.117945e-01f, 1.110468e-01f, 1.102988e-01f,
|
|
1.095506e-01f, 1.088021e-01f, 1.080534e-01f, 1.073044e-01f,
|
|
1.065552e-01f, 1.058057e-01f, 1.050559e-01f, 1.043059e-01f,
|
|
1.035557e-01f, 1.028052e-01f, 1.020545e-01f, 1.013035e-01f,
|
|
1.005523e-01f, 9.980088e-02f, 9.904921e-02f, 9.829730e-02f,
|
|
9.754516e-02f, 9.679279e-02f, 9.604020e-02f, 9.528738e-02f,
|
|
9.453433e-02f, 9.378106e-02f, 9.302758e-02f, 9.227387e-02f,
|
|
9.151994e-02f, 9.076580e-02f, 9.001145e-02f, 8.925689e-02f,
|
|
8.850211e-02f, 8.774713e-02f, 8.699194e-02f, 8.623654e-02f,
|
|
8.548094e-02f, 8.472515e-02f, 8.396915e-02f, 8.321295e-02f,
|
|
8.245656e-02f, 8.169997e-02f, 8.094320e-02f, 8.018623e-02f,
|
|
7.942907e-02f, 7.867173e-02f, 7.791420e-02f, 7.715649e-02f,
|
|
7.639859e-02f, 7.564052e-02f, 7.488227e-02f, 7.412384e-02f,
|
|
7.336524e-02f, 7.260646e-02f, 7.184752e-02f, 7.108840e-02f,
|
|
7.032912e-02f, 6.956967e-02f, 6.881006e-02f, 6.805029e-02f,
|
|
6.729035e-02f, 6.653026e-02f, 6.577001e-02f, 6.500961e-02f,
|
|
6.424906e-02f, 6.348835e-02f, 6.272749e-02f, 6.196649e-02f,
|
|
6.120534e-02f, 6.044404e-02f, 5.968261e-02f, 5.892103e-02f,
|
|
5.815932e-02f, 5.739746e-02f, 5.663548e-02f, 5.587336e-02f,
|
|
5.511110e-02f, 5.434872e-02f, 5.358621e-02f, 5.282358e-02f,
|
|
5.206082e-02f, 5.129793e-02f, 5.053493e-02f, 4.977181e-02f,
|
|
4.900857e-02f, 4.824522e-02f, 4.748175e-02f, 4.671817e-02f,
|
|
4.595448e-02f, 4.519068e-02f, 4.442678e-02f, 4.366277e-02f,
|
|
4.289866e-02f, 4.213444e-02f, 4.137013e-02f, 4.060572e-02f,
|
|
3.984122e-02f, 3.907662e-02f, 3.831193e-02f, 3.754715e-02f,
|
|
3.678228e-02f, 3.601733e-02f, 3.525229e-02f, 3.448716e-02f,
|
|
3.372196e-02f, 3.295668e-02f, 3.219132e-02f, 3.142588e-02f,
|
|
3.066037e-02f, 2.989479e-02f, 2.912913e-02f, 2.836341e-02f,
|
|
2.759762e-02f, 2.683177e-02f, 2.606585e-02f, 2.529987e-02f,
|
|
2.453384e-02f, 2.376774e-02f, 2.300159e-02f, 2.223539e-02f,
|
|
2.146913e-02f, 2.070282e-02f, 1.993646e-02f, 1.917006e-02f,
|
|
1.840361e-02f, 1.763712e-02f, 1.687059e-02f, 1.610401e-02f,
|
|
1.533740e-02f, 1.457075e-02f, 1.380407e-02f, 1.303736e-02f,
|
|
1.227061e-02f, 1.150384e-02f, 1.073704e-02f, 9.970214e-03f,
|
|
9.203365e-03f, 8.436494e-03f, 7.669603e-03f, 6.902694e-03f,
|
|
6.135769e-03f, 5.368830e-03f, 4.601877e-03f, 3.834914e-03f,
|
|
3.067942e-03f, 2.300963e-03f, 1.533978e-03f, 7.669901e-04f};
|
|
|
|
|
|
|
|
|
|
static void AUP_FFTW_cftleaf(int n, int isplt, float* a, int nw, float* w);
|
|
static void AUP_FFTW_cftf1st(int n, float* a, float* w);
|
|
static void AUP_FFTW_cftrec4(int n, float* a, int nw, float* w);
|
|
static void AUP_FFTW_cftfsub(int n, float* a, int* ip, int nw, float* w);
|
|
static void AUP_FFTW_cftbsub(int n, float* a, int* ip, int nw, float* w);
|
|
static void AUP_FFTW_bitrv2(int n, int* ip, float* a);
|
|
static void AUP_FFTW_bitrv2conj(int n, int* ip, float* a);
|
|
static void AUP_FFTW_bitrv216(float* a);
|
|
static void AUP_FFTW_bitrv216neg(float* a);
|
|
static void AUP_FFTW_bitrv208(float* a);
|
|
static void AUP_FFTW_bitrv208neg(float* a);
|
|
static void AUP_FFTW_cftb1st(int n, float* a, float* w);
|
|
static int AUP_FFTW_cfttree(int n, int j, int k, float* a, int nw, float* w);
|
|
static void AUP_FFTW_cftmdl1(int n, float* a, float* w);
|
|
static void AUP_FFTW_cftmdl2(int n, float* a, float* w);
|
|
static void AUP_FFTW_cftfx41(int n, float* a, int nw, float* w);
|
|
static void AUP_FFTW_cftf161(float* a, float* w);
|
|
static void AUP_FFTW_cftf162(float* a, float* w);
|
|
static void AUP_FFTW_cftf081(float* a, float* w);
|
|
static void AUP_FFTW_cftf082(float* a, float* w);
|
|
static void AUP_FFTW_cftf040(float* a);
|
|
static void AUP_FFTW_cftb040(float* a);
|
|
static void AUP_FFTW_cftx020(float* a);
|
|
static void AUP_FFTW_rftfsub(int n, float* a, int nc, float* c);
|
|
static void AUP_FFTW_rftbsub(int n, float* a, int nc, float* c);
|
|
static void AUP_FFTW_dctsub(int n, float* a, int nc, float* c);
|
|
static void AUP_FFTW_dstsub(int n, float* a, int nc, float* c);
|
|
static void AUP_FFTW_rdft(int n, int isgn, float* a, int* ip, float* w);
|
|
|
|
static void AUP_FFTW_cftleaf(int n, int isplt, float* a, int nw, float* w) {
|
|
if (n == 512) {
|
|
AUP_FFTW_cftmdl1(128, a, &w[nw - 64]);
|
|
AUP_FFTW_cftf161(a, &w[nw - 8]);
|
|
AUP_FFTW_cftf162(&a[32], &w[nw - 32]);
|
|
AUP_FFTW_cftf161(&a[64], &w[nw - 8]);
|
|
AUP_FFTW_cftf161(&a[96], &w[nw - 8]);
|
|
AUP_FFTW_cftmdl2(128, &a[128], &w[nw - 128]);
|
|
AUP_FFTW_cftf161(&a[128], &w[nw - 8]);
|
|
AUP_FFTW_cftf162(&a[160], &w[nw - 32]);
|
|
AUP_FFTW_cftf161(&a[192], &w[nw - 8]);
|
|
AUP_FFTW_cftf162(&a[224], &w[nw - 32]);
|
|
AUP_FFTW_cftmdl1(128, &a[256], &w[nw - 64]);
|
|
AUP_FFTW_cftf161(&a[256], &w[nw - 8]);
|
|
AUP_FFTW_cftf162(&a[288], &w[nw - 32]);
|
|
AUP_FFTW_cftf161(&a[320], &w[nw - 8]);
|
|
AUP_FFTW_cftf161(&a[352], &w[nw - 8]);
|
|
if (isplt != 0) {
|
|
AUP_FFTW_cftmdl1(128, &a[384], &w[nw - 64]);
|
|
AUP_FFTW_cftf161(&a[480], &w[nw - 8]);
|
|
} else {
|
|
AUP_FFTW_cftmdl2(128, &a[384], &w[nw - 128]);
|
|
AUP_FFTW_cftf162(&a[480], &w[nw - 32]);
|
|
}
|
|
AUP_FFTW_cftf161(&a[384], &w[nw - 8]);
|
|
AUP_FFTW_cftf162(&a[416], &w[nw - 32]);
|
|
AUP_FFTW_cftf161(&a[448], &w[nw - 8]);
|
|
} else {
|
|
AUP_FFTW_cftmdl1(64, a, &w[nw - 32]);
|
|
AUP_FFTW_cftf081(a, &w[nw - 8]);
|
|
AUP_FFTW_cftf082(&a[16], &w[nw - 8]);
|
|
AUP_FFTW_cftf081(&a[32], &w[nw - 8]);
|
|
AUP_FFTW_cftf081(&a[48], &w[nw - 8]);
|
|
AUP_FFTW_cftmdl2(64, &a[64], &w[nw - 64]);
|
|
AUP_FFTW_cftf081(&a[64], &w[nw - 8]);
|
|
AUP_FFTW_cftf082(&a[80], &w[nw - 8]);
|
|
AUP_FFTW_cftf081(&a[96], &w[nw - 8]);
|
|
AUP_FFTW_cftf082(&a[112], &w[nw - 8]);
|
|
AUP_FFTW_cftmdl1(64, &a[128], &w[nw - 32]);
|
|
AUP_FFTW_cftf081(&a[128], &w[nw - 8]);
|
|
AUP_FFTW_cftf082(&a[144], &w[nw - 8]);
|
|
AUP_FFTW_cftf081(&a[160], &w[nw - 8]);
|
|
AUP_FFTW_cftf081(&a[176], &w[nw - 8]);
|
|
if (isplt != 0) {
|
|
AUP_FFTW_cftmdl1(64, &a[192], &w[nw - 32]);
|
|
AUP_FFTW_cftf081(&a[240], &w[nw - 8]);
|
|
} else {
|
|
AUP_FFTW_cftmdl2(64, &a[192], &w[nw - 64]);
|
|
AUP_FFTW_cftf082(&a[240], &w[nw - 8]);
|
|
}
|
|
AUP_FFTW_cftf081(&a[192], &w[nw - 8]);
|
|
AUP_FFTW_cftf082(&a[208], &w[nw - 8]);
|
|
AUP_FFTW_cftf081(&a[224], &w[nw - 8]);
|
|
}
|
|
}
|
|
|
|
static void AUP_FFTW_cftf1st(int n, float* a, float* w) {
|
|
int j, j0, j1, j2, j3, k, m, mh;
|
|
float wn4r, csc1, csc3, wk1r, wk1i, wk3r, wk3i, wd1r, wd1i, wd3r, wd3i;
|
|
float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, y0r, y0i, y1r, y1i, y2r, y2i,
|
|
y3r, y3i;
|
|
|
|
mh = n >> 3;
|
|
m = 2 * mh;
|
|
j1 = m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[0] + a[j2];
|
|
x0i = a[1] + a[j2 + 1];
|
|
x1r = a[0] - a[j2];
|
|
x1i = a[1] - a[j2 + 1];
|
|
x2r = a[j1] + a[j3];
|
|
x2i = a[j1 + 1] + a[j3 + 1];
|
|
x3r = a[j1] - a[j3];
|
|
x3i = a[j1 + 1] - a[j3 + 1];
|
|
a[0] = x0r + x2r;
|
|
a[1] = x0i + x2i;
|
|
a[j1] = x0r - x2r;
|
|
a[j1 + 1] = x0i - x2i;
|
|
a[j2] = x1r - x3i;
|
|
a[j2 + 1] = x1i + x3r;
|
|
a[j3] = x1r + x3i;
|
|
a[j3 + 1] = x1i - x3r;
|
|
wn4r = w[1];
|
|
csc1 = w[2];
|
|
csc3 = w[3];
|
|
wd1r = 1;
|
|
wd1i = 0;
|
|
wd3r = 1;
|
|
wd3i = 0;
|
|
k = 0;
|
|
for (j = 2; j < mh - 2; j += 4) {
|
|
k += 4;
|
|
wk1r = csc1 * (wd1r + w[k]);
|
|
wk1i = csc1 * (wd1i + w[k + 1]);
|
|
wk3r = csc3 * (wd3r + w[k + 2]);
|
|
wk3i = csc3 * (wd3i + w[k + 3]);
|
|
wd1r = w[k];
|
|
wd1i = w[k + 1];
|
|
wd3r = w[k + 2];
|
|
wd3i = w[k + 3];
|
|
j1 = j + m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[j] + a[j2];
|
|
x0i = a[j + 1] + a[j2 + 1];
|
|
x1r = a[j] - a[j2];
|
|
x1i = a[j + 1] - a[j2 + 1];
|
|
y0r = a[j + 2] + a[j2 + 2];
|
|
y0i = a[j + 3] + a[j2 + 3];
|
|
y1r = a[j + 2] - a[j2 + 2];
|
|
y1i = a[j + 3] - a[j2 + 3];
|
|
x2r = a[j1] + a[j3];
|
|
x2i = a[j1 + 1] + a[j3 + 1];
|
|
x3r = a[j1] - a[j3];
|
|
x3i = a[j1 + 1] - a[j3 + 1];
|
|
y2r = a[j1 + 2] + a[j3 + 2];
|
|
y2i = a[j1 + 3] + a[j3 + 3];
|
|
y3r = a[j1 + 2] - a[j3 + 2];
|
|
y3i = a[j1 + 3] - a[j3 + 3];
|
|
a[j] = x0r + x2r;
|
|
a[j + 1] = x0i + x2i;
|
|
a[j + 2] = y0r + y2r;
|
|
a[j + 3] = y0i + y2i;
|
|
a[j1] = x0r - x2r;
|
|
a[j1 + 1] = x0i - x2i;
|
|
a[j1 + 2] = y0r - y2r;
|
|
a[j1 + 3] = y0i - y2i;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i + x3r;
|
|
a[j2] = wk1r * x0r - wk1i * x0i;
|
|
a[j2 + 1] = wk1r * x0i + wk1i * x0r;
|
|
x0r = y1r - y3i;
|
|
x0i = y1i + y3r;
|
|
a[j2 + 2] = wd1r * x0r - wd1i * x0i;
|
|
a[j2 + 3] = wd1r * x0i + wd1i * x0r;
|
|
x0r = x1r + x3i;
|
|
x0i = x1i - x3r;
|
|
a[j3] = wk3r * x0r + wk3i * x0i;
|
|
a[j3 + 1] = wk3r * x0i - wk3i * x0r;
|
|
x0r = y1r + y3i;
|
|
x0i = y1i - y3r;
|
|
a[j3 + 2] = wd3r * x0r + wd3i * x0i;
|
|
a[j3 + 3] = wd3r * x0i - wd3i * x0r;
|
|
j0 = m - j;
|
|
j1 = j0 + m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[j0] + a[j2];
|
|
x0i = a[j0 + 1] + a[j2 + 1];
|
|
x1r = a[j0] - a[j2];
|
|
x1i = a[j0 + 1] - a[j2 + 1];
|
|
y0r = a[j0 - 2] + a[j2 - 2];
|
|
y0i = a[j0 - 1] + a[j2 - 1];
|
|
y1r = a[j0 - 2] - a[j2 - 2];
|
|
y1i = a[j0 - 1] - a[j2 - 1];
|
|
x2r = a[j1] + a[j3];
|
|
x2i = a[j1 + 1] + a[j3 + 1];
|
|
x3r = a[j1] - a[j3];
|
|
x3i = a[j1 + 1] - a[j3 + 1];
|
|
y2r = a[j1 - 2] + a[j3 - 2];
|
|
y2i = a[j1 - 1] + a[j3 - 1];
|
|
y3r = a[j1 - 2] - a[j3 - 2];
|
|
y3i = a[j1 - 1] - a[j3 - 1];
|
|
a[j0] = x0r + x2r;
|
|
a[j0 + 1] = x0i + x2i;
|
|
a[j0 - 2] = y0r + y2r;
|
|
a[j0 - 1] = y0i + y2i;
|
|
a[j1] = x0r - x2r;
|
|
a[j1 + 1] = x0i - x2i;
|
|
a[j1 - 2] = y0r - y2r;
|
|
a[j1 - 1] = y0i - y2i;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i + x3r;
|
|
a[j2] = wk1i * x0r - wk1r * x0i;
|
|
a[j2 + 1] = wk1i * x0i + wk1r * x0r;
|
|
x0r = y1r - y3i;
|
|
x0i = y1i + y3r;
|
|
a[j2 - 2] = wd1i * x0r - wd1r * x0i;
|
|
a[j2 - 1] = wd1i * x0i + wd1r * x0r;
|
|
x0r = x1r + x3i;
|
|
x0i = x1i - x3r;
|
|
a[j3] = wk3i * x0r + wk3r * x0i;
|
|
a[j3 + 1] = wk3i * x0i - wk3r * x0r;
|
|
x0r = y1r + y3i;
|
|
x0i = y1i - y3r;
|
|
a[j3 - 2] = wd3i * x0r + wd3r * x0i;
|
|
a[j3 - 1] = wd3i * x0i - wd3r * x0r;
|
|
}
|
|
wk1r = csc1 * (wd1r + wn4r);
|
|
wk1i = csc1 * (wd1i + wn4r);
|
|
wk3r = csc3 * (wd3r - wn4r);
|
|
wk3i = csc3 * (wd3i - wn4r);
|
|
j0 = mh;
|
|
j1 = j0 + m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[j0 - 2] + a[j2 - 2];
|
|
x0i = a[j0 - 1] + a[j2 - 1];
|
|
x1r = a[j0 - 2] - a[j2 - 2];
|
|
x1i = a[j0 - 1] - a[j2 - 1];
|
|
x2r = a[j1 - 2] + a[j3 - 2];
|
|
x2i = a[j1 - 1] + a[j3 - 1];
|
|
x3r = a[j1 - 2] - a[j3 - 2];
|
|
x3i = a[j1 - 1] - a[j3 - 1];
|
|
a[j0 - 2] = x0r + x2r;
|
|
a[j0 - 1] = x0i + x2i;
|
|
a[j1 - 2] = x0r - x2r;
|
|
a[j1 - 1] = x0i - x2i;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i + x3r;
|
|
a[j2 - 2] = wk1r * x0r - wk1i * x0i;
|
|
a[j2 - 1] = wk1r * x0i + wk1i * x0r;
|
|
x0r = x1r + x3i;
|
|
x0i = x1i - x3r;
|
|
a[j3 - 2] = wk3r * x0r + wk3i * x0i;
|
|
a[j3 - 1] = wk3r * x0i - wk3i * x0r;
|
|
x0r = a[j0] + a[j2];
|
|
x0i = a[j0 + 1] + a[j2 + 1];
|
|
x1r = a[j0] - a[j2];
|
|
x1i = a[j0 + 1] - a[j2 + 1];
|
|
x2r = a[j1] + a[j3];
|
|
x2i = a[j1 + 1] + a[j3 + 1];
|
|
x3r = a[j1] - a[j3];
|
|
x3i = a[j1 + 1] - a[j3 + 1];
|
|
a[j0] = x0r + x2r;
|
|
a[j0 + 1] = x0i + x2i;
|
|
a[j1] = x0r - x2r;
|
|
a[j1 + 1] = x0i - x2i;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i + x3r;
|
|
a[j2] = wn4r * (x0r - x0i);
|
|
a[j2 + 1] = wn4r * (x0i + x0r);
|
|
x0r = x1r + x3i;
|
|
x0i = x1i - x3r;
|
|
a[j3] = -wn4r * (x0r + x0i);
|
|
a[j3 + 1] = -wn4r * (x0i - x0r);
|
|
x0r = a[j0 + 2] + a[j2 + 2];
|
|
x0i = a[j0 + 3] + a[j2 + 3];
|
|
x1r = a[j0 + 2] - a[j2 + 2];
|
|
x1i = a[j0 + 3] - a[j2 + 3];
|
|
x2r = a[j1 + 2] + a[j3 + 2];
|
|
x2i = a[j1 + 3] + a[j3 + 3];
|
|
x3r = a[j1 + 2] - a[j3 + 2];
|
|
x3i = a[j1 + 3] - a[j3 + 3];
|
|
a[j0 + 2] = x0r + x2r;
|
|
a[j0 + 3] = x0i + x2i;
|
|
a[j1 + 2] = x0r - x2r;
|
|
a[j1 + 3] = x0i - x2i;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i + x3r;
|
|
a[j2 + 2] = wk1i * x0r - wk1r * x0i;
|
|
a[j2 + 3] = wk1i * x0i + wk1r * x0r;
|
|
x0r = x1r + x3i;
|
|
x0i = x1i - x3r;
|
|
a[j3 + 2] = wk3i * x0r + wk3r * x0i;
|
|
a[j3 + 3] = wk3i * x0i - wk3r * x0r;
|
|
}
|
|
|
|
static void AUP_FFTW_cftrec4(int n, float* a, int nw, float* w) {
|
|
int isplt, j, k, m;
|
|
|
|
m = n;
|
|
while (m > 512) {
|
|
m >>= 2;
|
|
AUP_FFTW_cftmdl1(m, &a[n - m], &w[nw - (m >> 1)]);
|
|
}
|
|
AUP_FFTW_cftleaf(m, 1, &a[n - m], nw, w);
|
|
k = 0;
|
|
for (j = n - m; j > 0; j -= m) {
|
|
k++;
|
|
isplt = AUP_FFTW_cfttree(m, j, k, a, nw, w);
|
|
AUP_FFTW_cftleaf(m, isplt, &a[j - m], nw, w);
|
|
}
|
|
}
|
|
|
|
static void AUP_FFTW_cftfsub(int n, float* a, int* ip, int nw, float* w) {
|
|
if (n > 8) {
|
|
if (n > 32) {
|
|
AUP_FFTW_cftf1st(n, a, &w[nw - (n >> 2)]);
|
|
if (n > 512) {
|
|
AUP_FFTW_cftrec4(n, a, nw, w);
|
|
} else if (n > 128) {
|
|
AUP_FFTW_cftleaf(n, 1, a, nw, w);
|
|
} else {
|
|
AUP_FFTW_cftfx41(n, a, nw, w);
|
|
}
|
|
AUP_FFTW_bitrv2(n, ip, a);
|
|
} else if (n == 32) {
|
|
AUP_FFTW_cftf161(a, &w[nw - 8]);
|
|
AUP_FFTW_bitrv216(a);
|
|
} else {
|
|
AUP_FFTW_cftf081(a, w);
|
|
AUP_FFTW_bitrv208(a);
|
|
}
|
|
} else if (n == 8) {
|
|
AUP_FFTW_cftf040(a);
|
|
} else if (n == 4) {
|
|
AUP_FFTW_cftx020(a);
|
|
}
|
|
}
|
|
|
|
static void AUP_FFTW_cftbsub(int n, float* a, int* ip, int nw, float* w) {
|
|
if (n > 8) {
|
|
if (n > 32) {
|
|
AUP_FFTW_cftb1st(n, a, &w[nw - (n >> 2)]);
|
|
if (n > 512) {
|
|
AUP_FFTW_cftrec4(n, a, nw, w);
|
|
} else if (n > 128) {
|
|
AUP_FFTW_cftleaf(n, 1, a, nw, w);
|
|
} else {
|
|
AUP_FFTW_cftfx41(n, a, nw, w);
|
|
}
|
|
AUP_FFTW_bitrv2conj(n, ip, a);
|
|
} else if (n == 32) {
|
|
AUP_FFTW_cftf161(a, &w[nw - 8]);
|
|
AUP_FFTW_bitrv216neg(a);
|
|
} else {
|
|
AUP_FFTW_cftf081(a, w);
|
|
AUP_FFTW_bitrv208neg(a);
|
|
}
|
|
} else if (n == 8) {
|
|
AUP_FFTW_cftb040(a);
|
|
} else if (n == 4) {
|
|
AUP_FFTW_cftx020(a);
|
|
}
|
|
}
|
|
|
|
static void AUP_FFTW_bitrv2(int n, int* ip, float* a) {
|
|
int j, j1, k, k1, l, m, nh, nm;
|
|
float xr, xi, yr, yi;
|
|
|
|
m = 1;
|
|
for (l = n >> 2; l > 8; l >>= 2) {
|
|
m <<= 1;
|
|
}
|
|
nh = n >> 1;
|
|
nm = 4 * m;
|
|
if (l == 8) {
|
|
for (k = 0; k < m; k++) {
|
|
for (j = 0; j < k; j++) {
|
|
j1 = 4 * j + 2 * ip[m + k];
|
|
k1 = 4 * k + 2 * ip[m + j];
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += 2 * nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 -= nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += 2 * nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nh;
|
|
k1 += 2;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 -= 2 * nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 += nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 -= 2 * nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += 2;
|
|
k1 += nh;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += 2 * nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 -= nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += 2 * nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nh;
|
|
k1 -= 2;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 -= 2 * nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 += nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 -= 2 * nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
}
|
|
k1 = 4 * k + 2 * ip[m + k];
|
|
j1 = k1 + 2;
|
|
k1 += nh;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += 2 * nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 -= nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= 2;
|
|
k1 -= nh;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nh + 2;
|
|
k1 += nh + 2;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nh - nm;
|
|
k1 += 2 * nm - 2;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
}
|
|
} else {
|
|
for (k = 0; k < m; k++) {
|
|
for (j = 0; j < k; j++) {
|
|
j1 = 4 * j + ip[m + k];
|
|
k1 = 4 * k + ip[m + j];
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nh;
|
|
k1 += 2;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 -= nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += 2;
|
|
k1 += nh;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nh;
|
|
k1 -= 2;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 -= nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
}
|
|
k1 = 4 * k + ip[m + k];
|
|
j1 = k1 + 2;
|
|
k1 += nh;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += nm;
|
|
xr = a[j1];
|
|
xi = a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
}
|
|
}
|
|
}
|
|
|
|
static void AUP_FFTW_bitrv2conj(int n, int* ip, float* a) {
|
|
int j, j1, k, k1, l, m, nh, nm;
|
|
float xr, xi, yr, yi;
|
|
|
|
m = 1;
|
|
for (l = n >> 2; l > 8; l >>= 2) {
|
|
m <<= 1;
|
|
}
|
|
nh = n >> 1;
|
|
nm = 4 * m;
|
|
if (l == 8) {
|
|
for (k = 0; k < m; k++) {
|
|
for (j = 0; j < k; j++) {
|
|
j1 = 4 * j + 2 * ip[m + k];
|
|
k1 = 4 * k + 2 * ip[m + j];
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += 2 * nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 -= nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += 2 * nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nh;
|
|
k1 += 2;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 -= 2 * nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 += nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 -= 2 * nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += 2;
|
|
k1 += nh;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += 2 * nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 -= nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += 2 * nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nh;
|
|
k1 -= 2;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 -= 2 * nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 += nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 -= 2 * nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
}
|
|
k1 = 4 * k + 2 * ip[m + k];
|
|
j1 = k1 + 2;
|
|
k1 += nh;
|
|
a[j1 - 1] = -a[j1 - 1];
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
a[k1 + 3] = -a[k1 + 3];
|
|
j1 += nm;
|
|
k1 += 2 * nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 -= nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= 2;
|
|
k1 -= nh;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nh + 2;
|
|
k1 += nh + 2;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nh - nm;
|
|
k1 += 2 * nm - 2;
|
|
a[j1 - 1] = -a[j1 - 1];
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
a[k1 + 3] = -a[k1 + 3];
|
|
}
|
|
} else {
|
|
for (k = 0; k < m; k++) {
|
|
for (j = 0; j < k; j++) {
|
|
j1 = 4 * j + ip[m + k];
|
|
k1 = 4 * k + ip[m + j];
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nh;
|
|
k1 += 2;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 -= nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += 2;
|
|
k1 += nh;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 += nm;
|
|
k1 += nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nh;
|
|
k1 -= 2;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
j1 -= nm;
|
|
k1 -= nm;
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
}
|
|
k1 = 4 * k + ip[m + k];
|
|
j1 = k1 + 2;
|
|
k1 += nh;
|
|
a[j1 - 1] = -a[j1 - 1];
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
a[k1 + 3] = -a[k1 + 3];
|
|
j1 += nm;
|
|
k1 += nm;
|
|
a[j1 - 1] = -a[j1 - 1];
|
|
xr = a[j1];
|
|
xi = -a[j1 + 1];
|
|
yr = a[k1];
|
|
yi = -a[k1 + 1];
|
|
a[j1] = yr;
|
|
a[j1 + 1] = yi;
|
|
a[k1] = xr;
|
|
a[k1 + 1] = xi;
|
|
a[k1 + 3] = -a[k1 + 3];
|
|
}
|
|
}
|
|
}
|
|
|
|
static void AUP_FFTW_bitrv216(float* a) {
|
|
float x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i, x5r, x5i, x7r, x7i, x8r, x8i,
|
|
x10r, x10i, x11r, x11i, x12r, x12i, x13r, x13i, x14r, x14i;
|
|
|
|
x1r = a[2];
|
|
x1i = a[3];
|
|
x2r = a[4];
|
|
x2i = a[5];
|
|
x3r = a[6];
|
|
x3i = a[7];
|
|
x4r = a[8];
|
|
x4i = a[9];
|
|
x5r = a[10];
|
|
x5i = a[11];
|
|
x7r = a[14];
|
|
x7i = a[15];
|
|
x8r = a[16];
|
|
x8i = a[17];
|
|
x10r = a[20];
|
|
x10i = a[21];
|
|
x11r = a[22];
|
|
x11i = a[23];
|
|
x12r = a[24];
|
|
x12i = a[25];
|
|
x13r = a[26];
|
|
x13i = a[27];
|
|
x14r = a[28];
|
|
x14i = a[29];
|
|
a[2] = x8r;
|
|
a[3] = x8i;
|
|
a[4] = x4r;
|
|
a[5] = x4i;
|
|
a[6] = x12r;
|
|
a[7] = x12i;
|
|
a[8] = x2r;
|
|
a[9] = x2i;
|
|
a[10] = x10r;
|
|
a[11] = x10i;
|
|
a[14] = x14r;
|
|
a[15] = x14i;
|
|
a[16] = x1r;
|
|
a[17] = x1i;
|
|
a[20] = x5r;
|
|
a[21] = x5i;
|
|
a[22] = x13r;
|
|
a[23] = x13i;
|
|
a[24] = x3r;
|
|
a[25] = x3i;
|
|
a[26] = x11r;
|
|
a[27] = x11i;
|
|
a[28] = x7r;
|
|
a[29] = x7i;
|
|
}
|
|
|
|
static void AUP_FFTW_bitrv216neg(float* a) {
|
|
float x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i, x5r, x5i, x6r, x6i, x7r, x7i,
|
|
x8r, x8i, x9r, x9i, x10r, x10i, x11r, x11i, x12r, x12i, x13r, x13i, x14r,
|
|
x14i, x15r, x15i;
|
|
|
|
x1r = a[2];
|
|
x1i = a[3];
|
|
x2r = a[4];
|
|
x2i = a[5];
|
|
x3r = a[6];
|
|
x3i = a[7];
|
|
x4r = a[8];
|
|
x4i = a[9];
|
|
x5r = a[10];
|
|
x5i = a[11];
|
|
x6r = a[12];
|
|
x6i = a[13];
|
|
x7r = a[14];
|
|
x7i = a[15];
|
|
x8r = a[16];
|
|
x8i = a[17];
|
|
x9r = a[18];
|
|
x9i = a[19];
|
|
x10r = a[20];
|
|
x10i = a[21];
|
|
x11r = a[22];
|
|
x11i = a[23];
|
|
x12r = a[24];
|
|
x12i = a[25];
|
|
x13r = a[26];
|
|
x13i = a[27];
|
|
x14r = a[28];
|
|
x14i = a[29];
|
|
x15r = a[30];
|
|
x15i = a[31];
|
|
a[2] = x15r;
|
|
a[3] = x15i;
|
|
a[4] = x7r;
|
|
a[5] = x7i;
|
|
a[6] = x11r;
|
|
a[7] = x11i;
|
|
a[8] = x3r;
|
|
a[9] = x3i;
|
|
a[10] = x13r;
|
|
a[11] = x13i;
|
|
a[12] = x5r;
|
|
a[13] = x5i;
|
|
a[14] = x9r;
|
|
a[15] = x9i;
|
|
a[16] = x1r;
|
|
a[17] = x1i;
|
|
a[18] = x14r;
|
|
a[19] = x14i;
|
|
a[20] = x6r;
|
|
a[21] = x6i;
|
|
a[22] = x10r;
|
|
a[23] = x10i;
|
|
a[24] = x2r;
|
|
a[25] = x2i;
|
|
a[26] = x12r;
|
|
a[27] = x12i;
|
|
a[28] = x4r;
|
|
a[29] = x4i;
|
|
a[30] = x8r;
|
|
a[31] = x8i;
|
|
}
|
|
|
|
static void AUP_FFTW_bitrv208(float* a) {
|
|
float x1r, x1i, x3r, x3i, x4r, x4i, x6r, x6i;
|
|
|
|
x1r = a[2];
|
|
x1i = a[3];
|
|
x3r = a[6];
|
|
x3i = a[7];
|
|
x4r = a[8];
|
|
x4i = a[9];
|
|
x6r = a[12];
|
|
x6i = a[13];
|
|
a[2] = x4r;
|
|
a[3] = x4i;
|
|
a[6] = x6r;
|
|
a[7] = x6i;
|
|
a[8] = x1r;
|
|
a[9] = x1i;
|
|
a[12] = x3r;
|
|
a[13] = x3i;
|
|
}
|
|
|
|
static void AUP_FFTW_bitrv208neg(float* a) {
|
|
float x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i, x5r, x5i, x6r, x6i, x7r, x7i;
|
|
|
|
x1r = a[2];
|
|
x1i = a[3];
|
|
x2r = a[4];
|
|
x2i = a[5];
|
|
x3r = a[6];
|
|
x3i = a[7];
|
|
x4r = a[8];
|
|
x4i = a[9];
|
|
x5r = a[10];
|
|
x5i = a[11];
|
|
x6r = a[12];
|
|
x6i = a[13];
|
|
x7r = a[14];
|
|
x7i = a[15];
|
|
a[2] = x7r;
|
|
a[3] = x7i;
|
|
a[4] = x3r;
|
|
a[5] = x3i;
|
|
a[6] = x5r;
|
|
a[7] = x5i;
|
|
a[8] = x1r;
|
|
a[9] = x1i;
|
|
a[10] = x6r;
|
|
a[11] = x6i;
|
|
a[12] = x2r;
|
|
a[13] = x2i;
|
|
a[14] = x4r;
|
|
a[15] = x4i;
|
|
}
|
|
|
|
static void AUP_FFTW_cftb1st(int n, float* a, float* w) {
|
|
int j, j0, j1, j2, j3, k, m, mh;
|
|
float wn4r, csc1, csc3, wk1r, wk1i, wk3r, wk3i, wd1r, wd1i, wd3r, wd3i;
|
|
float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, y0r, y0i, y1r, y1i, y2r, y2i,
|
|
y3r, y3i;
|
|
|
|
mh = n >> 3;
|
|
m = 2 * mh;
|
|
j1 = m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[0] + a[j2];
|
|
x0i = -a[1] - a[j2 + 1];
|
|
x1r = a[0] - a[j2];
|
|
x1i = -a[1] + a[j2 + 1];
|
|
x2r = a[j1] + a[j3];
|
|
x2i = a[j1 + 1] + a[j3 + 1];
|
|
x3r = a[j1] - a[j3];
|
|
x3i = a[j1 + 1] - a[j3 + 1];
|
|
a[0] = x0r + x2r;
|
|
a[1] = x0i - x2i;
|
|
a[j1] = x0r - x2r;
|
|
a[j1 + 1] = x0i + x2i;
|
|
a[j2] = x1r + x3i;
|
|
a[j2 + 1] = x1i + x3r;
|
|
a[j3] = x1r - x3i;
|
|
a[j3 + 1] = x1i - x3r;
|
|
wn4r = w[1];
|
|
csc1 = w[2];
|
|
csc3 = w[3];
|
|
wd1r = 1;
|
|
wd1i = 0;
|
|
wd3r = 1;
|
|
wd3i = 0;
|
|
k = 0;
|
|
for (j = 2; j < mh - 2; j += 4) {
|
|
k += 4;
|
|
wk1r = csc1 * (wd1r + w[k]);
|
|
wk1i = csc1 * (wd1i + w[k + 1]);
|
|
wk3r = csc3 * (wd3r + w[k + 2]);
|
|
wk3i = csc3 * (wd3i + w[k + 3]);
|
|
wd1r = w[k];
|
|
wd1i = w[k + 1];
|
|
wd3r = w[k + 2];
|
|
wd3i = w[k + 3];
|
|
j1 = j + m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[j] + a[j2];
|
|
x0i = -a[j + 1] - a[j2 + 1];
|
|
x1r = a[j] - a[j2];
|
|
x1i = -a[j + 1] + a[j2 + 1];
|
|
y0r = a[j + 2] + a[j2 + 2];
|
|
y0i = -a[j + 3] - a[j2 + 3];
|
|
y1r = a[j + 2] - a[j2 + 2];
|
|
y1i = -a[j + 3] + a[j2 + 3];
|
|
x2r = a[j1] + a[j3];
|
|
x2i = a[j1 + 1] + a[j3 + 1];
|
|
x3r = a[j1] - a[j3];
|
|
x3i = a[j1 + 1] - a[j3 + 1];
|
|
y2r = a[j1 + 2] + a[j3 + 2];
|
|
y2i = a[j1 + 3] + a[j3 + 3];
|
|
y3r = a[j1 + 2] - a[j3 + 2];
|
|
y3i = a[j1 + 3] - a[j3 + 3];
|
|
a[j] = x0r + x2r;
|
|
a[j + 1] = x0i - x2i;
|
|
a[j + 2] = y0r + y2r;
|
|
a[j + 3] = y0i - y2i;
|
|
a[j1] = x0r - x2r;
|
|
a[j1 + 1] = x0i + x2i;
|
|
a[j1 + 2] = y0r - y2r;
|
|
a[j1 + 3] = y0i + y2i;
|
|
x0r = x1r + x3i;
|
|
x0i = x1i + x3r;
|
|
a[j2] = wk1r * x0r - wk1i * x0i;
|
|
a[j2 + 1] = wk1r * x0i + wk1i * x0r;
|
|
x0r = y1r + y3i;
|
|
x0i = y1i + y3r;
|
|
a[j2 + 2] = wd1r * x0r - wd1i * x0i;
|
|
a[j2 + 3] = wd1r * x0i + wd1i * x0r;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i - x3r;
|
|
a[j3] = wk3r * x0r + wk3i * x0i;
|
|
a[j3 + 1] = wk3r * x0i - wk3i * x0r;
|
|
x0r = y1r - y3i;
|
|
x0i = y1i - y3r;
|
|
a[j3 + 2] = wd3r * x0r + wd3i * x0i;
|
|
a[j3 + 3] = wd3r * x0i - wd3i * x0r;
|
|
j0 = m - j;
|
|
j1 = j0 + m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[j0] + a[j2];
|
|
x0i = -a[j0 + 1] - a[j2 + 1];
|
|
x1r = a[j0] - a[j2];
|
|
x1i = -a[j0 + 1] + a[j2 + 1];
|
|
y0r = a[j0 - 2] + a[j2 - 2];
|
|
y0i = -a[j0 - 1] - a[j2 - 1];
|
|
y1r = a[j0 - 2] - a[j2 - 2];
|
|
y1i = -a[j0 - 1] + a[j2 - 1];
|
|
x2r = a[j1] + a[j3];
|
|
x2i = a[j1 + 1] + a[j3 + 1];
|
|
x3r = a[j1] - a[j3];
|
|
x3i = a[j1 + 1] - a[j3 + 1];
|
|
y2r = a[j1 - 2] + a[j3 - 2];
|
|
y2i = a[j1 - 1] + a[j3 - 1];
|
|
y3r = a[j1 - 2] - a[j3 - 2];
|
|
y3i = a[j1 - 1] - a[j3 - 1];
|
|
a[j0] = x0r + x2r;
|
|
a[j0 + 1] = x0i - x2i;
|
|
a[j0 - 2] = y0r + y2r;
|
|
a[j0 - 1] = y0i - y2i;
|
|
a[j1] = x0r - x2r;
|
|
a[j1 + 1] = x0i + x2i;
|
|
a[j1 - 2] = y0r - y2r;
|
|
a[j1 - 1] = y0i + y2i;
|
|
x0r = x1r + x3i;
|
|
x0i = x1i + x3r;
|
|
a[j2] = wk1i * x0r - wk1r * x0i;
|
|
a[j2 + 1] = wk1i * x0i + wk1r * x0r;
|
|
x0r = y1r + y3i;
|
|
x0i = y1i + y3r;
|
|
a[j2 - 2] = wd1i * x0r - wd1r * x0i;
|
|
a[j2 - 1] = wd1i * x0i + wd1r * x0r;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i - x3r;
|
|
a[j3] = wk3i * x0r + wk3r * x0i;
|
|
a[j3 + 1] = wk3i * x0i - wk3r * x0r;
|
|
x0r = y1r - y3i;
|
|
x0i = y1i - y3r;
|
|
a[j3 - 2] = wd3i * x0r + wd3r * x0i;
|
|
a[j3 - 1] = wd3i * x0i - wd3r * x0r;
|
|
}
|
|
wk1r = csc1 * (wd1r + wn4r);
|
|
wk1i = csc1 * (wd1i + wn4r);
|
|
wk3r = csc3 * (wd3r - wn4r);
|
|
wk3i = csc3 * (wd3i - wn4r);
|
|
j0 = mh;
|
|
j1 = j0 + m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[j0 - 2] + a[j2 - 2];
|
|
x0i = -a[j0 - 1] - a[j2 - 1];
|
|
x1r = a[j0 - 2] - a[j2 - 2];
|
|
x1i = -a[j0 - 1] + a[j2 - 1];
|
|
x2r = a[j1 - 2] + a[j3 - 2];
|
|
x2i = a[j1 - 1] + a[j3 - 1];
|
|
x3r = a[j1 - 2] - a[j3 - 2];
|
|
x3i = a[j1 - 1] - a[j3 - 1];
|
|
a[j0 - 2] = x0r + x2r;
|
|
a[j0 - 1] = x0i - x2i;
|
|
a[j1 - 2] = x0r - x2r;
|
|
a[j1 - 1] = x0i + x2i;
|
|
x0r = x1r + x3i;
|
|
x0i = x1i + x3r;
|
|
a[j2 - 2] = wk1r * x0r - wk1i * x0i;
|
|
a[j2 - 1] = wk1r * x0i + wk1i * x0r;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i - x3r;
|
|
a[j3 - 2] = wk3r * x0r + wk3i * x0i;
|
|
a[j3 - 1] = wk3r * x0i - wk3i * x0r;
|
|
x0r = a[j0] + a[j2];
|
|
x0i = -a[j0 + 1] - a[j2 + 1];
|
|
x1r = a[j0] - a[j2];
|
|
x1i = -a[j0 + 1] + a[j2 + 1];
|
|
x2r = a[j1] + a[j3];
|
|
x2i = a[j1 + 1] + a[j3 + 1];
|
|
x3r = a[j1] - a[j3];
|
|
x3i = a[j1 + 1] - a[j3 + 1];
|
|
a[j0] = x0r + x2r;
|
|
a[j0 + 1] = x0i - x2i;
|
|
a[j1] = x0r - x2r;
|
|
a[j1 + 1] = x0i + x2i;
|
|
x0r = x1r + x3i;
|
|
x0i = x1i + x3r;
|
|
a[j2] = wn4r * (x0r - x0i);
|
|
a[j2 + 1] = wn4r * (x0i + x0r);
|
|
x0r = x1r - x3i;
|
|
x0i = x1i - x3r;
|
|
a[j3] = -wn4r * (x0r + x0i);
|
|
a[j3 + 1] = -wn4r * (x0i - x0r);
|
|
x0r = a[j0 + 2] + a[j2 + 2];
|
|
x0i = -a[j0 + 3] - a[j2 + 3];
|
|
x1r = a[j0 + 2] - a[j2 + 2];
|
|
x1i = -a[j0 + 3] + a[j2 + 3];
|
|
x2r = a[j1 + 2] + a[j3 + 2];
|
|
x2i = a[j1 + 3] + a[j3 + 3];
|
|
x3r = a[j1 + 2] - a[j3 + 2];
|
|
x3i = a[j1 + 3] - a[j3 + 3];
|
|
a[j0 + 2] = x0r + x2r;
|
|
a[j0 + 3] = x0i - x2i;
|
|
a[j1 + 2] = x0r - x2r;
|
|
a[j1 + 3] = x0i + x2i;
|
|
x0r = x1r + x3i;
|
|
x0i = x1i + x3r;
|
|
a[j2 + 2] = wk1i * x0r - wk1r * x0i;
|
|
a[j2 + 3] = wk1i * x0i + wk1r * x0r;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i - x3r;
|
|
a[j3 + 2] = wk3i * x0r + wk3r * x0i;
|
|
a[j3 + 3] = wk3i * x0i - wk3r * x0r;
|
|
}
|
|
|
|
static int AUP_FFTW_cfttree(int n, int j, int k, float* a, int nw, float* w) {
|
|
int i, isplt, m;
|
|
|
|
if ((k & 3) != 0) {
|
|
isplt = k & 1;
|
|
if (isplt != 0) {
|
|
AUP_FFTW_cftmdl1(n, &a[j - n], &w[nw - (n >> 1)]);
|
|
} else {
|
|
AUP_FFTW_cftmdl2(n, &a[j - n], &w[nw - n]);
|
|
}
|
|
} else {
|
|
m = n;
|
|
for (i = k; (i & 3) == 0; i >>= 2) {
|
|
m <<= 2;
|
|
}
|
|
isplt = i & 1;
|
|
if (isplt != 0) {
|
|
while (m > 128) {
|
|
AUP_FFTW_cftmdl1(m, &a[j - m], &w[nw - (m >> 1)]);
|
|
m >>= 2;
|
|
}
|
|
} else {
|
|
while (m > 128) {
|
|
AUP_FFTW_cftmdl2(m, &a[j - m], &w[nw - m]);
|
|
m >>= 2;
|
|
}
|
|
}
|
|
}
|
|
return isplt;
|
|
}
|
|
|
|
static void AUP_FFTW_cftmdl1(int n, float* a, float* w) {
|
|
int j, j0, j1, j2, j3, k, m, mh;
|
|
float wn4r, wk1r, wk1i, wk3r, wk3i;
|
|
float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
|
|
|
|
mh = n >> 3;
|
|
m = 2 * mh;
|
|
j1 = m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[0] + a[j2];
|
|
x0i = a[1] + a[j2 + 1];
|
|
x1r = a[0] - a[j2];
|
|
x1i = a[1] - a[j2 + 1];
|
|
x2r = a[j1] + a[j3];
|
|
x2i = a[j1 + 1] + a[j3 + 1];
|
|
x3r = a[j1] - a[j3];
|
|
x3i = a[j1 + 1] - a[j3 + 1];
|
|
a[0] = x0r + x2r;
|
|
a[1] = x0i + x2i;
|
|
a[j1] = x0r - x2r;
|
|
a[j1 + 1] = x0i - x2i;
|
|
a[j2] = x1r - x3i;
|
|
a[j2 + 1] = x1i + x3r;
|
|
a[j3] = x1r + x3i;
|
|
a[j3 + 1] = x1i - x3r;
|
|
wn4r = w[1];
|
|
k = 0;
|
|
for (j = 2; j < mh; j += 2) {
|
|
k += 4;
|
|
wk1r = w[k];
|
|
wk1i = w[k + 1];
|
|
wk3r = w[k + 2];
|
|
wk3i = w[k + 3];
|
|
j1 = j + m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[j] + a[j2];
|
|
x0i = a[j + 1] + a[j2 + 1];
|
|
x1r = a[j] - a[j2];
|
|
x1i = a[j + 1] - a[j2 + 1];
|
|
x2r = a[j1] + a[j3];
|
|
x2i = a[j1 + 1] + a[j3 + 1];
|
|
x3r = a[j1] - a[j3];
|
|
x3i = a[j1 + 1] - a[j3 + 1];
|
|
a[j] = x0r + x2r;
|
|
a[j + 1] = x0i + x2i;
|
|
a[j1] = x0r - x2r;
|
|
a[j1 + 1] = x0i - x2i;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i + x3r;
|
|
a[j2] = wk1r * x0r - wk1i * x0i;
|
|
a[j2 + 1] = wk1r * x0i + wk1i * x0r;
|
|
x0r = x1r + x3i;
|
|
x0i = x1i - x3r;
|
|
a[j3] = wk3r * x0r + wk3i * x0i;
|
|
a[j3 + 1] = wk3r * x0i - wk3i * x0r;
|
|
j0 = m - j;
|
|
j1 = j0 + m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[j0] + a[j2];
|
|
x0i = a[j0 + 1] + a[j2 + 1];
|
|
x1r = a[j0] - a[j2];
|
|
x1i = a[j0 + 1] - a[j2 + 1];
|
|
x2r = a[j1] + a[j3];
|
|
x2i = a[j1 + 1] + a[j3 + 1];
|
|
x3r = a[j1] - a[j3];
|
|
x3i = a[j1 + 1] - a[j3 + 1];
|
|
a[j0] = x0r + x2r;
|
|
a[j0 + 1] = x0i + x2i;
|
|
a[j1] = x0r - x2r;
|
|
a[j1 + 1] = x0i - x2i;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i + x3r;
|
|
a[j2] = wk1i * x0r - wk1r * x0i;
|
|
a[j2 + 1] = wk1i * x0i + wk1r * x0r;
|
|
x0r = x1r + x3i;
|
|
x0i = x1i - x3r;
|
|
a[j3] = wk3i * x0r + wk3r * x0i;
|
|
a[j3 + 1] = wk3i * x0i - wk3r * x0r;
|
|
}
|
|
j0 = mh;
|
|
j1 = j0 + m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[j0] + a[j2];
|
|
x0i = a[j0 + 1] + a[j2 + 1];
|
|
x1r = a[j0] - a[j2];
|
|
x1i = a[j0 + 1] - a[j2 + 1];
|
|
x2r = a[j1] + a[j3];
|
|
x2i = a[j1 + 1] + a[j3 + 1];
|
|
x3r = a[j1] - a[j3];
|
|
x3i = a[j1 + 1] - a[j3 + 1];
|
|
a[j0] = x0r + x2r;
|
|
a[j0 + 1] = x0i + x2i;
|
|
a[j1] = x0r - x2r;
|
|
a[j1 + 1] = x0i - x2i;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i + x3r;
|
|
a[j2] = wn4r * (x0r - x0i);
|
|
a[j2 + 1] = wn4r * (x0i + x0r);
|
|
x0r = x1r + x3i;
|
|
x0i = x1i - x3r;
|
|
a[j3] = -wn4r * (x0r + x0i);
|
|
a[j3 + 1] = -wn4r * (x0i - x0r);
|
|
}
|
|
|
|
static void AUP_FFTW_cftmdl2(int n, float* a, float* w) {
|
|
int j, j0, j1, j2, j3, k, kr, m, mh;
|
|
float wn4r, wk1r, wk1i, wk3r, wk3i, wd1r, wd1i, wd3r, wd3i;
|
|
float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, y0r, y0i, y2r, y2i;
|
|
|
|
mh = n >> 3;
|
|
m = 2 * mh;
|
|
wn4r = w[1];
|
|
j1 = m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[0] - a[j2 + 1];
|
|
x0i = a[1] + a[j2];
|
|
x1r = a[0] + a[j2 + 1];
|
|
x1i = a[1] - a[j2];
|
|
x2r = a[j1] - a[j3 + 1];
|
|
x2i = a[j1 + 1] + a[j3];
|
|
x3r = a[j1] + a[j3 + 1];
|
|
x3i = a[j1 + 1] - a[j3];
|
|
y0r = wn4r * (x2r - x2i);
|
|
y0i = wn4r * (x2i + x2r);
|
|
a[0] = x0r + y0r;
|
|
a[1] = x0i + y0i;
|
|
a[j1] = x0r - y0r;
|
|
a[j1 + 1] = x0i - y0i;
|
|
y0r = wn4r * (x3r - x3i);
|
|
y0i = wn4r * (x3i + x3r);
|
|
a[j2] = x1r - y0i;
|
|
a[j2 + 1] = x1i + y0r;
|
|
a[j3] = x1r + y0i;
|
|
a[j3 + 1] = x1i - y0r;
|
|
k = 0;
|
|
kr = 2 * m;
|
|
for (j = 2; j < mh; j += 2) {
|
|
k += 4;
|
|
wk1r = w[k];
|
|
wk1i = w[k + 1];
|
|
wk3r = w[k + 2];
|
|
wk3i = w[k + 3];
|
|
kr -= 4;
|
|
wd1i = w[kr];
|
|
wd1r = w[kr + 1];
|
|
wd3i = w[kr + 2];
|
|
wd3r = w[kr + 3];
|
|
j1 = j + m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[j] - a[j2 + 1];
|
|
x0i = a[j + 1] + a[j2];
|
|
x1r = a[j] + a[j2 + 1];
|
|
x1i = a[j + 1] - a[j2];
|
|
x2r = a[j1] - a[j3 + 1];
|
|
x2i = a[j1 + 1] + a[j3];
|
|
x3r = a[j1] + a[j3 + 1];
|
|
x3i = a[j1 + 1] - a[j3];
|
|
y0r = wk1r * x0r - wk1i * x0i;
|
|
y0i = wk1r * x0i + wk1i * x0r;
|
|
y2r = wd1r * x2r - wd1i * x2i;
|
|
y2i = wd1r * x2i + wd1i * x2r;
|
|
a[j] = y0r + y2r;
|
|
a[j + 1] = y0i + y2i;
|
|
a[j1] = y0r - y2r;
|
|
a[j1 + 1] = y0i - y2i;
|
|
y0r = wk3r * x1r + wk3i * x1i;
|
|
y0i = wk3r * x1i - wk3i * x1r;
|
|
y2r = wd3r * x3r + wd3i * x3i;
|
|
y2i = wd3r * x3i - wd3i * x3r;
|
|
a[j2] = y0r + y2r;
|
|
a[j2 + 1] = y0i + y2i;
|
|
a[j3] = y0r - y2r;
|
|
a[j3 + 1] = y0i - y2i;
|
|
j0 = m - j;
|
|
j1 = j0 + m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[j0] - a[j2 + 1];
|
|
x0i = a[j0 + 1] + a[j2];
|
|
x1r = a[j0] + a[j2 + 1];
|
|
x1i = a[j0 + 1] - a[j2];
|
|
x2r = a[j1] - a[j3 + 1];
|
|
x2i = a[j1 + 1] + a[j3];
|
|
x3r = a[j1] + a[j3 + 1];
|
|
x3i = a[j1 + 1] - a[j3];
|
|
y0r = wd1i * x0r - wd1r * x0i;
|
|
y0i = wd1i * x0i + wd1r * x0r;
|
|
y2r = wk1i * x2r - wk1r * x2i;
|
|
y2i = wk1i * x2i + wk1r * x2r;
|
|
a[j0] = y0r + y2r;
|
|
a[j0 + 1] = y0i + y2i;
|
|
a[j1] = y0r - y2r;
|
|
a[j1 + 1] = y0i - y2i;
|
|
y0r = wd3i * x1r + wd3r * x1i;
|
|
y0i = wd3i * x1i - wd3r * x1r;
|
|
y2r = wk3i * x3r + wk3r * x3i;
|
|
y2i = wk3i * x3i - wk3r * x3r;
|
|
a[j2] = y0r + y2r;
|
|
a[j2 + 1] = y0i + y2i;
|
|
a[j3] = y0r - y2r;
|
|
a[j3 + 1] = y0i - y2i;
|
|
}
|
|
wk1r = w[m];
|
|
wk1i = w[m + 1];
|
|
j0 = mh;
|
|
j1 = j0 + m;
|
|
j2 = j1 + m;
|
|
j3 = j2 + m;
|
|
x0r = a[j0] - a[j2 + 1];
|
|
x0i = a[j0 + 1] + a[j2];
|
|
x1r = a[j0] + a[j2 + 1];
|
|
x1i = a[j0 + 1] - a[j2];
|
|
x2r = a[j1] - a[j3 + 1];
|
|
x2i = a[j1 + 1] + a[j3];
|
|
x3r = a[j1] + a[j3 + 1];
|
|
x3i = a[j1 + 1] - a[j3];
|
|
y0r = wk1r * x0r - wk1i * x0i;
|
|
y0i = wk1r * x0i + wk1i * x0r;
|
|
y2r = wk1i * x2r - wk1r * x2i;
|
|
y2i = wk1i * x2i + wk1r * x2r;
|
|
a[j0] = y0r + y2r;
|
|
a[j0 + 1] = y0i + y2i;
|
|
a[j1] = y0r - y2r;
|
|
a[j1 + 1] = y0i - y2i;
|
|
y0r = wk1i * x1r - wk1r * x1i;
|
|
y0i = wk1i * x1i + wk1r * x1r;
|
|
y2r = wk1r * x3r - wk1i * x3i;
|
|
y2i = wk1r * x3i + wk1i * x3r;
|
|
a[j2] = y0r - y2r;
|
|
a[j2 + 1] = y0i - y2i;
|
|
a[j3] = y0r + y2r;
|
|
a[j3 + 1] = y0i + y2i;
|
|
}
|
|
|
|
static void AUP_FFTW_cftfx41(int n, float* a, int nw, float* w) {
|
|
if (n == 128) {
|
|
AUP_FFTW_cftf161(a, &w[nw - 8]);
|
|
AUP_FFTW_cftf162(&a[32], &w[nw - 32]);
|
|
AUP_FFTW_cftf161(&a[64], &w[nw - 8]);
|
|
AUP_FFTW_cftf161(&a[96], &w[nw - 8]);
|
|
} else {
|
|
AUP_FFTW_cftf081(a, &w[nw - 8]);
|
|
AUP_FFTW_cftf082(&a[16], &w[nw - 8]);
|
|
AUP_FFTW_cftf081(&a[32], &w[nw - 8]);
|
|
AUP_FFTW_cftf081(&a[48], &w[nw - 8]);
|
|
}
|
|
}
|
|
|
|
static void AUP_FFTW_cftf161(float* a, float* w) {
|
|
float wn4r, wk1r, wk1i, x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, y0r, y0i, y1r,
|
|
y1i, y2r, y2i, y3r, y3i, y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i, y8r, y8i,
|
|
y9r, y9i, y10r, y10i, y11r, y11i, y12r, y12i, y13r, y13i, y14r, y14i,
|
|
y15r, y15i;
|
|
|
|
wn4r = w[1];
|
|
wk1r = w[2];
|
|
wk1i = w[3];
|
|
x0r = a[0] + a[16];
|
|
x0i = a[1] + a[17];
|
|
x1r = a[0] - a[16];
|
|
x1i = a[1] - a[17];
|
|
x2r = a[8] + a[24];
|
|
x2i = a[9] + a[25];
|
|
x3r = a[8] - a[24];
|
|
x3i = a[9] - a[25];
|
|
y0r = x0r + x2r;
|
|
y0i = x0i + x2i;
|
|
y4r = x0r - x2r;
|
|
y4i = x0i - x2i;
|
|
y8r = x1r - x3i;
|
|
y8i = x1i + x3r;
|
|
y12r = x1r + x3i;
|
|
y12i = x1i - x3r;
|
|
x0r = a[2] + a[18];
|
|
x0i = a[3] + a[19];
|
|
x1r = a[2] - a[18];
|
|
x1i = a[3] - a[19];
|
|
x2r = a[10] + a[26];
|
|
x2i = a[11] + a[27];
|
|
x3r = a[10] - a[26];
|
|
x3i = a[11] - a[27];
|
|
y1r = x0r + x2r;
|
|
y1i = x0i + x2i;
|
|
y5r = x0r - x2r;
|
|
y5i = x0i - x2i;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i + x3r;
|
|
y9r = wk1r * x0r - wk1i * x0i;
|
|
y9i = wk1r * x0i + wk1i * x0r;
|
|
x0r = x1r + x3i;
|
|
x0i = x1i - x3r;
|
|
y13r = wk1i * x0r - wk1r * x0i;
|
|
y13i = wk1i * x0i + wk1r * x0r;
|
|
x0r = a[4] + a[20];
|
|
x0i = a[5] + a[21];
|
|
x1r = a[4] - a[20];
|
|
x1i = a[5] - a[21];
|
|
x2r = a[12] + a[28];
|
|
x2i = a[13] + a[29];
|
|
x3r = a[12] - a[28];
|
|
x3i = a[13] - a[29];
|
|
y2r = x0r + x2r;
|
|
y2i = x0i + x2i;
|
|
y6r = x0r - x2r;
|
|
y6i = x0i - x2i;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i + x3r;
|
|
y10r = wn4r * (x0r - x0i);
|
|
y10i = wn4r * (x0i + x0r);
|
|
x0r = x1r + x3i;
|
|
x0i = x1i - x3r;
|
|
y14r = wn4r * (x0r + x0i);
|
|
y14i = wn4r * (x0i - x0r);
|
|
x0r = a[6] + a[22];
|
|
x0i = a[7] + a[23];
|
|
x1r = a[6] - a[22];
|
|
x1i = a[7] - a[23];
|
|
x2r = a[14] + a[30];
|
|
x2i = a[15] + a[31];
|
|
x3r = a[14] - a[30];
|
|
x3i = a[15] - a[31];
|
|
y3r = x0r + x2r;
|
|
y3i = x0i + x2i;
|
|
y7r = x0r - x2r;
|
|
y7i = x0i - x2i;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i + x3r;
|
|
y11r = wk1i * x0r - wk1r * x0i;
|
|
y11i = wk1i * x0i + wk1r * x0r;
|
|
x0r = x1r + x3i;
|
|
x0i = x1i - x3r;
|
|
y15r = wk1r * x0r - wk1i * x0i;
|
|
y15i = wk1r * x0i + wk1i * x0r;
|
|
x0r = y12r - y14r;
|
|
x0i = y12i - y14i;
|
|
x1r = y12r + y14r;
|
|
x1i = y12i + y14i;
|
|
x2r = y13r - y15r;
|
|
x2i = y13i - y15i;
|
|
x3r = y13r + y15r;
|
|
x3i = y13i + y15i;
|
|
a[24] = x0r + x2r;
|
|
a[25] = x0i + x2i;
|
|
a[26] = x0r - x2r;
|
|
a[27] = x0i - x2i;
|
|
a[28] = x1r - x3i;
|
|
a[29] = x1i + x3r;
|
|
a[30] = x1r + x3i;
|
|
a[31] = x1i - x3r;
|
|
x0r = y8r + y10r;
|
|
x0i = y8i + y10i;
|
|
x1r = y8r - y10r;
|
|
x1i = y8i - y10i;
|
|
x2r = y9r + y11r;
|
|
x2i = y9i + y11i;
|
|
x3r = y9r - y11r;
|
|
x3i = y9i - y11i;
|
|
a[16] = x0r + x2r;
|
|
a[17] = x0i + x2i;
|
|
a[18] = x0r - x2r;
|
|
a[19] = x0i - x2i;
|
|
a[20] = x1r - x3i;
|
|
a[21] = x1i + x3r;
|
|
a[22] = x1r + x3i;
|
|
a[23] = x1i - x3r;
|
|
x0r = y5r - y7i;
|
|
x0i = y5i + y7r;
|
|
x2r = wn4r * (x0r - x0i);
|
|
x2i = wn4r * (x0i + x0r);
|
|
x0r = y5r + y7i;
|
|
x0i = y5i - y7r;
|
|
x3r = wn4r * (x0r - x0i);
|
|
x3i = wn4r * (x0i + x0r);
|
|
x0r = y4r - y6i;
|
|
x0i = y4i + y6r;
|
|
x1r = y4r + y6i;
|
|
x1i = y4i - y6r;
|
|
a[8] = x0r + x2r;
|
|
a[9] = x0i + x2i;
|
|
a[10] = x0r - x2r;
|
|
a[11] = x0i - x2i;
|
|
a[12] = x1r - x3i;
|
|
a[13] = x1i + x3r;
|
|
a[14] = x1r + x3i;
|
|
a[15] = x1i - x3r;
|
|
x0r = y0r + y2r;
|
|
x0i = y0i + y2i;
|
|
x1r = y0r - y2r;
|
|
x1i = y0i - y2i;
|
|
x2r = y1r + y3r;
|
|
x2i = y1i + y3i;
|
|
x3r = y1r - y3r;
|
|
x3i = y1i - y3i;
|
|
a[0] = x0r + x2r;
|
|
a[1] = x0i + x2i;
|
|
a[2] = x0r - x2r;
|
|
a[3] = x0i - x2i;
|
|
a[4] = x1r - x3i;
|
|
a[5] = x1i + x3r;
|
|
a[6] = x1r + x3i;
|
|
a[7] = x1i - x3r;
|
|
}
|
|
|
|
static void AUP_FFTW_cftf162(float* a, float* w) {
|
|
float wn4r, wk1r, wk1i, wk2r, wk2i, wk3r, wk3i, x0r, x0i, x1r, x1i, x2r, x2i,
|
|
y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i, y4r, y4i, y5r, y5i, y6r, y6i, y7r,
|
|
y7i, y8r, y8i, y9r, y9i, y10r, y10i, y11r, y11i, y12r, y12i, y13r, y13i,
|
|
y14r, y14i, y15r, y15i;
|
|
|
|
wn4r = w[1];
|
|
wk1r = w[4];
|
|
wk1i = w[5];
|
|
wk3r = w[6];
|
|
wk3i = -w[7];
|
|
wk2r = w[8];
|
|
wk2i = w[9];
|
|
x1r = a[0] - a[17];
|
|
x1i = a[1] + a[16];
|
|
x0r = a[8] - a[25];
|
|
x0i = a[9] + a[24];
|
|
x2r = wn4r * (x0r - x0i);
|
|
x2i = wn4r * (x0i + x0r);
|
|
y0r = x1r + x2r;
|
|
y0i = x1i + x2i;
|
|
y4r = x1r - x2r;
|
|
y4i = x1i - x2i;
|
|
x1r = a[0] + a[17];
|
|
x1i = a[1] - a[16];
|
|
x0r = a[8] + a[25];
|
|
x0i = a[9] - a[24];
|
|
x2r = wn4r * (x0r - x0i);
|
|
x2i = wn4r * (x0i + x0r);
|
|
y8r = x1r - x2i;
|
|
y8i = x1i + x2r;
|
|
y12r = x1r + x2i;
|
|
y12i = x1i - x2r;
|
|
x0r = a[2] - a[19];
|
|
x0i = a[3] + a[18];
|
|
x1r = wk1r * x0r - wk1i * x0i;
|
|
x1i = wk1r * x0i + wk1i * x0r;
|
|
x0r = a[10] - a[27];
|
|
x0i = a[11] + a[26];
|
|
x2r = wk3i * x0r - wk3r * x0i;
|
|
x2i = wk3i * x0i + wk3r * x0r;
|
|
y1r = x1r + x2r;
|
|
y1i = x1i + x2i;
|
|
y5r = x1r - x2r;
|
|
y5i = x1i - x2i;
|
|
x0r = a[2] + a[19];
|
|
x0i = a[3] - a[18];
|
|
x1r = wk3r * x0r - wk3i * x0i;
|
|
x1i = wk3r * x0i + wk3i * x0r;
|
|
x0r = a[10] + a[27];
|
|
x0i = a[11] - a[26];
|
|
x2r = wk1r * x0r + wk1i * x0i;
|
|
x2i = wk1r * x0i - wk1i * x0r;
|
|
y9r = x1r - x2r;
|
|
y9i = x1i - x2i;
|
|
y13r = x1r + x2r;
|
|
y13i = x1i + x2i;
|
|
x0r = a[4] - a[21];
|
|
x0i = a[5] + a[20];
|
|
x1r = wk2r * x0r - wk2i * x0i;
|
|
x1i = wk2r * x0i + wk2i * x0r;
|
|
x0r = a[12] - a[29];
|
|
x0i = a[13] + a[28];
|
|
x2r = wk2i * x0r - wk2r * x0i;
|
|
x2i = wk2i * x0i + wk2r * x0r;
|
|
y2r = x1r + x2r;
|
|
y2i = x1i + x2i;
|
|
y6r = x1r - x2r;
|
|
y6i = x1i - x2i;
|
|
x0r = a[4] + a[21];
|
|
x0i = a[5] - a[20];
|
|
x1r = wk2i * x0r - wk2r * x0i;
|
|
x1i = wk2i * x0i + wk2r * x0r;
|
|
x0r = a[12] + a[29];
|
|
x0i = a[13] - a[28];
|
|
x2r = wk2r * x0r - wk2i * x0i;
|
|
x2i = wk2r * x0i + wk2i * x0r;
|
|
y10r = x1r - x2r;
|
|
y10i = x1i - x2i;
|
|
y14r = x1r + x2r;
|
|
y14i = x1i + x2i;
|
|
x0r = a[6] - a[23];
|
|
x0i = a[7] + a[22];
|
|
x1r = wk3r * x0r - wk3i * x0i;
|
|
x1i = wk3r * x0i + wk3i * x0r;
|
|
x0r = a[14] - a[31];
|
|
x0i = a[15] + a[30];
|
|
x2r = wk1i * x0r - wk1r * x0i;
|
|
x2i = wk1i * x0i + wk1r * x0r;
|
|
y3r = x1r + x2r;
|
|
y3i = x1i + x2i;
|
|
y7r = x1r - x2r;
|
|
y7i = x1i - x2i;
|
|
x0r = a[6] + a[23];
|
|
x0i = a[7] - a[22];
|
|
x1r = wk1i * x0r + wk1r * x0i;
|
|
x1i = wk1i * x0i - wk1r * x0r;
|
|
x0r = a[14] + a[31];
|
|
x0i = a[15] - a[30];
|
|
x2r = wk3i * x0r - wk3r * x0i;
|
|
x2i = wk3i * x0i + wk3r * x0r;
|
|
y11r = x1r + x2r;
|
|
y11i = x1i + x2i;
|
|
y15r = x1r - x2r;
|
|
y15i = x1i - x2i;
|
|
x1r = y0r + y2r;
|
|
x1i = y0i + y2i;
|
|
x2r = y1r + y3r;
|
|
x2i = y1i + y3i;
|
|
a[0] = x1r + x2r;
|
|
a[1] = x1i + x2i;
|
|
a[2] = x1r - x2r;
|
|
a[3] = x1i - x2i;
|
|
x1r = y0r - y2r;
|
|
x1i = y0i - y2i;
|
|
x2r = y1r - y3r;
|
|
x2i = y1i - y3i;
|
|
a[4] = x1r - x2i;
|
|
a[5] = x1i + x2r;
|
|
a[6] = x1r + x2i;
|
|
a[7] = x1i - x2r;
|
|
x1r = y4r - y6i;
|
|
x1i = y4i + y6r;
|
|
x0r = y5r - y7i;
|
|
x0i = y5i + y7r;
|
|
x2r = wn4r * (x0r - x0i);
|
|
x2i = wn4r * (x0i + x0r);
|
|
a[8] = x1r + x2r;
|
|
a[9] = x1i + x2i;
|
|
a[10] = x1r - x2r;
|
|
a[11] = x1i - x2i;
|
|
x1r = y4r + y6i;
|
|
x1i = y4i - y6r;
|
|
x0r = y5r + y7i;
|
|
x0i = y5i - y7r;
|
|
x2r = wn4r * (x0r - x0i);
|
|
x2i = wn4r * (x0i + x0r);
|
|
a[12] = x1r - x2i;
|
|
a[13] = x1i + x2r;
|
|
a[14] = x1r + x2i;
|
|
a[15] = x1i - x2r;
|
|
x1r = y8r + y10r;
|
|
x1i = y8i + y10i;
|
|
x2r = y9r - y11r;
|
|
x2i = y9i - y11i;
|
|
a[16] = x1r + x2r;
|
|
a[17] = x1i + x2i;
|
|
a[18] = x1r - x2r;
|
|
a[19] = x1i - x2i;
|
|
x1r = y8r - y10r;
|
|
x1i = y8i - y10i;
|
|
x2r = y9r + y11r;
|
|
x2i = y9i + y11i;
|
|
a[20] = x1r - x2i;
|
|
a[21] = x1i + x2r;
|
|
a[22] = x1r + x2i;
|
|
a[23] = x1i - x2r;
|
|
x1r = y12r - y14i;
|
|
x1i = y12i + y14r;
|
|
x0r = y13r + y15i;
|
|
x0i = y13i - y15r;
|
|
x2r = wn4r * (x0r - x0i);
|
|
x2i = wn4r * (x0i + x0r);
|
|
a[24] = x1r + x2r;
|
|
a[25] = x1i + x2i;
|
|
a[26] = x1r - x2r;
|
|
a[27] = x1i - x2i;
|
|
x1r = y12r + y14i;
|
|
x1i = y12i - y14r;
|
|
x0r = y13r - y15i;
|
|
x0i = y13i + y15r;
|
|
x2r = wn4r * (x0r - x0i);
|
|
x2i = wn4r * (x0i + x0r);
|
|
a[28] = x1r - x2i;
|
|
a[29] = x1i + x2r;
|
|
a[30] = x1r + x2i;
|
|
a[31] = x1i - x2r;
|
|
}
|
|
|
|
static void AUP_FFTW_cftf081(float* a, float* w) {
|
|
float wn4r, x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, y0r, y0i, y1r, y1i, y2r,
|
|
y2i, y3r, y3i, y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i;
|
|
|
|
wn4r = w[1];
|
|
x0r = a[0] + a[8];
|
|
x0i = a[1] + a[9];
|
|
x1r = a[0] - a[8];
|
|
x1i = a[1] - a[9];
|
|
x2r = a[4] + a[12];
|
|
x2i = a[5] + a[13];
|
|
x3r = a[4] - a[12];
|
|
x3i = a[5] - a[13];
|
|
y0r = x0r + x2r;
|
|
y0i = x0i + x2i;
|
|
y2r = x0r - x2r;
|
|
y2i = x0i - x2i;
|
|
y1r = x1r - x3i;
|
|
y1i = x1i + x3r;
|
|
y3r = x1r + x3i;
|
|
y3i = x1i - x3r;
|
|
x0r = a[2] + a[10];
|
|
x0i = a[3] + a[11];
|
|
x1r = a[2] - a[10];
|
|
x1i = a[3] - a[11];
|
|
x2r = a[6] + a[14];
|
|
x2i = a[7] + a[15];
|
|
x3r = a[6] - a[14];
|
|
x3i = a[7] - a[15];
|
|
y4r = x0r + x2r;
|
|
y4i = x0i + x2i;
|
|
y6r = x0r - x2r;
|
|
y6i = x0i - x2i;
|
|
x0r = x1r - x3i;
|
|
x0i = x1i + x3r;
|
|
x2r = x1r + x3i;
|
|
x2i = x1i - x3r;
|
|
y5r = wn4r * (x0r - x0i);
|
|
y5i = wn4r * (x0r + x0i);
|
|
y7r = wn4r * (x2r - x2i);
|
|
y7i = wn4r * (x2r + x2i);
|
|
a[8] = y1r + y5r;
|
|
a[9] = y1i + y5i;
|
|
a[10] = y1r - y5r;
|
|
a[11] = y1i - y5i;
|
|
a[12] = y3r - y7i;
|
|
a[13] = y3i + y7r;
|
|
a[14] = y3r + y7i;
|
|
a[15] = y3i - y7r;
|
|
a[0] = y0r + y4r;
|
|
a[1] = y0i + y4i;
|
|
a[2] = y0r - y4r;
|
|
a[3] = y0i - y4i;
|
|
a[4] = y2r - y6i;
|
|
a[5] = y2i + y6r;
|
|
a[6] = y2r + y6i;
|
|
a[7] = y2i - y6r;
|
|
}
|
|
|
|
static void AUP_FFTW_cftf082(float* a, float* w) {
|
|
float wn4r, wk1r, wk1i, x0r, x0i, x1r, x1i, y0r, y0i, y1r, y1i, y2r, y2i, y3r,
|
|
y3i, y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i;
|
|
|
|
wn4r = w[1];
|
|
wk1r = w[2];
|
|
wk1i = w[3];
|
|
y0r = a[0] - a[9];
|
|
y0i = a[1] + a[8];
|
|
y1r = a[0] + a[9];
|
|
y1i = a[1] - a[8];
|
|
x0r = a[4] - a[13];
|
|
x0i = a[5] + a[12];
|
|
y2r = wn4r * (x0r - x0i);
|
|
y2i = wn4r * (x0i + x0r);
|
|
x0r = a[4] + a[13];
|
|
x0i = a[5] - a[12];
|
|
y3r = wn4r * (x0r - x0i);
|
|
y3i = wn4r * (x0i + x0r);
|
|
x0r = a[2] - a[11];
|
|
x0i = a[3] + a[10];
|
|
y4r = wk1r * x0r - wk1i * x0i;
|
|
y4i = wk1r * x0i + wk1i * x0r;
|
|
x0r = a[2] + a[11];
|
|
x0i = a[3] - a[10];
|
|
y5r = wk1i * x0r - wk1r * x0i;
|
|
y5i = wk1i * x0i + wk1r * x0r;
|
|
x0r = a[6] - a[15];
|
|
x0i = a[7] + a[14];
|
|
y6r = wk1i * x0r - wk1r * x0i;
|
|
y6i = wk1i * x0i + wk1r * x0r;
|
|
x0r = a[6] + a[15];
|
|
x0i = a[7] - a[14];
|
|
y7r = wk1r * x0r - wk1i * x0i;
|
|
y7i = wk1r * x0i + wk1i * x0r;
|
|
x0r = y0r + y2r;
|
|
x0i = y0i + y2i;
|
|
x1r = y4r + y6r;
|
|
x1i = y4i + y6i;
|
|
a[0] = x0r + x1r;
|
|
a[1] = x0i + x1i;
|
|
a[2] = x0r - x1r;
|
|
a[3] = x0i - x1i;
|
|
x0r = y0r - y2r;
|
|
x0i = y0i - y2i;
|
|
x1r = y4r - y6r;
|
|
x1i = y4i - y6i;
|
|
a[4] = x0r - x1i;
|
|
a[5] = x0i + x1r;
|
|
a[6] = x0r + x1i;
|
|
a[7] = x0i - x1r;
|
|
x0r = y1r - y3i;
|
|
x0i = y1i + y3r;
|
|
x1r = y5r - y7r;
|
|
x1i = y5i - y7i;
|
|
a[8] = x0r + x1r;
|
|
a[9] = x0i + x1i;
|
|
a[10] = x0r - x1r;
|
|
a[11] = x0i - x1i;
|
|
x0r = y1r + y3i;
|
|
x0i = y1i - y3r;
|
|
x1r = y5r + y7r;
|
|
x1i = y5i + y7i;
|
|
a[12] = x0r - x1i;
|
|
a[13] = x0i + x1r;
|
|
a[14] = x0r + x1i;
|
|
a[15] = x0i - x1r;
|
|
}
|
|
|
|
static void AUP_FFTW_cftf040(float* a) {
|
|
float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
|
|
|
|
x0r = a[0] + a[4];
|
|
x0i = a[1] + a[5];
|
|
x1r = a[0] - a[4];
|
|
x1i = a[1] - a[5];
|
|
x2r = a[2] + a[6];
|
|
x2i = a[3] + a[7];
|
|
x3r = a[2] - a[6];
|
|
x3i = a[3] - a[7];
|
|
a[0] = x0r + x2r;
|
|
a[1] = x0i + x2i;
|
|
a[2] = x1r - x3i;
|
|
a[3] = x1i + x3r;
|
|
a[4] = x0r - x2r;
|
|
a[5] = x0i - x2i;
|
|
a[6] = x1r + x3i;
|
|
a[7] = x1i - x3r;
|
|
}
|
|
|
|
static void AUP_FFTW_cftb040(float* a) {
|
|
float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
|
|
|
|
x0r = a[0] + a[4];
|
|
x0i = a[1] + a[5];
|
|
x1r = a[0] - a[4];
|
|
x1i = a[1] - a[5];
|
|
x2r = a[2] + a[6];
|
|
x2i = a[3] + a[7];
|
|
x3r = a[2] - a[6];
|
|
x3i = a[3] - a[7];
|
|
a[0] = x0r + x2r;
|
|
a[1] = x0i + x2i;
|
|
a[2] = x1r + x3i;
|
|
a[3] = x1i - x3r;
|
|
a[4] = x0r - x2r;
|
|
a[5] = x0i - x2i;
|
|
a[6] = x1r - x3i;
|
|
a[7] = x1i + x3r;
|
|
}
|
|
|
|
static void AUP_FFTW_cftx020(float* a) {
|
|
float x0r, x0i;
|
|
|
|
x0r = a[0] - a[2];
|
|
x0i = a[1] - a[3];
|
|
a[0] += a[2];
|
|
a[1] += a[3];
|
|
a[2] = x0r;
|
|
a[3] = x0i;
|
|
}
|
|
|
|
static void AUP_FFTW_rftfsub(int n, float* a, int nc, float* c) {
|
|
int j, k, kk, ks, m;
|
|
float wkr, wki, xr, xi, yr, yi;
|
|
|
|
m = n >> 1;
|
|
ks = 2 * nc / m;
|
|
kk = 0;
|
|
for (j = 2; j < m; j += 2) {
|
|
k = n - j;
|
|
kk += ks;
|
|
wkr = 0.5f - c[nc - kk];
|
|
wki = c[kk];
|
|
xr = a[j] - a[k];
|
|
xi = a[j + 1] + a[k + 1];
|
|
yr = wkr * xr - wki * xi;
|
|
yi = wkr * xi + wki * xr;
|
|
a[j] -= yr;
|
|
a[j + 1] -= yi;
|
|
a[k] += yr;
|
|
a[k + 1] -= yi;
|
|
}
|
|
}
|
|
|
|
static void AUP_FFTW_rftbsub(int n, float* a, int nc, float* c) {
|
|
int j, k, kk, ks, m;
|
|
float wkr, wki, xr, xi, yr, yi;
|
|
|
|
m = n >> 1;
|
|
ks = 2 * nc / m;
|
|
kk = 0;
|
|
for (j = 2; j < m; j += 2) {
|
|
k = n - j;
|
|
kk += ks;
|
|
wkr = 0.5f - c[nc - kk];
|
|
wki = c[kk];
|
|
xr = a[j] - a[k];
|
|
xi = a[j + 1] + a[k + 1];
|
|
yr = wkr * xr + wki * xi;
|
|
yi = wkr * xi - wki * xr;
|
|
a[j] -= yr;
|
|
a[j + 1] -= yi;
|
|
a[k] += yr;
|
|
a[k + 1] -= yi;
|
|
}
|
|
}
|
|
|
|
static void AUP_FFTW_dctsub(int n, float* a, int nc, float* c) {
|
|
int j, k, kk, ks, m;
|
|
float wkr, wki, xr;
|
|
|
|
m = n >> 1;
|
|
ks = nc / n;
|
|
kk = 0;
|
|
for (j = 1; j < m; j++) {
|
|
k = n - j;
|
|
kk += ks;
|
|
wkr = c[kk] - c[nc - kk];
|
|
wki = c[kk] + c[nc - kk];
|
|
xr = wki * a[j] - wkr * a[k];
|
|
a[j] = wkr * a[j] + wki * a[k];
|
|
a[k] = xr;
|
|
}
|
|
a[m] *= c[0];
|
|
}
|
|
|
|
static void AUP_FFTW_dstsub(int n, float* a, int nc, float* c) {
|
|
int j, k, kk, ks, m;
|
|
float wkr, wki, xr;
|
|
|
|
m = n >> 1;
|
|
ks = nc / n;
|
|
kk = 0;
|
|
for (j = 1; j < m; j++) {
|
|
k = n - j;
|
|
kk += ks;
|
|
wkr = c[kk] - c[nc - kk];
|
|
wki = c[kk] + c[nc - kk];
|
|
xr = wki * a[k] - wkr * a[j];
|
|
a[k] = wkr * a[k] + wki * a[j];
|
|
a[j] = xr;
|
|
}
|
|
a[m] *= c[0];
|
|
}
|
|
|
|
static void AUP_FFTW_rdft(int n, int isgn, float* a, int* ip, float* w) {
|
|
float xi;
|
|
|
|
int nw = ip[0];
|
|
int nc = ip[1];
|
|
|
|
if (isgn >= 0) {
|
|
if (n > 4) {
|
|
AUP_FFTW_cftfsub(n, a, ip, nw, w);
|
|
AUP_FFTW_rftfsub(n, a, nc, w + nw);
|
|
} else if (n == 4) {
|
|
AUP_FFTW_cftfsub(n, a, ip, nw, w);
|
|
}
|
|
xi = a[0] - a[1];
|
|
a[0] += a[1];
|
|
a[1] = xi;
|
|
} else {
|
|
a[1] = 0.5f * (a[0] - a[1]);
|
|
a[0] -= a[1];
|
|
if (n > 4) {
|
|
AUP_FFTW_rftbsub(n, a, nc, w + nw);
|
|
AUP_FFTW_cftbsub(n, a, ip, nw, w);
|
|
} else if (n == 4) {
|
|
AUP_FFTW_cftbsub(n, a, ip, nw, w);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void AUP_FFTW_r2c_256(float* in, float* out) {
|
|
int i;
|
|
|
|
float tmp[258] = {0};
|
|
|
|
|
|
for (i = 0; i < 256; ++i) {
|
|
tmp[i] = in[i] * 0.00390625f;
|
|
}
|
|
|
|
AUP_FFTW_rdft(256, 1, tmp, (int*)AUP_FFTW_g_ip256, (float*)AUP_FFTW_g_w256);
|
|
|
|
out[0] = tmp[0];
|
|
out[255] = tmp[1];
|
|
for (i = 1; i < 255; i += 2) {
|
|
out[i] = tmp[i + 1];
|
|
out[i + 1] = -tmp[i + 2];
|
|
}
|
|
}
|
|
|
|
void AUP_FFTW_c2r_256(float* in, float* out) {
|
|
int i;
|
|
|
|
out[0] = in[0];
|
|
out[1] = in[255];
|
|
for (i = 2; i < 256; i += 2) {
|
|
out[i] = in[i - 1];
|
|
out[i + 1] = -in[i];
|
|
}
|
|
|
|
AUP_FFTW_rdft(256, -1, out, (int*)AUP_FFTW_g_ip256, (float*)AUP_FFTW_g_w256);
|
|
|
|
for (i = 0; i < 256; i++) {
|
|
out[i] *= 2;
|
|
}
|
|
}
|
|
|
|
void AUP_FFTW_c2r_512(float* in, float* out) {
|
|
int i;
|
|
|
|
out[0] = in[0];
|
|
out[1] = in[511];
|
|
for (i = 2; i < 512; i += 2) {
|
|
out[i] = in[i - 1];
|
|
out[i + 1] = -in[i];
|
|
}
|
|
AUP_FFTW_rdft(512, -1, out, (int*)AUP_FFTW_g_ip512, (float*)AUP_FFTW_g_w512);
|
|
|
|
for (i = 0; i < 512; i++) {
|
|
out[i] *= 2;
|
|
}
|
|
}
|
|
|
|
void AUP_FFTW_r2c_512(float* in, float* out) {
|
|
int i;
|
|
|
|
float tmp[514] = {0};
|
|
|
|
|
|
for (i = 0; i < 512; ++i) {
|
|
tmp[i] = in[i] * 0.001953125f;
|
|
}
|
|
|
|
AUP_FFTW_rdft(512, 1, tmp, (int*)AUP_FFTW_g_ip512, (float*)AUP_FFTW_g_w512);
|
|
|
|
out[0] = tmp[0];
|
|
out[511] = tmp[1];
|
|
for (i = 1; i < 511; i += 2) {
|
|
out[i] = tmp[i + 1];
|
|
out[i + 1] = -tmp[i + 2];
|
|
}
|
|
}
|
|
|
|
void AUP_FFTW_r2c_1024(float* in, float* out) {
|
|
int i;
|
|
|
|
float tmp[1026] = {0};
|
|
|
|
for (i = 0; i < 1024; ++i) {
|
|
tmp[i] = in[i] * 0.0009765625f;
|
|
}
|
|
|
|
AUP_FFTW_rdft(1024, 1, tmp, (int*)AUP_FFTW_g_ip1024,
|
|
(float*)AUP_FFTW_g_w1024);
|
|
|
|
out[0] = tmp[0];
|
|
out[1023] = tmp[1];
|
|
for (i = 1; i < 1023; i += 2) {
|
|
out[i] = tmp[i + 1];
|
|
out[i + 1] = -tmp[i + 2];
|
|
}
|
|
}
|
|
|
|
void AUP_FFTW_c2r_1024(float* in, float* out) {
|
|
int i;
|
|
|
|
out[0] = in[0];
|
|
out[1] = in[1023];
|
|
for (i = 2; i < 1024; i += 2) {
|
|
out[i] = in[i - 1];
|
|
out[i + 1] = -in[i];
|
|
}
|
|
AUP_FFTW_rdft(1024, -1, out, (int*)AUP_FFTW_g_ip1024,
|
|
(float*)AUP_FFTW_g_w1024);
|
|
|
|
for (i = 0; i < 1024; i++) {
|
|
out[i] *= 2;
|
|
}
|
|
}
|
|
|
|
void AUP_FFTW_r2c_2048(float* in, float* out) {
|
|
int i;
|
|
|
|
float tmp[2050] = {0};
|
|
|
|
|
|
for (i = 0; i < 2048; ++i) {
|
|
tmp[i] = in[i] * 0.00048828125f;
|
|
}
|
|
|
|
AUP_FFTW_rdft(2048, 1, tmp, (int*)AUP_FFTW_g_ip2048,
|
|
(float*)AUP_FFTW_g_w2048);
|
|
|
|
out[0] = tmp[0];
|
|
out[2047] = tmp[1];
|
|
for (i = 1; i < 2047; i += 2) {
|
|
out[i] = tmp[i + 1];
|
|
out[i + 1] = -tmp[i + 2];
|
|
}
|
|
}
|
|
|
|
void AUP_FFTW_c2r_2048(float* in, float* out) {
|
|
int i;
|
|
|
|
out[0] = in[0];
|
|
out[1] = in[2047];
|
|
for (i = 2; i < 2048; i += 2) {
|
|
out[i] = in[i - 1];
|
|
out[i + 1] = -in[i];
|
|
}
|
|
AUP_FFTW_rdft(2048, -1, out, (int*)AUP_FFTW_g_ip2048,
|
|
(float*)AUP_FFTW_g_w2048);
|
|
|
|
for (i = 0; i < 2048; i++) {
|
|
out[i] *= 2;
|
|
}
|
|
}
|
|
|
|
void AUP_FFTW_r2c_4096(float* in, float* out) {
|
|
int i;
|
|
|
|
float tmp[4098] = {0};
|
|
|
|
|
|
for (i = 0; i < 4096; ++i) {
|
|
tmp[i] = in[i] * 0.000244140625f;
|
|
}
|
|
|
|
AUP_FFTW_rdft(4096, 1, tmp, (int*)AUP_FFTW_g_ip4096,
|
|
(float*)AUP_FFTW_g_w4096);
|
|
|
|
out[0] = tmp[0];
|
|
out[4095] = tmp[1];
|
|
for (i = 1; i < 4095; i += 2) {
|
|
out[i] = tmp[i + 1];
|
|
out[i + 1] = -tmp[i + 2];
|
|
}
|
|
}
|
|
|
|
void AUP_FFTW_c2r_4096(float* in, float* out) {
|
|
int i;
|
|
|
|
out[0] = in[0];
|
|
out[1] = in[4095];
|
|
for (i = 2; i < 4096; i += 2) {
|
|
out[i] = in[i - 1];
|
|
out[i + 1] = -in[i];
|
|
}
|
|
AUP_FFTW_rdft(4096, -1, out, (int*)AUP_FFTW_g_ip4096,
|
|
(float*)AUP_FFTW_g_w4096);
|
|
for (i = 0; i < 4096; i++) {
|
|
out[i] *= 2;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void AUP_FFTW_InplaceTransf(int direction, int fftSz, float* inplaceTranfBuf) {
|
|
float nyqReal;
|
|
int idx;
|
|
|
|
if (direction == 0) {
|
|
|
|
|
|
nyqReal = inplaceTranfBuf[1];
|
|
for (idx = 1; idx < (fftSz - 1); idx += 2) {
|
|
inplaceTranfBuf[idx] = inplaceTranfBuf[idx + 1];
|
|
inplaceTranfBuf[idx + 1] = -(inplaceTranfBuf[idx + 2]);
|
|
}
|
|
inplaceTranfBuf[fftSz - 1] = nyqReal;
|
|
} else {
|
|
|
|
|
|
nyqReal = inplaceTranfBuf[fftSz - 1];
|
|
for (idx = fftSz - 1; idx > 2; idx -= 2) {
|
|
inplaceTranfBuf[idx] = -(inplaceTranfBuf[idx - 1]);
|
|
inplaceTranfBuf[idx - 1] = inplaceTranfBuf[idx - 2];
|
|
}
|
|
inplaceTranfBuf[1] = nyqReal;
|
|
}
|
|
return;
|
|
}
|
|
|
|
void AUP_FFTW_RescaleFFTOut(int fftSz, float* inplaceBuf) {
|
|
int idx;
|
|
for (idx = 0; idx < fftSz; idx++) {
|
|
inplaceBuf[idx] *= (float)fftSz;
|
|
}
|
|
return;
|
|
}
|
|
|
|
void AUP_FFTW_RescaleIFFTOut(int fftSz, float* inplaceBuf) {
|
|
int idx;
|
|
for (idx = 0; idx < fftSz; idx++) {
|
|
inplaceBuf[idx] *= 0.5f;
|
|
}
|
|
return;
|
|
}
|
|
|