/* compute autocorrelations */ for (i=0;i<=order;i++) { sum = 0; for (k=0;k<(n-i);k++) sum += x[k] * x[k+i]; r[i] = sum; } /* compute predictor coefficients */ if (r[0] == 0) /* no signal ! */ retcode = 1; else { *pe = r[0]; pc[0] = 1.0; for (k=1;k<=order;k++) { sum = 0; for (i=1;i<=k;i++) sum -= pc[k-i] * r[i]; akk = sum/(*pe); /* new predictor coefficients */ pc[k] = akk; for (i=1;i<=(k/2);i++) { ai = pc[i]; aj = pc[k-i]; pc[i] = ai + akk * aj; pc[k-i] = aj + akk * ai; } /* new prediction error */ *pe = *pe * (1.0 - akk*akk); if (*pe <= 0) /* negative/zero error ! */ retcode = 2; } }