-
Notifications
You must be signed in to change notification settings - Fork 40
Open
Description
When working with symbolic variables, they combine almost seamlessly with the quantum optics operators (nice!). But when printing the operator, an error occurs.
MWE:
using Symbolics
using QuantumOptics
@variables α
ba = FockBasis(2)
a = dense(destroy(ba))
H1 = α * dagger(a) * aProducing:
ERROR: MethodError: no method matching round(::Num, ::RoundingMode{:Nearest})
This error has been manually thrown, explicitly, so the method may exist but be intentionally marked as unimplemented.
Closest candidates are:
round(::Real, ::RoundingMode; digits, sigdigits, base)
@ Base floatfuncs.jl:50
round(::Type{T}, ::Any, ::RoundingMode) where T>:Missing
@ Base missing.jl:148
round(::Type{T}, ::Any, ::RoundingMode) where T
@ Base rounding.jl:479
...
Stacktrace:
[1] round(x::Num, r::RoundingMode{:Nearest}; digits::Nothing, sigdigits::Nothing, base::Nothing)
@ Base .\floatfuncs.jl:56
[2] round(x::Num, r::RoundingMode{:Nearest})
@ Base .\floatfuncs.jl:50
[3] _round_invstep(x::Num, invstep::Num, r::RoundingMode{:Nearest})
@ Base .\floatfuncs.jl:77
[4] _round_digits(x::Num, r::RoundingMode{:Nearest}, digits::Int32, base::Int64)
@ Base .\floatfuncs.jl:115
[5] round(x::Num, r::RoundingMode{:Nearest}; digits::Int32, sigdigits::Nothing, base::Nothing)
@ Base .\floatfuncs.jl:68
[6] round(z::Complex{Num}, rr::RoundingMode{:Nearest}, ri::RoundingMode{:Nearest}; kwargs::@Kwargs{digits::Int32})
@ Base .\complex.jl:1113
[7] (::Base.Broadcast.var"#29#30"{@Kwargs{digits::Int32}, typeof(round)})(args::Complex{Num})
@ Base.Broadcast .\broadcast.jl:1306
[8] _broadcast_getindex_evalf
@ .\broadcast.jl:673 [inlined]
[9] _broadcast_getindex
@ .\broadcast.jl:646 [inlined]
[10] getindex
@ .\broadcast.jl:605 [inlined]
[11] copy(bc::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{2}, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, Base.Broadcast.var"#29#30"{@Kwargs{digits::Int32}, typeof(round)}, Tuple{Matrix{Complex{Num}}}})
@ Base.Broadcast .\broadcast.jl:906
[12] materialize
@ .\broadcast.jl:867 [inlined]
[13] show(stream::IOContext{Base.TTY}, x::Operator{FockBasis{Int64}, FockBasis{Int64}, Matrix{Complex{Num}}})
@ QuantumOpticsBase C:\Users\mabun\.julia\packages\QuantumOpticsBase\bXZS2\src\printing.jl:79
[14] show(io::IOContext{Base.TTY}, ::MIME{Symbol("text/plain")}, x::Operator{FockBasis{Int64}, FockBasis{Int64}, Matrix{Complex{Num}}})
@ Base.Multimedia .\multimedia.jl:47
[15] (::REPL.var"#68#69"{REPL.REPLDisplay{REPL.LineEditREPL}, MIME{Symbol("text/plain")}, Base.RefValue{Any}})(io::Any)
@ REPL C:\Users\mabun\.julia\juliaup\julia-1.11.1+0.x64.w64.mingw32\share\julia\stdlib\v1.11\REPL\src\REPL.jl:367
[16] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
@ REPL C:\Users\mabun\.julia\juliaup\julia-1.11.1+0.x64.w64.mingw32\share\julia\stdlib\v1.11\REPL\src\REPL.jl:661
[17] display(d::REPL.REPLDisplay, mime::MIME{Symbol("text/plain")}, x::Any)
@ REPL C:\Users\mabun\.julia\juliaup\julia-1.11.1+0.x64.w64.mingw32\share\julia\stdlib\v1.11\REPL\src\REPL.jl:353
[18] display(d::REPL.REPLDisplay, x::Any)
@ REPL C:\Users\mabun\.julia\juliaup\julia-1.11.1+0.x64.w64.mingw32\share\julia\stdlib\v1.11\REPL\src\REPL.jl:372
[19] display(x::Any)
@ Base.Multimedia .\multimedia.jl:340
[20] #invokelatest#2
@ .\essentials.jl:1055 [inlined]
[21] invokelatest
@ .\essentials.jl:1052 [inlined]
[22] (::VSCodeServer.var"#69#74"{Bool, Bool, Bool, Module, String, Int64, Int64, String, VSCodeServer.ReplRunCodeRequestParams})()
@ VSCodeServer c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\eval.jl:237
[23] withpath(f::VSCodeServer.var"#69#74"{Bool, Bool, Bool, Module, String, Int64, Int64, String, VSCodeServer.ReplRunCodeRequestParams}, path::String)
@ VSCodeServer c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\repl.jl:276
[24] (::VSCodeServer.var"#68#73"{Bool, Bool, Bool, Module, String, Int64, Int64, String, VSCodeServer.ReplRunCodeRequestParams})()
@ VSCodeServer c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\eval.jl:179
[25] hideprompt(f::VSCodeServer.var"#68#73"{Bool, Bool, Bool, Module, String, Int64, Int64, String, VSCodeServer.ReplRunCodeRequestParams})
@ VSCodeServer c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\repl.jl:38
[26] #67
@ c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\eval.jl:150 [inlined]
[27] with_logstate(f::VSCodeServer.var"#67#72"{Bool, Bool, Bool, Module, String, Int64, Int64, String, VSCodeServer.ReplRunCodeRequestParams}, logstate::Base.CoreLogging.LogState)
@ Base.CoreLogging .\logging\logging.jl:522
[28] with_logger
@ .\logging\logging.jl:632 [inlined]
[29] (::VSCodeServer.var"#66#71"{VSCodeServer.ReplRunCodeRequestParams})()
@ VSCodeServer c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\eval.jl:263
[30] #invokelatest#2
@ .\essentials.jl:1055 [inlined]
[31] invokelatest(::Any)
@ Base .\essentials.jl:1052
[32] (::VSCodeServer.var"#64#65")()
@ VSCodeServer c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\eval.jl:34The error occurs due to the show function for dense operators:
function show(stream::IO, x::DenseOpType)
summary(stream, x)
print(stream, "\n")
if !_std_order
if !haskey(stream, :compact)
stream = IOContext(stream, :compact => true)
end
Base.print_array(stream, round.(x.data; digits=machineprecorder))
else
showarray_stdord(stream, round.(x.data; digits=machineprecorder), x.basis_l.shape, x.basis_r.shape, false, header=false)
end
endwhere round.(x.data; digits=machineprecorder) throws an error when the data is symbolic.
A similar error occurs for a non-dense operator:
a = destroy(ba)
H1 = α * dagger(a) * agiving:
Closest candidates are:
round(::Real, ::RoundingMode; digits, sigdigits, base)
@ Base floatfuncs.jl:50
round(::Type{T}, ::Any, ::RoundingMode) where T>:Missing
@ Base missing.jl:148
round(::Type{T}, ::Any, ::RoundingMode) where T
@ Base rounding.jl:479
...
Stacktrace:
[1] round(x::Num, r::RoundingMode{:Nearest}; digits::Nothing, sigdigits::Nothing, base::Nothing)
@ Base .\floatfuncs.jl:56
[2] round(x::Num, r::RoundingMode{:Nearest})
@ Base .\floatfuncs.jl:50
[3] _round_invstep(x::Num, invstep::Num, r::RoundingMode{:Nearest})
@ Base .\floatfuncs.jl:77
[4] _round_digits(x::Num, r::RoundingMode{:Nearest}, digits::Int32, base::Int64)
@ Base .\floatfuncs.jl:115
[5] round(x::Num, r::RoundingMode{:Nearest}; digits::Int32, sigdigits::Nothing, base::Nothing)
@ Base .\floatfuncs.jl:68
[6] round(z::Complex{Num}, rr::RoundingMode{:Nearest}, ri::RoundingMode{:Nearest}; kwargs::@Kwargs{digits::Int32})
@ Base .\complex.jl:1113
[7] (::Base.Broadcast.var"#29#30"{@Kwargs{digits::Int32}, typeof(round)})(args::Complex{Num})
@ Base.Broadcast .\broadcast.jl:1306
[8] _noshapecheck_map
@ C:\Users\mabun\.julia\juliaup\julia-1.11.1+0.x64.w64.mingw32\share\julia\stdlib\v1.11\SparseArrays\src\higherorderfns.jl:180 [inlined]
[9] copy(bc::Base.Broadcast.Broadcasted{SparseArrays.HigherOrderFns.SparseMatStyle, Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, Base.Broadcast.var"#29#30"{@Kwargs{digits::Int32}, typeof(round)}, Tuple{SparseArrays.SparseMatrixCSC{Complex{Num}, Int64}}})
@ SparseArrays.HigherOrderFns C:\Users\mabun\.julia\juliaup\julia-1.11.1+0.x64.w64.mingw32\share\julia\stdlib\v1.11\SparseArrays\src\higherorderfns.jl:195
[10] materialize
@ .\broadcast.jl:867 [inlined]
[11] show(stream::IOContext{Base.TTY}, x::Operator{FockBasis{Int64}, FockBasis{Int64}, SparseArrays.SparseMatrixCSC{Complex{Num}, Int64}})
@ QuantumOpticsBase C:\Users\mabun\.julia\packages\QuantumOpticsBase\bXZS2\src\printing.jl:94
[12] show(io::IOContext{Base.TTY}, ::MIME{Symbol("text/plain")}, x::Operator{FockBasis{Int64}, FockBasis{Int64}, SparseArrays.SparseMatrixCSC{Complex{Num}, Int64}})
@ Base.Multimedia .\multimedia.jl:47
[13] (::REPL.var"#68#69"{REPL.REPLDisplay{REPL.LineEditREPL}, MIME{Symbol("text/plain")}, Base.RefValue{Any}})(io::Any)
@ REPL C:\Users\mabun\.julia\juliaup\julia-1.11.1+0.x64.w64.mingw32\share\julia\stdlib\v1.11\REPL\src\REPL.jl:367
[14] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
@ REPL C:\Users\mabun\.julia\juliaup\julia-1.11.1+0.x64.w64.mingw32\share\julia\stdlib\v1.11\REPL\src\REPL.jl:661
[15] display(d::REPL.REPLDisplay, mime::MIME{Symbol("text/plain")}, x::Any)
@ REPL C:\Users\mabun\.julia\juliaup\julia-1.11.1+0.x64.w64.mingw32\share\julia\stdlib\v1.11\REPL\src\REPL.jl:353
[16] display(d::REPL.REPLDisplay, x::Any)
@ REPL C:\Users\mabun\.julia\juliaup\julia-1.11.1+0.x64.w64.mingw32\share\julia\stdlib\v1.11\REPL\src\REPL.jl:372
[17] display(x::Any)
@ Base.Multimedia .\multimedia.jl:340
[18] #invokelatest#2
@ .\essentials.jl:1055 [inlined]
[19] invokelatest
@ .\essentials.jl:1052 [inlined]
[20] (::VSCodeServer.var"#69#74"{Bool, Bool, Bool, Module, String, Int64, Int64, String, VSCodeServer.ReplRunCodeRequestParams})()
@ VSCodeServer c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\eval.jl:237
[21] withpath(f::VSCodeServer.var"#69#74"{Bool, Bool, Bool, Module, String, Int64, Int64, String, VSCodeServer.ReplRunCodeRequestParams}, path::String)
@ VSCodeServer c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\repl.jl:276
[22] (::VSCodeServer.var"#68#73"{Bool, Bool, Bool, Module, String, Int64, Int64, String, VSCodeServer.ReplRunCodeRequestParams})()
@ VSCodeServer c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\eval.jl:179
[23] hideprompt(f::VSCodeServer.var"#68#73"{Bool, Bool, Bool, Module, String, Int64, Int64, String, VSCodeServer.ReplRunCodeRequestParams})
@ VSCodeServer c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\repl.jl:38
[24] #67
@ c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\eval.jl:150 [inlined]
[25] with_logstate(f::VSCodeServer.var"#67#72"{Bool, Bool, Bool, Module, String, Int64, Int64, String, VSCodeServer.ReplRunCodeRequestParams}, logstate::Base.CoreLogging.LogState)
@ Base.CoreLogging .\logging\logging.jl:522
[26] with_logger
@ .\logging\logging.jl:632 [inlined]
[27] (::VSCodeServer.var"#66#71"{VSCodeServer.ReplRunCodeRequestParams})()
@ VSCodeServer c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\eval.jl:263
[28] #invokelatest#2
@ .\essentials.jl:1055 [inlined]
[29] invokelatest(::Any)
@ Base .\essentials.jl:1052
[30] (::VSCodeServer.var"#64#65")()
@ VSCodeServer c:\Users\mabun\.vscode\extensions\julialang.language-julia-1.127.2\scripts\packages\VSCodeServer\src\eval.jl:34Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels