cirq.apply_channel
High performance evolution under a channel evolution.
cirq.apply_channel(
val: Any,
args: cirq.ApplyChannelArgs
,
default: Union[np.ndarray, TDefault] = RaiseTypeErrorIfNotProvided
) -> Union[np.ndarray, TDefault]
If val
defines an _apply_channel_
method, that method will be
used to apply val
's channel effect to the target tensor. Otherwise, if
val
defines an _apply_unitary_
method, that method will be used to
apply val
s channel effect to the target tensor. Otherwise, if val
returns a non-default channel with cirq.channel
, that channel will be
applied using a generic method. If none of these cases apply, an
exception is raised or the specified default value is returned.
Args |
val
|
The value with a channel to apply to the target.
|
args
|
A mutable cirq.ApplyChannelArgs object describing the target
tensor, available workspace, and left and right axes to operate on.
The attributes of this object will be mutated as part of computing
the result.
|
default
|
What should be returned if val doesn't have a channel. If
not specified, a TypeError is raised instead of returning a default
value.
|
Returns |
If the receiving object is not able to apply a channel,
the specified default value is returned (or a TypeError is raised). If
this occurs, then target_tensor should not have been mutated.
If the receiving object was able to work inline, directly
mutating target_tensor it will return target_tensor . The caller is
responsible for checking if the result is target_tensor .
If the receiving object wrote its output over out_buffer , the
result will be out_buffer . The caller is responsible for
checking if the result is out_buffer (and e.g. swapping
the buffer for the target tensor before the next call).
Note that it is an error for the return object to be either of the
auxiliary buffers, and the method will raise an AssertionError if
this contract is violated.
The receiving object may also write its output over a new buffer
that it created, in which case that new array is returned.
|
Raises |
TypeError
|
val doesn't have a channel and default wasn't specified.
|
ValueError
|
Different left and right shapes of args.target_tensor
selected by left_axes and right_axes or qid_shape(val) doesn't
equal the left and right shapes.
|
AssertionError
|
_apply_channel_ returned an auxiliary buffer.
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2024-06-27 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Missing the information I need"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Too complicated / too many steps"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Out of date"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Samples / code issue"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Other"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Easy to understand"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Solved my problem"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Other"
}]
{"lastModified": "Last updated 2024-06-27 UTC."}
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-06-27 UTC."],[],[]]