CPPLapack
 All Classes Files Functions Variables Friends Pages
Public Member Functions | Public Attributes | Friends | List of all members
_dgematrix Class Reference

(DO NOT USE) Smart-temporary Real Double-precision General Dence Matrix Class More...

#include <_dgematrix.hpp>

Public Member Functions

 _dgematrix ()
 
 _dgematrix (const _dgematrix &)
 
 ~_dgematrix ()
 
_zgematrix to_zgematrix () const
 
double & operator() (const CPPL_INT &, const CPPL_INT &) const
 
void write (const char *) const
 
void nullify () const
 
void destroy () const
 

Public Attributes

CPPL_INT m
 matrix row size More...
 
CPPL_INT n
 matrix column size More...
 
double * array
 1D array to store matrix data More...
 
double ** darray
 array of pointers of column head addresses More...
 

Friends

std::ostream & operator<< (std::ostream &, const dgematrix &)
 
_dgematrix t (const _dgematrix &)
 
_dgematrix i (const _dgematrix &)
 
void idamax (CPPL_INT &, CPPL_INT &, const _dgematrix &)
 
double damax (const _dgematrix &)
 
const _dgematrixoperator+ (const _dgematrix &)
 
_dgematrix operator- (const _dgematrix &)
 
_dgematrix operator+ (const _dgematrix &, const dgematrix &)
 
_dgematrix operator+ (const _dgematrix &, const _dgematrix &)
 
_dgematrix operator+ (const _dgematrix &, const dsymatrix &)
 
_dgematrix operator+ (const _dgematrix &, const _dsymatrix &)
 
_dgematrix operator+ (const _dgematrix &, const dgbmatrix &)
 
_dgematrix operator+ (const _dgematrix &, const _dgbmatrix &)
 
_dgematrix operator+ (const _dgematrix &, const dgsmatrix &)
 
_dgematrix operator+ (const _dgematrix &, const _dgsmatrix &)
 
_dgematrix operator+ (const _dgematrix &, const dssmatrix &)
 
_dgematrix operator+ (const _dgematrix &, const _dssmatrix &)
 
_dgematrix operator- (const _dgematrix &, const dgematrix &)
 
_dgematrix operator- (const _dgematrix &, const _dgematrix &)
 
_dgematrix operator- (const _dgematrix &, const dsymatrix &)
 
_dgematrix operator- (const _dgematrix &, const _dsymatrix &)
 
_dgematrix operator- (const _dgematrix &, const dgbmatrix &)
 
_dgematrix operator- (const _dgematrix &, const _dgbmatrix &)
 
_dgematrix operator- (const _dgematrix &, const dgsmatrix &)
 
_dgematrix operator- (const _dgematrix &, const _dgsmatrix &)
 
_dgematrix operator- (const _dgematrix &, const dssmatrix &)
 
_dgematrix operator- (const _dgematrix &, const _dssmatrix &)
 
_dcovector operator* (const _dgematrix &, const dcovector &)
 
_dcovector operator* (const _dgematrix &, const _dcovector &)
 
_dgematrix operator* (const _dgematrix &, const dgematrix &)
 
_dgematrix operator* (const _dgematrix &, const _dgematrix &)
 
_dgematrix operator* (const _dgematrix &, const dsymatrix &)
 
_dgematrix operator* (const _dgematrix &, const _dsymatrix &)
 
_dgematrix operator* (const _dgematrix &, const dgbmatrix &)
 
_dgematrix operator* (const _dgematrix &, const _dgbmatrix &)
 
_dgematrix operator* (const _dgematrix &, const dgsmatrix &)
 
_dgematrix operator* (const _dgematrix &, const _dgsmatrix &)
 
_dgematrix operator* (const _dgematrix &, const dssmatrix &)
 
_dgematrix operator* (const _dgematrix &, const _dssmatrix &)
 
_dgematrix operator* (const _dgematrix &, const double &)
 
_dgematrix operator/ (const _dgematrix &, const double &)
 
_dgematrix operator* (const double &, const _dgematrix &)
 

Detailed Description

(DO NOT USE) Smart-temporary Real Double-precision General Dence Matrix Class

Definition at line 3 of file _dgematrix.hpp.

Constructor & Destructor Documentation

_dgematrix::_dgematrix ( )
inline

_dgematrix constructor without arguments

Definition at line 3 of file _dgematrix-constructor.hpp.

References array, darray, m, and n.

4 {CPPL_VERBOSE_REPORT;
5  m =0;
6  n =0;
7  array =NULL;
8  darray =NULL;
9 }
double ** darray
array of pointers of column head addresses
Definition: _dgematrix.hpp:12
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
_dgematrix::_dgematrix ( const _dgematrix mat)
inline

_dgematrix copy constructor

Definition at line 13 of file _dgematrix-constructor.hpp.

References array, darray, m, n, and nullify().

14 {CPPL_VERBOSE_REPORT;
15  m =mat.m;
16  n =mat.n;
17  array =mat.array;
18  darray =mat.darray;
19 
20  mat.nullify();
21 }
double ** darray
array of pointers of column head addresses
Definition: _dgematrix.hpp:12
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
void nullify() const
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
_dgematrix::~_dgematrix ( )
inline

dgematrix destructor

Definition at line 29 of file _dgematrix-constructor.hpp.

References array, and darray.

30 {CPPL_VERBOSE_REPORT;
31  delete [] darray;
32  delete [] array;
33 }
double ** darray
array of pointers of column head addresses
Definition: _dgematrix.hpp:12
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11

Member Function Documentation

_zgematrix _dgematrix::to_zgematrix ( ) const
inline

cast to _zgematrix

Definition at line 3 of file _dgematrix-cast.hpp.

References _(), array, zgematrix::array, destroy(), i, m, and n.

4 {CPPL_VERBOSE_REPORT;
5  zgematrix newmat(m,n);
6  for(CPPL_INT i=0; i<m*n; i++){
7  newmat.array[i] =comple(array[i],0.0);
8  }
9 
10  destroy();
11  return _(newmat);
12 }
friend _dgematrix i(const _dgematrix &)
Complex Double-precision General Dence Matrix Class.
Definition: zgematrix.hpp:3
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
_dcovector _(dcovector &vec)
double & _dgematrix::operator() ( const CPPL_INT &  i,
const CPPL_INT &  j 
) const
inline

operator() for object

Definition at line 3 of file _dgematrix-io.hpp.

References darray, i, m, and n.

Referenced by write().

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if( i<0 || j<0 || m<=i || n<=j ){
7  ERROR_REPORT;
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 << "." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  //double val(array[i+m*j]);
15  return darray[j][i];
16 }
double ** darray
array of pointers of column head addresses
Definition: _dgematrix.hpp:12
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void _dgematrix::write ( const char *  filename) const
inline

Definition at line 41 of file _dgematrix-io.hpp.

References destroy(), i, m, n, and operator()().

42 {CPPL_VERBOSE_REPORT;
43  std::ofstream ofs(filename, std::ios::trunc);
44  ofs.setf(std::cout.flags());
45  ofs.precision(std::cout.precision());
46  ofs.width(std::cout.width());
47  ofs.fill(std::cout.fill());
48 
49  ofs << "#dgematrix" << " " << m << " " << n << std::endl;
50  for(CPPL_INT i=0; i<m; i++){
51  for(CPPL_INT j=0; j<n; j++ ){
52  ofs << operator()(i,j) << " ";
53  }
54  ofs << std::endl;
55  }
56 
57  ofs.close();
58  destroy();
59 }
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double & operator()(const CPPL_INT &, const CPPL_INT &) const
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
void _dgematrix::nullify ( ) const
inline

nullify all the matrix data

Definition at line 3 of file _dgematrix-misc.hpp.

References array, darray, m, and n.

Referenced by _dgematrix(), dgematrix::dgematrix(), and dgematrix::shallow_copy().

4 {CPPL_VERBOSE_REPORT;
5  m=0;
6  n=0;
7  array=NULL;
8  darray=NULL;
9 }
double ** darray
array of pointers of column head addresses
Definition: _dgematrix.hpp:12
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void _dgematrix::destroy ( ) const
inline

destroy all the matrix data

Definition at line 13 of file _dgematrix-misc.hpp.

References array, and darray.

Referenced by damax(), idamax(), operator*(), dgematrix::operator*=(), operator+(), dgematrix::operator+=(), operator-(), dgematrix::operator-=(), operator<<(), t(), to_zgematrix(), and write().

14 {CPPL_VERBOSE_REPORT;
15  delete [] array;
16  delete [] darray;
17  array=NULL;
18  darray=NULL;
19 }
double ** darray
array of pointers of column head addresses
Definition: _dgematrix.hpp:12
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  s,
const dgematrix mat 
)
friend

Definition at line 63 of file dgematrix-io.hpp.

64 {CPPL_VERBOSE_REPORT;
65  for(CPPL_INT i=0; i<mat.m; i++){
66  for(CPPL_INT j=0; j<mat.n; j++){
67  s << " " << mat(i,j);
68  }
69  s << std::endl;
70  }
71  return s;
72 }
CPPL_INT m
matrix row size
Definition: dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: dgematrix.hpp:10
friend _dgematrix i(const _dgematrix &)
_dgematrix t ( const _dgematrix mat)
friend

return transposed dgematrix

Definition at line 3 of file _dgematrix-calc.hpp.

4 {CPPL_VERBOSE_REPORT;
5  dgematrix newmat(mat.n,mat.m);
6 
7  for(CPPL_INT i=0; i<newmat.m; i++){
8  for(CPPL_INT j=0; j<newmat.n; j++){
9  newmat(i,j) =mat(j,i);
10  }
11  }
12 
13  mat.destroy();
14  return _(newmat);
15 }
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
_dcovector _(dcovector &vec)
_dgematrix i ( const _dgematrix mat)
friend

return its inverse matrix

Definition at line 19 of file _dgematrix-calc.hpp.

Referenced by operator()(), operator*(), to_zgematrix(), and write().

20 {CPPL_VERBOSE_REPORT;
21 #ifdef CPPL_DEBUG
22  if(mat.m!=mat.n){
23  ERROR_REPORT;
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;
26  exit(1);
27  }
28 #endif//CPPL_DEBUG
29 
30  dgematrix mat_cp(mat);
31  dgematrix mat_inv(mat_cp.m,mat_cp.n);
32  mat_inv.identity();
33  mat_cp.dgesv(mat_inv);
34 
35  return _(mat_inv);
36 }
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
_dcovector _(dcovector &vec)
void idamax ( CPPL_INT &  i,
CPPL_INT &  j,
const _dgematrix mat 
)
friend

search the index of element having the largest absolute value in 0-based numbering system

Definition at line 45 of file _dgematrix-calc.hpp.

46 {CPPL_VERBOSE_REPORT;
47  CPPL_INT mn =mat.m*mat.n;
48  CPPL_INT inc =1;
49  CPPL_INT index =idamax_(&mn, mat.array, &inc) -1;
50  i =index%mat.m;
51  j =index/mat.m;
52 
53  mat.destroy();
54 }
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
double damax ( const _dgematrix mat)
friend

return its largest absolute value

Definition at line 58 of file _dgematrix-calc.hpp.

59 {CPPL_VERBOSE_REPORT;
60  CPPL_INT mn =mat.m*mat.n;
61  CPPL_INT inc =1;
62  double val =mat.array[idamax_(&mn, mat.array, &inc) -1];
63 
64  mat.destroy();
65  return val;
66 }
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
const _dgematrix& operator+ ( const _dgematrix mat)
friend

+_dgematrix operator

Definition at line 3 of file _dgematrix-unary.hpp.

4 {CPPL_VERBOSE_REPORT;
5  return mat;
6 }
_dgematrix operator- ( const _dgematrix mat)
friend

-_dgematrix operator

Definition at line 10 of file _dgematrix-unary.hpp.

11 {CPPL_VERBOSE_REPORT;
12  for(CPPL_INT i=0; i<mat.m*mat.n; i++){ mat.array[i]=-mat.array[i]; }
13 
14  return mat;
15 }
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
_dgematrix operator+ ( const _dgematrix matA,
const dgematrix matB 
)
friend

_dgematrix+dgematrix operator

Definition at line 3 of file _dgematrix-dgematrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(matA.n!=matB.n || matA.m!=matB.m){
7  ERROR_REPORT;
8  std::cerr << "These two matrises can not make a summation." << std::endl
9  << "Your input was (" << matA.m << "x" << matA.n << ") + (" << matB.m << "x" << matB.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  const CPPL_INT mn =matA.m*matA.n;
15  for(CPPL_INT i=0; i<mn; i++){
16  matA.array[i]+=matB.array[i];
17  }
18 
19  return matA;
20 }
CPPL_INT m
matrix row size
Definition: dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: dgematrix.hpp:10
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
_dgematrix operator+ ( const _dgematrix matA,
const _dgematrix matB 
)
friend

_dgematrix+_dgematrix operator

Definition at line 3 of file _dgematrix-_dgematrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(matA.n!=matB.n || matA.m!=matB.m){
7  ERROR_REPORT;
8  std::cerr << "These two matrises can not make a summation." << std::endl
9  << "Your input was (" << matA.m << "x" << matA.n << ") + (" << matB.m << "x" << matB.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  const CPPL_INT mn =matA.m*matA.n;
15  for(CPPL_INT i=0; i<mn; i++){
16  matA.array[i]+=matB.array[i];
17  }
18 
19  matB.destroy();
20  return matA;
21 }
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
_dgematrix operator+ ( const _dgematrix matA,
const dsymatrix matB 
)
friend

_dgematrix+dsymatrix operator

Definition at line 3 of file _dgematrix-dsymatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(matA.n!=matB.n || matA.m!=matB.n){
7  ERROR_REPORT;
8  std::cerr << "These two matrises can not make a summation." << std::endl
9  << "Your input was (" << matA.m << "x" << matA.n << ") + (" << matB.n << "x" << matB.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  for(CPPL_INT i=0; i<matB.n; i++){
15  for(CPPL_INT j=0; j<matB.n; j++){
16  matA(i,j)+=matB(i,j);
17  }
18  }
19 
20  return matA;
21 }
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: dsymatrix.hpp:10
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
_dgematrix operator+ ( const _dgematrix matA,
const _dsymatrix matB 
)
friend

_dgematrix+_dsymatrix operator

Definition at line 3 of file _dgematrix-_dsymatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(matA.n!=matB.n || matA.m!=matB.n){
7  ERROR_REPORT;
8  std::cerr << "These two matrises can not make a summation." << std::endl
9  << "Your input was (" << matA.m << "x" << matA.n << ") + (" << matB.n << "x" << matB.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  for(CPPL_INT i=0; i<matB.n; i++) {
15  for(CPPL_INT j=0; j<matB.n; j++) {
16  matA(i,j)+=matB(i,j);
17  }
18  }
19 
20  matB.destroy();
21  return matA;
22 }
void destroy() const
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
CPPL_INT n
matrix column size
Definition: _dsymatrix.hpp:11
_dgematrix operator+ ( const _dgematrix matA,
const dgbmatrix matB 
)
friend

_dgematrix+dgbmatrix operator

Definition at line 3 of file _dgematrix-dgbmatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(matA.n!=matB.n || matA.m!=matB.m){
7  ERROR_REPORT;
8  std::cerr << "These two matrises can not make a summation." << std::endl
9  << "Your input was (" << matA.m << "x" << matA.n << ") + (" << matB.m << "x" << matB.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  for(CPPL_INT i=0; i<matB.m; i++){
15  const CPPL_INT jmax =std::min(matB.n,i+matB.ku+1);
16  for(CPPL_INT j=std::max(CPPL_INT(0),i-matB.kl); j<jmax; j++){
17  matA(i,j) += matB(i,j);
18  }
19  }
20 
21  return matA;
22 }
CPPL_INT m
matrix row size
Definition: dgbmatrix.hpp:9
CPPL_INT kl
lower band width
Definition: dgbmatrix.hpp:11
CPPL_INT ku
upper band width
Definition: dgbmatrix.hpp:12
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
CPPL_INT n
matrix column size
Definition: dgbmatrix.hpp:10
_dgematrix operator+ ( const _dgematrix matA,
const _dgbmatrix matB 
)
friend

_dgematrix+_dgbmatrix operator

Definition at line 3 of file _dgematrix-_dgbmatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(matA.n!=matB.n || matA.m!=matB.m){
7  ERROR_REPORT;
8  std::cerr << "These two matrises can not make a summation." << std::endl
9  << "Your input was (" << matA.m << "x" << matA.n << ") + (" << matB.m << "x" << matB.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  for(CPPL_INT i=0; i<matB.m; i++){
15  const CPPL_INT jmax =std::min(matB.n,i+matB.ku+1);
16  for(CPPL_INT j=std::max(CPPL_INT(0),i-matB.kl); j<jmax; j++){
17  matA(i,j) += matB(i,j);
18  }
19  }
20 
21  matB.destroy();
22  return matA;
23 }
CPPL_INT ku
upper band width
Definition: _dgbmatrix.hpp:12
void destroy() const
CPPL_INT kl
lower band width
Definition: _dgbmatrix.hpp:11
friend _dgematrix i(const _dgematrix &)
CPPL_INT n
matrix column size
Definition: _dgbmatrix.hpp:10
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
CPPL_INT m
matrix row size
Definition: _dgbmatrix.hpp:9
_dgematrix operator+ ( const _dgematrix matA,
const dgsmatrix matB 
)
friend

_dgematrix+dgsmatrix operator

Definition at line 3 of file _dgematrix-dgsmatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(matA.m!=matB.m || matA.n!=matB.n){
7  ERROR_REPORT;
8  std::cerr << "These two matrises can not make a summation." << std::endl
9  << "Your input was (" << matA.m << "x" << matA.n << ") + (" << matB.m << "x" << matB.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13  const std::vector<dcomponent>::const_iterator matB_data_end =matB.data.end();
14  for(std::vector<dcomponent>::const_iterator it=matB.data.begin(); it!=matB_data_end; it++){
15  matA(it->i,it->j) += it->v;
16  }
17 
18  return matA;
19 }
std::vector< dcomponent > data
matrix data
Definition: dgsmatrix.hpp:11
CPPL_INT n
matrix column size
Definition: dgsmatrix.hpp:10
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
CPPL_INT m
matrix row size
Definition: dgsmatrix.hpp:9
_dgematrix operator+ ( const _dgematrix matA,
const _dgsmatrix matB 
)
friend

_dgematrix+_dgsmatrix operator

Definition at line 3 of file _dgematrix-_dgsmatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(matA.m!=matB.m || matA.n!=matB.n){
7  ERROR_REPORT;
8  std::cerr << "These two matrises can not make a summation." << std::endl
9  << "Your input was (" << matA.m << "x" << matA.n << ") + (" << matB.m << "x" << matB.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  const std::vector<dcomponent>::const_iterator matB_data_end =matB.data.end();
15  for(std::vector<dcomponent>::const_iterator it=matB.data.begin(); it!=matB_data_end; it++){
16  matA(it->i,it->j) += it->v;
17  }
18 
19  matB.destroy();
20  return matA;
21 }
CPPL_INT n
matrix column size
Definition: _dgsmatrix.hpp:10
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT m
matrix row size
Definition: _dgsmatrix.hpp:9
void destroy() const
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
std::vector< dcomponent > data
matrix data
Definition: _dgsmatrix.hpp:11
_dgematrix operator+ ( const _dgematrix ,
const dssmatrix  
)
friend
_dgematrix operator+ ( const _dgematrix ,
const _dssmatrix  
)
friend
_dgematrix operator- ( const _dgematrix matA,
const dgematrix matB 
)
friend

_dgematrix-dgematrix operator

Definition at line 24 of file _dgematrix-dgematrix.hpp.

25 {CPPL_VERBOSE_REPORT;
26 #ifdef CPPL_DEBUG
27  if(matA.n!=matB.n || matA.m!=matB.m){
28  ERROR_REPORT;
29  std::cerr << "These two matrises can not make a subtraction." << std::endl
30  << "Your input was (" << matA.m << "x" << matA.n << ") - (" << matB.m << "x" << matB.n << ")." << std::endl;
31  exit(1);
32  }
33 #endif//CPPL_DEBUG
34 
35  const CPPL_INT mn =matA.m*matA.n;
36  for(CPPL_INT i=0; i<mn; i++){
37  matA.array[i]-=matB.array[i];
38  }
39 
40  return matA;
41 }
CPPL_INT m
matrix row size
Definition: dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: dgematrix.hpp:10
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
_dgematrix operator- ( const _dgematrix matA,
const _dgematrix matB 
)
friend

_dgematrix-_dgematrix operator

Definition at line 25 of file _dgematrix-_dgematrix.hpp.

26 {CPPL_VERBOSE_REPORT;
27 #ifdef CPPL_DEBUG
28  if(matA.n!=matB.n || matA.m!=matB.m){
29  ERROR_REPORT;
30  std::cerr << "These two matrises can not make a subtraction." << std::endl
31  << "Your input was (" << matA.m << "x" << matA.n << ") - (" << matB.m << "x" << matB.n << ")." << std::endl;
32  exit(1);
33  }
34 #endif//CPPL_DEBUG
35 
36  const CPPL_INT mn =matA.m*matA.n;
37  for(CPPL_INT i=0; i<mn; i++){
38  matA.array[i]-=matB.array[i];
39  }
40 
41  matB.destroy();
42  return matA;
43 }
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
_dgematrix operator- ( const _dgematrix matA,
const dsymatrix matB 
)
friend

_dgematrix-dsymatrix operator

Definition at line 25 of file _dgematrix-dsymatrix.hpp.

26 {CPPL_VERBOSE_REPORT;
27 #ifdef CPPL_DEBUG
28  if(matA.n!=matB.n || matA.m!=matB.n){
29  ERROR_REPORT;
30  std::cerr << "These two matrises can not make a summation." << std::endl
31  << "Your input was (" << matA.m << "x" << matA.n << ") + (" << matB.n << "x" << matB.n << ")." << std::endl;
32  exit(1);
33  }
34 #endif//CPPL_DEBUG
35 
36  for(CPPL_INT i=0; i<matB.n; i++){
37  for(CPPL_INT j=0; j<matB.n; j++){
38  matA(i,j)-=matB(i,j);
39  }
40  }
41 
42  return matA;
43 }
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: dsymatrix.hpp:10
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
_dgematrix operator- ( const _dgematrix matA,
const _dsymatrix matB 
)
friend

_dgematrix-_dsymatrix operator

Definition at line 26 of file _dgematrix-_dsymatrix.hpp.

27 {CPPL_VERBOSE_REPORT;
28 #ifdef CPPL_DEBUG
29  if(matA.n!=matB.n || matA.m!=matB.n){
30  ERROR_REPORT;
31  std::cerr << "These two matrises can not make a summation." << std::endl
32  << "Your input was (" << matA.m << "x" << matA.n << ") + (" << matB.n << "x" << matB.n << ")." << std::endl;
33  exit(1);
34  }
35 #endif//CPPL_DEBUG
36 
37  for(CPPL_INT i=0; i<matB.n; i++) {
38  for(CPPL_INT j=0; j<matB.n; j++) {
39  matA(i,j)-=matB(i,j);
40  }
41  }
42 
43  matB.destroy();
44  return matA;
45 }
void destroy() const
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
CPPL_INT n
matrix column size
Definition: _dsymatrix.hpp:11
_dgematrix operator- ( const _dgematrix matA,
const dgbmatrix matB 
)
friend

_dgematrix-dgbmatrix operator

Definition at line 26 of file _dgematrix-dgbmatrix.hpp.

27 {CPPL_VERBOSE_REPORT;
28 #ifdef CPPL_DEBUG
29  if(matA.n!=matB.n || matA.m!=matB.m){
30  ERROR_REPORT;
31  std::cerr << "These two matrises can not make a summation." << std::endl
32  << "Your input was (" << matA.m << "x" << matA.n << ") + (" << matB.m << "x" << matB.n << ")." << std::endl;
33  exit(1);
34  }
35 #endif//CPPL_DEBUG
36 
37  for(CPPL_INT i=0; i<matB.m; i++){
38  const CPPL_INT jmax =std::min(matB.n,i+matB.ku+1);
39  for(CPPL_INT j=std::max(CPPL_INT(0),i-matB.kl); j<jmax; j++){
40  matA(i,j) -= matB(i,j);
41  }
42  }
43 
44  return matA;
45 }
CPPL_INT m
matrix row size
Definition: dgbmatrix.hpp:9
CPPL_INT kl
lower band width
Definition: dgbmatrix.hpp:11
CPPL_INT ku
upper band width
Definition: dgbmatrix.hpp:12
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
CPPL_INT n
matrix column size
Definition: dgbmatrix.hpp:10
_dgematrix operator- ( const _dgematrix matA,
const _dgbmatrix matB 
)
friend

_dgematrix-_dgbmatrix operator

Definition at line 27 of file _dgematrix-_dgbmatrix.hpp.

28 {CPPL_VERBOSE_REPORT;
29 #ifdef CPPL_DEBUG
30  if(matA.n!=matB.n || matA.m!=matB.m){
31  ERROR_REPORT;
32  std::cerr << "These two matrises can not make a summation." << std::endl
33  << "Your input was (" << matA.m << "x" << matA.n << ") + (" << matB.m << "x" << matB.n << ")." << std::endl;
34  exit(1);
35  }
36 #endif//CPPL_DEBUG
37 
38  for(CPPL_INT i=0; i<matB.m; i++){
39  const CPPL_INT jmax =std::min(matB.n,i+matB.ku+1);
40  for(CPPL_INT j=std::max(CPPL_INT(0),i-matB.kl); j<jmax; j++){
41  matA(i,j) -= matB(i,j);
42  }
43  }
44 
45  matB.destroy();
46  return matA;
47 }
CPPL_INT ku
upper band width
Definition: _dgbmatrix.hpp:12
void destroy() const
CPPL_INT kl
lower band width
Definition: _dgbmatrix.hpp:11
friend _dgematrix i(const _dgematrix &)
CPPL_INT n
matrix column size
Definition: _dgbmatrix.hpp:10
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
CPPL_INT m
matrix row size
Definition: _dgbmatrix.hpp:9
_dgematrix operator- ( const _dgematrix matA,
const dgsmatrix matB 
)
friend

_dgematrix-dgsmatrix operator

Definition at line 23 of file _dgematrix-dgsmatrix.hpp.

24 {CPPL_VERBOSE_REPORT;
25 #ifdef CPPL_DEBUG
26  if(matA.m!=matB.m || matA.n!=matB.n){
27  ERROR_REPORT;
28  std::cerr << "These two matrises can not make a subtraction." << std::endl
29  << "Your input was (" << matA.m << "x" << matA.n << ") - (" << matB.m << "x" << matB.n << ")." << std::endl;
30  exit(1);
31  }
32 #endif//CPPL_DEBUG
33 
34  //// change sign ////
35  for(CPPL_INT i=0; i<matA.m*matA.n; i++){
36  matA.array[i]=-matA.array[i];
37  }
38 
39  //// add ////
40  const std::vector<dcomponent>::const_iterator matB_data_end =matB.data.end();
41  for(std::vector<dcomponent>::const_iterator it=matB.data.begin(); it!=matB_data_end; it++){
42  matA(it->i,it->j) += it->v;
43  }
44 
45  return matA;
46 }
std::vector< dcomponent > data
matrix data
Definition: dgsmatrix.hpp:11
CPPL_INT n
matrix column size
Definition: dgsmatrix.hpp:10
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
CPPL_INT m
matrix row size
Definition: dgsmatrix.hpp:9
_dgematrix operator- ( const _dgematrix matA,
const _dgsmatrix matB 
)
friend

_dgematrix-_dgsmatrix operator

Definition at line 25 of file _dgematrix-_dgsmatrix.hpp.

26 {CPPL_VERBOSE_REPORT;
27 #ifdef CPPL_DEBUG
28  if(matA.m!=matB.m || matA.n!=matB.n){
29  ERROR_REPORT;
30  std::cerr << "These two matrises can not make a subtraction." << std::endl
31  << "Your input was (" << matA.m << "x" << matA.n << ") - (" << matB.m << "x" << matB.n << ")." << std::endl;
32  exit(1);
33  }
34 #endif//CPPL_DEBUG
35 
36  //// change sign ////
37  for(CPPL_INT i=0; i<matA.m*matA.n; i++){
38  matA.array[i]=-matA.array[i];
39  }
40 
41  //// add ////
42  const std::vector<dcomponent>::const_iterator matB_data_end =matB.data.end();
43  for(std::vector<dcomponent>::const_iterator it=matB.data.begin(); it!=matB_data_end; it++){
44  matA(it->i,it->j) += it->v;
45  }
46 
47  matB.destroy();
48  return matA;
49 }
CPPL_INT n
matrix column size
Definition: _dgsmatrix.hpp:10
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT m
matrix row size
Definition: _dgsmatrix.hpp:9
void destroy() const
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
std::vector< dcomponent > data
matrix data
Definition: _dgsmatrix.hpp:11
_dgematrix operator- ( const _dgematrix ,
const dssmatrix  
)
friend
_dgematrix operator- ( const _dgematrix ,
const _dssmatrix  
)
friend
_dcovector operator* ( const _dgematrix mat,
const dcovector vec 
)
friend

_dgematrix*dcovector operator

Definition at line 3 of file _dgematrix-dcovector.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(mat.n!=vec.l){
7  ERROR_REPORT;
8  std::cerr << "These matrix and vector can not make a product." << std::endl
9  << "Your input was (" << mat.m << "x" << mat.n << ") * (" << vec.l << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  dcovector newvec(mat.m);
15  char trans ='n';
16  double alpha =1.;
17  CPPL_INT inc =1;
18  double beta =0.;
19 
20  dgemv_( &trans, &mat.m, &mat.n, &alpha, mat.array, &mat.m, vec.array, &inc, &beta, newvec.array, &inc );
21 
22  mat.destroy();
23  return _(newvec);
24 }
CPPL_INT l
vector size
Definition: dcovector.hpp:9
double * array
1D array to store vector data
Definition: dcovector.hpp:11
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
Real Double-precision Column Vector Class.
Definition: dcovector.hpp:3
void destroy() const
_dcovector _(dcovector &vec)
_dcovector operator* ( const _dgematrix mat,
const _dcovector vec 
)
friend

_dgematrix*_dcovector operator

Definition at line 3 of file _dgematrix-_dcovector.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(mat.n!=vec.l){
7  ERROR_REPORT;
8  std::cerr << "These matrix and vector can not make a product." << std::endl
9  << "Your input was (" << mat.m << "x" << mat.n << ") * (" << vec.l << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  dcovector newvec(mat.m);
15  char trans ='n';
16  double alpha =1.;
17  CPPL_INT inc =1;
18  double beta =0.;
19 
20  dgemv_( &trans, &mat.m, &mat.n, &alpha, mat.array, &mat.m, vec.array, &inc, &beta, newvec.array, &inc );
21 
22  mat.destroy();
23  vec.destroy();
24  return _(newvec);
25 }
CPPL_INT l
vector size
Definition: _dcovector.hpp:9
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
Real Double-precision Column Vector Class.
Definition: dcovector.hpp:3
void destroy() const
double * array
1D array to store vector data
Definition: _dcovector.hpp:11
_dcovector _(dcovector &vec)
_dgematrix operator* ( const _dgematrix matA,
const dgematrix matB 
)
friend

_dgematrix*dgematrix operator

Definition at line 45 of file _dgematrix-dgematrix.hpp.

46 {CPPL_VERBOSE_REPORT;
47 #ifdef CPPL_DEBUG
48  if(matA.n!=matB.m){
49  ERROR_REPORT;
50  std::cerr << "These two matrises can not make a product." << std::endl
51  << "Your input was (" << matA.m << "x" << matA.n << ") * (" << matB.m << "x" << matB.n << ")." << std::endl;
52  exit(1);
53  }
54 #endif//CPPL_DEBUG
55 
56  dgematrix newmat( matA.m, matB.n );
57  char transa ='n';
58  char transb ='n';
59  double alpha =1.;
60  double beta =0.;
61 
62  dgemm_( &transa, &transb, &matA.m, &matB.n, &matA.n, &alpha, matA.array, &matA.m, matB.array, &matB.m, &beta, newmat.array, &matA.m );
63 
64  matA.destroy();
65  return _(newmat);
66 }
CPPL_INT m
matrix row size
Definition: dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: dgematrix.hpp:10
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
_dcovector _(dcovector &vec)
_dgematrix operator* ( const _dgematrix matA,
const _dgematrix matB 
)
friend

_dgematrix*_dgematrix operator

Definition at line 47 of file _dgematrix-_dgematrix.hpp.

48 {CPPL_VERBOSE_REPORT;
49 #ifdef CPPL_DEBUG
50  if(matA.n!=matB.m){
51  ERROR_REPORT;
52  std::cerr << "These two matrises can not make a product." << std::endl
53  << "Your input was (" << matA.m << "x" << matA.n << ") * (" << matB.m << "x" << matB.n << ")." << std::endl;
54  exit(1);
55  }
56 #endif//CPPL_DEBUG
57 
58  dgematrix newmat( matA.m, matB.n );
59  char transa ='n';
60  char transb ='n';
61  double alpha =1.;
62  double beta =0.;
63 
64  dgemm_( &transa, &transb, &matA.m, &matB.n, &matA.n, &alpha, matA.array, &matA.m, matB.array, &matB.m, &beta, newmat.array, &matA.m );
65 
66  matA.destroy();
67  matB.destroy();
68  return _(newmat);
69 }
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
_dcovector _(dcovector &vec)
_dgematrix operator* ( const _dgematrix matA,
const dsymatrix matB 
)
friend

_dgematrix*dsymatrix operator

Definition at line 47 of file _dgematrix-dsymatrix.hpp.

48 {CPPL_VERBOSE_REPORT;
49 #ifdef CPPL_DEBUG
50  if(matA.n!=matB.n){
51  ERROR_REPORT;
52  std::cerr << "These two matrises can not make a product." << std::endl
53  << "Your input was (" << matA.m << "x" << matA.n << ") * (" << matB.n << "x" << matB.n << ")." << std::endl;
54  exit(1);
55  }
56 #endif//CPPL_DEBUG
57 
58  dgematrix newmat( matA.m, matB.n );
59  char side ='R';
60  char uplo ='l';
61  double alpha =1.;
62  double beta =0.;
63 
64  dsymm_( &side, &uplo, &newmat.m, &newmat.n, &alpha, matB.array, &matB.n, matA.array, &matA.m, &beta, newmat.array, &newmat.m );
65 
66  matA.destroy();
67  return _(newmat);
68 }
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: dsymatrix.hpp:10
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
double * array
1D array to store matrix data
Definition: dsymatrix.hpp:11
_dcovector _(dcovector &vec)
_dgematrix operator* ( const _dgematrix matA,
const _dsymatrix matB 
)
friend

_dgematrix*_dsymatrix operator

Definition at line 49 of file _dgematrix-_dsymatrix.hpp.

50 {CPPL_VERBOSE_REPORT;
51 #ifdef CPPL_DEBUG
52  if(matA.n!=matB.n){
53  ERROR_REPORT;
54  std::cerr << "These two matrises can not make a product." << std::endl
55  << "Your input was (" << matA.m << "x" << matA.n << ") * (" << matB.n << "x" << matB.n << ")." << std::endl;
56  exit(1);
57  }
58 #endif//CPPL_DEBUG
59 
60  dgematrix newmat( matA.m, matB.n );
61  char side ='R';
62  char uplo ='l';
63  double alpha =1.;
64  double beta =0.;
65 
66  dsymm_( &side, &uplo, &newmat.m, &newmat.n, &alpha, matB.array, &matB.n, matA.array, &matA.m, &beta, newmat.array, &newmat.m );
67 
68  matA.destroy();
69  matB.destroy();
70  return _(newmat);
71 }
void destroy() const
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
double * array
1D array to store matrix data
Definition: _dsymatrix.hpp:12
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
CPPL_INT n
matrix column size
Definition: _dsymatrix.hpp:11
_dcovector _(dcovector &vec)
_dgematrix operator* ( const _dgematrix matA,
const dgbmatrix matB 
)
friend

_dgematrix*dgbmatrix operator

Definition at line 49 of file _dgematrix-dgbmatrix.hpp.

50 {CPPL_VERBOSE_REPORT;
51 #ifdef CPPL_DEBUG
52  if(matA.n!=matB.m){
53  ERROR_REPORT;
54  std::cerr << "These two matrises can not make a product." << std::endl
55  << "Your input was (" << matA.m << "x" << matA.n << ") * (" << matB.m << "x" << matB.n << ")." << std::endl;
56  exit(1);
57  }
58 #endif//CPPL_DEBUG
59 
60  dgematrix newmat( matA.m, matB.n );
61  newmat.zero();
62 
63  for(CPPL_INT i=0; i<newmat.m; i++){
64  for(CPPL_INT j=0; j<newmat.n; j++){
65  const CPPL_INT kmax =std::min(matB.m,j+matB.kl+1);
66  for(CPPL_INT k=std::max(CPPL_INT(0),j-matB.ku); k<kmax; k++){
67  newmat(i,j) += matA(i,k)*matB(k,j);
68  }
69  }
70  }
71 
72  matA.destroy();
73  return _(newmat);
74 }
CPPL_INT m
matrix row size
Definition: dgbmatrix.hpp:9
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
CPPL_INT kl
lower band width
Definition: dgbmatrix.hpp:11
CPPL_INT ku
upper band width
Definition: dgbmatrix.hpp:12
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
CPPL_INT n
matrix column size
Definition: dgbmatrix.hpp:10
_dcovector _(dcovector &vec)
_dgematrix operator* ( const _dgematrix matA,
const _dgbmatrix matB 
)
friend

_dgematrix*_dgbmatrix operator

Definition at line 51 of file _dgematrix-_dgbmatrix.hpp.

52 {CPPL_VERBOSE_REPORT;
53 #ifdef CPPL_DEBUG
54  if(matA.n!=matB.m){
55  ERROR_REPORT;
56  std::cerr << "These two matrises can not make a product." << std::endl
57  << "Your input was (" << matA.m << "x" << matA.n << ") * (" << matB.m << "x" << matB.n << ")." << std::endl;
58  exit(1);
59  }
60 #endif//CPPL_DEBUG
61 
62  dgematrix newmat( matA.m, matB.n );
63  newmat.zero();
64 
65  for(CPPL_INT i=0; i<newmat.m; i++){
66  for(CPPL_INT j=0; j<newmat.n; j++){
67  const CPPL_INT kmax =std::min(matB.m,j+matB.kl+1);
68  for(CPPL_INT k=std::max(CPPL_INT(0),j-matB.ku); k<kmax; k++){
69  newmat(i,j) += matA(i,k)*matB(k,j);
70  }
71  }
72  }
73 
74  matA.destroy();
75  matB.destroy();
76  return _(newmat);
77 }
CPPL_INT ku
upper band width
Definition: _dgbmatrix.hpp:12
void destroy() const
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
CPPL_INT kl
lower band width
Definition: _dgbmatrix.hpp:11
friend _dgematrix i(const _dgematrix &)
CPPL_INT n
matrix column size
Definition: _dgbmatrix.hpp:10
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
_dcovector _(dcovector &vec)
CPPL_INT m
matrix row size
Definition: _dgbmatrix.hpp:9
_dgematrix operator* ( const _dgematrix matA,
const dgsmatrix matB 
)
friend

_dgematrix*dgsmatrix operator

Definition at line 50 of file _dgematrix-dgsmatrix.hpp.

51 {CPPL_VERBOSE_REPORT;
52 #ifdef CPPL_DEBUG
53  if(matA.n!=matB.m){
54  ERROR_REPORT;
55  std::cerr << "These two matrises can not make a product." << std::endl
56  << "Your input was (" << matA.m << "x" << matA.n << ") * (" << matB.m << "x" << matB.n << ")." << std::endl;
57  exit(1);
58  }
59 #endif//CPPL_DEBUG
60 
61  dgematrix newmat(matA.m, matB.n);
62  newmat.zero();
63 
64  const std::vector<dcomponent>::const_iterator matB_data_end =matB.data.end();
65  for(std::vector<dcomponent>::const_iterator it=matB.data.begin(); it!=matB_data_end; it++){
66  for(CPPL_INT i=0; i<matA.m; i++){
67  newmat(i,it->j) += matA(i,it->i)*it->v;
68  }
69  }
70 
71  matA.destroy();
72  return _(newmat);
73 }
std::vector< dcomponent > data
matrix data
Definition: dgsmatrix.hpp:11
CPPL_INT n
matrix column size
Definition: dgsmatrix.hpp:10
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
_dcovector _(dcovector &vec)
CPPL_INT m
matrix row size
Definition: dgsmatrix.hpp:9
_dgematrix operator* ( const _dgematrix matA,
const _dgsmatrix matB 
)
friend

_dgematrix*_dgsmatrix operator

Definition at line 53 of file _dgematrix-_dgsmatrix.hpp.

54 {CPPL_VERBOSE_REPORT;
55 #ifdef CPPL_DEBUG
56  if(matA.n!=matB.m){
57  ERROR_REPORT;
58  std::cerr << "These two matrises can not make a product." << std::endl
59  << "Your input was (" << matA.m << "x" << matA.n << ") * (" << matB.m << "x" << matB.n << ")." << std::endl;
60  exit(1);
61  }
62 #endif//CPPL_DEBUG
63 
64  dgematrix newmat(matA.m, matB.n);
65  newmat.zero();
66 
67  const std::vector<dcomponent>::const_iterator matB_data_end =matB.data.end();
68  for(std::vector<dcomponent>::const_iterator it=matB.data.begin(); it!=matB_data_end; it++){
69  for(CPPL_INT i=0; i<matA.m; i++){
70  newmat(i,it->j) += matA(i,it->i)*it->v;
71  }
72  }
73 
74  matA.destroy();
75  matB.destroy();
76  return _(newmat);
77 }
CPPL_INT n
matrix column size
Definition: _dgsmatrix.hpp:10
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT m
matrix row size
Definition: _dgsmatrix.hpp:9
void destroy() const
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
std::vector< dcomponent > data
matrix data
Definition: _dgsmatrix.hpp:11
void destroy() const
_dcovector _(dcovector &vec)
_dgematrix operator* ( const _dgematrix matA,
const dssmatrix matB 
)
friend

_dgematrix*dssmatrix operator

Definition at line 3 of file _dgematrix-dssmatrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5 #ifdef CPPL_DEBUG
6  if(matA.n!=matB.m){
7  ERROR_REPORT;
8  std::cerr << "These two matrises can not make a product." << std::endl
9  << "Your input was (" << matA.m << "x" << matA.n << ") * (" << matB.m << "x" << matB.n << ")." << std::endl;
10  exit(1);
11  }
12 #endif//CPPL_DEBUG
13 
14  dgematrix newmat(matA.m, matB.n);
15  newmat.zero();
16 
17  const std::vector<dcomponent>::const_iterator matB_data_end =matB.data.end();
18  for(std::vector<dcomponent>::const_iterator it=matB.data.begin(); it!=matB_data_end; it++){
19  for(CPPL_INT i=0; i<matA.m; i++){
20  newmat(i,it->j) +=matA(i,it->i)*it->v;
21  }
22  if(it->i!=it->j){
23  for(CPPL_INT i=0; i<matA.m; i++){
24  newmat(i,it->i) +=matA(i,it->j)*it->v;
25  }
26  }
27  }
28 
29  matA.destroy();
30  return _(newmat);
31 }
std::vector< dcomponent > data
matrix data
Definition: dssmatrix.hpp:11
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
friend _dgematrix i(const _dgematrix &)
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
void destroy() const
CPPL_INT n
matrix column size
Definition: dssmatrix.hpp:10
CPPL_INT const & m
matrix row size
Definition: dssmatrix.hpp:9
_dcovector _(dcovector &vec)
_dgematrix operator* ( const _dgematrix ,
const _dssmatrix  
)
friend
_dgematrix operator* ( const _dgematrix mat,
const double &  d 
)
friend

_dgematrix*double operator

Definition at line 3 of file _dgematrix-double.hpp.

4 {CPPL_VERBOSE_REPORT;
5  CPPL_INT mn =mat.m*mat.n;
6  CPPL_INT inc =1;
7  dscal_(&mn, &d, mat.array, &inc);
8  return mat;
9 }
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
_dgematrix operator/ ( const _dgematrix mat,
const double &  d 
)
friend

_dgematrix/double operator

Definition at line 13 of file _dgematrix-double.hpp.

14 {CPPL_VERBOSE_REPORT;
15  CPPL_INT mn =mat.m*mat.n;
16  double dinv =1./d;
17  CPPL_INT inc =1;
18  dscal_(&mn, &dinv, mat.array, &inc);
19  return mat;
20 }
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10
_dgematrix operator* ( const double &  d,
const _dgematrix mat 
)
friend

double*_dgematrix operator

Definition at line 3 of file double-_dgematrix.hpp.

4 {CPPL_VERBOSE_REPORT;
5  CPPL_INT size =mat.m*mat.n;
6  CPPL_INT inc =1;
7  dscal_(&size, &d, mat.array, &inc);
8  return mat;
9 }
CPPL_INT m
matrix row size
Definition: _dgematrix.hpp:9
double * array
1D array to store matrix data
Definition: _dgematrix.hpp:11
CPPL_INT n
matrix column size
Definition: _dgematrix.hpp:10

Member Data Documentation

CPPL_INT _dgematrix::m
mutable
CPPL_INT _dgematrix::n
mutable
double* _dgematrix::array
mutable
double** _dgematrix::darray
mutable

array of pointers of column head addresses

Definition at line 12 of file _dgematrix.hpp.

Referenced by _(), _dgematrix(), destroy(), dgematrix::dgematrix(), nullify(), operator()(), dgematrix::shallow_copy(), and ~_dgematrix().


The documentation for this class was generated from the following files: