From 2242bf616b893e85886ed0a2348b96bf1cf7623e Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Mon, 13 Aug 2012 14:51:43 -0400 Subject: add significand[fl] math functions --- include/math.h | 4 ++++ src/math/significand.c | 7 +++++++ src/math/significandf.c | 7 +++++++ src/math/significandl.c | 7 +++++++ 4 files changed, 25 insertions(+) create mode 100644 src/math/significand.c create mode 100644 src/math/significandf.c create mode 100644 src/math/significandl.c diff --git a/include/math.h b/include/math.h index 583dc3da..656f7868 100644 --- a/include/math.h +++ b/include/math.h @@ -400,6 +400,10 @@ long double exp10l(long double); double pow10(double); float pow10f(float); long double pow10l(long double); + +double significand(double); +float significandf(float); +long double significandl(long double); #endif #ifdef __cplusplus 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 + +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 + +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 + +long double significandl(long double x) +{ + return scalbnl(x, -ilogbl(x)); +} -- cgit v1.2.1