This is alpol.c in view mode; [Download] [Up]
#include "lpc.h"
alpol(sig, errn, rms1, rms2, c)
double *sig, *errn, *rms1, *rms2, *c;
{
double a[POLEMAX][POLEMAX], v[POLEMAX], b[POLEMAX];
double x[FRAMAX], y[FRAMAX];
double *vp=v, *bp=b, *xp=x, *yp=y;
double sum, sumx, sumy;
int k1, i, l, k, limit, j;
for (xp=x; xp-x < FRAME ;++xp,++sig)
*xp = *sig;
k1 = NPOLE + 1;
for (i=0; i < NPOLE ;++i) {
sum = (double) 0.0;
for (k=NPOLE; k < FRAME ;++k)
sum += x[k-(i+1)] * x[k];
v[i] = -sum;
if (i != NPOLE - 1) {
limit = NPOLE - (i+1);
for (l=0; l < limit ;++l) {
sum += x[NPOLE-(i+1)-(l+1)]* x[NPOLE-(l+1)] - x[FRAME-(i+1)-(l+1)]* x[FRAME-(l+1)];
a[(i+1)+l][l] = a[l][(i+1)+l] = sum;
}
}
}
sum = (double) 0.0;
for (k=NPOLE; k < FRAME ;++k)
sum += pow(x[k], (double) 2.0);
sumy = sumx = sum;
for (l=0; l < NPOLE ;++l) {
sum += pow(x[NPOLE-(l+1)], (double) 2.0) - pow(x[FRAME-(l+1)], (double) 2.0);
a[l][l] = sum;
}
gauss(a, v, b);
filtn(x, y, b);
for (i=0; i < NPOLE ;++i)
sumy = sumy - b[i]*v[i];
*rms1 = sqrt(sumx/(double) (FRAME - k1 + 1) );
*rms2 = sqrt(sumy/(double) (FRAME - k1 + 1) );
*errn = pow(((*rms2)/(*rms1)), (double) 2.0);
for (bp=b; bp-b < NPOLE ;++bp,++c)
*c = *bp;
return(0);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.