diff --git a/src/lol/math/real.h b/src/lol/math/real.h
index c71efebe..c4cb5929 100644
--- a/src/lol/math/real.h
+++ b/src/lol/math/real.h
@@ -76,55 +76,55 @@ public:
     operator bool() const;
 
     /* Comparison functions */
-    template<int M> friend Real<M> min(Real<M> const &a, Real<M> const &b);
-    template<int M> friend Real<M> max(Real<M> const &a, Real<M> const &b);
-    template<int M> friend Real<M> clamp(Real<M> const &x,
-                                         Real<M> const &a, Real<M> const &b);
+    template<int K> friend Real<K> min(Real<K> const &a, Real<K> const &b);
+    template<int K> friend Real<K> max(Real<K> const &a, Real<K> const &b);
+    template<int K> friend Real<K> clamp(Real<K> const &x,
+                                         Real<K> const &a, Real<K> const &b);
 
     /* Trigonometric functions */
-    template<int M> friend Real<M> sin(Real<M> const &x);
-    template<int M> friend Real<M> cos(Real<M> const &x);
-    template<int M> friend Real<M> tan(Real<M> const &x);
-    template<int M> friend Real<M> asin(Real<M> const &x);
-    template<int M> friend Real<M> acos(Real<M> const &x);
-    template<int M> friend Real<M> atan(Real<M> const &x);
-    template<int M> friend Real<M> atan2(Real<M> const &y, Real<M> const &x);
+    template<int K> friend Real<K> sin(Real<K> const &x);
+    template<int K> friend Real<K> cos(Real<K> const &x);
+    template<int K> friend Real<K> tan(Real<K> const &x);
+    template<int K> friend Real<K> asin(Real<K> const &x);
+    template<int K> friend Real<K> acos(Real<K> const &x);
+    template<int K> friend Real<K> atan(Real<K> const &x);
+    template<int K> friend Real<K> atan2(Real<K> const &y, Real<K> const &x);
 
     /* Hyperbolic functions */
-    template<int M> friend Real<M> sinh(Real<M> const &x);
-    template<int M> friend Real<M> cosh(Real<M> const &x);
-    template<int M> friend Real<M> tanh(Real<M> const &x);
+    template<int K> friend Real<K> sinh(Real<K> const &x);
+    template<int K> friend Real<K> cosh(Real<K> const &x);
+    template<int K> friend Real<K> tanh(Real<K> const &x);
 
     /* Exponential and logarithmic functions */
-    template<int M> friend Real<M> exp(Real<M> const &x);
-    template<int M> friend Real<M> exp2(Real<M> const &x);
-    template<int M> friend Real<M> log(Real<M> const &x);
-    template<int M> friend Real<M> log2(Real<M> const &x);
-    template<int M> friend Real<M> log10(Real<M> const &x);
-    template<int M> friend Real<M> frexp(Real<M> const &x, int *exp);
-    template<int M> friend Real<M> ldexp(Real<M> const &x, int exp);
-    template<int M> friend Real<M> modf(Real<M> const &x, Real<M> *iptr);
-    template<int M> friend Real<M> ulp(Real<M> const &x);
-    template<int M> friend Real<M> nextafter(Real<M> const &x, Real<M> const &y);
+    template<int K> friend Real<K> exp(Real<K> const &x);
+    template<int K> friend Real<K> exp2(Real<K> const &x);
+    template<int K> friend Real<K> log(Real<K> const &x);
+    template<int K> friend Real<K> log2(Real<K> const &x);
+    template<int K> friend Real<K> log10(Real<K> const &x);
+    template<int K> friend Real<K> frexp(Real<K> const &x, int *exp);
+    template<int K> friend Real<K> ldexp(Real<K> const &x, int exp);
+    template<int K> friend Real<K> modf(Real<K> const &x, Real<K> *iptr);
+    template<int K> friend Real<K> ulp(Real<K> const &x);
+    template<int K> friend Real<K> nextafter(Real<K> const &x, Real<K> const &y);
 
     /* Power functions */
-    template<int M> friend Real<M> re(Real<M> const &x);
-    template<int M> friend Real<M> sqrt(Real<M> const &x);
-    template<int M> friend Real<M> cbrt(Real<M> const &x);
-    template<int M> friend Real<M> pow(Real<M> const &x, Real<M> const &y);
-    template<int M> friend Real<M> gamma(Real<M> const &x);
+    template<int K> friend Real<K> re(Real<K> const &x);
+    template<int K> friend Real<K> sqrt(Real<K> const &x);
+    template<int K> friend Real<K> cbrt(Real<K> const &x);
+    template<int K> friend Real<K> pow(Real<K> const &x, Real<K> const &y);
+    template<int K> friend Real<K> gamma(Real<K> const &x);
 
     /* Rounding, absolute value, remainder etc. */
-    template<int M> friend Real<M> ceil(Real<M> const &x);
-    template<int M> friend Real<M> copysign(Real<M> const &x, Real<M> const &y);
-    template<int M> friend Real<M> floor(Real<M> const &x);
-    template<int M> friend Real<M> fabs(Real<M> const &x);
-    template<int M> friend Real<M> round(Real<M> const &x);
-    template<int M> friend Real<M> fmod(Real<M> const &x, Real<N> const &y);
+    template<int K> friend Real<K> ceil(Real<K> const &x);
+    template<int K> friend Real<K> copysign(Real<K> const &x, Real<K> const &y);
+    template<int K> friend Real<K> floor(Real<K> const &x);
+    template<int K> friend Real<K> fabs(Real<K> const &x);
+    template<int K> friend Real<K> round(Real<K> const &x);
+    template<int K> friend Real<K> fmod(Real<K> const &x, Real<K> const &y);
 
     /* Functions inherited from GLSL */
-    template<int M> friend Real<M> abs(Real<M> const &x);
-    template<int M> friend Real<M> fract(Real<M> const &x);
+    template<int K> friend Real<K> abs(Real<K> const &x);
+    template<int K> friend Real<K> fract(Real<K> const &x);
 
     void hexprint() const;
     void print(int ndigits = 150) const;
@@ -238,6 +238,45 @@ template<> bool real::operator >=(real const &x) const;
 template<> bool real::operator !() const;
 template<> real::operator bool() const;
 
+template<int K> Real<K> min(Real<K> const &a, Real<K> const &b);
+template<int K> Real<K> max(Real<K> const &a, Real<K> const &b);
+template<int K> Real<K> clamp(Real<K> const &x,
+                              Real<K> const &a, Real<K> const &b);
+
+template<int K> Real<K> sin(Real<K> const &x);
+template<int K> Real<K> cos(Real<K> const &x);
+template<int K> Real<K> tan(Real<K> const &x);
+template<int K> Real<K> asin(Real<K> const &x);
+template<int K> Real<K> acos(Real<K> const &x);
+template<int K> Real<K> atan(Real<K> const &x);
+template<int K> Real<K> atan2(Real<K> const &y, Real<K> const &x);
+template<int K> Real<K> sinh(Real<K> const &x);
+template<int K> Real<K> cosh(Real<K> const &x);
+template<int K> Real<K> tanh(Real<K> const &x);
+template<int K> Real<K> exp(Real<K> const &x);
+template<int K> Real<K> exp2(Real<K> const &x);
+template<int K> Real<K> log(Real<K> const &x);
+template<int K> Real<K> log2(Real<K> const &x);
+template<int K> Real<K> log10(Real<K> const &x);
+template<int K> Real<K> frexp(Real<K> const &x, int *exp);
+template<int K> Real<K> ldexp(Real<K> const &x, int exp);
+template<int K> Real<K> modf(Real<K> const &x, Real<K> *iptr);
+template<int K> Real<K> ulp(Real<K> const &x);
+template<int K> Real<K> nextafter(Real<K> const &x, Real<K> const &y);
+template<int K> Real<K> re(Real<K> const &x);
+template<int K> Real<K> sqrt(Real<K> const &x);
+template<int K> Real<K> cbrt(Real<K> const &x);
+template<int K> Real<K> pow(Real<K> const &x, Real<K> const &y);
+template<int K> Real<K> gamma(Real<K> const &x);
+template<int K> Real<K> ceil(Real<K> const &x);
+template<int K> Real<K> copysign(Real<K> const &x, Real<K> const &y);
+template<int K> Real<K> floor(Real<K> const &x);
+template<int K> Real<K> fabs(Real<K> const &x);
+template<int K> Real<K> round(Real<K> const &x);
+template<int K> Real<K> fmod(Real<K> const &x, Real<K> const &y);
+template<int K> Real<K> abs(Real<K> const &x);
+template<int K> Real<K> fract(Real<K> const &x);
+
 template<> real min(real const &a, real const &b);
 template<> real max(real const &a, real const &b);
 template<> real clamp(real const &x, real const &a, real const &b);
@@ -278,6 +317,7 @@ template<> real fract(real const &x);
 
 template<> void real::hexprint() const;
 template<> void real::print(int ndigits) const;
+template<> void real::sprintf(char *str, int ndigits) const;
 
 } /* namespace lol */