This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
Peter, >Date: Fri, 21 Nov 1997 12:50:37 +0000 (GMT) >From: P M Oliver <address@hidden> >Organization: DCI Systems & User Support Group, RAL >To: Steve Emmerson <address@hidden> >Subject: Re: 971117: compiling netcdf on VPP 300 >Keywords: 199711141550.IAA06528 In the above message, you wrote: > > Please pardon my ignorance, but what the heck is a vpp300? > > It's a Fujitsu Supercomputer , parallel vector, 2.2Gflops per node, 2 Gb > per node. ... > > Ouch! The above looks like a problem with your compiler environment. > > What does your systems administrator say about this problem? > > I'm the system admin and I don't say alot :-) I'll have a chat with our > fujitsu friends ... > > Interesting. That constant was carefully chosen to be a valid > > floating-point value on IEEE systems (which, apparently, the vpp300 > > is). I note, however, that FLT_MAX on our SunOS 5.6 system is > > 3.402823466E+38F -- a slightly smaller value. One possible cause for > > the warning is that the vcc compiler uses an algorithm for converting > > a decimal floating-point value into a binary one that is slightly > > different than that of most IEEE machines. > > > > I suggest manually modifying the file libsrc/ncx.h: change the line > > > > #define X_FLOAT_MAX 3.40282347e+38f > > > > to > > > > #define X_FLOAT_MAX 3.402823466e+38f > > > > or even > > > > #define X_FLOAT_MAX 3.40282346e+38f > > > > and excute the command "make" in the libsrc/ directory. Does the > > warning dissapear? > > Yep , but I had to be a bit more forceful ie force FLT_MAX > 3.40282346e+38f else it kept using the one in /usr/include/float.h set to > 3.40282347e+38f ... > > Interesting! Would you please go into the libsrc directory, execute > > the following test program, and send me the output: > > > > #include <stddef.h> > > #include "ncx.h" > > > > void > > main() > > { > > ptrdiff_t stride = -1; > > > > puts((unsigned long)stride >= X_INT_MAX > > ? "(unsigned long)(ptrdiff_t)-1 >= X_INT_MAX" > > : "(unsigned long)(ptrdiff_t)-1 < X_INT_MAX"); > > } > > > > It should print the first string. > > Yep, OK here > > (unsigned long)(ptrdiff_t)-1 >= X_INT_MAX ... Hmmm... What's the size (in bytes) of the C type "ptrdiff_t" on the system? Would you please send me the "typedef" declaration of "ptrdiff_t". -------- Steve Emmerson <http://www.unidata.ucar.edu>