You are here:
Concepts
>
Concepts Web
>
Class documentation
Class documentation of Concepts
Loading...
Searching...
No Matches
sparseqr
driver.hh
Go to the documentation of this file.
1
6
#ifndef sparseqrDriver_hh
7
#define sparseqrDriver_hh
8
9
#include <memory>
10
#include "
basics/typedefs.hh
"
11
#include "
operator/compositions.hh
"
12
#include "operator/sparseMatrix.hh"
13
#include "
operator/permutation.hh
"
14
#include "
sparseqr/sparseqr.hh
"
15
#include "
sparseqr/givensRotations.hh
"
16
17
using
concepts::Real
;
18
19
namespace
sparseqr
{
20
21
// **************************************************************** Driver **
22
34
class
Driver
:
concepts::Operator
<Real> {
35
public
:
41
Driver
(
const
concepts::SparseMatrix<Real>
& A)
42
:
concepts
::Operator<Real>(A.
dimY
(), A.
dimX
())
43
, rank_(0), A_(A), computed_(false)
44
, Prow_(nullptr), Pcol_(nullptr), Q_(nullptr), Qt_(nullptr), restr_(nullptr), ext_(nullptr)
45
, prow_(0), pcol_(0), qr_(nullptr) {}
46
virtual
~Driver
();
48
concepts::Permutation<Real>
*
Prow
();
50
concepts::Permutation<Real>
*
Pcol
();
52
sparseqr::GivensRotations<Real>
*
Q
();
54
sparseqr::GivensRotations<Real>
*
Qt
();
56
concepts::TrivExtendRestrict<Real>
*
restriction
();
58
concepts::TrivExtendRestrict<Real>
*
extension
();
60
inline
int
rank
();
61
62
virtual
void
operator()
(
const
concepts::Function<Real>
& fncY,
63
concepts::Function<Real>
& fncX);
64
void
operator()
(
const
concepts::Vector<Real>
& fncY,
65
concepts::Vector<Real>
& fncX);
66
protected
:
67
virtual
std::ostream&
info
(std::ostream& os)
const
;
68
private
:
69
void
compute_();
70
int
rank_;
71
const
concepts::SparseMatrix<Real>
& A_;
72
bool
computed_;
73
std::unique_ptr<concepts::Permutation<Real> > Prow_, Pcol_;
74
std::unique_ptr<sparseqr::GivensRotations<Real> > Q_, Qt_;
75
std::unique_ptr<concepts::TrivExtendRestrict<Real> > restr_, ext_;
76
concepts::Array<int>
prow_, pcol_;
77
std::unique_ptr<QR> qr_;
78
sparseqr::Qmatrix
q_;
79
};
80
81
int
Driver::rank
() {
82
if
(!computed_) compute_();
83
return
rank_;
84
}
85
86
}
// namespace sparseqr
87
88
#endif
// sparseqrDriver_hh
concepts::Array
Definition
array.hh:46
concepts::Function
Definition
basis.hh:21
concepts::Operator
Definition
compositions.hh:42
concepts::Operator< Real >::dimY
virtual const uint dimY() const
Definition
compositions.hh:98
concepts::Operator< Real >::dimX
virtual const uint dimX() const
Definition
compositions.hh:93
concepts::Operator< Real >::operator()
virtual void operator()()
concepts::Permutation
Definition
permutation.hh:41
concepts::SparseMatrix
Definition
sparseMatrix.hh:65
concepts::TrivExtendRestrict
Definition
permutation.hh:110
concepts::Vector
Definition
vector.hh:39
sparseqr::Driver
Definition
driver.hh:34
sparseqr::Driver::info
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
sparseqr::Driver::Driver
Driver(const concepts::SparseMatrix< Real > &A)
Definition
driver.hh:41
sparseqr::Driver::Qt
sparseqr::GivensRotations< Real > * Qt()
Returns .
sparseqr::Driver::restriction
concepts::TrivExtendRestrict< Real > * restriction()
Returns the restriction from n to the last n-r degrees of freedom.
sparseqr::Driver::extension
concepts::TrivExtendRestrict< Real > * extension()
Returns the extension from the last n-r to n degrees of freedom.
sparseqr::Driver::Q
sparseqr::GivensRotations< Real > * Q()
Returns .
sparseqr::Driver::rank
int rank()
Returns the rank of the matrix.
Definition
driver.hh:81
sparseqr::Driver::Pcol
concepts::Permutation< Real > * Pcol()
Returns .
sparseqr::Driver::Prow
concepts::Permutation< Real > * Prow()
Returns .
sparseqr::GivensRotations
Definition
givensRotations.hh:32
sparseqr::Qmatrix
Definition
sparseqr.hh:96
compositions.hh
givensRotations.hh
concepts
Definition
pml_formula.h:16
concepts::Real
double Real
Definition
typedefs.hh:39
sparseqr
Definition
sparseqr.hh:53
permutation.hh
sparseqr.hh
typedefs.hh
Generated on Wed Sep 13 2023 21:06:23 for Concepts by
1.9.8