diff --git a/Project.toml b/Project.toml index e297ded..f07f06d 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "FLOYao" uuid = "6d9310a3-f1d0-41b7-8edb-11c1cf57cd2d" authors = ["janlukas.bosse and contributors"] -version = "1.2.0" +version = "1.2.1" [deps] LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" diff --git a/src/majorana_reg.jl b/src/majorana_reg.jl index f6d40b3..33b7b04 100644 --- a/src/majorana_reg.jl +++ b/src/majorana_reg.jl @@ -42,10 +42,17 @@ Yao.nqudits(reg::MajoranaReg) = size(reg.state, 1) รท 2 Yao.nactive(reg::MajoranaReg) = Yao.nqubits(reg) Yao.nbatch(reg::MajoranaReg) = 1 Yao.nremain(reg::MajoranaReg) = 0 -Base.copy(reg::MajoranaReg) = MajoranaReg(copy(reg.state)) +Yao.state(reg::MajoranaReg) = reg.state Base.eltype(::MajoranaReg{T}) where {T} = T Yao.datatype(::MajoranaReg{T}) where {T} = T -Yao.state(reg::MajoranaReg) = reg.state +Base.copy(reg::MajoranaReg) = MajoranaReg(copy(reg.state)) +Base.similar(reg::MajoranaReg) = MajoranaReg(similar(reg.state)) + +function Base.copyto!(dst::MajoranaReg, src::MajoranaReg) + nqubits(dst) != nqubits(src) && throw(DimensionMismatch("nqubits(dst) = $(nqubits(dst)) != nqubits(src) = $(nqubits(src))")) + copyto!(state(dst), state(src)) +end + function Base.:(==)(lhs::MajoranaReg, rhs::MajoranaReg) return nqubits(lhs) == nqubits(rhs) && state(lhs) == state(rhs) @@ -59,7 +66,7 @@ end # the jupyter cell output function Base.show(io::IO, ::MIME"text/plain", reg::MajoranaReg) println(io, typeof(reg), " with $(Yao.nqubits(reg)) qubits:") - Base.print_array(io, reg.state) + Base.print_array(io, state(reg)) end # Less detailed version that is used e.g. in string interpolations @@ -67,7 +74,6 @@ function Base.show(io::IO, reg::MajoranaReg) print(io, typeof(reg), "($(nqubits(reg)))") end - """ majorana2arrayreg(reg::MajoranaReg)