diff options
-rw-r--r-- | include/math.h | 4 | ||||
-rw-r--r-- | src/math/significand.c | 7 | ||||
-rw-r--r-- | src/math/significandf.c | 7 | ||||
-rw-r--r-- | src/math/significandl.c | 7 |
4 files changed, 25 insertions, 0 deletions
diff --git a/include/math.h b/include/math.h index 583dc3d..656f786 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 0000000..40d9aa9 --- /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 0000000..8a697e1 --- /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 0000000..c1d68cd --- /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)); +} |