rank-revealing QR factorization