diff options
Diffstat (limited to 'contrib/bit/vartest.c')
-rw-r--r-- | contrib/bit/vartest.c | 322 |
1 files changed, 166 insertions, 156 deletions
diff --git a/contrib/bit/vartest.c b/contrib/bit/vartest.c index f07f5c5b833..7725f6bbd30 100644 --- a/contrib/bit/vartest.c +++ b/contrib/bit/vartest.c @@ -2,173 +2,183 @@ #include "varbit.h" #include <stdio.h> -void print_details (unsigned char *s); +void print_details(unsigned char *s); + +const int numb = 8; -const int numb = 8; /* const char *b[] = { "B0010", "B11011011", "B0001", "X3F12", "X27", "B", - "X11", "B100111"}; + "X11", "B100111"}; int atttypmod[] = {-1, -1, -1,-1,-1,-1,-1,-1 }; */ -const char *b[] = { "B0010", "B11011011", "B10001", "X3D12", "X27", "B", - "X11", "B100111"}; -int atttypmod[] = { 7, 9, 6, 18, 11, 6, -1, -1 }; +const char *b[] = {"B0010", "B11011011", "B10001", "X3D12", "X27", "B", +"X11", "B100111"}; +int atttypmod[] = {7, 9, 6, 18, 11, 6, -1, -1}; -void print_details (unsigned char *s) +void +print_details(unsigned char *s) { - int i; - printf ("Length in bytes : %d\n",VARSIZE(s)); - printf ("Length of bitstring: %d\n",VARBITLEN(s)); - for (i=8; i<VARSIZE(s); i++) - printf ("%X%X ",s[i]>>4,s[i]&0xF); - printf("\n"); + int i; + + printf("Length in bytes : %d\n", VARSIZE(s)); + printf("Length of bitstring: %d\n", VARBITLEN(s)); + for (i = 8; i < VARSIZE(s); i++) + printf("%X%X ", s[i] >> 4, s[i] & 0xF); + printf("\n"); } int -main () +main() { - int i, j; - char *s[numb]; - - for (i=0; i<numb; i++) { - printf ("Input: %s\n",b[i]); - s[i] = zpbitin(b[i], 0, atttypmod[i]); - //print_details(s[i]); - printf ("%s = %s\n",zpbitout(s[i]),zpbitsout(s[i])); - } - - printf ("\nCOMPARISONS:\n"); - for (i=0; i<numb; i++) - for (j=i+1; j<numb; j++) - printf("%s <=> %s = %d\n",zpbitsout(s[i]),zpbitsout(s[j]), - bitcmp(s[i],s[j])); - - printf ("\nCONCATENATION:\n"); - for (i=0; i<numb; i++) - for (j=i+1; j<numb; j++) - printf("%s || %s = %s\n",zpbitsout(s[i]),zpbitsout(s[j]), - zpbitsout(bitcat(s[i],s[j]))); - - printf("\nSUBSTR:\n"); - printf("%s (%d,%d) => %s\n",zpbitsout(s[3]),1,8, - zpbitsout(bitsubstr(s[3],1,8))); - printf("%s (%d,%d) => %s\n",zpbitsout(s[3]),9,8, - zpbitsout(bitsubstr(s[3],9,8))); - printf("%s (%d,%d) => %s\n",zpbitsout(s[3]),1,9, - zpbitsout(bitsubstr(s[3],1,9))); - printf("%s (%d,%d) => %s\n",zpbitsout(s[3]),3,5, - zpbitsout(bitsubstr(s[3],3,5))); - printf("%s (%d,%d) => %s\n",zpbitsout(s[3]),3,9, - zpbitsout(bitsubstr(s[3],3,9))); - printf("%s (%d,%d) => %s\n",zpbitsout(s[3]),3,17, - zpbitsout(bitsubstr(s[3],3,17))); - printf ("\nLOGICAL AND:\n"); - for (i=0; i<numb; i++) - for (j=i+1; j<numb; j++) - printf("%s & %s = %s\n",zpbitsout(s[i]),zpbitsout(s[j]), - zpbitsout(bitand(s[i],s[j]))); - - printf ("\nLOGICAL OR:\n"); - for (i=0; i<numb; i++) - for (j=i+1; j<numb; j++) - printf("%s | %s = %s\n",zpbitsout(s[i]),zpbitsout(s[j]), - zpbitsout(bitor(s[i],s[j]))); - - printf ("\nLOGICAL XOR:\n"); - for (i=0; i<numb; i++) - for (j=i+1; j<numb; j++) - printf("%s ^ %s = %s\n",zpbitsout(s[i]),zpbitsout(s[j]), - zpbitsout(bitxor(s[i],s[j]))); - - printf ("\nLOGICAL NOT:\n"); - for (i=0; i<numb; i++) - printf("~%s = %s\n",zpbitsout(s[i]),zpbitsout(bitnot(s[i]))); - - - printf ("\nSHIFT LEFT:\n"); - for (i=0; i<numb; i++) { - printf("%s\n",zpbitsout(s[i])); - for (j=0; j<=VARBITLEN(s[i]); j++) - printf("\t%3d\t%s\n",j,zpbitsout(bitshiftleft(s[i],j))); - } - - printf ("\nSHIFT RIGHT:\n"); - for (i=0; i<numb; i++) { - printf("%s\n",zpbitsout(s[i])); - for (j=0; j<=VARBITLEN(s[i]); j++) - printf("\t%3d\t%s\n",j,zpbitsout(bitshiftright(s[i],j))); - } - - printf ("\n\n ********** VARYING **********\n"); - for (i=0; i<numb; i++) { - printf ("Input: %s\n",b[i]); - s[i] = varbitin(b[i], 0, atttypmod[i]); - /*print_details(s);*/ - printf ("%s\n",zpbitout(s[i])); - printf ("%s\n",zpbitsout(s[i])); - } - - printf ("\nCOMPARISONS:\n"); - for (i=0; i<numb; i++) - for (j=i+1; j<numb; j++) - printf("%s <=> %s = %d\n",zpbitsout(s[i]),zpbitsout(s[j]), - bitcmp(s[i],s[j])); - - printf ("\nCONCATENATION:\n"); - for (i=0; i<numb; i++) - for (j=i+1; j<numb; j++) - printf("%s || %s = %s\n",zpbitsout(s[i]),zpbitsout(s[j]), - zpbitsout(bitcat(s[i],s[j]))); - - printf("\nSUBSTR:\n"); - printf("%s (%d,%d) => %s\n",zpbitsout(s[3]),1,8, - zpbitsout(bitsubstr(s[3],1,8))); - printf("%s (%d,%d) => %s\n",zpbitsout(s[3]),9,8, - zpbitsout(bitsubstr(s[3],9,8))); - printf("%s (%d,%d) => %s\n",zpbitsout(s[3]),1,9, - zpbitsout(bitsubstr(s[3],1,9))); - printf("%s (%d,%d) => %s\n",zpbitsout(s[3]),3,5, - zpbitsout(bitsubstr(s[3],3,5))); - printf("%s (%d,%d) => %s\n",zpbitsout(s[3]),3,9, - zpbitsout(bitsubstr(s[3],3,9))); - printf("%s (%d,%d) => %s (%s)\n",zpbitsout(s[3]),3,17, - zpbitsout(bitsubstr(s[3],3,17)),zpbitsout(bitsubstr(s[3],3,17))); - printf ("\nLOGICAL AND:\n"); - for (i=0; i<numb; i++) - for (j=i+1; j<numb; j++) - printf("%s & %s = %s\n",zpbitsout(s[i]),zpbitsout(s[j]), - zpbitsout(bitand(s[i],s[j]))); - - printf ("\nLOGICAL OR:\n"); - for (i=0; i<numb; i++) - for (j=i+1; j<numb; j++) - printf("%s | %s = %s\n",zpbitsout(s[i]),zpbitsout(s[j]), - zpbitsout(bitor(s[i],s[j]))); - - printf ("\nLOGICAL XOR:\n"); - for (i=0; i<numb; i++) - for (j=i+1; j<numb; j++) - printf("%s ^ %s = %s\n",zpbitsout(s[i]),zpbitsout(s[j]), - zpbitsout(bitxor(s[i],s[j]))); - - printf ("\nLOGICAL NOT:\n"); - for (i=0; i<numb; i++) - printf("~%s = %s\n",zpbitsout(s[i]),zpbitsout(bitnot(s[i]))); - - - printf ("\nSHIFT LEFT:\n"); - for (i=0; i<numb; i++) { - printf("%s\n",zpbitsout(s[i])); - for (j=0; j<=VARBITLEN(s[i]); j++) - printf("\t%3d\t%s\n",j,zpbitsout(bitshiftleft(s[i],j))); - } - - printf ("\nSHIFT RIGHT:\n"); - for (i=0; i<numb; i++) { - printf("%s\n",zpbitsout(s[i])); - for (j=0; j<=VARBITLEN(s[i]); j++) - printf("\t%3d\t%s\n",j,zpbitsout(bitshiftright(s[i],j))); - } + int i, + j; + char *s[numb]; + + for (i = 0; i < numb; i++) + { + printf("Input: %s\n", b[i]); + s[i] = zpbitin(b[i], 0, atttypmod[i]); + //print_details(s[i]); + printf("%s = %s\n", zpbitout(s[i]), zpbitsout(s[i])); + } + + printf("\nCOMPARISONS:\n"); + for (i = 0; i < numb; i++) + for (j = i + 1; j < numb; j++) + printf("%s <=> %s = %d\n", zpbitsout(s[i]), zpbitsout(s[j]), + bitcmp(s[i], s[j])); + + printf("\nCONCATENATION:\n"); + for (i = 0; i < numb; i++) + for (j = i + 1; j < numb; j++) + printf("%s || %s = %s\n", zpbitsout(s[i]), zpbitsout(s[j]), + zpbitsout(bitcat(s[i], s[j]))); + + printf("\nSUBSTR:\n"); + printf("%s (%d,%d) => %s\n", zpbitsout(s[3]), 1, 8, + zpbitsout(bitsubstr(s[3], 1, 8))); + printf("%s (%d,%d) => %s\n", zpbitsout(s[3]), 9, 8, + zpbitsout(bitsubstr(s[3], 9, 8))); + printf("%s (%d,%d) => %s\n", zpbitsout(s[3]), 1, 9, + zpbitsout(bitsubstr(s[3], 1, 9))); + printf("%s (%d,%d) => %s\n", zpbitsout(s[3]), 3, 5, + zpbitsout(bitsubstr(s[3], 3, 5))); + printf("%s (%d,%d) => %s\n", zpbitsout(s[3]), 3, 9, + zpbitsout(bitsubstr(s[3], 3, 9))); + printf("%s (%d,%d) => %s\n", zpbitsout(s[3]), 3, 17, + zpbitsout(bitsubstr(s[3], 3, 17))); + printf("\nLOGICAL AND:\n"); + for (i = 0; i < numb; i++) + for (j = i + 1; j < numb; j++) + printf("%s & %s = %s\n", zpbitsout(s[i]), zpbitsout(s[j]), + zpbitsout(bitand(s[i], s[j]))); + + printf("\nLOGICAL OR:\n"); + for (i = 0; i < numb; i++) + for (j = i + 1; j < numb; j++) + printf("%s | %s = %s\n", zpbitsout(s[i]), zpbitsout(s[j]), + zpbitsout(bitor(s[i], s[j]))); + + printf("\nLOGICAL XOR:\n"); + for (i = 0; i < numb; i++) + for (j = i + 1; j < numb; j++) + printf("%s ^ %s = %s\n", zpbitsout(s[i]), zpbitsout(s[j]), + zpbitsout(bitxor(s[i], s[j]))); + + printf("\nLOGICAL NOT:\n"); + for (i = 0; i < numb; i++) + printf("~%s = %s\n", zpbitsout(s[i]), zpbitsout(bitnot(s[i]))); + + + printf("\nSHIFT LEFT:\n"); + for (i = 0; i < numb; i++) + { + printf("%s\n", zpbitsout(s[i])); + for (j = 0; j <= VARBITLEN(s[i]); j++) + printf("\t%3d\t%s\n", j, zpbitsout(bitshiftleft(s[i], j))); + } + + printf("\nSHIFT RIGHT:\n"); + for (i = 0; i < numb; i++) + { + printf("%s\n", zpbitsout(s[i])); + for (j = 0; j <= VARBITLEN(s[i]); j++) + printf("\t%3d\t%s\n", j, zpbitsout(bitshiftright(s[i], j))); + } + + printf("\n\n ********** VARYING **********\n"); + for (i = 0; i < numb; i++) + { + printf("Input: %s\n", b[i]); + s[i] = varbitin(b[i], 0, atttypmod[i]); + /* print_details(s); */ + printf("%s\n", zpbitout(s[i])); + printf("%s\n", zpbitsout(s[i])); + } + + printf("\nCOMPARISONS:\n"); + for (i = 0; i < numb; i++) + for (j = i + 1; j < numb; j++) + printf("%s <=> %s = %d\n", zpbitsout(s[i]), zpbitsout(s[j]), + bitcmp(s[i], s[j])); + + printf("\nCONCATENATION:\n"); + for (i = 0; i < numb; i++) + for (j = i + 1; j < numb; j++) + printf("%s || %s = %s\n", zpbitsout(s[i]), zpbitsout(s[j]), + zpbitsout(bitcat(s[i], s[j]))); + + printf("\nSUBSTR:\n"); + printf("%s (%d,%d) => %s\n", zpbitsout(s[3]), 1, 8, + zpbitsout(bitsubstr(s[3], 1, 8))); + printf("%s (%d,%d) => %s\n", zpbitsout(s[3]), 9, 8, + zpbitsout(bitsubstr(s[3], 9, 8))); + printf("%s (%d,%d) => %s\n", zpbitsout(s[3]), 1, 9, + zpbitsout(bitsubstr(s[3], 1, 9))); + printf("%s (%d,%d) => %s\n", zpbitsout(s[3]), 3, 5, + zpbitsout(bitsubstr(s[3], 3, 5))); + printf("%s (%d,%d) => %s\n", zpbitsout(s[3]), 3, 9, + zpbitsout(bitsubstr(s[3], 3, 9))); + printf("%s (%d,%d) => %s (%s)\n", zpbitsout(s[3]), 3, 17, + zpbitsout(bitsubstr(s[3], 3, 17)), zpbitsout(bitsubstr(s[3], 3, 17))); + printf("\nLOGICAL AND:\n"); + for (i = 0; i < numb; i++) + for (j = i + 1; j < numb; j++) + printf("%s & %s = %s\n", zpbitsout(s[i]), zpbitsout(s[j]), + zpbitsout(bitand(s[i], s[j]))); + + printf("\nLOGICAL OR:\n"); + for (i = 0; i < numb; i++) + for (j = i + 1; j < numb; j++) + printf("%s | %s = %s\n", zpbitsout(s[i]), zpbitsout(s[j]), + zpbitsout(bitor(s[i], s[j]))); + + printf("\nLOGICAL XOR:\n"); + for (i = 0; i < numb; i++) + for (j = i + 1; j < numb; j++) + printf("%s ^ %s = %s\n", zpbitsout(s[i]), zpbitsout(s[j]), + zpbitsout(bitxor(s[i], s[j]))); + + printf("\nLOGICAL NOT:\n"); + for (i = 0; i < numb; i++) + printf("~%s = %s\n", zpbitsout(s[i]), zpbitsout(bitnot(s[i]))); + + + printf("\nSHIFT LEFT:\n"); + for (i = 0; i < numb; i++) + { + printf("%s\n", zpbitsout(s[i])); + for (j = 0; j <= VARBITLEN(s[i]); j++) + printf("\t%3d\t%s\n", j, zpbitsout(bitshiftleft(s[i], j))); + } + + printf("\nSHIFT RIGHT:\n"); + for (i = 0; i < numb; i++) + { + printf("%s\n", zpbitsout(s[i])); + for (j = 0; j <= VARBITLEN(s[i]); j++) + printf("\t%3d\t%s\n", j, zpbitsout(bitshiftright(s[i], j))); + } } |