summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2005-08-12 18:56:56 +0000
committerBrian Paul <[email protected]>2005-08-12 18:56:56 +0000
commit6fe7a0dc01887e39f028d8d400b98d199744c18f (patch)
tree44e4cacd39f721c57e820dc8eeef4dbc5b9278cd
parentf2876d1ee3b878a07b12ddcb464633a44f7c29e7 (diff)
added FREXPF() macro (bug 4060)
-rw-r--r--src/mesa/main/imports.h5
-rw-r--r--src/mesa/math/m_debug_util.h6
-rw-r--r--src/mesa/tnl/t_vb_arbprogram.c8
3 files changed, 10 insertions, 9 deletions
diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h
index 11b0eebf129..c63cc64eb86 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 765f54dfb5a..1b7d742a80b 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 c55fc84feaa..5cee3d78dc3 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) */