Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Go
  3. gonum

gonum

BSD-3-ClauseGov0.17.0

A comprehensive set of numeric libraries for Go, providing matrices, statistics, optimization, and graph algorithms.

Visit WebsiteGitHubGitHub
8.4k stars580 forks0 contributors

What is gonum?

Gonum is a comprehensive set of numeric libraries for the Go programming language that provides implementations of algorithms for matrices, statistics, optimization, and graph theory. It solves the problem of performing scientific computing and data analysis in Go by offering robust, performant numerical tools.

Target Audience

Go developers working on scientific computing, data analysis, machine learning, or engineering applications that require numerical algorithms.

Value Proposition

Developers choose Gonum because it provides a cohesive, well-tested collection of numerical libraries specifically designed for Go, with performance optimizations through assembly and a focus on correctness and idiomatic Go patterns.

Overview

Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more

Use Cases

Best For

  • Performing linear algebra operations with matrices in Go applications
  • Statistical analysis and probability calculations in Go programs
  • Solving optimization problems in scientific or engineering contexts
  • Implementing graph algorithms and network analysis in Go
  • Building machine learning or data science tools in Go
  • Developing scientific computing applications that require numerical precision

Not Ideal For

  • Projects requiring interactive data visualization or GUI components
  • Teams wanting a full-stack machine learning framework with pre-trained models
  • Applications with strict binary size constraints needing minimal dependencies

Pros & Cons

Pros

Performance with Assembly

Critical sections use assembly code for speed, as noted in the README's build tags like 'noasm' to control optimizations, ensuring efficient numeric computations.

Comprehensive Algorithm Suite

Covers linear algebra, statistics, optimization, and graph theory in one library, providing a wide range of tools for scientific computing without external dependencies.

Idiomatic Go Design

Emphasizes correctness and Go compatibility, making it integrate smoothly with other Go projects and follow community best practices.

Predictable Release Schedule

Releases are aligned with Go's six-month cycle, offering regular updates and stability for long-term development, as specified in the README.

Cons

Unstable API

Marked as 'unstable' with a yellow badge, indicating potential breaking changes between releases that could disrupt production code and require frequent updates.

Complex Build Configuration

Requires understanding of multiple build tags like 'safe' and 'bounds' to control assembly and safety features, adding setup overhead for developers.

Floating Point Inconsistencies

As admitted in the README, floating point behavior can vary between compiler versions and architectures, potentially affecting numerical reproducibility in cross-platform projects.

Frequently Asked Questions

Quick Stats

Stars8,418
Forks580
Contributors0
Open Issues226
Last commit3 days ago
CreatedSince 2017

Tags

#scientific-computing#graph#graph-algorithms#statistics#matrix#matrix-operations#golang#linear-algebra#numerical-computing#optimization#data-analysis#go

Built With

G
Go
a
assembly

Links & Resources

Website

Included in

Go169.1k
Auto-fetched 16 hours ago

Related Projects

statsstats

A well tested and comprehensive Golang statistics library package with no dependencies.

Stars3,022
Forks174
Last commit7 days ago
plotplot

A repository for plotting and visualizing data

Stars2,962
Forks202
Last commit3 months ago
goslgosl

Linear algebra, eigenvalues, FFT, Bessel, elliptic, orthogonal polys, geometry, NURBS, numerical quadrature, 3D transfinite interpolation, random numbers, Mersenne twister, probability distributions, optimisation, differential equations.

Stars1,877
Forks148
Last commit6 months ago
streamtoolsstreamtools

tools for working with streams of data

Stars1,311
Forks104
Last commit2 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub