From e4bed0733ad7c8e2b0bda1f77cf52e0d32c5e4f9 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 25 Feb 2007 14:28:50 +0000 Subject: [PATCH] New module 'printf-frexpl'. --- ChangeLog | 7 +++++++ lib/printf-frexpl.c | 19 +++++++++++++++++++ lib/printf-frexpl.h | 24 ++++++++++++++++++++++++ modules/printf-frexpl | 31 +++++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+) create mode 100644 lib/printf-frexpl.c create mode 100644 lib/printf-frexpl.h create mode 100644 modules/printf-frexpl diff --git a/ChangeLog b/ChangeLog index 4d54ce530..67cc44824 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2007-02-25 Bruno Haible + * modules/printf-frexpl: New file. + * lib/printf-frexpl.h: New file. + * lib/printf-frexpl.c: New file. + * m4/printf-frexpl.m4: New file. + +2007-02-25 Bruno Haible + * modules/printf-frexp-tests: New file. * tests/test-printf-frexp.c: New file. diff --git a/lib/printf-frexpl.c b/lib/printf-frexpl.c new file mode 100644 index 000000000..d9a9283fc --- /dev/null +++ b/lib/printf-frexpl.c @@ -0,0 +1,19 @@ +/* Split a 'long double' into fraction and mantissa, for hexadecimal printf. + Copyright (C) 2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#define USE_LONG_DOUBLE +#include "printf-frexp.c" diff --git a/lib/printf-frexpl.h b/lib/printf-frexpl.h new file mode 100644 index 000000000..cf4968968 --- /dev/null +++ b/lib/printf-frexpl.h @@ -0,0 +1,24 @@ +/* Split a 'long double' into fraction and mantissa, for hexadecimal printf. + Copyright (C) 2007 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* Write a finite, positive number x as + x = mantissa * 2^exp + where exp >= LDBL_MIN_EXP - 1, + mantissa < 2.0, + if x is not a denormalized number then mantissa >= 1.0. + Store exp and return mantissa. */ +extern long double printf_frexpl (long double x, int *exp); diff --git a/modules/printf-frexpl b/modules/printf-frexpl new file mode 100644 index 000000000..e2bfe1bc6 --- /dev/null +++ b/modules/printf-frexpl @@ -0,0 +1,31 @@ +Description: +printf_frexpl() function: split a long double into fraction and mantissa, +for hexadecimal printf, without requiring libm. + +Files: +lib/printf-frexpl.h +lib/printf-frexpl.c +lib/printf-frexp.c +m4/printf-frexpl.m4 +m4/longdouble.m4 + +Depends-on: +verify + +configure.ac: +gl_FUNC_PRINTF_FREXPL + +Makefile.am: +lib_SOURCES += printf-frexpl.c + +Include: +#if HAVE_LONG_DOUBLE +# include "printf-frexpl.h" +#endif + +License: +LGPL + +Maintainer: +Bruno Haible + -- 2.11.0