Go to the documentation of this file.00001
00002
00003 inline _zgbmatrix t(const _zgbmatrix& mat)
00004 {VERBOSE_REPORT;
00005 zgbmatrix newmat(mat.n, mat.m, mat.ku, mat.kl);
00006 for(long i=0; i<newmat.m; i++){
00007 for(long j=std::max(long(0),i-newmat.kl); j<std::min(newmat.n,i+newmat.ku+1); j++){
00008 newmat(i,j) =mat(j,i);
00009 }
00010 }
00011
00012 mat.destroy();
00013 return _(newmat);
00014 }
00015
00016
00017
00018 inline _zgematrix i(const _zgbmatrix& mat)
00019 {VERBOSE_REPORT;
00020 #ifdef CPPL_DEBUG
00021 if(mat.m!=mat.n){
00022 ERROR_REPORT;
00023 std::cerr << "This matrix is not square and has no inverse matrix." << std::endl
00024 << "Your input was (" << mat.m << "x" << mat.n << ")." << std::endl;
00025 exit(1);
00026 }
00027 #endif//CPPL_DEBUG
00028
00029 zgbmatrix mat_cp(mat);
00030 zgematrix mat_inv(mat_cp.m,mat_cp.n);
00031 mat_inv.identity();
00032 mat_cp.zgbsv(mat_inv);
00033
00034 return _(mat_inv);
00035 }
00036
00037
00038
00039
00040
00041
00042
00043 inline _zgbmatrix conj(const _zgbmatrix& mat)
00044 {VERBOSE_REPORT;
00045 for(long i=0; i<mat.m; i++){
00046 for(long j=std::max(long(0),i-mat.kl); j<std::min(mat.n,i+mat.ku+1); j++){
00047 mat(i,j) =std::conj(mat(i,j));
00048 }
00049 }
00050
00051 return mat;
00052 }
00053
00054
00055
00056 inline _zgbmatrix conjt(const _zgbmatrix& mat)
00057 {VERBOSE_REPORT;
00058 zgbmatrix newmat(mat.n, mat.m, mat.ku, mat.kl);
00059 for(long i=0; i<newmat.m; i++){
00060 for(long j=std::max(long(0),i-newmat.kl); j<std::min(newmat.n,i+newmat.ku+1); j++){
00061 newmat(i,j) =std::conj(mat(j,i));
00062 }
00063 }
00064
00065 mat.destroy();
00066 return _(newmat);
00067 }