Technical data

Cray Standard C Extensions [5]
0x7f7fffff.f 32-bit float
0x0123456789012345. 64-bit double
The value of a hexadecimal floating constant is interpreted as a value in the
specified floating type. This uses an unsigned integral type of the same size as
the floating type, regardless of whether an object can be explicitly declared
with such a type. No conversion or range checking is performed. The resulting
floating value is defined in the same way as the result of accessing a member
of floating type in a union after a value has been stored in a different member
of integral type.
The following example illustrates hexadecimal floating-point constant
representation on UNICOS systems that use Cray floating-point format:
float f=0x3ffe800000000000.f;
double g=0xffffffffffffffff.;
main()
{
printf("f = 0x%16x.f == %g\n", f, f);
printf("g = 0x%16x. == %g\n", g, g);
}
The output from the preceding code is as follows:
f = 0x3ffe800000000000.f == 0.125
g = 0xffffffffffffffff. == *.00000
S217936 107