Performs the operation \(C(t,t^\prime) \rightarrow w F^\ddagger(t)C(t,t^\prime)\), where \(C(t,t^\prime)\) is the herm_matrix
, \(F(t)\) is a contour function
and \(w\) is a real weight. The operation is performed at given time step tstp
.
956 cplx *xtemp, *ftemp, *x0, *f0, *fcc;
957 xtemp =
new cplx[element_size_];
958 fcc =
new cplx[element_size_];
959 assert(
tstp >= -1 && ft.nt() >=
tstp &&
960 ft.size1() == size1_ && ft.size2() == size2_ &&
961 "tstp >= -1 && ft.nt() >= tstp && ft.size1() == size1_ && ft.size2() == size2_");
964 element_conj<T, LARGESIZE>(size1_, fcc, f0);
967 for (m = 0; m <= ntau_; m++) {
968 element_mult<T, LARGESIZE>(size1_, xtemp, fcc,
969 x0 + m * element_size_);
970 element_smul<T, LARGESIZE>(size1_, xtemp, weight);
971 element_set<T, LARGESIZE>(size1_, x0 + m * element_size_, xtemp);
974 ftemp = ft.ptr(
tstp);
975 element_conj<T, LARGESIZE>(size1_, fcc, ftemp);
976 x0 = retptr(
tstp, 0);
977 for (m = 0; m <=
tstp; m++) {
978 element_mult<T, LARGESIZE>(size1_, xtemp, fcc,
979 x0 + m * element_size_);
980 element_smul<T, LARGESIZE>(size1_, xtemp, weight);
981 element_set<T, LARGESIZE>(size1_, x0 + m * element_size_, xtemp);
984 for (m = 0; m <= ntau_; m++) {
985 element_mult<T, LARGESIZE>(size1_, xtemp, fcc,
986 x0 + m * element_size_);
987 element_smul<T, LARGESIZE>(size1_, xtemp, weight);
988 element_set<T, LARGESIZE>(size1_, x0 + m * element_size_, xtemp);
990 x0 = lesptr(0,
tstp);
991 for (m = 0; m <=
tstp; m++) {
992 element_conj<T, LARGESIZE>(size1_, fcc, ft.ptr(m));
993 element_mult<T, LARGESIZE>(size1_, xtemp, fcc,
994 x0 + m * element_size_);
995 element_smul<T, LARGESIZE>(size1_, xtemp, weight);
996 element_set<T, LARGESIZE>(size1_, x0 + m * element_size_, xtemp);