次のように、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;
}
非ゼロの虚数成分に対してこれを実装する効率的な方法を考えようとしています。具体的には、複素係数多項式を使用せずに、両方の複素共役根を 1 回のパスで収縮させたいと考えています。誰でもこれを行う方法を考えることができますか?