public static void FWT(double[] data)
{
double[] temp = new double[data.Length];
int h = data.Length >> 1;
for (int i = 0; i < h; i++)
{
int k = (i << 1);
temp[i] = data[k] * s0 + data[k + 1] * s1;
temp[i + h] = data[k] * w0 + data[k + 1] * w1;
}
for (int i = 0; i < data.Length; i++)
data[i] = temp[i];
}