Thanks for making the test program - its a very good idea! I ran it on a variety of cases and found that there are some convergence issues in my code. Most of these can be fixed by increasing UNSYMM_MAX_ITERATIONS in unsymm.c, but on the other hand I don't think it should be necessary to have so many QR iterations for convergence.
After a cursory look at LAPACK it seems to me based on a comment in dhseqr that it reports failure after 30*N total unsuccessful iterations. This seems like a lot to me, my method reports failure after 30 iterations without finding an eigenvalue (I don't keep track of total iterations). Another possibility is the actual algorithm. LAPACK uses the multi-shift QR algorithm published in 1989, whereas I implemented the original double-shift algorithm from the 1960s which was described in Golub and Van Loan. I might look into the multi-shift method when I get some time and see how its convergence compares with the double-shift method. I'll be away for a week or so, so I won't have a chance to look at this for a little while. Thanks, Patrick Alken
