Thread overview
Adding minmaxElement to Phobos?
Sep 04, 2019
Per Nordlöw
Sep 05, 2019
jmh530
Sep 05, 2019
Schrom, Brian T
Sep 06, 2019
Gregor Mückl
September 04, 2019
At

https://stackoverflow.com/a/19954882/683710

I just learned the reason for C++11 having

https://en.cppreference.com/w/cpp/algorithm/minmax_element

Calculating the min and max simultaneously reduces the number of comparisons with 1/4.

Should we add a minmaxElement alongside minElement and maxElement?
September 05, 2019
On Wednesday, 4 September 2019 at 22:12:28 UTC, Per Nordlöw wrote:
> At
>
> https://stackoverflow.com/a/19954882/683710
>
> I just learned the reason for C++11 having
>
> https://en.cppreference.com/w/cpp/algorithm/minmax_element
>
> Calculating the min and max simultaneously reduces the number of comparisons with 1/4.
>
> Should we add a minmaxElement alongside minElement and maxElement?

The comments suggest that it doesn't have benefit in some cases. Can't be that hard to do a simple version and see if it has better performance.
September 05, 2019
On 9/5/19 12:12 AM, Per Nordlöw wrote:
> At
> 
> https://stackoverflow.com/a/19954882/683710
> 
> I just learned the reason for C++11 having
> 
> https://en.cppreference.com/w/cpp/algorithm/minmax_element
> 
> Calculating the min and max simultaneously reduces the number of comparisons with 1/4.
> 
> Should we add a minmaxElement alongside minElement and maxElement?

Looks like enough of an principled algorithm to make a valid addition. I think it was an interview question at Facebook at a point :o). (Hmmm... I looked quickly over the C++ sample implementation in the link above and it seems something is amiss.)
September 05, 2019
If someone does do this, an interesting comparison point is how it compares to

auto r = reduce!(min, max)(data);

On 9/5/19, 9:37 AM, "Digitalmars-d on behalf of Andrei Alexandrescu via Digitalmars-d" <digitalmars-d-bounces@puremagic.com on behalf of digitalmars-d@puremagic.com> wrote:

    On 9/5/19 12:12 AM, Per Nordlöw wrote:
    > At
    >
    > https://stackoverflow.com/a/19954882/683710
    >
    > I just learned the reason for C++11 having
    >
    > https://en.cppreference.com/w/cpp/algorithm/minmax_element
    >
    > Calculating the min and max simultaneously reduces the number of
    > comparisons with 1/4.
    >
    > Should we add a minmaxElement alongside minElement and maxElement?

    Looks like enough of an principled algorithm to make a valid addition. I
    think it was an interview question at Facebook at a point :o). (Hmmm...
    I looked quickly over the C++ sample implementation in the link above
    and it seems something is amiss.)



September 06, 2019
On Wednesday, 4 September 2019 at 22:12:28 UTC, Per Nordlöw wrote:
> At
>
> https://stackoverflow.com/a/19954882/683710
>
> I just learned the reason for C++11 having
>
> https://en.cppreference.com/w/cpp/algorithm/minmax_element
>
> Calculating the min and max simultaneously reduces the number of comparisons with 1/4.
>
> Should we add a minmaxElement alongside minElement and maxElement?

Side note: a stride of two as in the StackOverflow example code would be suboptimal as this should prevent vectorization of the loop. The stride probably needs to be the width of a SIMD register to gain any advantage over the naive loop.