int nlz(unsigned k)
{
    double xx = (double) k + 0.5;
    int n = 1054 - (*((unsigned *) &xx + LE) >> 20);
    return n;
}

先頭の 0 の個数を数えるルーチンらしいけど、
このポインタ演算の部分が規約違反なのが原因で、
ちゃんと動作しないことがあるらしいね。
共用体使って書いても規約違反らしいが。