A comprehensive set of numeric libraries for Go, providing matrices, statistics, optimization, and graph algorithms.
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.
Go developers working on scientific computing, data analysis, machine learning, or engineering applications that require numerical algorithms.
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.
Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Critical sections use assembly code for speed, as noted in the README's build tags like 'noasm' to control optimizations, ensuring efficient numeric computations.
Covers linear algebra, statistics, optimization, and graph theory in one library, providing a wide range of tools for scientific computing without external dependencies.
Emphasizes correctness and Go compatibility, making it integrate smoothly with other Go projects and follow community best practices.
Releases are aligned with Go's six-month cycle, offering regular updates and stability for long-term development, as specified in the README.
Marked as 'unstable' with a yellow badge, indicating potential breaking changes between releases that could disrupt production code and require frequent updates.
Requires understanding of multiple build tags like 'safe' and 'bounds' to control assembly and safety features, adding setup overhead for developers.
As admitted in the README, floating point behavior can vary between compiler versions and architectures, potentially affecting numerical reproducibility in cross-platform projects.