diff --git a/corsika/framework/units/quantity.hpp b/corsika/framework/units/quantity.hpp
index 5430fa398b9f7caae3182dce488ab8ea3ced9aaf..7b5bd35877b755fe1d751965975c148d42a8f20e 100644
--- a/corsika/framework/units/quantity.hpp
+++ b/corsika/framework/units/quantity.hpp
@@ -468,6 +468,9 @@ namespace phys {
       template <typename D, typename X>
       friend detail::Root<D, 2, X> sqrt(quantity<D, X> const& x);
 
+      template <typename D, typename X>
+      friend detail::Root<D, 3, X> cbrt(quantity<D, X> const& x);
+
       // comparison
 
       template <typename D, typename X, typename Y>
@@ -679,6 +682,16 @@ namespace phys {
       return detail::Root<D, 2, X>(std::sqrt(x.m_value));
     }
 
+    /// cubic root.
+
+    template <typename D, typename X>
+    detail::Root<D, 3, X> cbrt(quantity<D, X> const& x) {
+      static_assert(detail::root<D, 3, X>::all_even_multiples,
+                    "root result dimensions must be integral");
+
+      return detail::Root<D, 3, X>(std::cbrt(x.m_value));
+    }
+
     // Comparison operators
 
     /// equality.