Base

Base

The Base module of Yao is defined in YaoBase.jl, it provides:

Math Functions

YaoBase.autostaticMethod.
autostatic(A)

Staticize dynamic array A by a constant STATIC_THRESHOLD.

batch_normalize

normalize a batch of vector.

batch_normalize!(matrix)

normalize a batch of vector.

density_fidelity(ρ1, ρ2)

General fidelity (including mixed states) between two density matrix for qubits.

Definition

\[F(ρ, σ)^2 = tr(ρσ) + 2 \sqrt{det(ρ)det(σ)}\]
general_c1_gates(num_bit::Int, projector::AbstractMatrix, cbit::Int, gates::Vector{AbstractMatrix}, locs::Vector{Int}) -> AbstractMatrix

general (low performance) construction method for control gate on different lines.

general_controlled_gates(num_bit::Int, projectors::Vector{Tp}, cbits::Vector{Int}, gates::Vector{AbstractMatrix}, locs::Vector{Int}) -> AbstractMatrix

Return general multi-controlled gates in hilbert space of num_bit qubits,

  • projectors are often chosen as P0 and P1 for inverse-Control and Control at specific position.
  • cbits should have the same length as projectors, specifing the controling positions.
  • gates are a list of controlled single qubit gates.
  • locs should have the same length as gates, specifing the gates positions.
hilbertkron(num_bit::Int, gates::Vector{AbstractMatrix}, locs::Vector{Int}) -> AbstractMatrix

Return general kronecher product form of gates in Hilbert space of num_bit qubits.

  • gates are a list of matrices.
  • start_locs should have the same length as gates, specifing the gates starting positions.
linop2dense([T=ComplexF64], linear_map!::Function, n::Int) -> Matrix

Returns the dense matrix representation given linear map function.

YaoBase.nucnormMethod.

nucnorm(m)

Computes the nuclear norm of a matrix m.

pure_state_fidelity(v1::Vector, v2::Vector)

fidelity for pure states.

purification_fidelity(m1::Matrix, m2::Matrix)

Fidelity for mixed states via purification.

Reference: http://iopscience.iop.org/article/10.1088/1367-2630/aa6a4b/meta

rand_hermitian(N::Int) -> Matrix

Random hermitian matrix.

rand_unitary(N::Int) -> Matrix

Random unitary matrix.

YaoBase.rotmatMethod.
rotmat(M::AbstractMatrix, θ::Real)

Returns rotated M: $exp(-\frac{imθ}{2} M)$.

YaoBase.trnormMethod.

trnorm(m)

Computes the trace norm of a matrix m.

General Properties

ishermitian(op) -> Bool

check if this operator is hermitian.

YaoBase.iscommuteMethod.
iscommute(ops...) -> Bool

check if operators are commute.

isreflexive(op) -> Bool

check if this operator is reflexive.

YaoBase.isunitaryMethod.
isunitary(op) -> Bool

check if this operator is a unitary operator.

Error and Exceptions

QubitMismatchError <: Exception

Qubit number mismatch error when applying a Block to a Register or concatenating Blocks.

islocs_conflict(locs) -> Bool

Check if the input locations has conflicts.

islocs_inbounds(n, locs) -> Bool

Check if the input locations are inside given bounds n.

@assert_locs_inbounds <number of total qubits> <locations list> [<msg>]

Assert if all the locations are inbounds.

@assert_locs_safe <number of total qubits> <locations list> [<msg>]

Assert if all the locations are: - inbounds. - do not have any conflict.

Constants

defined constants
$CNOT$
$H$
$I2$
$P0$
$P1$
$Pd$
$Pu$
$S$
$SWAP$
$Sdag$
$T$
$Tdag$
$Toffoli$
$X$
$Y$
$Z$