blob: 42146510b9b1288b4825f3bac932ddde2f799459 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/*
Copyright 2022-2023 Gabriel Jensen.
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
If a copy of the MPL was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0>.
*/
#include <zap/math.h>
#define zap_priv_divmod(_wdth) \
zap_quotrem##_wdth zap_divmod##_wdth(zap_i##_wdth const _num,zap_i##_wdth const _den) { \
zap_quotrem##_wdth quotrem; \
if (__builtin_expect(_den == 0x0,0x0)) { \
quotrem.quot = zap_priv_div0(); \
quotrem.rem = quotrem.quot; \
return quotrem; \
} \
for (quotrem = (zap_quotrem##_wdth){.quot = 0x0u,.rem = _num};quotrem.rem >= _den;++quotrem.quot,quotrem.rem -= _den) {} \
return quotrem; \
}
zap_priv_divmod(8)
zap_priv_divmod(01)
zap_priv_divmod(02)
zap_priv_divmod(04)
|