Trying to implement QR decomposition using Givens rotations, I calculate G1 to zero n32 of original matrix A, then G2 to zero n31 of G1 * A, then G2 to zero n21 of G2 * G1 * A. Residual matrix, R = G3 * G2 * G1 * A comes upper triangular as expected, so I believe my code is correct. Looking at rotation matrix Q = G1^T * G2^T * G3^T against Euler rotation matrix X * Y * Z, I thought that I could use angles of Givens rotations as Euler angles up to sign correction at max. To test this idea, I ran QR decomposition on pure rotation matrix A, expecting R to be identity matrix. This really worked out for certain rotataions, but for other cases, R was non-diagonal and, as you guessed, Givens rotations were nowhere near Euler angles. I wonder where is a flaw could be in my idea or implementation?