--- a/sys/src/ape/lib/ap/plan9/frexp.c Sat Feb 20 15:25:25 2021 -0800 +++ b/sys/src/ape/lib/ap/plan9/frexp.c Sat Feb 20 20:45:27 2021 -0800 @@ -11,16 +11,7 @@ typedef union { double d; - struct - { -#ifdef IEEE_8087 - long ls; - long ms; -#else - long ms; - long ls; -#endif - }; + vlong s; } Cheat; double @@ -34,13 +25,13 @@ return d; x.d = d; a.d = fabs(d); - if((a.ms >> SHIFT) == 0){ /* normalize subnormal numbers */ + if((a.s >> SIG) == 0){ /* normalize subnormal numbers */ x.d = (double)(1ULL<> SHIFT) & MASK) - BIAS; - x.ms &= ~(MASK << SHIFT); - x.ms |= BIAS << SHIFT; + *ep = ((x.s >> SIG) & MASK) - BIAS; + x.s &= ~(MASK << SIG); + x.ms |= BIAS << SIG; return x.d; }