Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdint.h>
  3.  
  4. uint16_t num;
  5. uint16_t divisor;
  6. uint64_t result;
  7.  
  8. //...
  9.  
  10. uint16_t divide16(uint16_t dividend, uint16_t divisor)
  11. {
  12. //uint16_t k = 65536.0 / (float)divisor;
  13. uint16_t k = 4294967295 / (divisor * 65535) + 1;
  14. return (dividend * k) >> 15 + 1;
  15. }
  16.  
  17. int main()
  18. {
  19.  
  20. uint16_t nums[] = {1234, 2345, 3456, 4567, 5678, 6789, 7777, 2253,12345,12346,12347,12312};
  21. uint16_t divisors[] = {3, 4, 5, 6, 7, 13, 15, 16, 17, 18,19,20,21,22,23,24,123,125,178,199};
  22.  
  23. uint16_t fail = 0;
  24. for (uint8_t n = 0; n < sizeof(nums) / sizeof(nums[0]) - 1; n++) {
  25. for (uint8_t d = 0; d < sizeof(divisors) / sizeof(divisors[0]) - 1; d++) {
  26. uint16_t res1 = nums[n] / divisors[d];
  27. uint16_t res2 = divide16(nums[n], divisors[d]);
  28. printf("%d / %d = %d, divide16(%d, %d) = %d)", nums[n], divisors[d], res1, nums[n], divisors[d], res1);
  29. if (res1 == res2) {
  30. printf("-----OK\n");
  31. } else {
  32. printf("-----FAILED!\n");
  33. fail++;
  34. }
  35. }
  36. }
  37.  
  38. if (fail > 0) {
  39. printf("----------\nTEST FAILED!!!\n");
  40. } else {
  41. printf("----------\nTEST SUCCESS!!!\n");
  42. }
  43.  
  44.  
  45. return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement