📄 math.cpp
字号:
/*!
\file math.cpp
\brief math
Copyright (c) 2002-2004 Higepon
$Revision: 1.6 $
$Date: 2004/09/01 14:10:46 $
*/
#include <monalibc/math.h>
double sin(double angle)
{
double result;
asm volatile ("fsin" : "=t"(result) : "0"(angle));
return result;
}
double cos(double angle)
{
double result;
asm volatile ("fcos" : "=t"(result) : "0"(angle));
return result;
}
double tan(double angle)
{
double result;
asm volatile ("fptan" : "=t"(result) : "0"(angle));
return result;
}
double sqrt(double num)
{
double result;
asm volatile ("fsqrt" : "=t"(result) : "0"(num));
return result;
}
double atan2(double x, double y)
{
double result;
asm volatile("fpatan" : "=t" (result) : "0" (x), "u" (y) : "st(1)");
return result;
}
double atan(double x)
{
double result;
asm volatile("fld1; fpatan" : "=t"(result) : "0" (x) : "st(1)");
return result;
}
/* acos = atan (sqrt(1 - x^2) / x) */
double acos(double x)
{
double result;
asm volatile("fld %%st \n"
"fmul %%st(0) \n"
"fld1 \n"
"fsubp \n"
"fsqrt \n"
"fxch %%st(1) \n"
"fpatan \n"
: "=t" (result) : "0" (x) : "st(1)");
return result;
}
double fabs(double x)
{
return x < 0 ? -x : x;
}
double modf(double x, double *buf)
{
double a = fabs(x);
int i = (int)x;
double f = a - (double)i;
*buf = x < 0 ? -i : i;
return x < 0 ? -f : f;
}
double floor(double x)
{
if (x < 0)
{
if (modf(-x, &x) != 0) x++;
return -x;
}
modf(x, &x);
return x;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -