qml.prod

prod(*ops, do_queue=True, id=None, lazy=True)[source]

Construct an operator which represents the generalized product of the operators provided.

The generalized product operation represents both the tensor product as well as matrix composition. This can be resolved naturally from the wires that the given operators act on.

Parameters

ops (tuple[Operator]) – The operators we would like to multiply

Keyword Arguments
  • do_queue (bool) – determines if the product operator will be queued. Default is True.

  • id (str or None) – id for the product operator. Default is None.

  • lazy=True (bool) – If lazy=False, a simplification will be performed such that when any of the operators is already a product operator, its operands will be used instead.

Returns

the operator representing the product.

Return type

Prod

Note

This operator supports batched operands:

>>> op = qml.prod(qml.RX(np.array([1, 2, 3]), wires=0), qml.PauliX(1))
>>> op.matrix().shape
(3, 4, 4)

But it doesn’t support batching of operators:

>>> op = qml.prod(np.array([qml.RX(0.5, 0), qml.RZ(0.3, 0)]), qml.PauliZ(0))
AttributeError: 'numpy.ndarray' object has no attribute 'wires'

See also

Prod

Example

>>> prod_op = prod(qml.PauliX(0), qml.PauliZ(0))
>>> prod_op
PauliX(wires=[0]) @ PauliZ(wires=[0])
>>> prod_op.matrix()
array([[ 0, -1],
       [ 1,  0]])