相关疑难解决方法(0)

数学上找到没有条件比较的最大值

- - - - - 更新 - - - - - -

到目前为止,codymanix和moonshadow一直是一个很大的帮助.我能够使用方程解决我的问题,而不是使用右移我除以29.因为32位签名2 ^ 31 =溢出到29.哪个有效!

PHP中的原型

$r = $x - (($x - $y) & (($x - $y) / (29)));
Run Code Online (Sandbox Code Playgroud)

LEADS的实际代码(你只能做一个数学函数PER LINE !!! AHHHH !!!)

DERIVDE1 = IMAGE1 - IMAGE2;
DERIVED2 = DERIVED1 / 29;
DERIVED3 = DERIVED1 AND DERIVED2;
MAX = IMAGE1 - DERIVED3;
Run Code Online (Sandbox Code Playgroud)

----------原始问题-----------
我不认为这很可能与我的应用程序的限制有关,但我认为值得一试.

我会尽力做到这一点.我需要找到两个数字之间的最大值,而不能使用IF或任何条件语句.

为了找到MAX值,我只能执行以下功能

Divide, Multiply, Subtract, Add, NOT, AND ,OR
Run Code Online (Sandbox Code Playgroud)

假设我有两个数字

A = 60;
B = 50;
Run Code Online (Sandbox Code Playgroud)

现在,如果A总是大于B,那么找到最大值就很简单了

MAX = (A - B) + …
Run Code Online (Sandbox Code Playgroud)

math conditional algebra max min

18
推荐指数
4
解决办法
2万
查看次数

如何在256位AVX向量中找到水平最大值

我有一个__m256d向量,包含四个64位浮点值.
我需要找到向量元素的水平最大值,并将结果存储在双精度标量值中;

我的尝试最终都使用了很多矢量元素的改组,使得代码不是很优雅也没有效率.此外,我发现不可能只留在AVX域.在某些时候,我不得不使用SSE 128位指令来提取最终的64位值.但是,我想在最后的声明中被证明是错误的.

因此理想的解决方案将:
1)仅使用AVX指令.
2)最小化指令数量.(我希望不超过3-4条说明)

话虽如此,任何优雅/高效的解决方案都将被接受,即使它不符合上述指导原则.

谢谢你的帮助.

-Luigi

x86 simd vector-processing avx avx2

14
推荐指数
2
解决办法
6709
查看次数

标签 统计

algebra ×1

avx ×1

avx2 ×1

conditional ×1

math ×1

max ×1

min ×1

simd ×1

vector-processing ×1

x86 ×1