Skip to content

Allocations in stabilizer computation of matrix group action. #5550

@simonbrandhorst

Description

@simonbrandhorst

Can the following stabilizer computation be made more performant, how? @fingolfin

julia> L = integer_lattice(gram=ZZ[2 1 -1 1 -1 -1 0 0 0 0 0 0 0 0 0 1; 1 2 -1 1 -1 0 0 0 0 0 0 0 0 0 0 1; -1 -1 2 0 1 0 0 0 0 0 0 0 0 0 0 -1; 1 1 0 2 -1 0 0 0 0 0 0 0 0 0 0 0; -1 -1 1 -1 2 0 0 0 0 0 0 0 0 0 0 0; -1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 -1; 0 0 0 0 0 0 2 1 -1 1 -1 -1 -2 -1 -2 -1; 0 0 0 0 0 0 1 2 -1 1 -1 -1 -2 -1 -2 -1; 0 0 0 0 0 0 -1 -1 2 0 0 0 2 0 2 1; 0 0 0 0 0 0 1 1 0 2 -1 -1 -1 -1 -1 0; 0 0 0 0 0 0 -1 -1 0 -1 2 1 1 1 2 1; 0 0 0 0 0 0 -1 -1 0 -1 1 2 1 1 1 1; 0 0 0 0 0 0 -2 -2 2 -1 1 1 4 1 3 2; 0 0 0 0 0 0 -1 -1 0 -1 1 1 1 2 0 0; 0 0 0 0 0 0 -2 -2 2 -1 2 1 3 0 6 3; 1 1 -1 0 0 -1 -1 -1 1 0 1 1 2 0 3 4]);

julia> G,_ = Oscar._isometry_group_via_decomposition(L);

julia> S1,S2,_ = Hecke._shortest_vectors_sublattice(L1);

julia> @time Oscar._overlattice_stabilizer(G, S1,S2)
  3.958768 seconds (6.28 M allocations: 253.096 MiB, 6.59% gc time)
(Matrix group of degree 16 over ZZ, Hom: matrix group -> G)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions