Floating point 在AVX中查找绝对值

Floating point 在AVX中查找绝对值,floating-point,ieee-754,avx,avx2,absolute-value,Floating Point,Ieee 754,Avx,Avx2,Absolute Value,在其中一个解决方案中,他/她发现AVX向量的abs(inp) __m256符号位=mm256_set1_ps(-0.0f); __m256 inp_abs=_mm256_和not_ps(符号位,inp) 背后的逻辑是什么 表示带有符号位、有效位和指数的浮点数。符号位设置为负数,清除为正数。所以,只需清除数字的符号位,就可以计算出绝对值 数字-0.0f的有效位大小和指数均为零位和负号,因此其二进制表示将设置符号位,并清除所有其他位。因此,它可以用作符号位的掩码。内在函数将此32位值广播到256位向

在其中一个解决方案中,他/她发现AVX向量的abs(inp)

__m256符号位=mm256_set1_ps(-0.0f); __m256 inp_abs=_mm256_和not_ps(符号位,inp)

背后的逻辑是什么

表示带有符号位、有效位和指数的浮点数。符号位设置为负数,清除为正数。所以,只需清除数字的符号位,就可以计算出绝对值

数字
-0.0f
的有效位大小和指数均为零位和负号,因此其二进制表示将设置符号位,并清除所有其他位。因此,它可以用作符号位的掩码。内在函数将此32位值广播到256位向量的所有元素
符号位
,并使用
符号位
的NOT计算
inp
的位and,即
inp&~sign位
,它有效地清除了每个元素的符号位,并且不改变任何其他内容。

表示带有符号位、有效位和指数的浮点数。符号位设置为负数,清除为正数。所以,只需清除数字的符号位,就可以计算出绝对值


数字
-0.0f
的有效位大小和指数均为零位和负号,因此其二进制表示将设置符号位,并清除所有其他位。因此,它可以用作符号位的掩码。内在函数将此32位值广播到256位向量的所有元素
符号位
,并使用非
符号位
,即
符号位
,计算
inp
的按位and,有效地清除每个元素的符号位,不会改变任何其他内容。

,0的指数是emin,−126,根据IEEE-754 3.4,第e项朝向页面底部。对指数进行编码的字段中的位字符串为零。我提到这一点并不是因为它对0特别重要,而是因为人们理解有效位和指数的值与编码它们的字段的位字符串之间的区别非常重要。记住这一点可以帮助人们避免错误地认为有效位是23位而不是24位,例如。从技术上讲,0的指数是emin,−126,根据IEEE-754 3.4,第e项朝向页面底部。对指数进行编码的字段中的位字符串为零。我提到这一点并不是因为它对0特别重要,而是因为人们理解有效位和指数的值与编码它们的字段的位字符串之间的区别非常重要。例如,记住这一点可以帮助人们避免错误地认为有效位是23位而不是24位。