mirror of
https://github.com/luxfi/math.git
synced 2026-09-24 00:25:16 +00:00
c1c86cad0815bbe243a2b52f98d8c09298910df0
Added functions from node/vms/dexvm/math: - Div64: safe division with error on zero - MulBig: multiply uint64s returning big.Int - MulDiv64: (a * b) / c without overflow - MulDivRoundUp64: ceiling division variant - BigMulDiv: big.Int multiplication+division - BigMulDivRoundUp: big.Int ceiling variant - Clamp: generic ordered type clamping Also added common big.Int values (bigZero, bigOne, maxUint64Big) for performance in division operations.
Lux Math Library
A comprehensive mathematical utilities library for the Lux ecosystem.
Features
- Big integer utilities:
HexOrDecimal256,ParseBig256,U256,BigPowetc. - Safe arithmetic: Overflow-checked
SafeAdd,SafeSub,SafeMul - Bit operations: XOR, AND, compression utilities
- Set operations: Efficient set implementations including bit sets
- Data structures: Linked lists, hash maps, heaps
- Averagers: Time-windowed averaging utilities
Installation
go get github.com/luxfi/math
Package Structure
| Package | Description |
|---|---|
github.com/luxfi/math |
Root package with re-exports for backwards compatibility |
github.com/luxfi/math/big |
Big integer utilities (HexOrDecimal256, U256, parsing) |
github.com/luxfi/math/safe |
Overflow-safe arithmetic operations |
github.com/luxfi/math/bit |
Bit manipulation utilities |
github.com/luxfi/math/set |
Set data structures |
github.com/luxfi/math/linked |
Linked data structures |
github.com/luxfi/math/heap |
Heap implementations |
Usage
// Import root package (re-exports from subpackages)
import "github.com/luxfi/math"
// Or import specific subpackages directly
import (
"github.com/luxfi/math/big"
"github.com/luxfi/math/safe"
"github.com/luxfi/math/set"
)
Big Integer Operations
import "github.com/luxfi/math/big"
// Parse hex or decimal
val, _ := big.ParseBig256("0x1234")
// 256-bit unsigned operations
result := big.U256(someInt)
// Power operation
power := big.BigPow(2, 256)
Safe Arithmetic
import "github.com/luxfi/math/safe"
// Returns (result, overflow bool)
sum, overflow := safe.SafeAdd(a, b)
product, overflow := safe.SafeMul(x, y)
// Returns (result, error)
sum, err := safe.Add64(a, b)
License
See the LICENSE file for licensing terms.
Languages
Go
100%