div-test.c 499 B

123456789101112131415161718192021222324252627282930313233
  1. #include <stdint.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. uint32_t ref(uint32_t a)
  5. {
  6. return (a + 128)/ 255;
  7. return (a + (65535/2))/ 65535;
  8. }
  9. uint32_t try1(a)
  10. {
  11. return (((uint64_t)a + 128)*257) / 65535LL;
  12. return (((uint64_t)a + 32767)*65538) / 4294967296LL;
  13. }
  14. int main()
  15. {
  16. uint32_t x = 0;
  17. do {
  18. uint32_t r1 = ref(x);
  19. uint32_t r2 = try1(x);
  20. if (r1 != r2) {
  21. printf("FAIL: %x -> %x %x\n", x, r1, r2);
  22. exit(1);
  23. }
  24. if (x == 0xffffffff)
  25. break;
  26. x++;
  27. } while (1);
  28. return 0;
  29. }