From 6fe7a0dc01887e39f028d8d400b98d199744c18f Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 12 Aug 2005 18:56:56 +0000 Subject: [PATCH] added FREXPF() macro (bug 4060) --- src/mesa/main/imports.h | 5 +++++ src/mesa/math/m_debug_util.h | 6 +++--- src/mesa/tnl/t_vb_arbprogram.c | 8 ++------ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h index 11b0eeb..c63cc64 100644 --- a/src/mesa/main/imports.h +++ b/src/mesa/main/imports.h @@ -331,23 +331,28 @@ static INLINE int GET_FLOAT_BITS( float x ) *** CEILF: ceiling of float *** FLOORF: floor of float *** FABSF: absolute value of float + *** LDEXPF: multiply value by an integral power of two + *** FREXPF: extract mantissa and exponent from value ***/ #if defined(XFree86LOADER) && defined(IN_MODULE) #define CEILF(x) ((GLfloat) xf86ceil(x)) #define FLOORF(x) ((GLfloat) xf86floor(x)) #define FABSF(x) ((GLfloat) xf86fabs(x)) #define LDEXPF(x,y) ((GLfloat) xf86ldexp(x,y)) +#define FREXPF(x,y) ((GLfloat) xf86frexp(x,y)) #elif defined(__gnu_linux__) /* C99 functions */ #define CEILF(x) ceilf(x) #define FLOORF(x) floorf(x) #define FABSF(x) fabsf(x) #define LDEXPF(x,y) ldexpf(x,y) +#define FREXPF(x,y) frexpf(x,y) #else #define CEILF(x) ((GLfloat) ceil(x)) #define FLOORF(x) ((GLfloat) floor(x)) #define FABSF(x) ((GLfloat) fabs(x)) #define LDEXPF(x,y) ((GLfloat) ldexp(x,y)) +#define FREXPF(x,y) ((GLfloat) frexp(x,y)) #endif diff --git a/src/mesa/math/m_debug_util.h b/src/mesa/math/m_debug_util.h index 765f54d..1b7d742 100644 --- a/src/mesa/math/m_debug_util.h +++ b/src/mesa/math/m_debug_util.h @@ -286,9 +286,9 @@ static int significand_match( GLfloat a, GLfloat b ) return 0; } - frexp( a, &a_ex ); - frexp( b, &b_ex ); - frexp( d, &d_ex ); + FREXPF( a, &a_ex ); + FREXPF( b, &b_ex ); + FREXPF( d, &d_ex ); if ( a_ex < b_ex ) { return a_ex - d_ex; diff --git a/src/mesa/tnl/t_vb_arbprogram.c b/src/mesa/tnl/t_vb_arbprogram.c index c55fc84..5cee3d7 100644 --- a/src/mesa/tnl/t_vb_arbprogram.c +++ b/src/mesa/tnl/t_vb_arbprogram.c @@ -2,7 +2,7 @@ * Mesa 3-D graphics library * Version: 6.3 * - * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2005 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -351,11 +351,7 @@ static void do_LOG( struct arb_vp_machine *m, union instruction op ) const GLfloat *arg0 = m->File[op.alu.file0][op.alu.idx0]; GLfloat tmp = FABSF(arg0[0]); int exponent; -#ifdef _WIN32 - GLfloat mantissa = (GLfloat) frexp((double)tmp, &exponent); -#else - GLfloat mantissa = frexpf(tmp, &exponent); -#endif + GLfloat mantissa = FREXPF(tmp, &exponent); result[0] = (GLfloat) (exponent - 1); result[1] = 2.0 * mantissa; /* map [.5, 1) -> [1, 2) */ -- 2.7.4