Index: uspace/lib/math/arch/abs32le/include/libarch/math.h
===================================================================
--- uspace/lib/math/arch/abs32le/include/libarch/math.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/arch/abs32le/include/libarch/math.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -53,22 +53,10 @@
 static inline float64_t trunc(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = trunc_float64(arg.data);
-	
-	return ret.val;
+	return float64_trunc(val);
 }
 
 static inline float64_t ceil(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = ceil_float64(arg.data);
-	
-	return ret.val;
+	return float64_ceil(val);
 }
 
@@ -85,11 +73,5 @@
 static inline float64_t floor(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = floor_float64(arg.data);
-	
-	return ret.val;
+	return float64_floor(val);
 }
 
Index: uspace/lib/math/arch/amd64/include/libarch/math.h
===================================================================
--- uspace/lib/math/arch/amd64/include/libarch/math.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/arch/amd64/include/libarch/math.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -54,11 +54,5 @@
 static inline float64_t ceil(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = ceil_float64(arg.data);
-	
-	return ret.val;
+	return float64_ceil(val);
 }
 
@@ -75,11 +69,5 @@
 static inline float64_t floor(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = floor_float64(arg.data);
-	
-	return ret.val;
+	return float64_floor(val);
 }
 
Index: uspace/lib/math/arch/arm32/include/libarch/math.h
===================================================================
--- uspace/lib/math/arch/arm32/include/libarch/math.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/arch/arm32/include/libarch/math.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -53,22 +53,10 @@
 static inline float64_t trunc(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = trunc_float64(arg.data);
-	
-	return ret.val;
+	return float64_trunc(val);
 }
 
 static inline float64_t ceil(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = ceil_float64(arg.data);
-	
-	return ret.val;
+	return float64_ceil(val);
 }
 
@@ -85,11 +73,5 @@
 static inline float64_t floor(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = floor_float64(arg.data);
-	
-	return ret.val;
+	return float64_floor(val);
 }
 
Index: uspace/lib/math/arch/ia32/include/libarch/math.h
===================================================================
--- uspace/lib/math/arch/ia32/include/libarch/math.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/arch/ia32/include/libarch/math.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -54,22 +54,10 @@
 static inline float64_t ceil(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = ceil_float64(arg.data);
-	
-	return ret.val;
+	return float64_ceil(val);
 }
 
 static inline float64_t floor(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = floor_float64(arg.data);
-	
-	return ret.val;
+	return float64_floor(val);
 }
 
Index: uspace/lib/math/arch/ia64/include/libarch/math.h
===================================================================
--- uspace/lib/math/arch/ia64/include/libarch/math.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/arch/ia64/include/libarch/math.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -53,22 +53,10 @@
 static inline float64_t trunc(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = trunc_float64(arg.data);
-	
-	return ret.val;
+	return float64_trunc(val);
 }
 
 static inline float64_t ceil(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = ceil_float64(arg.data);
-	
-	return ret.val;
+	return float64_ceil(val);
 }
 
@@ -85,11 +73,5 @@
 static inline float64_t floor(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = floor_float64(arg.data);
-	
-	return ret.val;
+	return float64_floor(val);
 }
 
Index: uspace/lib/math/arch/mips32/include/libarch/math.h
===================================================================
--- uspace/lib/math/arch/mips32/include/libarch/math.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/arch/mips32/include/libarch/math.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -53,22 +53,10 @@
 static inline float64_t trunc(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = trunc_float64(arg.data);
-	
-	return ret.val;
+	return float64_trunc(val);
 }
 
 static inline float64_t ceil(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = ceil_float64(arg.data);
-	
-	return ret.val;
+	return float64_ceil(val);
 }
 
@@ -85,11 +73,5 @@
 static inline float64_t floor(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = floor_float64(arg.data);
-	
-	return ret.val;
+	return float64_floor(val);
 }
 
Index: uspace/lib/math/arch/mips32eb/include/libarch/math.h
===================================================================
--- uspace/lib/math/arch/mips32eb/include/libarch/math.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/arch/mips32eb/include/libarch/math.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -53,22 +53,10 @@
 static inline float64_t trunc(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = trunc_float64(arg.data);
-	
-	return ret.val;
+	return float64_trunc(val);
 }
 
 static inline float64_t ceil(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = ceil_float64(arg.data);
-	
-	return ret.val;
+	return float64_ceil(val);
 }
 
@@ -85,11 +73,5 @@
 static inline float64_t floor(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = floor_float64(arg.data);
-	
-	return ret.val;
+	return float64_floor(val);
 }
 
Index: uspace/lib/math/arch/ppc32/include/libarch/math.h
===================================================================
--- uspace/lib/math/arch/ppc32/include/libarch/math.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/arch/ppc32/include/libarch/math.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -53,22 +53,10 @@
 static inline double trunc(double val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = trunc_float64(arg.data);
-	
-	return ret.val;
+	return float64_trunc(val);
 }
 
 static inline float64_t ceil(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = ceil_float64(arg.data);
-	
-	return ret.val;
+	return float64_ceil(val);
 }
 
@@ -85,11 +73,5 @@
 static inline float64_t floor(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = floor_float64(arg.data);
-	
-	return ret.val;
+	return float64_floor(val);
 }
 
Index: uspace/lib/math/arch/sparc32/include/libarch/math.h
===================================================================
--- uspace/lib/math/arch/sparc32/include/libarch/math.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/arch/sparc32/include/libarch/math.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -53,22 +53,10 @@
 static inline float64_t trunc(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = trunc_float64(arg.data);
-	
-	return ret.val;
+	return float64_trunc(val);
 }
 
 static inline float64_t ceil(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = ceil_float64(arg.data);
-	
-	return ret.val;
+	return float64_ceil(val);
 }
 
@@ -85,11 +73,5 @@
 static inline float64_t floor(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = floor_float64(arg.data);
-	
-	return ret.val;
+	return float64_floor(val);
 }
 
Index: uspace/lib/math/arch/sparc64/include/libarch/math.h
===================================================================
--- uspace/lib/math/arch/sparc64/include/libarch/math.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/arch/sparc64/include/libarch/math.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -53,22 +53,10 @@
 static inline float64_t trunc(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = trunc_float64(arg.data);
-	
-	return ret.val;
+	return float64_trunc(val);
 }
 
 static inline float64_t ceil(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = ceil_float64(arg.data);
-	
-	return ret.val;
+	return float64_ceil(val);
 }
 
@@ -85,11 +73,5 @@
 static inline float64_t floor(float64_t val)
 {
-	float64_u arg;
-	arg.val = val;
-	
-	float64_u ret;
-	ret.data = floor_float64(arg.data);
-	
-	return ret.val;
+	return float64_floor(val);
 }
 
Index: uspace/lib/math/generic/ceil.c
===================================================================
--- uspace/lib/math/generic/ceil.c	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/generic/ceil.c	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -43,5 +43,5 @@
  * @return Number rounded towards positive infinity.
  */
-float64 ceil_float64(float64 val)
+float64_t float64_ceil(float64_t val)
 {
 	float64_u t;
@@ -49,8 +49,8 @@
 	float64_u r;
 	
-	v.data = val;
-	t.data = trunc_float64(val);
+	v.val = val;
+	t.val = float64_trunc(val);
 	
-	if (val.parts.sign == 1 || v.val == t.val) {
+	if (v.data.parts.sign == 1 || val == t.val) {
 		r = t;
 	} else {
@@ -58,5 +58,5 @@
 	}
 	
-	return r.data;
+	return r.val;
 }
 
Index: uspace/lib/math/generic/exp.c
===================================================================
--- uspace/lib/math/generic/exp.c	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/generic/exp.c	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -111,6 +111,5 @@
 {
 	float32_t f;
-	float32_u i;
-	float32_u m;
+	float32_t i;
 	float32_u r;
 
@@ -122,10 +121,9 @@
 	 */
 
-	m.val = arg * M_LOG2E;
-	i.data = trunc_float32(m.data);
-	f = arg * M_LOG2E - i.val;
+	i = float32_trunc(arg * M_LOG2E);
+	f = arg * M_LOG2E - i;
 
 	r.val = taylor_exp_32(M_LN2 * f);
-	r.data.parts.exp += i.val;
+	r.data.parts.exp += i;
 	return r.val;
 }
@@ -143,6 +141,5 @@
 {
 	float64_t f;
-	float64_u i;
-	float64_u m;
+	float64_t i;
 	float64_u r;
 
@@ -154,10 +151,9 @@
 	 */
 
-	m.val = arg * M_LOG2E;
-	i.data = trunc_float64(m.data);
-	f = arg * M_LOG2E - i.val;
+	i = float64_trunc(arg * M_LOG2E);
+	f = arg * M_LOG2E - i;
 
 	r.val = taylor_exp_64(M_LN2 * f);
-	r.data.parts.exp += i.val;
+	r.data.parts.exp += i;
 	return r.val;
 }
Index: uspace/lib/math/generic/floor.c
===================================================================
--- uspace/lib/math/generic/floor.c	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/generic/floor.c	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -44,20 +44,16 @@
  */
 
-float64 floor_float64(float64 val)
+float64_t float64_floor(float64_t val)
 {
-	float64_u t;
+	float64_t t;
 	float64_u v;
-	float64_u r;
 	
-	v.data = val;
-	t.data = trunc_float64(val);
+	v.val = val;
+	t = float64_trunc(val);
 	
-	if (val.parts.sign == 0 || v.val == t.val) {
-		r = t;
-	} else {
-		r.val = t.val - 1.0;
-	}
-	
-	return r.data;
+	if (v.data.parts.sign == 0 || val == t)
+		return t;
+	else
+		return t - 1.0;
 }
 
Index: uspace/lib/math/generic/trunc.c
===================================================================
--- uspace/lib/math/generic/trunc.c	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/generic/trunc.c	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -51,12 +51,16 @@
  *
  */
-float32 trunc_float32(float32 val)
+float32_t float32_trunc(float32_t val)
 {
-	int32_t exp = val.parts.exp - FLOAT32_BIAS;
+	float32_u v;
+	int32_t exp;
+	
+	v.val = val;
+	exp = v.data.parts.exp - FLOAT32_BIAS;
 	
 	if (exp < 0) {
 		/* -1 < val < 1 => result is +0 or -0 */
-		val.parts.exp = 0;
-		val.parts.fraction = 0;
+		v.data.parts.exp = 0;
+		v.data.parts.fraction = 0;
 	} else if (exp >= FLOAT32_FRACTION_SIZE) {
 		if (exp == 1024) {
@@ -68,8 +72,8 @@
 	} else {
 		/* Truncate irrelevant fraction bits */
-		val.parts.fraction &= ~(UINT32_C(0x007fffff) >> exp);
+		v.data.parts.fraction &= ~(UINT32_C(0x007fffff) >> exp);
 	}
 	
-	return val;
+	return v.val;
 }
 
@@ -89,12 +93,16 @@
  *
  */
-float64 trunc_float64(float64 val)
+float64_t float64_trunc(float64_t val)
 {
-	int32_t exp = val.parts.exp - FLOAT64_BIAS;
+	float64_u v;
+	int32_t exp;
+	
+	v.val = val;
+	exp = v.data.parts.exp - FLOAT64_BIAS;
 	
 	if (exp < 0) {
 		/* -1 < val < 1 => result is +0 or -0 */
-		val.parts.exp = 0;
-		val.parts.fraction = 0;
+		v.data.parts.exp = 0;
+		v.data.parts.fraction = 0;
 	} else if (exp >= FLOAT64_FRACTION_SIZE) {
 		if (exp == 1024) {
@@ -106,8 +114,8 @@
 	} else {
 		/* Truncate irrelevant fraction bits */
-		val.parts.fraction &= ~(UINT64_C(0x000fffffffffffff) >> exp);
+		v.data.parts.fraction &= ~(UINT64_C(0x000fffffffffffff) >> exp);
 	}
 	
-	return val;
+	return v.val;
 }
 
Index: uspace/lib/math/include/ceil.h
===================================================================
--- uspace/lib/math/include/ceil.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/include/ceil.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -38,5 +38,5 @@
 #include <mathtypes.h>
 
-extern float64 ceil_float64(float64);
+extern float64_t float64_ceil(float64_t);
 
 #endif
Index: uspace/lib/math/include/floor.h
===================================================================
--- uspace/lib/math/include/floor.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/include/floor.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -38,5 +38,5 @@
 #include <mathtypes.h>
 
-extern float64 floor_float64(float64);
+extern float64_t float64_floor(float64_t);
 
 #endif
Index: uspace/lib/math/include/trig.h
===================================================================
--- uspace/lib/math/include/trig.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/include/trig.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -36,4 +36,6 @@
 #define LIBMATH_TRIG_H_
 
+#include <mathtypes.h>
+
 extern float64_t float64_sin(float64_t);
 extern float64_t float64_cos(float64_t);
Index: uspace/lib/math/include/trunc.h
===================================================================
--- uspace/lib/math/include/trunc.h	(revision 01cdd5ae7da116060201cbd32623d045eaf00d62)
+++ uspace/lib/math/include/trunc.h	(revision e6f57664d3ef46f2516e2135088330f4f6eb2ba4)
@@ -38,6 +38,6 @@
 #include <mathtypes.h>
 
-extern float32 trunc_float32(float32);
-extern float64 trunc_float64(float64);
+extern float32_t float32_trunc(float32_t);
+extern float64_t float64_trunc(float64_t);
 
 #endif
