Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1804 → Rev 1805

/programs/games/rforces/trunk/mymath.h
0,0 → 1,95
/* Rocket Forces
* Filename: mymath.h
* Version 0.1
* Copyright (c) Serial 2007
*/
 
 
extern "C" int _fltused = 0;
 
#define M_PI 3.14159265358979323846
 
inline double sin(double x)
{
__asm fld x
__asm fsin
}
 
inline double cos(double x)
{
__asm fld x
__asm fcos
}
 
inline double sqrt(double x)
{
__asm fld x
__asm fsqrt
}
 
inline double acos(double x)
{
__asm fld x
__asm fld st(0)
__asm fmul st,st(1)
__asm fld1
__asm fsubrp st(1),st(0)
__asm fsqrt
__asm fxch st(1)
__asm fpatan
}
 
inline double atan(double x)
{
double res = acos(1 / sqrt(1 + x * x));
if (x < 0)
{
res *= -1;
}
return res;
}
 
inline int round_int(double x)
{
int i;
static const float round_to_nearest = 0.5f;
__asm
{
fld x
fadd st, st(0)
fadd round_to_nearest
fistp i
sar i, 1
}
return i;
}
 
inline int floor_int(double x)
{
int i;
static const float round_toward_m_i = -0.5f;
__asm
{
fld x
fadd st, st (0)
fadd round_toward_m_i
fistp i
sar i, 1
}
return i;
}
 
inline int ceil_int(double x)
{
int i;
static const float round_toward_p_i = -0.5f;
__asm
{
fld x
fadd st, st (0)
fsubr round_toward_p_i
fistp i
sar i, 1
}
return (-i);
}