67 #ifndef _MGUI_MGHAVE_FIXED_MATH_H 68 #define _MGUI_MGHAVE_FIXED_MATH_H 80 #ifdef _MGHAVE_FIXED_MATH 166 extern MG_EXPORT
const fixed __mg_cos_tbl[];
167 extern MG_EXPORT
const fixed __mg_tan_tbl[];
168 extern MG_EXPORT
const fixed __mg_acos_tbl[];
197 return (
long)(x * 65536.0 + (x < 0 ? -0.5 : 0.5));
211 return (
double)x / 65536.0;
231 fixed result = x + y;
234 if ((x < 0) && (y < 0)) {
242 if ((x > 0) && (y > 0)) {
268 fixed result = x - y;
271 if ((x < 0) && (y > 0)) {
279 if ((x > 0) && (y < 0)) {
330 if (x > 0x7FFF0000) {
339 return ~((~x) >> 16);
365 return (x >> 16) + ((x & 0x8000) >> 15);
379 return __mg_cos_tbl[((x + 0x4000) >> 15) & 0x1FF];
393 return __mg_cos_tbl[((x - 0x400000 + 0x4000) >> 15) & 0x1FF];
407 return __mg_tan_tbl[((x + 0x4000) >> 15) & 0xFF];
425 if ((x < -65536) || (x > 65536)) {
430 return __mg_acos_tbl[(x+65536+127)>>8];
448 if ((x < -65536) || (x > 65536)) {
453 return 0x00400000 - __mg_acos_tbl[(x+65536+127)>>8];
static fixed fixsin(fixed x)
Returns the sine of a fixed point.
MG_EXPORT fixed fixmul(fixed x, fixed y)
Returns the product of two fixed point values.
static fixed fixcos(fixed x)
Returns the cosine of a fixed point.
static fixed fixasin(fixed x)
Calculates and returns the arc sine of a fixed point.
MG_EXPORT fixed fixatan(fixed x)
Calculates the arc tangent of a fixed point value.
static fixed fixadd(fixed x, fixed y)
Returns the sum of two fixed point values.
static int fixtoi(fixed x)
Converts an fixed point value to an integer.
static double fixtof(fixed x)
Converts a fixed point value to a float point value.
MG_EXPORT fixed fixdiv(fixed x, fixed y)
Returns the quotient of two fixed point values.
static fixed ftofix(double x)
Converts a float point value to a fixed point value.
static fixed fixacos(fixed x)
Calculates and returns the arc cosine of a fixed point.
static fixed itofix(int x)
Converts an integer to a fixed point value.
long fixed
Data type of fixed point.
static fixed fixsub(fixed x, fixed y)
Subtract a fixed point value from another.
static int fixceil(fixed x)
Rounds a fixed point value to the nearest integer.
MG_EXPORT fixed fixhypot(fixed x, fixed y)
Returns the Euclidean distance from the origin.
static fixed fixtan(fixed x)
Returns the tangent of a fixed point.
MG_EXPORT fixed fixatan2(fixed y, fixed x)
Calculates the arc tangent of two fixed point variables.
MG_EXPORT fixed fixsqrt(fixed x)
Returns the non-negative square root of a fixed point value.