Zephyr API Documentation 3.7.99 A Scalable Open Source RTOS
Searching...
No Matches
Math extras

Extra arithmetic and bit manipulation functions. More...

## Unsigned integer addition with overflow detection.

These functions compute `a + b` and store the result in `*result`, returning true if the operation overflowed.

static bool u16_add_overflow (uint16_t a, uint16_t b, uint16_t *result)

static bool u32_add_overflow (uint32_t a, uint32_t b, uint32_t *result)

static bool u64_add_overflow (uint64_t a, uint64_t b, uint64_t *result)

static bool size_add_overflow (size_t a, size_t b, size_t *result)

## Unsigned integer multiplication with overflow detection.

These functions compute `a * b` and store the result in `*result`, returning true if the operation overflowed.

static bool u16_mul_overflow (uint16_t a, uint16_t b, uint16_t *result)
Multiply two unsigned 16-bit integers.

static bool u32_mul_overflow (uint32_t a, uint32_t b, uint32_t *result)
Multiply two unsigned 32-bit integers.

static bool u64_mul_overflow (uint64_t a, uint64_t b, uint64_t *result)
Multiply two unsigned 64-bit integers.

static bool size_mul_overflow (size_t a, size_t b, size_t *result)
Multiply two size_t integers.

Count the number of leading zero bits in the bitwise representation of `x`.

When `x = 0`, this is the size of `x` in bits.

Count the number of leading zero bits in a 32-bit integer.

Count the number of leading zero bits in a 64-bit integer.

## Count trailing zeros.

Count the number of trailing zero bits in the bitwise representation of `x`.

When `x = 0`, this is the size of `x` in bits.

static int u32_count_trailing_zeros (uint32_t x)
Count the number of trailing zero bits in a 32-bit integer.

static int u64_count_trailing_zeros (uint64_t x)
Count the number of trailing zero bits in a 64-bit integer.

## Detailed Description

Extra arithmetic and bit manipulation functions.

Portable wrapper functions for a number of arithmetic and bit-counting functions that are often provided by compiler builtins. If the compiler does not have an appropriate builtin, a portable C implementation is used instead.

## Function Documentation

 static bool size_add_overflow ( size_t a, size_t b, size_t * result )
static

`#include <zephyr/sys/math_extras.h>`

Parameters
 a First operand. b Second operand. result Pointer to the result.
Returns
true if the operation overflowed.

## ◆ size_mul_overflow()

 static bool size_mul_overflow ( size_t a, size_t b, size_t * result )
static

`#include <zephyr/sys/math_extras.h>`

Multiply two size_t integers.

Parameters
 a First operand. b Second operand. result Pointer to the result.
Returns
true if the operation overflowed.

 static bool u16_add_overflow ( uint16_t a, uint16_t b, uint16_t * result )
static

`#include <zephyr/sys/math_extras.h>`

Parameters
 a First operand. b Second operand. result Pointer to the result.
Returns
true if the operation overflowed.

## ◆ u16_mul_overflow()

 static bool u16_mul_overflow ( uint16_t a, uint16_t b, uint16_t * result )
static

`#include <zephyr/sys/math_extras.h>`

Multiply two unsigned 16-bit integers.

Parameters
 a First operand. b Second operand. result Pointer to the result.
Returns
true if the operation overflowed.

 static bool u32_add_overflow ( uint32_t a, uint32_t b, uint32_t * result )
static

`#include <zephyr/sys/math_extras.h>`

Parameters
 a First operand. b Second operand. result Pointer to the result.
Returns
true if the operation overflowed.

 static int u32_count_leading_zeros ( uint32_t x )
static

`#include <zephyr/sys/math_extras.h>`

Count the number of leading zero bits in a 32-bit integer.

Parameters
 x Integer to count leading zeros in.
Returns
Number of leading zero bits in `x`.

## ◆ u32_count_trailing_zeros()

 static int u32_count_trailing_zeros ( uint32_t x )
static

`#include <zephyr/sys/math_extras.h>`

Count the number of trailing zero bits in a 32-bit integer.

Parameters
 x Integer to count trailing zeros in.
Returns
Number of trailing zero bits in `x`.

## ◆ u32_mul_overflow()

 static bool u32_mul_overflow ( uint32_t a, uint32_t b, uint32_t * result )
static

`#include <zephyr/sys/math_extras.h>`

Multiply two unsigned 32-bit integers.

Parameters
 a First operand. b Second operand. result Pointer to the result.
Returns
true if the operation overflowed.

 static bool u64_add_overflow ( uint64_t a, uint64_t b, uint64_t * result )
static

`#include <zephyr/sys/math_extras.h>`

Parameters
 a First operand. b Second operand. result Pointer to the result.
Returns
true if the operation overflowed.

 static int u64_count_leading_zeros ( uint64_t x )
static

`#include <zephyr/sys/math_extras.h>`

Count the number of leading zero bits in a 64-bit integer.

Parameters
 x Integer to count leading zeros in.
Returns
Number of leading zero bits in `x`.

## ◆ u64_count_trailing_zeros()

 static int u64_count_trailing_zeros ( uint64_t x )
static

`#include <zephyr/sys/math_extras.h>`

Count the number of trailing zero bits in a 64-bit integer.

Parameters
 x Integer to count trailing zeros in.
Returns
Number of trailing zero bits in `x`.

## ◆ u64_mul_overflow()

 static bool u64_mul_overflow ( uint64_t a, uint64_t b, uint64_t * result )
static

`#include <zephyr/sys/math_extras.h>`

Multiply two unsigned 64-bit integers.

Parameters
 a First operand. b Second operand. result Pointer to the result.
Returns
true if the operation overflowed.