Package evaluation to test MooncakeSparse on Julia 1.12.7-DEV.45 (88b38b4bc0*) started at 2026-06-24T16:21:16.704 ################################################################################ # Set-up # Installing PkgEval dependencies (TestEnv)... Activating project at `~/.julia/environments/v1.12` Set-up completed after 9.45s ################################################################################ # Installation # Installing MooncakeSparse... Resolving package versions... Installed ArnoldiMethod ────── v0.4.0 Installed Inflate ──────────── v0.1.5 Installed ADTypes ──────────── v1.22.1 Installed OrderedCollections ─ v1.8.2 Installed StaticArraysCore ─── v1.4.4 Installed MooncakeSparse ───── v0.2.0 Installed Preferences ──────── v1.5.2 Installed PrecompileTools ──── v1.3.4 Installed StaticArrays ─────── v1.9.18 Installed Statistics ───────── v1.11.1 Installed DataStructures ───── v0.19.5 Installed ChainRulesCore ───── v1.26.1 Installed ExprTools ────────── v0.1.10 Installed MacroTools ───────── v0.5.16 Installed MistyClosures ────── v2.1.0 Installed Compat ───────────── v4.18.1 Installed Mooncake ─────────── v0.5.33 Installed Graphs ───────────── v1.14.0 Installed SimpleTraits ─────── v0.9.6 Installed DispatchDoctor ───── v0.4.28 Updating `~/.julia/environments/v1.12/Project.toml` [85e08d05] + MooncakeSparse v0.2.0 Updating `~/.julia/environments/v1.12/Manifest.toml` [47edcb42] + ADTypes v1.22.1 [ec485272] + ArnoldiMethod v0.4.0 [d360d2e6] + ChainRulesCore v1.26.1 [34da2185] + Compat v4.18.1 [864edb3b] + DataStructures v0.19.5 [8d63f2c5] + DispatchDoctor v0.4.28 [e2ba6199] + ExprTools v0.1.10 [86223c79] + Graphs v1.14.0 [d25df0c9] + Inflate v0.1.5 [1914dd2f] + MacroTools v0.5.16 [dbe65cb8] + MistyClosures v2.1.0 [da2b9cff] + Mooncake v0.5.33 [85e08d05] + MooncakeSparse v0.2.0 ⌅ [bac558e1] + OrderedCollections v1.8.2 [aea7be01] + PrecompileTools v1.3.4 [21216c6a] + Preferences v1.5.2 [699a6c99] + SimpleTraits v0.9.6 [90137ffa] + StaticArrays v1.9.18 [1e83bf80] + StaticArraysCore v1.4.4 [10745b16] + Statistics v1.11.1 [56f22d72] + Artifacts v1.11.0 [2a0f44e3] + Base64 v1.11.0 [ade2ca70] + Dates v1.11.0 [b77e0a4c] + InteractiveUtils v1.11.0 [ac6e5ff7] + JuliaSyntaxHighlighting v1.12.0 [8f399da3] + Libdl v1.11.0 [37e2e46d] + LinearAlgebra v1.12.0 [56ddb016] + Logging v1.11.0 [d6f4376e] + Markdown v1.11.0 [de0858da] + Printf v1.11.0 [9a3f8284] + Random v1.11.0 [ea8e919c] + SHA v0.7.0 [9e88b42a] + Serialization v1.11.0 [2f01184e] + SparseArrays v1.12.0 [f489334b] + StyledStrings v1.11.0 [fa267f1f] + TOML v1.0.3 [8dfed614] + Test v1.11.0 [cf7118a7] + UUIDs v1.11.0 [4ec0a83e] + Unicode v1.11.0 [e66e0078] + CompilerSupportLibraries_jll v1.3.0+1 [4536629a] + OpenBLAS_jll v0.3.29+0 [bea87d4a] + SuiteSparse_jll v7.8.3+2 [8e850b90] + libblastrampoline_jll v5.15.0+0 Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated -m` Installation completed after 6.85s ################################################################################ # Precompilation # Precompiling PkgEval dependencies... Precompiling packages... 5508.1 ms ✓ TestEnv 1 dependency successfully precompiled in 6 seconds. 26 already precompiled. 24 dependencies precompiled but different versions are currently loaded (ArgTools, Base64, Dates, Downloads, JuliaSyntaxHighlighting, LibCURL, LibCURL_jll, LibGit2, LibGit2_jll, LibSSH2_jll, Logging, Markdown, MozillaCACerts_jll, NetworkOptions, OpenSSL_jll, Pkg, Printf, StyledStrings, TOML, Tar, UUIDs, Zlib_jll, nghttp2_jll and p7zip_jll). Restart julia to access the new versions. Otherwise, 1 dependent of these packages may trigger further precompilation to work with the unexpected versions. Precompiling package dependencies... Precompiling packages... 4252.4 ms ✓ OrderedCollections 743.8 ms ✓ MistyClosures 1004.6 ms ✓ Inflate 1121.0 ms ✓ Statistics 848.4 ms ✓ ExprTools 7375.7 ms ✓ MacroTools 1464.9 ms ✓ ADTypes 1134.2 ms ✓ StaticArraysCore 4514.8 ms ✓ Compat 1159.3 ms ✓ Preferences 3617.0 ms ✓ DataStructures 1384.9 ms ✓ Statistics → SparseArraysExt 3140.5 ms ✓ SimpleTraits 865.8 ms ✓ Compat → CompatLinearAlgebraExt 1029.3 ms ✓ PrecompileTools 6883.2 ms ✓ DispatchDoctor 5310.2 ms ✓ ChainRulesCore 7087.1 ms ✓ Aqua 18051.6 ms ✓ StaticArrays 4215.6 ms ✓ ChainRulesCore → ChainRulesCoreSparseArraysExt 872.8 ms ✓ ADTypes → ADTypesChainRulesCoreExt 1444.6 ms ✓ DispatchDoctor → DispatchDoctorChainRulesCoreExt 4436.1 ms ✓ StaticArrays → StaticArraysChainRulesCoreExt 1385.0 ms ✓ StaticArrays → StaticArraysStatisticsExt 6834.9 ms ✓ ArnoldiMethod 13933.2 ms ✓ Graphs 255785.5 ms ✓ Mooncake 23719.5 ms ✓ MooncakeSparse 28 dependencies successfully precompiled in 384 seconds. 31 already precompiled. 24 dependencies precompiled but different versions are currently loaded (ArgTools, Base64, Dates, Downloads, JuliaSyntaxHighlighting, LibCURL, LibCURL_jll, LibGit2, LibGit2_jll, LibSSH2_jll, Logging, Markdown, MozillaCACerts_jll, NetworkOptions, OpenSSL_jll, Pkg, Printf, StyledStrings, TOML, Tar, UUIDs, Zlib_jll, nghttp2_jll and p7zip_jll). Restart julia to access the new versions. Otherwise, 20 dependents of these packages may trigger further precompilation to work with the unexpected versions. Precompilation completed after 408.34s ################################################################################ # Testing # Testing MooncakeSparse Status `/tmp/jl_KDE1c7/Project.toml` [4c88cf16] Aqua v0.8.16 [da2b9cff] Mooncake v0.5.33 [85e08d05] MooncakeSparse v0.2.0 [37e2e46d] LinearAlgebra v1.12.0 [9a3f8284] Random v1.11.0 [2f01184e] SparseArrays v1.12.0 [8dfed614] Test v1.11.0 Status `/tmp/jl_KDE1c7/Manifest.toml` [47edcb42] ADTypes v1.22.1 [4c88cf16] Aqua v0.8.16 [ec485272] ArnoldiMethod v0.4.0 [d360d2e6] ChainRulesCore v1.26.1 [34da2185] Compat v4.18.1 [864edb3b] DataStructures v0.19.5 [8d63f2c5] DispatchDoctor v0.4.28 [e2ba6199] ExprTools v0.1.10 [86223c79] Graphs v1.14.0 [d25df0c9] Inflate v0.1.5 [1914dd2f] MacroTools v0.5.16 [dbe65cb8] MistyClosures v2.1.0 [da2b9cff] Mooncake v0.5.33 [85e08d05] MooncakeSparse v0.2.0 ⌅ [bac558e1] OrderedCollections v1.8.2 [aea7be01] PrecompileTools v1.3.4 [21216c6a] Preferences v1.5.2 [699a6c99] SimpleTraits v0.9.6 [90137ffa] StaticArrays v1.9.18 [1e83bf80] StaticArraysCore v1.4.4 [10745b16] Statistics v1.11.1 [0dad84c5] ArgTools v1.1.2 [56f22d72] Artifacts v1.11.0 [2a0f44e3] Base64 v1.11.0 [ade2ca70] Dates v1.11.0 [f43a241f] Downloads v1.7.0 [7b1f6079] FileWatching v1.11.0 [b77e0a4c] InteractiveUtils v1.11.0 [ac6e5ff7] JuliaSyntaxHighlighting v1.12.0 [b27032c2] LibCURL v0.6.4 [76f85450] LibGit2 v1.11.0 [8f399da3] Libdl v1.11.0 [37e2e46d] LinearAlgebra v1.12.0 [56ddb016] Logging v1.11.0 [d6f4376e] Markdown v1.11.0 [ca575930] NetworkOptions v1.3.0 [44cfe95a] Pkg v1.12.1 [de0858da] Printf v1.11.0 [9a3f8284] Random v1.11.0 [ea8e919c] SHA v0.7.0 [9e88b42a] Serialization v1.11.0 [2f01184e] SparseArrays v1.12.0 [f489334b] StyledStrings v1.11.0 [fa267f1f] TOML v1.0.3 [a4e569a6] Tar v1.10.0 [8dfed614] Test v1.11.0 [cf7118a7] UUIDs v1.11.0 [4ec0a83e] Unicode v1.11.0 [e66e0078] CompilerSupportLibraries_jll v1.3.0+1 [deac9b47] LibCURL_jll v8.15.0+0 [e37daf67] LibGit2_jll v1.9.0+0 [29816b5a] LibSSH2_jll v1.11.3+1 [14a3606d] MozillaCACerts_jll v2025.11.4 [4536629a] OpenBLAS_jll v0.3.29+0 [458c3c95] OpenSSL_jll v3.5.6+0 [bea87d4a] SuiteSparse_jll v7.8.3+2 [83775a58] Zlib_jll v1.3.1+2 [8e850b90] libblastrampoline_jll v5.15.0+0 [8e850ede] nghttp2_jll v1.64.0+1 [3f19e933] p7zip_jll v17.7.0+0 Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. Testing Running tests... Test Summary: | Pass Total Time Code Quality (Aqua.jl) | 10 10 2m46.4s lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, args::Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [9] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [10] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [11] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _7::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [12] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [13] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [14] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [15] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 8}}, args::Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [16] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [17] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [18] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}) @ Base.Experimental ./:0 [19] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [20] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [21] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [22] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Adjoint{Float64, Matrix{Float64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Nothing, Tuple{var"#6#7", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Adjoint{Float64, Matrix{Float64}}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Adjoint{Float64, Matrix{Float64}}, Tuple{Int64, Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Adjoint{Float64, Matrix{Float64}}, Adjoint{Float64, Matrix{Float64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [23] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [24] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [25] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [26] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [27] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [28] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [29] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [30] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [31] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [32] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [33] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _7::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 8}}, args::Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [15] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [16] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [17] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ Base.Experimental ./:0 [18] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [19] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [20] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [21] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Matrix{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Matrix{Float64}}, Nothing, Tuple{var"#6#7", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Matrix{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Matrix{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Matrix{Float64}, Tuple{Int64, Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Matrix{Float64}, Matrix{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [22] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [23] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [24] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [25] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [26] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, args::Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [9] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [10] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [11] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _7::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [12] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [13] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [14] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [15] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}}, false, 8}}, args::Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [16] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [17] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [18] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ Base.Experimental ./:0 [19] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [20] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [21] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [22] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Vector{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Vector{Float64}}, Nothing, Tuple{var"#6#7", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Vector{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Vector{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Vector{Float64}, Tuple{Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Vector{Float64}, Vector{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [23] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [24] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [25] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [26] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [27] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [28] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [29] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [30] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [31] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [32] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [33] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _7::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 8}}, args::Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [15] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [16] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [17] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}) @ Base.Experimental ./:0 [18] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [19] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [20] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [21] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Adjoint{Float64, Matrix{Float64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Nothing, Tuple{var"#6#7", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Adjoint{Float64, Matrix{Float64}}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Adjoint{Float64, Matrix{Float64}}, Tuple{Int64, Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Adjoint{Float64, Matrix{Float64}}, Adjoint{Float64, Matrix{Float64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [22] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [23] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [24] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [25] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [26] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _7::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 8}}, args::Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [15] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [16] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [17] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ Base.Experimental ./:0 [18] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [19] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [20] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [21] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Matrix{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Matrix{Float64}}, Nothing, Tuple{var"#6#7", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Matrix{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Matrix{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Matrix{Float64}, Tuple{Int64, Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Matrix{Float64}, Matrix{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [22] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [23] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [24] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [25] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [26] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _7::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}}, false, 8}}, args::Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [15] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [16] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [17] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ Base.Experimental ./:0 [18] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [19] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [20] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [21] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Vector{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Vector{Float64}}, Nothing, Tuple{var"#6#7", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Vector{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Vector{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Vector{Float64}, Tuple{Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Vector{Float64}, Vector{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [22] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [23] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [24] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [25] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [26] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _7::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [15] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [16] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}) @ Base.Experimental ./:0 [17] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [18] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [19] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [20] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Adjoint{Float64, Matrix{Float64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Nothing, Tuple{var"#6#7", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Adjoint{Float64, Matrix{Float64}}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Adjoint{Float64, Matrix{Float64}}, Tuple{Int64, Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Adjoint{Float64, Matrix{Float64}}, Adjoint{Float64, Matrix{Float64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [21] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [22] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [23] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [24] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [25] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [26] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [27] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [28] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [29] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [30] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [31] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _7::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [15] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [16] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ Base.Experimental ./:0 [17] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [18] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [19] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [20] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Matrix{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Matrix{Float64}}, Nothing, Tuple{var"#6#7", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Matrix{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Matrix{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Matrix{Float64}, Tuple{Int64, Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Matrix{Float64}, Matrix{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [21] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [22] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [23] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [24] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [25] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [26] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [27] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [28] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [29] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [30] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [31] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _7::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [15] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [16] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ Base.Experimental ./:0 [17] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [18] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [19] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [20] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Vector{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Vector{Float64}}, Nothing, Tuple{var"#6#7", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Vector{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Vector{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Vector{Float64}, Tuple{Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Vector{Float64}, Vector{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [21] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [22] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [23] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [24] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [25] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [26] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [27] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [28] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [29] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [30] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [31] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _7::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [15] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [16] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}) @ Base.Experimental ./:0 [17] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [18] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [19] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [20] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Adjoint{Float64, Matrix{Float64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Nothing, Tuple{var"#6#7", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Adjoint{Float64, Matrix{Float64}}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Adjoint{Float64, Matrix{Float64}}, Tuple{Int64, Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Adjoint{Float64, Matrix{Float64}}, Adjoint{Float64, Matrix{Float64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [21] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [22] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [23] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [24] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [25] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [26] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [27] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [28] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [29] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [30] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [31] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Hermitian{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Symmetric{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Matrix{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Adjoint{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}, Mooncake.Dual{Hermitian{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{Float64, Matrix{Float64}}, Tangent{@NamedTuple{data::Matrix{Float64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{Float64, Matrix{Float64}}, Tangent{@NamedTuple{parent::Matrix{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _7::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [15] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [16] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Matrix{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ Base.Experimental ./:0 [17] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [18] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [19] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [20] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Matrix{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Matrix{Float64}}, Nothing, Tuple{var"#6#7", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Matrix{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Matrix{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Matrix{Float64}, Tuple{Int64, Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Matrix{Float64}, Matrix{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [21] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [22] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [23] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [24] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [25] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [26] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [27] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [28] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [29] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [30] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [31] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Adjoint{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{Float64}, SparseMatrixCSC{Float64, Int64}, Transpose{Float64, Vector{Float64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{Float64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Adjoint{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}, Mooncake.Dual{Transpose{Float64, Vector{Float64}}, Tangent{@NamedTuple{parent::Vector{Float64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _7::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [15] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [16] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{Float64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{Float64, Int64}, Vector{Float64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ Base.Experimental ./:0 [17] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [18] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [19] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [20] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Vector{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Vector{Float64}}, Nothing, Tuple{var"#6#7", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Vector{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Vector{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Vector{Float64}, Tuple{Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Vector{Float64}, Vector{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [21] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [22] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [23] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [24] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [25] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [26] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [27] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [28] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [29] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [30] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [31] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] ldivwith: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 Test threw exception Expression: testadjoint(((A, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 =# real(sum(ldivwith(A, lu(Matrix(A)), R))) end), A, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] _copyto_impl! @ ./array.jl:308 [inlined] [7] copyto! @ ./array.jl:299 [inlined] [8] copyto! @ ./array.jl:322 [inlined] [9] copy_similar @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/LinearAlgebra.jl:499 [inlined] [10] _lucopy @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:349 [inlined] [11] #lu#186 @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341 [inlined] [12] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#1", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{Float64}, Vector{Int64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#1", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{Float64}, Vector{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.LAPACK.var"##getrf!#1", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrf!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}, Mooncake.Dual{Tuple{Matrix{Float64}, Vector{Int64}, Int64}, Tuple{Matrix{Float64}, Vector{Mooncake.NoTangent}, Mooncake.NoTangent}}}}, false, 5}}})(_2::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, _3::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, _4::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, _5::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _6::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ Base.Experimental ./:0 [13] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}})(::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, ::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, ::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [14] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [15] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [16] _build_rule!(rule::Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, args::Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [17] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [18] #12 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [19] (::Tuple{Mooncake.LazyFRule{Tuple{Type{AssertionError}, String}, Mooncake.DerivedFRule{Tuple{Type{AssertionError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{AssertionError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{AssertionError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(copyto!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}}, Mooncake.DerivedFRule{Tuple{typeof(copyto!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(copyto!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, Mooncake.LazyFRule{Tuple{typeof(ldivwith), SparseMatrixCSC{Float64, Int64}, LU{Float64, Matrix{Float64}, Vector{Int64}}, Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{typeof(ldivwith), SparseMatrixCSC{Float64, Int64}, LU{Float64, Matrix{Float64}, Vector{Int64}}, Matrix{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(ldivwith), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, _3::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _4::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ Base.Experimental ./:0 [20] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [21] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [22] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [23] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#12#13", SparseMatrixCSC{Float64, Int64}, Matrix{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, Matrix{Float64}}, Nothing, Tuple{var"#12#13", SparseMatrixCSC{Float64, Int64}, Matrix{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, Matrix{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#12#13", Tuple{}}, Mooncake.PreparedCacheInputSpec{SparseMatrixCSC{Float64, Int64}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Matrix{Float64}, Tuple{Int64, Int64}}}}, ::Tuple{var"#12#13", Mooncake.NoTangent}, ::Tuple{SparseMatrixCSC{Float64, Int64}, SparseMatrixCSC{Float64, Int64}}, ::Tuple{Matrix{Float64}, Matrix{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [24] testadjoint(::Function, ::SparseMatrixCSC{Float64, Int64}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [25] testadjoint(::Function, ::SparseMatrixCSC{Float64, Int64}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [26] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:111 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [33] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [34] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] ldivwith: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 Test threw exception Expression: testadjoint(((A, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 =# real(sum(ldivwith(A, lu(Matrix(A)), R))) end), A, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] _copyto_impl! @ ./array.jl:308 [inlined] [7] copyto! @ ./array.jl:299 [inlined] [8] copyto! @ ./array.jl:322 [inlined] [9] copy_similar @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/LinearAlgebra.jl:499 [inlined] [10] _lucopy @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:349 [inlined] [11] #lu#186 @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341 [inlined] [12] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#1", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{Float64}, Vector{Int64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#1", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{Float64}, Vector{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.LAPACK.var"##getrf!#1", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrf!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}, Mooncake.Dual{Tuple{Matrix{Float64}, Vector{Int64}, Int64}, Tuple{Matrix{Float64}, Vector{Mooncake.NoTangent}, Mooncake.NoTangent}}}}, false, 5}}})(_2::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, _3::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, _4::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, _5::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _6::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ Base.Experimental ./:0 [13] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}})(::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, ::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, ::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [14] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [15] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [16] _build_rule!(rule::Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, args::Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [17] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [18] #12 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [19] (::Tuple{Mooncake.LazyFRule{Tuple{Type{AssertionError}, String}, Mooncake.DerivedFRule{Tuple{Type{AssertionError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{AssertionError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{AssertionError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(copyto!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}}, Mooncake.DerivedFRule{Tuple{typeof(copyto!), Matrix{Float64}, SparseMatrixCSC{Float64, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(copyto!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, _3::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, _4::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ Base.Experimental ./:0 [20] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [21] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [22] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [23] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#12#13", SparseMatrixCSC{Float64, Int64}, Vector{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{Float64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, Vector{Float64}}, Nothing, Tuple{var"#12#13", SparseMatrixCSC{Float64, Int64}, Vector{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, Vector{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#12#13", Tuple{}}, Mooncake.PreparedCacheInputSpec{SparseMatrixCSC{Float64, Int64}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Vector{Float64}, Tuple{Int64}}}}, ::Tuple{var"#12#13", Mooncake.NoTangent}, ::Tuple{SparseMatrixCSC{Float64, Int64}, SparseMatrixCSC{Float64, Int64}}, ::Tuple{Vector{Float64}, Vector{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [24] testadjoint(::Function, ::SparseMatrixCSC{Float64, Int64}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [25] testadjoint(::Function, ::SparseMatrixCSC{Float64, Int64}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [26] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:111 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [33] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [34] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] ldivwith: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 Test threw exception Expression: testadjoint(((A, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 =# real(sum(ldivwith(A, lu(Matrix(A)), R))) end), A, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] _copyto_impl! @ ./array.jl:308 [inlined] [7] copyto! @ ./array.jl:299 [inlined] [8] copyto! @ ./array.jl:322 [inlined] [9] copy_similar @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/LinearAlgebra.jl:499 [inlined] [10] _lucopy @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:349 [inlined] [11] #lu#186 @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341 [inlined] [12] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#1", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{Float64}, Vector{Int64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#1", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{Float64}, Vector{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.LAPACK.var"##getrf!#1", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrf!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}, Mooncake.Dual{Tuple{Matrix{Float64}, Vector{Int64}, Int64}, Tuple{Matrix{Float64}, Vector{Mooncake.NoTangent}, Mooncake.NoTangent}}}}, false, 5}}})(_2::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, _3::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, _4::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, _5::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _6::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ Base.Experimental ./:0 [13] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}})(::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, ::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, ::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [14] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [15] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [16] _build_rule!(rule::Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, args::Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [17] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [18] #12 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [19] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{Float64}, Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}}, Mooncake.DerivedFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{Float64}, Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.copyto_axcheck!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, Mooncake.LazyFRule{Tuple{typeof(ldivwith), Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, LU{Float64, Matrix{Float64}, Vector{Int64}}, Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{typeof(ldivwith), Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, LU{Float64, Matrix{Float64}, Vector{Int64}}, Matrix{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(ldivwith), Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, _3::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ Base.Experimental ./:0 [20] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, ::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [21] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [22] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [23] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#12#13", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Matrix{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Matrix{Float64}}, Nothing, Tuple{var"#12#13", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Matrix{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Matrix{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#12#13", Tuple{}}, Mooncake.PreparedCacheInputSpec{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Matrix{Float64}, Tuple{Int64, Int64}}}}, ::Tuple{var"#12#13", Mooncake.NoTangent}, ::Tuple{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Matrix{Float64}, Matrix{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [24] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [25] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [26] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:111 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [33] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [34] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] ldivwith: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 Test threw exception Expression: testadjoint(((A, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 =# real(sum(ldivwith(A, lu(Matrix(A)), R))) end), A, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] _copyto_impl! @ ./array.jl:308 [inlined] [7] copyto! @ ./array.jl:299 [inlined] [8] copyto! @ ./array.jl:322 [inlined] [9] copy_similar @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/LinearAlgebra.jl:499 [inlined] [10] _lucopy @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:349 [inlined] [11] #lu#186 @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341 [inlined] [12] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#1", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{Float64}, Vector{Int64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#1", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{Float64}, Vector{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.LAPACK.var"##getrf!#1", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrf!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}, Mooncake.Dual{Tuple{Matrix{Float64}, Vector{Int64}, Int64}, Tuple{Matrix{Float64}, Vector{Mooncake.NoTangent}, Mooncake.NoTangent}}}}, false, 5}}})(_2::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, _3::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, _4::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, _5::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _6::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ Base.Experimental ./:0 [13] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}})(::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, ::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, ::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [14] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [15] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [16] _build_rule!(rule::Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, args::Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [17] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [18] #12 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [19] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{Float64}, Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}}, Mooncake.DerivedFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{Float64}, Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.copyto_axcheck!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, _3::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ Base.Experimental ./:0 [20] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, ::Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [21] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [22] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [23] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#12#13", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Vector{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Vector{Float64}}, Nothing, Tuple{var"#12#13", Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Vector{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Vector{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#12#13", Tuple{}}, Mooncake.PreparedCacheInputSpec{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Vector{Float64}, Tuple{Int64}}}}, ::Tuple{var"#12#13", Mooncake.NoTangent}, ::Tuple{Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Vector{Float64}, Vector{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [24] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [25] testadjoint(::Function, ::Hermitian{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [26] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:111 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [33] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [34] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] ldivwith: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 Test threw exception Expression: testadjoint(((A, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 =# real(sum(ldivwith(A, lu(Matrix(A)), R))) end), A, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] _copyto_impl! @ ./array.jl:308 [inlined] [7] copyto! @ ./array.jl:299 [inlined] [8] copyto! @ ./array.jl:322 [inlined] [9] copy_similar @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/LinearAlgebra.jl:499 [inlined] [10] _lucopy @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:349 [inlined] [11] #lu#186 @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341 [inlined] [12] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#1", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{Float64}, Vector{Int64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#1", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{Float64}, Vector{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.LAPACK.var"##getrf!#1", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrf!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}, Mooncake.Dual{Tuple{Matrix{Float64}, Vector{Int64}, Int64}, Tuple{Matrix{Float64}, Vector{Mooncake.NoTangent}, Mooncake.NoTangent}}}}, false, 5}}})(_2::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, _3::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, _4::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, _5::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _6::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ Base.Experimental ./:0 [13] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}})(::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, ::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, ::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [14] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [15] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [16] _build_rule!(rule::Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, args::Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [17] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [18] #12 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [19] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{Float64}, Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}}, Mooncake.DerivedFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{Float64}, Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.copyto_axcheck!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, Mooncake.LazyFRule{Tuple{typeof(ldivwith), Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, LU{Float64, Matrix{Float64}, Vector{Int64}}, Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{typeof(ldivwith), Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, LU{Float64, Matrix{Float64}, Vector{Int64}}, Matrix{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(ldivwith), Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Matrix{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, _3::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ Base.Experimental ./:0 [20] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, ::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [21] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [22] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [23] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#12#13", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Matrix{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Matrix{Float64}}, Nothing, Tuple{var"#12#13", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Matrix{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Matrix{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#12#13", Tuple{}}, Mooncake.PreparedCacheInputSpec{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Matrix{Float64}, Tuple{Int64, Int64}}}}, ::Tuple{var"#12#13", Mooncake.NoTangent}, ::Tuple{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Matrix{Float64}, Matrix{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [24] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [25] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [26] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:111 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [33] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [34] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] ldivwith: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 Test threw exception Expression: testadjoint(((A, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 =# real(sum(ldivwith(A, lu(Matrix(A)), R))) end), A, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] _copyto_impl! @ ./array.jl:308 [inlined] [7] copyto! @ ./array.jl:299 [inlined] [8] copyto! @ ./array.jl:322 [inlined] [9] copy_similar @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/LinearAlgebra.jl:499 [inlined] [10] _lucopy @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:349 [inlined] [11] #lu#186 @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341 [inlined] [12] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#1", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{Float64}, Vector{Int64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#1", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{Float64}, Vector{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.LAPACK.var"##getrf!#1", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrf!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}, Mooncake.Dual{Tuple{Matrix{Float64}, Vector{Int64}, Int64}, Tuple{Matrix{Float64}, Vector{Mooncake.NoTangent}, Mooncake.NoTangent}}}}, false, 5}}})(_2::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, _3::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, _4::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, _5::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, _6::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ Base.Experimental ./:0 [13] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}})(::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, ::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, ::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, ::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [14] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [15] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [16] _build_rule!(rule::Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, args::Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [17] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [18] #12 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [19] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{Float64}, Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}}, Mooncake.DerivedFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{Float64}, Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.copyto_axcheck!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{Float64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{Float64}, Matrix{Float64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{Float64, Matrix{Float64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{Float64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{Float64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Float64, Float64}}}, false, 7}}})(_2::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, _3::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ Base.Experimental ./:0 [20] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, ::Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Vector{Float64}, Vector{Float64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [21] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [22] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [23] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#12#13", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Vector{Float64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{Float64}, Vector{Float64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Vector{Float64}}, Nothing, Tuple{var"#12#13", Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Vector{Float64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{Float64}}}, uplo::Mooncake.NoTangent}}, Vector{Float64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#12#13", Tuple{}}, Mooncake.PreparedCacheInputSpec{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Vector{Float64}, Tuple{Int64}}}}, ::Tuple{var"#12#13", Mooncake.NoTangent}, ::Tuple{Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}}, ::Tuple{Vector{Float64}, Vector{Float64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [24] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [25] testadjoint(::Function, ::Symmetric{Float64, SparseMatrixCSC{Float64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [26] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:111 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [33] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [34] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, args::Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [9] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [10] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [11] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _7::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [12] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [13] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [14] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [15] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 8}}, args::Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [16] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [17] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [18] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._mapreduce), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{IndexLinear, Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{ComplexF64, ComplexF64}}}, false, 5}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}) @ Base.Experimental ./:0 [19] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [20] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [21] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [22] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Adjoint{ComplexF64, Matrix{ComplexF64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Nothing, Tuple{var"#6#7", Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Adjoint{ComplexF64, Matrix{ComplexF64}}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tuple{Int64, Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, ::Tuple{Adjoint{ComplexF64, Matrix{ComplexF64}}, Adjoint{ComplexF64, Matrix{ComplexF64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [23] testadjoint(::Function, ::Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [24] testadjoint(::Function, ::Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [25] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [26] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [27] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [28] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [29] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [30] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [31] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [32] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [33] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _7::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 8}}, args::Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [15] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [16] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [17] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._mapreduce), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{IndexLinear, Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{ComplexF64, ComplexF64}}}, false, 5}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ Base.Experimental ./:0 [18] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [19] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [20] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [21] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Matrix{ComplexF64}}, Nothing, Tuple{var"#6#7", Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Matrix{ComplexF64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Matrix{ComplexF64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Matrix{ComplexF64}, Tuple{Int64, Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, ::Tuple{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [22] testadjoint(::Function, ::Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [23] testadjoint(::Function, ::Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [24] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [25] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [26] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, args::Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [9] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [10] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [11] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _7::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [12] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [13] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [14] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [15] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}}, false, 8}}, args::Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [16] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [17] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [18] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{ComplexF64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{ComplexF64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{ComplexF64, ComplexF64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}) @ Base.Experimental ./:0 [19] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [20] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [21] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [22] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Vector{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Vector{ComplexF64}}, Nothing, Tuple{var"#6#7", Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Vector{ComplexF64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Vector{ComplexF64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Vector{ComplexF64}, Tuple{Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, ::Tuple{Vector{ComplexF64}, Vector{ComplexF64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [23] testadjoint(::Function, ::Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [24] testadjoint(::Function, ::Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [25] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [26] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [27] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [28] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [29] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [30] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [31] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [32] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [33] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _7::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 8}}, args::Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [15] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [16] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [17] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._mapreduce), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{IndexLinear, Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{ComplexF64, ComplexF64}}}, false, 5}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}) @ Base.Experimental ./:0 [18] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [19] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [20] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [21] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Adjoint{ComplexF64, Matrix{ComplexF64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Nothing, Tuple{var"#6#7", Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Adjoint{ComplexF64, Matrix{ComplexF64}}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tuple{Int64, Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, ::Tuple{Adjoint{ComplexF64, Matrix{ComplexF64}}, Adjoint{ComplexF64, Matrix{ComplexF64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [22] testadjoint(::Function, ::Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [23] testadjoint(::Function, ::Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [24] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [25] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [26] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Hermitian{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Symmetric{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Matrix{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Matrix{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Hermitian{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Symmetric{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{data::Matrix{ComplexF64}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Transpose{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _7::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 8}}, args::Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [15] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [16] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [17] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Matrix{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._mapreduce), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{IndexLinear, Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{ComplexF64, ComplexF64}}}, false, 5}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ Base.Experimental ./:0 [18] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [19] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [20] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [21] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Matrix{ComplexF64}}, Nothing, Tuple{var"#6#7", Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Matrix{ComplexF64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Matrix{ComplexF64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Matrix{ComplexF64}, Tuple{Int64, Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, ::Tuple{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [22] testadjoint(::Function, ::Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [23] testadjoint(::Function, ::Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [24] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [25] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [26] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] lmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 =# real(sum(L * R)) end), L, R) No frule!! available for foreigncall with primal argument types │ Tuple{Val{:utf8proc_isupper}, Val{Int32}, Tuple{Val{UInt32}}, Val{0}, │ Val{(:ccall, 0x048b, false)}, UInt32, UInt32}. This problem has most likely │ arisen because there is a ccall somewhere in the function you are trying to │ differentiate, for which an frule!! has not been explicitly written. You have │ three options: write an frule!! for this foreigncall, write an frule!! for a │ Julia function that calls this foreigncall, or re-write your code to avoid this │ foreigncall entirely. If you believe that this error has arisen for some other │ reason than the above, or the above does not help you to workaround this │ problem, please open an issue. └ Stacktrace: [1] throw_missing_foreigncall_rule_error(::Symbol, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Vararg{Any}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:21 [2] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:utf8proc_isupper}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Int32}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{UInt32}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{(:ccall, 0x048b, false)}, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}, ::Mooncake.Dual{UInt32, Mooncake.NoTangent}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:14 [3] isuppercase @ ./strings/unicode.jl:428 [inlined] [4] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(lowercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(lowercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(lowercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.throw_invalid_char), Char}, Mooncake.DerivedFRule{Tuple{typeof(Base.throw_invalid_char), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.throw_invalid_char), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{InexactError}, Symbol, Any, Vararg{Any}}, Mooncake.DerivedFRule{Tuple{Type{InexactError}, Symbol, Tuple{Any, Vararg{Any}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{InexactError}, Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual}, Mooncake.Dual{InexactError, Tangent{@NamedTuple{func::Mooncake.NoTangent, args}}}}}, true, 3}}})(_2::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, _3::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ Base.Experimental ./:0 [5] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [6] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [7] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [8] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [9] spdensemul! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/linalg.jl:101 [inlined] [10] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._spmatmul!), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._spmatmul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(transpose), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._At_or_Ac_mul_B!), typeof(adjoint), Vector{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}, Transpose{ComplexF64, Vector{ComplexF64}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._At_or_Ac_mul_B!), Mooncake.NoTangent}, Mooncake.Dual{typeof(adjoint), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, Mooncake.DerivedFRule{Tuple{typeof(isuppercase), LinearAlgebra.WrapperChar}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(isuppercase), Mooncake.NoTangent}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}}, Mooncake.Dual{Bool, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}, Mooncake.LazyFRule{Tuple{typeof(uppercase), Char}, Mooncake.DerivedFRule{Tuple{typeof(uppercase), Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(uppercase), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Mooncake.Dual{Char, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.throw_uplo)}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.throw_uplo), Mooncake.NoTangent}}, Union{}}}, false, 1}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.wrap), Vector{ComplexF64}, Char}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.wrap), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Char, Mooncake.NoTangent}}, Union{Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}, Mooncake.Dual{Transpose{ComplexF64, Vector{ComplexF64}}, Tangent{@NamedTuple{parent::Vector{ComplexF64}}}}}}}, false, 3}}, Mooncake.DynamicFRule{Dict{Any, Any}}})(_2::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, _3::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, _4::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, _5::Mooncake.Dual{Char, Mooncake.NoTangent}, _6::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _7::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}, _9::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [11] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}})(::Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, ::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, ::Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, ::Mooncake.Dual{Char, Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [12] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [13] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [14] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}}, false, 8}}, args::Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [15] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [16] #6 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [17] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays.spdensemul!), Vector{ComplexF64}, LinearAlgebra.WrapperChar, Char, SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays.spdensemul!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{LinearAlgebra.WrapperChar, Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}}, false, 8}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{ComplexF64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{ComplexF64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{ComplexF64, ComplexF64}}}, false, 7}}})(_2::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, _3::Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}) @ Base.Experimental ./:0 [18] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, ::Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [19] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [20] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [21] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#6#7", Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Vector{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#6#7", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Vector{ComplexF64}}, Nothing, Tuple{var"#6#7", Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Vector{ComplexF64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Vector{ComplexF64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#6#7", Tuple{}}, Mooncake.PreparedCacheInputSpec{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Vector{ComplexF64}, Tuple{Int64}}}}, ::Tuple{var"#6#7", Mooncake.NoTangent}, ::Tuple{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, ::Tuple{Vector{ComplexF64}, Vector{ComplexF64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [22] testadjoint(::Function, ::Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [23] testadjoint(::Function, ::Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [24] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [25] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [26] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:93 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:94 [inlined] rmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:100 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:100 =# real(sum(L * R)) end), L, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] #_growend!##0 @ ./array.jl:1152 [inlined] [7] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{Type{ConcurrencyViolationError}, String}, Mooncake.DerivedFRule{Tuple{Type{ConcurrencyViolationError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ConcurrencyViolationError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ConcurrencyViolationError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{ConcurrencyViolationError}, String}, Mooncake.DerivedFRule{Tuple{Type{ConcurrencyViolationError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ConcurrencyViolationError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ConcurrencyViolationError, Tangent{@NamedTuple{msg}}}}}, false, 2}}})(_2::Mooncake.Dual{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}, Tangent{@NamedTuple{a::Vector{Mooncake.NoTangent}, newmemlen::Mooncake.NoTangent, offset::Mooncake.NoTangent, newlen::Mooncake.NoTangent, len::Mooncake.NoTangent, memlen::Mooncake.NoTangent, mem::Memory{Mooncake.NoTangent}, ref::MemoryRef{Mooncake.NoTangent}}}}) @ Base.Experimental ./:0 [8] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}, Tangent{@NamedTuple{a::Vector{Mooncake.NoTangent}, newmemlen::Mooncake.NoTangent, offset::Mooncake.NoTangent, newlen::Mooncake.NoTangent, len::Mooncake.NoTangent, memlen::Mooncake.NoTangent, mem::Memory{Mooncake.NoTangent}, ref::MemoryRef{Mooncake.NoTangent}}}}}, Mooncake.Dual{MemoryRef{Int64}, MemoryRef{Mooncake.NoTangent}}}})(x::Mooncake.Dual{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}, Tangent{@NamedTuple{a::Vector{Mooncake.NoTangent}, newmemlen::Mooncake.NoTangent, offset::Mooncake.NoTangent, newlen::Mooncake.NoTangent, len::Mooncake.NoTangent, memlen::Mooncake.NoTangent, mem::Memory{Mooncake.NoTangent}, ref::MemoryRef{Mooncake.NoTangent}}}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [9] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [10] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [11] _build_rule!(rule::Mooncake.LazyFRule{Tuple{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}}, Mooncake.DerivedFRule{Tuple{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}, Tangent{@NamedTuple{a::Vector{Mooncake.NoTangent}, newmemlen::Mooncake.NoTangent, offset::Mooncake.NoTangent, newlen::Mooncake.NoTangent, len::Mooncake.NoTangent, memlen::Mooncake.NoTangent, mem::Memory{Mooncake.NoTangent}, ref::MemoryRef{Mooncake.NoTangent}}}}}, Mooncake.Dual{MemoryRef{Int64}, MemoryRef{Mooncake.NoTangent}}}}, false, 1}}, args::Tuple{Mooncake.Dual{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}, Tangent{@NamedTuple{a::Vector{Mooncake.NoTangent}, newmemlen::Mooncake.NoTangent, offset::Mooncake.NoTangent, newlen::Mooncake.NoTangent, len::Mooncake.NoTangent, memlen::Mooncake.NoTangent, mem::Memory{Mooncake.NoTangent}, ref::MemoryRef{Mooncake.NoTangent}}}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [12] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [13] _growat! @ ./array.jl:1169 [inlined] [14] (::Tuple{Mooncake.LazyFRule{Tuple{Base.var"#_growbeg!##0#_growbeg!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}}, Mooncake.DerivedFRule{Tuple{Base.var"#_growbeg!##0#_growbeg!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Base.var"#_growbeg!##0#_growbeg!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}, Tangent{@NamedTuple{a::Vector{Mooncake.NoTangent}, delta::Mooncake.NoTangent, newlen::Mooncake.NoTangent, offset::Mooncake.NoTangent, len::Mooncake.NoTangent, mem::Memory{Mooncake.NoTangent}, ref::MemoryRef{Mooncake.NoTangent}}}}}, Mooncake.Dual{MemoryRef{Int64}, MemoryRef{Mooncake.NoTangent}}}}, false, 1}}, Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}}, Mooncake.DerivedFRule{Tuple{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}, Tangent{@NamedTuple{a::Vector{Mooncake.NoTangent}, newmemlen::Mooncake.NoTangent, offset::Mooncake.NoTangent, newlen::Mooncake.NoTangent, len::Mooncake.NoTangent, memlen::Mooncake.NoTangent, mem::Memory{Mooncake.NoTangent}, ref::MemoryRef{Mooncake.NoTangent}}}}}, Mooncake.Dual{MemoryRef{Int64}, MemoryRef{Mooncake.NoTangent}}}}, false, 1}}, Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{Type{BoundsError}, Any, Int64}, Mooncake.DerivedFRule{Tuple{Type{BoundsError}, Any, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{BoundsError}, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{BoundsError, Tangent{@NamedTuple{a::Mooncake.PossiblyUninitTangent{Any}, i::Mooncake.PossiblyUninitTangent{Any}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}})(_2::Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, _3::Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, _4::Mooncake.Dual{Int64, Mooncake.NoTangent}, _5::Mooncake.Dual{Int64, Mooncake.NoTangent}) @ Base.Experimental ./:0 [15] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}})(::Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, ::Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, ::Mooncake.Dual{Int64, Mooncake.NoTangent}, ::Mooncake.Dual{Int64, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [16] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [17] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [18] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [19] _setindex_scalar! @ /opt/julia/share/julia/stdlib/v1.12/SparseArrays/src/sparsematrix.jl:3218 [inlined] [20] (::Tuple{Mooncake.LazyFRule{Tuple{Type{BoundsError}, Any, Tuple{Int64, Int64}}, Mooncake.DerivedFRule{Tuple{Type{BoundsError}, Any, Tuple{Int64, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{BoundsError}, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Tuple{Int64, Int64}, Mooncake.NoTangent}}, Mooncake.Dual{BoundsError, Tangent{@NamedTuple{a::Mooncake.PossiblyUninitTangent{Any}, i::Mooncake.PossiblyUninitTangent{Any}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base.print_to_string), String, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.print_to_string), Tuple{String, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.print_to_string), Mooncake.NoTangent}, Mooncake.Dual{Tuple{String, Int64}, Mooncake.NoTangent}}, Mooncake.Dual{String, Mooncake.NoTangent}}}, true, 2}}})(_2::Mooncake.Dual{typeof(SparseArrays._setindex_scalar!), Mooncake.NoTangent}, _3::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _4::Mooncake.Dual{ComplexF64, ComplexF64}, _5::Mooncake.Dual{Int64, Mooncake.NoTangent}, _6::Mooncake.Dual{Int64, Mooncake.NoTangent}) @ Base.Experimental ./:0 [21] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._setindex_scalar!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{ComplexF64, ComplexF64}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}})(::Mooncake.Dual{typeof(SparseArrays._setindex_scalar!), Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{ComplexF64, ComplexF64}, ::Mooncake.Dual{Int64, Mooncake.NoTangent}, ::Mooncake.Dual{Int64, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [22] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [23] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [24] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [25] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/matmul.jl:1036 [inlined] [26] macro expansion @ ./simdloop.jl:77 [inlined] [27] _generic_matmatmul_nonadjtrans! @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/matmul.jl:1035 [inlined] [28] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(SparseArrays._setindex_scalar!), SparseMatrixCSC{ComplexF64, Int64}, ComplexF64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._setindex_scalar!), SparseMatrixCSC{ComplexF64, Int64}, ComplexF64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._setindex_scalar!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{ComplexF64, ComplexF64}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 5}}})(_2::Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul_nonadjtrans!), Mooncake.NoTangent}, _3::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _4::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _5::Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, _6::Mooncake.Dual{Bool, Mooncake.NoTangent}, _7::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [29] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul_nonadjtrans!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}})(::Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul_nonadjtrans!), Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [30] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [31] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [32] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul_nonadjtrans!), SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul_nonadjtrans!), SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul_nonadjtrans!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 6}}, args::Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul_nonadjtrans!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [33] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [34] _generic_matmatmul! @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/matmul.jl:1019 [inlined] [35] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.matmul_size_check_error), Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.matmul_size_check_error), Tuple{Int64, Int64}, Tuple{Int64, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.matmul_size_check_error), Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64, Int64}, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64, Int64}, Mooncake.NoTangent}}, Union{}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.matmul_size_check_error), Tuple{Int64, Int64}, Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.matmul_size_check_error), Tuple{Int64, Int64}, Tuple{Int64, Int64}, Tuple{Int64, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.matmul_size_check_error), Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64, Int64}, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64, Int64}, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64, Int64}, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul_nonadjtrans!), SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul_nonadjtrans!), SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul_nonadjtrans!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 6}}})(_2::Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul!), Mooncake.NoTangent}, _3::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _4::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _5::Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, _6::Mooncake.Dual{Bool, Mooncake.NoTangent}, _7::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [36] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}})(::Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul!), Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [37] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [38] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [39] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul!), SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul!), SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 6}}, args::Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [40] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [41] #8 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:100 [inlined] [42] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(spzeros), Type{ComplexF64}, Type{Int64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(spzeros), Type{ComplexF64}, Type{Int64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(spzeros), Mooncake.NoTangent}, Mooncake.Dual{Type{ComplexF64}, Mooncake.NoTangent}, Mooncake.Dual{Type{Int64}, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 5}}, Mooncake.LazyFRule{Tuple{Base.var"##sizehint!#81", Bool, Bool, typeof(sizehint!), Vector{Int64}, Int64}, Mooncake.DerivedFRule{Tuple{Base.var"##sizehint!#81", Bool, Bool, typeof(sizehint!), Vector{Int64}, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Base.var"##sizehint!#81", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(sizehint!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}}, false, 6}}, Mooncake.LazyFRule{Tuple{Base.var"##sizehint!#81", Bool, Bool, typeof(sizehint!), Vector{ComplexF64}, Int64}, Mooncake.DerivedFRule{Tuple{Base.var"##sizehint!#81", Bool, Bool, typeof(sizehint!), Vector{ComplexF64}, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Base.var"##sizehint!#81", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(sizehint!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul!), SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul!), SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(Base._mapreduce), typeof(identity), Function, IndexCartesian, SparseMatrixCSC{ComplexF64, Int64}}, Mooncake.DerivedFRule{Tuple{typeof(Base._mapreduce), typeof(identity), Function, IndexCartesian, SparseMatrixCSC{ComplexF64, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._mapreduce), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{IndexCartesian, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}, Mooncake.Dual}}, false, 5}}})(_2::Mooncake.Dual{var"#8#9", Mooncake.NoTangent}, _3::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _4::Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}) @ Base.Experimental ./:0 [43] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#8#9", Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#8#9", Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [44] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [45] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [46] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#8#9", Matrix{ComplexF64}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#8#9", Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Matrix{ComplexF64}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Nothing, Tuple{var"#8#9", Matrix{ComplexF64}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Matrix{ComplexF64}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#8#9", Tuple{}}, Mooncake.PreparedCacheInputSpec{Matrix{ComplexF64}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tuple{Int64, Int64}}}}, ::Tuple{var"#8#9", Mooncake.NoTangent}, ::Tuple{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Tuple{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [47] testadjoint(::Function, ::Matrix{ComplexF64}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [48] testadjoint(::Function, ::Matrix{ComplexF64}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [49] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [50] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [51] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [52] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [53] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:99 [inlined] [54] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [55] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:100 [inlined] [56] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] rmul: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:100 Test threw exception Expression: testadjoint(((L, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:100 =# real(sum(L * R)) end), L, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] #_growend!##0 @ ./array.jl:1152 [inlined] [7] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{Type{ConcurrencyViolationError}, String}, Mooncake.DerivedFRule{Tuple{Type{ConcurrencyViolationError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ConcurrencyViolationError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ConcurrencyViolationError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{ConcurrencyViolationError}, String}, Mooncake.DerivedFRule{Tuple{Type{ConcurrencyViolationError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ConcurrencyViolationError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ConcurrencyViolationError, Tangent{@NamedTuple{msg}}}}}, false, 2}}})(_2::Mooncake.Dual{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}, Tangent{@NamedTuple{a::Vector{Mooncake.NoTangent}, newmemlen::Mooncake.NoTangent, offset::Mooncake.NoTangent, newlen::Mooncake.NoTangent, len::Mooncake.NoTangent, memlen::Mooncake.NoTangent, mem::Memory{Mooncake.NoTangent}, ref::MemoryRef{Mooncake.NoTangent}}}}) @ Base.Experimental ./:0 [8] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}, Tangent{@NamedTuple{a::Vector{Mooncake.NoTangent}, newmemlen::Mooncake.NoTangent, offset::Mooncake.NoTangent, newlen::Mooncake.NoTangent, len::Mooncake.NoTangent, memlen::Mooncake.NoTangent, mem::Memory{Mooncake.NoTangent}, ref::MemoryRef{Mooncake.NoTangent}}}}}, Mooncake.Dual{MemoryRef{Int64}, MemoryRef{Mooncake.NoTangent}}}})(x::Mooncake.Dual{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}, Tangent{@NamedTuple{a::Vector{Mooncake.NoTangent}, newmemlen::Mooncake.NoTangent, offset::Mooncake.NoTangent, newlen::Mooncake.NoTangent, len::Mooncake.NoTangent, memlen::Mooncake.NoTangent, mem::Memory{Mooncake.NoTangent}, ref::MemoryRef{Mooncake.NoTangent}}}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [9] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [10] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [11] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [12] _growat! @ ./array.jl:1169 [inlined] [13] (::Tuple{Mooncake.LazyFRule{Tuple{Base.var"#_growbeg!##0#_growbeg!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}}, Mooncake.DerivedFRule{Tuple{Base.var"#_growbeg!##0#_growbeg!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Base.var"#_growbeg!##0#_growbeg!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}, Tangent{@NamedTuple{a::Vector{Mooncake.NoTangent}, delta::Mooncake.NoTangent, newlen::Mooncake.NoTangent, offset::Mooncake.NoTangent, len::Mooncake.NoTangent, mem::Memory{Mooncake.NoTangent}, ref::MemoryRef{Mooncake.NoTangent}}}}}, Mooncake.Dual{MemoryRef{Int64}, MemoryRef{Mooncake.NoTangent}}}}, false, 1}}, Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}}, Mooncake.DerivedFRule{Tuple{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Base.var"#_growend!##0#_growend!##1"{Vector{Int64}, Int64, Int64, Int64, Int64, Int64, Memory{Int64}, MemoryRef{Int64}}, Tangent{@NamedTuple{a::Vector{Mooncake.NoTangent}, newmemlen::Mooncake.NoTangent, offset::Mooncake.NoTangent, newlen::Mooncake.NoTangent, len::Mooncake.NoTangent, memlen::Mooncake.NoTangent, mem::Memory{Mooncake.NoTangent}, ref::MemoryRef{Mooncake.NoTangent}}}}}, Mooncake.Dual{MemoryRef{Int64}, MemoryRef{Mooncake.NoTangent}}}}, false, 1}}, Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{Type{BoundsError}, Any, Int64}, Mooncake.DerivedFRule{Tuple{Type{BoundsError}, Any, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{BoundsError}, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{BoundsError, Tangent{@NamedTuple{a::Mooncake.PossiblyUninitTangent{Any}, i::Mooncake.PossiblyUninitTangent{Any}}}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}})(_2::Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, _3::Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, _4::Mooncake.Dual{Int64, Mooncake.NoTangent}, _5::Mooncake.Dual{Int64, Mooncake.NoTangent}) @ Base.Experimental ./:0 [14] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}})(::Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, ::Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, ::Mooncake.Dual{Int64, Mooncake.NoTangent}, ::Mooncake.Dual{Int64, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [15] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [16] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [17] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [18] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/generic.jl:100 [inlined] [19] __generic_matvecmul! @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/matmul.jl:951 [inlined] [20] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{Int64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base._growat!), Vector{ComplexF64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._growat!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{Mooncake.Dual{Nothing, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}}}, false, 4}}})(_2::Mooncake.Dual{typeof(LinearAlgebra.__generic_matvecmul!), Mooncake.NoTangent}, _3::Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, _4::Mooncake.Dual{SparseVector{ComplexF64, Int64}, Tangent{@NamedTuple{n::Mooncake.NoTangent, nzind::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _5::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _6::Mooncake.Dual{SubArray{ComplexF64, 1, Matrix{ComplexF64}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, true}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}, indices::Mooncake.NoTangent, offset1::Mooncake.NoTangent, stride1::Mooncake.NoTangent}}}, _7::Mooncake.Dual{Bool, Mooncake.NoTangent}, _8::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [21] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.__generic_matvecmul!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{SparseVector{ComplexF64, Int64}, Tangent{@NamedTuple{n::Mooncake.NoTangent, nzind::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{SubArray{ComplexF64, 1, Matrix{ComplexF64}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, true}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}, indices::Mooncake.NoTangent, offset1::Mooncake.NoTangent, stride1::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}})(::Mooncake.Dual{typeof(LinearAlgebra.__generic_matvecmul!), Mooncake.NoTangent}, ::Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, ::Mooncake.Dual{SparseVector{ComplexF64, Int64}, Tangent{@NamedTuple{n::Mooncake.NoTangent, nzind::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{SubArray{ComplexF64, 1, Matrix{ComplexF64}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, true}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}, indices::Mooncake.NoTangent, offset1::Mooncake.NoTangent, stride1::Mooncake.NoTangent}}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [22] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [23] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [24] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.__generic_matvecmul!), typeof(transpose), SparseVector{ComplexF64, Int64}, SparseMatrixCSC{ComplexF64, Int64}, SubArray{ComplexF64, 1, Matrix{ComplexF64}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, true}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.__generic_matvecmul!), typeof(transpose), SparseVector{ComplexF64, Int64}, SparseMatrixCSC{ComplexF64, Int64}, SubArray{ComplexF64, 1, Matrix{ComplexF64}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, true}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.__generic_matvecmul!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{SparseVector{ComplexF64, Int64}, Tangent{@NamedTuple{n::Mooncake.NoTangent, nzind::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{SubArray{ComplexF64, 1, Matrix{ComplexF64}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, true}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}, indices::Mooncake.NoTangent, offset1::Mooncake.NoTangent, stride1::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, args::Tuple{Mooncake.Dual{typeof(LinearAlgebra.__generic_matvecmul!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{SparseVector{ComplexF64, Int64}, Tangent{@NamedTuple{n::Mooncake.NoTangent, nzind::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{SubArray{ComplexF64, 1, Matrix{ComplexF64}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, true}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}, indices::Mooncake.NoTangent, offset1::Mooncake.NoTangent, stride1::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [25] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [26] _generic_matmatmul_adjtrans! @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/matmul.jl:1051 [inlined] [27] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.matmul_size_check_error), Tuple{Int64, Int64}, Tuple{Int64}}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.matmul_size_check_error), Tuple{Int64, Int64}, Tuple{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.matmul_size_check_error), Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64, Int64}, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}, Union{}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.matmul_size_check_error), Tuple{Int64}, Tuple{Int64, Int64}, Tuple{Int64}}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.matmul_size_check_error), Tuple{Int64}, Tuple{Int64, Int64}, Tuple{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.matmul_size_check_error), Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64, Int64}, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64}, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.__generic_matvecmul!), typeof(transpose), SparseVector{ComplexF64, Int64}, SparseMatrixCSC{ComplexF64, Int64}, SubArray{ComplexF64, 1, Matrix{ComplexF64}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, true}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.__generic_matvecmul!), typeof(transpose), SparseVector{ComplexF64, Int64}, SparseMatrixCSC{ComplexF64, Int64}, SubArray{ComplexF64, 1, Matrix{ComplexF64}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, true}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.__generic_matvecmul!), Mooncake.NoTangent}, Mooncake.Dual{typeof(transpose), Mooncake.NoTangent}, Mooncake.Dual{SparseVector{ComplexF64, Int64}, Tangent{@NamedTuple{n::Mooncake.NoTangent, nzind::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{SubArray{ComplexF64, 1, Matrix{ComplexF64}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, true}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}, indices::Mooncake.NoTangent, offset1::Mooncake.NoTangent, stride1::Mooncake.NoTangent}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{Nothing, Mooncake.NoTangent}}}, false, 7}}, Mooncake.LazyFRule{Tuple{Type{DimensionMismatch}, String}, Mooncake.DerivedFRule{Tuple{Type{DimensionMismatch}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{DimensionMismatch}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{DimensionMismatch, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{DimensionMismatch}, String}, Mooncake.DerivedFRule{Tuple{Type{DimensionMismatch}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{DimensionMismatch}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{DimensionMismatch, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.unaliascopy), SparseMatrixCSC{ComplexF64, Int64}}, Mooncake.DerivedFRule{Tuple{typeof(Base.unaliascopy), SparseMatrixCSC{ComplexF64, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.unaliascopy), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.unaliascopy), Base.Slice{Base.OneTo{Int64}}}, Mooncake.DerivedFRule{Tuple{typeof(Base.unaliascopy), Base.Slice{Base.OneTo{Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.unaliascopy), Mooncake.NoTangent}, Mooncake.Dual{Base.Slice{Base.OneTo{Int64}}, Mooncake.NoTangent}}, Mooncake.Dual{Base.Slice{Base.OneTo{Int64}}, Mooncake.NoTangent}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.unaliascopy), SparseVector{ComplexF64, Int64}}, Mooncake.DerivedFRule{Tuple{typeof(Base.unaliascopy), SparseVector{ComplexF64, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.unaliascopy), Mooncake.NoTangent}, Mooncake.Dual{SparseVector{ComplexF64, Int64}, Tangent{@NamedTuple{n::Mooncake.NoTangent, nzind::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}, Mooncake.Dual{SparseVector{ComplexF64, Int64}, Tangent{@NamedTuple{n::Mooncake.NoTangent, nzind::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(SparseArrays._setindex_scalar!), SparseMatrixCSC{ComplexF64, Int64}, ComplexF64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(SparseArrays._setindex_scalar!), SparseMatrixCSC{ComplexF64, Int64}, ComplexF64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(SparseArrays._setindex_scalar!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{ComplexF64, ComplexF64}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 5}}, Mooncake.LazyFRule{Tuple{typeof(Base.Broadcast.throwdm), Tuple{Base.OneTo{Int64}}, Tuple{Base.OneTo{Int64}}}, Mooncake.DerivedFRule{Tuple{typeof(Base.Broadcast.throwdm), Tuple{Base.OneTo{Int64}}, Tuple{Base.OneTo{Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.Broadcast.throwdm), Mooncake.NoTangent}, Mooncake.Dual{Tuple{Base.OneTo{Int64}}, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Base.OneTo{Int64}}, Mooncake.NoTangent}}, Union{}}}, false, 3}}})(_2::Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul_adjtrans!), Mooncake.NoTangent}, _3::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _4::Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, _5::Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, _6::Mooncake.Dual{Bool, Mooncake.NoTangent}, _7::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [28] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul_adjtrans!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}})(::Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul_adjtrans!), Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, ::Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [29] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [30] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [31] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul_adjtrans!), SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul_adjtrans!), SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul_adjtrans!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 6}}, args::Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul_adjtrans!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [32] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [33] _generic_matmatmul! @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/matmul.jl:1019 [inlined] [34] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.matmul_size_check_error), Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.matmul_size_check_error), Tuple{Int64, Int64}, Tuple{Int64, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.matmul_size_check_error), Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64, Int64}, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64, Int64}, Mooncake.NoTangent}}, Union{}}}, false, 3}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.matmul_size_check_error), Tuple{Int64, Int64}, Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.matmul_size_check_error), Tuple{Int64, Int64}, Tuple{Int64, Int64}, Tuple{Int64, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.matmul_size_check_error), Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64, Int64}, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64, Int64}, Mooncake.NoTangent}, Mooncake.Dual{Tuple{Int64, Int64}, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul_adjtrans!), SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul_adjtrans!), SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul_adjtrans!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 6}}})(_2::Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul!), Mooncake.NoTangent}, _3::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _4::Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, _5::Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, _6::Mooncake.Dual{Bool, Mooncake.NoTangent}, _7::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ Base.Experimental ./:0 [35] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}})(::Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul!), Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, ::Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}, ::Mooncake.Dual{Bool, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [36] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [37] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [38] _build_rule!(rule::Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul!), SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul!), SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 6}}, args::Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [39] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [40] #8 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:100 [inlined] [41] (::Tuple{Mooncake.LazyFRule{Tuple{typeof(spzeros), Type{ComplexF64}, Type{Int64}, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(spzeros), Type{ComplexF64}, Type{Int64}, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(spzeros), Mooncake.NoTangent}, Mooncake.Dual{Type{ComplexF64}, Mooncake.NoTangent}, Mooncake.Dual{Type{Int64}, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 5}}, Mooncake.LazyFRule{Tuple{Base.var"##sizehint!#81", Bool, Bool, typeof(sizehint!), Vector{Int64}, Int64}, Mooncake.DerivedFRule{Tuple{Base.var"##sizehint!#81", Bool, Bool, typeof(sizehint!), Vector{Int64}, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Base.var"##sizehint!#81", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(sizehint!), Mooncake.NoTangent}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}}, false, 6}}, Mooncake.LazyFRule{Tuple{Base.var"##sizehint!#81", Bool, Bool, typeof(sizehint!), Vector{ComplexF64}, Int64}, Mooncake.DerivedFRule{Tuple{Base.var"##sizehint!#81", Bool, Bool, typeof(sizehint!), Vector{ComplexF64}, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Base.var"##sizehint!#81", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(sizehint!), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul!), SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra._generic_matmatmul!), SparseMatrixCSC{ComplexF64, Int64}, Adjoint{ComplexF64, Matrix{ComplexF64}}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Bool, Bool}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra._generic_matmatmul!), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}, false, 6}}, Mooncake.LazyFRule{Tuple{typeof(Base._mapreduce), typeof(identity), Function, IndexCartesian, SparseMatrixCSC{ComplexF64, Int64}}, Mooncake.DerivedFRule{Tuple{typeof(Base._mapreduce), typeof(identity), Function, IndexCartesian, SparseMatrixCSC{ComplexF64, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._mapreduce), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{IndexCartesian, Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}, Mooncake.Dual}}, false, 5}}})(_2::Mooncake.Dual{var"#8#9", Mooncake.NoTangent}, _3::Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, _4::Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}) @ Base.Experimental ./:0 [42] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#8#9", Mooncake.NoTangent}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#8#9", Mooncake.NoTangent}, ::Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, ::Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [43] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [44] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [45] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#8#9", Adjoint{ComplexF64, Matrix{ComplexF64}}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#8#9", Mooncake.NoTangent}, Mooncake.Dual{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}}, Mooncake.Dual{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}, Nothing, Tuple{var"#8#9", Adjoint{ComplexF64, Matrix{ComplexF64}}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{parent::Matrix{ComplexF64}}}, Tangent{@NamedTuple{parent::Tangent{@NamedTuple{parent::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}}}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#8#9", Tuple{}}, Mooncake.PreparedCacheInputSpec{Adjoint{ComplexF64, Matrix{ComplexF64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Tuple{Int64, Int64}}}}, ::Tuple{var"#8#9", Mooncake.NoTangent}, ::Tuple{Adjoint{ComplexF64, Matrix{ComplexF64}}, Adjoint{ComplexF64, Matrix{ComplexF64}}}, ::Tuple{Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Adjoint{ComplexF64, Transpose{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [46] testadjoint(::Function, ::Adjoint{ComplexF64, Matrix{ComplexF64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [47] testadjoint(::Function, ::Adjoint{ComplexF64, Matrix{ComplexF64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [48] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [49] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [50] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [51] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [52] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:99 [inlined] [53] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [54] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:100 [inlined] [55] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] ldivwith: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 Test threw exception Expression: testadjoint(((A, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 =# real(sum(ldivwith(A, lu(Matrix(A)), R))) end), A, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] _copyto_impl! @ ./array.jl:308 [inlined] [7] copyto! @ ./array.jl:299 [inlined] [8] copyto! @ ./array.jl:322 [inlined] [9] copy_similar @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/LinearAlgebra.jl:499 [inlined] [10] _lucopy @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:349 [inlined] [11] #lu#186 @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341 [inlined] [12] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#3", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{ComplexF64}, Vector{Int64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#3", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{ComplexF64}, Vector{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.LAPACK.var"##getrf!#3", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrf!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}, Mooncake.Dual{Tuple{Matrix{ComplexF64}, Vector{Int64}, Int64}, Tuple{Matrix{ComplexF64}, Vector{Mooncake.NoTangent}, Mooncake.NoTangent}}}}, false, 5}}})(_2::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, _3::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, _4::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, _5::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _6::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ Base.Experimental ./:0 [13] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}})(::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, ::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, ::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [14] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [15] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [16] _build_rule!(rule::Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, args::Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [17] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [18] #12 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [19] (::Tuple{Mooncake.LazyFRule{Tuple{Type{AssertionError}, String}, Mooncake.DerivedFRule{Tuple{Type{AssertionError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{AssertionError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{AssertionError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(copyto!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}}, Mooncake.DerivedFRule{Tuple{typeof(copyto!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(copyto!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, Mooncake.LazyFRule{Tuple{typeof(ldivwith), SparseMatrixCSC{ComplexF64, Int64}, LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{typeof(ldivwith), SparseMatrixCSC{ComplexF64, Int64}, LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(ldivwith), Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._mapreduce), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{IndexLinear, Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{ComplexF64, ComplexF64}}}, false, 5}}})(_2::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, _3::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _4::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ Base.Experimental ./:0 [20] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [21] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [22] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [23] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#12#13", SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, Matrix{ComplexF64}}, Nothing, Tuple{var"#12#13", SparseMatrixCSC{ComplexF64, Int64}, Matrix{ComplexF64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, Matrix{ComplexF64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#12#13", Tuple{}}, Mooncake.PreparedCacheInputSpec{SparseMatrixCSC{ComplexF64, Int64}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Matrix{ComplexF64}, Tuple{Int64, Int64}}}}, ::Tuple{var"#12#13", Mooncake.NoTangent}, ::Tuple{SparseMatrixCSC{ComplexF64, Int64}, SparseMatrixCSC{ComplexF64, Int64}}, ::Tuple{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [24] testadjoint(::Function, ::SparseMatrixCSC{ComplexF64, Int64}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [25] testadjoint(::Function, ::SparseMatrixCSC{ComplexF64, Int64}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [26] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:111 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [33] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [34] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] ldivwith: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 Test threw exception Expression: testadjoint(((A, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 =# real(sum(ldivwith(A, lu(Matrix(A)), R))) end), A, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] _copyto_impl! @ ./array.jl:308 [inlined] [7] copyto! @ ./array.jl:299 [inlined] [8] copyto! @ ./array.jl:322 [inlined] [9] copy_similar @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/LinearAlgebra.jl:499 [inlined] [10] _lucopy @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:349 [inlined] [11] #lu#186 @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341 [inlined] [12] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#3", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{ComplexF64}, Vector{Int64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#3", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{ComplexF64}, Vector{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.LAPACK.var"##getrf!#3", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrf!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}, Mooncake.Dual{Tuple{Matrix{ComplexF64}, Vector{Int64}, Int64}, Tuple{Matrix{ComplexF64}, Vector{Mooncake.NoTangent}, Mooncake.NoTangent}}}}, false, 5}}})(_2::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, _3::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, _4::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, _5::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _6::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ Base.Experimental ./:0 [13] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}})(::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, ::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, ::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [14] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [15] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [16] _build_rule!(rule::Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, args::Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [17] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [18] #12 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [19] (::Tuple{Mooncake.LazyFRule{Tuple{Type{AssertionError}, String}, Mooncake.DerivedFRule{Tuple{Type{AssertionError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{AssertionError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{AssertionError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(copyto!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}}, Mooncake.DerivedFRule{Tuple{typeof(copyto!), Matrix{ComplexF64}, SparseMatrixCSC{ComplexF64, Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(copyto!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.LAPACK.getrs!), Char, Matrix{ComplexF64}, Vector{Int64}, Vector{ComplexF64}}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.LAPACK.getrs!), Char, Matrix{ComplexF64}, Vector{Int64}, Vector{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrs!), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}}, false, 5}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{ComplexF64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{ComplexF64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{ComplexF64, ComplexF64}}}, false, 7}}})(_2::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, _3::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, _4::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}) @ Base.Experimental ./:0 [20] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, ::Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, ::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [21] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [22] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [23] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#12#13", SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{SparseMatrixCSC{ComplexF64, Int64}, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, Vector{ComplexF64}}, Nothing, Tuple{var"#12#13", SparseMatrixCSC{ComplexF64, Int64}, Vector{ComplexF64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, Vector{ComplexF64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#12#13", Tuple{}}, Mooncake.PreparedCacheInputSpec{SparseMatrixCSC{ComplexF64, Int64}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Vector{ComplexF64}, Tuple{Int64}}}}, ::Tuple{var"#12#13", Mooncake.NoTangent}, ::Tuple{SparseMatrixCSC{ComplexF64, Int64}, SparseMatrixCSC{ComplexF64, Int64}}, ::Tuple{Vector{ComplexF64}, Vector{ComplexF64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [24] testadjoint(::Function, ::SparseMatrixCSC{ComplexF64, Int64}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [25] testadjoint(::Function, ::SparseMatrixCSC{ComplexF64, Int64}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [26] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:111 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [33] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [34] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] ldivwith: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 Test threw exception Expression: testadjoint(((A, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 =# real(sum(ldivwith(A, lu(Matrix(A)), R))) end), A, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] _copyto_impl! @ ./array.jl:308 [inlined] [7] copyto! @ ./array.jl:299 [inlined] [8] copyto! @ ./array.jl:322 [inlined] [9] copy_similar @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/LinearAlgebra.jl:499 [inlined] [10] _lucopy @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:349 [inlined] [11] #lu#186 @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341 [inlined] [12] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#3", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{ComplexF64}, Vector{Int64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#3", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{ComplexF64}, Vector{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.LAPACK.var"##getrf!#3", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrf!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}, Mooncake.Dual{Tuple{Matrix{ComplexF64}, Vector{Int64}, Int64}, Tuple{Matrix{ComplexF64}, Vector{Mooncake.NoTangent}, Mooncake.NoTangent}}}}, false, 5}}})(_2::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, _3::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, _4::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, _5::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _6::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ Base.Experimental ./:0 [13] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}})(::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, ::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, ::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [14] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [15] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [16] _build_rule!(rule::Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, args::Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [17] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [18] #12 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [19] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{ComplexF64}, Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Mooncake.DerivedFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{ComplexF64}, Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.copyto_axcheck!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, Mooncake.LazyFRule{Tuple{typeof(ldivwith), Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{typeof(ldivwith), Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(ldivwith), Mooncake.NoTangent}, Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._mapreduce), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{IndexLinear, Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{ComplexF64, ComplexF64}}}, false, 5}}})(_2::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, _3::Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ Base.Experimental ./:0 [20] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, ::Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [21] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [22] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [23] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#12#13", Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Matrix{ComplexF64}}, Nothing, Tuple{var"#12#13", Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Matrix{ComplexF64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Matrix{ComplexF64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#12#13", Tuple{}}, Mooncake.PreparedCacheInputSpec{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Matrix{ComplexF64}, Tuple{Int64, Int64}}}}, ::Tuple{var"#12#13", Mooncake.NoTangent}, ::Tuple{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, ::Tuple{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [24] testadjoint(::Function, ::Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [25] testadjoint(::Function, ::Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [26] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:111 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [33] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [34] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] ldivwith: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 Test threw exception Expression: testadjoint(((A, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 =# real(sum(ldivwith(A, lu(Matrix(A)), R))) end), A, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] _copyto_impl! @ ./array.jl:308 [inlined] [7] copyto! @ ./array.jl:299 [inlined] [8] copyto! @ ./array.jl:322 [inlined] [9] copy_similar @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/LinearAlgebra.jl:499 [inlined] [10] _lucopy @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:349 [inlined] [11] #lu#186 @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341 [inlined] [12] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#3", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{ComplexF64}, Vector{Int64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#3", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{ComplexF64}, Vector{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.LAPACK.var"##getrf!#3", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrf!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}, Mooncake.Dual{Tuple{Matrix{ComplexF64}, Vector{Int64}, Int64}, Tuple{Matrix{ComplexF64}, Vector{Mooncake.NoTangent}, Mooncake.NoTangent}}}}, false, 5}}})(_2::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, _3::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, _4::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, _5::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _6::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ Base.Experimental ./:0 [13] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}})(::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, ::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, ::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [14] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [15] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [16] _build_rule!(rule::Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, args::Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [17] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [18] #12 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [19] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{ComplexF64}, Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Mooncake.DerivedFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{ComplexF64}, Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.copyto_axcheck!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.LAPACK.getrs!), Char, Matrix{ComplexF64}, Vector{Int64}, Vector{ComplexF64}}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.LAPACK.getrs!), Char, Matrix{ComplexF64}, Vector{Int64}, Vector{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrs!), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}}, false, 5}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{ComplexF64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{ComplexF64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{ComplexF64, ComplexF64}}}, false, 7}}})(_2::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, _3::Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}) @ Base.Experimental ./:0 [20] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, ::Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [21] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [22] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [23] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#12#13", Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Vector{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Vector{ComplexF64}}, Nothing, Tuple{var"#12#13", Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Vector{ComplexF64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Vector{ComplexF64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#12#13", Tuple{}}, Mooncake.PreparedCacheInputSpec{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Vector{ComplexF64}, Tuple{Int64}}}}, ::Tuple{var"#12#13", Mooncake.NoTangent}, ::Tuple{Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, ::Tuple{Vector{ComplexF64}, Vector{ComplexF64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [24] testadjoint(::Function, ::Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [25] testadjoint(::Function, ::Hermitian{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [26] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:111 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [33] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [34] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] ldivwith: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 Test threw exception Expression: testadjoint(((A, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 =# real(sum(ldivwith(A, lu(Matrix(A)), R))) end), A, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] _copyto_impl! @ ./array.jl:308 [inlined] [7] copyto! @ ./array.jl:299 [inlined] [8] copyto! @ ./array.jl:322 [inlined] [9] copy_similar @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/LinearAlgebra.jl:499 [inlined] [10] _lucopy @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:349 [inlined] [11] #lu#186 @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341 [inlined] [12] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#3", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{ComplexF64}, Vector{Int64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#3", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{ComplexF64}, Vector{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.LAPACK.var"##getrf!#3", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrf!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}, Mooncake.Dual{Tuple{Matrix{ComplexF64}, Vector{Int64}, Int64}, Tuple{Matrix{ComplexF64}, Vector{Mooncake.NoTangent}, Mooncake.NoTangent}}}}, false, 5}}})(_2::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, _3::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, _4::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, _5::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _6::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ Base.Experimental ./:0 [13] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}})(::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, ::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, ::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [14] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [15] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [16] _build_rule!(rule::Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, args::Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [17] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [18] #12 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [19] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{ComplexF64}, Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Mooncake.DerivedFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{ComplexF64}, Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.copyto_axcheck!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, Mooncake.LazyFRule{Tuple{typeof(ldivwith), Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{typeof(ldivwith), Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(ldivwith), Mooncake.NoTangent}, Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{typeof(Base._mapreduce), typeof(identity), typeof(Base.add_sum), IndexLinear, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._mapreduce), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{IndexLinear, Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{ComplexF64, ComplexF64}}}, false, 5}}})(_2::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, _3::Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ Base.Experimental ./:0 [20] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, ::Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [21] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [22] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [23] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#12#13", Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Matrix{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Matrix{ComplexF64}}, Nothing, Tuple{var"#12#13", Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Matrix{ComplexF64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Matrix{ComplexF64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#12#13", Tuple{}}, Mooncake.PreparedCacheInputSpec{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Matrix{ComplexF64}, Tuple{Int64, Int64}}}}, ::Tuple{var"#12#13", Mooncake.NoTangent}, ::Tuple{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, ::Tuple{Matrix{ComplexF64}, Matrix{ComplexF64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [24] testadjoint(::Function, ::Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [25] testadjoint(::Function, ::Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [26] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:111 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [33] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [34] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] ldivwith: Error During Test at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 Test threw exception Expression: testadjoint(((A, R)->begin #= /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 =# real(sum(ldivwith(A, lu(Matrix(A)), R))) end), A, R) AD has hit a :(memmove) ccall. This should not happen. Please open an issue with a minimal working example in order to reproduce. This is true unless you have intentionally written a ccall to :memmove, in which case you must write a :foreigncall rule. It may not be possible to implement a :foreigncall rule if too much type information has been lost in which case your only recourse is to write a rule for whichever Julia function calls this one (and retains enough type information). Stacktrace: [1] error(::String, ::String, ::String, ::String, ::String, ::String) @ Base ./error.jl:54 [2] unexpected_foreigncall_error(name::Symbol) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:365 [3] frule!!(::Mooncake.Dual{typeof(Mooncake._foreigncall_), Mooncake.NoTangent}, ::Mooncake.Dual{Val{:memmove}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{Ptr{Nothing}}, Mooncake.NoTangent}, ::Mooncake.Dual{Tuple{Val{Ptr{Nothing}}, Val{Ptr{Nothing}}, Val{UInt64}}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{0}, Mooncake.NoTangent}, ::Mooncake.Dual{Val{:ccall}, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{UInt64, Mooncake.NoTangent}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}, ::Mooncake.Dual{Ptr{Nothing}, Ptr{Mooncake.NoTangent}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/rules/foreigncall.jl:409 [4] memmove @ ./cmem.jl:28 [inlined] [5] unsafe_copyto! @ ./genericmemory.jl:125 [inlined] [6] _copyto_impl! @ ./array.jl:308 [inlined] [7] copyto! @ ./array.jl:299 [inlined] [8] copyto! @ ./array.jl:322 [inlined] [9] copy_similar @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/LinearAlgebra.jl:499 [inlined] [10] _lucopy @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:349 [inlined] [11] #lu#186 @ /opt/julia/share/julia/stdlib/v1.12/LinearAlgebra/src/lu.jl:341 [inlined] [12] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#3", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{ComplexF64}, Vector{Int64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.LAPACK.var"##getrf!#3", Bool, typeof(LinearAlgebra.LAPACK.getrf!), Matrix{ComplexF64}, Vector{Int64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.LAPACK.var"##getrf!#3", Mooncake.NoTangent}, Mooncake.Dual{Bool, Mooncake.NoTangent}, Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrf!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}}, Mooncake.Dual{Tuple{Matrix{ComplexF64}, Vector{Int64}, Int64}, Tuple{Matrix{ComplexF64}, Vector{Mooncake.NoTangent}, Mooncake.NoTangent}}}}, false, 5}}})(_2::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, _3::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, _4::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, _5::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, _6::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ Base.Experimental ./:0 [13] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}})(::Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, ::Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, ::Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, ::Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, ::Mooncake.Dual{Tuple{}, Mooncake.NoTangent}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [14] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [15] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [16] _build_rule!(rule::Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, args::Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:563 [17] LazyFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:551 [inlined] [18] #12 @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [19] (::Tuple{Mooncake.LazyFRule{Tuple{Type{ArgumentError}, String}, Mooncake.DerivedFRule{Tuple{Type{ArgumentError}, String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{Type{ArgumentError}, Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Mooncake.Dual{ArgumentError, Tangent{@NamedTuple{msg}}}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{ComplexF64}, Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, Mooncake.DerivedFRule{Tuple{typeof(Base.copyto_axcheck!), Matrix{ComplexF64}, Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.copyto_axcheck!), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}}}, false, 3}}, Mooncake.LazyFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}}, Mooncake.DerivedFRule{Tuple{LinearAlgebra.var"##lu#186", @Kwargs{}, typeof(lu), Matrix{ComplexF64}, Tuple{}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{LinearAlgebra.var"##lu#186", Mooncake.NoTangent}, Mooncake.Dual{@Kwargs{}, Mooncake.NoTangent}, Mooncake.Dual{typeof(lu), Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Tuple{}, Mooncake.NoTangent}}, Mooncake.Dual{LU{ComplexF64, Matrix{ComplexF64}, Vector{Int64}}, Tangent{@NamedTuple{factors::Matrix{ComplexF64}, ipiv::Vector{Mooncake.NoTangent}, info::Mooncake.NoTangent}}}}}, true, 5}}, Mooncake.LazyFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Core.throw_inexacterror), Symbol, Type, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Core.throw_inexacterror), Mooncake.NoTangent}, Mooncake.Dual{Symbol, Mooncake.NoTangent}, Mooncake.Dual, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Union{}}}, false, 4}}, Mooncake.LazyFRule{Tuple{typeof(Base._throw_argerror), String}, Mooncake.DerivedFRule{Tuple{typeof(Base._throw_argerror), String}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base._throw_argerror), Mooncake.NoTangent}, Mooncake.Dual{String, Mooncake.NoTangent}}, Union{}}}, false, 2}}, Mooncake.LazyFRule{Tuple{typeof(LinearAlgebra.LAPACK.getrs!), Char, Matrix{ComplexF64}, Vector{Int64}, Vector{ComplexF64}}, Mooncake.DerivedFRule{Tuple{typeof(LinearAlgebra.LAPACK.getrs!), Char, Matrix{ComplexF64}, Vector{Int64}, Vector{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(LinearAlgebra.LAPACK.getrs!), Mooncake.NoTangent}, Mooncake.Dual{Char, Mooncake.NoTangent}, Mooncake.Dual{Matrix{ComplexF64}, Matrix{ComplexF64}}, Mooncake.Dual{Vector{Int64}, Vector{Mooncake.NoTangent}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}}, false, 5}}, Mooncake.LazyFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{ComplexF64}, Int64, Int64, Int64}, Mooncake.DerivedFRule{Tuple{typeof(Base.mapreduce_impl), typeof(identity), typeof(Base.add_sum), Vector{ComplexF64}, Int64, Int64, Int64}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{typeof(Base.mapreduce_impl), Mooncake.NoTangent}, Mooncake.Dual{typeof(identity), Mooncake.NoTangent}, Mooncake.Dual{typeof(Base.add_sum), Mooncake.NoTangent}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}, Mooncake.Dual{Int64, Mooncake.NoTangent}}, Mooncake.Dual{ComplexF64, ComplexF64}}}, false, 7}}})(_2::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, _3::Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, _4::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}) @ Base.Experimental ./:0 [20] (::MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}})(::Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, ::Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, ::Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}) @ MistyClosures ~/.julia/packages/MistyClosures/2vtLL/src/MistyClosures.jl:22 [21] DerivedFRule @ ~/.julia/packages/Mooncake/xJhq4/src/interpreter/forward_mode.jl:123 [inlined] [22] __call_rule @ ~/.julia/packages/Mooncake/xJhq4/src/utils.jl:639 [inlined] [23] value_and_derivative!!(::Mooncake.ForwardCache{Mooncake.DerivedFRule{Tuple{var"#12#13", Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Vector{ComplexF64}}, MistyClosures.MistyClosure{Core.OpaqueClosure{Tuple{Mooncake.Dual{var"#12#13", Mooncake.NoTangent}, Mooncake.Dual{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}}, Mooncake.Dual{Vector{ComplexF64}, Vector{ComplexF64}}}, Mooncake.Dual{Float64, Float64}}}, false, 3}, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Vector{ComplexF64}}, Nothing, Tuple{var"#12#13", Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Vector{ComplexF64}}, Base.RefValue{Union{Nothing, Tuple{Mooncake.NoTangent, Tangent{@NamedTuple{data::Tangent{@NamedTuple{m::Mooncake.NoTangent, n::Mooncake.NoTangent, colptr::Vector{Mooncake.NoTangent}, rowval::Vector{Mooncake.NoTangent}, nzval::Vector{ComplexF64}}}, uplo::Mooncake.NoTangent}}, Vector{ComplexF64}}}}, Nothing, Tuple{Mooncake.PreparedCacheInputSpec{var"#12#13", Tuple{}}, Mooncake.PreparedCacheInputSpec{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Tuple{Int64, Int64}}, Mooncake.PreparedCacheInputSpec{Vector{ComplexF64}, Tuple{Int64}}}}, ::Tuple{var"#12#13", Mooncake.NoTangent}, ::Tuple{Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}}, ::Tuple{Vector{ComplexF64}, Vector{ComplexF64}}) @ Mooncake ~/.julia/packages/Mooncake/xJhq4/src/interface.jl:2106 [24] testadjoint(::Function, ::Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}; rtol::Float64) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:66 [25] testadjoint(::Function, ::Symmetric{ComplexF64, SparseMatrixCSC{ComplexF64, Int64}}, ::Vararg{Any}) @ Main ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:59 [26] top-level scope @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:80 [27] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [28] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:82 [inlined] [29] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [30] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:111 [inlined] [31] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:1777 [inlined] [32] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] [33] macro expansion @ /opt/julia/share/julia/stdlib/v1.12/Test/src/Test.jl:677 [inlined] [34] macro expansion @ ~/.julia/packages/MooncakeSparse/TFhJf/test/core.jl:112 [inlined] Test Summary: | Pass Error Total Time Core | 68 32 100 14m27.5s Adjoint Consistency | 68 32 100 14m27.1s Float64 | 32 18 50 8m51.2s lmul | 12 12 24 6m58.4s rmul | 12 12 48.8s dot (3-arg) | 8 8 35.6s ldivwith | 6 6 26.3s ComplexF64 | 36 14 50 5m35.8s lmul | 18 6 24 3m43.8s rmul | 10 2 12 1m07.6s dot (3-arg) | 8 8 31.4s ldivwith | 6 6 12.1s RNG of the outermost testset: Random.Xoshiro(0x6a634184a19b6dc3, 0x9d584171f937a3d5, 0xe4df4afb2b20830f, 0x84173e32f62b9eba, 0x576b302720163fa3) ERROR: LoadError: Some tests did not pass: 68 passed, 0 failed, 32 errored, 0 broken. in expression starting at /home/pkgeval/.julia/packages/MooncakeSparse/TFhJf/test/runtests.jl:7 Testing failed after 1047.2s ERROR: LoadError: Package MooncakeSparse errored during testing Stacktrace: [1] pkgerror(msg::String) @ Pkg.Types /opt/julia/share/julia/stdlib/v1.12/Pkg/src/Types.jl:68 [2] test(ctx::Pkg.Types.Context, pkgs::Vector{PackageSpec}; coverage::Bool, julia_args::Cmd, test_args::Cmd, test_fn::Nothing, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool) @ Pkg.Operations /opt/julia/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:2538 [3] test @ /opt/julia/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:2387 [inlined] [4] test(ctx::Pkg.Types.Context, pkgs::Vector{PackageSpec}; coverage::Bool, test_fn::Nothing, julia_args::Cmd, test_args::Cmd, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool, kwargs::@Kwargs{io::IOContext{IO}}) @ Pkg.API /opt/julia/share/julia/stdlib/v1.12/Pkg/src/API.jl:552 [5] test(pkgs::Vector{PackageSpec}; io::IOContext{IO}, kwargs::@Kwargs{julia_args::Cmd}) @ Pkg.API /opt/julia/share/julia/stdlib/v1.12/Pkg/src/API.jl:169 [6] test(pkgs::Vector{String}; kwargs::@Kwargs{julia_args::Cmd}) @ Pkg.API /opt/julia/share/julia/stdlib/v1.12/Pkg/src/API.jl:157 [7] test @ /opt/julia/share/julia/stdlib/v1.12/Pkg/src/API.jl:157 [inlined] [8] #test#81 @ /opt/julia/share/julia/stdlib/v1.12/Pkg/src/API.jl:156 [inlined] [9] top-level scope @ /PkgEval.jl/scripts/evaluate.jl:223 [10] include(mod::Module, _path::String) @ Base ./Base.jl:306 [11] exec_options(opts::Base.JLOptions) @ Base ./client.jl:317 [12] _start() @ Base ./client.jl:550 in expression starting at /PkgEval.jl/scripts/evaluate.jl:214 PkgEval failed after 1489.92s: package tests unexpectedly errored