Advertisement
Guest User

Untitled

a guest
Jul 18th, 2013
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. typedef int bool;
  4.  
  5. #define true 1
  6. #define false 0
  7.  
  8. /* openhantek implementation (same as sigrok) */
  9. static int a(int x)
  10. {
  11.         int ret = x;
  12.         int bit;
  13.  
  14.         for (bit = 1; bit; bit <<= 1)
  15.                 if (ret & bit)
  16.                         ret ^= bit - 1;
  17.  
  18.         return ret;
  19. }
  20.  
  21. /* hantekdso implementation */
  22. static int b(int *triggerPoint)
  23. {
  24.         unsigned tp1 = *triggerPoint;
  25.         unsigned tp2 = 1;
  26.         while (tp1 > 0) {
  27.                 tp1 >>= 1;
  28.                 tp2 <<= 1;
  29.         }
  30.  
  31.         if (tp2 == 0)
  32.                 return -1;
  33.  
  34.         unsigned var_1 = tp2 - 1;
  35.         unsigned var_2 = 0;
  36.  
  37.         unsigned var_C = 0;
  38.         unsigned var_10 = 0;
  39.  
  40.         bool flag = true;
  41.         while (var_1 > var_2) {
  42.                 var_C = (var_1 - var_2 + 1)/2 + var_10;
  43.                 if ((var_C > *triggerPoint) == flag) {
  44.                         if (!flag)
  45.                                 var_10 = var_C;
  46.                         var_1 = (var_1 + var_2 - 1)/2;
  47.                         flag = true;
  48.                 } else {
  49.                         if (flag)
  50.                                 var_10 = var_C;
  51.                         var_2 = (var_2 + var_1 + 1)/2;
  52.                         flag = false;
  53.                 }
  54.         }
  55.  
  56.         *triggerPoint = var_2;
  57.  
  58.         return 0;
  59. }
  60.  
  61. int main(int argc, char **argv)
  62. {
  63.         int i;
  64.         int ret0;
  65.         int ret1;
  66.  
  67.         for (i = 0; i < 0xffffff; i++) {
  68.                 ret0 = a(i);
  69.  
  70.                 ret1 = i;
  71.                 b(&ret1);
  72.  
  73.                 if (ret0 != ret1)
  74.                         printf("%02x: %02x %02x\n", i, ret0, ret1);
  75.         }
  76.  
  77.         return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement