#include <stdio.h>
union Float64 {
double y;
char bytes[8];
};
int main(void) {
const char digits[] = "0123456789abcdef";
union Float64 q;
printf("Test Case n=9007199254740991\n");
q.y = 9007199254740991;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 9007199254740992;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 9007199254740993;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 9007199254740994;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 9007199254740995;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 9007199254740996;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 9007199254740997;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 9007199254740998;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 9007199254740999;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = -9007199254740991;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 9007199254740990;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 9007199254740989;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 9007199254740988;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 9007199254740987;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp1bmlvbiBGbG9hdDY0IHsKCWRvdWJsZSB5OwoJY2hhciBieXRlc1s4XTsKfTsKCmludCBtYWluKHZvaWQpIHsKCWNvbnN0IGNoYXIgZGlnaXRzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZiI7Cgl1bmlvbiBGbG9hdDY0IHE7CgoJcHJpbnRmKCJUZXN0IENhc2Ugbj05MDA3MTk5MjU0NzQwOTkxXG4iKTsKCglxLnkgPSA5MDA3MTk5MjU0NzQwOTkxOwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4pXG4iKTsKCglxLnkgPSA5MDA3MTk5MjU0NzQwOTkyOwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4rMSlcbiIpOwoKCXEueSA9IDkwMDcxOTkyNTQ3NDA5OTM7Cglmb3IgKGludCBpID0gNzsgaSA+PSAwOyBpLS0pIHsKCQljaGFyIGEgPSBkaWdpdHNbcS5ieXRlc1tpXSAmIDB4MGZdOyAgICAgICAgIC8vIGxvd2VyIG5pYmJsZQoJCWNoYXIgYiA9IGRpZ2l0c1socS5ieXRlc1tpXSAmIDB4ZjApID4+IDRdOyAgLy8gdXBwZXIgbmliYmxlCgkJcHJpbnRmKCIlYyVjICIsIGIsIGEpOwoJfQoJcHJpbnRmKCIobisyKVxuIik7CgoJcS55ID0gOTAwNzE5OTI1NDc0MDk5NDsKCWZvciAoaW50IGkgPSA3OyBpID49IDA7IGktLSkgewoJCWNoYXIgYSA9IGRpZ2l0c1txLmJ5dGVzW2ldICYgMHgwZl07ICAgICAgICAgLy8gbG93ZXIgbmliYmxlCgkJY2hhciBiID0gZGlnaXRzWyhxLmJ5dGVzW2ldICYgMHhmMCkgPj4gNF07ICAvLyB1cHBlciBuaWJibGUKCQlwcmludGYoIiVjJWMgIiwgYiwgYSk7Cgl9CglwcmludGYoIihuKzMpXG4iKTsKCglxLnkgPSA5MDA3MTk5MjU0NzQwOTk1OwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4rNClcbiIpOwoKCXEueSA9IDkwMDcxOTkyNTQ3NDA5OTY7Cglmb3IgKGludCBpID0gNzsgaSA+PSAwOyBpLS0pIHsKCQljaGFyIGEgPSBkaWdpdHNbcS5ieXRlc1tpXSAmIDB4MGZdOyAgICAgICAgIC8vIGxvd2VyIG5pYmJsZQoJCWNoYXIgYiA9IGRpZ2l0c1socS5ieXRlc1tpXSAmIDB4ZjApID4+IDRdOyAgLy8gdXBwZXIgbmliYmxlCgkJcHJpbnRmKCIlYyVjICIsIGIsIGEpOwoJfQoJcHJpbnRmKCIobis1KVxuIik7CgoJcS55ID0gOTAwNzE5OTI1NDc0MDk5NzsKCWZvciAoaW50IGkgPSA3OyBpID49IDA7IGktLSkgewoJCWNoYXIgYSA9IGRpZ2l0c1txLmJ5dGVzW2ldICYgMHgwZl07ICAgICAgICAgLy8gbG93ZXIgbmliYmxlCgkJY2hhciBiID0gZGlnaXRzWyhxLmJ5dGVzW2ldICYgMHhmMCkgPj4gNF07ICAvLyB1cHBlciBuaWJibGUKCQlwcmludGYoIiVjJWMgIiwgYiwgYSk7Cgl9CglwcmludGYoIihuKzYpXG4iKTsKCglxLnkgPSA5MDA3MTk5MjU0NzQwOTk4OwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4rNylcbiIpOwoKCXEueSA9IDkwMDcxOTkyNTQ3NDA5OTk7Cglmb3IgKGludCBpID0gNzsgaSA+PSAwOyBpLS0pIHsKCQljaGFyIGEgPSBkaWdpdHNbcS5ieXRlc1tpXSAmIDB4MGZdOyAgICAgICAgIC8vIGxvd2VyIG5pYmJsZQoJCWNoYXIgYiA9IGRpZ2l0c1socS5ieXRlc1tpXSAmIDB4ZjApID4+IDRdOyAgLy8gdXBwZXIgbmliYmxlCgkJcHJpbnRmKCIlYyVjICIsIGIsIGEpOwoJfQoJcHJpbnRmKCIobis4KVxuIik7CgoJcS55ID0gLTkwMDcxOTkyNTQ3NDA5OTE7Cglmb3IgKGludCBpID0gNzsgaSA+PSAwOyBpLS0pIHsKCQljaGFyIGEgPSBkaWdpdHNbcS5ieXRlc1tpXSAmIDB4MGZdOyAgICAgICAgIC8vIGxvd2VyIG5pYmJsZQoJCWNoYXIgYiA9IGRpZ2l0c1socS5ieXRlc1tpXSAmIDB4ZjApID4+IDRdOyAgLy8gdXBwZXIgbmliYmxlCgkJcHJpbnRmKCIlYyVjICIsIGIsIGEpOwoJfQoJcHJpbnRmKCIoLW4pXG4iKTsKCglxLnkgPSA5MDA3MTk5MjU0NzQwOTkwOwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4tMSlcbiIpOwoKCXEueSA9IDkwMDcxOTkyNTQ3NDA5ODk7Cglmb3IgKGludCBpID0gNzsgaSA+PSAwOyBpLS0pIHsKCQljaGFyIGEgPSBkaWdpdHNbcS5ieXRlc1tpXSAmIDB4MGZdOyAgICAgICAgIC8vIGxvd2VyIG5pYmJsZQoJCWNoYXIgYiA9IGRpZ2l0c1socS5ieXRlc1tpXSAmIDB4ZjApID4+IDRdOyAgLy8gdXBwZXIgbmliYmxlCgkJcHJpbnRmKCIlYyVjICIsIGIsIGEpOwoJfQoJcHJpbnRmKCIobi0yKVxuIik7CgoJcS55ID0gOTAwNzE5OTI1NDc0MDk4ODsKCWZvciAoaW50IGkgPSA3OyBpID49IDA7IGktLSkgewoJCWNoYXIgYSA9IGRpZ2l0c1txLmJ5dGVzW2ldICYgMHgwZl07ICAgICAgICAgLy8gbG93ZXIgbmliYmxlCgkJY2hhciBiID0gZGlnaXRzWyhxLmJ5dGVzW2ldICYgMHhmMCkgPj4gNF07ICAvLyB1cHBlciBuaWJibGUKCQlwcmludGYoIiVjJWMgIiwgYiwgYSk7Cgl9CglwcmludGYoIihuLTMpXG4iKTsKCglxLnkgPSA5MDA3MTk5MjU0NzQwOTg3OwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4tNClcbiIpOwoKCXByaW50ZigiRW5kIG9mIFRlc3QiKTsKCglyZXR1cm4gMDsKfQ==