((a << 1) / b + 1) >> 1
はどうでしょう。
私の環境では下のプログラムで約30秒でした。
ただ、
(a / b * 10 + 5) / 10
もやっぱり30秒だったんですよね。
ビット演算のほうが計算コストがかからなかったはずなんですけど。
コンパイラが最適化してくれたのかな。
inline int div(int a, int b){
return ((a << 1) / b + 1) >> 1;
}
int main(){
int a,b;
time_t starttime;
time(&starttime);
for(a=1;a<100000;a++)
for(b=1;b<100000;b++)
div(a,b);
printf("%d second\n",time(NULL)-starttime);
return 0;
}
お礼
ありがとうございました。 レスポンスがネックになり、苦労しております。 また、色々と質問をすることがあると思いますので、ご協力をお願いいたします。