I meant fmin, not minf :-)
On Fri, Jan 17, 2020 at 9:46 AM Rasmus Munk Larsen <[email protected]>
wrote:
> As Christoph points out, this refers to the semantic difference between
> std::min and minf (and similar for max*) in the presence of NaN arguments.
> As you can see in the bugs Christoph linked, we agree that it would be nice
> to have packet ops for the various behaviors (possibly chosen using a
> template argument), but currently Eigen follows the std::min semantics,
> which are equivalent to the ternary expression
>
> template<class T>
> const T& min(const T& a, const T& b)
> {
> return (b < a) ? b : a;
> }
>
> See https://en.cppreference.com/w/cpp/algorithm/min
>
> On Fri, Jan 17, 2020 at 8:45 AM Christoph Hertzberg <
> [email protected]> wrote:
>
>> Hi!
>>
>> Which IEEE754 version are you referring to?
>>
>> In IEEE754-1985, there was no min/max, then the 2008 draft suggested
>> introducing minNum/maxNum which propagate numbers, and the 2019 draft
>> suggests replacing those by
>> {min,max}imum{,Number,Magnitude,MagnitudeNumber} which either propagate
>> NaNs or numbers. (All to the best of my knowledge, please correct me, if
>> I'm wrong).
>>
>> Eigen follows the `std::min`/`std::max` convention of propagating the
>> first argument, if one argument is NaN. SSE/AVX propagates the first,
>> which is why we change the order for those.
>> I'm really no expert on Altivec/PPC, so no idea if there is a more
>> efficient instruction consistent with `std::min/max`.
>>
>> For reference: Here is the commit which introduced the lines you are
>> referring to:
>>
>> https://gitlab.com/libeigen/eigen/commit/e91e314347c14774206307a91d1b427e49f9b3e2
>>
>> Also, check these issues for further discussion on the topic:
>>
>> https://gitlab.com/libeigen/eigen/issues/564
>> https://gitlab.com/libeigen/eigen/issues/1373
>> https://gitlab.com/libeigen/eigen/issues/1494
>>
>>
>> Cheers,
>> Christoph
>>
>>
>>
>> On 17/01/2020 16.50, Everton Rufino Constantino1 wrote:
>> > Hi,
>> > looking at the implementation of pmin and pmax for Packet4f on
>> > Altivec/PacketMath.h I came across the following statement to justify
>> not using
>> > VSX's intrinsics:
>> > "// NOTE: about 10% slower than vec_min, but consistent with std::min
>> and SSE regarding NaN"
>> > I fail to understand the reasoning, afaik ppc and stdlib both are IEEE
>> > compatible right? Can somebody please clarify the statement? I think
>> sometime in
>> > the past ppc had a non-IEEE mode that you could turn on or off but
>> that's gone
>> > for a while now.
>> > Best regards,
>> > Everton Constantino
>> > <[email protected]>
>> >
>>
>> --
>> Dr.-Ing. Christoph Hertzberg
>>
>> Besuchsadresse der Nebengeschäftsstelle:
>> DFKI GmbH
>> Robotics Innovation Center
>> Robert-Hooke-Straße 5
>> 28359 Bremen, Germany
>>
>> Postadresse der Hauptgeschäftsstelle Standort Bremen:
>> DFKI GmbH
>> Robotics Innovation Center
>> Robert-Hooke-Straße 1
>> 28359 Bremen, Germany
>>
>> Tel.: +49 421 178 45-4021 <+49%20421%20178454021>
>> Zentrale: +49 421 178 45-0
>> E-Mail: [email protected]
>>
>> Weitere Informationen: http://www.dfki.de/robotik
>> -------------------------------------------------------------
>> Deutsches Forschungszentrum für Künstliche Intelligenz GmbH
>> Trippstadter Straße 122, D-67663 Kaiserslautern, Germany
>>
>> Geschäftsführung:
>> Prof. Dr. Antonio Krüger (Vorsitzender)
>> Dr. Walter Olthoff
>>
>> Vorsitzender des Aufsichtsrats:
>> Dr. Gabriël Clemens
>> Amtsgericht Kaiserslautern, HRB 2313
>> -------------------------------------------------------------
>>
>>
>>
>>