fork download
  1. #include <stdio.h>
  2.  
  3. union Float64 {
  4. double y;
  5. char bytes[8];
  6. };
  7.  
  8. int main(void) {
  9. const char digits[] = "0123456789abcdef";
  10. union Float64 q;
  11.  
  12. printf("Test Case n=9007199254740991\n");
  13.  
  14. q.y = 9007199254740991;
  15. for (int i = 7; i >= 0; i--) {
  16. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  17. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  18. printf("%c%c ", b, a);
  19. }
  20. printf("(n)\n");
  21.  
  22. q.y = 9007199254740992;
  23. for (int i = 7; i >= 0; i--) {
  24. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  25. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  26. printf("%c%c ", b, a);
  27. }
  28. printf("(n+1)\n");
  29.  
  30. q.y = 9007199254740993;
  31. for (int i = 7; i >= 0; i--) {
  32. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  33. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  34. printf("%c%c ", b, a);
  35. }
  36. printf("(n+2)\n");
  37.  
  38. q.y = 9007199254740994;
  39. for (int i = 7; i >= 0; i--) {
  40. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  41. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  42. printf("%c%c ", b, a);
  43. }
  44. printf("(n+3)\n");
  45.  
  46. q.y = 9007199254740995;
  47. for (int i = 7; i >= 0; i--) {
  48. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  49. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  50. printf("%c%c ", b, a);
  51. }
  52. printf("(n+4)\n");
  53.  
  54. q.y = 9007199254740996;
  55. for (int i = 7; i >= 0; i--) {
  56. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  57. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  58. printf("%c%c ", b, a);
  59. }
  60. printf("(n+5)\n");
  61.  
  62. q.y = 9007199254740997;
  63. for (int i = 7; i >= 0; i--) {
  64. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  65. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  66. printf("%c%c ", b, a);
  67. }
  68. printf("(n+6)\n");
  69.  
  70. q.y = 9007199254740998;
  71. for (int i = 7; i >= 0; i--) {
  72. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  73. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  74. printf("%c%c ", b, a);
  75. }
  76. printf("(n+7)\n");
  77.  
  78. q.y = 9007199254740999;
  79. for (int i = 7; i >= 0; i--) {
  80. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  81. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  82. printf("%c%c ", b, a);
  83. }
  84. printf("(n+8)\n");
  85.  
  86. q.y = -9007199254740991;
  87. for (int i = 7; i >= 0; i--) {
  88. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  89. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  90. printf("%c%c ", b, a);
  91. }
  92. printf("(-n)\n");
  93.  
  94. q.y = 9007199254740990;
  95. for (int i = 7; i >= 0; i--) {
  96. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  97. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  98. printf("%c%c ", b, a);
  99. }
  100. printf("(n-1)\n");
  101.  
  102. q.y = 9007199254740989;
  103. for (int i = 7; i >= 0; i--) {
  104. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  105. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  106. printf("%c%c ", b, a);
  107. }
  108. printf("(n-2)\n");
  109.  
  110. q.y = 9007199254740988;
  111. for (int i = 7; i >= 0; i--) {
  112. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  113. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  114. printf("%c%c ", b, a);
  115. }
  116. printf("(n-3)\n");
  117.  
  118. q.y = 9007199254740987;
  119. for (int i = 7; i >= 0; i--) {
  120. char a = digits[q.bytes[i] & 0x0f]; // lower nibble
  121. char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
  122. printf("%c%c ", b, a);
  123. }
  124. printf("(n-4)\n");
  125.  
  126. printf("End of Test");
  127.  
  128. return 0;
  129. }
Success #stdin #stdout 0.01s 5276KB
stdin
Standard input is empty
stdout
Test Case n=9007199254740991
43 3f ff ff ff ff ff ff (n)
43 40 00 00 00 00 00 00 (n+1)
43 40 00 00 00 00 00 00 (n+2)
43 40 00 00 00 00 00 01 (n+3)
43 40 00 00 00 00 00 02 (n+4)
43 40 00 00 00 00 00 02 (n+5)
43 40 00 00 00 00 00 02 (n+6)
43 40 00 00 00 00 00 03 (n+7)
43 40 00 00 00 00 00 04 (n+8)
c3 3f ff ff ff ff ff ff (-n)
43 3f ff ff ff ff ff fe (n-1)
43 3f ff ff ff ff ff fd (n-2)
43 3f ff ff ff ff ff fc (n-3)
43 3f ff ff ff ff ff fb (n-4)
End of Test