------- Additional Comments From Thomas dot Koenig at online dot de 2005-02-16 12:41 ------- I think I have identified the problem.
The hang itself is probably caused by a Lapack bug, because slarrb is only fed 0. and NaN as arguments. The reason why this is so is probably due to a problem in complex division with flag_complex_method = 2. Here's a test case: $ cat c-tst.c #include <stdio.h> #include <math.h> #include <complex.h> int main() { float complex a,b,c; a = 1.e20-I*1.e12; b = 1. - I*1.e-8; c = a/b; printf("%.5g %.5g\n",creal(c),cimag(c)); return 0; } This has flag_complex_medhod = 2: $ gcc -B ~/gcc-C2/gcc c-tst.c $ ./a.out 1e+20 18059 ^^^^^^ wrong This has flag_complex_method = 1: $ gcc -B ~/gcc-C1/gcc c-tst.c $ ./a.out 1e+20 0 ^^ correct Probably a wrong sign when recovering from overflow in the new complex division routines. Adding rth to the cc list. -- What |Removed |Added ---------------------------------------------------------------------------- CC| |rth at gcc dot gnu dot org OtherBugsDependingO| |18902 nThis| | Summary|Lapack hang in xeigtstc on |incorrect complex division |ia-64 |on ia-64 with | |flag_complex_method = 2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19974