この単純なコードが私の問題です。
拡張asm(gcc); Intel構文(-masm = intel); プラットフォーム-x86
何をすべきか:長さが1で、符号(+-)がxと同じフロートを返します。
float signf(float x)
{
float r = 1;
asm volatile (
"and %1,0x80000000;"
"or %0,%1;"
:"=r"(r):"r"(x));
return r;
}
公正なサイコロの目で選ばれた任意の乱数でそれを呼び出すと、次のようになります。
signf of -1352353.3253: -5.60519e-045