Hi everyone,
I’m happy to announce the release of TypedMatrices.jl v1.2.0!
This version marks a feature-complete and stable milestone, ready for use in research, teaching, and numerical software development.
Overview
TypedMatrices.jl provides a collection of matrix types that integrate seamlessly with Julia’s LinearAlgebra
module. Each matrix type is a subtype of AbstractMatrix
and is designed to be stored and computed efficiently. This package aims to cater to a variety of use cases: anywhere special matrices with known properties are needed.
For more information, you can check our previous announcement, our GitHub repository, or the package’s documentation.
If you’ve used TypedMatrices.jl in your research, workflows, or teaching, I’d love to hear your feedback and suggestions for future versions!
Getting Started
Try TypedMatrices.jl
with the Getting Started guide.
Here is a rundown of the basic features.
-
Browse available test matrices
julia> matrix_list = list_matrices() 63-element Vector{Type{<:AbstractMatrix}}: Hilbert Pei Wathen Moler Golub Rohess Redheff Toeplitz Chow Cycol ⋮ Ipjfact Lehmer Companion InverseHilbert Riemann Dramadah RIS Randjorth Smoke
-
Generate a given test matrix
julia> h = Hilbert(5) 5×5 Hilbert{Rational{Int64}}: 1 1//2 1//3 1//4 1//5 1//2 1//3 1//4 1//5 1//6 1//3 1//4 1//5 1//6 1//7 1//4 1//5 1//6 1//7 1//8 1//5 1//6 1//7 1//8 1//9
-
List all supported properties
julia> list_properties() 37-element Vector{Property}: Property(:positive) Property(:correlation) Property(:random) Property(:regprob) Property(:sparse) Property(:totnonneg) Property(:inverse) Property(:nilpotent) Property(:indefinite) Property(:tridiagonal) ⋮ Property(:normal) Property(:rectangular) Property(:posdef) Property(:diagdom) Property(:eigen) Property(:hessenberg) Property(:unimodular) Property(:singval) Property(:toeplitz)
-
List all properties that a test matrix satisfies
julia> properties(Hilbert) 6-element Vector{Property}: Property(:symmetric) Property(:inverse) Property(:hankel) Property(:illcond) Property(:posdef) Property(:totpos)
-
Run an algorithm on all matrices satisfying a given list of properties
julia> function sum_elements(A::AbstractMatrix) return sum(A) end sum_elements (generic function with 1 method) julia> test_algorithm( sum_elements, [1, 2, 3, 4], props=[ Property(:symmetric), Property(:posdef), Property(:eigen), Property(:inverse) ], ignore_errors=true ) 10-element Vector{Any}: (Minij, 1, 1) (Minij, 2, 5) (Minij, 3, 14) (Minij, 4, 30) (Pascal, 1, 1) (Pascal, 2, 5) (Pascal, 3, 19) (Pascal, 4, 69) (Poisson, 1, 4) (Poisson, 4, 8)