csvorbis.Lpc.lpc_to_curve C# (CSharp) Method

lpc_to_curve() private method

private lpc_to_curve ( float curve, float lpc, float amp ) : void
curve float
lpc float
amp float
return void
        internal void lpc_to_curve(float[] curve, float[] lpc, float amp)
        {
            //memset(curve,0,sizeof(float)*l->ln*2);
            for(int i=0; i<ln*2; i++)curve[i]=0.0f;

            if(amp==0)return;

            for(int i=0;i<m;i++)
            {
                curve[i*2+1]=lpc[i]/(4*amp);
                curve[i*2+2]=-lpc[i]/(4*amp);
            }

            fft.backward(curve); // reappropriated ;-)

            int l2=ln*2;
            float unit=(float)(1.0/amp);
            curve[0]=(float)(1.0/(curve[0]*2+unit));
            for(int i=1;i<ln;i++)
            {
                float real=(curve[i]+curve[l2-i]);
                float imag=(curve[i]-curve[l2-i]);

                float a = real + unit;
                curve[i] = (float)(1.0 / FAST_HYPOT(a, imag));
            }
        }