about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/math/significand.c7
-rw-r--r--src/math/significandf.c7
-rw-r--r--src/math/significandl.c7
3 files changed, 21 insertions, 0 deletions
diff --git a/src/math/significand.c b/src/math/significand.c
new file mode 100644
index 00000000..40d9aa9f
--- /dev/null
+++ b/src/math/significand.c
@@ -0,0 +1,7 @@
+#define _GNU_SOURCE
+#include <math.h>
+
+double significand(double x)
+{
+	return scalbn(x, -ilogb(x));
+}
diff --git a/src/math/significandf.c b/src/math/significandf.c
new file mode 100644
index 00000000..8a697e1a
--- /dev/null
+++ b/src/math/significandf.c
@@ -0,0 +1,7 @@
+#define _GNU_SOURCE
+#include <math.h>
+
+float significandf(float x)
+{
+	return scalbnf(x, -ilogbf(x));
+}
diff --git a/src/math/significandl.c b/src/math/significandl.c
new file mode 100644
index 00000000..c1d68cd7
--- /dev/null
+++ b/src/math/significandl.c
@@ -0,0 +1,7 @@
+#define _GNU_SOURCE
+#include <math.h>
+
+long double significandl(long double x)
+{
+	return scalbnl(x, -ilogbl(x));
+}