我在 C 中实现了一个合成除法算法,如下所示:
int deflate( double r, double im, double* poly, int n ) {
int retval;
int i;
if( im == 0 ) {
if( n < 1 ) {
retval = 1;
} else {
double* out = ( double* )malloc( ( n )*sizeof( double ) );
out[ n - 1 ] = poly[ n ];
for( i = n - 2; i >= 0; i-- ) {
out[ i ] = out[ i + 1 ]*r + poly[ i + 1 ];
}
for( i = 0; i < n; i++ ) {
poly[ i ] = out[ i ];
}
poly[ n ] = 0;
free( out );
retval = 0;
}
} else {
if( n < 2 ) {
retval = 1;
} else {
/*code to handle complex numbers here*/
retval = 0;
}
}
return retval;
}
我试图想出一种有效的方法来为非零虚部实现这一点。具体来说,我想一次性缩小两个复共轭根,而不必使用复系数多项式。谁能想到一种方法来做到这一点?