diff --git a/CMakeLists.txt b/CMakeLists.txt
index 704c6ce8cbe9a3482d79a5497cc951d86657a105..c67436a527cfda16a9c239583151343e0def0a1e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,6 +40,8 @@ ADD_REQUIRED_DEPENDENCY("urdfdom >= v0.3.0")
 SET(HEADERS
   exception.hpp
   assert.hpp
+  math/sincos.hpp
+  tools/timer.hpp
   spatial/symmetric3.hpp
   spatial/se3.hpp
   spatial/motion.hpp
@@ -60,7 +62,6 @@ SET(HEADERS
   multibody/visitor.hpp
   multibody/parser/urdf.hpp
   multibody/parser/sample-models.hpp
-  tools/timer.hpp
   algorithm/rnea.hpp
   algorithm/crba.hpp
   algorithm/jacobian.hpp
@@ -80,6 +81,7 @@ SET(HEADERS
 )
 
 MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio")
+MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/math")
 MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/spatial")
 MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/multibody")
 MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/include/pinocchio/multibody/joint")
diff --git a/cmake b/cmake
index 112f519a2efb0a86f86fac94003be15ea4e8699b..2ff6e02faf16d06d442b87b680a400f083c101e0 160000
--- a/cmake
+++ b/cmake
@@ -1 +1 @@
-Subproject commit 112f519a2efb0a86f86fac94003be15ea4e8699b
+Subproject commit 2ff6e02faf16d06d442b87b680a400f083c101e0
diff --git a/src/math/sincos.hpp b/src/math/sincos.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..2745062b71f4f6cf8f1355415961317cb27ffc28
--- /dev/null
+++ b/src/math/sincos.hpp
@@ -0,0 +1,12 @@
+#ifndef __math_sincos_hpp__
+#define __math_sincos_hpp__
+
+#include <cmath>
+
+#ifdef __linux__
+#define SINCOS sincos
+#elif __APPLE__
+#define SINCOS __sincos
+#endif
+
+#endif //#ifndef __math_sincos_hpp__
diff --git a/src/multibody/joint/joint-revolute.hpp b/src/multibody/joint/joint-revolute.hpp
index 18c3fc7aa268a285a23678490cb611eb9f60e200..5f698c0e5443b80ca524568e9605ee0f724dbd6d 100644
--- a/src/multibody/joint/joint-revolute.hpp
+++ b/src/multibody/joint/joint-revolute.hpp
@@ -4,6 +4,7 @@
 #include "pinocchio/multibody/joint/joint-base.hpp"
 #include "pinocchio/multibody/constraint.hpp"
 #include "pinocchio/spatial/inertia.hpp"
+#include "pinocchio/math/sincos.hpp"
 #include "pinocchio/multibody/force-set.hpp"
 
 namespace se3
@@ -161,7 +162,7 @@ namespace se3
   Eigen::Matrix3d JointRevolute<0>::cartesianRotation(const double & angle) 
     {
       Eigen::Matrix3d R3; 
-      double ca,sa; sincos(angle,&sa,&ca);
+      double ca,sa; SINCOS (angle,&sa,&ca);
       R3 << 
       	1,0,0,
       	0,ca,-sa,
@@ -172,7 +173,7 @@ namespace se3
   Eigen::Matrix3d JointRevolute<1>::cartesianRotation(const double & angle)
     {
       Eigen::Matrix3d R3; 
-      double ca,sa; sincos(angle,&sa,&ca);
+      double ca,sa; SINCOS (angle,&sa,&ca);
       R3 << 
 	 ca, 0,  sa,
 	  0, 1,   0,
@@ -183,7 +184,7 @@ namespace se3
   Eigen::Matrix3d JointRevolute<2>::cartesianRotation(const double & angle) 
     {
       Eigen::Matrix3d R3; 
-      double ca,sa; sincos(angle,&sa,&ca);
+      double ca,sa; SINCOS (angle,&sa,&ca);
       R3 << 
 	ca,-sa,0,
 	sa,ca,0,