int a, b, c, d;
if((b << 1) + c > 0){
 c = b - 1;
}
else{
 b++;
}
d += (b << 1) + c;

ソースの一部という条件があるのがなぁ・・・
適当なのでちょっと自信ないが。