Improve documentation of math_util

This commit is contained in:
PikalaxALT
2021-05-06 09:27:56 -04:00
parent da67ad94b6
commit f2847354f4
2 changed files with 31 additions and 15 deletions
+21 -6
View File
@@ -1,11 +1,26 @@
#ifndef GUARD_MATH_UTIL_H #ifndef GUARD_MATH_UTIL_H
#define GUARD_MATH_UTIL_H #define GUARD_MATH_UTIL_H
s16 invfx16(s16 y); // Fixed-point arithmetic library.
s16 mulfx16(s16 x, s16 y);
s32 divfx32(s32 x, s32 y); // Proposed TODO: Move the macros here from global.h
s32 mulfx32(s32 x, s32 y); typedef s16 fx16; // Fixed-point Q8.8
s16 divfxn16(u8 s, s16 x, s16 y); typedef s16 fxn16; // Fixed-point with arbitrary precision (QN.S)
s16 mulfxn16(u8 s, s16 x, s16 y); 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 #endif //GUARD_MATH_UTIL_H
+10 -9
View File
@@ -1,6 +1,7 @@
#include "global.h" #include "global.h"
#include "math_util.h"
s16 mulfx16(s16 x, s16 y) fx16 mulfx16(fx16 x, fx16 y)
{ {
s32 result; s32 result;
@@ -10,7 +11,7 @@ s16 mulfx16(s16 x, s16 y)
return result; return result;
} }
s16 mulfxn16(u8 s, s16 x, s16 y) fxn16 mulfxn16(u8 s, fxn16 x, fxn16 y)
{ {
s32 result; s32 result;
@@ -20,7 +21,7 @@ s16 mulfxn16(u8 s, s16 x, s16 y)
return result; return result;
} }
s32 mulfx32(s32 x, s32 y) fx32 mulfx32(fx32 x, fx32 y)
{ {
s64 result; s64 result;
@@ -30,7 +31,7 @@ s32 mulfx32(s32 x, s32 y)
return result; return result;
} }
s16 divfx16(s16 x, s16 y) fx16 divfx16(fx16 x, fx16 y)
{ {
if (y == 0) if (y == 0)
{ {
@@ -39,7 +40,7 @@ s16 divfx16(s16 x, s16 y)
return (x << 8) / y; return (x << 8) / y;
} }
s16 divfxn16(u8 s, s16 x, s16 y) fxn16 divfxn16(u8 s, fxn16 x, fxn16 y)
{ {
if (y == 0) if (y == 0)
{ {
@@ -48,7 +49,7 @@ s16 divfxn16(u8 s, s16 x, s16 y)
return (x << s) / y; return (x << s) / y;
} }
s32 divfx32(s32 x, s32 y) fx32 divfx32(fx32 x, fx32 y)
{ {
s64 _x; s64 _x;
@@ -61,7 +62,7 @@ s32 divfx32(s32 x, s32 y)
return _x / y; return _x / y;
} }
s16 invfx16(s16 y) fx16 invfx16(fx16 y)
{ {
s32 x; s32 x;
@@ -69,7 +70,7 @@ s16 invfx16(s16 y)
return x / y; return x / y;
} }
s16 invfxn16(u8 s, s16 y) fxn16 invfxn16(u8 s, fxn16 y)
{ {
s32 x; s32 x;
@@ -77,7 +78,7 @@ s16 invfxn16(u8 s, s16 y)
return x / y; return x / y;
} }
s32 invfx32(s32 y) fx32 invfx32(fx32 y)
{ {
s64 x; s64 x;