# qml.s_prod¶

s_prod(scalar, operator, lazy=True, do_queue=True, id=None)[source]

Construct an operator which is the scalar product of the given scalar and operator provided.

Parameters
• scalar (float or complex) – the scale factor being multiplied to the operator.

• operator (Operator) – the operator which will get scaled.

Keyword Arguments
• lazy=True (bool) – If lazy=False and the operator is already a scalar product operator, the scalar provided will simply be combined with the existing scaling factor.

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

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

Returns

The operator representing the scalar product.

Return type

SProd

Note

This operator supports a batched base, a batched coefficient and a combination of both:

>>> op = qml.s_prod(scalar=4, operator=qml.RX([1, 2, 3], wires=0))
>>> qml.matrix(op).shape
(3, 2, 2)
>>> op = qml.s_prod(scalar=[1, 2, 3], operator=qml.RX(1, wires=0))
>>> qml.matrix(op).shape
(3, 2, 2)
>>> op = qml.s_prod(scalar=[4, 5, 6], operator=qml.RX([1, 2, 3], wires=0))
>>> qml.matrix(op).shape
(3, 2, 2)


But it doesn’t support batching of operators:

>>> op = qml.s_prod(scalar=4, operator=[qml.RX(1, wires=0), qml.RX(2, wires=0)])
AttributeError: 'list' object has no attribute 'batch_size'


Example

>>> sprod_op = s_prod(2.0, qml.PauliX(0))
>>> sprod_op
2.0*(PauliX(wires=[0]))
>>> sprod_op.matrix()
array([[ 0., 2.],
[ 2., 0.]])


Using PennyLane

Development

API

Internals