From fab16817351d0832bb0a87e587397ec622be93e4 Mon Sep 17 00:00:00 2001 From: Kaspar Schleiser Date: Mon, 12 Oct 2015 16:04:38 +0200 Subject: [PATCH] sys: div: add div/mod 44488 (needed for minstd prng) --- sys/include/div.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/sys/include/div.h b/sys/include/div.h index 816f05cb8..d55a81ac2 100644 --- a/sys/include/div.h +++ b/sys/include/div.h @@ -77,6 +77,28 @@ static inline uint32_t div_u32_by_15625div512(uint32_t val) return ((uint64_t)(val) * 0x431bde83ul) >> (12 + 32 - 9); } +/** + * @brief Integer divide val by 44488 + * + * @param[in] val dividend + * @return (val / 44488) + */ +static inline uint32_t div_u32_by_44488(uint32_t val) +{ + return ((uint64_t)val * 0xBC8F1391UL) >> (15 + 32); +} + +/** + * @brief Modulo 44488 + * + * @param[in] val dividend + * @return (val % 44488) + */ +static inline uint32_t div_u32_mod_44488(uint32_t val) +{ + return val - (div_u32_by_44488(val)*44488); +} + #ifdef __cplusplus } #endif