libm: add fallbacks for various single-precision functions

Signed-off-by: Mans Rullgard <mans@mansr.com>
This commit is contained in:
Mans Rullgard 2012-10-13 22:54:53 +01:00
parent c3e73100af
commit fab0a8b2c6
3 changed files with 49 additions and 0 deletions

8
configure vendored
View File

@ -1125,20 +1125,28 @@ HAVE_LIST_PUB='
'
MATH_FUNCS="
atanf
atan2f
cbrtf
cosf
exp2
exp2f
expf
isinf
isnan
ldexpf
llrint
llrintf
log2
log2f
log10f
lrint
lrintf
powf
rint
round
roundf
sinf
trunc
truncf
"

View File

@ -31,6 +31,7 @@
#include "libavcodec/aacps_tables.h"
#else
#include "libavutil/common.h"
#include "libavutil/libm.h"
#include "libavutil/mathematics.h"
#include "libavutil/mem.h"
#define NR_ALLPASS_BANDS20 30

View File

@ -29,6 +29,21 @@
#include "attributes.h"
#include "intfloat.h"
#if !HAVE_ATANF
#undef atanf
#define atanf(x) ((float)atan(x))
#endif
#if !HAVE_ATAN2F
#undef atan2f
#define atan2f(y, x) ((float)atan2(y, x))
#endif
#if !HAVE_POWF
#undef powf
#define powf(x, y) ((float)pow(x, y))
#endif
#if !HAVE_CBRTF
static av_always_inline float cbrtf(float x)
{
@ -36,6 +51,16 @@ static av_always_inline float cbrtf(float x)
}
#endif
#if !HAVE_COSF
#undef cosf
#define cosf(x) ((float)cos(x))
#endif
#if !HAVE_EXPF
#undef expf
#define expf(x) ((float)exp(x))
#endif
#if !HAVE_EXP2
#undef exp2
#define exp2(x) exp((x) * 0.693147180559945)
@ -66,6 +91,11 @@ static av_always_inline av_const int isnan(float x)
}
#endif /* HAVE_ISNAN */
#if !HAVE_LDEXPF
#undef ldexpf
#define ldexpf(x, exp) ((float)ldexp(x, exp))
#endif
#if !HAVE_LLRINT
#undef llrint
#define llrint(x) ((long long)rint(x))
@ -86,6 +116,16 @@ static av_always_inline av_const int isnan(float x)
#define log2f(x) ((float)log2(x))
#endif /* HAVE_LOG2F */
#if !HAVE_LOG10F
#undef log10f
#define log10f(x) ((float)log10(x))
#endif
#if !HAVE_SINF
#undef sinf
#define sinf(x) ((float)sin(x))
#endif
#if !HAVE_RINT
static inline double rint(double x)
{