[comp.unix.xenix] long -> double conversions buggy?

cck@deneb.ucdavis.edu (Earl H. Kinmonth) (06/10/89)

Under SCO Xenix 286 assignment of a very large unsigned long
value to a double results in a negative value.  The same code on
a SUN and a VAX works properly.  So far the only way I've found
to get a proper assignment is

	char	barf[32];
	double	atof();
	double	d_biggie;
	unsigned	long	l_biggie;
	l_biggie = /* some expression */
	sprintf(barf,"%lu",l_biggie);
	d_biggie = atof(barf);

Am I missing something, or is the compiler generating bad code
for assignments of unsigned large to double?  (Casts don't
help.)

Earl H. Kinmonth
History Department
University of California, Davis
Davis, California  95616
916-752-1636 (2300-0800 PDT for FAX)
916-752-0776 (secretary)
ucbvax!ucdavis!ucdked!cck (email)
cc-dnet.ucdavis.edu [128.120.2.251]
	(request ucdked, login as guest)