97 if ((diff = dest->
exp - src->
exp) > 0)
98 fp_denormalize(src, diff);
99 else if ((diff = -diff) > 0)
100 fp_denormalize(dest, diff);
103 if (fp_addmant(dest, src))
104 if (!fp_addcarry(dest))
108 fp_submant(dest, src, dest);
111 fp_submant(dest, dest, src);
190 exp = dest->
exp + src->
exp - 0x3ffe;
195 if ((
long)dest->
mant.
m32[0] >= 0)
196 exp -= fp_overnormalize(dest);
197 if ((
long)src->
mant.
m32[0] >= 0)
198 exp -= fp_overnormalize(src);
201 fp_multiplymant(&temp, dest, src);
205 if ((
long)temp.
m32[0] > 0) {
207 fp_putmant128(dest, &temp, 1);
209 fp_putmant128(dest, &temp, 0);
218 fp_denormalize(dest, -exp);
277 exp = dest->
exp - src->
exp + 0x3fff;
282 if ((
long)dest->
mant.
m32[0] >= 0)
283 exp -= fp_overnormalize(dest);
284 if ((
long)src->
mant.
m32[0] >= 0)
285 exp -= fp_overnormalize(src);
288 fp_dividemant(&temp, dest, src);
294 fp_putmant128(dest, &temp, 32);
296 fp_putmant128(dest, &temp, 31);
305 fp_denormalize(dest, -exp);
348 exp = dest->
exp + src->
exp - 0x3ffe;
352 dest->
mant.
m32[0] & 0xffffff00,
353 src->
mant.
m32[0] & 0xffffff00);
362 fp_denormalize(dest, -exp);
372 unsigned long quot, rem;
415 exp = dest->
exp - src->
exp + 0x3fff;
417 dest->
mant.
m32[0] &= 0xffffff00;
418 src->
mant.
m32[0] &= 0xffffff00;
424 dest->
mant.
m32[0] = 0x80000000 | (quot >> 1);
425 dest->
mant.
m32[1] = (quot & 1) | rem;
440 fp_denormalize(dest, -exp);
465 oldmant = dest->
mant;
470 case 0x3fff ... 0x401e:
471 dest->
mant.
m32[0] &= 0xffffffff
U << (0x401e - dest->
exp);
473 if (oldmant.m64 == dest->
mant.
m64)
476 case 0x401f ... 0x403e:
477 dest->
mant.
m32[1] &= 0xffffffff
U << (0x403e - dest->
exp);
478 if (oldmant.m32[1] == dest->
mant.
m32[1])
508 if (oldmant.m64 == (1ULL << 63))
511 case 0x3fff ... 0x401d:
512 mask = 1 << (0x401d - dest->
exp);
513 if (!(oldmant.m32[0] & mask))
515 if (oldmant.m32[0] & (mask << 1))
517 if (!(oldmant.m32[0] << (dest->
exp - 0x3ffd)) &&
522 if (!(oldmant.m32[1] >= 0))
524 if (oldmant.m32[0] & 1)
526 if (!(oldmant.m32[1] << 1))
529 case 0x401f ... 0x403d:
530 mask = 1 << (0x403d - dest->
exp);
531 if (!(oldmant.m32[1] & mask))
533 if (oldmant.m32[1] & (mask << 1))
535 if (!(oldmant.m32[1] << (dest->
exp - 0x401d)))
555 case 0x3fff ... 0x401e:
556 mask = 1 << (0x401e - dest->
exp);
559 dest->
mant.
m32[0] = 0x80000000;
562 case 0x401f ... 0x403e:
563 mask = 1 << (0x403e - dest->
exp);
568 dest->
mant.
m32[0] = 0x80000000;
596 fp_roundint(&
tmp, mode);
638 fp_roundint(dest,
FPDATA->rnd);
677 if (src->
exp >= 0x400c) {
691 if (scale >= 0x7fff) {
693 }
else if (scale <= 0) {
695 fp_denormalize(dest, -scale);