diff --git a/src/musredit_qt5/mupp/var/include/PAst.hpp b/src/musredit_qt5/mupp/var/include/PAst.hpp
index c2afa127..45c69115 100644
--- a/src/musredit_qt5/mupp/var/include/PAst.hpp
+++ b/src/musredit_qt5/mupp/var/include/PAst.hpp
@@ -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 {};
diff --git a/src/musredit_qt5/mupp/var/include/PExpressionDef.hpp b/src/musredit_qt5/mupp/var/include/PExpressionDef.hpp
index 13981692..125df780 100644
--- a/src/musredit_qt5/mupp/var/include/PExpressionDef.hpp
+++ b/src/musredit_qt5/mupp/var/include/PExpressionDef.hpp
@@ -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)
         ;
 
     ///////////////////////////////////////////////////////////////////////
diff --git a/src/musredit_qt5/mupp/var/src/PProgram.cpp b/src/musredit_qt5/mupp/var/src/PProgram.cpp
index fac4a014..290761d4 100644
--- a/src/musredit_qt5/mupp/var/src/PProgram.cpp
+++ b/src/musredit_qt5/mupp/var/src/PProgram.cpp
@@ -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;