Home

Awesome

SemiringAlgebra.jl

The doc/ directory includes a paper Novel Algebras for Advanced Analytics in Julia, which describes the motivation for this package and its design.

Example usage, see the bench() function in SemringAlgebra.jl.

julia> using Pkg; Pkg.add(PackageSpec(url = pwd())); Pkg.build()

julia> Pkg.test("SemiringAlgebra")

julia> using SemiringAlgebra

julia> SemiringAlgebra.bench(100)

100x100 Float64 array
  0.000345 seconds (2 allocations: 78.203 KiB)
100x100 MPNumber{Float64} array
  0.002951 seconds (8 allocations: 78.531 KiB)

100x100 Int64 array
  0.000643 seconds (8 allocations: 78.531 KiB)
100x100 MPNumber{Int64} array
  0.000465 seconds (8 allocations: 78.531 KiB)

100x100 sparse Float64 array (dense array in sparse format)
  0.116772 seconds (198.15 k allocations: 9.675 MiB)
100x100 sparse MPNumber{Float64} array (dense array in sparse format)
  0.102237 seconds (199.09 k allocations: 9.695 MiB)

100000x100000 sparse Float64 array (sprand(n,n,1/n))
  0.007495 seconds (20 allocations: 10.677 MiB)
100000x100000 sparse MPNumber{Float64} array (sprand(n,n,1/n))
  0.007558 seconds (20 allocations: 10.677 MiB)

100000x100000 sparse Float64 array (sprand(n,n,5/n))
  0.147927 seconds (22 allocations: 65.650 MiB, 4.86% gc time)
100000x100000 sparse MPNumber{Float64} array (sprand(n,n,5/n))
  0.146088 seconds (22 allocations: 65.650 MiB, 4.94% gc time)