aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/rin/float.h5
-rw-r--r--src/float/float.c36
2 files changed, 40 insertions, 1 deletions
diff --git a/include/rin/float.h b/include/rin/float.h
index 16d1f7e..70bb072 100644
--- a/include/rin/float.h
+++ b/include/rin/float.h
@@ -26,7 +26,6 @@
/*
* TODO:
- * · weak aliasing
* · more modes
*/
@@ -59,8 +58,12 @@ unsigned int rin_compare_rin_vec4d(const struct rin_vec4d a, const struct rin_ve
uint32_t rin_float_to_uint(const float num);
int32_t rin_float_to_int(const float num);
+float rin_uint_to_float(const uint32_t num);
+float rin_int_to_float(const int32_t num);
uint64_t rin_double_to_ulong(const double num);
int64_t rin_double_to_long(const double num);
+double rin_ulong_to_double(const uint64_t num);
+double rin_long_to_double(const int64_t num);
#endif /* LIBRIN_FLOAT_INCLUDED */
diff --git a/src/float/float.c b/src/float/float.c
index 9520bea..e9e6700 100644
--- a/src/float/float.c
+++ b/src/float/float.c
@@ -229,6 +229,24 @@ int32_t rin_float_to_int(const float num)
return ret;
}
+float rin_uint_to_float(const uint32_t num)
+{
+ float ret;
+
+ memcpy(&ret, &num, sizeof(num));
+
+ return ret;
+}
+
+float rin_int_to_float(const int32_t num)
+{
+ float ret;
+
+ memcpy(&ret, &num, sizeof(num));
+
+ return ret;
+}
+
uint64_t rin_double_to_ulong(const double num)
{
uint64_t ret;
@@ -246,3 +264,21 @@ int64_t rin_double_to_long(const double num)
return ret;
}
+
+double rin_ulong_to_double(const uint64_t num)
+{
+ double ret;
+
+ memcpy(&ret, &num, sizeof(num));
+
+ return ret;
+}
+
+double rin_long_to_double(const int64_t num)
+{
+ double ret;
+
+ memcpy(&ret, &num, sizeof(num));
+
+ return ret;
+}