diff --git a/src/tg/detail/scalars/scalar_math.hh b/src/tg/detail/scalars/scalar_math.hh
index ff54c38aa48351401db4f91ab4312abde8cb9987..ea3c097b1e1d3ba9f3202ead13318314eead77a0 100644
--- a/src/tg/detail/scalars/scalar_math.hh
+++ b/src/tg/detail/scalars/scalar_math.hh
@@ -61,6 +61,9 @@ inline f64 round(f64 v) { return std::round(v); }
 inline i32 iround(f32 v) { return v >= 0 ? i32(v + 0.5f) : i32(v - 0.5f); }
 inline i64 iround(f64 v) { return v >= 0 ? i64(v + 0.5) : i64(v - 0.5); }
 
+inline f32 fract(f32 v) { return v - floor(v); }
+inline f64 fract(f64 v) { return v - floor(v); }
+
 template <class T, class = enable_if<is_scalar<T>>>
 constexpr T min(T const& a, T const& b)
 {