29 #ifndef MU_PARSER_TEMPLATE_MAGIC_H
30 #define MU_PARSER_TEMPLATE_MAGIC_H
50 static bool IsInteger() {
return false; }
56 static bool IsInteger() {
return true; }
62 static bool IsInteger() {
return true; }
68 static bool IsInteger() {
return true; }
74 static bool IsInteger() {
return true; }
80 static bool IsInteger() {
return true; }
86 static bool IsInteger() {
return true; }
92 static bool IsInteger() {
return true; }
98 static bool IsInteger() {
return true; }
116 static T Sin(T v) {
return sin(v); }
117 static T Cos(T v) {
return cos(v); }
118 static T Tan(T v) {
return tan(v); }
119 static T ASin(T v) {
return asin(v); }
120 static T ACos(T v) {
return acos(v); }
121 static T ATan(T v) {
return atan(v); }
122 static T ATan2(T v1, T v2) {
return atan2(v1, v2); }
123 static T Sinh(T v) {
return sinh(v); }
124 static T Cosh(T v) {
return cosh(v); }
125 static T Tanh(T v) {
return tanh(v); }
126 static T ASinh(T v) {
return log(v + sqrt(v * v + 1)); }
127 static T ACosh(T v) {
return log(v + sqrt(v * v - 1)); }
128 static T ATanh(T v) {
return ((T)0.5 * log((1 + v) / (1 - v))); }
129 static T Log(T v) {
return log(v); }
130 static T Log2(T v) {
return log(v) / log((T)2); }
131 static T Log10(T v) {
return log10(v); }
132 static T Exp(T v) {
return exp(v); }
133 static T Abs(T v) {
return (v >= 0) ? v : -v; }
134 static T Sqrt(T v) {
return sqrt(v); }
135 static T Rint(T v) {
return floor(v + (T)0.5); }
136 static T Sign(T v) {
return (T)((v < 0) ? -1 : (v > 0) ? 1 : 0); }
137 static T Pow(T v1, T v2) {
return std::pow(v1, v2); }
139 static T UnaryMinus(T v) {
return -v; }
140 static T UnaryPlus(T v) {
return v; }
142 static T Sum(
const T *a_afArg,
int a_iArgc)
145 throw ParserError(
_T(
"too few arguments for function sum."));
148 for (
int i = 0; i < a_iArgc; ++i) fRes += a_afArg[i];
152 static T Avg(
const T *a_afArg,
int a_iArgc)
155 throw ParserError(
_T(
"too few arguments for function sum."));
158 for (
int i = 0; i < a_iArgc; ++i) fRes += a_afArg[i];
159 return fRes / (T)a_iArgc;
162 static T Min(
const T *a_afArg,
int a_iArgc)
165 throw ParserError(
_T(
"too few arguments for function min."));
168 for (
int i = 0; i < a_iArgc; ++i)
169 fRes = std::min(fRes, a_afArg[i]);
174 static T Max(
const T *a_afArg,
int a_iArgc)
177 throw ParserError(
_T(
"too few arguments for function min."));
180 for (
int i = 0; i < a_iArgc; ++i) fRes = std::max(fRes, a_afArg[i]);
186 #if defined (__GNUG__)
189 static constexpr T CONST_PI = (T)3.141592653589;
191 static constexpr T CONST_PI = (T)3.141592653589793238462643;
194 static constexpr T CONST_E = (T)2.718281828459045235360287;
#define _T(x)
Activate this option in order to compile with OpenMP support.
A class singling out integer types at compile time using template meta programming.
Error class of the parser.
A template class for providing wrappers for essential math functions.
Namespace for mathematical applications.
This file defines the error class used by the parser.