00001
00003 inline zgbmatrix::zgbmatrix()
00004 : m(M), n(N), kl(KL), ku(KU), array(Array), darray(Darray)
00005 {
00006 #ifdef CPPL_VERBOSE
00007 std::cerr << "# [MARK] zgbmatrix::zgbmatrix()"
00008 << std::endl;
00009 #endif//CPPL_VERBOSE
00010
00012 M =0;
00013 N =0;
00014 KL =0;
00015 KU =0;
00016 Array =NULL;
00017 Darray =NULL;
00018
00019 #ifdef CPPL_DEBUG
00020 std::cerr << "# [NOTE] zgbmatrix::zgbmatrix() "
00021 << "A new 0x0:0,0 matrix at " << Array << " has been made."
00022 << std::endl;
00023 #endif//CPPL_DEBUG
00024 }
00025
00026
00028 inline zgbmatrix::zgbmatrix(const zgbmatrix& mat)
00029 : m(M), n(N), kl(KL), ku(KU), array(Array), darray(Darray)
00030 {
00031 #ifdef CPPL_VERBOSE
00032 std::cerr << "# [MARK] zgbmatrix::zgbmatrix(const zgbmatrix&)"
00033 << std::endl;
00034 #endif//CPPL_VERBOSE
00035
00037 M =mat.M;
00038 N =mat.N;
00039 KL =mat.KL;
00040 KU =mat.KU;
00041 Array =new std::complex<double>[(KL+KU+1)*N];
00042 Darray =new std::complex<double>*[N];
00043 for(int i=0; i<N; i++){ Darray[i] =&Array[i*(KL+KU+1)]; }
00044
00046 zcopy_((KL+KU+1)*N, mat.Array, 1, Array, 1);
00047
00048 #ifdef CPPL_DEBUG
00049 std::cerr << "# [NOTE] zgbmatrix::zgbmatrix(const zgbmatrix&) "
00050 << "A new matrix at " << Array << " has been made." << std::endl;
00051 #endif//CPPL_DEBUG
00052 }
00053
00054
00056 inline zgbmatrix::zgbmatrix(const _zgbmatrix& mat)
00057 : m(M), n(N), kl(KL), ku(KU), array(Array), darray(Darray)
00058 {
00059 #ifdef CPPL_VERBOSE
00060 std::cerr << "# [MARK] zgbmatrix::zgbmatrix(const _zgbmatrix&)"
00061 << std::endl;
00062 #endif//CPPL_VERBOSE
00063
00064 M =mat.M;
00065 N =mat.N;
00066 KL =mat.KL;
00067 KU =mat.KU;
00068 Array =mat.Array;
00069 Darray =mat.Darray;
00070
00071 #ifdef CPPL_DEBUG
00072 std::cerr << "# [NOTE] zgbmatrix::zgbmatrix(const zgbmatrix&) "
00073 << "A new matrix at " << Array << " has been made." << std::endl;
00074 #endif//CPPL_DEBUG
00075 }
00076
00077
00079 inline zgbmatrix::zgbmatrix(const long& _m, const long& _n,
00080 const long& _kl, const long& _ku)
00081 : m(M), n(N), kl(KL), ku(KU), array(Array), darray(Darray)
00082 {
00083 #ifdef CPPL_VERBOSE
00084 std::cerr << "# [MARK] zgbmatrix::zgbmatrix(const long&, const long&, const long&, const long&)"
00085 << std::endl;
00086 #endif//CPPL_VERBOSE
00087
00088 #ifdef CPPL_DEBUG
00089 if( _m<0 || _n<0 || _kl<0 || _ku<0 || _m<_kl || _n<_ku ){
00090 std::cerr << "[ERROR] zgbmatrix::zgbmatrix"
00091 << "(const long, const long, const long const long)"
00092 << std::endl
00093 << "It is impossible to make a matrix you ordered. "
00094 << std::endl
00095 << "Your input was ("
00096 << _m << "," << _n << ","<< _ku << "," << _kl << ")."
00097 << std::endl;
00098 exit(1);
00099 }
00100 #endif//CPPL_DEBUG
00101
00103 M =_m;
00104 N =_n;
00105 KL =_kl;
00106 KU =_ku;
00107 Array =new std::complex<double>[(KL+KU+1)*N];
00108 Darray =new std::complex<double>*[N];
00109 for(int i=0; i<N; i++){ Darray[i] =&Array[i*(KL+KU+1)]; }
00110
00111 #ifdef CPPL_DEBUG
00112 std::cerr << "# [NOTE] zgbmatrix::zgbmatrix"
00113 << "(const long&, const long&, const long&,const long&) "
00114 << "A new matrix at " << Array << " has been made." << std::endl;
00115 #endif//CPPL_DEBUG
00116 }
00117
00118
00120 inline zgbmatrix::zgbmatrix(const char* filename)
00121 : m(M), n(N), kl(KL), ku(KU), array(Array), darray(Darray)
00122 {
00123 #ifdef CPPL_VERBOSE
00124 std::cerr << "# [MARK] zgbmatrix::zgbmatrix(const char*)"
00125 << std::endl;
00126 #endif//CPPL_VERBOSE
00127
00128 Array =NULL;
00129 Darray =NULL;
00130
00132 read(filename);
00133
00134 #ifdef CPPL_DEBUG
00135 std::cerr << "# [NOTE] zgbmatrix::zgbmatrix(const char*) "
00136 << "A new matrix at " << Array << " has been made." << std::endl;
00137 #endif//CPPL_DEBUG
00138 }
00139
00143
00144
00146 inline zgbmatrix::~zgbmatrix()
00147 {
00148 #ifdef CPPL_VERBOSE
00149 std::cerr << "# [MARK] zgbmatrix::~zgbmatrix()"
00150 << std::endl;
00151 #endif//CPPL_VERBOSE
00152
00153 #ifdef CPPL_DEBUG
00154 std::cerr << "# [NOTE] zgbmatrix::~zgbmatrix() "
00155 << "A matrix at " << Array
00156 << " is going to be deleted." << std::endl;
00157 #endif//CPPL_DEBUG
00158
00160 delete [] Array;
00161 delete [] Darray;
00162 }