float32 float32_scalbn( float32 a, int n STATUS_PARAM )

{

    flag aSign;

    int16 aExp;

    uint32_t aSig;



    a = float32_squash_input_denormal(a STATUS_VAR);

    aSig = extractFloat32Frac( a );

    aExp = extractFloat32Exp( a );

    aSign = extractFloat32Sign( a );



    if ( aExp == 0xFF ) {

        return a;

    }

    if ( aExp != 0 )

        aSig |= 0x00800000;

    else if ( aSig == 0 )

        return a;



    aExp += n - 1;

    aSig <<= 7;

    return normalizeRoundAndPackFloat32( aSign, aExp, aSig STATUS_VAR );

}
