Merge remote branch 'origin/7.8'
[mesa.git] / progs / gallium / unit / u_half_test.c
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <float.h>
4
5 #include "util/u_math.h"
6 #include "util/u_half.h"
7
8 int
9 main(int argc, char **argv)
10 {
11 unsigned i;
12 unsigned roundtrip_fails = 0;
13 for(i = 0; i < 1 << 16; ++i)
14 {
15 uint16_t h = (uint16_t) i;
16 union fi f;
17 uint16_t rh;
18 f.ui = util_half_to_floatui(h);
19 rh = util_floatui_to_half(f.ui);
20 if(h != rh)
21 {
22 printf("Roundtrip failed: %x -> %x = %f -> %x\n", h, f.ui, f.f, rh);
23 ++roundtrip_fails;
24 }
25 }
26
27 if(roundtrip_fails)
28 printf("Failure! %u/65536 half floats failed a conversion to float and back.\n", roundtrip_fails);
29 else
30 printf("Success!\n");
31 return 0;
32 }