00001
00003 inline _zhematrix t(const zhematrix& mat)
00004 {
00005 #ifdef CPPL_VERBOSE
00006 std::cerr << "# [MARK] t(const zhematrix&)"
00007 << std::endl;
00008 #endif//CPPL_VERBOSE
00009
00010 zhematrix newmat(mat.N);
00011 for(long i=0; i<newmat.N; i++){ for(long j=0; j<=i; j++){
00012 newmat(i,j) =mat(j,i);
00013 }}
00014
00015 return _(newmat);
00016 }
00017
00018
00020 inline _zgematrix i(const zhematrix& mat)
00021 {
00022 #ifdef CPPL_VERBOSE
00023 std::cerr << "# [MARK] i(const zhematrix&)"
00024 << std::endl;
00025 #endif//CPPL_VERBOSE
00026
00027 zhematrix mat_cp(mat);
00028 zgematrix mat_inv(mat.N,mat.N);
00029 mat_inv.identity();
00030 mat_cp.zhesv(mat_inv);
00031
00032 return _(mat_inv);
00033 }
00034
00038
00039
00041 inline _zhematrix conj(const zhematrix& mat)
00042 {
00043 #ifdef CPPL_VERBOSE
00044 std::cerr << "# [MARK] conj(const zhematrix&)"
00045 << std::endl;
00046 #endif//CPPL_VERBOSE
00047
00048 zhematrix newmat(mat.N);
00049 for(long i=0; i<mat.N; i++){ for(long j=0; j<=i; j++){
00050 newmat(i,j) =std::conj(mat(i,j));
00051 }}
00052
00053 return _(newmat);
00054 }
00055
00056
00058 inline _zhematrix conjt(const zhematrix& mat)
00059 {
00060 #ifdef CPPL_VERBOSE
00061 std::cerr << "# [MARK] conjt(const zhematrix&)"
00062 << std::endl;
00063 #endif//CPPL_VERBOSE
00064
00065 #ifdef CPPL_DEBUG
00066 std::cerr << "[WARNING] t(const zhematrix&)" << std::endl
00067 << "This function call has no effect "
00068 << "since the matrix is symmetric." << std::endl;
00069 #endif//CPPL_DEBUG
00070
00071 zhematrix newmat(mat);
00072 return _(newmat);
00073 }