From 4716040703be1ee906439385d20475dcddad5ce3 Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Mon, 25 Oct 2010 10:15:22 -0400 Subject: bug #86 : use internal:: namespace instead of ei_ prefix --- Eigen/src/QR/FullPivHouseholderQR.h | 64 ++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 30 deletions(-) (limited to 'Eigen/src/QR/FullPivHouseholderQR.h') diff --git a/Eigen/src/QR/FullPivHouseholderQR.h b/Eigen/src/QR/FullPivHouseholderQR.h index e228aeb44..4dee21580 100644 --- a/Eigen/src/QR/FullPivHouseholderQR.h +++ b/Eigen/src/QR/FullPivHouseholderQR.h @@ -63,12 +63,12 @@ template class FullPivHouseholderQR typedef typename MatrixType::RealScalar RealScalar; typedef typename MatrixType::Index Index; typedef Matrix MatrixQType; - typedef typename ei_plain_diag_type::type HCoeffsType; + typedef typename internal::plain_diag_type::type HCoeffsType; typedef Matrix IntRowVectorType; typedef PermutationMatrix PermutationType; - typedef typename ei_plain_col_type::type IntColVectorType; - typedef typename ei_plain_row_type::type RowVectorType; - typedef typename ei_plain_col_type::type ColVectorType; + typedef typename internal::plain_col_type::type IntColVectorType; + typedef typename internal::plain_row_type::type RowVectorType; + typedef typename internal::plain_col_type::type ColVectorType; /** \brief Default Constructor. * @@ -129,11 +129,11 @@ template class FullPivHouseholderQR * Output: \verbinclude FullPivHouseholderQR_solve.out */ template - inline const ei_solve_retval + inline const internal::solve_retval solve(const MatrixBase& b) const { - ei_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); - return ei_solve_retval(*this, b.derived()); + eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); + return internal::solve_retval(*this, b.derived()); } MatrixQType matrixQ(void) const; @@ -142,7 +142,7 @@ template class FullPivHouseholderQR */ const MatrixType& matrixQR() const { - ei_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); + eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); return m_qr; } @@ -150,13 +150,13 @@ template class FullPivHouseholderQR const PermutationType& colsPermutation() const { - ei_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); + eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); return m_cols_permutation; } const IntColVectorType& rowsTranspositions() const { - ei_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); + eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); return m_rows_transpositions; } @@ -196,7 +196,7 @@ template class FullPivHouseholderQR */ inline Index rank() const { - ei_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); + eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); return m_rank; } @@ -207,7 +207,7 @@ template class FullPivHouseholderQR */ inline Index dimensionOfKernel() const { - ei_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); + eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); return m_qr.cols() - m_rank; } @@ -219,7 +219,7 @@ template class FullPivHouseholderQR */ inline bool isInjective() const { - ei_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); + eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); return m_rank == m_qr.cols(); } @@ -231,7 +231,7 @@ template class FullPivHouseholderQR */ inline bool isSurjective() const { - ei_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); + eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); return m_rank == m_qr.rows(); } @@ -242,7 +242,7 @@ template class FullPivHouseholderQR */ inline bool isInvertible() const { - ei_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); + eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); return isInjective() && isSurjective(); } @@ -251,11 +251,11 @@ template class FullPivHouseholderQR * \note If this matrix is not invertible, the returned matrix has undefined coefficients. * Use isInvertible() to first determine whether this matrix is invertible. */ inline const - ei_solve_retval + internal::solve_retval inverse() const { - ei_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); - return ei_solve_retval + eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); + return internal::solve_retval (*this, MatrixType::Identity(m_qr.rows(), m_qr.cols())); } @@ -279,16 +279,16 @@ template class FullPivHouseholderQR template typename MatrixType::RealScalar FullPivHouseholderQR::absDeterminant() const { - ei_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); - ei_assert(m_qr.rows() == m_qr.cols() && "You can't take the determinant of a non-square matrix!"); - return ei_abs(m_qr.diagonal().prod()); + eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); + eigen_assert(m_qr.rows() == m_qr.cols() && "You can't take the determinant of a non-square matrix!"); + return internal::abs(m_qr.diagonal().prod()); } template typename MatrixType::RealScalar FullPivHouseholderQR::logAbsDeterminant() const { - ei_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); - ei_assert(m_qr.rows() == m_qr.cols() && "You can't take the determinant of a non-square matrix!"); + eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); + eigen_assert(m_qr.rows() == m_qr.cols() && "You can't take the determinant of a non-square matrix!"); return m_qr.diagonal().cwiseAbs().array().log().sum(); } @@ -326,7 +326,7 @@ FullPivHouseholderQR& FullPivHouseholderQR::compute(cons if(k==0) biggest = biggest_in_corner; // if the corner is negligible, then we have less than full rank, and we can finish early - if(ei_isMuchSmallerThan(biggest_in_corner, biggest, m_precision)) + if(internal::isMuchSmallerThan(biggest_in_corner, biggest, m_precision)) { m_rank = k; for(Index i = k; i < size; i++) @@ -367,16 +367,18 @@ FullPivHouseholderQR& FullPivHouseholderQR::compute(cons return *this; } +namespace internal { + template -struct ei_solve_retval, Rhs> - : ei_solve_retval_base, Rhs> +struct solve_retval, Rhs> + : solve_retval_base, Rhs> { EIGEN_MAKE_SOLVE_HELPERS(FullPivHouseholderQR<_MatrixType>,Rhs) template void evalTo(Dest& dst) const { const Index rows = dec().rows(), cols = dec().cols(); - ei_assert(rhs().rows() == rows); + eigen_assert(rhs().rows() == rows); // FIXME introduce nonzeroPivots() and use it here. and more generally, // make the same improvements in this dec as in FullPivLU. @@ -405,7 +407,7 @@ struct ei_solve_retval, Rhs> RealScalar biggest_in_lower_part_of_c = c.bottomRows(rows-dec().rank()).cwiseAbs().maxCoeff(); // FIXME brain dead const RealScalar m_precision = NumTraits::epsilon() * std::min(rows,cols); - if(!ei_isMuchSmallerThan(biggest_in_lower_part_of_c, biggest_in_upper_part_of_c, m_precision)) + if(!isMuchSmallerThan(biggest_in_lower_part_of_c, biggest_in_upper_part_of_c, m_precision)) return; } dec().matrixQR() @@ -418,11 +420,13 @@ struct ei_solve_retval, Rhs> } }; +} // end namespace internal + /** \returns the matrix Q */ template typename FullPivHouseholderQR::MatrixQType FullPivHouseholderQR::matrixQ() const { - ei_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); + eigen_assert(m_isInitialized && "FullPivHouseholderQR is not initialized."); // compute the product H'_0 H'_1 ... H'_n-1, // where H_k is the k-th Householder transformation I - h_k v_k v_k' // and v_k is the k-th Householder vector [1,m_qr(k+1,k), m_qr(k+2,k), ...] @@ -434,7 +438,7 @@ typename FullPivHouseholderQR::MatrixQType FullPivHouseholderQR= 0; k--) { res.block(k, k, rows-k, rows-k) - .applyHouseholderOnTheLeft(m_qr.col(k).tail(rows-k-1), ei_conj(m_hCoeffs.coeff(k)), &temp.coeffRef(k)); + .applyHouseholderOnTheLeft(m_qr.col(k).tail(rows-k-1), internal::conj(m_hCoeffs.coeff(k)), &temp.coeffRef(k)); res.row(k).swap(res.row(m_rows_transpositions.coeff(k))); } return res; -- cgit v1.2.3