make more function available to mupp (sinh, .., asin, .., and sqrt)
This commit is contained in:
parent
5ec1228ea6
commit
a09d6878f2
@ -70,9 +70,16 @@ namespace mupp { namespace ast
|
||||
fun_sin,
|
||||
fun_cos,
|
||||
fun_tan,
|
||||
fun_sinh,
|
||||
fun_cosh,
|
||||
fun_tanh,
|
||||
fun_asin,
|
||||
fun_acos,
|
||||
fun_atan,
|
||||
fun_exp,
|
||||
fun_log,
|
||||
fun_ln
|
||||
fun_ln,
|
||||
fun_sqrt
|
||||
};
|
||||
|
||||
struct nil {};
|
||||
|
@ -86,9 +86,16 @@ namespace mupp { namespace parser
|
||||
("sin", ast::fun_sin)
|
||||
("cos", ast::fun_cos)
|
||||
("tan", ast::fun_tan)
|
||||
("sinh", ast::fun_sinh)
|
||||
("cosh", ast::fun_cosh)
|
||||
("tanh", ast::fun_tanh)
|
||||
("asin", ast::fun_asin)
|
||||
("acos", ast::fun_acos)
|
||||
("atan", ast::fun_atan)
|
||||
("exp", ast::fun_exp)
|
||||
("log", ast::fun_log)
|
||||
("ln", ast::fun_ln)
|
||||
("sqrt", ast::fun_sqrt)
|
||||
;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
@ -102,9 +102,16 @@ namespace mupp { namespace prog {
|
||||
case ast::fun_sin:
|
||||
case ast::fun_cos:
|
||||
case ast::fun_tan:
|
||||
case ast::fun_sinh:
|
||||
case ast::fun_cosh:
|
||||
case ast::fun_tanh:
|
||||
case ast::fun_asin:
|
||||
case ast::fun_acos:
|
||||
case ast::fun_atan:
|
||||
case ast::fun_exp:
|
||||
case ast::fun_log:
|
||||
case ast::fun_ln:
|
||||
case ast::fun_sqrt:
|
||||
break;
|
||||
default:
|
||||
BOOST_ASSERT(0);
|
||||
@ -412,6 +419,30 @@ namespace mupp { namespace prog {
|
||||
for (unsigned int i=0; i<vec.size(); i++)
|
||||
vec[i] = tan(vec[i]);
|
||||
break;
|
||||
case ast::fun_sinh:
|
||||
for (unsigned int i=0; i<vec.size(); i++)
|
||||
vec[i] = sinh(vec[i]);
|
||||
break;
|
||||
case ast::fun_cosh:
|
||||
for (unsigned int i=0; i<vec.size(); i++)
|
||||
vec[i] = cosh(vec[i]);
|
||||
break;
|
||||
case ast::fun_tanh:
|
||||
for (unsigned int i=0; i<vec.size(); i++)
|
||||
vec[i] = tanh(vec[i]);
|
||||
break;
|
||||
case ast::fun_asin:
|
||||
for (unsigned int i=0; i<vec.size(); i++)
|
||||
vec[i] = asin(vec[i]);
|
||||
break;
|
||||
case ast::fun_acos:
|
||||
for (unsigned int i=0; i<vec.size(); i++)
|
||||
vec[i] = acos(vec[i]);
|
||||
break;
|
||||
case ast::fun_atan:
|
||||
for (unsigned int i=0; i<vec.size(); i++)
|
||||
vec[i] = atan(vec[i]);
|
||||
break;
|
||||
case ast::fun_exp:
|
||||
for (unsigned int i=0; i<vec.size(); i++)
|
||||
vec[i] = exp(vec[i]);
|
||||
@ -436,6 +467,16 @@ namespace mupp { namespace prog {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ast::fun_sqrt:
|
||||
for (unsigned int i=0; i<vec.size(); i++) {
|
||||
if (vec[i] <= 0.0) {
|
||||
BOOST_ASSERT(0);
|
||||
break;
|
||||
} else {
|
||||
vec[i] = sqrt(vec[i]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
BOOST_ASSERT(0);
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user