Medial Code Documentation
Loading...
Searching...
No Matches
External
Eigen
src
misc
Kernel.h
1
// This file is part of Eigen, a lightweight C++ template library
2
// for linear algebra.
3
//
4
// Copyright (C) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
5
//
6
// This Source Code Form is subject to the terms of the Mozilla
7
// Public License v. 2.0. If a copy of the MPL was not distributed
8
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
10
#ifndef EIGEN_MISC_KERNEL_H
11
#define EIGEN_MISC_KERNEL_H
12
13
namespace
Eigen {
14
15
namespace
internal {
16
20
template
<
typename
DecompositionType>
21
struct
traits
<
kernel_retval_base
<DecompositionType> >
22
{
23
typedef
typename
DecompositionType::MatrixType MatrixType;
24
typedef
Matrix
<
25
typename
MatrixType::Scalar,
26
MatrixType::ColsAtCompileTime,
// the number of rows in the "kernel matrix"
27
// is the number of cols of the original matrix
28
// so that the product "matrix * kernel = zero" makes sense
29
Dynamic,
// we don't know at compile-time the dimension of the kernel
30
MatrixType::Options,
31
MatrixType::MaxColsAtCompileTime,
// see explanation for 2nd template parameter
32
MatrixType::MaxColsAtCompileTime
// the kernel is a subspace of the domain space,
33
// whose dimension is the number of columns of the original matrix
34
>
ReturnType
;
35
};
36
37
template
<
typename
_DecompositionType>
struct
kernel_retval_base
38
:
public
ReturnByValue
<kernel_retval_base<_DecompositionType> >
39
{
40
typedef
_DecompositionType
DecompositionType;
41
typedef
ReturnByValue<kernel_retval_base>
Base
;
42
43
explicit
kernel_retval_base
(
const
DecompositionType& dec)
44
: m_dec(dec),
45
m_rank(dec.rank()),
46
m_cols(m_rank==dec.cols() ? 1 : dec.cols() - m_rank)
47
{}
48
49
inline
Index rows()
const
{
return
m_dec.cols(); }
50
inline
Index cols()
const
{
return
m_cols; }
51
inline
Index rank()
const
{
return
m_rank; }
52
inline
const
DecompositionType& dec()
const
{
return
m_dec; }
53
54
template
<
typename
Dest>
inline
void
evalTo(
Dest
&
dst
)
const
55
{
56
static_cast<
const
kernel_retval<DecompositionType>
*
>
(
this
)->evalTo(
dst
);
57
}
58
59
protected
:
60
const
DecompositionType& m_dec;
61
Index m_rank, m_cols;
62
};
63
64
}
// end namespace internal
65
66
#define EIGEN_MAKE_KERNEL_HELPERS(DecompositionType) \
67
typedef typename DecompositionType::MatrixType MatrixType; \
68
typedef typename MatrixType::Scalar Scalar; \
69
typedef typename MatrixType::RealScalar RealScalar; \
70
typedef Eigen::internal::kernel_retval_base<DecompositionType> Base; \
71
using Base::dec; \
72
using Base::rank; \
73
using Base::rows; \
74
using Base::cols; \
75
kernel_retval(const DecompositionType& dec) : Base(dec) {}
76
77
}
// end namespace Eigen
78
79
#endif
// EIGEN_MISC_KERNEL_H
Eigen::Matrix
The matrix class, also used for vectors and row-vectors.
Definition
Matrix.h:180
Eigen::ReturnByValue
Definition
ReturnByValue.h:53
Eigen::Solve
Pseudo expression representing a solving operation.
Definition
Solve.h:63
Eigen::internal::kernel_retval_base
Definition
Kernel.h:39
Eigen::internal::traits
Definition
ForwardDeclarations.h:17
Generated on Mon Sep 15 2025 12:12:04 for Medial Code Documentation by
1.9.8