SyTen

◆ mult() [1/2]

ATwoOp syten::IPEPS::mult ( AOneOp const &  a,
AOneOp const &  b 
)

Multiplies two applied one-operators such that this is applied first.

If this is acting on the right of b (as defined by isLeft(location, b.location) being false), two additional swap gates (t in the diagram below) at the top and bottom are inserted as well such that the first and third index of the result always correspond to the left site and the second and fourth index always correspond to the right site.

v v
\___ ____/
___(t)___
/ \
| |
.-<-S---<---[ B ]
/ | |
0<-[this] |
| |
\___ ____/
___(t)___
/ \
| |
v v

Note that the swap-gate S takes over the role of the parity operator used in MPS. On the left-hand side, the fuse is projected onto the vacuum sector to close the leg.

References syten::IPEPS::OneOp::aIdx, syten::Basis::flipped(), syten::genIINode(), syten::genSwap(), syten::Tensor< rank >::getBasis(), isLeft(), syten::IPEPS::AOneOp::location, syten::IPEPS::AOneOp::op, SYTEN_WARN_MSG, and syten::IPEPS::OneOp::uIdx.

Referenced by syten::diagonal(), syten::MPS::ParseOperator::distributeF(), syten::IPEPS::AOneOp::operator*(), and syten::IPEPS::ATwoOp::operator*().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: