static double mlsadf2(double x, double *b, const int m, const double a, const int pd, double *d) { double v, out = 0.0, *pt; int i; pt = &d[pd * (m + 2)]; for (i = pd; i >= 1; i--) { pt[i] = mlsafir(pt[i - 1], b, m, a, &d[(i - 1) * (m + 2)]); v = pt[i] * ppade[i]; x += (1 & i) ? v : -v; out += v; } pt[0] = x; out += x; return (out); }
double MAGE::Vocoder::mlsadf2( double x, double * b, const int m, const double a, const int pd, double * d ) { double v, out = 0.0, * pt, aa; int i; aa = 1 - a * a; pt = &d[pd * ( m + 2 )]; for( i = pd; i >= 1; i-- ) { pt[i] = mlsafir( pt[i - 1], b, m, a, &d[( i - 1 ) * ( m + 2 )] ); v = pt[i] * ppadesptk[i]; x += ( 1 & i ) ? v : -v; out += v; } pt[0] = x; out += x; return( out ); }