#include <dgematrix.hpp>
Public Member Functions | |
| dgematrix () | |
| dgematrix (const dgematrix &) | |
| dgematrix (const _dgematrix &) | |
| dgematrix (const long &, const long &) | |
| ~dgematrix () | |
| CPPSL_double | operator() (const long &, const long &) |
| double | operator() (const long &, const long &) const |
| void | set (const long &, const long &, const double &) const |
| void | clear () |
| void | zero () |
| void | identity () |
| void | chsign () |
| void | copy (const dgematrix &) |
| void | shallow_copy (const _dgematrix &) |
| void | resize (const long &, const long &) |
| void | transpose () |
| long | dgesv (dgematrix &) |
| long | dgesv (dcovector &) |
| dgematrix & | operator= (const dgematrix &) |
| dgematrix & | operator+= (const dgematrix &) |
| dgematrix & | operator-= (const dgematrix &) |
| dgematrix & | operator *= (const dgematrix &) |
| dgematrix & | operator= (const _dgematrix &) |
| dgematrix & | operator+= (const _dgematrix &) |
| dgematrix & | operator-= (const _dgematrix &) |
| dgematrix & | operator *= (const _dgematrix &) |
| dgematrix & | operator *= (const double &) |
| dgematrix & | operator/= (const double &) |
Public Attributes | |
| long const & | m |
| global matrix row size (readable) | |
| long const & | n |
| global matrix column size (readable) | |
| long const & | ml |
| local matrix row size (readable) | |
| long const & | nl |
| local matrix column size (readable) | |
| long *const & | desc |
| matrix description (readable) | |
| double *const & | array |
| 1D array to store matrix data (readable) | |
Private Attributes | |
| long | M |
| global matrix row size (NOT accessible) | |
| long | N |
| global matrix column size (NOT accessible) | |
| long | Ml |
| local matrix row size (NOT accessible) | |
| long | Nl |
| local matrix column size (NOT accessible) | |
| long | Desc [9] |
| matrix description (NOT accessible) | |
| double * | Array |
| 1D array to store matrix data (NOT accessible) | |
Friends | |
| class | _dgematrix |
| class | dcovector |
| class | _dcovector |
| class | drovector |
| class | _drovector |
| std::ostream & | operator<< (std::ostream &, const dgematrix &) |
| void | swap (dgematrix &, dgematrix &) |
| _dgematrix | t (const dgematrix &) |
| const dgematrix & | operator+ (const dgematrix &) |
| _dgematrix | operator- (const dgematrix &) |
| _dgematrix | operator+ (const dgematrix &, const dgematrix &) |
| _dgematrix | operator+ (const dgematrix &, const _dgematrix &) |
| _dgematrix | operator+ (const _dgematrix &, const dgematrix &) |
| _dgematrix | operator- (const dgematrix &, const dgematrix &) |
| _dgematrix | operator- (const dgematrix &, const _dgematrix &) |
| _dgematrix | operator- (const _dgematrix &, const dgematrix &) |
| _dgematrix | operator * (const dgematrix &, const dgematrix &) |
| _dgematrix | operator * (const dgematrix &, const _dgematrix &) |
| _dgematrix | operator * (const _dgematrix &, const dgematrix &) |
| _dcovector | operator * (const dgematrix &, const dcovector &) |
| _dcovector | operator * (const dgematrix &, const _dcovector &) |
| _drovector | operator * (const drovector &, const dgematrix &) |
| _drovector | operator * (const _drovector &, const dgematrix &) |
| _dgematrix | operator * (const dgematrix &, const double &) |
| _dgematrix | operator * (const double &, const dgematrix &) |
| _dgematrix | operator/ (const dgematrix &, const double &) |
Definition at line 3 of file dgematrix.hpp.
|
|
dgematrix constructor without arguments Definition at line 3 of file dgematrix-constructor.hpp. References Array, Desc, M, Ml, N, and Nl.
00004 : m(M), n(N), ml(Ml), nl(Nl), desc(Desc), array(Array) 00005 { 00006 //////// initialize //////// 00007 M =N =0; 00008 Ml =Nl =0; 00009 Desc[0]=1; Desc[1]=icontxt; Desc[2]=0; Desc[3]=0; Desc[4]=mb; Desc[5]=nb; 00010 Desc[6]=0; Desc[7]=0; Desc[8]=max(1,Ml); 00011 Array =new double[0]; 00012 00013 #ifdef CPPSL_DEBUG 00014 std::cerr << "# [NOTE] dgematrix::dgematrix() " 00015 << "A new 0x0 matrix at " << Array 00016 << " has been made." << std::endl; 00017 #endif//CPPSL_DEBUG 00018 } |
|
|
dgematrix copy constructor Definition at line 26 of file dgematrix-constructor.hpp. References array, Array, Desc, M, Ml, N, and Nl.
00027 : m(M), n(N), ml(Ml), nl(Nl), desc(Desc), array(Array) 00028 { 00029 //////// initialize //////// 00030 M =mat.M; N =mat.N; 00031 Ml =mat.Ml; Nl =mat.Nl; 00032 for(int i=0; i<9; i++){ Desc[i] =mat.Desc[i]; } 00033 Array =new double[Ml*Nl]; 00034 00035 //////// copy //////// 00036 dcopy_(Ml*Nl, mat.Array, 1, Array, 1); 00037 00038 #ifdef CPPSL_DEBUG 00039 std::cerr << "# [NOTE] dgematrix::dgematrix(const dgematrix&) " 00040 << "A new matrix at " << array << " has been made." << std::endl; 00041 #endif//CPPSL_DEBUG 00042 } |
|
|
dgematrix constructor to cast _dgematrix Definition at line 46 of file dgematrix-constructor.hpp. References Array, Desc, M, Ml, N, and Nl.
00047 : m(M), n(N), ml(Ml), nl(Nl), desc(Desc), array(Array) 00048 { 00049 M =mat.M; N =mat.N; 00050 Ml =mat.Ml; Nl =mat.Nl; 00051 for(int i=0; i<9; i++){ Desc[i] =mat.Desc[i]; } 00052 Array =mat.Array; 00053 00054 #ifdef CPPSL_DEBUG 00055 std::cerr << "# [NOTE] dgematrix::dgematrix(const _dgematrix&) " 00056 << "A new matrix pointing at " << Array << " has been made." 00057 << std::endl; 00058 #endif//CPPSL_DEBUG 00059 } |
|
||||||||||||
|
dgematrix constructor with size specification Definition at line 67 of file dgematrix-constructor.hpp. References array, Array, Desc, M, Ml, N, and Nl.
00068 : m(M), n(N), ml(Ml), nl(Nl), desc(Desc), array(Array) 00069 { 00070 #ifdef CPPSL_DEBUG 00071 if( _m<0 || _n<0 ){ 00072 std::cerr << "[ERROR] dgematrix::dgematrix(const long, const long)" 00073 << std::endl 00074 << "Matrix sizes must be positive integers. " << std::endl 00075 << "Your input was (" << _m << "," << _n << ")." << std::endl; 00076 exit(1); 00077 } 00078 #endif//CPPSL_DEBUG 00079 00080 //////// initialize //////// 00081 M =_m; N =_n; 00082 Ml =numroc_( M, mb, myrow, 0, nprow ); 00083 Nl =numroc_( N, nb, mycol, 0, npcol ); 00084 Desc[0]=1; Desc[1]=icontxt; Desc[2]=M; Desc[3]=N; Desc[4]=mb; Desc[5]=nb; 00085 Desc[6]=0; Desc[7]=0; Desc[8]=max(1,Ml); 00086 Array =new double[Ml*Nl]; 00087 00088 #ifdef CPPSL_DEBUG 00089 std::cerr << "# [NOTE] dgematrix(const long&, const long&) " 00090 << "A new matrix at " << array << " has been made." << std::endl; 00091 #endif//CPPSL_DEBUG 00092 } |
|
|
dgematrix destructor Definition at line 100 of file dgematrix-constructor.hpp.
|
|
||||||||||||
|
operator() for non-const object Definition at line 3 of file dgematrix-io.hpp. References Array, Desc, M, and N. Referenced by identity(), and transpose().
00004 {
00005 #ifdef CPPSL_DEBUG
00006 if( i<0 || j<0 || M<=i || N<=j ){
00007 std::cerr << "[ERROR] dgematrix::operator()(const long&, const long&)"
00008 << std::endl
00009 << "The required component is out of the matrix size."
00010 << std::endl
00011 << "Your input was (" << i << "," << j << ")." << std::endl;
00012 exit(1);
00013 }
00014 #endif//CPPSL_DEBUG
00015
00016 return CPPSL_double( Array, i, j, Desc );
00017 }
|
|
||||||||||||
|
operator() for const object Definition at line 21 of file dgematrix-io.hpp. References Array, Desc, M, and N.
00022 {
00023 #ifdef CPPSL_DEBUG
00024 if( i<0 || j<0 || M<=i || N<=j ){
00025 std::cerr << "[ERROR] dgematrix::operator()(const long&, const long&) const"
00026 << std::endl
00027 << "The required component is out of the matrix size."
00028 << std::endl
00029 << "Your input was (" << i << "," << j << ")." << std::endl;
00030 exit(1);
00031 }
00032 #endif//CPPSL_DEBUG
00033
00034 double alpha;
00035 pdelget_('A', ' ', alpha, Array, i+1, j+1, Desc);
00036 return alpha;
00037 }
|
|
||||||||||||||||
|
set a variable to the matrix component Definition at line 45 of file dgematrix-io.hpp. References Array, Desc, M, and N.
00046 {
00047 #ifdef CPPSL_DEBUG
00048 if( i<0 || j<0 || M<=i || N<=j ){
00049 std::cerr
00050 << "[ERROR] dgematrix::set(const long&, const long&, const double&)"
00051 << std::endl
00052 << "The required component is out of the matrix size." << std::endl
00053 << "Your input was (" << i << "," << j << ")." << std::endl;
00054 exit(1);
00055 }
00056 #endif//CPPSL_DEBUG
00057
00058 pdelset_(Array, i+1, j+1, Desc, v);
00059 }
|
|
|
clear all the matrix data and set the sizes 0 Definition at line 3 of file dgematrix-misc.hpp. References Array, array, Desc, M, Ml, N, and Nl.
00004 {
00005 #ifdef CPPSL_DEBUG
00006 std::cerr << "# [NOTE] dgematrix::clear() "
00007 << "An array at " << array << " is going to be cleared."
00008 << std::endl;
00009 #endif//CPPSL_DEBUG
00010
00011 M =N =0;
00012 Ml =Nl =0;
00013 for(int i=0; i<9; i++){ Desc[i]=0; }
00014 delete [] Array;
00015 Array =new double[0];
00016 }
|
|
|
change the matrix into a zero matrix Definition at line 20 of file dgematrix-misc.hpp.
|
|
|
change the matrix into an identity matrix Definition at line 27 of file dgematrix-misc.hpp. References Array, M, Ml, N, Nl, and operator()().
00028 {
00029 #ifdef CPPSL_DEBUG
00030 if(M!=N){
00031 std::cerr << "[ERROR] dgematrix::identity()" << std::endl
00032 << "Only square matrix can be a identity matrix." << std::endl
00033 << "The matrix size was " << M << "x" << N << "." << std::endl;
00034 exit(1);
00035 }
00036 #endif//CPPSL_DEBUG
00037
00038 for(long i=0; i<Ml*Nl; i++){ Array[i] =0.0; }
00039 for(long i=0; i<M; i++){ operator()(i,i) =1.0; }
00040 }
|
|
|
change sign(+/-) of the matrix Definition at line 44 of file dgematrix-misc.hpp.
|
|
|
make a deep copy of the matrix Definition at line 51 of file dgematrix-misc.hpp. References Array, Desc, M, Ml, N, and Nl. Referenced by operator=().
00052 {
00053 #ifdef CPPSL_DEBUG
00054 std::cerr << "# [NOTE] dgematrix::copy(const dgematrix&) "
00055 << "A dgematrix at " << Array << " is going to be deleted.";
00056 #endif//CPPSL_DEBUG
00057
00058 delete [] Array;
00059 M =mat.M; N =mat.N;
00060 Ml =mat.Ml; Nl =mat.Nl;
00061 for(int i=0; i<9; i++){ Desc[i] =mat.Desc[i]; }
00062 Array =new double[Ml*Nl];
00063 dcopy_(Ml*Nl, mat.Array, 1, Array, 1);
00064
00065 #ifdef CPPSL_DEBUG
00066 std::cerr << " Then, a COPY of a dgematrix has been cleated at "
00067 << Array << "." << std::endl;
00068 #endif//CPPSL_DEBUG
00069 }
|
|
|
make a shallow copy of the matrix Definition at line 74 of file dgematrix-misc.hpp. References _dgematrix::Array, Array, _dgematrix::Desc, Desc, _dgematrix::M, M, _dgematrix::Ml, Ml, _dgematrix::N, N, _dgematrix::Nl, and Nl. Referenced by operator *=(), operator=(), and transpose().
00075 {
00076 #ifdef CPPSL_DEBUG
00077 std::cerr << "# [NOTE] dgematrix:shallow_copy(const _dgematrix&) "
00078 << "A dgematrix at " << Array << " is going to be deleted, "
00079 << "and point to " << mat.Array << " instead." << std::endl;
00080 #endif//CPPSL_DEBUG
00081
00082 delete [] Array;
00083 M =mat.M; N =mat.N;
00084 Ml =mat.Ml; Nl =mat.Nl;
00085 for(int i=0; i<9; i++){ Desc[i] =mat.Desc[i]; }
00086 Array =mat.Array;
00087 }
|
|
||||||||||||
|
resize the matrix Definition at line 91 of file dgematrix-misc.hpp. References Array, desc, M, Ml, N, and Nl.
00092 {
00093 #ifdef CPPSL_DEBUG
00094 if( _m<0 || _n<0 ){
00095 std::cerr << "[ERROR] dgematrix::resize(const long&, const long&)"
00096 << std::endl
00097 << "Matrix sizes must be positive integers." << std::endl
00098 << "Your input was (" << _m << "," << _n << ")." << std::endl;
00099 exit(1);
00100 }
00101 #endif//CPPSL_DEBUG
00102
00103 delete [] Array;
00104 M =_m; N =_n;
00105 Ml =numroc_( M, mb, myrow, 0, nprow );
00106 Nl =numroc_( N, nb, mycol, 0, npcol );
00107 desc[0]=1; desc[1]=icontxt; desc[2]=M; desc[3]=N; desc[4]=mb; desc[5]=nb;
00108 desc[6]=0; desc[7]=0; desc[8]=max(1,Ml);
00109 Array =new double[Ml*Nl];
00110 }
|
|
|
transpose itself Definition at line 3 of file dgematrix-calc.hpp. References _dgematrix::M, M, _dgematrix::N, N, operator()(), and shallow_copy().
00004 {
00005 _dgematrix newmat(N,M);
00006
00007 for(long i=0; i<newmat.M; i++){ for(long j=0; j<newmat.N; j++){
00008 newmat(i,j)=operator()(j,i);
00009 }}
00010
00011 shallow_copy(newmat);
00012 }
|
|
|
solve A*X=Y using dgesv Definition at line 5 of file dgematrix-lapack.hpp. References Array, Desc, M, Ml, and N.
00006 {
00007 #ifdef CPPSL_DEBUG
00008 if(M!=N || M!=mat.M){
00009 std::cerr << "[ERROR] dgematrix::dgesv(dgematrix&) " << std::endl
00010 << "These two matrices cannot be solved." << std::endl
00011 << "Your input was (" << M << "x" << N << ") and ("
00012 << mat.M << "x" << mat.N << ")." << std::endl;
00013 exit(1);
00014 }
00015 #endif//CPPSL_DEBUG
00016 long NRHS(mat.N), IA(1), JA(1), *IPIV(new long[Ml+mb]), IB(1), JB(1), INFO(1);
00017 pdgesv_( N, NRHS, Array, IA, JA, Desc, IPIV,
00018 mat.Array, IB, JB, mat.Desc, INFO );
00019 delete [] IPIV;
00020
00021 if(INFO!=0){
00022 std::cerr << "[WARNING] dgematrix::dgesv(dgematrix&) "
00023 << "Serious trouble happend. INFO = " << INFO << "."
00024 << std::endl;
00025 }
00026 return INFO;
00027 }
|
|
|
solve A*x=y using dgesv Definition at line 33 of file dgematrix-lapack.hpp. References dcovector::Array, Array, dcovector::Desc, Desc, dcovector::l, m, Ml, N, and n.
00034 {
00035 #ifdef CPPSL_DEBUG
00036 if(m!=n || m!=vec.l){
00037 std::cerr << "[ERROR] dgematrix::dgesv(dcovector&) " << std::endl
00038 << "These matrix and vector cannot be solved." << std::endl
00039 << "Your input was (" << m << "x" << n << ") and ("
00040 << vec.l << ")." << std::endl;
00041 exit(1);
00042 }
00043 #endif//CPPSL_DEBUG
00044 long NRHS(1), IA(1), JA(1), *IPIV(new long[Ml+mb]), IB(1), JB(1), INFO(1);
00045 pdgesv_(N, NRHS, Array, IA, JA, Desc, IPIV,
00046 vec.Array, IB, JB, vec.Desc, INFO);
00047 delete [] IPIV;
00048
00049 if(INFO!=0){
00050 std::cerr << "[WARNING] dgematrix::dgesv(dcovector&) "
00051 << "Serious trouble happend. INFO = " << INFO << "."
00052 << std::endl;
00053 }
00054 return INFO;
00055 }
|
|
|
dgematrix=dgematrix operator Definition at line 3 of file dgematrix-dgematrix.hpp.
|
|
|
dgematrix+=dgematrix operator Definition at line 22 of file dgematrix-dgematrix.hpp. References Array, M, Ml, N, and Nl.
00023 {
00024 #ifdef CPPSL_DEBUG
00025 if(N!=mat.N || M!=mat.M){
00026 std::cerr << "[ERROR] dgematrix::operator+=(const dgematrix&)" << std::endl
00027 << "These two matrises can not make a summation." << std::endl
00028 << "Your input was (" << M << "x" << N << ") += ("
00029 << mat.M << "x" << mat.N << ")." << std::endl;
00030 exit(1);
00031 }
00032 #endif//CPPSL_DEBUG
00033
00034 for(long i=0; i<Ml*Nl; i++){ Array[i]+=mat.Array[i]; }
00035 return *this;
00036 }
|
|
|
dgematrix operator-= Definition at line 40 of file dgematrix-dgematrix.hpp. References Array, M, Ml, N, and Nl.
00041 {
00042 #ifdef CPPSL_DEBUG
00043 if(N!=mat.N || M!=mat.M){
00044 std::cerr << "[ERROR] dgematrix::operator-=(const dgematrix&)" << std::endl
00045 << "These two matrises can not make a sutraction." << std::endl
00046 << "Your input was (" << M << "x" << N << ") -= ("
00047 << mat.M << "x" << mat.N << ")." << std::endl;
00048 exit(1);
00049 }
00050 #endif//CPPSL_DEBUG
00051
00052 for(long i=0; i<Ml*Nl; i++){ Array[i]-=mat.Array[i]; }
00053 return *this;
00054 }
|
|
|
dgematrix operator*= Definition at line 58 of file dgematrix-dgematrix.hpp. References _dgematrix::Array, Array, _dgematrix::Desc, Desc, M, N, and shallow_copy().
00059 {
00060 #ifdef CPPSL_DEBUG
00061 if(N!=mat.M){
00062 std::cerr << "[ERROR] dgematrix::operator*=(const dgematrix&)" << std::endl
00063 << "These two matrises can not make a product." << std::endl
00064 << "Your input was (" << M << "x" << N << ") *= ("
00065 << mat.M << "x" << mat.N << ")." << std::endl;
00066 exit(1);
00067 }
00068 #endif//CPPSL_DEBUG
00069
00070 _dgematrix newmat( M, mat.N );
00071 pdgemm_( 'N', 'N', M, mat.N, N, 1.0, Array, 1, 1, Desc,
00072 mat.Array, 1, 1, mat.Desc, 0.0, newmat.Array, 1, 1, newmat.Desc );
00073 shallow_copy(newmat);
00074
00075 return *this;
00076 }
|
|
|
dgematrix=_dgematrix operator Definition at line 3 of file dgematrix-_dgematrix.hpp. References shallow_copy().
00004 {
00005 #ifdef CPPL_DEBUG
00006 std::cerr << "# [NOTE] dgematrix::operator=(const _dgematrix&) was called."
00007 << std::endl;
00008 #endif//CPPL_DEBUG
00009
00010 shallow_copy(mat);
00011 return *this;
00012 }
|
|
|
dgematrix+=_dgematrix operator Definition at line 20 of file dgematrix-_dgematrix.hpp. References _dgematrix::Array, Array, _dgematrix::destroy(), _dgematrix::M, M, Ml, _dgematrix::N, N, and Nl.
00021 {
00022 #ifdef CPPSL_DEBUG
00023 if(N!=mat.N || M!=mat.M){
00024 std::cerr << "[ERROR] dgematrix::operator+=(const _dgematrix&)" << std::endl
00025 << "These two matrises can not make a summation." << std::endl
00026 << "Your input was (" << M << "x" << N << ") += ("
00027 << mat.M << "x" << mat.N << ")." << std::endl;
00028 exit(1);
00029 }
00030 #endif//CPPSL_DEBUG
00031
00032 for(long i=0; i<Ml*Nl; i++){ Array[i]+=mat.Array[i]; }
00033
00034 mat.destroy();
00035 return *this;
00036 }
|
|
|
dgematrix-=_dgematrix operator Definition at line 40 of file dgematrix-_dgematrix.hpp. References _dgematrix::Array, Array, _dgematrix::destroy(), _dgematrix::M, M, Ml, _dgematrix::N, N, and Nl.
00041 {
00042 #ifdef CPPSL_DEBUG
00043 if(N!=mat.N || M!=mat.M){
00044 std::cerr << "[ERROR] dgematrix::operator-=(const _dgematrix&)" << std::endl
00045 << "These two matrises can not make a sutraction." << std::endl
00046 << "Your input was (" << M << "x" << N << ") -= ("
00047 << mat.M << "x" << mat.N << ")." << std::endl;
00048 exit(1);
00049 }
00050 #endif//CPPSL_DEBUG
00051
00052 for(long i=0; i<Ml*Nl; i++){ Array[i]-=mat.Array[i]; }
00053
00054 mat.destroy();
00055 return *this;
00056 }
|
|
|
dgematrix*=_dgematrix operator Definition at line 60 of file dgematrix-_dgematrix.hpp. References _dgematrix::Array, Array, _dgematrix::Desc, Desc, M, _dgematrix::M, _dgematrix::N, N, and shallow_copy().
00061 {
00062 #ifdef CPPSL_DEBUG
00063 if(N!=mat.M){
00064 std::cerr << "[ERROR] dgematrix::operator*=(const _dgematrix&)" << std::endl
00065 << "These two matrises can not make a product." << std::endl
00066 << "Your input was (" << M << "x" << N << ") *= ("
00067 << mat.M << "x" << mat.N << ")." << std::endl;
00068 exit(1);
00069 }
00070 #endif//CPPSL_DEBUG
00071
00072 _dgematrix newmat( M, mat.N );
00073 pdgemm_( 'N', 'N', M, mat.N, N, 1.0, Array, 1, 1, Desc,
00074 mat.Array, 1, 1, mat.Desc, 0.0, newmat.Array, 1, 1, newmat.Desc );
00075 shallow_copy(newmat);
00076
00077 return *this;
00078 }
|
|
|
dgematrix*=double operator Definition at line 3 of file dgematrix-double.hpp.
00004 {
00005 dscal_(Ml*Nl, d, Array, 1);
00006 return *this;
00007 }
|
|
|
dgematrix/=double operator Definition at line 11 of file dgematrix-double.hpp.
00012 {
00013 dscal_(Ml*Nl, 1./d, Array, 1);
00014 return *this;
00015 }
|
|
|
Definition at line 136 of file dgematrix.hpp. |
|
|
Definition at line 139 of file dgematrix.hpp. |
|
|
Definition at line 140 of file dgematrix.hpp. |
|
|
Definition at line 141 of file dgematrix.hpp. |
|
|
Definition at line 142 of file dgematrix.hpp. |
|
||||||||||||
|
Definition at line 67 of file dgematrix-io.hpp.
|
|
||||||||||||
|
swap two matrices Definition at line 114 of file dgematrix-misc.hpp.
00115 {
00116 long A_M(A.M), A_N(A.N), A_Ml(A.Ml), A_Nl(A.Nl), A_Desc[9];
00117 double* A_Array(A.Array);
00118 A.M=B.M; A.N=B.N; A.Ml=B.Ml; A.Nl=B.Nl; A.Array=B.Array;
00119 B.M=A_M; B.N=A_N; B.Ml=A_Ml; B.Nl=A_Nl; B.Array=A_Array;
00120 for(int i=0; i<9; i++){
00121 A_Desc[i] =A.Desc[i];
00122 A.Desc[i] =B.Desc[i];
00123 B.Desc[i] =A_Desc[i];
00124 }
00125 }
|
|
|
return transposed dgematrix Definition at line 16 of file dgematrix-calc.hpp.
00017 {
00018 _dgematrix newmat(mat.N,mat.M);
00019
00020 for(long i=0; i<newmat.M; i++){ for(long j=0; j<newmat.N; j++){
00021 newmat(i,j) =mat(j,i);
00022 }}
00023
00024 return newmat;
00025 }
|
|
|
+dgematrix operator Definition at line 3 of file dgematrix-unary.hpp.
00004 {
00005 return mat;
00006 }
|
|
|
-dgematrix operator Definition at line 10 of file dgematrix-unary.hpp.
|
|
||||||||||||
|
dgematrix+dgematrix operator Definition at line 84 of file dgematrix-dgematrix.hpp.
00085 {
00086 #ifdef CPPSL_DEBUG
00087 if(matA.N!=matB.N || matA.M!=matB.M){
00088 std::cerr << "[ERROR] operator+(const dgematrix&, const dgematrix&)"
00089 << std::endl
00090 << "These two matrises can not make a summation." << std::endl
00091 << "Your input was (" << matA.M << "x" << matA.N << ") + ("
00092 << matB.M << "x" << matB.N << ")." << std::endl;
00093 exit(1);
00094 }
00095 #endif//CPPSL_DEBUG
00096
00097 _dgematrix newmat(matA.M,matA.N);
00098 for(long i=0; i<newmat.Ml*newmat.Nl; i++){
00099 newmat.Array[i] =matA.Array[i]+matB.Array[i];
00100 }
00101
00102 return newmat;
00103 }
|
|
||||||||||||
|
dgematrix+_dgematrix operator Definition at line 86 of file dgematrix-_dgematrix.hpp.
00087 {
00088 #ifdef CPPSL_DEBUG
00089 if(matA.N!=matB.N || matA.M!=matB.M){
00090 std::cerr << "[ERROR] operator+(const dgematrix&, const _dgematrix&)"
00091 << std::endl
00092 << "These two matrises can not make a summation." << std::endl
00093 << "Your input was (" << matA.M << "x" << matA.N << ") + ("
00094 << matB.M << "x" << matB.N << ")." << std::endl;
00095 exit(1);
00096 }
00097 #endif//CPPSL_DEBUG
00098
00099 for(long i=0; i<matA.Ml*matA.Nl; i++){ matB.Array[i] +=matA.Array[i]; }
00100
00101 return matB;
00102 }
|
|
||||||||||||
|
_dgematrix+dgematrix operator Definition at line 3 of file _dgematrix-dgematrix.hpp.
00004 {
00005 #ifdef CPPSL_DEBUG
00006 if(matA.N!=matB.N || matA.M!=matB.M){
00007 std::cerr << "[ERROR] operator+(const _dgematrix&, const dgematrix&)"
00008 << std::endl
00009 << "These two matrises can not make a summation." << std::endl
00010 << "Your input was (" << matA.M << "x" << matA.N << ") + ("
00011 << matB.M << "x" << matB.N << ")." << std::endl;
00012 exit(1);
00013 }
00014 #endif//CPPSL_DEBUG
00015
00016 for(long i=0; i<matA.Ml*matA.Nl; i++){ matA.Array[i] +=matB.Array[i]; }
00017
00018 return matA;
00019 }
|
|
||||||||||||
|
dgematrix-dgematrix operator Definition at line 107 of file dgematrix-dgematrix.hpp.
00108 {
00109 #ifdef CPPSL_DEBUG
00110 if(matA.N!=matB.N || matA.M!=matB.M){
00111 std::cerr << "[ERROR] operator-(const dgematrix&, const dgematrix&)"
00112 << std::endl
00113 << "These two matrises can not make a subtraction." << std::endl
00114 << "Your input was (" << matA.M << "x" << matA.N << ") - ("
00115 << matB.M << "x" << matB.N << ")." << std::endl;
00116 exit(1);
00117 }
00118 #endif//CPPSL_DEBUG
00119
00120 _dgematrix newmat(matA.M,matA.N);
00121 for(long i=0; i<newmat.Ml*newmat.Nl; i++){
00122 newmat.Array[i] =matA.Array[i]-matB.Array[i];
00123 }
00124
00125 return newmat;
00126 }
|
|
||||||||||||
|
dgematrix-_dgematrix operator Definition at line 106 of file dgematrix-_dgematrix.hpp.
00107 {
00108 #ifdef CPPSL_DEBUG
00109 if(matA.N!=matB.N || matA.M!=matB.M){
00110 std::cerr << "[ERROR] operator-(const dgematrix&, const _dgematrix&)"
00111 << std::endl
00112 << "These two matrises can not make a subtraction." << std::endl
00113 << "Your input was (" << matA.M << "x" << matA.N << ") - ("
00114 << matB.M << "x" << matB.N << ")." << std::endl;
00115 exit(1);
00116 }
00117 #endif//CPPSL_DEBUG
00118
00119 for(long i=0; i<matA.Ml*matA.Nl; i++){
00120 matB.Array[i] =matA.Array[i]-matB.Array[i];
00121 }
00122
00123 return matB;
00124 }
|
|
||||||||||||
|
_dgematrix-dgematrix operator Definition at line 23 of file _dgematrix-dgematrix.hpp.
00024 {
00025 #ifdef CPPSL_DEBUG
00026 if(matA.N!=matB.N || matA.M!=matB.M){
00027 std::cerr << "[ERROR] operator-(const _dgematrix&, const dgematrix&)"
00028 << std::endl
00029 << "These two matrises can not make a subtraction." << std::endl
00030 << "Your input was (" << matA.M << "x" << matA.N << ") - ("
00031 << matB.M << "x" << matB.N << ")." << std::endl;
00032 exit(1);
00033 }
00034 #endif//CPPSL_DEBUG
00035
00036 for(long i=0; i<matA.Ml*matA.Nl; i++){ matA.Array[i] -=matB.Array[i]; }
00037
00038 return matA;
00039 }
|
|
||||||||||||
|
dgematrix*dgematrix operator Definition at line 130 of file dgematrix-dgematrix.hpp.
00131 {
00132 #ifdef CPPSL_DEBUG
00133 if(matA.N!=matB.M){
00134 std::cerr << "[ERROR] operator*(const dgematrix&, const dgematrix&)"
00135 << std::endl
00136 << "These two matrises can not make a product." << std::endl
00137 << "Your input was (" << matA.M << "x" << matA.N << ") * ("
00138 << matB.M << "x" << matB.N << ")." << std::endl;
00139 exit(1);
00140 }
00141 #endif//CPPSL_DEBUG
00142
00143 _dgematrix newmat( matA.M, matB.N );
00144 pdgemm_( 'N', 'N', matA.M, matB.N, matA.N, 1.0,
00145 matA.Array, 1, 1, matA.Desc,
00146 matB.Array, 1, 1, matB.Desc, 0.0,
00147 newmat.Array, 1, 1, newmat.Desc );
00148
00149 return newmat;
00150 }
|
|
||||||||||||
|
dgematrix*_dgematrix operator Definition at line 128 of file dgematrix-_dgematrix.hpp.
00129 {
00130 #ifdef CPPSL_DEBUG
00131 if(matA.N!=matB.M){
00132 std::cerr << "[ERROR] operator*(const dgematrix&, const _dgematrix&)"
00133 << std::endl
00134 << "These two matrises can not make a product." << std::endl
00135 << "Your input was (" << matA.M << "x" << matA.N << ") * ("
00136 << matB.M << "x" << matB.N << ")." << std::endl;
00137 exit(1);
00138 }
00139 #endif//CPPSL_DEBUG
00140
00141 _dgematrix newmat( matA.M, matB.N );
00142 pdgemm_( 'N', 'N', matA.M, matB.N, matA.N, 1.0,
00143 matA.Array, 1, 1, matA.Desc,
00144 matB.Array, 1, 1, matB.Desc, 0.0,
00145 newmat.Array, 1, 1, newmat.Desc );
00146
00147 matB.destroy();
00148 return newmat;
00149 }
|
|
||||||||||||
|
_dgematrix*dgematrix operator Definition at line 43 of file _dgematrix-dgematrix.hpp.
00044 {
00045 #ifdef CPPSL_DEBUG
00046 if(matA.N!=matB.M){
00047 std::cerr << "[ERROR] operator*(const _dgematrix&, const dgematrix&)"
00048 << std::endl
00049 << "These two matrises can not make a product." << std::endl
00050 << "Your input was (" << matA.M << "x" << matA.N << ") * ("
00051 << matB.M << "x" << matB.N << ")." << std::endl;
00052 exit(1);
00053 }
00054 #endif//CPPSL_DEBUG
00055
00056 _dgematrix newmat( matA.M, matB.N );
00057 pdgemm_( 'N', 'N', matA.M, matB.N, matA.N, 1.0,
00058 matA.Array, 1, 1, matA.Desc,
00059 matB.Array, 1, 1, matB.Desc, 0.0,
00060 newmat.Array, 1, 1, newmat.Desc );
00061
00062 matA.destroy();
00063 return newmat;
00064 }
|
|
||||||||||||
|
dgematrix*dcovector operator Definition at line 3 of file dgematrix-dcovector.hpp.
00004 {
00005 #ifdef CPPSL_DEBUG
00006 if(mat.N!=vec.L){
00007 std::cerr << "[ERROR] operator*(const dgematrix&, const dcovector&)"
00008 << std::endl
00009 << "These matrix and vector can not make a product." << std::endl
00010 << "Your input was (" << mat.m << "x" << mat.n << ") * ("
00011 << vec.l << ")." << std::endl;
00012 exit(1);
00013 }
00014 #endif//CPPSL_DEBUG
00015
00016 _dcovector newvec(mat.M);
00017 pdgemv_( 'N', mat.M, mat.N, 1.0, mat.Array, 1, 1, mat.Desc,
00018 vec.Array, 1, 1, vec.Desc, 1, 0.0,
00019 newvec.Array, 1, 1, newvec.Desc, 1 );
00020
00021 return newvec;
00022 }
|
|
||||||||||||
|
dgematrix*_dcovector operator Definition at line 3 of file dgematrix-_dcovector.hpp.
00004 {
00005 #ifdef CPPSL_DEBUG
00006 if(mat.N!=vec.L){
00007 std::cerr << "[ERROR] operator*(const dgematrix&, const _dcovector&)"
00008 << std::endl
00009 << "These matrix and vector can not make a product." << std::endl
00010 << "Your input was (" << mat.M << "x" << mat.N << ") * ("
00011 << vec.L << ")." << std::endl;
00012 exit(1);
00013 }
00014 #endif//CPPSL_DEBUG
00015
00016 _dcovector newvec(mat.M);
00017 pdgemv_( 'N', mat.M, mat.N, 1.0, mat.Array, 1, 1, mat.Desc,
00018 vec.Array, 1, 1, vec.Desc, 1, 0.0,
00019 newvec.Array, 1, 1, newvec.Desc, 1 );
00020
00021 vec.destroy();
00022 return newvec;
00023 }
|
|
||||||||||||
|
drovector*dgematrix operator Definition at line 3 of file drovector-dgematrix.hpp.
00004 {
00005 #ifdef CPPSL_DEBUG
00006 if( vec.L!=mat.M ){
00007 std::cerr << "[ERROR] operator*(const drovector&, const dgematrix&)"
00008 << std::endl
00009 << "These vector and matrix can not make a product." << std::endl
00010 << "Your input was (" << vec.L << ") * ("
00011 << mat.M << "x" << mat.N << ")." << std::endl;
00012 exit(1);
00013 }
00014 #endif//CPPSL_DEBUG
00015
00016 _drovector newvec(mat.N);
00017 pdgemv_( 'T', mat.M, mat.N, 1.0, mat.Array, 1, 1, mat.Desc,
00018 vec.Array, 1, 1, vec.Desc, 1, 0.0,
00019 newvec.Array, 1, 1, newvec.Desc, 1 );
00020
00021 return newvec;
00022 }
|
|
||||||||||||
|
_drovector*dgematrix operator Definition at line 3 of file _drovector-dgematrix.hpp.
00004 {
00005 #ifdef CPPSL_DEBUG
00006 if( vec.L!=mat.M ){
00007 std::cerr << "[ERROR] operator*(const _drovector&, const dgematrix&)"
00008 << std::endl
00009 << "These vector and matrix can not make a product." << std::endl
00010 << "Your input was (" << vec.L << ") * ("
00011 << mat.M << "x" << mat.N << ")." << std::endl;
00012 exit(1);
00013 }
00014 #endif//CPPSL_DEBUG
00015
00016 _drovector newvec(mat.N);
00017 pdgemv_( 'T', mat.M, mat.N, 1.0, mat.Array, 1, 1, mat.Desc,
00018 vec.Array, 1, 1, vec.Desc, 1, 0.0,
00019 newvec.Array, 1, 1, newvec.Desc, 1 );
00020
00021 vec.destroy();
00022 return newvec;
00023 }
|
|
||||||||||||
|
dgematrix*double operator Definition at line 23 of file dgematrix-double.hpp.
|
|
||||||||||||
|
double*dgematrix operator Definition at line 3 of file double-dgematrix.hpp.
|
|
||||||||||||
|
dgematrix/double operator Definition at line 33 of file dgematrix-double.hpp.
|
|
|
global matrix row size (NOT accessible)
Definition at line 7 of file dgematrix.hpp. Referenced by _dgematrix::_dgematrix(), _dgematrix::absorb(), clear(), copy(), dgematrix(), dgesv(), identity(), operator *(), operator *=(), operator()(), operator+(), operator+=(), operator-(), operator-=(), operator/(), operator<<(), resize(), set(), shallow_copy(), swap(), t(), and transpose(). |
|
|
global matrix column size (NOT accessible)
Definition at line 8 of file dgematrix.hpp. Referenced by _dgematrix::_dgematrix(), _dgematrix::absorb(), clear(), copy(), dgematrix(), dgesv(), identity(), operator *(), operator *=(), operator()(), operator+(), operator+=(), operator-(), operator-=(), operator/(), operator<<(), resize(), set(), shallow_copy(), swap(), t(), and transpose(). |
|
|
local matrix row size (NOT accessible)
Definition at line 9 of file dgematrix.hpp. Referenced by _dgematrix::_dgematrix(), _dgematrix::absorb(), chsign(), clear(), copy(), dgematrix(), dgesv(), identity(), operator *(), operator *=(), operator+(), operator+=(), operator-(), operator-=(), operator/(), operator/=(), resize(), shallow_copy(), swap(), and zero(). |
|
|
local matrix column size (NOT accessible)
Definition at line 10 of file dgematrix.hpp. Referenced by _dgematrix::_dgematrix(), _dgematrix::absorb(), chsign(), clear(), copy(), dgematrix(), identity(), operator *(), operator *=(), operator+(), operator+=(), operator-(), operator-=(), operator/(), operator/=(), resize(), shallow_copy(), swap(), and zero(). |
|
|
matrix description (NOT accessible)
Definition at line 11 of file dgematrix.hpp. Referenced by _dgematrix::_dgematrix(), _dgematrix::absorb(), clear(), copy(), dgematrix(), dgesv(), operator *(), operator *=(), operator()(), set(), shallow_copy(), and swap(). |
|
|
1D array to store matrix data (NOT accessible)
Definition at line 12 of file dgematrix.hpp. Referenced by _dgematrix::_dgematrix(), _dgematrix::absorb(), chsign(), clear(), copy(), dgematrix(), dgesv(), identity(), operator *(), operator *=(), operator()(), operator+(), operator+=(), operator-(), operator-=(), operator/(), operator/=(), operator=(), resize(), set(), shallow_copy(), swap(), zero(), and ~dgematrix(). |
|
|
global matrix row size (readable)
Definition at line 16 of file dgematrix.hpp. Referenced by dgesv(), and operator *(). |
|
|
global matrix column size (readable)
Definition at line 17 of file dgematrix.hpp. Referenced by dgesv(), and operator *(). |
|
|
local matrix row size (readable)
Definition at line 18 of file dgematrix.hpp. |
|
|
local matrix column size (readable)
Definition at line 19 of file dgematrix.hpp. |
|
|
matrix description (readable)
Definition at line 20 of file dgematrix.hpp. Referenced by resize(). |
|
|
1D array to store matrix data (readable)
Definition at line 21 of file dgematrix.hpp. Referenced by clear(), dgematrix(), and ~dgematrix(). |
1.3.5