#include inline long lrint (double x) { long retval; __asm__ __volatile__ ("fistpl %0" : "=m" (retval) : "t" (x) : "st"); return retval; } int main() { int I = 10; long L = 20; double D = 30.6; long LD = lrint (D); printf ("Result: I=%d L=%ld D=%lf LD=%ld\n", I, L, D, LD); } // gcc: "Result: I=10 L=20 D=30.600000 LD=31" // tcc: "Result: I=10 L=20 D=30.600000 LD=-2147483648"