float y1i_r = y1_r * w_i + y1_i * w_r;
float y1w_i = y1_r * w_i + y1_i * w_r;
    public void work()    {        int i;        float w_r = 1;        float w_i = 0;        for (i = 0; i < nWay; i += 2)        {            float y0_r = input.peekFloat(i);            float y0_i = input.peekFloat(i+1);            float y1_r = input.peekFloat(nWay + i);            float y1_i = input.peekFloat(nWay + i + 1);            float y1w_r = y1_r * w_r - y1_i * w_i;            float y1i_r = y1_r * w_i + y1_i * w_r;            results[i] = y0_r + y1_r;            results[i + 1] = y0_i + y1_i;            results[nWay + i] = y0_r - y1_r;            results[nWay + i + 1] = y0_i - y1_i;            float w_r_next = w_r * wn_r - w_i * wn_i;            float w_i_next = w_r * wn_i + w_i * wn_r;            w_r = w_r_next;            w_i = w_i_next;        }        for (i = 0; i < 2 * nWay; i++)        {            input.popFloat ();            output.pushFloat(results[i]);        }    }