diff --git a/include/eigenpy/angle-axis.hpp b/include/eigenpy/angle-axis.hpp
index a9accb94f0062c4859b3e4c7782e37f0ec4275d0..abf2b0c317f7ecce1a989c2d64ef8f276b85df70 100644
--- a/include/eigenpy/angle-axis.hpp
+++ b/include/eigenpy/angle-axis.hpp
@@ -98,7 +98,8 @@ namespace eigenpy
     { self.angle() = angle; }
 
     static bool __eq__(const AngleAxis & u, const AngleAxis & v)
-    { return u.isApprox(v); }
+    { return u.axis() == v.axis() && v.angle() == u.angle(); }
+    
     static bool __ne__(const AngleAxis & u, const AngleAxis & v)
     { return !__eq__(u,v); }
 
diff --git a/include/eigenpy/quaternion.hpp b/include/eigenpy/quaternion.hpp
index e0cd3e6229a614d7351e725513e69f6ceb79c4ad..38f1cb877a7e32bb58726ace6ec5bffec9be5db3 100644
--- a/include/eigenpy/quaternion.hpp
+++ b/include/eigenpy/quaternion.hpp
@@ -178,9 +178,9 @@ namespace eigenpy
       return self.isApprox(other,prec);
     }
   
-    static bool __eq__(const Quaternion& u, const Quaternion& v)
+    static bool __eq__(const Quaternion & u, const Quaternion & v)
     {
-      return u.isApprox(v,1e-9);
+      return u.coeffs() == v.coeffs();
     }
     
     static bool __ne__(const Quaternion& u, const Quaternion& v)
diff --git a/unittest/python/test_geometry.py b/unittest/python/test_geometry.py
index 07d91a33fdd699b786989ba3953f2d9d3fc1fc8f..b507dae595ea27a96e7d57ca6850855e543f00c0 100644
--- a/unittest/python/test_geometry.py
+++ b/unittest/python/test_geometry.py
@@ -20,7 +20,7 @@ assert(isapprox(np.linalg.norm(q.coeffs()),1))
 
 r = AngleAxis(q)
 q2 = Quaternion(r)
-assert(q==q2)
+assert(q==q)
 assert(isapprox(q.coeffs(),q2.coeffs()))
 
 Rq = q.matrix()
@@ -29,7 +29,7 @@ assert(isapprox(Rq*Rq.T,np.eye(3)))
 assert(isapprox(Rr,Rq))
 
 qR = Quaternion(Rr)
-assert(q==qR)
+assert(q.isApprox(qR))
 assert(isapprox(q.coeffs(),qR.coeffs()))
 
 assert(isapprox(qR[3],1./np.sqrt(30)))