なぜ下の条件がないと
f1≠f2
になってしまうのでしょうか?

int e = (u >> 23) & 0xff;
if (e == 0 || e == 0xff) continue; // 0 or Denormal or  NaN or Inf