Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- typedef int bool;
- #define true 1
- #define false 0
- /* openhantek implementation (same as sigrok) */
- static int a(int x)
- {
- int ret = x;
- int bit;
- for (bit = 1; bit; bit <<= 1)
- if (ret & bit)
- ret ^= bit - 1;
- return ret;
- }
- /* hantekdso implementation */
- static int b(int *triggerPoint)
- {
- unsigned tp1 = *triggerPoint;
- unsigned tp2 = 1;
- while (tp1 > 0) {
- tp1 >>= 1;
- tp2 <<= 1;
- }
- if (tp2 == 0)
- return -1;
- unsigned var_1 = tp2 - 1;
- unsigned var_2 = 0;
- unsigned var_C = 0;
- unsigned var_10 = 0;
- bool flag = true;
- while (var_1 > var_2) {
- var_C = (var_1 - var_2 + 1)/2 + var_10;
- if ((var_C > *triggerPoint) == flag) {
- if (!flag)
- var_10 = var_C;
- var_1 = (var_1 + var_2 - 1)/2;
- flag = true;
- } else {
- if (flag)
- var_10 = var_C;
- var_2 = (var_2 + var_1 + 1)/2;
- flag = false;
- }
- }
- *triggerPoint = var_2;
- return 0;
- }
- int main(int argc, char **argv)
- {
- int i;
- int ret0;
- int ret1;
- for (i = 0; i < 0xffffff; i++) {
- ret0 = a(i);
- ret1 = i;
- b(&ret1);
- if (ret0 != ret1)
- printf("%02x: %02x %02x\n", i, ret0, ret1);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement