static int pred(float *in, float *tgt, int n) { int x, y; float *p1, *p2; double f0, f1, f2; float temp; if (in[n] == 0) return 0; if ((f0 = *in) <= 0) return 0; for (x=1 ; ; x++) { if (n < x) return 1; p1 = in + x; p2 = tgt; f1 = *(p1--); for (y=x; --y; f1 += (*(p1--))*(*(p2++))); p1 = tgt + x - 1; p2 = tgt; *(p1--) = f2 = -f1/f0; for (y=x >> 1; y--;) { temp = *p2 + *p1 * f2; *(p1--) += *p2 * f2; *(p2++) = temp; } if ((f0 += f1*f2) < 0) return 0; } }
static int pred(float *in, float *tgt, int n) { int x, y; float *p1, *p2; double f0, f1, f2; float temp; if (in[n] == 0) return 0; if ((f0 = *in) <= 0) return 0; for (x=1 ; ; x++) { if (n < x) return 1; p1 = in + x; p2 = tgt; f1 = *(p1--); for (y=x; --y; f1 += (*(p1--))*(*(p2++))); p1 = tgt + x - 1; p2 = tgt; *(p1--) = f2 = -f1/f0; for (y=x >> 1; y--;) { temp = *p2 + *p1 * f2; *(p1--) += *p2 * f2; *(p2++) = temp; } if ((f0 += f1*f2) < 0) return 0; } }