float128 float128_scalbn( float128 a, int n STATUS_PARAM ) { flag aSign; int32 aExp; uint64_t aSig0, aSig1; aSig1 = extractFloat128Frac1( a ); aSig0 = extractFloat128Frac0( a ); aExp = extractFloat128Exp( a ); aSign = extractFloat128Sign( a ); if ( aExp == 0x7FFF ) { return a; } if ( aExp != 0 ) aSig0 |= LIT64( 0x0001000000000000 ); else if ( aSig0 == 0 && aSig1 == 0 ) return a; aExp += n - 1; return normalizeRoundAndPackFloat128( aSign, aExp, aSig0, aSig1 STATUS_VAR ); }