|
| dgbmatrix () |
|
| dgbmatrix (const dgbmatrix &) |
|
| dgbmatrix (const _dgbmatrix &) |
|
| dgbmatrix (const CPPL_INT &, const CPPL_INT &, const CPPL_INT &, const CPPL_INT &) |
|
| dgbmatrix (const char *) |
|
| ~dgbmatrix () |
|
_zgbmatrix | to_zgbmatrix () const |
|
_dgematrix | to_dgematrix () const |
|
double & | operator() (const CPPL_INT &, const CPPL_INT &) |
|
double | operator() (const CPPL_INT &, const CPPL_INT &) const |
|
dgbmatrix & | set (const CPPL_INT &, const CPPL_INT &, const double &) |
|
void | write (const char *) const |
|
void | read (const char *) |
|
void | clear () |
|
dgbmatrix & | zero () |
|
dgbmatrix & | identity () |
|
void | chsign () |
|
void | copy (const dgbmatrix &) |
|
void | shallow_copy (const _dgbmatrix &) |
|
dgbmatrix & | resize (const CPPL_INT &, const CPPL_INT &, const CPPL_INT &, const CPPL_INT &) |
|
_drovector | row (const CPPL_INT &) const |
|
_dcovector | col (const CPPL_INT &) const |
|
CPPL_INT | dgbsv (dgematrix &) |
|
CPPL_INT | dgbsv (dcovector &) |
|
dgbmatrix & | operator= (const dgbmatrix &) |
|
dgbmatrix & | operator= (const _dgbmatrix &) |
|
dgbmatrix & | operator+= (const dgbmatrix &) |
|
dgbmatrix & | operator+= (const _dgbmatrix &) |
|
dgbmatrix & | operator-= (const dgbmatrix &) |
|
dgbmatrix & | operator-= (const _dgbmatrix &) |
|
dgbmatrix & | operator*= (const dgbmatrix &) |
|
dgbmatrix & | operator*= (const _dgbmatrix &) |
|
dgbmatrix & | operator*= (const double &) |
|
dgbmatrix & | operator/= (const double &) |
|
|
std::ostream & | operator<< (std::ostream &, const dgbmatrix &) |
|
void | swap (dgbmatrix &, dgbmatrix &) |
|
_dgbmatrix | _ (dgbmatrix &) |
|
_dgbmatrix | t (const dgbmatrix &) |
|
_dgematrix | i (const dgbmatrix &) |
|
const dgbmatrix & | operator+ (const dgbmatrix &) |
|
_dgbmatrix | operator- (const dgbmatrix &) |
|
_dgematrix | operator+ (const dgbmatrix &, const dgematrix &) |
|
_dgematrix | operator+ (const dgbmatrix &, const _dgematrix &) |
|
_dgematrix | operator+ (const dgbmatrix &, const dsymatrix &) |
|
_dgematrix | operator+ (const dgbmatrix &, const _dsymatrix &) |
|
_dgbmatrix | operator+ (const dgbmatrix &, const dgbmatrix &) |
|
_dgbmatrix | operator+ (const dgbmatrix &, const _dgbmatrix &) |
|
_dgematrix | operator+ (const dgbmatrix &, const dgsmatrix &) |
|
_dgematrix | operator+ (const dgbmatrix &, const _dgsmatrix &) |
|
_dgematrix | operator+ (const dgbmatrix &, const dssmatrix &) |
|
_dgematrix | operator+ (const dgbmatrix &, const _dssmatrix &) |
|
_dgematrix | operator- (const dgbmatrix &, const dgematrix &) |
|
_dgematrix | operator- (const dgbmatrix &, const _dgematrix &) |
|
_dgematrix | operator- (const dgbmatrix &, const dsymatrix &) |
|
_dgematrix | operator- (const dgbmatrix &, const _dsymatrix &) |
|
_dgbmatrix | operator- (const dgbmatrix &, const dgbmatrix &) |
|
_dgbmatrix | operator- (const dgbmatrix &, const _dgbmatrix &) |
|
_dgematrix | operator- (const dgbmatrix &, const dgsmatrix &) |
|
_dgematrix | operator- (const dgbmatrix &, const _dgsmatrix &) |
|
_dgematrix | operator- (const dgbmatrix &, const dssmatrix &) |
|
_dgematrix | operator- (const dgbmatrix &, const _dssmatrix &) |
|
_dcovector | operator* (const dgbmatrix &, const dcovector &) |
|
_dcovector | operator* (const dgbmatrix &, const _dcovector &) |
|
_dgematrix | operator* (const dgbmatrix &, const dgematrix &) |
|
_dgematrix | operator* (const dgbmatrix &, const _dgematrix &) |
|
_dgematrix | operator* (const dgbmatrix &, const dsymatrix &) |
|
_dgematrix | operator* (const dgbmatrix &, const _dsymatrix &) |
|
_dgbmatrix | operator* (const dgbmatrix &, const dgbmatrix &) |
|
_dgbmatrix | operator* (const dgbmatrix &, const _dgbmatrix &) |
|
_dgematrix | operator* (const dgbmatrix &, const dgsmatrix &) |
|
_dgematrix | operator* (const dgbmatrix &, const _dgsmatrix &) |
|
_dgematrix | operator* (const dgbmatrix &, const dssmatrix &) |
|
_dgematrix | operator* (const dgbmatrix &, const _dssmatrix &) |
|
_dgbmatrix | operator* (const dgbmatrix &, const double &) |
|
_dgbmatrix | operator/ (const dgbmatrix &, const double &) |
|
_dgbmatrix | operator* (const double &, const dgbmatrix &) |
|
Real Double-precision General Band Matrix Class.
Definition at line 3 of file dgbmatrix.hpp.
double & dgbmatrix::operator() |
( |
const CPPL_INT & |
i, |
|
|
const CPPL_INT & |
j |
|
) |
| |
|
inline |
operator() for non-const object
Definition at line 3 of file dgbmatrix-io.hpp.
References darray, i, kl, ku, m, and n.
Referenced by dgbsv(), identity(), operator*=(), operator+=(), operator-=(), read(), and write().
6 if(
i<0 || j<0 ||
m<=
i || n<=j || i-j>
kl || j-
i>
ku ){
8 std::cerr <<
"The required component is out of the matrix size." << std::endl
9 <<
"Your input is (" <<
i <<
"," << j <<
"), whereas the matrix size is " <<
m <<
"x" <<
n <<
" with kl=" <<
kl <<
", ku=" <<
ku <<
"." << std::endl;
friend _dgematrix i(const dgbmatrix &)
CPPL_INT m
matrix row size
double ** darray
array of pointers of column head addresses
CPPL_INT kl
lower band width
CPPL_INT ku
upper band width
CPPL_INT n
matrix column size
change the matrix into a zero matrix
Definition at line 18 of file dgbmatrix-misc.hpp.
References array, i, kl, ku, and n.
Referenced by col(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), row(), and to_dgematrix().
20 const CPPL_INT size =(
kl+
ku+1)*
n;
21 for(CPPL_INT
i=0;
i<size;
i++){
friend _dgematrix i(const dgbmatrix &)
CPPL_INT kl
lower band width
CPPL_INT ku
upper band width
double * array
1D array to store matrix data
CPPL_INT n
matrix column size
void dgbmatrix::shallow_copy |
( |
const _dgbmatrix & |
mat | ) |
|
|
inline |
make a shallow copy of the matrix
This function is not designed to be used in project codes.
Definition at line 83 of file dgbmatrix-misc.hpp.
References array, _dgbmatrix::array, darray, _dgbmatrix::darray, kl, _dgbmatrix::kl, _dgbmatrix::ku, ku, m, _dgbmatrix::m, _dgbmatrix::n, n, and _dgbmatrix::nullify().
Referenced by operator=().
CPPL_INT m
matrix row size
double ** darray
array of pointers of column head addresses
CPPL_INT ku
upper band width
double ** darray
array of pointers of column head addresses
CPPL_INT kl
lower band width
CPPL_INT kl
lower band width
CPPL_INT ku
upper band width
double * array
1D array to store matrix data
CPPL_INT n
matrix column size
double * array
1D array to store matrix data
CPPL_INT n
matrix column size
CPPL_INT m
matrix row size
solve A*X=Y using dgbsv
The argument is dgematrix Y. Y is overwritten and become the solution X. A is also overwritten.
Definition at line 5 of file dgbmatrix-lapack.hpp.
References dgematrix::array, array, i, kl, ku, m, dgematrix::m, n, dgematrix::n, operator()(), and swap.
Referenced by i().
10 std::cerr <<
"These matrix and vector cannot be solved." << std::endl
11 <<
"Your input was (" <<
m <<
"x" <<
n <<
") and (" << mat.
m <<
"x" << mat.
n <<
")." << std::endl;
17 for(CPPL_INT
i=0;
i<
m;
i++){
18 const CPPL_INT jmax =std::min(
n,
i+
ku+1);
19 for(CPPL_INT j=std::max(CPPL_INT(0),
i-
kl); j<jmax; j++){
24 CPPL_INT NRHS(mat.
n), LDAB(2*
kl+
ku+1), *IPIV(
new CPPL_INT[
n]), LDB(mat.
m), INFO(1);
25 dgbsv_(&
n, &
kl, &
ku, &NRHS, newmat.array, &LDAB, IPIV, mat.
array, &LDB, &INFO);
32 std::cerr <<
"Serious trouble happend. INFO = " << INFO <<
"." << std::endl;
friend _dgematrix i(const dgbmatrix &)
CPPL_INT m
matrix row size
CPPL_INT m
matrix row size
double * array
1D array to store matrix data
CPPL_INT n
matrix column size
CPPL_INT kl
lower band width
CPPL_INT ku
upper band width
Real Double-precision General Band Matrix Class.
double & operator()(const CPPL_INT &, const CPPL_INT &)
CPPL_INT n
matrix column size
friend void swap(dgbmatrix &, dgbmatrix &)
solve A*x=y using dgbsv
The argument is dcovector y. y is overwritten and become the solution x. A is also overwritten.
Definition at line 41 of file dgbmatrix-lapack.hpp.
References dcovector::array, array, i, kl, ku, dcovector::l, m, n, operator()(), and swap.
46 std::cerr <<
"These matrix and vector cannot be solved." << std::endl
47 <<
"Your input was (" <<
m <<
"x" <<
n <<
") and (" << vec.
l <<
")." << std::endl;
53 for(CPPL_INT
i=0;
i<
m;
i++){
54 const CPPL_INT jmax =std::min(
n,
i+
ku+1);
55 for(CPPL_INT j=std::max(CPPL_INT(0),
i-
kl); j<jmax; j++){
60 CPPL_INT NRHS(1), LDAB(2*
kl+
ku+1), *IPIV(
new CPPL_INT[
n]), LDB(vec.
l), INFO(1);
61 dgbsv_(&
n, &
kl, &
ku, &NRHS, newmat.array, &LDAB, IPIV, vec.
array, &LDB, &INFO);
68 std::cerr <<
"Serious trouble happend. INFO = " << INFO <<
"." << std::endl;
friend _dgematrix i(const dgbmatrix &)
CPPL_INT m
matrix row size
double * array
1D array to store vector data
CPPL_INT kl
lower band width
CPPL_INT ku
upper band width
Real Double-precision General Band Matrix Class.
double & operator()(const CPPL_INT &, const CPPL_INT &)
CPPL_INT n
matrix column size
friend void swap(dgbmatrix &, dgbmatrix &)
dgbmatrix+=dgbmatrix operator
If the band width of the left side matrix is narrower than the right side matrix, the band width of the left side matrix become thicker as same as the right side matrix.
Definition at line 19 of file dgbmatrix-dgbmatrix.hpp.
References i, kl, ku, m, n, operator()(), swap, and zero().
22 if(
n!=mat.
n ||
m!=mat.
m){
24 std::cerr <<
"These two matrises can not make a summation." << std::endl
25 <<
"Your input was" <<
"(" <<
m <<
"x"<<
n <<
","<<
kl <<
":"<<
ku <<
") "<<
"+=" <<
"("<< mat.
m <<
"x"<< mat.
n <<
","<< mat.
kl <<
":"<< mat.
ku <<
") " << std::endl;
31 for(CPPL_INT
i=0;
i<
m;
i++){
32 const CPPL_INT jmax =std::min(
n,
i+mat.
ku+1);
33 for(CPPL_INT j=std::max(CPPL_INT(0),
i-mat.
kl); j<jmax; j++){
44 for(CPPL_INT
i=0;
i<
m;
i++){
45 const CPPL_INT jmax1 =std::min(
n,
i+
ku+1);
46 for(CPPL_INT j=std::max(CPPL_INT(0),
i-
kl); j<jmax1; j++){
49 const CPPL_INT jmax2 =std::min(mat.
n,
i+mat.
ku+1);
50 for(CPPL_INT j=std::max(CPPL_INT(0),
i-mat.
kl); j<jmax2; j++){
51 newmat(
i,j) += mat(
i,j);
friend _dgematrix i(const dgbmatrix &)
CPPL_INT m
matrix row size
CPPL_INT kl
lower band width
CPPL_INT ku
upper band width
Real Double-precision General Band Matrix Class.
double & operator()(const CPPL_INT &, const CPPL_INT &)
CPPL_INT n
matrix column size
friend void swap(dgbmatrix &, dgbmatrix &)
dgbmatrix+=_dgbmatrix operator
If the band width of the left side matrix is narrower than the right side matrix, the band width of the left side matrix become thicker as same as the right side matrix.
Definition at line 16 of file dgbmatrix-_dgbmatrix.hpp.
References _dgbmatrix::destroy(), i, kl, _dgbmatrix::kl, _dgbmatrix::ku, ku, m, _dgbmatrix::m, _dgbmatrix::n, n, operator()(), swap, and zero().
19 if(
n!=mat.
n ||
m!=mat.
m){
21 std::cerr <<
"These two matrises can not make a summation." << std::endl
22 <<
"Your input was" <<
"(" <<
m <<
"x"<<
n <<
","<<
kl <<
":"<<
ku <<
") "<<
"+=" <<
"("<< mat.
m <<
"x"<< mat.
n <<
","<< mat.
kl <<
":"<< mat.
ku <<
") " << std::endl;
28 for(CPPL_INT
i=0;
i<
m;
i++){
29 const CPPL_INT jmax =std::min(
n,
i+mat.
ku+1);
30 for(CPPL_INT j=std::max(CPPL_INT(0),
i-mat.
kl); j<jmax; j++){
41 for(CPPL_INT
i=0;
i<
m;
i++){
42 const CPPL_INT jmax1 =std::min(
n,
i+
ku+1);
43 for(CPPL_INT j=std::max(CPPL_INT(0),
i-
kl); j<jmax1; j++){
46 const CPPL_INT jmax2 =std::min(mat.
n,
i+mat.
ku+1);
47 for(CPPL_INT j=std::max(CPPL_INT(0),
i-mat.
kl); j<jmax2; j++){
48 newmat(
i,j)+=mat(
i,j);
friend _dgematrix i(const dgbmatrix &)
CPPL_INT m
matrix row size
CPPL_INT ku
upper band width
CPPL_INT kl
lower band width
CPPL_INT kl
lower band width
CPPL_INT ku
upper band width
CPPL_INT n
matrix column size
Real Double-precision General Band Matrix Class.
double & operator()(const CPPL_INT &, const CPPL_INT &)
CPPL_INT n
matrix column size
friend void swap(dgbmatrix &, dgbmatrix &)
CPPL_INT m
matrix row size
dgbmatrix-=dgbmatrix operator
If the band width of the left side matrix is narrower than the right side matrix, the band width of the left side matrix become thicker as same as the right side matrix.
Definition at line 63 of file dgbmatrix-dgbmatrix.hpp.
References i, kl, ku, m, n, operator()(), swap, and zero().
66 if(
n!=mat.
n ||
m!=mat.
m){
68 std::cerr <<
"These two matrises can not make a subtraction." << std::endl
69 <<
"Your input was" <<
"(" <<
m <<
"x"<<
n <<
","<<
kl <<
":"<<
ku <<
") "<<
"-=" <<
"("<< mat.
m <<
"x"<< mat.
n <<
","<< mat.
kl <<
":"<< mat.
ku <<
") " << std::endl;
75 for(CPPL_INT
i=0;
i<
m;
i++){
76 const CPPL_INT jmax =std::min(
n,
i+mat.
ku+1);
77 for(CPPL_INT j=std::max(CPPL_INT(0),
i-mat.
kl); j<jmax; j++){
88 for(CPPL_INT
i=0;
i<
m;
i++){
89 const CPPL_INT jmax1 =std::min(
n,
i+
ku+1);
90 for(CPPL_INT j=std::max(CPPL_INT(0),
i-
kl); j<jmax1; j++){
93 const CPPL_INT jmax2 =std::min(mat.
n,
i+mat.
ku+1);
94 for(CPPL_INT j=std::max(CPPL_INT(0),
i-mat.
kl); j<jmax2; j++){
95 newmat(
i,j) -= mat(
i,j);
friend _dgematrix i(const dgbmatrix &)
CPPL_INT m
matrix row size
CPPL_INT kl
lower band width
CPPL_INT ku
upper band width
Real Double-precision General Band Matrix Class.
double & operator()(const CPPL_INT &, const CPPL_INT &)
CPPL_INT n
matrix column size
friend void swap(dgbmatrix &, dgbmatrix &)
dgbmatrix-=_dgbmatrix operator
If the band width of the left side matrix is narrower than the right side matrix, the band width of the left side matrix become thicker as same as the right side matrix.
Definition at line 61 of file dgbmatrix-_dgbmatrix.hpp.
References _dgbmatrix::destroy(), i, kl, _dgbmatrix::kl, _dgbmatrix::ku, ku, m, _dgbmatrix::m, _dgbmatrix::n, n, operator()(), swap, and zero().
64 if(
n!=mat.
n ||
m!=mat.
m){
66 std::cerr <<
"These two matrises can not make a subtraction." << std::endl
67 <<
"Your input was" <<
"(" <<
m <<
"x"<<
n <<
","<<
kl <<
":"<<
ku <<
") "<<
"-=" <<
"("<< mat.
m <<
"x"<< mat.
n <<
","<< mat.
kl <<
":"<< mat.
ku <<
") " << std::endl;
73 for(CPPL_INT
i=0;
i<
m;
i++){
74 const CPPL_INT jmax =std::min(
n,
i+mat.
ku+1);
75 for(CPPL_INT j=std::max(CPPL_INT(0),
i-mat.
kl); j<jmax; j++){
86 for(CPPL_INT
i=0;
i<
m;
i++){
87 const CPPL_INT jmax1 =std::min(
n,
i+
ku+1);
88 for(CPPL_INT j=std::max(CPPL_INT(0),
i-
kl); j<jmax1; j++){
91 const CPPL_INT jmax2 =std::min(mat.
n,
i+mat.
ku+1);
92 for(CPPL_INT j=std::max(CPPL_INT(0),
i-mat.
kl); j<jmax2; j++){
93 newmat(
i,j)-=mat(
i,j);
friend _dgematrix i(const dgbmatrix &)
CPPL_INT m
matrix row size
CPPL_INT ku
upper band width
CPPL_INT kl
lower band width
CPPL_INT kl
lower band width
CPPL_INT ku
upper band width
CPPL_INT n
matrix column size
Real Double-precision General Band Matrix Class.
double & operator()(const CPPL_INT &, const CPPL_INT &)
CPPL_INT n
matrix column size
friend void swap(dgbmatrix &, dgbmatrix &)
CPPL_INT m
matrix row size
dgbmatrix*=_dgbmatrix operator
Definition at line 105 of file dgbmatrix-_dgbmatrix.hpp.
References _dgbmatrix::destroy(), i, kl, _dgbmatrix::kl, _dgbmatrix::ku, ku, _dgbmatrix::m, m, _dgbmatrix::n, n, operator()(), swap, and zero().
106 {CPPL_VERBOSE_REPORT;
110 std::cerr <<
"These two matrises can not make a product." << std::endl
111 <<
"Your input was (" <<
m <<
"x" <<
n <<
") * (" << mat.
m <<
"x" << mat.
n <<
")." << std::endl;
119 for(CPPL_INT
i=0;
i<newmat.
m;
i++){
120 const CPPL_INT jmax =std::min(newmat.n,
i+newmat.ku+1);
121 for(CPPL_INT j=std::max(CPPL_INT(0),
i-newmat.kl); j<jmax; j++){
122 const CPPL_INT kmax =std::min( std::min(
n,
i+
ku+1), std::min(mat.
m,j+mat.
kl+1) );
123 for(CPPL_INT k=std::max( std::max(CPPL_INT(0),
i-
kl), std::max(CPPL_INT(0),j-mat.
ku) ); k<kmax; k++){
friend _dgematrix i(const dgbmatrix &)
CPPL_INT m
matrix row size
CPPL_INT ku
upper band width
CPPL_INT kl
lower band width
CPPL_INT kl
lower band width
CPPL_INT ku
upper band width
CPPL_INT n
matrix column size
CPPL_INT m
matrix row size
Real Double-precision General Band Matrix Class.
double & operator()(const CPPL_INT &, const CPPL_INT &)
CPPL_INT n
matrix column size
friend void swap(dgbmatrix &, dgbmatrix &)
CPPL_INT m
matrix row size
return its inverse matrix
Definition at line 19 of file dgbmatrix-calc.hpp.
Referenced by chsign(), col(), copy(), dgbmatrix(), dgbsv(), identity(), operator()(), operator*=(), operator+=(), operator-=(), read(), resize(), set(), to_dgematrix(), to_zgbmatrix(), write(), and zero().
24 std::cerr <<
"This matrix is not square and has no inverse matrix." << std::endl
25 <<
"Your input was (" << mat.
m <<
"x" << mat.
n <<
")." << std::endl;
33 mat_cp.dgbsv(mat_inv);
CPPL_INT m
matrix row size
friend _dgbmatrix _(dgbmatrix &)
Real Double-precision General Dence Matrix Class.
Real Double-precision General Band Matrix Class.
CPPL_INT n
matrix column size