29 #include <o2scl/err_hnd.h>
30 #include <o2scl/permutation.h>
31 #include <o2scl/cblas.h>
32 #include <o2scl/householder.h>
33 #include <o2scl/givens.h>
35 namespace o2scl_linalg {
37 #define O2SCL_IX(V,i) V[i]
38 #define O2SCL_IX2(M,i,j) M(i,j)
40 #include <o2scl/qr_base.h>
47 namespace o2scl_linalg_bracket {
49 #define O2SCL_IX(V,i) V[i]
50 #define O2SCL_IX2(M,i,j) M[i][j]
52 #include <o2scl/qr_base.h>
59 #if defined (O2SCL_COND_FLAG) || defined (DOXYGEN)
61 #if defined (O2SCL_ARMA) || defined (DOXYGEN)
63 namespace o2scl_linalg {
68 void QR_decomp_unpack<arma::mat,arma::mat,arma::mat>
69 (
const size_t M,
const size_t N, arma::mat &A, arma::mat &Q,
75 #if defined (O2SCL_EIGEN) || defined (DOXYGEN)
76 #include <Eigen/Dense>
77 namespace o2scl_linalg {
82 void QR_decomp_unpack<Eigen::MatrixXd,Eigen::MatrixXd,Eigen::MatrixXd>
83 (
const size_t M,
const size_t N, Eigen::MatrixXd &A,
84 Eigen::MatrixXd &Q, Eigen::MatrixXd &R);
90 #include <o2scl/qr_special.h>