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

20021121: WWDISP on OSF/1 4.0 (cont.)



>From: "Alliss, Randall J." <address@hidden>
>Organization: TASC
>Keywords: 200211192100.gAJL0r414300 McIDAS WWDISP OSF/1

Randy,

re:
>i get a floating point error when running the following command on my
>DEC-ALPHA running OSF1 4.0
>
>WWDISP USA 1
>
>on the SSEC version i do not get the same error. any clues?

I got a chance to look into this today.  The fact that you don't get the
floating point error using the SSEC version turns out to be, quite frankly,
pure luck.  The problem is that the array 'mapparms' defined and used
in the procedure 'M0SetMapNav' do not get assigned values for MERCator
projection maps.  This array of numbers is passed to the Fortran routine
mapsav.for that bombs when it executes:

      IF(I.LT.4) IARR(I+29)=IROUND(PARMS(I)*10000)

(PARMS in mapsav.for is the array mapparms passed from wwdisp.c).  Since
C does not initialize variables, the value of mapparms/PARMS is semi-random.

The fix to this problem is setting all mapparms values to zero in their
declaration in wwdisp.c:

<login as 'mcidas'>
cd mcidas2002/src

edit wwdisp.c and:

change:

static int
  M0SetMapNav (
    int        nav_frame,
    int        frame,
    const char *map,
    const char *projection,
    int        *screen_domain)
{
  float        mapdeflatlon[4];                   /* map lat/lon definitions */
  float        mapparms[4]=;                      /* definitions for conf

to:

static int
  M0SetMapNav (
    int        nav_frame,
    int        frame,
    const char *map,
    const char *projection,
    int        *screen_domain)
{
  float        mapdeflatlon[4];                   /* map lat/lon definitions */
  /* <<<<< UPC mod 20021121 - default mapparms values >>>>> */
  float        mapparms[4]={0.0,0.0,0.0,0.0};     /* definitions for conf

After making this change, rebuild and reinstall wwdisp.k:

make wwdisp.k
rm ~/bin/wwdisp.k
ln wwdisp.k ~/bin

Please let me know your results after making the change to wwdisp.c and
remaking its executable.

Tom