arrow icon indicating copy to clipboard operation
arrow copied to clipboard

GH-44393: [C++][Compute] Placement vector functions

Open zanmato1984 opened this issue 1 year ago • 3 comments

Rationale for this change

For background please see #44393.

When implementing the "scatter" function requested in #44393, I found it also useful to make it a public vector API. After a painful thinking, I decided to name it "permute". And when implementing permute, I found it fairly easy to implement it by first computing the "reverse indices" of the positions, and then invoking the existing "take", where I think "reverse_indices" itself can also be a useful public vector API. Thus the PR categorized them as "placement functions".

What changes are included in this PR?

Implement placement API reverse_indices and permute, where permute(values, indices) is implemented as take(values, reverse_indices(indices)).

I also put a small UT Permute.IfElse demonstrating how permute can serve as a building block of implementing special forms.

Are these changes tested?

UT included.

Are there any user-facing changes?

Yes, new public APIs added. Documents updated.

  • GitHub Issue: #44393

zanmato1984 avatar Oct 13 '24 16:10 zanmato1984