Calc: Added rad function (degress to radians) and fixed sgn function

This commit is contained in:
Birunthan Mohanathas 2012-04-08 16:52:07 +03:00
parent 7462cb432a
commit dc65323e90

View File

@ -94,10 +94,11 @@ struct Function
BYTE length; BYTE length;
}; };
static double neg(double x);
static double frac(double x); static double frac(double x);
static double trunc(double x); static double trunc(double x);
static double rad(double deg);
static double sgn(double x); static double sgn(double x);
static double neg(double x);
static const WCHAR* round(int paramcnt, double* args, double* result); static const WCHAR* round(int paramcnt, double* args, double* result);
static Function g_Functions[] = static Function g_Functions[] =
@ -118,20 +119,21 @@ static Function g_Functions[] =
{ L"round", (OneArgProc)&round, 5 }, { L"round", (OneArgProc)&round, 5 },
{ L"asin", &asin, 4 }, { L"asin", &asin, 4 },
{ L"acos", &acos, 4 }, { L"acos", &acos, 4 },
{ L"sgn", &sgn, 4 }, { L"rad", &rad, 3 },
{ L"neg", &neg, 4 }, { L"sgn", &sgn, 3 },
{ L"neg", &neg, 3 },
{ L"e", NULL, 1 }, { L"e", NULL, 1 },
{ L"pi", NULL, 2 } { L"pi", NULL, 2 }
}; };
static const int FUNC_MAX_LEN = 5; static const int FUNC_MAX_LEN = 5;
static const int FUNC_ROUND = 13; static const int FUNC_ROUND = 13;
static const int FUNC_E = 18; static const int FUNC_E = 19;
static const int FUNC_PI = 19; static const int FUNC_PI = 20;
static const BYTE FUNC_INVALID = UCHAR_MAX; static const BYTE FUNC_INVALID = UCHAR_MAX;
static const Operation g_BrOp = { OP_OBR, 0, 0}; static const Operation g_BrOp = { OP_OBR, 0, 0};
static const Operation g_NegOp = { OP_FUNC_ONEARG, 17, 0 }; static const Operation g_NegOp = { OP_FUNC_ONEARG, 18, 0 };
static const BYTE g_OpPriorities[OP_FUNC_MULTIARG + 1] = static const BYTE g_OpPriorities[OP_FUNC_MULTIARG + 1] =
{ {
@ -792,6 +794,11 @@ static double trunc(double x)
return (x >= 0.0) ? floor(x) : ceil(x); return (x >= 0.0) ? floor(x) : ceil(x);
} }
static double rad(double deg)
{
return (deg / 180.0) * M_PI;
}
static double sgn(double x) static double sgn(double x)
{ {
return (x > 0) ? 1 : (x < 0) ? -1 : 0; return (x > 0) ? 1 : (x < 0) ? -1 : 0;