X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Ffrexp.c;h=7e1f5d1ad48e07de95943f3fd6d3664dda8df109;hb=b314ca18dc36e59297f66b2508fd58535a1cd724;hp=701f00eefb1d3a9adc1a0eeba9bfd2bf6af89a92;hpb=cdaeb6bb213d6042df46e0b3584718ede9f18511;p=gnulib.git diff --git a/lib/frexp.c b/lib/frexp.c index 701f00eef..7e1f5d1ad 100644 --- a/lib/frexp.c +++ b/lib/frexp.c @@ -1,62 +1,59 @@ /* Split a double into fraction and mantissa. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007-2008 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify + 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. + the Free Software Foundation; either version 3 of the License, 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. */ + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ /* Written by Paolo Bonzini , 2003, and Bruno Haible , 2007. */ #include -#if !(defined USE_LONG_DOUBLE && !HAVE_LONG_DOUBLE) - /* Specification. */ -# include +#include -# include -# ifdef USE_LONG_DOUBLE -# include "isnanl-nolibm.h" -# include "fpucw.h" -# else -# include "isnan.h" -# endif +#include +#ifdef USE_LONG_DOUBLE +# include "isnanl-nolibm.h" +# include "fpucw.h" +#else +# include "isnand-nolibm.h" +#endif /* This file assumes FLT_RADIX = 2. If FLT_RADIX is a power of 2 greater than 2, or not even a power of 2, some rounding errors can occur, so that then the returned mantissa is only guaranteed to be <= 1.0, not < 1.0. */ -# ifdef USE_LONG_DOUBLE -# define FUNC frexpl -# define DOUBLE long double -# define ISNAN isnanl -# define DECL_ROUNDING DECL_LONG_DOUBLE_ROUNDING -# define BEGIN_ROUNDING() BEGIN_LONG_DOUBLE_ROUNDING () -# define END_ROUNDING() END_LONG_DOUBLE_ROUNDING () -# define L_(literal) literal##L -# else -# define FUNC frexp -# define DOUBLE double -# define ISNAN isnan -# define DECL_ROUNDING -# define BEGIN_ROUNDING() -# define END_ROUNDING() -# define L_(literal) literal -# endif +#ifdef USE_LONG_DOUBLE +# define FUNC frexpl +# define DOUBLE long double +# define ISNAN isnanl +# define DECL_ROUNDING DECL_LONG_DOUBLE_ROUNDING +# define BEGIN_ROUNDING() BEGIN_LONG_DOUBLE_ROUNDING () +# define END_ROUNDING() END_LONG_DOUBLE_ROUNDING () +# define L_(literal) literal##L +#else +# define FUNC frexp +# define DOUBLE double +# define ISNAN isnand +# define DECL_ROUNDING +# define BEGIN_ROUNDING() +# define END_ROUNDING() +# define L_(literal) literal +#endif DOUBLE -FUNC (DOUBLE x, int *exp) +FUNC (DOUBLE x, int *expptr) { int sign; int exponent; @@ -65,7 +62,7 @@ FUNC (DOUBLE x, int *exp) /* Test for NaN, infinity, and zero. */ if (ISNAN (x) || x + x == x) { - *exp = 0; + *expptr = 0; return x; } @@ -164,14 +161,6 @@ FUNC (DOUBLE x, int *exp) END_ROUNDING (); - *exp = exponent; + *expptr = exponent; return x; } - -#else - -/* This declaration is solely to ensure that after preprocessing - this file is never empty. */ -typedef int dummy; - -#endif