translate_test: fix compilation on non-POSIX platforms
authorLuca Barbieri <luca@luca-barbieri.com>
Thu, 12 Aug 2010 20:07:37 +0000 (22:07 +0200)
committerLuca Barbieri <luca@luca-barbieri.com>
Thu, 12 Aug 2010 20:10:09 +0000 (22:10 +0200)
Use a kludgy function based on rand() instead of drand48()

src/gallium/tests/unit/translate_test.c

index a6f0f548976ae5285d6c78d6d939203a08fd3d59..960c70f2b503228d3dd197a86b0e1bff74fed191 100644 (file)
 #include <util/u_cpu_detect.h>
 #include <rtasm/rtasm_cpu.h>
 
+/* don't use this for serious use */
+static double rand_double()
+{
+   const double rm = (double)RAND_MAX + 1;
+   double div = 1;
+   double v = 0;
+   for(unsigned i = 0; i < 4; ++i)
+   {
+      div *= rm;
+      v += (double)rand() / div;
+   }
+   return v;
+}
+
 int main(int argc, char** argv)
 {
    struct translate *(*create_fn)(const struct translate_key *key) = 0;
@@ -129,17 +143,17 @@ int main(int argc, char** argv)
    key.element[0].type = TRANSLATE_ELEMENT_NORMAL;
    key.element[0].instance_divisor = 0;
 
-   srand48(4359025);
+   srand(4359025);
 
    /* avoid negative values that work badly when converted to unsigned format*/
-   for (i = 0; i < buffer_size / sizeof(unsigned); ++i)
-      ((unsigned*)byte_buffer)[i] = mrand48() & 0x7f7f7f7f;
+   for (i = 0; i < buffer_size; ++i)
+      byte_buffer[i] = rand() & 0x7f7f7f7f;
 
    for (i = 0; i < buffer_size / sizeof(float); ++i)
-      float_buffer[i] = (float)drand48();
+      float_buffer[i] = (float)rand_double();
 
    for (i = 0; i < buffer_size / sizeof(double); ++i)
-      double_buffer[i] = drand48();
+      double_buffer[i] = rand_double();
 
    for (output_format = 1; output_format < PIPE_FORMAT_COUNT; ++output_format)
    {