27 #ifndef G2O_CORE_MATRIX_OPERATIONS_H 28 #define G2O_CORE_MATRIX_OPERATIONS_H 35 template<
typename MatrixType>
36 inline void axpy(
const MatrixType& A,
const Eigen::Map<const Eigen::VectorXd>& x,
int xoff, Eigen::Map<Eigen::VectorXd>& y,
int yoff)
38 y.segment<MatrixType::RowsAtCompileTime>(yoff) += A * x.segment<MatrixType::ColsAtCompileTime>(xoff);
42 inline void axpy(
const Eigen::Matrix<double, Eigen::Dynamic, t>& A,
const Eigen::Map<const Eigen::VectorXd>& x,
int xoff, Eigen::Map<Eigen::VectorXd>& y,
int yoff)
44 y.segment(yoff, A.rows()) += A * x.segment<Eigen::Matrix<double, Eigen::Dynamic, t>::ColsAtCompileTime>(xoff);
48 inline void axpy<Eigen::MatrixXd>(
const Eigen::MatrixXd& A,
const Eigen::Map<const Eigen::VectorXd>& x,
int xoff, Eigen::Map<Eigen::VectorXd>& y,
int yoff)
50 y.segment(yoff, A.rows()) += A * x.segment(xoff, A.cols());
53 template<
typename MatrixType>
54 inline void atxpy(
const MatrixType& A,
const Eigen::Map<const Eigen::VectorXd>& x,
int xoff, Eigen::Map<Eigen::VectorXd>& y,
int yoff)
56 y.segment<MatrixType::ColsAtCompileTime>(yoff) += A.transpose() * x.segment<MatrixType::RowsAtCompileTime>(xoff);
60 inline void atxpy(
const Eigen::Matrix<double, Eigen::Dynamic, t>& A,
const Eigen::Map<const Eigen::VectorXd>& x,
int xoff, Eigen::Map<Eigen::VectorXd>& y,
int yoff)
62 y.segment<Eigen::Matrix<double, Eigen::Dynamic, t>::ColsAtCompileTime>(yoff) += A.transpose() * x.segment(xoff, A.rows());
66 inline void atxpy<Eigen::MatrixXd>(
const Eigen::MatrixXd& A,
const Eigen::Map<const Eigen::VectorXd>& x,
int xoff, Eigen::Map<Eigen::VectorXd>& y,
int yoff)
68 y.segment(yoff, A.cols()) += A.transpose() * x.segment(xoff, A.rows());
void axpy(const MatrixType &A, const Eigen::Map< const Eigen::VectorXd > &x, int xoff, Eigen::Map< Eigen::VectorXd > &y, int yoff)
void atxpy(const MatrixType &A, const Eigen::Map< const Eigen::VectorXd > &x, int xoff, Eigen::Map< Eigen::VectorXd > &y, int yoff)