![]() |
Arguments for efficiently performing a channel.
cirq.ApplyChannelArgs(
target_tensor: np.ndarray,
out_buffer: np.ndarray,
auxiliary_buffer0: np.ndarray,
auxiliary_buffer1: np.ndarray,
left_axes: Iterable[int],
right_axes: Iterable[int]
)
A channel performs the mapping
$$
X \rightarrow \sum_i A_i X A_i^\dagger
$$
for operators \(A_i\) that satisfy the normalization condition
$$
\sum_i A_i^\dagger A_i = I.
$$
The receiving object is expected to mutate target_tensor
so that it
contains the density matrix after multiplication, and then return
target_tensor
. Alternatively, if workspace is required,
the receiving object can overwrite out_buffer
with the results
and return out_buffer
. Or, if the receiving object is attempting to
be simple instead of fast, it can create an entirely new array and
return that.
Args | |
---|---|
target_tensor
|
The input tensor that needs to be left and right multiplied and summed representing the effect of the channel. The tensor will have the shape (2, 2, 2, ..., 2). It usually corresponds to a multi-qubit density matrix, with the first n indices corresponding to the rows of the density matrix and the last n indices corresponding to the columns of the density matrix. |
out_buffer
|
Pre-allocated workspace with the same shape and dtype as the target tensor. If buffers are used, the result should end up in this buffer. It is the responsibility of calling code to notice if the result is this buffer. |
auxiliary_buffer0
|
Pre-allocated workspace with the same shape and dtype as the target tensor. |
auxiliary_buffer1
|
Pre-allocated workspace with the same shape and dtype as the target tensor. |
left_axes
|
Which axes to multiply the left action of the channel upon. |
right_axes
|
Which axes to multiply the right action of the channel upon. |
Attributes | |
---|---|
target_tensor
|
The input tensor that needs to be left and right multiplied and summed, representing the effect of the channel. The tensor will have the shape (2, 2, 2, ..., 2). It usually corresponds to a multi-qubit density matrix, with the first n indices corresponding to the rows of the density matrix and the last n indices corresponding to the columns of the density matrix. |
out_buffer
|
Pre-allocated workspace with the same shape and dtype as the target tensor. If buffers are used, the result should end up in this buffer. It is the responsibility of calling code to notice if the result is this buffer. |
auxiliary_buffer0
|
Pre-allocated workspace with the same shape and dtype as the target tensor. |
auxiliary_buffer1
|
Pre-allocated workspace with the same shape and dtype as the target tensor. |
left_axes
|
Which axes to multiply the left action of the channel upon. |
right_axes
|
Which axes to multiply the right action of the channel upon. |