有効な浮動小数点数のセットを乗算ベースの演算の下でグループに強制するためのトリックとテクニックに精通している人はいますか?
つまり、任意の2つの浮動小数点数( "double a、b")が与えられた場合、乗算を含むどの操作シーケンスがこれを別の有効な浮動小数点数に変換しますか?(有効な浮動小数点数は、NaN、非正規化数、および-0.0を除いて、1-正規化されたものです)。
この大まかなコードを置くには:
double a = drand();
while ( forever )
{
double b = drand();
a = GROUP_OPERATION(a,b);
//invariant - a is a valid floating point number
}
NaNがあるため、乗算だけでは機能しません。理想的には、これは直線的なアプローチです(「Xを超える場合は、Yで割る」定式化を回避します)。
これがすべての有効な浮動小数点数に対して機能しない場合、そのような操作が利用できるサブセットはありますか?
(私が探しているモデルは、Cでの整数の乗算に似ています。2つの整数が乗算されても、常に整数が返されます)。