CPPLapack
 All Classes Files Functions Variables Friends
_zgbmatrix-calc.hpp
Go to the documentation of this file.
00001 //=============================================================================
00002 /*! return its transposed zgbmatrix */
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 /*! return its inverse matrix */
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 /*! return its conjugate matrix */
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 /*! return its conjugate transposed zgbmatrix */
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 }
 All Classes Files Functions Variables Friends