00001
00003 inline dgematrix::dgematrix()
00004 : m(M), n(N), array(Array), darray(Darray)
00005 {
00006 #ifdef CPPL_VERBOSE
00007 std::cerr << "# [MARK] dgematrix::dgematrix()"
00008 << std::endl;
00009 #endif//CPPL_VERBOSE
00010
00012 M =0;
00013 N =0;
00014 Array =NULL;
00015 Darray =NULL;
00016
00017 #ifdef CPPL_DEBUG
00018 std::cerr << "# [NOTE] dgematrix::dgematrix() "
00019 << "A new 0x0 matrix at " << Array
00020 << " has been made." << std::endl;
00021 #endif//CPPL_DEBUG
00022 }
00023
00027
00028
00030 inline dgematrix::dgematrix(const dgematrix& mat)
00031 : m(M), n(N), array(Array), darray(Darray)
00032 {
00033 #ifdef CPPL_VERBOSE
00034 std::cerr << "# [MARK] dgematrix::dgematrix(const dgematrix&)"
00035 << std::endl;
00036 #endif//CPPL_VERBOSE
00037
00039 M =mat.M;
00040 N =mat.N;
00041 Array =new double[M*N];
00042 Darray =new double*[N];
00043 for(int i=0; i<N; i++){ Darray[i] =&Array[i*M]; }
00044
00046 dcopy_(M*N, mat.Array, 1, Array, 1);
00047
00048 #ifdef CPPL_DEBUG
00049 std::cerr << "# [NOTE] dgematrix::dgematrix(const dgematrix&) "
00050 << "A new matrix at " << Array << " has been made." << std::endl;
00051 #endif//CPPL_DEBUG
00052 }
00053
00054
00056 inline dgematrix::dgematrix(const _dgematrix& mat)
00057 : m(M), n(N), array(Array), darray(Darray)
00058 {
00059 #ifdef CPPL_VERBOSE
00060 std::cerr << "# [MARK] dgematrix::dgematrix(const _dgematrix&)"
00061 << std::endl;
00062 #endif//CPPL_VERBOSE
00063
00064 M =mat.M;
00065 N =mat.N;
00066 Array =mat.Array;
00067 Darray =mat.Darray;
00068
00069 #ifdef CPPL_DEBUG
00070 std::cerr << "# [NOTE] dgematrix::dgematrix(const _dgematrix&) "
00071 << "A new matrix pointing at " << Array << " has been made."
00072 << std::endl;
00073 #endif//CPPL_DEBUG
00074 }
00075
00079
00080
00082 inline dgematrix::dgematrix(const dgbmatrix& mat)
00083 : m(M), n(N), array(Array), darray(Darray)
00084 {
00085 #ifdef CPPL_VERBOSE
00086 std::cerr << "# [MARK] dgematrix::dgematrix(const dgbmatrix&)"
00087 << std::endl;
00088 #endif//CPPL_VERBOSE
00089
00091 M =mat.M;
00092 N =mat.N;
00093 Array =new double[M*N];
00094 Darray =new double*[N];
00095 for(int i=0; i<N; i++){ Darray[i] =&Array[i*M]; }
00096
00098 zero();
00099 for(long i=0; i<mat.M; i++){
00100 for(long j=max(0,i-mat.KL); j<min(N,i+mat.KU+1); j++){
00101 operator()(i,j) =mat(i,j);
00102 }
00103 }
00104 #ifdef CPPL_DEBUG
00105 std::cerr << "# [NOTE] dgematrix::dgematrix(const dgbmatrix&) "
00106 << "A new matrix at " << Array << " has been made." << std::endl;
00107 #endif//CPPL_DEBUG
00108 }
00109
00110
00112 inline dgematrix::dgematrix(const _dgbmatrix& mat)
00113 : m(M), n(N), array(Array), darray(Darray)
00114 {
00115 #ifdef CPPL_VERBOSE
00116 std::cerr << "# [MARK] dgematrix::dgematrix(const _dgbmatrix&)"
00117 << std::endl;
00118 #endif//CPPL_VERBOSE
00119
00121 M =mat.M;
00122 N =mat.N;
00123 Array =new double[M*N];
00124 Darray =new double*[N];
00125 for(int i=0; i<N; i++){ Darray[i] =&Array[i*M]; }
00126
00128 zero();
00129 for(long i=0; i<mat.M; i++){
00130 for(long j=max(0,i-mat.KL); j<min(N,i+mat.KU+1); j++){
00131 operator()(i,j) =mat(i,j);
00132 }
00133 }
00134
00135 mat.destroy();
00136
00137 #ifdef CPPL_DEBUG
00138 std::cerr << "# [NOTE] dgematrix::dgematrix(const dgbmatrix&) "
00139 << "A new matrix at " << Array << " has been made." << std::endl;
00140 #endif//CPPL_DEBUG
00141 }
00142
00146
00147
00149 inline dgematrix::dgematrix(const dsymatrix& mat)
00150 : m(M), n(N), array(Array), darray(Darray)
00151 {
00152 #ifdef CPPL_VERBOSE
00153 std::cerr << "# [MARK] dgematrix::dgematrix(const dsymatrix&)"
00154 << std::endl;
00155 #endif//CPPL_VERBOSE
00156
00158 M =mat.N;
00159 N =mat.N;
00160 Array =new double[N*N];
00161 Darray =new double*[N];
00162 for(int i=0; i<N; i++){ Darray[i] =&Array[i*M]; }
00163
00165 zero();
00166 for(long i=0; i<mat.N; i++) {
00167 for(long j=0; j<mat.N; j++ ) {
00168 operator()(i,j) =mat(i,j);
00169 }
00170 }
00171 #ifdef CPPL_DEBUG
00172 std::cerr << "# [NOTE] dgematrix::dgematrix(const dsymatrix&) "
00173 << "A new matrix at " << Array << " has been made." << std::endl;
00174 #endif//CPPL_DEBUG
00175 }
00176
00177
00179 inline dgematrix::dgematrix(const _dsymatrix& mat)
00180 : m(M), n(N), array(Array), darray(Darray)
00181 {
00182 #ifdef CPPL_VERBOSE
00183 std::cerr << "# [MARK] dgematrix::dgematrix(const _dsymatrix&)"
00184 << std::endl;
00185 #endif//CPPL_VERBOSE
00186
00188 M =mat.N;
00189 N =mat.N;
00190 Array =mat.Array;
00191 Darray =mat.Darray;
00192
00193
00194
00196 for(long i=0; i<mat.N; i++){ for(long j=0; j<i; j++){
00197 operator()(j,i) =operator()(i,j);
00198 }}
00199
00200 #ifdef CPPL_DEBUG
00201 std::cerr << "# [NOTE] dgematrix::dgematrix(const _dsymatrix&) "
00202 << "A matrix at " << Array << " has been transformed into "
00203 << "dgematrix." << std::endl;
00204 #endif//CPPL_DEBUG
00205 }
00206
00210
00211
00213 inline dgematrix::dgematrix(const dssmatrix& mat)
00214 : m(M), n(N), array(Array), darray(Darray)
00215 {
00216 #ifdef CPPL_VERBOSE
00217 std::cerr << "# [MARK] dgematrix::dgematrix(const dssmatrix&)"
00218 << std::endl;
00219 #endif//CPPL_VERBOSE
00220
00222 M =mat.M;
00223 N =mat.N;
00224 Array =new double[M*N];
00225 Darray =new double*[N];
00226 for(int i=0; i<N; i++){ Darray[i] =&Array[i*M]; }
00227
00229 zero();
00230 for(long c=0; c<mat.VOL; c++) {
00231 operator()(mat.Indx[c],mat.Jndx[c]) =mat.Array[c];
00232 }
00233
00234 #ifdef CPPL_DEBUG
00235 std::cerr << "# [NOTE] dgematrix::dgematrix(const dssmatrix&) "
00236 << "A new matrix at " << Array << " has been made." << std::endl;
00237 #endif//CPPL_DEBUG
00238 }
00239
00240
00242 inline dgematrix::dgematrix(const _dssmatrix& mat)
00243 : m(M), n(N), array(Array), darray(Darray)
00244 {
00245 #ifdef CPPL_VERBOSE
00246 std::cerr << "# [MARK] dgematrix::dgematrix(const _dssmatrix&)"
00247 << std::endl;
00248 #endif//CPPL_VERBOSE
00249
00251 M =mat.M;
00252 N =mat.N;
00253 Array =new double[M*N];
00254 Darray =new double*[N];
00255 for(int i=0; i<N; i++){ Darray[i] =&Array[i*M]; }
00256
00258 zero();
00259 for(long c=0; c<mat.VOL; c++){
00260 operator()(mat.Indx[c],mat.Jndx[c]) =mat.Array[c];
00261 }
00262
00263 mat.destroy();
00264
00265 #ifdef CPPL_DEBUG
00266 std::cerr << "# [NOTE] dgematrix::dgematrix(const _dssmatrix&) "
00267 << "A new matrix at " << Array << " has been made." << std::endl;
00268 #endif//CPPL_DEBUG
00269 }
00270
00274
00275
00277 inline dgematrix::dgematrix(const long& _m, const long& _n)
00278 : m(M), n(N), array(Array), darray(Darray)
00279 {
00280 #ifdef CPPL_VERBOSE
00281 std::cerr << "# [MARK] dgematrix::dgematrix(const long&, const long&)"
00282 << std::endl;
00283 #endif//CPPL_VERBOSE
00284
00285 #ifdef CPPL_DEBUG
00286 if( _m<0 || _n<0 ){
00287 std::cerr << "[ERROR] dgematrix::dgematrix(const long, const long)"
00288 << std::endl
00289 << "Matrix sizes must be positive integers. " << std::endl
00290 << "Your input was (" << _m << "," << _n << ")." << std::endl;
00291 exit(1);
00292 }
00293 #endif//CPPL_DEBUG
00294
00296 M =_m;
00297 N =_n;
00298 Array =new double[M*N];
00299 Darray =new double*[N];
00300 for(int i=0; i<N; i++){ Darray[i] =&Array[i*M]; }
00301
00302 #ifdef CPPL_DEBUG
00303 std::cerr << "# [NOTE] dgematrix(long,long) "
00304 << "A new matrix at " << Array << " has been made." << std::endl;
00305 #endif//CPPL_DEBUG
00306 }
00307
00308
00310 inline dgematrix::dgematrix(const char* filename)
00311 : m(M), n(N), array(Array), darray(Darray)
00312 {
00313 #ifdef CPPL_VERBOSE
00314 std::cerr << "# [MARK] dgematrix::dgematrix(const char*)"
00315 << std::endl;
00316 #endif//CPPL_VERBOSE
00317
00318 Array =NULL;
00319 Darray =NULL;
00320
00322 read(filename);
00323
00324 #ifdef CPPL_DEBUG
00325 std::cerr << "# [NOTE] dgematrix::dgematrix(const char*) "
00326 << "A new matrix at " << Array << " has been made." << std::endl;
00327 #endif//CPPL_DEBUG
00328 }
00329
00333
00334
00336 inline dgematrix::~dgematrix()
00337 {
00338 #ifdef CPPL_VERBOSE
00339 std::cerr << "# [MARK] dgematrix::~dgematrix()"
00340 << std::endl;
00341 #endif//CPPL_VERBOSE
00342
00343 #ifdef CPPL_DEBUG
00344 std::cerr << "# [NOTE] dgematrix::~dgematrix() "
00345 << "A matrix at " << Array << " is going to be deleted." << std::endl;
00346 #endif//CPPL_DEBUG
00348 delete [] Darray;
00349 delete [] Array;
00350 }