他に
ret = (2 * a + (b^t)) / (2 * b);

として tを 0か-1とする方法もある
でもたぶん
ret = ( a + ((b^t)>>1) ) / b;

あたりでやってんじゃないかな