Skip to content
Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more
Go Fortran Assembly TeX Shell MATLAB
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
THIRD_PARTY_LICENSES prng: Mersenne Twister PRNG implementations Nov 29, 2019
blas blas/{blas32,blas64,cblas64,cblas128}: check vector length agreement Nov 7, 2019
fourier fourier: relax example test tolerance Jan 12, 2020
graph graph/layout: differentiate arm64 layout golden images Jan 12, 2020
integrate integrate: small cleanup in Simpsons Oct 20, 2019
internal internal/asm: clean up tolerant testing Jan 14, 2020
lapack lapack/testlapack: don't test unsupported matrix sizes in DlantrTest Dec 23, 2019
mat mat: relax SymRankOne test from perfect identity Jan 12, 2020
mathext mathext: make MvLgamma test pass on arm64 Jan 12, 2020
num num: clean up lint Nov 1, 2019
optimize all: remove redundant bad prefix and make panic strings const Dec 2, 2019
spatial spatial/barneshut: clean up lint Nov 7, 2019
stat stat/mds: make TorgersonScaling tests pass on arm64 Jan 12, 2020
unit unit/constant: update the values and uncertainties for 2018 CODATA Dec 23, 2019
.travis.yml travis: allow failures on arm64 Jan 12, 2020
AUTHORS all: fix capitalisation of Gonum Nov 16, 2019 CONTRIBUTING: link to rather than repeating Mar 1, 2019 docs: fix link to LICENSE file Jan 5, 2020
CONTRIBUTORS all: fix capitalisation of Gonum Nov 16, 2019
LICENSE all: fix capitalisation of Gonum Nov 16, 2019
doc.go gonum: add Version query function Mar 5, 2019
go.mod graph/layout: new package for calculating graph layouts Jul 20, 2019
go.sum graph/layout: new package for calculating graph layouts Jul 20, 2019
gopher.png README: add stub and move licensing to front page May 23, 2017
version.go gonum: add Version query function Mar 5, 2019

Gonum Build Status Build status GoDoc Go Report Card stability-unstable


The core packages of the Gonum suite are written in pure Go with some assembly. Installation is done using go get.

go get -u

Supported Go versions

Gonum supports and tests on the two most recent Go releases on Linux, macOS and Windows.

Release schedule

The Gonum modules are released on a six-month release schedule, aligned with the Go releases. i.e.: when Go-1.x is released, Gonum-v0.n.0 is released around the same time. Six months after, Go-1.x+1 is released, and Gonum-v0.n+1.0 as well.

The release schedule, based on the current Go release schedule is thus:

  • Gonum-v0.n.0: February
  • Gonum-v0.n+1.0: August

Build tags

The Gonum packages use a variety of build tags to set non-standard build conditions. Building Gonum applications will work without knowing how to use these tags, but they can be used during testing and to control the use of assembly and CGO code.

The current list of non-internal tags is as follows:

  • appengine — do not use assembly or unsafe
  • safe — synonym for appengine
  • bounds — use bounds checks even in internal calls
  • cblas — use CGO BLAS implementation in tests (only in mat package)
  • noasm — do not use assembly implementations
  • tomita — use Tomita, Tanaka, Takahashi pivot choice for maximimal clique calculation, otherwise use random pivot (only in topo package)


If you find any bugs, feel free to file an issue on the github issue tracker. Discussions on API changes, added features, code review, or similar requests are preferred on the gonum-dev Google Group.!forum/gonum-dev


Original code is licensed under the Gonum License found in the LICENSE file. Portions of the code are subject to the additional licenses found in THIRD_PARTY_LICENSES. All third party code is licensed either under a BSD or MIT license.

Code in graph/formats/dot is dual licensed Public Domain Dedication and Gonum License, and users are free to choose the license which suits their needs for this code.

You can’t perform that action at this time.