For real tensors, the conjugate operation itself is meaningless, so calling
conj() does not set the is_conj flagLazy Conjugation
In other words, the
is_conj flag doesn't indicate whether the actual values are conjugated, but rather whether the values in memory should be interpreted mathematically differently. When the values are actually conjugated (physically), the flag is false.The naming is confusing, but as a result, both
conj() and conj_physical() will apply the conjugate operation. If you perform a conjugate operation on a tensor that isn't conjugated.Hermitian inner product vs Hadamard product (element wise)

Seonglae Cho