| @@ -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 | |||
| @@ -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; | |||
| @@ -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) */ | |||