Unitaries
Types
QBase.Unitaries
— ModuleQuantum states evolve under unitary transformations. The Unitaries
submodule provides:
- Types and Constructors for unitary operators.
QBase.Unitaries.is_unitary
— Functionis_unitary( U :: Matrix ) :: Bool
Returns true
if matrix U
is unitary. The hermitian adjoint of a unitary matrix is its inverse:
U' * U == I
whereI
is the identity matrix.
A unitary matrix must be square. A DomainError
is thrown if input U
is not square.
QBase.Unitaries.AbstractUnitary
— TypeAbstractUnitary <: AbstractMatrix{Complex{Float64}}
The abstract type representing unitary operators. An AbstractUnitary
cannot be instantiated, it serves as a supertype from which concrete types are derived.
QBase.Unitaries.Unitary
— TypeUnitary( U :: Matrix ) <: AbstractUnitary
Unitary matrices represent the physical evolution of quantum states. The Constructor, Unitary(U)
, throws a DomainError
if the provided matrix, U
is not unitary.
QBase.Unitaries.QubitUnitary
— TypeQubitUnitary( U :: Matrix ) <: AbstractUnitary
Constructs a 2x2 unitary for qubit evolution. Throws a DomainError
if input U
is not of dimension 2x2 or if U
is not unitary.
Constructors
QBase.Unitaries.qubit_rotation
— Functionqubit_rotation( θ :: Real; axis="x" :: String ) :: QubitUnitary
Returns a unitary which performs a qubit rotation along bloch sphere. θ
designates the angle of rotation and axis
("x"
, "y"
, "z"
) designates the cartesian axis about which the qubit is rotated.
QBase.Unitaries.random
— Functionrandom( d :: Int64 ) :: Unitary
Constructs a d x d
random unitary matrix.
Constants
QBase.Unitaries.paulis
— Constantpaulis :: Vector{QubitUnitary}
Returns a vector containing the three qubit pauli matrices, [σx, σy, σz]
.
QBase.Unitaries.σx
— Constantσx :: QubitUnitary
Pauli-X unitary:
julia> Unitaries.σx
2×2 QBase.Unitaries.QubitUnitary:
0.0+0.0im 1.0+0.0im
1.0+0.0im 0.0+0.0im
QBase.Unitaries.σy
— Constantσy :: QubitUnitary
Pauli-Y unitary:
julia> Unitaries.σy
2×2 QBase.Unitaries.QubitUnitary:
0.0+0.0im 0.0-1.0im
0.0+1.0im 0.0+0.0im
QBase.Unitaries.σz
— Constantσz :: QubitUnitary
Pauli-Z unitary:
julia> Unitaries.σz
2×2 QBase.Unitaries.QubitUnitary:
1.0+0.0im 0.0+0.0im
0.0+0.0im -1.0+0.0im