[FFmpeg-devel] [PATCH] lavu/libm: add isfinite fallback
Ronald S. Bultje
rsbultje at gmail.com
Thu Jan 14 03:09:46 CET 2016
Hi,
On Wed, Jan 13, 2016 at 8:09 PM, Ganesh Ajjanagadde <gajjanagadde at gmail.com>
wrote:
> On Wed, Jan 13, 2016 at 8:07 PM, Ronald S. Bultje <rsbultje at gmail.com>
> wrote:
> > Hi,
> >
> > On Wed, Jan 13, 2016 at 7:48 PM, Ganesh Ajjanagadde <
> gajjanagadde at gmail.com>
> > wrote:
> >>
> >> On Wed, Jan 13, 2016 at 7:39 PM, Ronald S. Bultje <rsbultje at gmail.com>
> >> wrote:
> >> > Hi,
> >> >
> >> > On Wed, Jan 13, 2016 at 7:10 PM, Ganesh Ajjanagadde
> >> > <gajjanagadde at gmail.com>
> >> > wrote:
> >> >>
> >> >> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde at gmail.com>
> >> >> ---
> >> >> configure | 1 +
> >> >> libavutil/libm.h | 4 ++++
> >> >> 2 files changed, 5 insertions(+)
> >> >>
> >> >> diff --git a/configure b/configure
> >> >> index 415d939..a3aaa25 100755
> >> >> --- a/configure
> >> >> +++ b/configure
> >> >> @@ -1821,6 +1821,7 @@ MATH_FUNCS="
> >> >> exp2f
> >> >> expf
> >> >> hypot
> >> >> + isfinite
> >> >> isinf
> >> >> isnan
> >> >> ldexpf
> >> >> diff --git a/libavutil/libm.h b/libavutil/libm.h
> >> >> index bc44dca..f01e5c6 100644
> >> >> --- a/libavutil/libm.h
> >> >> +++ b/libavutil/libm.h
> >> >> @@ -343,6 +343,10 @@ static av_always_inline av_const int
> >> >> avpriv_isnan(double x)
> >> >> : avpriv_isnan(x))
> >> >> #endif /* HAVE_ISNAN */
> >> >>
> >> >> +#if !HAVE_ISFINITE
> >> >> +#define isfinite(x) (!(isinf(x) || isnan(x)))
> >> >> +#endif /* HAVE_ISFINITE */
> >> >
> >> >
> >> > This will break if you use isfinite(*ptr++) or something obscure like
> >> > that.
> >>
> >> isfinite is a macro, not a function (man isfinite). Your point is
> >> still valid though, really it should do a sizeof first (dbl/float),
> >> then call a avpriv_isfinitef, avpriv_isfinite. I was being lazy.
> >
> >
> > Does type matter much? Afaik, inf/nan will be maintained between
> > float/double/long double.
>
> It is important, see a commit I made earlier: 14ea4151d7c. In
> particular, the main issue is that double to float conversion for dbl
> outside float range is undefined behavior.
Please revert.
I don't care much that double to float conversion is undefined; just make
it a double (or long double).
Ronald
More information about the ffmpeg-devel
mailing list