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.
|