Uses LU decomposition - much faster than SVD when N>100