/programs/other/graph/math2.cpp |
---|
0,0 → 1,83 |
#include <math.h> |
#include "kosSyst.h" |
extern "C" int _fltused = 0; |
double acos(double x) |
{ |
__asm { |
fld qword ptr [esp+4] |
fld1 |
fadd st, st(1) |
fld1 |
fsub st, st(2) |
fmulp st(1), st |
fsqrt |
fxch st(1) |
fpatan |
} |
} |
double asin(double x) |
{ |
__asm { |
fld qword ptr [esp+4] |
fld1 |
fadd st, st(1) |
fld1 |
fsub st, st(2) |
fmulp st(1), st |
fsqrt |
fpatan |
ret |
} |
} |
#if _MSC_VER <= 1200 |
extern "C" double _ftol(double x) |
{ |
__asm { |
fld qword ptr [esp+4] |
push 1F3Fh |
fstcw word ptr [esp+2] |
fldcw word ptr [esp] |
frndint |
fldcw word ptr [esp+2] |
add esp, 4 |
} |
} |
#endif |
double ceil(double x) |
{ |
__asm { |
fld qword ptr [esp+4] |
push 1B3Fh |
fstcw word ptr [esp+2] |
fldcw word ptr [esp] |
frndint |
fldcw word ptr [esp+2] |
add esp, 4 |
} |
} |
double floor(double x) |
{ |
__asm { |
fld qword ptr [esp+4] |
push 173Fh |
fstcw word ptr [esp+2] |
fldcw word ptr [esp] |
frndint |
fldcw word ptr [esp+2] |
add esp, 4 |
} |
} |
double round(double x) |
{ |
__asm { |
fld qword ptr [esp+4] |
push 133Fh |
fstcw word ptr [esp+2] |
fldcw word ptr [esp] |
frndint |
fldcw word ptr [esp+2] |
add esp, 4 |
} |
} |