diff --git a/MathLib/Vector3.cpp b/MathLib/Vector3.cpp
index b4a12364a2a68a01d9b58c23258fcb9074892cbf..040b473a9ab7eb2b2e7fc8e779e71cd4f15866d3 100644
--- a/MathLib/Vector3.cpp
+++ b/MathLib/Vector3.cpp
@@ -24,10 +24,10 @@ double scalarTriple(MathLib::Vector3 const& u, MathLib::Vector3 const& v,
     return pu.cross(pv).dot(pw);
 }
 
-//double scalarTriple(EigenLib::Vector3d const& u, EigenLib::Vector3d const& v,
-//                    EigenLib::Vector3d const& w)
-//{
-//    return (u.cross(v).dot(w))(0,0);
-//}
+double scalarTriple(Eigen::Vector3d const& u, Eigen::Vector3d const& v,
+                    Eigen::Vector3d const& w)
+{
+    return u.cross(v).dot(w);
+}
 
 }  // end namespace MathLib
diff --git a/MathLib/Vector3.h b/MathLib/Vector3.h
index 7d982e87209555ebc523358841f7daf2b1e72c38..d7b35db9a4a5d125205902db3a1493de186e3bf8 100644
--- a/MathLib/Vector3.h
+++ b/MathLib/Vector3.h
@@ -16,6 +16,7 @@
 
 #pragma once
 
+#include <Eigen/Eigen>
 #include <cmath>
 
 #include "TemplatePoint.h"
@@ -200,4 +201,7 @@ using Vector3 = TemplateVector3<double>;
 double scalarTriple(MathLib::Vector3 const& u, MathLib::Vector3 const& v,
                     MathLib::Vector3 const& w);
 
+/// Calculates the scalar triple (u x v) . w using Eigen functionality
+double scalarTriple(Eigen::Vector3d const& u, Eigen::Vector3d const& v,
+                    Eigen::Vector3d const& w);
 }  // namespace MathLib