#include #include typedef long double _Complex ldc; typedef long double ld; #include void px(ld r){ typedef union{ld v; struct{int a; int b; int c; int d;} fs;} ww; ww x; x.v = r; printf("%Le %04x %08x%08x; ", r, 0xffff&x.fs.c, x.fs.b, x.fs.a);} void p(ldc x, char * s) {px(__real__ x); px(__imag__ x); printf(" %s\n", s);} int main(){ ldc t = 3i, r = csqrtl(t), r2 = r*r; p(t, "t"); p(r, "r"); p(r2, "r2"); return 0;} // gcc tld.c -Wmost -std=c99 /* => 0.000000e+00 0000 0000000000000000; 3.000000e+00 4000 c000000000000000; t 1.224745e+00 3fff 9cc470a0490973e8; 1.224745e+00 3fff 9cc470a0490973e8; r 0.000000e+00 0000 0000000000000000; 3.000000e+00 4000 c000000000000000; r2 For code at : 0.000000e+00 0000 0000000000000000; 3.000000e+00 4000 c000000000000000; t 1.224745e+00 3fff 9cc470a0490973e8; 1.224745e+00 3fff 9cc470a0490973e8; r 0.000000e+00 0000 0000000000000000; 3.000000e+00 4000 c000000000000000; r2 */