Struct qoqo::operations::HadamardWrapper

source ·
pub struct HadamardWrapper {
    pub internal: Hadamard,
}
Expand description

The Hadamard gate.

.. math:: U = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}

Args: qubit (int): The qubit the unitary gate is applied to.

Fields§

§internal: Hadamard

Internal storage of Hadamard object

Implementations§

source§

impl HadamardWrapper

source

pub fn qubit(&self) -> usize

Return the qubit the operation acts on

Returns: int

source

pub fn global_phase(&self) -> CalculatorFloatWrapper

Return the global phase :math:g of a unitary gate acting on one qubit

Here global_phase is defined by

.. math:: U =e^{i \cdot g}\begin{pmatrix} \alpha_r+i \alpha_i & -\beta_r+i \beta_i \\ \beta_r+i \beta_i & \alpha_r-i\alpha_i \end{pmatrix}

Returns: CalculatorFloat

source

pub fn alpha_r(&self) -> CalculatorFloatWrapper

Return the property alpha_r :math:\alpha_r of a unitary gate acting on one qubit

Here alpha_r is defined by

.. math:: U =e^{i \cdot g}\begin{pmatrix} \alpha_r+i \alpha_i & -\beta_r+i \beta_i \\ \beta_r+i \beta_i & \alpha_r-i\alpha_i \end{pmatrix}

Returns: CalculatorFloat

source

pub fn alpha_i(&self) -> CalculatorFloatWrapper

Return the property alpha_i :math:\alpha_i of a unitary gate acting on one qubit

.. math:: U =e^{i \cdot g}\begin{pmatrix} \alpha_r+i \alpha_i & -\beta_r+i \beta_i \\ \beta_r+i \beta_i & \alpha_r-i\alpha_i \end{pmatrix}

Returns: CalculatorFloat

source

pub fn beta_r(&self) -> CalculatorFloatWrapper

Return the property beta_r :math:\beta_r of a unitary gate acting on one qubit

Here beta_r is defined by

.. math:: U =e^{i \cdot g}\begin{pmatrix} \alpha_r+i \alpha_i & -\beta_r+i \beta_i \\ \beta_r+i \beta_i & \alpha_r-i\alpha_i \end{pmatrix}

Returns: CalculatorFloat

source

pub fn beta_i(&self) -> CalculatorFloatWrapper

Returns the property beta_i :math:\beta_i of a unitary gate acting on one qubit

Here beta_i is defined by

.. math:: U =e^{i \cdot g}\begin{pmatrix} \alpha_r+i \alpha_i & -\beta_r+i \beta_i \\ \beta_r+i \beta_i & \alpha_r-i\alpha_i \end{pmatrix}

Returns: CalculatorFloat

source

pub fn mul(&self, other: &Bound<'_, PyAny>) -> PyResult<SingleQubitGateWrapper>

Multiplies two compatible operations implementing OperateSingleQubitGate.

Does not consume the two operations being multiplied. Only Operations

Args: other - An Operation implementing OperateSingleQubitGate.

Returns: PyResult: Result of the multiplication, i.e. the multiplied single qubit gate.

Example:

from qoqo.operations import RotateZ, RotateX

gate1 =  RotateZ(qubit=0, theta=1)
gate2 = RotateX(qubit=0, theta=1)
multiplied = gate1.mul(gate2)
print("Multiplied gate: ", multiplied)
source

pub fn unitary_matrix(&self) -> PyResult<Py<PyArray2<Complex64>>>

Return unitary matrix of gate.

Returns: np.ndarray

Raises: ValueError: Error symbolic operation cannot return float unitary matrix

Trait Implementations§

source§

impl Clone for HadamardWrapper

source§

fn clone(&self) -> HadamardWrapper

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for HadamardWrapper

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl HasPyGilRef for HadamardWrapper

§

type AsRefTarget = PyCell<HadamardWrapper>

Utility type to make Py::as_ref work.
source§

impl IntoPy<Py<PyAny>> for HadamardWrapper

source§

fn into_py(self, py: Python<'_>) -> PyObject

Performs the conversion.
source§

impl PartialEq for HadamardWrapper

source§

fn eq(&self, other: &HadamardWrapper) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PyClass for HadamardWrapper

§

type Frozen = False

Whether the pyclass is frozen. Read more
source§

impl PyClassImpl for HadamardWrapper

source§

const IS_BASETYPE: bool = false

#[pyclass(subclass)]
source§

const IS_SUBCLASS: bool = false

#[pyclass(extends=…)]
source§

const IS_MAPPING: bool = false

#[pyclass(mapping)]
source§

const IS_SEQUENCE: bool = false

#[pyclass(sequence)]
§

type BaseType = PyAny

Base class
§

type ThreadChecker = SendablePyClass<HadamardWrapper>

This handles following two situations: Read more
§

type Inventory = Pyo3MethodsInventoryForHadamardWrapper

§

type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild

Immutable or mutable
§

type Dict = PyClassDummySlot

Specify this class has #[pyclass(dict)] or not.
§

type WeakRef = PyClassDummySlot

Specify this class has #[pyclass(weakref)] or not.
§

type BaseNativeType = PyAny

The closest native ancestor. This is PyAny by default, and when you declare #[pyclass(extends=PyDict)], it’s PyDict.
source§

fn items_iter() -> PyClassItemsIter

source§

fn doc(py: Python<'_>) -> PyResult<&'static CStr>

Rendered class doc
source§

fn lazy_type_object() -> &'static LazyTypeObject<Self>

source§

fn dict_offset() -> Option<isize>

source§

fn weaklist_offset() -> Option<isize>

source§

impl PyClassNewTextSignature<HadamardWrapper> for PyClassImplCollector<HadamardWrapper>

source§

fn new_text_signature(self) -> Option<&'static str>

source§

impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a HadamardWrapper

§

type Holder = Option<PyRef<'py, HadamardWrapper>>

source§

fn extract( obj: &'a Bound<'py, PyAny>, holder: &'a mut Self::Holder ) -> PyResult<Self>

source§

impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a mut HadamardWrapper

§

type Holder = Option<PyRefMut<'py, HadamardWrapper>>

source§

fn extract( obj: &'a Bound<'py, PyAny>, holder: &'a mut Self::Holder ) -> PyResult<Self>

source§

impl PyTypeInfo for HadamardWrapper

source§

const NAME: &'static str = "Hadamard"

Class name.
source§

const MODULE: Option<&'static str> = ::core::option::Option::None

Module name, if any.
source§

fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject

Returns the PyTypeObject instance for this type.
source§

fn type_object(py: Python<'_>) -> &PyType

👎Deprecated since 0.21.0: PyTypeInfo::type_object will be replaced by PyTypeInfo::type_object_bound in a future PyO3 version
Returns the safe abstraction over the type object.
source§

fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>

Returns the safe abstraction over the type object.
source§

fn is_type_of(object: &PyAny) -> bool

👎Deprecated since 0.21.0: PyTypeInfo::is_type_of will be replaced by PyTypeInfo::is_type_of_bound in a future PyO3 version
Checks if object is an instance of this type or a subclass of this type.
source§

fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type or a subclass of this type.
source§

fn is_exact_type_of(object: &PyAny) -> bool

👎Deprecated since 0.21.0: PyTypeInfo::is_exact_type_of will be replaced by PyTypeInfo::is_exact_type_of_bound in a future PyO3 version
Checks if object is an instance of this type.
source§

fn is_exact_type_of_bound(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of this type.
source§

impl DerefToPyAny for HadamardWrapper

source§

impl Eq for HadamardWrapper

source§

impl StructuralPartialEq for HadamardWrapper

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> DynClone for T
where T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromPyObject<'_> for T
where T: PyClass + Clone,

source§

fn extract_bound(obj: &Bound<'_, PyAny>) -> Result<T, PyErr>

Extracts Self from the bound smart pointer obj. Read more
source§

fn extract(ob: &'py PyAny) -> Result<Self, PyErr>

Extracts Self from the source GIL Ref obj. Read more
source§

impl<'py, T> FromPyObjectBound<'_, 'py> for T
where T: FromPyObject<'py>,

source§

fn from_py_object_bound(ob: Borrowed<'_, 'py, PyAny>) -> Result<T, PyErr>

Extracts Self from the bound smart pointer obj. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> PyErrArguments for T
where T: IntoPy<Py<PyAny>> + Send + Sync,

source§

fn arguments(self, py: Python<'_>) -> Py<PyAny>

Arguments for exception
source§

impl<T> PyTypeCheck for T
where T: PyTypeInfo,

source§

const NAME: &'static str = <T as PyTypeInfo>::NAME

Name of self. This is used in error messages, for example.
source§

fn type_check(object: &Bound<'_, PyAny>) -> bool

Checks if object is an instance of Self, which may include a subtype. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,

source§

impl<T> Ungil for T
where T: Send,