mirror of
https://github.com/metabarcoding/obitools4.git
synced 2026-04-30 12:00:39 +00:00
8c7017a99d
- Update obioptions.Version from "Release 4.4.29" to "/v/ Release v5" - Update version.txt from 4.29 → .30 (automated by Makefile)
1.3 KiB
1.3 KiB
Obifp Package: Generic Fixed-Point Unsigned Integer Operations
This Go package (obifp) provides a generic, type-safe interface for fixed-point unsigned integer arithmetic over three size variants: Uint64, Uint128, and Uint256.
Core Interface: FPUint[T]
The interface defines a unified API for unsigned integer types, supporting:
-
Initialization & Conversion:
Zero(),Set64(v): Create zero or set from auint64.AsUint64(): Downcast to standarduint64.
-
Logical Operations:
- Bitwise:
And,Or,Xor,Not. - Shifts:
LeftShift(n),RightShift(n).
- Bitwise:
-
Arithmetic:
- Addition (
Add), subtraction (Sub), multiplication (Mul). Division is commented out—likely reserved for future implementation.
- Addition (
-
Comparison:
- Full ordering:
<,<=,>,>=.
- Full ordering:
-
Utility Predicates:
IsZero()for zero-checking.
Helper Functions
ZeroUint[T]: Returns the neutral element (zero) for typeT.OneUint[T]: Constructs value 1 viaSet64(1).From64[T]: Converts a standard Gouint64into the generic type.
All operations are method-chaining friendly (return T, not pointers), enabling fluent syntax. The design promotes correctness and performance in cryptographic or financial contexts where large, fixed-size integers are required.