Performs the operation \(C(t,t^\prime) \rightarrow w C(t,t^\prime)F^\ddagger(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
.
3273 cplx *xtemp, *ftemp, *x0, *f0, *fcc;
3274 xtemp =
new cplx[element_size_];
3275 fcc =
new cplx[element_size_];
3276 assert(ft.size1() == size1_ &&
"ft.size1() == size1_");
3277 assert(ft.nt() >= tstp &&
"ft.nt() >= tstp");
3278 assert(tstp <= nt_&&
"ft.nt() >= tstp");
3279 assert(tstp >= -1&&
"ft.nt() >= tstp");
3281 element_conj<T, LARGESIZE>(size1_, fcc, f0);
3284 for (m = 0; m <= ntau_; m++) {
3285 element_mult<T, LARGESIZE>(size1_, xtemp, x0 + m * element_size_,
3287 element_smul<T, LARGESIZE>(size1_, xtemp, weight);
3288 element_set<T, LARGESIZE>(size1_, x0 + m * element_size_, xtemp);
3291 x0 = retptr(tstp, 0);
3292 for (m = 0; m <= tstp; m++) {
3293 element_conj<T, LARGESIZE>(size1_, fcc, ft.ptr(m));
3294 element_mult<T, LARGESIZE>(size1_, xtemp, x0 + m * element_size_,
3296 element_smul<T, LARGESIZE>(size1_, xtemp, weight);
3297 element_set<T, LARGESIZE>(size1_, x0 + m * element_size_, xtemp);
3299 x0 = tvptr(tstp, 0);
3300 element_conj<T, LARGESIZE>(size1_, fcc, f0);
3301 for (m = 0; m <= ntau_; m++) {
3302 element_mult<T, LARGESIZE>(size1_, xtemp, x0 + m * element_size_,
3304 element_smul<T, LARGESIZE>(size1_, xtemp, weight);
3305 element_set<T, LARGESIZE>(size1_, x0 + m * element_size_, xtemp);
3307 ftemp = ft.ptr(tstp);
3308 element_conj<T, LARGESIZE>(size1_, fcc, ftemp);
3309 x0 = lesptr(0, tstp);
3310 for (m = 0; m <= tstp; m++) {
3311 element_mult<T, LARGESIZE>(size1_, xtemp, x0 + m * element_size_,
3313 element_smul<T, LARGESIZE>(size1_, xtemp, weight);
3314 element_set<T, LARGESIZE>(size1_, x0 + m * element_size_, xtemp);