Для чего используется System.Numerics.Vector.ConditionalSelect?
Может кто-нибудь объяснить, желательно с примером, что / когда / как System.Numerics.Vector.ConditionalSelect
может быть использован?
Я не могу понять многое из документов.
1 ответ
condition
параметр на самом деле Vector<int>
при использовании 4-х байтовых перегрузок ConditionalSelect
такие как те, с Vector<int>
или же Vector<float>
аргументы. condition
является Vector<long>
при использовании 8-байтовых версий и т. д.
Чтобы расширить комментарий @Hans в вашем вопросе, condition
означает что-то вроде: double c = cond == -1 ? a : b;
, То есть когда cond == -1
, он выбирает левые значения. когда cond == 0
, он выбирает правильные значения.
когда cond
это что-то еще, я видел некоторые результаты, которые я пока не особенно понимаю, и на самом деле не исследовал.
class Program
{
static void Main(string[] args)
{
//Length depends on your Vector<int>.Count. In my computer it is 4
Vector<int> vector1 = new Vector<int>(4); //vector1 == {<4, 4, 4, 4>}
Vector<int> vector2 = new Vector<int>(5); //vector2 == {<5, 5, 5, 5>}
Vector<int> mask = Vector.GreaterThan(vector1, vector2); //mask == {<0, 0, 0, 0>}
Vector<int> selected = Vector.ConditionalSelect(mask, vector1, vector2); //selected == {<5, 5, 5, 5>}
vector1 = new Vector<int>(4); //vector1 == {<4, 4, 4, 4>}
vector2 = new Vector<int>(3); //vector2 == {<3, 3, 3, 3>}
mask = Vector.GreaterThan(vector1, vector2); //mask == {<-1, -1, -1, -1>}
selected = Vector.ConditionalSelect(mask, vector1, vector2); //selected == {<4, 4, 4, 4>}
mask = new Vector<int>(123); //mask == {<123, 123, 123, 123>}
selected = Vector.ConditionalSelect(mask, vector1, vector2); //selected == {<0, 0, 0, 0>}
mask = new Vector<int>(4);
selected = Vector.ConditionalSelect(mask, vector1, vector2); //selected == {<7, 7, 7, 7>}
}
}