divider.h File Reference

High level APIs including combined quotient and remainder functions for 32 and 64 bit accelerated by the hardware divider. More...

#include "pico.h"
#include "hardware/divider.h"
Include dependency graph for divider.h:

Go to the source code of this file.

Functions

int32_t div_s32s32 (int32_t a, int32_t b)
 Integer divide of two signed 32-bit values. More...
 
static int32_t divmod_s32s32_rem (int32_t a, int32_t b, int32_t *rem)
 Integer divide of two signed 32-bit values, with remainder. More...
 
divmod_result_t divmod_s32s32 (int32_t a, int32_t b)
 Integer divide of two signed 32-bit values. More...
 
uint32_t div_u32u32 (uint32_t a, uint32_t b)
 Integer divide of two unsigned 32-bit values. More...
 
static uint32_t divmod_u32u32_rem (uint32_t a, uint32_t b, uint32_t *rem)
 Integer divide of two unsigned 32-bit values, with remainder. More...
 
divmod_result_t divmod_u32u32 (uint32_t a, uint32_t b)
 Integer divide of two unsigned 32-bit values. More...
 
int64_t div_s64s64 (int64_t a, int64_t b)
 Integer divide of two signed 64-bit values. More...
 
int64_t divmod_s64s64_rem (int64_t a, int64_t b, int64_t *rem)
 Integer divide of two signed 64-bit values, with remainder. More...
 
int64_t divmod_s64s64 (int64_t a, int64_t b)
 Integer divide of two signed 64-bit values. More...
 
uint64_t div_u64u64 (uint64_t a, uint64_t b)
 Integer divide of two unsigned 64-bit values. More...
 
uint64_t divmod_u64u64_rem (uint64_t a, uint64_t b, uint64_t *rem)
 Integer divide of two unsigned 64-bit values, with remainder. More...
 
uint64_t divmod_u64u64 (uint64_t a, uint64_t b)
 Integer divide of two signed 64-bit values. More...
 
int32_t div_s32s32_unsafe (int32_t a, int32_t b)
 Unsafe integer divide of two signed 32-bit values. More...
 
int32_t divmod_s32s32_rem_unsafe (int32_t a, int32_t b, int32_t *rem)
 Unsafe integer divide of two signed 32-bit values, with remainder. More...
 
int64_t divmod_s32s32_unsafe (int32_t a, int32_t b)
 Unsafe integer divide of two unsigned 32-bit values. More...
 
uint32_t div_u32u32_unsafe (uint32_t a, uint32_t b)
 Unsafe integer divide of two unsigned 32-bit values. More...
 
uint32_t divmod_u32u32_rem_unsafe (uint32_t a, uint32_t b, uint32_t *rem)
 Unsafe integer divide of two unsigned 32-bit values, with remainder. More...
 
uint64_t divmod_u32u32_unsafe (uint32_t a, uint32_t b)
 Unsafe integer divide of two unsigned 32-bit values. More...
 
int64_t div_s64s64_unsafe (int64_t a, int64_t b)
 Unsafe integer divide of two signed 64-bit values. More...
 
int64_t divmod_s64s64_rem_unsafe (int64_t a, int64_t b, int64_t *rem)
 Unsafe integer divide of two signed 64-bit values, with remainder. More...
 
int64_t divmod_s64s64_unsafe (int64_t a, int64_t b)
 Unsafe integer divide of two signed 64-bit values. More...
 
uint64_t div_u64u64_unsafe (uint64_t a, uint64_t b)
 Unsafe integer divide of two unsigned 64-bit values. More...
 
uint64_t divmod_u64u64_rem_unsafe (uint64_t a, uint64_t b, uint64_t *rem)
 Unsafe integer divide of two unsigned 64-bit values, with remainder. More...
 
uint64_t divmod_u64u64_unsafe (uint64_t a, uint64_t b)
 Unsafe integer divide of two signed 64-bit values. More...
 

Detailed Description

High level APIs including combined quotient and remainder functions for 32 and 64 bit accelerated by the hardware divider.

These functions all call __aeabi_idiv0 or __aebi_ldiv0 on division by zero passing the largest applicably signed value

Functions with unsafe in their name do not save/restore divider state, so are unsafe to call from interrupts. Unsafe functions are slightly faster.