Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/smasher164/extprec
A portable implementation of extended precision integer arithmetic in Go.
https://github.com/smasher164/extprec
Last synced: about 2 months ago
JSON representation
A portable implementation of extended precision integer arithmetic in Go.
- Host: GitHub
- URL: https://github.com/smasher164/extprec
- Owner: smasher164
- License: mit
- Created: 2018-07-09T08:39:47.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-07-11T17:16:08.000Z (over 6 years ago)
- Last Synced: 2024-06-20T06:32:08.035Z (7 months ago)
- Language: Go
- Size: 30.3 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
This package provides a portable implementation of extended precision integer arithmetic operations in Go. Specifically, it implements the functions outlined for the math/bits package in [#24813](https://golang.org/issue/24813) as follows:
```
// Add with carry
// The carry inputs are assumed to be 0 or 1; otherwise behavior undefined.
// The carryOut outputs are guaranteed to be 0 or 1.
func Add(x, y, carry uint) (sum, carryOut uint)
func Add32(x, y, carry uint32) (sum, carryOut uint32)
func Add64(x, y, carry uint64) (sum, carryOut uint64)// Subtract with borrow
// The borrow inputs are assumed to be 0 or 1; otherwise behavior undefined.
// The borrowOut outputs are guaranteed to be 0 or 1.
func Sub(x, y, borrow uint) (difference, borrowOut uint)
func Sub32(x, y, borrow uint32) (difference, borrowOut uint32)
func Sub64(x, y, borrow uint64) (difference, borrowOut uint64)// Full-width multiply: 32x32->64, 64x64->128
func Mul(x, y uint) (hi, lo uint)
func Mul32(x, y uint32) (hi, lo uint32)
func Mul64(x, y uint64) (hi, lo uint64)// Full-width divide: 64/32 -> 32,32, 128/64 -> 64,64
// Behavior undefined if hi >= x (because quotient will not fit).
func Div(hi, lo, x uint) (quo, rem uint)
func Div32(hi, lo, x uint32) (quo, rem uint32)
func Div64(hi, lo, x uint64) (quo, rem uint64)
```