X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/dacbc44ca3fc825c9e5ffa799f1a0937c1da0020..5a44bfea9d4a6e6fbc8c74aa7e8691b47397927a:/lib/ftoastr.h diff --git a/lib/ftoastr.h b/lib/ftoastr.h index 5aa0930d29..9207809e9f 100644 --- a/lib/ftoastr.h +++ b/lib/ftoastr.h @@ -1,6 +1,6 @@ /* floating point to accurate string - Copyright (C) 2010-2013 Free Software Foundation, Inc. + Copyright (C) 2010-2016 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 @@ -72,12 +72,13 @@ enum /* _GL_FLT_PREC_BOUND is an upper bound on the precision needed to represent a float value without losing information. Likewise for - _GL_DBL_PREC_BOUND and double, and _GL_LDBL_PREC_BOUND and long double. */ + _GL_DBL_PREC_BOUND and double, and _GL_LDBL_PREC_BOUND and long double. + These are macros, not enums, to work around a bug in IBM xlc 12.1. */ #if FLT_RADIX == 10 /* decimal floating point */ - enum { _GL_FLT_PREC_BOUND = FLT_MANT_DIG }; - enum { _GL_DBL_PREC_BOUND = DBL_MANT_DIG }; - enum { _GL_LDBL_PREC_BOUND = LDBL_MANT_DIG }; +# define _GL_FLT_PREC_BOUND FLT_MANT_DIG +# define _GL_DBL_PREC_BOUND DBL_MANT_DIG +# define _GL_LDBL_PREC_BOUND LDBL_MANT_DIG #else /* An upper bound on the number of bits needed to represent a single @@ -95,13 +96,13 @@ enum DIG digits. For why the "+ 1" is needed, see "Binary to Decimal Conversion" in David Goldberg's paper "What Every Computer Scientist Should Know About Floating-Point Arithmetic" - . */ + . */ # define _GL_FLOAT_PREC_BOUND(dig) \ (INT_BITS_STRLEN_BOUND ((dig) * _GL_FLOAT_DIG_BITS_BOUND) + 1) - enum { _GL_FLT_PREC_BOUND = _GL_FLOAT_PREC_BOUND ( FLT_MANT_DIG) }; - enum { _GL_DBL_PREC_BOUND = _GL_FLOAT_PREC_BOUND ( DBL_MANT_DIG) }; - enum { _GL_LDBL_PREC_BOUND = _GL_FLOAT_PREC_BOUND (LDBL_MANT_DIG) }; +# define _GL_FLT_PREC_BOUND _GL_FLOAT_PREC_BOUND ( FLT_MANT_DIG) +# define _GL_DBL_PREC_BOUND _GL_FLOAT_PREC_BOUND ( DBL_MANT_DIG) +# define _GL_LDBL_PREC_BOUND _GL_FLOAT_PREC_BOUND (LDBL_MANT_DIG) #endif