#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
int32_t imul(int16_t x, int16_t y)
{
#define u(x) ((uint32_t)(x))
#define s(x) ((int32_t)(x))
return ((u
(abs(x
)) * u
(abs(y
))) ^ ((x
^ y
) >> 15)) + (u
(x
^ y
) >> 31); }
int main(void)
{
printf("%d\n", imul
(-32768, -32768)); return 0;
}
I2luY2x1ZGUgPHN0ZGludC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKaW50MzJfdCBpbXVsKGludDE2X3QgeCwgaW50MTZfdCB5KQp7CiAgICAjZGVmaW5lIHUoeCkgKCh1aW50MzJfdCkoeCkpCiAgICAjZGVmaW5lIHMoeCkgKChpbnQzMl90KSh4KSkKICAgIHJldHVybiAoKHUoYWJzKHgpKSAqIHUoYWJzKHkpKSkgXiAoKHggXiB5KSA+PiAxNSkpICsgKHUoeCBeIHkpID4+IDMxKTsKfQoKaW50IG1haW4odm9pZCkKewogICAgcHJpbnRmKCIlZFxuIiwgaW11bCgtMzI3NjgsIC0zMjc2OCkpOwogICAgcmV0dXJuIDA7Cn0=