diff --git a/randommatrices/src/RandomMatrices.jl b/randommatrices/src/RandomMatrices.jl index 048a39f..8f57f4d 100644 --- a/randommatrices/src/RandomMatrices.jl +++ b/randommatrices/src/RandomMatrices.jl @@ -3,11 +3,11 @@ using LinearAlgebra import Base: rand, size using Random: GLOBAL_RNG, AbstractRNG -export rand, size, ContinuousMatrixDistribution +export rand, size, QIContinuousMatrixDistribution -abstract type ContinuousMatrixDistribution; end +abstract type QIContinuousMatrixDistribution; end -rand(c::ContinuousMatrixDistribution) = rand(GLOBAL_RNG, c) +rand(c::QIContinuousMatrixDistribution) = rand(GLOBAL_RNG, c) include("ginibre.jl") include("circular.jl") diff --git a/randommatrices/src/circular.jl b/randommatrices/src/circular.jl index b3b88dd..a882192 100644 --- a/randommatrices/src/circular.jl +++ b/randommatrices/src/circular.jl @@ -1,6 +1,6 @@ export CircularEnsemble, COE, CUE, CSE, CircularRealEnsemble, CircularQuaternionEnsemble, HaarIsometry -struct CircularEnsemble{β} <: ContinuousMatrixDistribution +struct CircularEnsemble{β} <: QIContinuousMatrixDistribution d::Int g::GinibreEnsemble{2} @@ -51,7 +51,7 @@ function rand(rng::AbstractRNG, c::CSE) ur*u*ur'*transpose(u) end -struct CircularRealEnsemble <: ContinuousMatrixDistribution +struct CircularRealEnsemble <: QIContinuousMatrixDistribution d::Int g::GinibreEnsemble{1} @@ -66,7 +66,7 @@ function rand(rng::AbstractRNG, c::CircularRealEnsemble) _qr_fix!(z) end -struct CircularQuaternionEnsemble <: ContinuousMatrixDistribution +struct CircularQuaternionEnsemble <: QIContinuousMatrixDistribution d::Int g::GinibreEnsemble{4} @@ -82,7 +82,7 @@ function rand(rng::AbstractRNG, c::CircularQuaternionEnsemble) end -struct HaarIsometry <: ContinuousMatrixDistribution +struct HaarIsometry <: QIContinuousMatrixDistribution idim::Int odim::Int g::GinibreEnsemble{2} diff --git a/randommatrices/src/ginibre.jl b/randommatrices/src/ginibre.jl index 8f48524..699aa3a 100644 --- a/randommatrices/src/ginibre.jl +++ b/randommatrices/src/ginibre.jl @@ -1,6 +1,6 @@ export GinibreEnsemble -struct GinibreEnsemble{β} <: ContinuousMatrixDistribution +struct GinibreEnsemble{β} <: QIContinuousMatrixDistribution m::Int n::Int diff --git a/randommatrices/src/wigner.jl b/randommatrices/src/wigner.jl index 5c9663f..0c7186c 100644 --- a/randommatrices/src/wigner.jl +++ b/randommatrices/src/wigner.jl @@ -1,6 +1,6 @@ export WignerEnsemble -struct WignerEnsemble{β} <: ContinuousMatrixDistribution +struct WignerEnsemble{β} <: QIContinuousMatrixDistribution d::Int function WignerEnsemble{β}(d::Int) where β diff --git a/randommatrices/src/wishart.jl b/randommatrices/src/wishart.jl index 3778e25..61da29e 100644 --- a/randommatrices/src/wishart.jl +++ b/randommatrices/src/wishart.jl @@ -1,6 +1,6 @@ export WishartEnsemble -struct WishartEnsemble{β, K} <: ContinuousMatrixDistribution +struct WishartEnsemble{β, K} <: QIContinuousMatrixDistribution d::Int function WishartEnsemble{β, K}(d::Int) where {β, K} diff --git a/src/randomqobjects.jl b/src/randomqobjects.jl index ff57d23..bab2ff7 100644 --- a/src/randomqobjects.jl +++ b/src/randomqobjects.jl @@ -2,7 +2,7 @@ export HaarKet, HilbertSchmidtStates, ChoiJamiolkowskiMatrices, HaarPOVM, WishartPOVM, VonNeumannPOVM -struct HaarKet{β} <: ContinuousMatrixDistribution +struct HaarKet{β} <: QIContinuousMatrixDistribution d::Int end @@ -21,7 +21,7 @@ function rand(rng::AbstractRNG, h::HaarKet{1}) end # Random mixed states -struct HilbertSchmidtStates{β, K} <: ContinuousMatrixDistribution +struct HilbertSchmidtStates{β, K} <: QIContinuousMatrixDistribution w::WishartEnsemble d::Int @@ -40,7 +40,7 @@ function rand(rng::AbstractRNG, hs::HilbertSchmidtStates{β, K}) where {β, K} end #Random channels -struct ChoiJamiolkowskiMatrices{β, K} <: ContinuousMatrixDistribution +struct ChoiJamiolkowskiMatrices{β, K} <: QIContinuousMatrixDistribution w::WishartEnsemble idim::Int odim::Int @@ -77,7 +77,7 @@ end # Random POVMs implemented according to # https://arxiv.org/pdf/1902.04751.pdf -abstract type AbstractHaarPOVM <: ContinuousMatrixDistribution +abstract type AbstractHaarPOVM <: QIContinuousMatrixDistribution end struct HaarPOVM{N} <: AbstractHaarPOVM @@ -114,7 +114,7 @@ function rand(rng::AbstractRNG, c::VonNeumannPOVM) POVMMeasurement([proj(V[:, i]) for i=1:c.d]) end -struct WishartPOVM{V} <: ContinuousMatrixDistribution +struct WishartPOVM{V} <: QIContinuousMatrixDistribution idim::Int odim::Int c::Vector{WishartEnsemble}