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

Overview

Gonum

Build status Build Status Build status codecov.io coveralls.io go.dev reference GoDoc Go Report Card stability-unstable

Installation

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

go get -u gonum.org/v1/gonum/...

Supported Go versions

Gonum supports and tests using the gc compiler on the two most recent Go releases on Linux (386, amd64 and arm64), macOS and Windows (both on amd64).

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:

  • safe — do not use assembly or unsafe
  • bounds — use bounds checks even in internal calls
  • cblas — use CGO gonum.org/v1/netlib/blas/netlib 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)

Issues TODOs

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.

https://groups.google.com/forum/#!forum/gonum-dev

License

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.

The W3C test suites in graph/formats/rdf are distributed under both the W3C Test Suite License and the W3C 3-clause BSD License.

Comments
  • fourier: new package for fourier analysis and related functions

    fourier: new package for fourier analysis and related functions

    Please take a look.

    So far I have only added the backing code. I want to add CFFT[IFB] and then I will dismantle some of the array.go support (remove 1-based indexing and the linear support types). It makes sense to add the API in this PR, so suggestions welcome here.

    opened by kortschak 33
  • meta-issue: document deprecation of all old gonum/xyz repos

    meta-issue: document deprecation of all old gonum/xyz repos

    (putting it there, feel free to redirect to the best place)

    we should clearly put on all the old gonum/xyz repositories' README.md that these repos are deprecated and that issues, PRs should be redirected at gonum/gonum.

    I don't think we clearly communicated this.

    opened by sbinet 32
  • optimize: completely overhaul Global

    optimize: completely overhaul Global

    The previous implementation of Global was a minefield for incorrectly implementing global optimization methods. It was very difficult to correctly implement methods (both of the provided methods were incorrect), and the resulting code is very ugly. This commit switches to use channels to communicate, allowing a more clear ordering of concurrent code. This also enables better shutdown of methods.

    In addition to the main fix of Global, this refactors the two Global methods to use the updated interface, and makes some small improvements that were previously not possible. In addition, there are some small cleanups of Local to better match between the two calls.

    If anyone has been curious about what is meant by 'Don't communicate by sharing memory, share memory by communicating' this is it, and why.

    opened by btracey 31
  • stat/spatial: new package for spatial statistic measures

    stat/spatial: new package for spatial statistic measures

    @btracey @vladimir-ch @Armadilloa16 @ReubenBuck Please take a look.

    This is commit one of ~~two~~ three. The ~~second~~ final commit will add element-wise weights, after the API is otherwise settled.

    Possible considerations are adding a reset method to allow data/locality reuse.

    opened by kortschak 22
  • floats: add SameScalars to compare two float64 values with NaN == NaN.

    floats: add SameScalars to compare two float64 values with NaN == NaN.

    What

    floats/floats.go has a function

    // Same returns true if the input slices have the same length and all elements
    // have the same value with NaN treated as the same.
    func Same(s, t []float64) bool {
    ...}
    

    I would like to add there a function SameScalars which does the same for scalar inputs:

    // SameScalars returns true if the inputs have the same value with NaN treated as the same.
    func SameScalars(a, b float64) bool {
    	return a == b || (math.IsNaN(a) && math.IsNaN(b))
    }
    

    Rationale

    Such a function will be useful for unit testing functions which are expected to return NaNs for some inputs.

    Updated proposal

    Rename Same to AllSame (breaks code) and call the new function Same.

    stability 
    opened by romanwerpachowski 21
  • unit: Intermittent test failure in TestFormat

    unit: Intermittent test failure in TestFormat

    I seem to be getting an occasional test failure in TestFormat (and travis-ci does as well):

    --- FAIL: TestFormat (0.00 seconds) unit_test.go:44: Format "%#v": got: "&unit.Unit{dimensions:unit.Dimensions{6:-1, 4:2}, formatted:"", value:6.62606957e-34}" expected: "&unit.Unit{dimensions:unit.Dimensions{4:2, 6:-1}, formatted:"", value:6.62606957e-34}" FAIL

    go test -race doesn't find anything wrong.

    opened by jonlawlor 20
  • stat: ROC signature

    stat: ROC signature

    I came up with what I think is an improvement to the ROC function, in which the cutoffs are defined explicitly instead of the number of cutoffs n. This allows for unequally-spaced cutoffs, allows for all cutoffs to be used more naturally, and simplifies the code itself.

    Is this a good idea -- should I put a PR in for it, @sbinet @kortschak ?

    Also, I was thinking maybe ROC should output an error as well, instead of all the panic statements? Or is it appropriate that it panic?

    What I did is here, in case you wanted to look at the specifics of what I am suggesting: https://github.com/Armadilloa16/stat/tree/roc

    stability 
    opened by Armadilloa16 20
  • floats: adding AreUnique

    floats: adding AreUnique

    While discussing a PR (https://github.com/gonum/floats/pull/61) on the floats package before the merger, it was suggested that an AreUnique function would be useful.

    waiting for answer 
    opened by zeroviscosity 20
  • lapack: add Dorgr2 routine

    lapack: add Dorgr2 routine

    Disclaimer: Only tested with square matrices since that's all I seem to be able to generate with constructQK helper.

    ARE issue: https://github.com/gonum/gonum/issues/1651

    opened by soypat 19
  • Interp

    Interp

    interp: This change modifies Gonum by adding a new interp/ package with interpolation algorithms.

    I implemented three basic 1D interpolators so far:

    • constant
    • piecewise linear
    • piecewise constant

    Submitting a PR now to start the review process and adjust the code design & style to the project requirements, before I go down some rabbit hole ;-)

    Cheers, Roman

    opened by romanwerpachowski 19
  • mat: add Doer interface and implementations

    mat: add Doer interface and implementations

    This is a proposal for an approach to optimising sparse or sparsish matrix accesses raised in https://github.com/gonum/gonum/pull/124#discussion_r126201816

    ~~Only https://github.com/gonum/gonum/commit/2eb65a280581fdb47fa2714f84b793f652ccbb58 is relevant to this PR and I'll revise the history of the PR when #95 is merged.~~

    Depends #95.

    opened by kortschak 19
  • `stat.Quantile` returns wrong value when dataset is even size

    `stat.Quantile` returns wrong value when dataset is even size

    What are you trying to do?

    I'm trying to get median value when I request even size of dataset to stat.Quantile

    What did you do?

    func main() {
    	xs := []float64{2, 3, 5, 9}
    	median := stat.Quantile(0.5, stat.Empirical, xs, nil)
    
    	fmt.Println(median)
    }
    

    https://go.dev/play/p/8b6vDMunna8

    What did you expect to happen?

    I expect return value 4

    What actually happened?

    its returns 3

    What version of Go and Gonum are you using?

    1.19

    Does this issue reproduce with the current master?

    Yes

    opened by Iriko0606 6
  • Add noise generation functionality

    Add noise generation functionality

    What are you trying to do?

    Create simplex noise in 2D.

    What did you try?

    Created my own package here: https://github.com/soypat/decaffeinator/blob/main/tagalong/pkg-noise/simplex.go

    How does Gonum not allow you to achieve your goal?

    I was not able to find noise generation in gonum.

    Are you able to help contribute the feature?

    Yes, see above link.

    opened by soypat 0
  • distuv NonCentralT

    distuv NonCentralT

    What are you trying to do?

    The current implementation of the StudentsT distribution doesn't allow you to specify a non-centrality parameter ($\delta$). This would be useful because the noncentral-t distribution is useful for power analyses and in Bayesian inference (my personal usecase)

    Are you able to help contribute the feature?

    See #1819: I'm currently using translations I've made of R's nmath C library, and these translations could be used as the basis for this.

    opened by ljcolling 0
  • distuv LogCDF

    distuv LogCDF

    What are you trying to do?

    Currently all the distributions have a CDF method. However, in addition to this, I think a LogCDF method would be useful. This would necessitate performing the calculations on the log scale, because simply taking the log of the CDF won't have sufficient accuracy.

    For example,

    dist := distuv.StudentsT{
    		Mu:    0.0,
    		Sigma: 1,
    		Nu:    33,
    		Src:   nil,
    	}
    
    math.Log(dist.CDF(23)) // returns 0
    

    Compared with the equivalent R code

    pt(q = 23, df = 33, ncp = 0, lower.tail = TRUE, log.p = TRUE) 
    # [1] -3.43213e-22
    

    Are you able to help contribute the feature?

    I'm happy to help contribute to this. I'm currently using translations I've made of R nmath C library, and these translations could be used as the basis for this.

    opened by ljcolling 2
  • spatial/r3: Transformer interface and scope of r3 package

    spatial/r3: Transformer interface and scope of r3 package

    Is it too late to consider the following change to r3? Feel like a huge opportunity was missed when naming the Rotate method for Rotation. This would really simplify things on my end for the sdf package.

    // Could be defined on user side, no need for it to be in r3
    type Transformer interface {
        Apply(Vec) Vec
    }
    
    var _ Transformer = Rotation{}
    var _ Transformer = Transform{}
    

    Suggest adding Apply method and marking Rotate as deprecated as was done with Vec methods.

    opened by soypat 8
Releases(v0.12.0)
  • v0.12.0(Sep 4, 2022)

    Release v0.12.0 is a minor release in the v0.12 branch.

    API breaking changes:

    8af7678e spatial/{r2,r3}: remove deprecated method functions

    API deprecations:

    c5022baf spatial/r3: deprecate Skew package level function in favor of method

    API additions since v0.11.0:

    0bc95eb1 spatial/r3: add Jacobian 6f1c6091 1fbf8fb7 spatial/r3: add Gradient 177c87ad b8506697 spatial/r3: add Hessian 4ee7932b spatial/r3: add Divergence cb02874d num/quat: add PowReal function 67f3e1db spatial/r3: add Triangle 7a3f4f57 spatial/r2: add Triangle c79d628c spatial/r3: add Box 7bc21251 spatial/r2: add Box 143fb433 mat: add non-zero doers for TriBandDense 1c2a04cc lapack/lapack64: add Lapmr f256ef8d lapack/gonum: add Dlapmr

    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(Mar 16, 2022)

    Release v0.11.0 is a minor release in the v0.11 branch.

    API breaking changes:

    8e83e047 lapack/gonum: remove Dcombssq 3d32334f mat: rename Symmetric method to SymmetricDim e99241cb mat: remove unused BandWidther interface e1d07cd7 mat: rename Tridiag.Clone to CloneFromTridiag

    Fixes since v0.9.3:

    d891e94e lapack/gonum: fix length check in Dlaswp 094b8d86 integrate/quad: fix hermite initial guess bug 8d530b64 graph/path: fix YenKShortestPaths e4c04dde lapack/gonum: prevent division of untyped ints always yielding zero in Dlasy2 (#1653) d1303f03 internal/asm/f64: fix bug and clean up variable names 13102a11 lapack/gonum: fix infinite loop in Dlartg with Inf or NaN input

    API additions since v0.9.3:

    09c7f513 graph/formats/rdf: extend graph query API (d5f7a1db) f96a8ce8 spatial/r3: add Mat Outer,Det methods (809af933 f4e71147 8e43cfd1 ca23770c) 1f712d5e graph/formats/rdf: add deduplication function ce4adcfb lapack/lapack64: add Pstrf 820f2999 graph/formats/rdf: add a graph implementation and graph query language for RDF graphs 83564ec5 graph/coloring: new package providing graph coloring functions (d4eca1bb 4536514e e18dc693) 538cdf8f spatial/r3: add Mat type (735c35c0) 855d38eb stat/distuv: add logistic distribution 295bfca7 lapack: add Dlatdf 2ef9ae2c lapack/gonum: add Dpstrf and its test cccd8af5 graph/iterator: update map iteration to tolerate changes in reflect 94959ac7 lapack/gonum: add Dpstf2 and its test aad20655 graph/formats/rdf: add equi-canonicalisation function b54f851e lapack: add Dlag2 subroutine d90a6d64 lapack/gonum: add Dorgr2 5ed77756 graph/{iterator,multi}: use map iterators for lines and weighted lines 32fa6875 interp: add not-a-knot cubic spline interpolator (#1679) 44e84bef lapack/gonum: add Dgesv 2600994e spatial/r3: add method to obtain a rotation matrix c0f40d78 lapack/gonum: add Dgesc2 (#1652) e102cf23 interp: add ClampedCubic interpolator (#1662) 4bb8d026 interp: Add NaturalCubic spline interpolator (#1657) cafcbe48 lapack/gonum: add Dgetc2 (#1655) 0acd6516 stat/distuv: add chi distribution 97f387b3 graph/encoding: provide attribute handling out of the box a683c830 graph/graphs/gen: add breadth-first n-ary tree constructor 1671d981 internal/math32: add Max and Min ea5c577f cmplxs: add conjugate multiplies and real scales 3de5d6c6 mat: return ErrZeroLength when size is zero and document it 544b314c mat: add Normer interface and use it in Norm (32854e3c d440876c dd45c215 06f3d524 f712ff20 d4333513 c935d6f1 35f38e4c 7d9d51f3 41e3de04) 142fecac lapack/{gonum,testlapack}: add Dlangb and its test (d66e8d4b) 3f0deff2 graph/formats/rdf: add URDNA2015 and URGNA2012 canonicalisation 782095d1 graph/formats/rdf: implement canonicalisation hashing (a6eddb68) 11e9fee1 stat: add TOC function (60db4fc8) c297b7e2 lapack/gonum: check for overflow in Dtgsja 49182b1e mat: add support for tridiagonal matrices 3ace57a6 floats: add ArgsortStable function 76f2be9a graph/graphs/gen: add simple graph construction functions (326e41eb) 6e718dda add f32 sum 7a88995c lapack/gonum: rewrite Dlartg to use safe scaling from https://doi.org/10.1145/3061665 a6ddba7f graph/{multi,simple,testgraph}: add support for ID-specified node addition

    Source code(tar.gz)
    Source code(zip)
  • v0.9.3(Jun 30, 2021)

    Release v0.9.3 is a bug fix release in the v0.9 branch.

    Fixes since v0.9.2:

    6b90107d graph/multi: use more efficient and correct direction dedup logic 8db1bdc9 graph/multi: use correct test for empty iterator

    Source code(tar.gz)
    Source code(zip)
  • v0.9.2(Jun 17, 2021)

    Release v0.9.2 is a bug fix release in the v0.9 branch.

    Fixes since v0.9.1:

    89503b36 spatial/vptree: don't do no work when n is greater than len(s) cb266191 spatial/vptree: fix vantage point search when variance is zero 7324daab graph/encoding/dot: don't panic when an Attributers returns a nil 7e548121 stat: explicitly panic when calling CDF with empty x 3fa38a7a stat: explicitly panic when calling Quantile with empty x fc1cd362 graph/encoding/{,di}graph6: fix bit handling for graph size encoding 95f17eff graph/iterator: fix Len for depleted ImplicitNodesIterator

    Source code(tar.gz)
    Source code(zip)
  • v0.9.1(Mar 30, 2021)

    Release v0.9.1 is a minor release in the v0.9 branch.

    Fixes since v0.9.0:

    85aaecea graph/flow: improve consistency of coverage reports 274425af graph/traverse: fix depth first traversal order and tighten tests eaef8273 internal/asm/f32: add assembly Sum implementation (6ac0a475, 3b45c29c and a845a6a8) 59304b04 internal/asm/f64: fix bug and clean up variable names f0bf4629 stat/mds: add warning about ED numerical stability 3235e0aa interp: Fix error in calculateSlopes for two (X, Y) points

    Source code(tar.gz)
    Source code(zip)
  • v0.9.0(Mar 10, 2021)

    Release v0.9.0 is a minor release in the v0.9 branch.

    API breaking changes:

    fa55f91e floats: remove deprecated functions c9092a1e spatial/r2,all: harmonize r2.Vec API with r3.Vec API 3199e478 spatial/r3: harmonize Vec API with num/quat.Number

    API changes deprecating functions:

    c9092a1e spatial/r2,all: harmonize r2.Vec API with r3.Vec API

    Fixes since v0.8.2:

    42babc57 stat: bring ROC doc comment into line with logic inversion 8c54bb4d stat: fix ROC cutoffs b096af22 graph/internal/uid: test and fix overflow bug d9dc91b5 unit: add Copy method and documentation to avoid unexpected sharing 84c458a6 graph/{multi,testgraph}: make line ID allocation per node pair db381b03 graph/{multi,simple,testgraph}: fix edge reversal tests and multi.WeightUndirected e2a07cfc graph/encoding/dot: fix line visit marking d24ce685 spatial/r2: implement Rotate 9c062003 spatial/r3: implement Rotate 609dabd3 graph/path: fix empty iterator comparison 5289638e dsp/fourier: fix TestReversePairs for 32 bit architectures f2b03354 mat: fix Dense.Inverse 8c1f90ca graph/community: add threshold for modularity gain bd0b526f mat: fix GrowSym behaviour for Reset matrices de0df9a8 lapack/gonum: fix underflow in Dlanv2 7dc1a896 Revert "dsp/window: use half offset to exclude flanking zeros"

    API additions since v0.8.2:

    aeb04daa stat: add population (biased) variants of Variance, StdDev, MeanVariance and MeanStdDev (#1570) d39af6a7 graph/formats/rdf: new package for RDF N-Quad parsing 676e4157 dsp/window: add Values.TransformTo window functions and example 1c2011e5 mat: add non-conjugate transpose for complex matrices 9076f1c7 graph/set/uid: make uid package publicly available 3d5d9d4a graph/path: allow incremental Bellman-Ford search 6e9ca7de mat: add Caps, Grow and Slice methods to CDense 6703b9cb lapack: add Dgtsv d989c502 lapack: add Dlagtm ec417b42 lapack: add Dlangt 0edb751d lapack64: add Tridiagonal type d520c6cf mat: add TriBandDense.SolveVec and SolveVecTo d4de93a5 dsp/fourier: add radix-2 and radix-4 in-place FFTs 162472b1 lapack64: add Tbtrs f8d6e5e5 lapack: add Dtbtrs 971fc50f mat: add BandCholesky type a9c58dba lapack64: add Lansb and Lantb 9c9ecbc3 lapack64: add Pbcon 79f5b08d mat: add TriBandDense.ReuseAsTriBand 880b710e dsp/window: add Tukey window function and simplify tests 2145bae3 stat/distmat: add UnitVector a uniform distribution over surface of an n-sphere c4c4cbff interp: Add Fritsch-Butland piecewise cubic interpolation method

    Source code(tar.gz)
    Source code(zip)
  • v0.8.2(Dec 2, 2020)

    Release v0.8.2 is a minor release in the v0.8 branch.

    Fixes since v0.8.1:

    76901c20 mat: fix build for 32-bit architectures 8408ae37 graph/encoding/{digraph6,graph6}: allow packages to build on 32-bit arches 0932d965 graph/layout: allow Isomap tests to pass on GOARCH=386 a905291c stat/combin: allow Binomial tests to pass on GOARCH=386 de45d76e graph/encoding/dot: don't propagate edge-setting panics when unmarshaling DOT b42ef166 stat/samplemv: don't let Halton overflow on 32 bit architectures 9591cae3 graph/path: fix path extension 89156a00 graph/path: fix Bellman-Ford negative cycle detection for 32 bit architectures c6329a47 travis: test on 386 37d1de1d graph/encoding/dot: fix line visit marking (and 5ca75a94)

    Source code(tar.gz)
    Source code(zip)
  • v0.8.1(Aug 22, 2020)

    Release v0.8.1 is a minor release in the v0.8 branch.

    API breaking changes:

    d37b7441 stat/distuv: add Score method to Triangle and Uniform 5f268d93 mat: rename CloneVec to CloneFromVec

    API changes deprecating functions:

    da72779e floats/scalar: new package containing non-vector functions from floats

    API additions since v0.7.0:

    5c397b63 lapack/gonum,lapack64: add Dlantb (also 0af61889) 755716c1 stat/distmat: add UniformPermutation 4f194cd6 cmplxs/cscalar: new package containing non-vector functions from cmplxs da72779e floats/scalar: new package containing non-vector functions from floats d08c7b38 stat/distuv: add AlphaStable distribution 9ae0689d graph/path: add option to retain all paths from single-source path finding routines 551d33a2 Add a new interp package with interpolation algorithms: constant, piecewise linear and piecewise constant (also aa5949fd and 41a8e221) 39cd12e9 graph/iterator: add lazy ordered node iterators d4ef54c8 graph/iterator: implement edge and line based lazy node iterator (also f0f9a9ea, a961bdee and 2bf857dc) c8de933f stat/distuv: add ScoreInput implementations for Uniform and Triangle 48db94dd mat: add SolveTo and SolveVecTo to SVD d37b7441 stat/distuv: add Score method to Triangle and Uniform b238fd60 cmplxs: new package complex128 cognate of floats (also 07022b18 and 0b5d99e9) b88fa1fd floats: add compensated summation using Neumaier's algorithm de92f8ef mat: provide mechanism to output Python and MATLAB syntax 448e2b6d spatial/{r2,r3}: add Cos, Unit 962425fc spatial/r{2,3}: add Norm and Norm2 def9e57a spatial/r2: implement Vec.Cross 20922778 spatial/r2: implement Vec.Dot e98ce15f spatial/r3: implement Vec.Cross 2321f504 spatial/r3: implement Vec.Dot a371667e lapack64: add Pbtrs 26da121a lapack64: add Pbtrf 9d7b98d9 lapack: add Dpb functions to Float64 interface bd8ede64 internal/testrand: random package for testing 4363550b mat: add TriDense.SliceTri b12183f0 mat: add MutableVector interface

    Source code(tar.gz)
    Source code(zip)
  • v0.7.0(Feb 29, 2020)

    Release v0.7.0 is a minor release in the v0.7 branch.

    Breaking API changes:

    d763153d fourier/...: move packages to within a dsp hierarchy

    API additions since v0.6.2:

    a3740047 mat: add MulVecTo to BandDense and SymBandDense 54b6ee19 dsp/window: new package for functions to control spectral leakage of FFT (also efc4dabf c9a7355e fd1732d5) ad4f952e mat: add Kronecker product function d5660976 mathext/prng: package for PRNG implementations (also 049d3cc4 f006c1b1) 32e5d00b stat/card: new package for cardinality estimation (also 118db88b) 48da12cd spectral: new package for spectral graph analysis (also f51e2079) 96934bab graph: add implicit graph complement type 91be6d11 graph/product: new package for constructing graph products (also b76c2d70 bfd8b33c 90165046) 3dd2e364 graph/topo: add Equal test for graph topology equality comparison

    Architecture support:

    all: added arm64 support (see #1218 for changes that were required for this)

    Source code(tar.gz)
    Source code(zip)
  • v0.6.2(Dec 25, 2019)

    Release v0.6.2 is a minor bug fix release in the v0.6 branch.

    Affected packages are unit/constant and the lapack/testlapack packages.

    c2fcfacf unit/constant: update the values and uncertainties for 2018 CODATA 402b1e28 lapack/testlapack: don't test unsupported matrix sizes in DlantrTest

    Source code(tar.gz)
    Source code(zip)
  • v0.6.1(Nov 20, 2019)

    Release v0.6.1 is a bug fix release in the v0.6 branch.

    Affected packages are unit, stat/combin, testlapack and the blas subpackages. API-breaking changes are in stat/combin and blas/{blas32,cblas64,cblas128} which now agree with other APIs in Gonum.

    8ecd41b3 unit: don't panic when multiplying dimless with dimensioned Uniter 875602b4 stat/combin: allow user allocation for Cartesian product f66caa0d stat/combin: fix spelling 00d19e2c stat/combin: fix incorrect bound 7d8e6c0e testlapack: allocate work only for MaxColumnSum in DlantrTest 7b7e86e4 blas/{blas64,cblas128}: test wrapping of blas interfaces 928fb88c blas/{cblas64,cblas128}: add length field to Vector 81f13612 blas/blas32: add length field to Vector ef62c3b6 blas/{blas32,blas64,cblas64,cblas128}: check vector length agreement

    Source code(tar.gz)
    Source code(zip)
Owner
Consistent, composable, and comprehensible scientific code
null
A well tested and comprehensive Golang statistics library package with no dependencies.

Stats - Golang Statistics Package A well tested and comprehensive Golang statistics library / package / module with no dependencies. If you have any s

Montana Flynn 2.6k Dec 3, 2022
GoStats is a go library for math statistics mostly used in ML domains, it covers most of the statistical measures functions.

GoStats GoStats is an Open Source Go library for math statistics mostly used in Machine Learning domains, it covers most of the Statistical measures f

Ilyes 19 Nov 10, 2022
2D triangulation library. Allows translating lines and polygons (both based on points) to the language of GPUs.

triangolatte 2D triangulation library. Allows translating lines and polygons (both based on points) to the language of GPUs. Features normal and miter

Tomasz Czajęcki 31 Nov 18, 2022
Package goraph implements graph data structure and algorithms.

goraph Package goraph implements graph data structure and algorithms. go get -v gopkg.in/gyuho/goraph.v2; I have tutorials and visualizations of grap

Gyuho Lee 699 Nov 18, 2022
Types and utilities for working with 2d geometry in Golang

orb Package orb defines a set of types for working with 2d geo and planar/projected geometric data in Golang. There are a set of sub-packages that use

Paul Mach 604 Dec 7, 2022
Sparse matrix formats for linear algebra supporting scientific and machine learning applications

Sparse matrix formats Implementations of selected sparse matrix formats for linear algebra supporting scientific and machine learning applications. Co

James Bowman 136 Sep 27, 2022
:wink: :cyclone: :strawberry: TextRank implementation in Golang with extendable features (summarization, phrase extraction) and multithreading (goroutine) support (Go 1.8, 1.9, 1.10)

TextRank on Go This source code is an implementation of textrank algorithm, under MIT licence. The minimum requred Go version is 1.8. MOTIVATION If th

David Belicza 167 Nov 27, 2022
Polygol - Boolean polygon clipping/overlay operations (union, intersection, difference, xor) on Polygons and MultiPolygons

polygol Boolean polygon clipping/overlay operations (union, intersection, differ

Jon Engelsman 11 Oct 8, 2022
Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more

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

null 6.2k Dec 2, 2022
Evolutionary optimization library for Go (genetic algorithm, partical swarm optimization, differential evolution)

eaopt is an evolutionary optimization library Table of Contents Changelog Example Background Features Usage General advice Genetic algorithms Overview

Max Halford 820 Nov 21, 2022
matex - extension of gonum.mat

matex - extension of gonum.mat

null 0 Dec 25, 2021
Convert Arabic numeric amounts to Chinese character

将阿拉伯数字金额转换为汉字的形式 Convert Arabic numeric amounts to Chinese character form. 安装使用 Golang 版本大于等于1.16 go get -u github.com/aliliin/rmb-character import (

高永立 4 Sep 9, 2021
Parsing of numeric ranges from string

expand-range Parsing of numeric ranges from string. Convert "1,3-5" into [1,3,4,5]. Installation go get -u github.com/n0madic/expand-range Usage Impor

Nomadic 0 Nov 28, 2021
Floppa programming language inspired by the brainf*ck programming language. Created just for fun and you can convert your brainf*ck code to floppa code.

Floppa Programming Language Created just for fun. But if you want to contribute, why not? Floppa p.l. inspired by the brainf*ck programming language.

null 19 Oct 20, 2022
Genetic Algorithm and Particle Swarm Optimization

evoli Genetic Algorithm and Particle Swarm Optimization written in Go Example Problem Given f(x,y) = cos(x^2 * y^2) * 1/(x^2 * y^2 + 1) Find (x,y) suc

Guillaume Simonneau 25 Sep 27, 2022
T# Programming Language. Something like Porth, Forth but written in Go. Stack-oriented programming language.

The T# Programming Language WARNING! THIS LANGUAGE IS A WORK IN PROGRESS! ANYTHING CAN CHANGE AT ANY MOMENT WITHOUT ANY NOTICE! Something like Forth a

T# 92 Jun 29, 2022
Yayx programming language is begginer friendly programming language.

Yayx Yayx programming language is begginer friendly programming language. What have yayx: Easy syntax Dynamic types Can be compiled to outhers program

null 1 Dec 27, 2021
Yayx programming language is begginer friendly programming language.

Yayx Yayx programming language is begginer friendly programming language. What have yayx: Easy syntax Dynamic types Can be compiled to outhers program

Yayx Programming Language 7 May 20, 2022
Distributed hyperparameter optimization framework, inspired by Optuna.

Goptuna Distributed hyperparameter optimization framework, inspired by Optuna [1]. This library is particularly designed for machine learning, but eve

Masashi SHIBATA 226 Nov 22, 2022
Go package for convex optimization

cvx Package cvx is a Go package for solving convex optimization problems. It is a straightforward translation of parts of the CVXOPT python package fo

Harri Rautila 24 Nov 23, 2022