gpt4 book ai didi

c - 什么操作将 float 变成 "group"?

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:53 24 4
gpt4 key购买 nike

可能有人熟悉将有效 float 集强制为基于乘法运算的组的技巧和技术吗?

也就是说,给定任意两个 float (“double a,b”),什么样的操作序列(包括乘法)会将其转换为另一个有效的 float ? (有效的 float 是任何 1 归一化的数,不包括 NaN、非正规数和 -0.0)。

把这个粗略的代码:

double a = drand();
while ( forever )
{
double b = drand();
a = GROUP_OPERATION(a,b);
//invariant - a is a valid floating point number
}

由于 NaN,仅自相乘是行不通的。理想情况下,这将是一种直线方法(避免“如果高于 X,则除以 Y”的公式)。

如果这不能适用于所有有效的 float ,是否有一个子集可以进行这样的操作?

(我正在寻找的模型类似于 C 中的整数乘法 - 无论两个整数相乘,你总是得到一个整数)。

最佳答案

(The model I'm looking for is akin to integer multiplication in C - no matter what two integers get multiplied together, you always get an integer back).

整数模 2^N 不构成一个群 - 什么整数乘以 2 得到 1?对于乘法下的一组整数,您必须对质数取模。 (例如Z mod 7, 2*4 = 1, 所以2和4互为倒数)

对于浮点值,简单的乘法或加法会饱和到 +/- 无穷大,并且没有任何值是无穷大的倒数,因此集合不是封闭的,或者它缺乏可逆性。

另一方面,如果你想要类似于整数乘法模 2 的幂的东西,那么乘法就可以了——有些元素没有逆,所以它不是一个群,但它是封闭的——你总是得到一个 float 值(value)回归。对于作为真正组的 float 子集,请参阅 lakshmanaraj 的回答。

关于c - 什么操作将 float 变成 "group"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/593824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com