volatile long mant1, mant2;
volatile union float_long fl1, fl2;
volatile int exp1, exp2;
- volatile long sign = 0;
+ volatile unsigned long sign = 0;
fl1.f = a1;
fl2.f = a2;
exp2 = EXP (fl2.l);
if (exp1 > exp2 + 25)
- return (fl1.l);
+ return (fl1.f);
if (exp2 > exp1 + 25)
- return (fl2.l);
+ return (fl2.f);
/* do everything in excess precision so's we can round later */
mant1 = MANT (fl1.l) << 6;
return (0);
/* normalize up */
- while (!(mant1 & (unsigned long) 0xE0000000))
+ while (!((unsigned long)mant1 & (unsigned long) 0xE0000000))
{
mant1 <<= 1;
exp1--;
}
/* normalize down? */
- if (mant1 & (unsigned long)(1 << 30))
+ if ((unsigned long)mant1 & (unsigned long)(1 << 30))
{
mant1 >>= 1 ;
exp1++;
mant1 >>= 6;
/* turn off hidden bit */
- mant1 &= ~HIDDEN;
+ mant1 = (unsigned long)mant1 & ~HIDDEN;
/* pack up and go home */
fl1.l = PACK (sign, (unsigned long) exp1, mant1);