default implementation of QR decomposition