{"id":13413751,"url":"https://github.com/cpmech/gosl","last_synced_at":"2025-05-14T04:07:29.985Z","repository":{"id":27096278,"uuid":"30563502","full_name":"cpmech/gosl","owner":"cpmech","description":"Linear algebra, eigenvalues, FFT, Bessel, elliptic, orthogonal polys, geometry, NURBS, numerical quadrature, 3D transfinite interpolation, random numbers, Mersenne twister, probability distributions, optimisation, differential equations.","archived":false,"fork":false,"pushed_at":"2025-04-08T03:08:27.000Z","size":31186,"stargazers_count":1849,"open_issues_count":0,"forks_count":145,"subscribers_count":77,"default_branch":"main","last_synced_at":"2025-04-10T22:35:03.945Z","etag":null,"topics":["computational-geometry","differential-equations","eigenvalues","eigenvectors","fast-fourier-transform","linear-algebra","linear-programming","mersenne-twister","optimization","parallel-computations","scientific-computing","sparse-systems"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cpmech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-02-09T23:00:38.000Z","updated_at":"2025-04-09T03:27:26.000Z","dependencies_parsed_at":"2023-02-10T20:00:45.450Z","dependency_job_id":"bc726563-5fab-4943-b5cd-6c84173c959b","html_url":"https://github.com/cpmech/gosl","commit_stats":{"total_commits":2731,"total_committers":20,"mean_commits":136.55,"dds":"0.19333577444159644","last_synced_commit":"784b6a3c306df3fddd0e490b8732ef6677fb4075"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpmech%2Fgosl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpmech%2Fgosl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpmech%2Fgosl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpmech%2Fgosl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cpmech","download_url":"https://codeload.github.com/cpmech/gosl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254069112,"owners_count":22009491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computational-geometry","differential-equations","eigenvalues","eigenvectors","fast-fourier-transform","linear-algebra","linear-programming","mersenne-twister","optimization","parallel-computations","scientific-computing","sparse-systems"],"created_at":"2024-07-30T20:01:48.114Z","updated_at":"2025-05-14T04:07:29.954Z","avatar_url":"https://github.com/cpmech.png","language":"Go","funding_links":[],"categories":["Linear Algebra","Go","Science and Data Analysis","科学与数据分析","Golang","数据分析与数据科学","Relational Databases","\u003cspan id=\"科学和数据分析-science-and-data-analysis\"\u003e科学和数据分析 Science and Data Analysis\u003c/span\u003e","科学和数据分析"],"sub_categories":["Vector Database","HTTP Clients","交流","查询语","HTTP客户端","Advanced Console UIs","\u003cspan id=\"高级控制台用户界面-advanced-console-uis\"\u003e高级控制台用户界面 Advanced Console UIs\u003c/span\u003e"],"readme":"# Gosl - Go scientific library\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/cpmech/gosl.svg)](https://pkg.go.dev/github.com/cpmech/gosl)\n[![Go Report Card](https://goreportcard.com/badge/github.com/cpmech/gosl)](https://goreportcard.com/report/github.com/cpmech/gosl)\n[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/avelino/awesome-go)\n\nGosl 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. We also present some functions for fast Fourier transforms, the generation of random numbers, probability distributions, and computational geometry.\n\nThis 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).\n\nWe link Gosl with existing libraries written in C and Fortran, such as OpenBLAS, LAPACK, UMFPACK, MUMPS, QUADPACK, and FFTW3. These 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 achieve the same speed delivered by them. For reference, a naive implementation of matrix-matrix multiplication in Go is more than 100 times slower than OpenBLAS.\n\n## Installation\n\nBecause of the other libraries, Docker is the easiest way to work with Gosl. Having Docker and VS Code installed, you can start developing powerful numerical simulations using Gosl in a matter of minutes. Furthermore, it works out of the box on Windows, Linux, and MacOS.\n\n### Containerized\n\n1. Install Docker\n2. Install Visual Studio Code\n3. Install the Remote Development extension for VS Code\n4. Clone https://github.com/cpmech/hello-gosl\n5. Create your application within a container (see gif below)\n\nDone. And your system will \"remain clean.\"\n\n![](zdocs/vscode-open-in-container.gif)\n\n### Debian/Ubuntu GNU Linux\n\nFirst, install Go as explained in https://golang.org/doc/install\n\nSecond, install some libraries:\n\n```\nsudo apt-get install \\\n  gcc \\\n  gfortran \\\n  libfftw3-dev \\\n  liblapacke-dev \\\n  libmetis-dev \\\n  libmumps-seq-dev \\\n  libopenblas-dev \\\n  libsuitesparse-dev\n```\n\nFinally, download and compile Gosl:\n\n```\ngit clone https://github.com/cpmech/gosl.git\ncd gosl\n./all.bash\n```\n\nDone. Installation completed.\n\n## Documentation\n\nGosl includes the following _essential_ packages:\n\n- [chk](https://github.com/cpmech/gosl/tree/master/chk). To check numerical results and for unit testing\n- [io](https://github.com/cpmech/gosl/tree/master/io). Input/output, including printing to the terminal and handling files\n- [utl](https://github.com/cpmech/gosl/tree/master/utl). To generate series (e.g., linspace) and other functions as in pylab/matlab/octave\n- [la](https://github.com/cpmech/gosl/tree/master/la). Linear Algebra: vector, matrix, efficient sparse solvers, eigenvalues, decompositions\n\nGosl includes the following _main_ packages:\n\n- [fun](https://github.com/cpmech/gosl/tree/master/fun). Special functions, DFT, FFT, Bessel, elliptical integrals, orthogonal polynomials, interpolators\n- [gm](https://github.com/cpmech/gosl/tree/master/gm). Geometry algorithms and structures\n- [hb](https://github.com/cpmech/gosl/tree/master/hb). Pseudo hierarchical binary (hb) data file format\n- [num](https://github.com/cpmech/gosl/tree/master/num). Fundamental numerical methods such as root solvers, non-linear solvers, numerical derivatives, and quadrature\n- [ode](https://github.com/cpmech/gosl/tree/master/ode). Solvers for ordinary differential equations\n- [opt](https://github.com/cpmech/gosl/tree/master/opt). Numerical optimization: Interior Point, Conjugate Gradients, Powell, Grad Descent\n- [pde](https://github.com/cpmech/gosl/tree/master/pde). Solvers for partial differential equations (FDM, Spectral, FEM)\n- [rnd](https://github.com/cpmech/gosl/tree/master/rnd). Random numbers and probability distributions\n\n(see each subdirectory for more information)\n\nWe have removed the previous `mpi` sub-package for maintenance (see next section). However, if you plan to use MPI, we recommend the external library [gompi](https://github.com/sbromberger/gompi).\n\n## Previous version\n\nThe previous version, including more packages, is [available here ](https://github.com/cpmech/gosl/tree/stable-1.1.3) and can be used with the Docker image 1.1.3 as in this [hello gosl example](https://github.com/cpmech/hello-gosl-old-1.1.3).\n\nThese 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 more efficiently maintain the core of Gosl, which focuses on the foundation for other scientific codes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcpmech%2Fgosl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcpmech%2Fgosl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcpmech%2Fgosl/lists"}