00001
00003 inline zhematrix::zhematrix()
00004 : n(N), array(Array), darray(Darray)
00005 {
00006 #ifdef CPPL_VERBOSE
00007 std::cerr << "# [MARK] zhematrix::zhematrix()"
00008 << std::endl;
00009 #endif//CPPL_VERBOSE
00010
00012 N = 0;
00013 Array =NULL;
00014 Darray =NULL;
00015
00016 #ifdef CPPL_DEBUG
00017 std::cerr << "# [NOTE] zhematrix::zhematrix() "
00018 << "A new 0x0 matrix at " << Array
00019 << " has been made." << std::endl;
00020 #endif//CPPL_DEBUG
00021 }
00022
00023
00025 inline zhematrix::zhematrix(const zhematrix& mat)
00026 : n(N), array(Array), darray(Darray)
00027 {
00028 #ifdef CPPL_VERBOSE
00029 std::cerr << "# [MARK] zhematrix::zhematrix(const zhematrix&)"
00030 << std::endl;
00031 #endif//CPPL_VERBOSE
00032
00034 N =mat.N;
00035 Array =new std::complex<double>[N*N];
00036 Darray =new std::complex<double>*[N];
00037 for(int i=0; i<N; i++){ Darray[i] =&Array[i*N]; }
00038
00040 zcopy_(N*N, mat.Array, 1, Array, 1);
00041
00042 #ifdef CPPL_DEBUG
00043 std::cerr << "# [NOTE] zhematrix::zhematrix(const zhematrix&) "
00044 << "A new matrix at " << Array << " has been made." << std::endl;
00045 #endif//CPPL_DEBUG
00046 }
00047
00048
00050 inline zhematrix::zhematrix(const _zhematrix& mat)
00051 : n(N), array(Array), darray(Darray)
00052 {
00053 #ifdef CPPL_VERBOSE
00054 std::cerr << "# [MARK] zhematrix::zhematrix(const _zhematrix&)"
00055 << std::endl;
00056 #endif//CPPL_VERBOSE
00057
00058 N =mat.N;
00059 Array =mat.Array;
00060 Darray =mat.Darray;
00061
00062 #ifdef CPPL_DEBUG
00063 std::cerr << "# [NOTE] zhematrix::zhematrix(const _zhematrix&) "
00064 << "A new matrix pointing at " << Array
00065 << " has been made."
00066 << std::endl;
00067 #endif//CPPL_DEBUG
00068 }
00069
00070
00072 inline zhematrix::zhematrix(const long& _n)
00073 : n(N), array(Array), darray(Darray)
00074 {
00075 #ifdef CPPL_VERBOSE
00076 std::cerr << "# [MARK] zhematrix::zhematrix(const long&)"
00077 << std::endl;
00078 #endif//CPPL_VERBOSE
00079
00080 #ifdef CPPL_DEBUG
00081 if( _n<0 ){
00082 std::cerr << "[ERROR] zhematrix::zhematrix(const long)"
00083 << std::endl
00084 << "Matrix sizes must be positive integers. " << std::endl
00085 << "Your input was (" << _n << ")." << std::endl;
00086 exit(1);
00087 }
00088 #endif//CPPL_DEBUG
00089
00091 N =_n;
00092 Array =new std::complex<double>[N*N];
00093 Darray =new std::complex<double>*[N];
00094 for(int i=0; i<N; i++){ Darray[i] =&Array[i*N]; }
00095
00096 #ifdef CPPL_DEBUG
00097 std::cerr << "# [NOTE] zhematrix(long) "
00098 << "A new matrix at " << Array
00099 << " has been made." << std::endl;
00100 #endif//CPPL_DEBUG
00101 }
00102
00103
00105 inline zhematrix::zhematrix(const char* filename)
00106 : n(N), array(Array), darray(Darray)
00107 {
00108 #ifdef CPPL_VERBOSE
00109 std::cerr << "# [MARK] zhematrix::zhematrix(const char*)"
00110 << std::endl;
00111 #endif//CPPL_VERBOSE
00112
00113 Array =NULL;
00114 Darray =NULL;
00115
00117 read(filename);
00118
00119 #ifdef CPPL_DEBUG
00120 std::cerr << "# [NOTE] zhematrix::zhematrix(const char*) "
00121 << "A new matrix at " << Array << " has been made." << std::endl;
00122 #endif//CPPL_DEBUG
00123 }
00124
00128
00129
00131 inline zhematrix::~zhematrix()
00132 {
00133 #ifdef CPPL_VERBOSE
00134 std::cerr << "# [MARK] zhematrix::~zhematrix()"
00135 << std::endl;
00136 #endif//CPPL_VERBOSE
00137
00138 #ifdef CPPL_DEBUG
00139 std::cerr << "# [NOTE] zhematrix::~zhematrix() "
00140 << "A matrix at " << Array << " is going to be deleted." << std::endl;
00141 #endif//CPPL_DEBUG
00142
00144 delete [] Array;
00145 delete [] Darray;
00146 }