Hi,

Sorry I didn't saw that commit getting in just before I pushed mine. I
have renamed EINA_{FLT,DBL}_CMP to EINA_{FLT,DBL}_EQ as discussed in a
previous thread. That is now confusing I think with this new function.
Should we rename them to something like eina_flt_exat_eq or something
like that along with the move to memcmp and inline ?

On Fri, Jan 6, 2017 at 10:37 AM, Gustavo Sverzut Barbieri
<barbi...@gmail.com> wrote:
> This isn't good for a number of reasons... first the non-inline nature
> will add more symbols and a reasonable penalty. Secondly it just
> pushes the warning out of the code... to do something like that, maybe
> it's more reasonable to just turn the comparison into a memcmp() if
> we're looking for an identical value, usually to skip computations
> when it didn't change (although there a reasonable epsilon would
> increase hit ratio and speed up even further).
>
> 1 - static inline this kind of things;
>
> 2 - to achieve what you're proposing (not using an epsilon),
> memcmp(&a, &b) == 0 would be better (and likely faster since compilers
> will expand that to comparing the bytes without any call).
>
>
>
>
> On Fri, Jan 6, 2017 at 3:57 PM, Mike Blumenkrantz
> <michael.blumenkra...@gmail.com> wrote:
>> discomfitor pushed a commit to branch master.
>>
>> http://git.enlightenment.org/core/efl.git/commit/?id=1b4c26be8e9630ae0c367b914f893161c968799a
>>
>> commit 1b4c26be8e9630ae0c367b914f893161c968799a
>> Author: Mike Blumenkrantz <zm...@osg.samsung.com>
>> Date:   Fri Jan 6 12:57:46 2017 -0500
>>
>>     eina: add functions for warningless exact comparisons of floats
>>
>>     in some cases a user does want to check exact values, so these functions
>>     should be used to indicate this intent
>>
>>     needs windows support
>>
>>     @feature
>> ---
>>  src/lib/eina/eina_util.c | 32 ++++++++++++++++++++++++++++++++
>>  src/lib/eina/eina_util.h | 20 ++++++++++++++++++++
>>  2 files changed, 52 insertions(+)
>>
>> diff --git a/src/lib/eina/eina_util.c b/src/lib/eina/eina_util.c
>> index 62e1a79..a358884 100644
>> --- a/src/lib/eina/eina_util.c
>> +++ b/src/lib/eina/eina_util.c
>> @@ -100,3 +100,35 @@ eina_environment_tmp_get(void)
>>     return tmp;
>>  #endif
>>  }
>> +
>> +#if defined(_MSC_VER)
>> +#elif defined(__clang__)
>> +#  pragma clang diagnostic push
>> +#  pragma clang diagnostic ignored "-Wfloat-equal"
>> +#elif defined(__GNUC__)
>> +# if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406
>> +#  pragma GCC diagnostic push
>> +#  pragma GCC diagnostic ignored "-Wfloat-equal"
>> +# endif
>> +#endif
>> +
>> +EAPI Eina_Bool
>> +eina_dbleq(double a, double b)
>> +{
>> +   return a == b;
>> +}
>> +
>> +EAPI Eina_Bool
>> +eina_flteq(float a, float b)
>> +{
>> +   return a == b;
>> +}
>> +
>> +#if defined(_MSC_VER)
>> +#elif defined(__clang__)
>> +#  pragma clang diagnostic pop
>> +#elif defined(__GNUC__)
>> +# if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406
>> +#  pragma GCC diagnostic pop
>> +# endif
>> +#endif
>> diff --git a/src/lib/eina/eina_util.h b/src/lib/eina/eina_util.h
>> index 66e0d17..3796dcb 100644
>> --- a/src/lib/eina/eina_util.h
>> +++ b/src/lib/eina/eina_util.h
>> @@ -50,6 +50,26 @@ EAPI const char *eina_environment_home_get(void);
>>  EAPI const char *eina_environment_tmp_get(void);
>>
>>  /**
>> + * @brief Warningless comparison of doubles using ==
>> + * @param a First member to compare
>> + * @param b Second member to compare
>> + *
>> + * @return @c true if two doubles match
>> + * @since 1.19
>> + */
>> +EAPI Eina_Bool eina_dbleq(double a, double b);
>> +
>> +/**
>> + * @brief Warningless comparison of floats using ==
>> + * @param a First member to compare
>> + * @param b Second member to compare
>> + *
>> + * @return @c true if two floats match
>> + * @since 1.19
>> + */
>> +EAPI Eina_Bool eina_flteq(float a, float b);
>> +
>> +/**
>>   * @brief Safe comparison of float
>>   * @param a First member to compar
>>   * @param b Second member to compar
>>
>> --
>>
>>
>
>
>
> --
> Gustavo Sverzut Barbieri
> --------------------------------------
> Mobile: +55 (16) 99354-9890
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel



-- 
Cedric BAIL

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to