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_sin,
|
||||||
fun_cos,
|
fun_cos,
|
||||||
fun_tan,
|
fun_tan,
|
||||||
|
fun_sinh,
|
||||||
|
fun_cosh,
|
||||||
|
fun_tanh,
|
||||||
|
fun_asin,
|
||||||
|
fun_acos,
|
||||||
|
fun_atan,
|
||||||
fun_exp,
|
fun_exp,
|
||||||
fun_log,
|
fun_log,
|
||||||
fun_ln
|
fun_ln,
|
||||||
|
fun_sqrt
|
||||||
};
|
};
|
||||||
|
|
||||||
struct nil {};
|
struct nil {};
|
||||||
|
@ -86,9 +86,16 @@ namespace mupp { namespace parser
|
|||||||
("sin", ast::fun_sin)
|
("sin", ast::fun_sin)
|
||||||
("cos", ast::fun_cos)
|
("cos", ast::fun_cos)
|
||||||
("tan", ast::fun_tan)
|
("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)
|
("exp", ast::fun_exp)
|
||||||
("log", ast::fun_log)
|
("log", ast::fun_log)
|
||||||
("ln", ast::fun_ln)
|
("ln", ast::fun_ln)
|
||||||
|
("sqrt", ast::fun_sqrt)
|
||||||
;
|
;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////
|
||||||
|
@ -102,9 +102,16 @@ namespace mupp { namespace prog {
|
|||||||
case ast::fun_sin:
|
case ast::fun_sin:
|
||||||
case ast::fun_cos:
|
case ast::fun_cos:
|
||||||
case ast::fun_tan:
|
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_exp:
|
||||||
case ast::fun_log:
|
case ast::fun_log:
|
||||||
case ast::fun_ln:
|
case ast::fun_ln:
|
||||||
|
case ast::fun_sqrt:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
BOOST_ASSERT(0);
|
BOOST_ASSERT(0);
|
||||||
@ -412,6 +419,30 @@ namespace mupp { namespace prog {
|
|||||||
for (unsigned int i=0; i<vec.size(); i++)
|
for (unsigned int i=0; i<vec.size(); i++)
|
||||||
vec[i] = tan(vec[i]);
|
vec[i] = tan(vec[i]);
|
||||||
break;
|
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:
|
case ast::fun_exp:
|
||||||
for (unsigned int i=0; i<vec.size(); i++)
|
for (unsigned int i=0; i<vec.size(); i++)
|
||||||
vec[i] = exp(vec[i]);
|
vec[i] = exp(vec[i]);
|
||||||
@ -436,6 +467,16 @@ namespace mupp { namespace prog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
BOOST_ASSERT(0);
|
BOOST_ASSERT(0);
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user