lavu/libm: add isfinite fallback

Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
This commit is contained in:
Ganesh Ajjanagadde 2016-01-13 19:09:25 -05:00
parent 44ac13eed4
commit a0a47a09b0
2 changed files with 20 additions and 0 deletions

1
configure vendored
View File

@ -1820,6 +1820,7 @@ MATH_FUNCS="
exp2f exp2f
expf expf
hypot hypot
isfinite
isinf isinf
isnan isnan
ldexpf ldexpf

View File

@ -343,6 +343,25 @@ static av_always_inline av_const int avpriv_isnan(double x)
: avpriv_isnan(x)) : avpriv_isnan(x))
#endif /* HAVE_ISNAN */ #endif /* HAVE_ISNAN */
#if !HAVE_ISFINITE
static av_always_inline av_const int avpriv_isfinitef(float x)
{
uint32_t v = av_float2int(x);
return (v & 0x7f800000) != 0x7f800000;
}
static av_always_inline av_const int avpriv_isfinite(double x)
{
uint64_t v = av_double2int(x);
return (v & 0x7ff0000000000000) != 0x7ff0000000000000;
}
#define isfinite(x) \
(sizeof(x) == sizeof(float) \
? avpriv_isfinitef(x) \
: avpriv_isfinite(x))
#endif /* HAVE_ISFINITE */
#if !HAVE_HYPOT #if !HAVE_HYPOT
static inline av_const double hypot(double x, double y) static inline av_const double hypot(double x, double y)
{ {