float: , double: , \
    long double: , unsigned int: , \
    unsigned long: , unsigned long long: , \
    int: , long: , long long: , \
    default: )


            I * (long double)(y)))


    printf(FMTSPEC(i), i), printf(), printf(FMTSPEC(j), j), \
    printf(, (isint(CMPPARTS(i, j))? : ))


    printf(FMTSPEC(i), i), printf(, (isint(i)? : ))


static inline int isint(long double complex n)
{
    return cimagl(n) == 0 && nearbyintl(creall(n)) == creall(n);
}

int main(void)
{
    TEST_REAL(0);
    TEST_REAL(-0);
    TEST_REAL(-2);
    TEST_REAL(-2.00000000000001);
    TEST_REAL(5);
    TEST_REAL(7.3333333333333);
    TEST_REAL(3.141592653589);
    TEST_REAL(-9.223372036854776e18);
    TEST_REAL(5e-324);
    TEST_REAL(NAN);
    TEST_CMPL(6, 0);
    TEST_CMPL(0, 1);
    TEST_CMPL(0, 0);
    TEST_CMPL(3.4, 0);

    
    double complex test1 = 5 + 0*I,
                   test2 = 3.4f,
                   test3 = 3,
                   test4 = 0 + 1.2*I;

    printf(, isint(test1) ?  : );
    printf(, isint(test2) ?  : );
    printf(, isint(test3) ?  : );
    printf(, isint(test4) ?  : );
}