#include <stdio.h>
#include <stdint.h>
#include <math.h>
int main(void) {
for (uint32_t y = 1; y != 0; y++) {
// *Just* smaller than a perfect square
uint64_t x = ((uint64_t)y * (uint64_t)y) - 1;
// We expect the floor of the result
uint32_t expected = y - 1;
uint32_t result
= (uint32_t)sqrt((double)x
);
if (result != expected) {
printf("Incorrect: x = %llu, result = %u\n", x
, result
); break;
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2luY2x1ZGUgPG1hdGguaD4KCmludCBtYWluKHZvaWQpIHsKICAgIGZvciAodWludDMyX3QgeSA9IDE7IHkgIT0gMDsgeSsrKSB7CiAgICAgICAgLy8gKkp1c3QqIHNtYWxsZXIgdGhhbiBhIHBlcmZlY3Qgc3F1YXJlCiAgICAgICAgdWludDY0X3QgeCA9ICgodWludDY0X3QpeSAqICh1aW50NjRfdCl5KSAtIDE7CgogICAgICAgIC8vIFdlIGV4cGVjdCB0aGUgZmxvb3Igb2YgdGhlIHJlc3VsdCAgICAgCiAgICAgICAgdWludDMyX3QgZXhwZWN0ZWQgPSB5IC0gMTsKCiAgICAgICAgdWludDMyX3QgcmVzdWx0ID0gKHVpbnQzMl90KXNxcnQoKGRvdWJsZSl4KTsKCiAgICAgICAgaWYgKHJlc3VsdCAhPSBleHBlY3RlZCkgewogICAgICAgICAgICBwcmludGYoIkluY29ycmVjdDogeCA9ICVsbHUsIHJlc3VsdCA9ICV1XG4iLCB4LCByZXN1bHQpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQo=