# Base

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

## Math Functions

YaoBase.density_fidelityMethod
density_fidelity(ρ1, ρ2)

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

Definition

$F(ρ, σ)^2 = tr(ρσ) + 2 \sqrt{det(ρ)det(σ)}$
source
YaoBase.general_c1_gatesMethod
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.

source
YaoBase.general_controlled_gatesMethod
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.
source
YaoBase.hilbertkronMethod
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.
source
YaoBase.linop2denseMethod
linop2dense([T=ComplexF64], linear_map!::Function, n::Int) -> Matrix

Returns the dense matrix representation given linear map function.

source
YaoBase.purification_fidelityMethod
purification_fidelity(m1::Matrix, m2::Matrix)

Fidelity for mixed states via purification.

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

source

## Constants

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