# XMath Util Functions and Macros#

group util_macros

Defines

MAX(A, B)#

Takes the greater of arguments A and B, preferring A on equality.

Note

This is not safe from multiple evaluation of arguments.

Parameters:
• A[in] First input

• B[in] Second input

Returns:

Maximum of the inputs.

MIN(A, B)#

Takes the lesser of arguments A and B, preferring A on equality.

Note

This is not safe from multiple evaluation of arguments.

Parameters:
• A[in] First input

• B[in] Second input

Returns:

Minimum of the inputs.

CLS_S8(X)#

Count leading sign bits of an int8_t.

Parameters:
• X[in] Input

Returns:

CLS_S16(X)#

Count leading sign bits of an int16_t.

Parameters:
• X[in] Input

Returns:

CLS_S32(X)#

Count leading sign bits of an int32_t.

Parameters:
• X[in] Input

Returns:

CLS_S64(X)#

Count leading sign bits of an int64_t.

Parameters:
• X[in] Input

Returns:

CLS_C16(X)#

Count leading sign bits of a complex_s16_t.

The number of leading sign bits for a complex integer is defined as the minimum of the number of leading sign bits for its real part and for its imaginary part.

Parameters:
• X[in] Input

Returns:

CLS_C32(X)#

Count leading sign bits of a complex_s32_t.

The number of leading sign bits for a complex integer is defined as the minimum of the number of leading sign bits for its real part and for its imaginary part.

Parameters:
• X[in] Input

Returns:

HR_S64(X)#

Get the headroom of an int64_t.

Parameters:
• X[in] Input

Returns:

HR_S32(X)#

Get the headroom of an int32_t.

Parameters:
• X[in] Input

Returns:

HR_S16(X)#

Get the headroom of an int16_t.

Parameters:
• X[in] Input

Returns:

HR_S8(X)#

Get the headroom of an int8_t.

Parameters:
• X[in] Input

Returns:

HR_C32(X)#

Get the headroom of a complex_s32_t.

The headroom of a complex N-bit integer is the minimum of the headroom of each of its N-bit real and imaginary parts.

Parameters:
• X[in] Input

Returns:

HR_C16(X)#

Get the headroom of a complex_s16_t.

The headroom of a complex N-bit integer is the minimum of the headroom of each of its N-bit real and imaginary parts.

Parameters:
• X[in] Input

Returns:

Functions

void xs3_memcpy(void *dst, const void *src, unsigned bytes)#

VPU-based memcpy implementation.

Same as standard memcpy() except for an extra constraint that both dst andsrc` must be word-aligned addresses.

Parameters:

• bytes[in] Number of bytes to copy

static inline unsigned cls(const int32_t a)#

Count leading sign bits of int32_t.

This function returns the number of most-significant bits in a which are equal to its sign bit.

Note

This is the total number of leading sign bits, not redundant leading sign bits.

Parameters:
• a[in] Input value

Returns:

Number of leading sign bits of a

static inline unsigned n_bitrev(const unsigned index, const unsigned bits)#

Reverse the bits of an integer.

This function returns takes an integer index and reverses the bits least-significant bits to form a new integer which is returned. All more significant bits are ignored.

This is useful for algorithms, such as the FFT, whose implementation requires reordering of elements by reversing the bits of the indices.

Parameters:
• index[in] Input value

• bits[in] The number of least-significant bits to reverse.

Returns:

The bits LSb’s of index reversed.