Skip to content

Hecke.jlComputational number theory for everyone

A fast, open-source computer algebra system for computational number theory

Hecke.jl

Getting Started ​

Hecke.jl is a software package for the Julia programming language. Currently, Hecke.jl requires that a Julia version of at least 1.0 is installed (the latest stable Julia version will do). See https://julialang.org/downlaods/ for instructions on how to install Julia for your system.

Once a suitable version of Julia is installed, users can start a Julia REPL (e.g. by typing julia in the command line) and then enter the following commands to add Hecke.jl to their installation.

julia
julia> using Pkg

julia> Pkg.add("Hecke")

Afterwards, to use Hecke.jl in Julia, users can simply include the using Hecke command at the beginning of any session.

julia
julia> using Hecke
 _    _           _
| |  | |         | |         |  Software package for
| |__| | ___  ___| | _____   |  algorithmic algebraic number theory
|  __  |/ _ \/ __| |/ / _ \  |
| |  | |  __/ (__|   <  __/  |  Manual: https://thofma.github.io/Hecke.jl
|_|  |_|\___|\___|_|\_\___|  |  Version 0.37.6

julia>

Here's a quick example of using Hecke.jl to define a number field and compute its class group.

julia
julia> using Hecke

julia> Qx, x = QQ[:x];

julia> f = x^2 - 2*3*5*7;

julia> K, a = number_field(f, :a);

julia> OK = maximal_order(K);

julia> C, mC = class_group(OK);

julia> C
(Z/2)^2

Other examples of Hecke's usage can be found in the How-to Guides section of this website. More in-depth resources are provided by our Tutorials, which are guided walkthroughs to using Hecke, and by the Manual, which gives a complete list of Hecke's implemented functionality.

Features ​

Hecke currently provides functionality to enable a number of computations in number theory and commutative algebra. Some of the features implemented by Hecke include:

  • Number fields (absolute, relative, simple and non-simple),

  • Orders and ideals in number fields,

  • Class and unit group computations of orders,

  • Lattice enumeration,

  • Sparse linear algebra,

  • Class field theory,

  • Abelian groups,

  • Associative algebras,

  • Ideals and orders in (semisimple) associative algebras,

  • Locally free class groups of orders in semisimple algebras,

  • Quadratic and Hermitian forms and lattices.

See the Manual for a complete list of implemented functionality.

Citing Hecke ​

If your research depends on computations done with Hecke, please consider giving us a formal citation:

@inproceedings{nemo,
    author = {Fieker, Claus and Hart, William and Hofmann, Tommy and Johansson, Fredrik},
     title = {Nemo/Hecke: Computer Algebra and Number Theory Packages for the Julia Programming Language},
 booktitle = {Proceedings of the 2017 ACM on International Symposium on Symbolic and Algebraic Computation},
    series = {ISSAC '17},
      year = {2017},
     pages = {157--164},
  numpages = {8},
       url = {https://doi.acm.org/10.1145/3087604.3087611},
       doi = {10.1145/3087604.3087611},
 publisher = {ACM},
   address = {New York, NY, USA},
}

Contributing to Hecke ​

Hecke is an open-source software package licensed under the permissive BSD 2-Clause "Simplified" License. Copyright is held by Hecke's contributors https://github.com/thofma/Hecke.jl/graphs/contributors.

For users that would like to contribute to the development of Hecke.jl, please see the For Developers section of the manual.

Acknowledgement ​

Hecke is part of the OSCAR project and the development is supported by the Deutsche Forschungsgemeinschaft DFG within the Collaborative Research Center TRR 195.