/* * This test checks conversions from floating point values to small * unsigned integer values. Conversions to uint32_t need special handling * on Sparc V9, which only has FP-to-int32_t and FP-to-int64_t instructions. */ #include #include static double getDC(), getDS(), getDI(); int main(int argc, char** argv) { double DC = getDC(); double DS = getDS(); double DI = getDI(); unsigned char uc = (unsigned char ) DC; unsigned short us = (unsigned short) DS; unsigned int ui = (unsigned int ) DI; printf("DC = %lf, DS = %lf, DI = %lf\n", DC, DS, DI); printf("uc = %u, us = %u, ui = %u\n", uc, us, ui); return 0; } static double getDC() { return (double) ((1L << 8) - 16L ); } static double getDS() { return (double) ((1LL << 16) - 16L ); } static double getDI() { return (double) ((1LL << 32) - 16LL); }