Enum EvalOp

Enum Documentation

enum class sequant::EvalOp

defines types of binary operations that can be performed on two EvalExpr objects.

Values:

enumerator Sum

Represents the sum of two EvalExpr objects. Such as a tensor plus a tensor and a constant plus a constant.

enumerator Product

Represents the product of two EvalExpr objects. Such as tensor times a tensor, a constant times a constant, or a tensor times a constant (in either order).

enumerator Adjoint

Represents the adjoint (conjugate transpose) of one EvalExpr

object. The result equals the bra/ket-swapped, complex-conjugated operand. The IR representation is “structurally binary, lexically

unary”: an Adjoint node holds the bare-label operand as its left child and a Constant(1) sentinel as its right child (so the

FullBinaryNode invariant — every non-leaf has both children — is preserved). Evaluate dispatches on this op_type and only uses the left operand; the right is ignored.

enumerator Power

Represents the element-wise rational power of one tensor-valued EvalExpr object (the evaluation of a TensorPower). Unary like Adjoint: the left child is the operand subtree and the right child is a Constant sentinel holding the rational exponent (see power_exponent()). The node’s expression is a symmetry-free Tensor over the operand’s slots; the result is operand^exponent, element by element.

enumerator Broadcast

Represents the expansion of one EvalExpr object (a summand of a broadcast Sum

under a result head, see is_valid(const

ResultExpr&)) over the head modes it lacks. Unary like

Power: the left child is the operand subtree, a tensor or a scalar, and the right child is a Constant(1) sentinel. The node’s expression is a symmetry-free Tensor over the head’s slots and its canon indices are the head’s indices in slot order; the result is constant along every mode the operand lacks and equals the operand along the others.