float64 float64_scalbn( float64 a, int n STATUS_PARAM ) { flag aSign; int16 aExp; uint64_t aSig; a = float64_squash_input_denormal(a STATUS_VAR); aSig = extractFloat64Frac( a ); aExp = extractFloat64Exp( a ); aSign = extractFloat64Sign( a ); if ( aExp == 0x7FF ) { return a; } if ( aExp != 0 ) aSig |= LIT64( 0x0010000000000000 ); else if ( aSig == 0 ) return a; aExp += n - 1; aSig <<= 10; return normalizeRoundAndPackFloat64( aSign, aExp, aSig STATUS_VAR ); }