Skip to content

Stackoverflow Error with QobjEvo depending on multiplication order #524

@Gavin-Rockwood

Description

@Gavin-Rockwood

Bug Description

There is a stack overflow error depending on the order of scalar and QobjEvo multiplication. I discovered this while trying to write a positive integer power function for QobjEvo objects. I'm not sure if this is an issue with purely SciMLOperators or ifs a bug in QobjEvo.

Code to Reproduce the Bug

a = QobjEvo((qeye(2), (p,t) -> 1))
println("This works, ", 1*a*a*1)
println("This works, ", 1*(a*a))
println("This works, ", (a*a)*1)
println("This does not work, ", 1*(a*a)*1)

Code Output

This works, 
Quantum Object Evo.:   type=Operator()   dims=[2]   size=(2, 2)   ishermitian=true   isconstant=false
ScalarOperator(1) * (ScalarOperator(0.0 + 0.0im) * DiagonalOperator(2 × 2) * ScalarOperator(0.0 + 0.0im) * DiagonalOperator(2 × 2))
This works, 
Quantum Object Evo.:   type=Operator()   dims=[2]   size=(2, 2)   ishermitian=true   isconstant=false
ScalarOperator(1) * (ScalarOperator(0.0 + 0.0im) * DiagonalOperator(2 × 2) * ScalarOperator(0.0 + 0.0im) * DiagonalOperator(2 × 2))
This works, 
Quantum Object Evo.:   type=Operator()   dims=[2]   size=(2, 2)   ishermitian=true   isconstant=false
ScalarOperator(1) * (ScalarOperator(0.0 + 0.0im) * DiagonalOperator(2 × 2) * ScalarOperator(0.0 + 0.0im) * DiagonalOperator(2 × 2))
StackOverflowError:

Stacktrace:
 [1] *(α::ScalarOperator{Int64, SciMLOperators.FilterKwargs{typeof(SciMLOperators.DEFAULT_UPDATE_FUNC), Tuple{}}}, x::UniformScaling{Int64})
   @ SciMLOperators ~/.julia/packages/SciMLOperators/DKrpP/src/scalar.jl:366
 [2] *(α::ScalarOperator{Int64, SciMLOperators.FilterKwargs{typeof(SciMLOperators.DEFAULT_UPDATE_FUNC), Tuple{}}}, x::UniformScaling{Int64})
   @ SciMLOperators ~/.julia/packages/SciMLOperators/DKrpP/src/scalar.jl:369

Expected Behaviour

I would have expected all 4 lines to return the same object.

Your Environment

QuantumToolbox.jl: Quantum Toolbox in Julia
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
Copyright © QuTiP team 2022 and later.
Current admin team:
    Alberto Mercurio and Yi-Te Huang

Package information:
====================================
Julia              Ver. 1.11.1
QuantumToolbox     Ver. 0.34.0
SciMLOperators     Ver. 1.4.0
LinearSolve        Ver. 3.24.0
OrdinaryDiffEqCore Ver. 1.26.2

System information:
====================================
OS       : macOS (arm64-apple-darwin22.4.0)
CPU      : 14 × Apple M4 Pro
Memory   : 48.0 GB
WORD_SIZE: 64
LIBM     : libopenlibm
LLVM     : libLLVM-16.0.6 (ORCJIT, apple-m1)
BLAS     : libopenblas64_.dylib (ilp64)
Threads  : 1 (on 10 virtual cores)

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions