アンダーフローを防ぐために、ループ内のdouble型の結果にいくつかの定数を効率的に追加または乗算する必要があります。たとえば、intがある場合、コンパイラはビットシフトを使用するため、2の累乗で乗算すると高速になります。double
効率的な足し算と掛け算のための定数の形式はありますか?
編集:私の質問を理解している人はあまりいないようです、私の怠惰についてお詫びします。コードを追加します。がintの場合a
、これ(2の累乗を掛ける)はより効率的です
int a = 1;
for(...)
for(...)
a *= somefunction() * 1024;
1024をたとえば1023に置き換えた場合よりも。intに追加したい場合に最適なものはわかりませんが、それは私の興味ではありません。a
ダブルの場合に興味があります。効率的に加算してdoubleに乗算できる定数の形式(たとえば、2の累乗)は何ですか?定数は任意であり、アンダーフローを防ぐのに十分な大きさである必要があります。
これはおそらくCとC++だけに制限されているわけではありませんが、より適切なタグはわかりません。