Switch fpclassify over to ieee_ext.
Change-Id: I441bb7f715da24e1c04b0386ad9dcde0ea8c797c
diff --git a/libc/bionic/fpclassify.cpp b/libc/bionic/fpclassify.cpp
index 8231093..82e1b03 100644
--- a/libc/bionic/fpclassify.cpp
+++ b/libc/bionic/fpclassify.cpp
@@ -96,22 +96,19 @@
union long_double_u {
long double ld;
- struct {
- unsigned long fracl:64;
- unsigned long frach:48;
- unsigned int exp:15;
- unsigned int sign:1;
- } bits;
+ ieee_ext bits;
};
+#define zero_frac(b) ((b.ext_fracl | b.ext_fraclm | b.ext_frachm | b.ext_frach) == 0)
+
int __fpclassifyl(long double ld) {
long_double_u u;
u.ld = ld;
- if (u.bits.exp == 0) {
- return ((u.bits.fracl | u.bits.frach) == 0) ? FP_ZERO : FP_SUBNORMAL;
+ if (u.bits.ext_exp == 0) {
+ return zero_frac(u.bits) ? FP_ZERO : FP_SUBNORMAL;
}
- if (u.bits.exp == EXT_EXP_INFNAN) {
- return ((u.bits.fracl | u.bits.frach) == 0) ? FP_INFINITE : FP_NAN;
+ if (u.bits.ext_exp == EXT_EXP_INFNAN) {
+ return zero_frac(u.bits) ? FP_INFINITE : FP_NAN;
}
return FP_NORMAL;
}