341 |
341 |
return packFloat32( zSign, 0xFF, - ( roundIncrement == 0 ));
|
342 |
342 |
}
|
343 |
343 |
if ( zExp < 0 ) {
|
344 |
|
if ( STATUS(flush_to_zero) ) return packFloat32( zSign, 0, 0 );
|
|
344 |
if (STATUS(flush_to_zero)) {
|
|
345 |
float_raise(float_flag_output_denormal STATUS_VAR);
|
|
346 |
return packFloat32(zSign, 0, 0);
|
|
347 |
}
|
345 |
348 |
isTiny =
|
346 |
349 |
( STATUS(float_detect_tininess) == float_tininess_before_rounding )
|
347 |
350 |
|| ( zExp < -1 )
|
... | ... | |
520 |
523 |
return packFloat64( zSign, 0x7FF, - ( roundIncrement == 0 ));
|
521 |
524 |
}
|
522 |
525 |
if ( zExp < 0 ) {
|
523 |
|
if ( STATUS(flush_to_zero) ) return packFloat64( zSign, 0, 0 );
|
|
526 |
if (STATUS(flush_to_zero)) {
|
|
527 |
float_raise(float_flag_output_denormal STATUS_VAR);
|
|
528 |
return packFloat64(zSign, 0, 0);
|
|
529 |
}
|
524 |
530 |
isTiny =
|
525 |
531 |
( STATUS(float_detect_tininess) == float_tininess_before_rounding )
|
526 |
532 |
|| ( zExp < -1 )
|
... | ... | |
699 |
705 |
goto overflow;
|
700 |
706 |
}
|
701 |
707 |
if ( zExp <= 0 ) {
|
702 |
|
if ( STATUS(flush_to_zero) ) return packFloatx80( zSign, 0, 0 );
|
|
708 |
if (STATUS(flush_to_zero)) {
|
|
709 |
float_raise(float_flag_output_denormal STATUS_VAR);
|
|
710 |
return packFloatx80(zSign, 0, 0);
|
|
711 |
}
|
703 |
712 |
isTiny =
|
704 |
713 |
( STATUS(float_detect_tininess) == float_tininess_before_rounding )
|
705 |
714 |
|| ( zExp < 0 )
|
... | ... | |
1030 |
1039 |
return packFloat128( zSign, 0x7FFF, 0, 0 );
|
1031 |
1040 |
}
|
1032 |
1041 |
if ( zExp < 0 ) {
|
1033 |
|
if ( STATUS(flush_to_zero) ) return packFloat128( zSign, 0, 0, 0 );
|
|
1042 |
if (STATUS(flush_to_zero)) {
|
|
1043 |
float_raise(float_flag_output_denormal STATUS_VAR);
|
|
1044 |
return packFloat128(zSign, 0, 0, 0);
|
|
1045 |
}
|
1034 |
1046 |
isTiny =
|
1035 |
1047 |
( STATUS(float_detect_tininess) == float_tininess_before_rounding )
|
1036 |
1048 |
|| ( zExp < -1 )
|
... | ... | |
1761 |
1773 |
return a;
|
1762 |
1774 |
}
|
1763 |
1775 |
if ( aExp == 0 ) {
|
1764 |
|
if ( STATUS(flush_to_zero) ) return packFloat32( zSign, 0, 0 );
|
|
1776 |
if (STATUS(flush_to_zero)) {
|
|
1777 |
if (aSig | bSig) {
|
|
1778 |
float_raise(float_flag_output_denormal STATUS_VAR);
|
|
1779 |
}
|
|
1780 |
return packFloat32(zSign, 0, 0);
|
|
1781 |
}
|
1765 |
1782 |
return packFloat32( zSign, 0, ( aSig + bSig )>>6 );
|
1766 |
1783 |
}
|
1767 |
1784 |
zSig = 0x40000000 + aSig + bSig;
|
... | ... | |
3120 |
3137 |
return a;
|
3121 |
3138 |
}
|
3122 |
3139 |
if ( aExp == 0 ) {
|
3123 |
|
if ( STATUS(flush_to_zero) ) return packFloat64( zSign, 0, 0 );
|
|
3140 |
if (STATUS(flush_to_zero)) {
|
|
3141 |
if (aSig | bSig) {
|
|
3142 |
float_raise(float_flag_output_denormal STATUS_VAR);
|
|
3143 |
}
|
|
3144 |
return packFloat64(zSign, 0, 0);
|
|
3145 |
}
|
3124 |
3146 |
return packFloat64( zSign, 0, ( aSig + bSig )>>9 );
|
3125 |
3147 |
}
|
3126 |
3148 |
zSig = LIT64( 0x4000000000000000 ) + aSig + bSig;
|
... | ... | |
5282 |
5304 |
}
|
5283 |
5305 |
add128( aSig0, aSig1, bSig0, bSig1, &zSig0, &zSig1 );
|
5284 |
5306 |
if ( aExp == 0 ) {
|
5285 |
|
if ( STATUS(flush_to_zero) ) return packFloat128( zSign, 0, 0, 0 );
|
|
5307 |
if (STATUS(flush_to_zero)) {
|
|
5308 |
if (zSig0 | zSig1) {
|
|
5309 |
float_raise(float_flag_output_denormal STATUS_VAR);
|
|
5310 |
}
|
|
5311 |
return packFloat128(zSign, 0, 0, 0);
|
|
5312 |
}
|
5286 |
5313 |
return packFloat128( zSign, 0, zSig0, zSig1 );
|
5287 |
5314 |
}
|
5288 |
5315 |
zSig2 = 0;
|