>>509 C++
環境+コンパイルオプション依存 little endian, double = 64bit, long double = 128bit

double fl2( double x )
{
*( (uint64_t*) &x ) &= 0xFFF0000000000000LLU;
return x;
}

long double fl2( long double x )
{
*( (__uint128_t*) &x ) &= *( (__uint128_t*)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF" );
return x;
}