julia> using LinearAlgebra
julia> U = UpperTriangular(rand(Int,2,2)); S = Symmetric(rand(Int,2,2));
julia> @time U * S;
0.191704 seconds (1.09 M allocations: 55.715 MiB, 6.37% gc time, 99.97% compilation time)
julia> @descend U * S;
[ Info: tracking LinearAlgebra
*(A::AbstractMatrix, B::AbstractMatrix) @ LinearAlgebra ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.12/LinearAlgebra/src/matmul.jl:114
114 function (*)(A::UpperTriangular{Int64, Matrix{Int64}}::AbstractMatrix, B::Symmetric{Int64, Matrix{Int64}}::AbstractMatrix)::Matrix{Int64}
115 TS::Type{Int64} = promote_op(matprod::Core.Const(LinearAlgebra.matprod), eltype(A::UpperTriangular{Int64, Matrix{Int64}})::Type{Int64}, eltype(B::Symmetric{Int64, Matrix{Int64}})::Type{Int64})::Type{Int64}
116 mul!(matprod_dest(A::UpperTriangular{Int64, Matrix{Int64}}, B::Symmetric{Int64, Matrix{Int64}}, TS::Type{Int64})::Matrix{Int64}, A::UpperTriangular{Int64, Matrix{Int64}}, B::Symmetric{Int64, Matrix{Int64}})::Matrix{Int64}
117 end
Select a call to descend into or ↩ to ascend. [q]uit. [b]ookmark.
Toggles: [w]arn, [h]ide type-stable statements, [t]ype annotations, [s]yntax highlight for Source/LLVM/Native, [j]ump to source always.
Show: [S]ource code, [A]ST, [T]yped code, [L]LVM IR, [N]ative code
Actions: [E]dit source code, [R]evise and redisplay
eltype(A::UpperTriangular{Int64, Matrix{Int64}})
eltype(B::Symmetric{Int64, Matrix{Int64}})
promote_op(matprod::Core.Const(LinearAlgebra.matprod), eltype(A::UpperTriangular{Int64, Matrix{Int64}})::Type{Int64}, eltype(B::Symmetric{Int64, Matrix{Int64}})::Type{Int64})
matprod_dest(A::UpperTriangular{Int64, Matrix{Int64}}, B::Symmetric{Int64, Matrix{Int64}}, TS::Type{Int64})
• mul!(matprod_dest(A::UpperTriangular{Int64, Matrix{Int64}}, B::Symmetric{Int64, Matrix{Int64}}, TS::Type{Int64})::Matrix{Int64}, A::UpperTriangular{Int64, Matrix{Int64}}, B::Symmet…
↩
mul!(C, A, B) @ LinearAlgebra ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.12/LinearAlgebra/src/matmul.jl:263
263 mul!(C::Matrix{Int64}, A::UpperTriangular{Int64, Matrix{Int64}}, B::Symmetric{Int64, Matrix{Int64}})::Matrix{Int64} = mul!(C::Matrix{Int64}, A::UpperTriangular{Int64, Matrix{Int64}}, B::Symmetric{Int64, Matrix{Int64}}, true, false)
Select a call to descend into or ↩ to ascend. [q]uit. [b]ookmark.
Toggles: [w]arn, [h]ide type-stable statements, [t]ype annotations, [s]yntax highlight for Source/LLVM/Native, [j]ump to source always.
Show: [S]ource code, [A]ST, [T]yped code, [L]LVM IR, [N]ative code
Actions: [E]dit source code, [R]evise and redisplay
• mul!(C::Matrix{Int64}, A::UpperTriangular{Int64, Matrix{Int64}}, B::Symmetric{Int64, Matrix{Int64}}, true, false)
↩
mul!(C::AbstractMatrix, A::AbstractVecOrMat, B::AbstractVecOrMat, α::Number, β::Number) @ LinearAlgebra ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.12/LinearAlgebra/src/matmul.jl:295
295 mul!(C::Matrix{Int64}::AbstractMatrix, A::UpperTriangular{Int64, Matrix{Int64}}::AbstractVecOrMat, B::Symmetric{Int64, Matrix{Int64}}::AbstractVecOrMat, α::Core.Const(true)::Number, β::Core.Const(false)::Number)::Matrix{Int64} = _mul!(C::Matrix{Int64}, A::UpperTriangular{Int64, Matrix{Int64}}, B::Symmetric{Int64, Matrix{Int64}}, α::Core.Const(true), β::Core.Const(false))
Select a call to descend into or ↩ to ascend. [q]uit. [b]ookmark.
Toggles: [w]arn, [h]ide type-stable statements, [t]ype annotations, [s]yntax highlight for Source/LLVM/Native, [j]ump to source always.
Show: [S]ource code, [A]ST, [T]yped code, [L]LVM IR, [N]ative code
Actions: [E]dit source code, [R]evise and redisplay
• _mul!(C::Matrix{Int64}, A::UpperTriangular{Int64, Matrix{Int64}}, B::Symmetric{Int64, Matrix{Int64}}, α::Core.Const(true), β::Core.Const(false))
↩
ERROR: FieldError: type ConcreteResult has no field `mi`, available fields: `edge`, `effects`, `result`
Stacktrace:
[1] getproperty
@ ./Base.jl:54 [inlined]
[2] process_const_info(interp::Cthulhu.CthulhuInterpreter, thisinfo::Any, argtypes::Vector{Any}, rt::Any, result::Any, optimize::Bool, exct::Any)
@ Cthulhu ~/.julia/packages/Cthulhu/GaSLZ/src/reflection.jl:138
[3] process_info(interp::Cthulhu.CthulhuInterpreter, info::Core.Compiler.CallInfo, argtypes::Vector{Any}, rt::Any, optimize::Bool, exct::Any)
@ Cthulhu ~/.julia/packages/Cthulhu/GaSLZ/src/reflection.jl:203
[4] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/reflection.jl:64
[5] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:559
[6] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:460
[7] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:710
[8] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:460
[9] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:710
[10] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:460
[11] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:710
[12] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:460
[13] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:863
[14] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:863
[15] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:879
[16] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:876
[17] __descend_with_error_handling(args::Any; terminal::Any, kwargs...)
@ Cthulhu ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:263
[18] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:260
[19] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:252
[20] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:244
[21] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:306
[22] top-level scope
@ ~/.julia/packages/Cthulhu/GaSLZ/src/Cthulhu.jl:306
[23] top-level scope
@ REPL[4]:1
julia> versioninfo()
Julia Version 1.12.0-DEV.1542
Commit fe67097b0d2 (2024-11-02 14:48 UTC)
Build Info:
Official https://julialang.org release
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 8 × Intel(R) Core(TM) i5-10310U CPU @ 1.70GHz
WORD_SIZE: 64
LLVM: libLLVM-18.1.7 (ORCJIT, skylake)
Threads: 1 default, 0 interactive, 1 GC (on 8 virtual cores)
Environment:
JULIA_EDITOR = subl
(@v1.12) pkg> st -m Cthulhu
Status `~/.julia/environments/v1.12/Manifest.toml`
[f68482b8] Cthulhu v2.15.2
(@v1.12) pkg> st -m TypedSyntax
Status `~/.julia/environments/v1.12/Manifest.toml`
[d265eb64] TypedSyntax v1.4.2