Skip to content
Go language interface to GMP - GNU Multiprecision Library (golang)
Go
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore Add _TESTS to .gitignore Dec 20, 2018
.travis.yml travis: update go versions and only run code quality on latest stable Dec 20, 2018
LICENSE
README.md
bench_extra_test.go Extra functions from GMP for speed. Sep 24, 2016
bench_gmp_test.go Make test use local package gmp (not from gmp_test import "github...") Sep 24, 2016
bench_math_big_test.go
docs.go
example_test.go Make test use local package gmp (not from gmp_test import "github...") Sep 24, 2016
int.go Fix errcheck errors May 31, 2018
int_extra.go
int_extra_test.go
int_test.go
rat.go Fixup code under static checkers errcheck, go vet, golint, goimports … Sep 24, 2016
rat_test.go Fixup code under static checkers errcheck, go vet, golint, goimports … Sep 24, 2016

README.md

Gmp

GoDoc Build Status

This package provides a drop in replacement for Go's built in math/big big integer package using the GNU Multiprecision Library (GMP).

GMP is very much faster than Go's math/big however it is an external C library with all the problems that entails (cgo, dependencies etc)

This library was made by taking the cgo example of wrapping GMP from the Go source and doing the following to it

  • Copying the implementation from misc/cgo/gmp/gmp.go
  • Copying the documentation from src/pkg/math/big/int.go
  • Additional implementation of missing methods
  • Bug fixes for existing implementations
  • Making it passes the test suite from src/pkg/math/big/int_test.go
  • Adding memory management
  • Fix problems on 32 bit platforms when using int64 values which don't fit into a C.long
  • Implementing Rat support making it pass src/pkg/math/big/rat_test.go

See here for package docs

Install

Use go to install the library

go get github.com/ncw/gmp

Usage

See here for full package docs

To use as in a drop in replacement for math/big, replace

import "math/big"

With

import big "github.com/ncw/gmp"

Features that aren't part of math/big are clearly marked and if you are using those, then I suggest you import as

import "github.com/ncw/gmp"

Testing

To run the tests use

go test github.com/ncw/gmp

The tests have been copied from the tests for the math/big library in the Go source and modified as little as possible so it should be 100% compatible.

Differences

Here are the differences between math/big and this package

  • Int.Bits and Int.SetBits not implemented
  • Rat.Num() and Rat.Denom() return a copy not a reference, so
  • If you want to set them use the new methods Rat.SetNum() and Rat.SetDenom()

License

As this contains a great deal of code copied from the Go source it is licenced identically to the Go source itself - see the LICENSE file for details.

Contact and support

The project website is at:

There you can file bug reports, ask for help or contribute patches.

Authors

Contributors

You can’t perform that action at this time.