This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

sizeof(long double) vs. std::numeric_limits and x86-64 vs x86


Hello,

I wanted to check how many bits long double takes. So I checked sizeof(long double) which, naturally, may account for padding. On x86-64 it takes 16 bytes and only 12 on x86, a difference of 4 bytes. This supported my hope that on x86-64 we would have "long double"= |__float128|.


But this difference does not exist in std::numeric_limits<long double>. Does it really mean that only the
padding is different between the architectures, but the type is still the same?


If "long double" != |__float128|, then is there any chance to have a correct definition of std::numeric_limits<__float128> in the near future? If not, where can I find macro names such as __LDBL_MANT_DIG__ for __float128?
Running
gcc -g -E -dM t.cpp | grep MANT_DIG__
gives only


   #define __FLT_MANT_DIG__ 24
   #define __DEC64_MANT_DIG__ 16
   #define __LDBL_MANT_DIG__ 64
   #define __DBL_MANT_DIG__ 53
   #define __DEC32_MANT_DIG__ 7
   #define __DEC128_MANT_DIG__ 34

no mention of anything like FLT128

Thanks

--
  Michael




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]