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

Re: 20000214: netcdf problems on a Fujitsu VPP 300



Gottfried,

> To: address@hidden
> From: Gottfried Necker <address@hidden>
> Subject: netcdf problems on a Fujitsu VPP 300
> Organization: .
> Keywords: 200002141459.HAA10261

In the above message, you wrote:

> I'am trying to compile netcdf 3.4/3.5 on a Fujitsu VPP 300. So far
> compilation works fine and most tests (all the C tests) seem to be ok,
> with one important exeception: The tests in src/nf_test fail with a
> floating point exception: the command nf_test -c aborts with a core
> dump.
> 
> After some debugging, I found the reason: the Fortran runtime
> environment enables floating point traps. The C enviroment does not!
> In nf_test.F the C function ncx_put_int_double (in ncx.c) is called
> with an argument of *ip = 2147483648. This is too much for a 32-bit
> integer and results in a floating point exception.
> Take a look at the code. The error probably occurs in the first line
> of the function body.
> 
> int
> ncx_put_int_double(void *xp, const double *ip)
> {
>       ix_int xx = (ix_int)(*ip);
>       put_ix_int(xp, &xx);
>       if(*ip > X_INT_MAX || *ip < X_INT_MIN)
>               return NC_ERANGE;
>       return ENOERR;
> }

I'm sure that your netCDF library has been built correctly.  The problem
you've uncovered is due to a portability problem with our Fortran
testing routines: there's no portable way, in Fortran, to disable
floating-point exceptions.  I suggest that you simply install the netCDF
libary and use it.

>  Change the code in ncx.c and maybe some other places. That's probably
>  the cleanest way, but might have some unwanted side effects.

We don't wan't to arbitrarily change the way the user's environment
handles floating-point exceptions.

Regards,
Steve Emmerson   <http://www.unidata.ucar.edu>