g2o
Toggle main menu visibility
Loading...
Searching...
No Matches
g2o
core
matrix_operations.h
Go to the documentation of this file.
1
// g2o - General Graph Optimization
2
// Copyright (C) 2011 R. Kuemmerle, G. Grisetti, W. Burgard
3
// All rights reserved.
4
//
5
// Redistribution and use in source and binary forms, with or without
6
// modification, are permitted provided that the following conditions are
7
// met:
8
//
9
// * Redistributions of source code must retain the above copyright notice,
10
// this list of conditions and the following disclaimer.
11
// * Redistributions in binary form must reproduce the above copyright
12
// notice, this list of conditions and the following disclaimer in the
13
// documentation and/or other materials provided with the distribution.
14
//
15
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
16
// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17
// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
18
// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19
// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21
// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27
#ifndef G2O_CORE_MATRIX_OPERATIONS_H
28
#define G2O_CORE_MATRIX_OPERATIONS_H
29
30
#include <Eigen/Core>
31
32
#include "
g2o/core/eigen_types.h
"
33
34
namespace
g2o
{
35
namespace
internal
{
36
37
template
<
typename
MatrixType>
38
inline
void
axpy
(
const
MatrixType& A,
const
Eigen::Map<const VectorX>& x,
39
int
xoff, Eigen::Map<VectorX>& y,
int
yoff) {
40
y.segment<MatrixType::RowsAtCompileTime>(yoff) +=
41
A * x.segment<MatrixType::ColsAtCompileTime>(xoff);
42
}
43
44
template
<
int
t>
45
inline
void
axpy
(
const
Eigen::Matrix<double, Eigen::Dynamic, t>& A,
46
const
Eigen::Map<const VectorX>& x,
int
xoff,
47
Eigen::Map<VectorX>& y,
int
yoff) {
48
y.segment(yoff, A.rows()) +=
49
A *
50
x.segment<Eigen::Matrix<double, Eigen::Dynamic, t>::ColsAtCompileTime>(
51
xoff);
52
}
53
54
template
<>
55
inline
void
axpy<MatrixX>
(
const
MatrixX
& A,
const
Eigen::Map<const VectorX>& x,
56
int
xoff, Eigen::Map<VectorX>& y,
int
yoff) {
57
y.segment(yoff, A.rows()) += A * x.segment(xoff, A.cols());
58
}
59
60
template
<
typename
MatrixType>
61
inline
void
atxpy
(
const
MatrixType& A,
const
Eigen::Map<const VectorX>& x,
62
int
xoff, Eigen::Map<VectorX>& y,
int
yoff) {
63
y.segment<MatrixType::ColsAtCompileTime>(yoff) +=
64
A.transpose() * x.segment<MatrixType::RowsAtCompileTime>(xoff);
65
}
66
67
template
<
int
t>
68
inline
void
atxpy
(
const
Eigen::Matrix<double, Eigen::Dynamic, t>& A,
69
const
Eigen::Map<const VectorX>& x,
int
xoff,
70
Eigen::Map<VectorX>& y,
int
yoff) {
71
y.segment<Eigen::Matrix<double, Eigen::Dynamic, t>::ColsAtCompileTime>(
72
yoff) += A.transpose() * x.segment(xoff, A.rows());
73
}
74
75
template
<>
76
inline
void
atxpy<MatrixX>
(
const
MatrixX
& A,
const
Eigen::Map<const VectorX>& x,
77
int
xoff, Eigen::Map<VectorX>& y,
int
yoff) {
78
y.segment(yoff, A.cols()) += A.transpose() * x.segment(xoff, A.rows());
79
}
80
81
}
// end namespace internal
82
}
// end namespace g2o
83
84
#endif
eigen_types.h
g2o::internal
Definition
base_edge.h:40
g2o::internal::atxpy
void atxpy(const MatrixType &A, const Eigen::Map< const VectorX > &x, int xoff, Eigen::Map< VectorX > &y, int yoff)
Definition
matrix_operations.h:61
g2o::internal::axpy
void axpy(const MatrixType &A, const Eigen::Map< const VectorX > &x, int xoff, Eigen::Map< VectorX > &y, int yoff)
Definition
matrix_operations.h:38
g2o::internal::axpy< MatrixX >
void axpy< MatrixX >(const MatrixX &A, const Eigen::Map< const VectorX > &x, int xoff, Eigen::Map< VectorX > &y, int yoff)
Definition
matrix_operations.h:55
g2o::internal::atxpy< MatrixX >
void atxpy< MatrixX >(const MatrixX &A, const Eigen::Map< const VectorX > &x, int xoff, Eigen::Map< VectorX > &y, int yoff)
Definition
matrix_operations.h:76
g2o
Definition
dl_wrapper.cpp:55
g2o::MatrixX
MatrixN< Eigen::Dynamic > MatrixX
Definition
eigen_types.h:74
Generated on
for g2o by
1.17.0