Dynamic Fraction Library 1.0.0
Reference-counted arbitrary precision rational number library (MIT OR Unlicense)
Loading...
Searching...
No Matches
Functions
Utility Functions

Utility functions for querying integer properties. More...

Functions

size_t di_bit_length (di_int big)
 Get bit length of integer (number of bits needed to represent)
 
size_t di_limb_count (di_int big)
 Get number of limbs used by integer.
 
bool di_reserve (di_int big, size_t capacity)
 Reserve capacity for an integer (performance optimization)
 

Detailed Description

Utility functions for querying integer properties.

Function Documentation

◆ di_bit_length()

size_t di_bit_length ( di_int  big)

Get bit length of integer (number of bits needed to represent)

Parameters
bigInteger to query (may be NULL)
Returns
Number of bits needed to represent integer, or 0 if NULL or zero
Since
1.0.0

Definition at line 2594 of file dynamic_int.h.

◆ di_limb_count()

size_t di_limb_count ( di_int  big)

Get number of limbs used by integer.

Parameters
bigInteger to query (may be NULL)
Returns
Number of limbs in use, or 0 if NULL
Since
1.0.0
Note
Primarily for debugging and internal use

Definition at line 2616 of file dynamic_int.h.

◆ di_reserve()

bool di_reserve ( di_int  big,
size_t  capacity 
)

Reserve capacity for an integer (performance optimization)

Parameters
bigInteger to resize (may be NULL)
capacityNumber of limbs to reserve capacity for
Returns
true if successful, false on allocation failure
Since
1.0.0
// Pre-allocate space for large operations to avoid repeated allocations
if (di_reserve(big, 100)) {
// Now operations won't need to reallocate until 100 limbs are needed
for (int i = 0; i < 1000; i++) {
di_int temp = di_mul_i32(big, 2);
di_release(&big);
big = temp;
}
}
di_release(&big);
struct di_int_internal * di_int
Integer handle for arbitrary precision integers.
di_int di_mul_i32(di_int a, int32_t b)
Multiply an integer by a 32-bit signed integer.
di_int di_from_int32(int32_t value)
Create a new integer from a 32-bit signed integer.
void di_release(di_int *big)
Decrement reference count and free if zero.
bool di_reserve(di_int big, size_t capacity)
Reserve capacity for an integer (performance optimization)
Note
This is purely a performance optimization - integers work without it
Similar to std::vector::reserve() in C++
See also
di_limb_count() for getting current limb count

Definition at line 1064 of file dynamic_int.h.