Why isn't SymTridiagonal simply Symmetric(Tridiagonal)

Julia defines not only a Tridiagonal type but also a SymTridiagonal type.
Why is this type needed compared to Symmetric(Tridiagonal), that could still allow function specialization?

Possibly memory savings? Symmetric{<:Any, <:Tridiagonal} stores a Tridiagonal, which stores both the first superdiagonal and the first subdiagonal, while SymTridiagonal only stores one of those. I think very large SymTridiagonals are often used, so memory limitations could be a concern.

3 Likes