diff --git a/modules/geom/pymod/export_mat2.cc b/modules/geom/pymod/export_mat2.cc
index 8905a47466622acc71b60f69ad1210dd11a06cba..0338f1ddd482fea1c6c5bf0078b262234119374a 100644
--- a/modules/geom/pymod/export_mat2.cc
+++ b/modules/geom/pymod/export_mat2.cc
@@ -61,6 +61,8 @@ void export_Mat2()
     .def(self * self)
     .def(self * Vec2())
     .def(self / Real())
+    .def(self == self)
+    .def(self != self)
     .def(self_ns::str(self))
     .def("__getitem__",Mat2_getitem)
     .def("__setitem__",Mat2_setitem)
diff --git a/modules/geom/pymod/export_mat3.cc b/modules/geom/pymod/export_mat3.cc
index bf92d2e4e5c11f34ad692953f913902237206c4d..1e543b7d912cb9b20f96f54ba8de2bb902dd5249 100644
--- a/modules/geom/pymod/export_mat3.cc
+++ b/modules/geom/pymod/export_mat3.cc
@@ -90,6 +90,8 @@ void export_Mat3()
     .def(self * self)
     .def(self *= self)
     .def(self / Real())
+    .def(self == self)
+    .def(self != self)
     .def(self_ns::str(self))
     .def("__getitem__",Mat3_getitem)
     .def("__getitem__",Mat3_getslice)
diff --git a/modules/geom/pymod/export_mat4.cc b/modules/geom/pymod/export_mat4.cc
index 3bb555b2cfe0783346c0cf3de9a3c1626dc7fa36..1745e35b7e64a277eb102497736b343b4089f5d8 100644
--- a/modules/geom/pymod/export_mat4.cc
+++ b/modules/geom/pymod/export_mat4.cc
@@ -112,6 +112,8 @@ void export_Mat4()
     .def(self *= self)
     .def(self * Vec4())
     .def(self / Real())
+    .def(self == self)
+    .def(self != self)
     .def(self_ns::str(self))
     .def("__repr__", mat4_repr)
     .def("__getitem__",Mat4_getitem)
diff --git a/modules/geom/pymod/export_quat.cc b/modules/geom/pymod/export_quat.cc
index 7368ede77f65fa3995899c14ebcaecf41add681a..4e136ea8ee9c7c7fdf4c1a1ee793bb6e1977a74a 100644
--- a/modules/geom/pymod/export_quat.cc
+++ b/modules/geom/pymod/export_quat.cc
@@ -40,6 +40,7 @@ void export_Quat()
     .def(self += self)
     .def(self -= self)
     .def(self == self)
+    .def(self != self)
     .def(-self)
     .def(self * Real())
     .def(self * Quat())
diff --git a/modules/geom/pymod/export_vec2.cc b/modules/geom/pymod/export_vec2.cc
index 456d26db370fdad9e364cfaa9d98fa74a4dd28d1..161bda9f6d93b2515d59eb941c785adac4df0d71 100644
--- a/modules/geom/pymod/export_vec2.cc
+++ b/modules/geom/pymod/export_vec2.cc
@@ -67,6 +67,8 @@ void export_Vec2()
     .def(self / Real())
     .def(self + self)
     .def(self - self)
+    .def(self == self)
+    .def(self != self)
     .def("__repr__", vec2_repr)
     .def(self_ns::str(self))
     .def("__getitem__",Vec2_getitem)
diff --git a/modules/geom/pymod/export_vec3.cc b/modules/geom/pymod/export_vec3.cc
index 9a9b8f47c0850448a80a8033eb67c5df007b86e2..aab91add33e3a2fa09378c5e1734789199eb2bfb 100644
--- a/modules/geom/pymod/export_vec3.cc
+++ b/modules/geom/pymod/export_vec3.cc
@@ -70,6 +70,8 @@ void export_Vec3()
     .def(self + Real())
     .def(Real() + self)
     .def(self - self)
+    .def(self == self)
+    .def(self != self)
     .def(self_ns::str(self))
     .def("__getitem__",Vec3_getitem)
     .def("__setitem__",Vec3_setitem)
diff --git a/modules/geom/pymod/export_vec4.cc b/modules/geom/pymod/export_vec4.cc
index 4ebe1bbd108c95db0709622f544b9d79ee285c55..986fbfa73a8b61b04eb077f75d25026fa0e3dccc 100644
--- a/modules/geom/pymod/export_vec4.cc
+++ b/modules/geom/pymod/export_vec4.cc
@@ -67,6 +67,8 @@ void export_Vec4()
     .def(self / Real())
     .def(self + self)
     .def(self - self)
+    .def(self == self)
+    .def(self != self)
     .def(self_ns::str(self))
     .def("__getitem__",Vec4_getitem)
     .def("__setitem__",Vec4_setitem)
diff --git a/modules/geom/src/quat.hh b/modules/geom/src/quat.hh
index 4347952c0068515cfaf7e1ce38714611990fe5bc..dc206e4e5b9a30fd8b031bf539c61fa9ea83cdf1 100644
--- a/modules/geom/src/quat.hh
+++ b/modules/geom/src/quat.hh
@@ -93,6 +93,7 @@ public:
   Quat& operator/=(const Quat& q);
   // comparable
   bool operator==(const Quat& q) const;
+  bool operator!=(const Quat& q) const { return !this->operator==(q); }
 
   // Apply rotation to vector.
   Vec3 Rotate(const Vec3& vec) const;