#include <stdio.h>
#include <inttypes.h>
union wide_t {
__int128 i;
uint64_t a[2];
};
int main(void) {
union wide_t val;
val.i = -1;
puts ((val.
i & ((__int128
) 1 << 127)) ? "negative" : "positive"); printf("%016" PRIx64
"%016" PRIx64
"\n", val.
a[1], val.
a[0]);
// // -2^63 (it fits!)
val.i = -9223372036854775808ull;
puts ((val.
i & ((__int128
) 1 << 127)) ? "negative" : "positive");
val.i = -9223372036854775808ll;
puts ((val.
i & ((__int128
) 1 << 127)) ? "negative" : "positive"); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxpbnR0eXBlcy5oPgoKdW5pb24gd2lkZV90IHsKCV9faW50MTI4IGk7Cgl1aW50NjRfdCBhWzJdOwp9OwoKaW50IG1haW4odm9pZCkgewoJdW5pb24gd2lkZV90IHZhbDsKCQoJdmFsLmkgPSAtMTsKCXB1dHMgKCh2YWwuaSAmICgoX19pbnQxMjgpIDEgPDwgMTI3KSkgPyAibmVnYXRpdmUiIDogInBvc2l0aXZlIik7CglwcmludGYoIiUwMTYiIFBSSXg2NCAiJTAxNiIgUFJJeDY0ICJcbiIsIHZhbC5hWzFdLCB2YWwuYVswXSk7CgoJLy8gLy8gLTJeNjMgKGl0IGZpdHMhKQoJdmFsLmkgPSAtOTIyMzM3MjAzNjg1NDc3NTgwOHVsbDsgCglwdXRzICgodmFsLmkgJiAoKF9faW50MTI4KSAxIDw8IDEyNykpID8gIm5lZ2F0aXZlIiA6ICJwb3NpdGl2ZSIpOwoKCXZhbC5pID0gLTkyMjMzNzIwMzY4NTQ3NzU4MDhsbDsgCglwdXRzICgodmFsLmkgJiAoKF9faW50MTI4KSAxIDw8IDEyNykpID8gIm5lZ2F0aXZlIiA6ICJwb3NpdGl2ZSIpOwoJcmV0dXJuIDA7Cn0K