Further clean up RoughApproxPow2 and disable the optimized version --
authorKeith Whitwell <keith@tungstengraphics.com>
Thu, 9 Jun 2005 18:59:41 +0000 (18:59 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Thu, 9 Jun 2005 18:59:41 +0000 (18:59 +0000)
it's a very poor approximation.

src/mesa/tnl/t_vb_arbprogram.c

index c569d93478fb92d161f5b9382fc242c60e5738b0..70e1048f1408139eefbf1061e33d567bd9a2056f 100644 (file)
@@ -96,16 +96,17 @@ static GLfloat RoughApproxLog2(GLfloat t)
 
 static GLfloat RoughApproxPow2(GLfloat t)
 {   
-   GLfloat q;
-#ifdef USE_IEEE
-   GLint ii = (GLint) t;
-   ii = (ii << 23) + 0x3f800000;
-   SET_FLOAT_BITS(q, ii);
-   q = *((GLfloat *) (void *)&ii);
+#if 0
+   /* This isn't nearly accurate enough - it discards all of t's
+    * fractional bits!
+    */
+   fi_type fi;
+   fi.i = (GLint) t;
+   fi.i = (fi.i << 23) + 0x3f800000;
+   return fi.f;
 #else
-   q = (GLfloat) pow(2.0, floor_t0);
+   return (GLfloat) _mesa_pow(2.0, floor_t0);
 #endif
-   return q;
 }
 
 static GLfloat RoughApproxPower(GLfloat x, GLfloat y)