/* ** ptq - binary power-of-two quantizer-multiplier verification program ** written by Joseph B. Evans, 7/25/88 */ #include #include /* nclude "binary.h" */ main(ac,av) int ac; char **av; { int x,e,y,z; int xbits,ebits,ybits,zbits; printf("x (binary): "); scan_binary(&x,&xbits); printf("e (binary): "); scan_binary(&e,&ebits); y = q(e,ebits); ybits = ebits; z = x*y; zbits = xbits + ebits; printf("x (decimal): %d\t\tx (binary): ",x); print_binary(x,xbits); printf("e (decimal): %d\t\te (binary): ",e); print_binary(e,ebits); printf("q(e) (decimal): %d\t\tq(e) (binary): ",y); print_binary(y,ybits); printf("z (decimal): %d\t\tz (binary): ",z); print_binary(z,zbits); } q(e,ebits) int e,ebits; { extern int masks[]; int qe,i; i = ebits; if (e > 0) while (i > 0) { if ((masks[i-1]&e) != 0) { qe = 1<<(i-1); return(qe); } i--; } else if (e < 0) while (i > 0) { if ((masks[i-1]&(~e)) != 0) { qe = ~(1<<(i-1)); return(qe); } i--; } else { qe = 0; return(qe); } }