# Strange error in computing trace on product of symbolic matrices in Symbolics.jl

**URL:** https://discourse.julialang.org/t/strange-error-in-computing-trace-on-product-of-symbolic-matrices-in-symbolics-jl/128598
**Category:** General Usage
**Tags:** linearalgebra, symbolics
**Created:** [May 1, 2025, 5:00pm UTC](https://discourse.julialang.org/t/strange-error-in-computing-trace-on-product-of-symbolic-matrices-in-symbolics-jl/128598 "2025-05-01T17:00:53Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![Shuvomoy\_Das\_Gupta](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/shuvomoy_das_gupta/32/10069_2.png) [@Shuvomoy\_Das\_Gupta](https://discourse.julialang.org/u/Shuvomoy_Das_Gupta)
#### Post date: [May 1, 2025, 5:00pm UTC](https://discourse.julialang.org/t/strange-error-in-computing-trace-on-product-of-symbolic-matrices-in-symbolics-jl/128598/1 "2025-05-01T17:00:53Z")

</div>

Dear All,

I am a new user of `Symbolics.jl` and using it to compute trace of product of two symbolic matrices. It seems that if I do not perform a `simplify.` on the product of the matrices, I get a strange error when computing the trace, but running `simplify.` on the product before computing trace works without any problem. My sample code is as follows. Am I doing anything wrong? I looked into how to use `LinearAlgebra` functions on symbolic matrices but could not find anything along this line. Any tips on correct usage/best practice will be much appreciated.

```julia
using Symbolics, LinearAlgebra

Symbolics.@variables A[1:3, 1:3], B[1:3, 1:3]

AMat = Symbolics.scalarize(A) 
# AMat is 
# Num[A[1, 1] A[1, 2] A[1, 3]; A[2, 1] A[2, 2] A[2, 3]; A[3, 1] A[3, 2] A[3, 3]]

BMat = Symbolics.scalarize(B)
# BMat is 
# Num[B[1, 1] B[1, 2] B[1, 3]; B[2, 1] B[2, 2] B[2, 3]; B[3, 1] B[3, 2] B[3, 3]]

CMat = AMat*BMat
# CMat is
# Any[A[1, 1]*B[1, 1] + A[1, 2]*B[2, 1] + A[1, 3]*B[3, 1] A[1, 1]*B[1, 2] + A[1, 2]*B[2, 2] + A[1, 3]*B[3, 2] A[1, 1]*B[1, 3] + A[1, 2]*B[2, 3] + A[1, 3]*B[3, 3]; A[2, 1]*B[1, 1] + A[2, 2]*B[2, 1] + A[2, 3]*B[3, 1] A[2, 1]*B[1, 2] + A[2, 2]*B[2, 2] + A[2, 3]*B[3, 2] A[2, 1]*B[1, 3] + A[2, 2]*B[2, 3] + A[2, 3]*B[3, 3]; A[3, 1]*B[1, 1] + A[3, 2]*B[2, 1] + A[3, 3]*B[3, 1] A[3, 1]*B[1, 2] + A[3, 2]*B[2, 2] + A[3, 3]*B[3, 2] A[3, 1]*B[1, 3] + A[3, 2]*B[2, 3] + A[3, 3]*B[3, 3]]

```

At this point running `tr(CMat)` gives the error:

```julia
Error: 
ERROR: MethodError: no method matching zero(::Type{Any})
This error has been manually thrown, explicitly, so the method may exist but be intentionally marked as unimplemented.

Closest candidates are:
  zero(::Type{Union{Missing, T}}) where T
   @ Base missing.jl:105
  zero(::Type{Union{}}, Any...)
   @ Base number.jl:310
  zero(::Type{Dates.Date})
   @ Dates C:\Users\username\.julia\juliaup\julia-1.11.3+0.x64.w64.mingw32\share\julia\stdlib\v1.11\Dates\src\types.jl:459
  ...

Stacktrace:
 [1] zero(::Type{Any})
   @ Base .\missing.jl:106
 [2] tr(A::Matrix{Any})
   @ LinearAlgebra C:\Users\username\.julia\juliaup\julia-1.11.3+0.x64.w64.mingw32\share\julia\stdlib\v1.11\LinearAlgebra\src\dense.jl:374
 [3] top-level scope
   @ c:\test.jl:18

```

However, if I run `tr(simplify.(CMat))` then I get the correct trace as intended:

`A[1, 1]*B[1, 1] + A[1, 2]*B[2, 1] + A[1, 3]*B[3, 1] + A[2, 1]*B[1, 2] + A[2, 2]*B[2, 2] + A[2, 3]*B[3, 2] + A[3, 1]*B[1, 3] + A[3, 2]*B[2, 3] + A[3, 3]*B[3, 3]`

What is going on here?

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [May 2, 2025, 2:31am UTC](https://discourse.julialang.org/t/strange-error-in-computing-trace-on-product-of-symbolic-matrices-in-symbolics-jl/128598/2 "2025-05-02T02:31:46Z")

</div>

Cmat isn’t inferred as having eltype Num so the generic fallback for tr isn’t able to build the accumulator variable. That should get an issue, should be easy to fix by making matmul return the same thing but with a Num eltype. Why it doesn’t do that by default needs an investigation though

---

<div class="post-metadata">

### Author: ![Shuvomoy\_Das\_Gupta](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/shuvomoy_das_gupta/32/10069_2.png) [@Shuvomoy\_Das\_Gupta](https://discourse.julialang.org/u/Shuvomoy_Das_Gupta)
#### Post date: [May 2, 2025, 3:36am UTC](https://discourse.julialang.org/t/strange-error-in-computing-trace-on-product-of-symbolic-matrices-in-symbolics-jl/128598/3 "2025-05-02T03:36:32Z")

</div>

Okay thanks for your comment @ChrisRackauckas !
