diff options
Diffstat (limited to 'include/math_util.h')
-rw-r--r-- | include/math_util.h | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/include/math_util.h b/include/math_util.h index 9f9677463..b1243df56 100644 --- a/include/math_util.h +++ b/include/math_util.h @@ -1,11 +1,26 @@ #ifndef GUARD_MATH_UTIL_H #define GUARD_MATH_UTIL_H -s16 MathUtil_Inv16(s16 y); -s16 MathUtil_Mul16(s16 x, s16 y); -s32 MathUtil_Div32(s32 x, s32 y); -s32 MathUtil_Mul32(s32 x, s32 y); -s16 MathUtil_Div16Shift(u8 s, s16 x, s16 y); -s16 MathUtil_Mul16Shift(u8 s, s16 x, s16 y); +// Fixed-point arithmetic library. + +// Proposed TODO: Move the macros here from global.h +typedef s16 fx16; // Fixed-point Q8.8 +typedef s16 fxn16; // Fixed-point with arbitrary precision (QN.S) +typedef s32 fx32; // Fixed-point Q24.8 + +// x * y +fx16 mulfx16(fx16 x, fx16 y); +fxn16 mulfxn16(u8 s, fxn16 x, fxn16 y); +fx32 mulfx32(fx32 x, fx32 y); + +// x / y +fx16 divfx16(fx16 x, fx16 y); +fxn16 divfxn16(u8 s, fxn16 x, fxn16 y); +fx32 divfx32(fx32 x, fx32 y); + +// 1.0 / y +fx16 invfx16(fx16 y); +fxn16 invfxn16(u8 s, fxn16 y); +fx32 invfx32(fx32 y); #endif //GUARD_MATH_UTIL_H |