[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: GCL/maxima/axiom/acl2, denormalized floats, and alpha



Greetings, and thanks for the feedback!

#include <stdio.h>

typedef union {
	float f;
	int i;
} U;

static void t(double d) {
	printf("%e\n",d);
}

int main() {
	U u;

	u.i=1;
	printf("%he\n",u.f);
	t((double)u.f);
	return 0;

}

./tt
Good:
1.401298e-45
1.401298e-45

Bad:
2.652495e-315
2.652495e-315

uname -a
Linux alf 2.6.17.11 #2 Wed Aug 30 10:01:12 CEST 2006 alpha GNU/Linux
cc -v
Using built-in specs.
Target: alpha-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release alpha-linux-gnu
Thread model: posix
gcc version 4.1.2 20060901 (prerelease) (Debian 4.1.1-13)

-mieee does not help.  In gdb, u.f is the right number, but gets
 corrupted on function call.

Take care,


Falk Hueffner <falk@debian.org> writes:

> Camm Maguire <camm@enhanced.com> writes:
> 
> > Casting the smallest denormalized shortfloat to a double in a function
> > argument is destroying the number in the callee.  Do you know of a
> > workaround? 
> 
> What kind of machine is this on? Might also be a kernel bug. Do you
> have a stand-alone testcase?
> 
> -- 
> 	Falk
> 
> 
> 

-- 
Camm Maguire			     			camm@enhanced.com
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah



Reply to: