Index: /trunk/lib/FlairCore/src/Euler.cpp
===================================================================
--- /trunk/lib/FlairCore/src/Euler.cpp	(revision 335)
+++ /trunk/lib/FlairCore/src/Euler.cpp	(revision 336)
@@ -81,15 +81,15 @@
 */
 void Euler::ToQuaternion(Quaternion &quaternion) const {
-  quaternion.q0 = cos(yaw / 2) * cos(pitch / 2) * cos(roll / 2) +
-                  sin(yaw / 2) * sin(pitch / 2) * sin(roll / 2);
+  quaternion.q0 = cosf(yaw / 2.0f) * cosf(pitch / 2.0f) * cosf(roll / 2.0f) +
+                  sinf(yaw / 2.0f) * sinf(pitch / 2.0f) * sinf(roll / 2.0f);
 
-  quaternion.q1 = cos(yaw / 2) * cos(pitch / 2) * sin(roll / 2) -
-                  sin(yaw / 2) * sin(pitch / 2) * cos(roll / 2);
+  quaternion.q1 = cosf(yaw / 2.0f) * cosf(pitch / 2.0f) * sinf(roll / 2.0f) -
+                  sinf(yaw / 2.0f) * sinf(pitch / 2.0f) * cosf(roll / 2.0f);
 
-  quaternion.q2 = cos(yaw / 2) * sin(pitch / 2) * cos(roll / 2) +
-                  sin(yaw / 2) * cos(pitch / 2) * sin(roll / 2);
+  quaternion.q2 = cosf(yaw / 2.0f) * sinf(pitch / 2.0f) * cosf(roll / 2.0f) +
+                  sinf(yaw / 2.0f) * cosf(pitch / 2.0f) * sinf(roll / 2.0f);
 
-  quaternion.q3 = sin(yaw / 2) * cos(pitch / 2) * cos(roll / 2) -
-                  cos(yaw / 2) * sin(pitch / 2) * sin(roll / 2);
+  quaternion.q3 = sinf(yaw / 2.0f) * cosf(pitch / 2.0f) * cosf(roll / 2.0f) -
+                  cosf(yaw / 2.0f) * sinf(pitch / 2.0f) * sinf(roll / 2.0f);
 }
 
Index: /trunk/lib/FlairCore/src/Quaternion.cpp
===================================================================
--- /trunk/lib/FlairCore/src/Quaternion.cpp	(revision 335)
+++ /trunk/lib/FlairCore/src/Quaternion.cpp	(revision 336)
@@ -39,5 +39,5 @@
 
 float Quaternion::GetNorm(void) const {
-  return sqrt(q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3);
+  return sqrtf(q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3);
 }
 
@@ -94,8 +94,22 @@
 }
 
+float Quaternion::GetEulerRoll(void) const {
+    return atan2f(2 * (q0 * q1 + q2 * q3), 1 - 2 * (q1 * q1 + q2 * q2));
+}
+  
+
+float Quaternion::GetEulerPitch(void) const {
+    return asinf(2 * (q0 * q2 - q1 * q3));
+}
+  
+
+float Quaternion::GetEulerYaw(void) const {
+    return atan2f(2 * (q0 * q3 + q1 * q2), 1 - 2 * (q2 * q2 + q3 * q3));
+}
+  
 void Quaternion::ToEuler(Euler &euler) const {
-  euler.roll = atan2(2 * (q0 * q1 + q2 * q3), 1 - 2 * (q1 * q1 + q2 * q2));
-  euler.pitch = asin(2 * (q0 * q2 - q1 * q3));
-  euler.yaw = atan2(2 * (q0 * q3 + q1 * q2), 1 - 2 * (q2 * q2 + q3 * q3));
+  euler.roll = GetEulerRoll();
+  euler.pitch = GetEulerPitch();
+  euler.yaw = GetEulerYaw();
 }
 
Index: /trunk/lib/FlairCore/src/Quaternion.h
===================================================================
--- /trunk/lib/FlairCore/src/Quaternion.h	(revision 335)
+++ /trunk/lib/FlairCore/src/Quaternion.h	(revision 336)
@@ -115,4 +115,25 @@
   */
   Euler ToEuler(void) const;
+  
+  /*!
+  * \brief Get roll euler angle
+  *
+  * \return roll euler angle
+  */
+  float GetEulerRoll(void) const;
+  
+  /*!
+  * \brief Get pitch euler angle
+  *
+  * \return pitch euler angle
+  */
+  float GetEulerPitch(void) const;
+  
+  /*!
+  * \brief Get yaw euler angle
+  *
+  * \return yaw euler angle
+  */
+  float GetEulerYaw(void) const;
 
   /*!
Index: /trunk/lib/FlairCore/src/Vector2D.cpp
===================================================================
--- /trunk/lib/FlairCore/src/Vector2D.cpp	(revision 335)
+++ /trunk/lib/FlairCore/src/Vector2D.cpp	(revision 336)
@@ -92,5 +92,5 @@
 template <typename T> void Vector2D<T>::RotateDeg(float value) { Rotate(Euler::ToRadian(value)); }
 
-template <typename T> float Vector2D<T>::GetNorm(void) const { return sqrt(x * x + y * y); }
+template <typename T> float Vector2D<T>::GetNorm(void) const { return sqrtf(x * x + y * y); }
 
 template <typename T> void Vector2D<T>::Normalize(void) {
Index: /trunk/lib/FlairCore/src/Vector3D.cpp
===================================================================
--- /trunk/lib/FlairCore/src/Vector3D.cpp	(revision 335)
+++ /trunk/lib/FlairCore/src/Vector3D.cpp	(revision 336)
@@ -218,5 +218,5 @@
 }
 
-template <typename T> float Vector3D<T>::GetNorm(void) const { return sqrt(x * x + y * y + z * z); }
+template <typename T> float Vector3D<T>::GetNorm(void) const { return sqrtf(x * x + y * y + z * z); }
 
 template <typename T> void Vector3D<T>::Normalize(void) {
Index: /trunk/lib/FlairFilter/src/JoyReference_impl.cpp
===================================================================
--- /trunk/lib/FlairFilter/src/JoyReference_impl.cpp	(revision 335)
+++ /trunk/lib/FlairFilter/src/JoyReference_impl.cpp	(revision 336)
@@ -174,7 +174,7 @@
   Vector3Df e_bar = theta_xy;
   e_bar.Normalize();
-  Quaternion q_xy(cos(theta_xy.GetNorm() / 2.0f),
-                  e_bar.x * sin(theta_xy.GetNorm() / 2.0f),
-                  e_bar.y * sin(theta_xy.GetNorm() / 2.0f), 0);
+  Quaternion q_xy(cosf(theta_xy.GetNorm() / 2.0f),
+                  e_bar.x * sinf(theta_xy.GetNorm() / 2.0f),
+                  e_bar.y * sinf(theta_xy.GetNorm() / 2.0f), 0);
   q_xy.Normalize();
 
Index: /trunk/lib/FlairFilter/src/TrajectoryGenerator2DCircle_impl.cpp
===================================================================
--- /trunk/lib/FlairFilter/src/TrajectoryGenerator2DCircle_impl.cpp	(revision 335)
+++ /trunk/lib/FlairFilter/src/TrajectoryGenerator2DCircle_impl.cpp	(revision 336)
@@ -72,5 +72,5 @@
 
   // configure trajectory
-  angle_off = atan2(start_pos.y - pos_off.y, start_pos.x - pos_off.x);
+  angle_off = atan2f(start_pos.y - pos_off.y, start_pos.x - pos_off.x);
   CurrentTime = 0;
 }
@@ -120,16 +120,16 @@
       if (CurrentTime < V / A) {
         theta = angle_off + A / 2 * CurrentTime * CurrentTime / R;
-        pos.x = R * cos(theta);
-        pos.y = R * sin(theta);
-        v.x = -A * CurrentTime * sin(theta);
-        v.y = A * CurrentTime * cos(theta);
+        pos.x = R * cosf(theta);
+        pos.y = R * sinf(theta);
+        v.x = -A * CurrentTime * sinf(theta);
+        v.y = A * CurrentTime * cosf(theta);
       } else {
         if (!is_finishing) {
           theta =
               angle_off + V * V / (2 * A * R) + (CurrentTime - V / A) * V / R;
-          pos.x = R * cos(theta);
-          pos.y = R * sin(theta);
-          v.x = -V * sin(theta);
-          v.y = V * cos(theta);
+          pos.x = R * cosf(theta);
+          pos.y = R * sinf(theta);
+          v.x = -V * sinf(theta);
+          v.y = V * cosf(theta);
         } else {
           theta = angle_off + V * V / (2 * A * R) +
@@ -138,8 +138,8 @@
                       (FinishTime - CurrentTime) / R +
                   V * (CurrentTime - FinishTime) / R;
-          pos.x = R * cos(theta);
-          pos.y = R * sin(theta);
-          v.x = -(V + A * (FinishTime - CurrentTime)) * sin(theta);
-          v.y = (V + A * (FinishTime - CurrentTime)) * cos(theta);
+          pos.x = R * cosf(theta);
+          pos.y = R * sinf(theta);
+          v.x = -(V + A * (FinishTime - CurrentTime)) * sinf(theta);
+          v.y = (V + A * (FinishTime - CurrentTime)) * cosf(theta);
         }
       }
Index: /trunk/lib/FlairSensorActuator/src/HostEthController.cpp
===================================================================
--- /trunk/lib/FlairSensorActuator/src/HostEthController.cpp	(revision 335)
+++ /trunk/lib/FlairSensorActuator/src/HostEthController.cpp	(revision 336)
@@ -90,5 +90,5 @@
   for (unsigned int i = 0; i < axisNumber; i++) {
     // Start a new row or add up to the current row? We try to keep a 4/3 ratio
-    unsigned int columns = sqrt(4.0 * axisNumber / 3.0);
+    unsigned int columns = sqrtf(4.0 * axisNumber / 3.0);
     LayoutPosition *position;
     if (i % columns == 0) {
