#include #include #include double d(uint32_t x) { return x * 10.73741824; } float f(uint32_t x) { return x * 10.73741824; } int32_t i32(uint32_t x) { uint64_t tmp; tmp = x * 5764607523ULL + (1ULL << 28); return tmp >> 29; } main() { int32_t i; double err, max_err; max_err = 0; for (i = 1; i < 200000000; i++) { err = fabs(d(i) - i32(i)); if (err > max_err) max_err = err; } printf("max. Fehler mit int: %f\n", max_err); max_err = 0; for (i = 1; i < 200000000; i++) { err = fabs(d(i) - f(i)); if (err > max_err) max_err = err; } printf("max. Fehler mit 32 bit float: %f\n", max_err); }