39 lines
668 B
C
39 lines
668 B
C
|
|
// gcc fl8test.c -O2 -o fl8test
|
||
|
|
#include <stdio.h>
|
||
|
|
#include <stdint.h>
|
||
|
|
#include <stdlib.h>
|
||
|
|
|
||
|
|
union fu {
|
||
|
|
float f;
|
||
|
|
uint32_t u;
|
||
|
|
};
|
||
|
|
|
||
|
|
uint32_t until = 2048;
|
||
|
|
uint32_t shift = 24;
|
||
|
|
uint32_t groupcnt = 0;
|
||
|
|
int main (int argc, char **argv) {
|
||
|
|
if(argc > 1) {
|
||
|
|
const char* arg = argv[1];
|
||
|
|
until = atoi(arg);
|
||
|
|
}
|
||
|
|
if(argc > 2) {
|
||
|
|
const char* arg = argv[2];
|
||
|
|
shift = atoi(arg);
|
||
|
|
}
|
||
|
|
|
||
|
|
uint32_t prev = (uint32_t) -1;
|
||
|
|
for(uint32_t i = 0; i < until; ++i) {
|
||
|
|
union fu fui;
|
||
|
|
fui.f = (float) i;
|
||
|
|
fui.u = (fui.u >> shift);
|
||
|
|
|
||
|
|
if(fui.u != prev) {
|
||
|
|
printf("%d -> %d\n", i, fui.u);
|
||
|
|
++groupcnt;
|
||
|
|
}
|
||
|
|
prev = fui.u;
|
||
|
|
}
|
||
|
|
|
||
|
|
printf("Until %d, there are %d groups!\n", until, groupcnt);
|
||
|
|
}
|