I'm starting with LAPACK and I have some doubts about the behaviour of some functions. Attached I send a *.zip file that contains one test source code (in C) that tests DGEQRP and DGEQR3 subroutines. The problem is that if I link it with the reference LAPACK 3.2.2 and BLAS from netlib I obtain different results that if I link it against the ATLAS distribution from the repositories of my Debian GNU/Linux. The only differences in the results are about the signs of the numbers in Q and R matrices: they are different for reference LAPACK and ATLAS. The permutation vectors are the same and with both results the original matrix can be reconstructed correctly. Is the QR factorization not unique? Is my code wrong? If I try the decomposition with GNU Octave I obtain the same results that ATLAS (of course, Octave is linked against ATLAS). I compiled the reference LAPACK in my machine (iBook G4 with Debian GNU/Linux) with the parameters by default for gfortran (make.inc.gfortran), that is -O2 optimization (and -O0 when necesary).
On the other hand (for this I don't have code now), yesterday I test the function DSYEV for eigendecomposition and I obtain different eigenvectors (again only the signs was changed) but the same eigenvalues if I call DSYEV working with UPPER or LOWER part of the symmetric matrix. Is this behaviour right?