quakeforge/tools/qfcc/test/double-alias.r

42 lines
721 B
R

void printf (string fmt, ...) = #0;
# define M_PI 3.14159265358979323846
union {
double d;
int i[2];
} type_pun;
int alias_printf (string fmt, ...);
int
test_alias ()
{
int fail = 0;
type_pun.d = M_PI;
fail = alias_printf ("%g %08x%08x\n", type_pun.d,
type_pun.i[1], type_pun.i[0]);
return fail;
}
int
alias_printf (string fmt, ...)
{
int fail = 0;
// this will fail on big-endian systems
fail = (@args.list[2].int_val != 0x54442d18
|| @args.list[1].int_val != 0x400921fb);
printf ("%.17g %08x%08x\n",
@args.list[0].double_val,
@args.list[2].int_val,
@args.list[1].int_val);
return fail;
}
int
main ()
{
int fail = 0;
fail |= test_alias ();
return fail;
}