#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>


union foo
{
    int32_t i;
    float f;
};


void compare (const union foo * lo,
              const union foo * hi)
{
	bool success = (lo->f) < (hi->f);
	if (!success)
		printf ("lo:%x:%f hi:%x:%f\n", lo->i, lo->f, hi->i, hi->f);
}


bool is_special_case (int32_t value)
{
	static const int32_t special = (int32_t)0xFF << 23;
	return (value & special) == special;
}


int main(void)
{

	for (int32_t i = 0; i < INT32_MAX - 1; ++i)
	{
		bool special = is_special_case (i);
		if (special)
			continue;
			
		union foo lo = {.i = i};
		union foo hi = {.i = i + 1};
		
		compare (&lo, &hi);
	}
	
}
