Skip to content

wildart/SmithNormalForm.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smith Normal Form

Build Status Coverage Status

The Smith normal form decomposition over integer domain implementation in Julia.

Installation

For Julia 1.1+, add BoffinStuff registry in the package manager, and proceed with the installation:

pkg> registry add https://github.com/wildart/BoffinStuff.git
pkg> add SmithNormalForm

Example

julia> using SmithNormalForm, LinearAlgebra

julia> M = [2 4 4; -6 6 12; 10 -4 -16]
3×3 Array{Int64,2}:
  2   4    4
 -6   6   12
 10  -4  -16

julia> F = smith(M)
Smith normal form:
[2 0 0; 0 6 0; 0 0 12]

julia> F.S
3×3 Array{Int64,2}:
  1   0  0
 -3   1  0
  5  -2  1

julia> F.T
3×3 Array{Int64,2}:
 1  2  2
 0  3  4
 0  1  1

julia> diagm(F)
3×3 Array{Int64,2}:
 2  0   0
 0  6   0
 0  0  12

julia> F.S*diagm(F)*F.T
3×3 Array{Int64,2}:
  2   4    4
 -6   6   12
 10  -4  -16

About

Smith normal form (SNF) decomposition

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages