gosl alternatives and similar packages
Based on the "Science and Data Analysis" category.
Alternatively, view gosl alternatives based on common mentions on social networks and blogs.
-
gonum
Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more -
gonum/mat64
DISCONTINUED. The general purpose package for matrix computation. Package mat64 provides basic linear algebra operations for float64 matrices. -
TextRank
:wink: :cyclone: :strawberry: TextRank implementation in Golang with extendable features (summarization, phrase extraction) and multithreading (goroutine). -
sparse
Sparse matrix formats for linear algebra supporting scientific and machine learning applications -
triangolatte
2D triangulation library. Allows translating lines and polygons (both based on points) to the language of GPUs. -
PiHex
PiHex Library, written in Go, generates a hexadecimal number sequence in the number Pi in the range from 0 to 10,000,000. -
GoStats
GoStats is a go library for math statistics mostly used in ML domains, it covers most of the statistical measures functions. -
mudlark-go
DISCONTINUED. A collection of packages providing (hopefully) useful code for use in software using Google's Go programming language.
CodeRabbit: AI Code Reviews for Developers

Do you think we are missing an alternative of gosl or a related project?
Popular Comparisons
README
Gosl - Go scientific library
Gosl is a set of tools for developing scientific simulations using the Go language. We mainly consider the development of numerical methods and solvers for differential equations but also present some functions for fast Fourier transforms, the generation of random numbers, probability distributions, and computational geometry.
This library contains essential functions for linear algebra computations (operations between all combinations of vectors and matrices, eigenvalues and eigenvectors, linear solvers) and the development of numerical methods (e.g. numerical quadrature).
We link Gosl with existent libraries written in C and Fortran, such as OpenBLAS, LAPACK, UMFPACK, MUMPS, QUADPACK and FFTW3. These existing libraries have been fundamental for the development of high-performant simulations over many years. We believe that it is nearly impossible to rewrite these libraries in native Go and at the same time achieve the same speed delivered by them. Just for reference, a naive implementation of matrix-matrix multiplication in Go is more than 100 times slower than OpenBLAS.
Installation
Because of the other libraries, the easiest way to work with Gosl is via Docker. Having Docker and VS Code installed, you can start developing powerful numerical simulations using Gosl in a matter of minutes. Furthermore, it works on Windows, Linux, and macOS out of the box.
Containerized
- Install Docker
- Install Visual Studio Code
- Install the Remote Development extension for VS Code
- Clone https://github.com/cpmech/hello-gosl
- Create your application within a container (see gif below)
Done. And your system will "remain clean."
[](zdocs/vscode-open-in-container.gif)
Debian/Ubuntu GNU Linux
First, install Go as explained in https://golang.org/doc/install
Second, install some libraries:
sudo apt-get install \
gcc \
gfortran \
libfftw3-dev \
liblapacke-dev \
libmetis-dev \
libmumps-seq-dev \
libopenblas-dev \
libsuitesparse-dev
Finally, download and compile Gosl:
git clone https://github.com/cpmech/gosl.git
cd gosl
./all.bash
Done. Installation completed.
Documentation
Gosl includes the following essential packages:
- chk. To check numerical results and for unit testing
- io. Input/output including printing to the terminal and handling files
- utl. To generate series (e.g. linspace) and other functions as in pylab/matlab/octave
- la. Linear Algebra: vector, matrix, efficient sparse solvers, eigenvalues, decompositions
Gosl includes the following main packages:
- fun. Special functions, DFT, FFT, Bessel, elliptical integrals, orthogonal polynomials, interpolators
- gm. Geometry algorithms and structures
- hb. Pseudo hierarchical binary (hb) data file format
- num. Fundamental numerical methods such as root solvers, non-linear solvers, numerical derivatives and quadrature
- ode. Solvers for ordinary differential equations
- opt. Numerical optimization: Interior Point, Conjugate Gradients, Powell, Grad Descent
- pde. Solvers for partial differential equations (FDM, Spectral, FEM)
- rnd. Random numbers and probability distributions
(see each subdirectory for more information)
For the sake of maintenance (see next section), we have removed the previous mpi
sub-package. However, we recommend the external library gompi if you plan to use MPI.
Previous version
The previous version, including more packages, is available here and can be used with the Docker image 1.1.3 as in this hello gosl example.
These other packages, such as machine learning, plotting, etc., have been removed because they do not depend on CGO and may be developed independently. We can now maintain the core of Gosl more efficiently, which has a focus on the foundation for other scientific code.