Index: src/libcfa/math
===================================================================
--- src/libcfa/math	(revision 0fc52b6ec9478db4016cce215b928b588385e1aa)
+++ src/libcfa/math	(revision 69efef811865685dd2e849045de95ea2bf660a3a)
@@ -10,6 +10,6 @@
 // Created On       : Mon Apr 18 23:37:04 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jul 11 21:12:54 2018
-// Update Count     : 109
+// Last Modified On : Fri Jul 13 11:02:15 2018
+// Update Count     : 116
 //
 
@@ -352,4 +352,15 @@
 #include "common"
 
+//---------------------------------------
+
+forall( otype T | { void ?{}( T &, one_t ); T ?+?( T, T ); T ?-?( T, T );T ?*?( T, T ); } )
+T lerp( T x, T y, T a ) { return x * ((T){1} - a) + y * a; }
+
+forall( otype T | { void ?{}( T &, zero_t ); void ?{}( T &, one_t ); int ?<?( T, T ); } )
+T step( T edge, T x ) { return x < edge ? (T){0} : (T){1}; }
+
+forall( otype T | { void ?{}( T &, int ); T clamp( T, T, T ); T ?-?( T, T ); T ?*?( T, T ); T ?/?( T, T ); } )
+T smoothstep( T edge0, T edge1, T x ) { T t = clamp( (x - edge0) / (edge1 - edge0), (T){0}, (T){1} ); return t * t * ((T){3} - (T){2} * t); }
+
 // Local Variables: //
 // mode: c //
