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

Re: 980205: Error message... configure fails on CONVEX



> Juan:
>
> Just to be scientific,
> we will need to isolate whether this is a problem with the netcdf library,
> or with ncdump, and whether the problem is on the Convex or the HP.
>
> You say you were sucessful in compiling the library on the Convex.
> Were you able to successfully run the netcdf tests on the Convex?
> This is done by running 'make test' in the src directory.
> The tests in libsrc an nctest partial check that the binary form
> of the files is what it should be, and there is extensive cross checking
> of ncdump/ncgen.
>
> Looking at your symptoms, I'm wondering if the system problem that caused
> 'configure' to fail is causing some other problems.
>
> Can you send me a copy of the following files from your system
> /usr/include/float.h (if it exists)
> /usr/include/limits.h
>
> -glenn

    Glenn:

    We ran the FORTRAN tests and they worked ok. The other tests did not work
because ncgen was not compiled. The CONVEX does not have the values.h file ! We
read the files which we created on CONVEX on HP (netcdf.2.4.3) and Linux
(netcdf
3.3.1) and they produced the same factor of 4.  Thus we are confidant that it
is
not an HP problem

In the meantime we discovered the -fi option on all CONVEX compilers. They
transform all floats into standard IEEE. Once netCDF is compiled with this
option
all works fine and we are able to use the netCDF files on all other machines.

Once -fi is used configure detects that it has to compile on a IEEE machine.
Thus
there is no need anymore to take out the #define NO_IEEE_FLOAT flag. There is
some
logic to this. The native format of the CONVEX is not a true IEEE and the
difference is probabaly this factor of 4.

We perhaps can live with the -fi option if it does not make to code much
slower.
That still has to be tested ! In any case if netCDF shoud compile with the
native
CONVEX format then probably a ncx_convex.c is needed.

    Juan
--
_______________________________________________________________________________
JUAN ANTONIO PREGO ORTIZ                     mailto:<address@hidden>
http://www.ucm.es/info/Geofis/gmat/                 talk address@hidden
-------------------------------------------------------------------------------
DEPARTAMENTO DE GEOFÍSICA Y METEOROLOGÍA
Facultad de Ciencias Físicas. Universidad Complutense de Madrid
CIUDAD UNIVERSITARIA. 28040 MADRID (SPAIN)
-------------------------------------------------------------------------------
LABORATORIO DE METEOROLOGÍA (122.0)
Phone: + 34 - 1 - 394 - 4513                         Fax: + 34 - 1 - 394 - 4398


[ text/plain ] :

/*
 * $CHeader: limits.h 0.1 93/01/07 10:35:55 $
 * Copyright 1985-1993 Convex Computer Corp.
 */

#ifndef __LIMITS_H_SEEN
#define __LIMITS_H_SEEN

#define         CHAR_BIT        (8)     /* # bits in char */
#define         SCHAR_MIN       (-128)  /* minimum value for char */
#define         SCHAR_MAX       (127)   /* maximum value for char */
#define         UCHAR_MAX       (255)   /* maximum value for unsigned char */
#define         CHAR_MIN        (-128)  /* our minimum value for char */
#define         CHAR_MAX        (127)   /* our maximum value for char */
#define         MB_LEN_MAX      (1)     /* maximum # bytes in multibyte char */
#define         SHRT_MIN        (-32768)/* minimum value of short int */
#define         SHRT_MAX        (32767) /* maximum value of short int */
#define         USHRT_MAX       (65535) /* maximum value of unsg short int */
#define         INT_MAX         ( 2147483647) /* maximum value of int */
/* minimum value of int,  as a constant expression which doesn't overflow */
#define         INT_MIN         (-INT_MAX - 1)
#define         UINT_MAX        (4294967295U) /* maximum value of uns */
#define         LONG_MAX        (2147483647L)  /* maximum value of long */
/* minimum value of long,  as a constant expression which doesn't overflow */
#define         LONG_MIN        (-LONG_MAX - 1L)
#define         ULONG_MAX       (4294967295UL)  /* maximum value of uns long */
#define         SSIZE_MAX       INT_MAX /* maximum value of an ssize_t */

#ifdef _CONVEX_SOURCE
#  define       LONG_LONG_MAX   (9223372036854775807LL)
#  define       LONG_LONG_MIN   (-LONG_LONG_MAX - 1LL)
#  define       ULONG_LONG_MAX  (18446744073709551615ULL)
#endif

#ifdef _POSIX_SOURCE
#   include <sys/limits.h>
#endif

#endif  /* __LIMIT_H_SEEN */

[ text/plain ] :

/*      $CHeader: float.h 0.2 92/04/23 08:26:53 $       */
/*      Copyright 1990 Convex Computer Corp.    */
#ifndef __FLOAT_H_SEEN
#define __FLOAT_H_SEEN

/*
 * IEEE and native modes behave differently.
 */

#if _IEEE_FLOAT_

    /*
     * The IEEE exponent range is not symmetric (min != -max) since the
     * implied 1 is to the LEFT of the implied decimal point.
     */
#   define FLT_MIN_EXP          (-125)
#   define DBL_MIN_EXP          (-1021)
#   define LDBL_MIN_EXP         (-1021)
#   define FLT_MAX_EXP          (128)
#   define DBL_MAX_EXP          (1024)
#   define LDBL_MAX_EXP         (1024)

#   define FLT_MIN_10_EXP       (-37)
#   define DBL_MIN_10_EXP       (-307)
#   define LDBL_MIN_10_EXP      (-307)

#   define FLT_MAX_10_EXP       (38)
#   define DBL_MAX_10_EXP       (308)
#   define LDBL_MAX_10_EXP      (308)

#   if defined(lint) || defined(__lint)
        /*
         * For linting purposes we defined these constants this way, so
         * that lint does not generate any annoying warning messages.
         */
#       define FLT_MAX         3.402823e+38
#       define DBL_MAX         1.797693e+308
#       define LDBL_MAX        1.797693e+308
#       define FLT_MIN         1.175494e-38
#       define DBL_MIN         2.225074e-308
#       define LDBL_MIN        2.225074e-308
#       define FLT_EPSILON     1.192093e-07
#       define DBL_EPSILON     2.220446e-16
#       define LDBL_EPSILON    2.220446e-16
#   else
        /*
         * These identifiers are internal to the implementation -
         * use by applications is not supported
         */
        static const unsigned int __spmin = 0x00800000;
        static const unsigned int __spmax = 0x7f7fffff;
        static const unsigned int __dpmin[2] = {0x00100000, 0};
        static const unsigned int __dpmax[2] = {0x7fefffff, 0xffffffff};
        static const unsigned int __spepsilon = 0x34000000;
        static const unsigned int __dpepsilon[2] = {0x3cb00000,0};
        /****** END INTERNAL ******/
#   endif

#else

#   define FLT_MIN_EXP          (-127)
#   define DBL_MIN_EXP          (-1023)
#   define LDBL_MIN_EXP         (-1023)
#   define FLT_MAX_EXP          (127)
#   define DBL_MAX_EXP          (1023)
#   define LDBL_MAX_EXP         (1023)

#   define FLT_MIN_10_EXP       (-38)
#   define DBL_MIN_10_EXP       (-308)
#   define LDBL_MIN_10_EXP      (-308)

#   define FLT_MAX_10_EXP       (38)
#   define DBL_MAX_10_EXP       (307)
#   define LDBL_MAX_10_EXP      (307)


#   if defined(lint) || defined(__lint)
        /*
         * For linting purposes we defined these constants this way, so
         * that lint does not generate any annoying warning messages.
         */
#       define FLT_MAX         1.701412e+38
#       define DBL_MAX         8.988466e+307
#       define LDBL_MAX        8.988466e+307
#       define FLT_MIN         2.938736e-39
#       define DBL_MIN         5.562685e-309
#       define LDBL_MIN        5.562685e-309
#       define FLT_EPSILON     1.192093e-07
#       define DBL_EPSILON     2.220446e-16
#       define LDBL_EPSILON    2.220446e-16
#   else
        /*
         * These identifiers are internal to the implementation -
         * use by applications is not supported
         */
        static const unsigned int __spmin = 0x00800000;
        static const unsigned int __spmax = 0x7fffffff;
        static const unsigned int __dpmin[2] = {0x00100000, 0};
        static const unsigned int __dpmax[2] = {0x7fffffff, 0xffffffff};
        static const unsigned int __spepsilon = 0x35000000;
        static const unsigned int __dpepsilon[2] = {0x3cd00000,0};
        /****** END INTERNAL ******/
#   endif

#endif

#define FLT_ROUNDS      (1)     /* rounds to nearest */
#define FLT_RADIX       (2)
#define FLT_MANT_DIG    (24)
#define DBL_MANT_DIG    (53)
#define LDBL_MANT_DIG   DBL_MANT_DIG
#define FLT_DIG         (6)
#define DBL_DIG         (15)
#define LDBL_DIG        (15)

#if !defined(lint) && !defined(__lint)
#   define FLT_MAX      (*(float *)(void *)& __spmax)
#   define DBL_MAX      (*(double *)(void *) __dpmax)
#   define LDBL_MAX     (*(long double *)(void *)__dpmax)
#   define FLT_EPSILON  (*(float *)(void *)&__spepsilon)
#   define DBL_EPSILON  (*(double *)(void *)__dpepsilon)
#   define LDBL_EPSILON (*(long double *)(void *)__dpepsilon)
#   define FLT_MIN      (*(float *)(void *)&__spmin)
#   define DBL_MIN      (*(double *)(void *)__dpmin)
#   define LDBL_MIN     (*(long double *)(void *)__dpmin)
#endif

#endif  /* __FLOAT_H_SEEN */
> Juan:
>
> Just to be scientific,
> we will need to isolate whether this is a problem with the netcdf library,
> or with ncdump, and whether the problem is on the Convex or the HP.
>
> You say you were sucessful in compiling the library on the Convex.
> Were you able to successfully run the netcdf tests on the Convex?
> This is done by running 'make test' in the src directory.
> The tests in libsrc an nctest partial check that the binary form
> of the files is what it should be, and there is extensive cross checking
> of ncdump/ncgen.
>
> Looking at your symptoms, I'm wondering if the system problem that caused
> 'configure' to fail is causing some other problems.
>
> Can you send me a copy of the following files from your system
> /usr/include/float.h (if it exists)
> /usr/include/limits.h
>
> -glenn

    Glenn:

    We ran the FORTRAN tests and they worked ok. The other tests did not work
because ncgen was not compiled. The CONVEX does not have the values.h file ! We
read the files which we created on CONVEX on HP (netcdf.2.4.3) and Linux (netcdf
3.3.1) and they produced the same factor of 4.  Thus we are confidant that it is
not an HP problem

In the meantime we discovered the -fi option on all CONVEX compilers. They
transform all floats into standard IEEE. Once netCDF is compiled with this 
option
all works fine and we are able to use the netCDF files on all other machines.

Once -fi is used configure detects that it has to compile on a IEEE machine. 
Thus
there is no need anymore to take out the #define NO_IEEE_FLOAT flag. There is 
some
logic to this. The native format of the CONVEX is not a true IEEE and the
difference is probabaly this factor of 4.

We perhaps can live with the -fi option if it does not make to code much slower.
That still has to be tested ! In any case if netCDF shoud compile with the 
native
CONVEX format then probably a ncx_convex.c is needed.

    Juan
--
_______________________________________________________________________________
JUAN ANTONIO PREGO ORTIZ                     mailto:<address@hidden>
http://www.ucm.es/info/Geofis/gmat/                 talk address@hidden
-------------------------------------------------------------------------------
DEPARTAMENTO DE GEOFÍSICA Y METEOROLOGÍA
Facultad de Ciencias Físicas. Universidad Complutense de Madrid
CIUDAD UNIVERSITARIA. 28040 MADRID (SPAIN)
-------------------------------------------------------------------------------
LABORATORIO DE METEOROLOGÍA (122.0)
Phone: + 34 - 1 - 394 - 4513                         Fax: + 34 - 1 - 394 - 4398

/*
 * $CHeader: limits.h 0.1 93/01/07 10:35:55 $
 * Copyright 1985-1993 Convex Computer Corp.
 */

#ifndef __LIMITS_H_SEEN
#define __LIMITS_H_SEEN

#define         CHAR_BIT        (8)     /* # bits in char */
#define         SCHAR_MIN       (-128)  /* minimum value for char */
#define         SCHAR_MAX       (127)   /* maximum value for char */
#define         UCHAR_MAX       (255)   /* maximum value for unsigned char */
#define         CHAR_MIN        (-128)  /* our minimum value for char */
#define         CHAR_MAX        (127)   /* our maximum value for char */
#define         MB_LEN_MAX      (1)     /* maximum # bytes in multibyte char */
#define         SHRT_MIN        (-32768)/* minimum value of short int */
#define         SHRT_MAX        (32767) /* maximum value of short int */
#define         USHRT_MAX       (65535) /* maximum value of unsg short int */
#define         INT_MAX         ( 2147483647) /* maximum value of int */
/* minimum value of int,  as a constant expression which doesn't overflow */
#define         INT_MIN         (-INT_MAX - 1)
#define         UINT_MAX        (4294967295U) /* maximum value of uns */
#define         LONG_MAX        (2147483647L)  /* maximum value of long */
/* minimum value of long,  as a constant expression which doesn't overflow */
#define         LONG_MIN        (-LONG_MAX - 1L)
#define         ULONG_MAX       (4294967295UL)  /* maximum value of uns long */
#define         SSIZE_MAX       INT_MAX /* maximum value of an ssize_t */

#ifdef _CONVEX_SOURCE
#  define       LONG_LONG_MAX   (9223372036854775807LL)
#  define       LONG_LONG_MIN   (-LONG_LONG_MAX - 1LL)
#  define       ULONG_LONG_MAX  (18446744073709551615ULL)
#endif

#ifdef _POSIX_SOURCE
#   include <sys/limits.h>
#endif

#endif  /* __LIMIT_H_SEEN */
/*      $CHeader: float.h 0.2 92/04/23 08:26:53 $       */
/*      Copyright 1990 Convex Computer Corp.    */
#ifndef __FLOAT_H_SEEN
#define __FLOAT_H_SEEN

/*
 * IEEE and native modes behave differently.
 */

#if _IEEE_FLOAT_

    /*
     * The IEEE exponent range is not symmetric (min != -max) since the
     * implied 1 is to the LEFT of the implied decimal point.
     */
#   define FLT_MIN_EXP          (-125)
#   define DBL_MIN_EXP          (-1021)
#   define LDBL_MIN_EXP         (-1021)
#   define FLT_MAX_EXP          (128)
#   define DBL_MAX_EXP          (1024)
#   define LDBL_MAX_EXP         (1024)

#   define FLT_MIN_10_EXP       (-37)
#   define DBL_MIN_10_EXP       (-307)
#   define LDBL_MIN_10_EXP      (-307)

#   define FLT_MAX_10_EXP       (38)
#   define DBL_MAX_10_EXP       (308)
#   define LDBL_MAX_10_EXP      (308)

#   if defined(lint) || defined(__lint)
        /*
         * For linting purposes we defined these constants this way, so
         * that lint does not generate any annoying warning messages.
         */
#       define FLT_MAX         3.402823e+38
#       define DBL_MAX         1.797693e+308
#       define LDBL_MAX        1.797693e+308
#       define FLT_MIN         1.175494e-38
#       define DBL_MIN         2.225074e-308
#       define LDBL_MIN        2.225074e-308
#       define FLT_EPSILON     1.192093e-07
#       define DBL_EPSILON     2.220446e-16
#       define LDBL_EPSILON    2.220446e-16
#   else
        /*
         * These identifiers are internal to the implementation -
         * use by applications is not supported
         */
        static const unsigned int __spmin = 0x00800000;
        static const unsigned int __spmax = 0x7f7fffff;
        static const unsigned int __dpmin[2] = {0x00100000, 0};
        static const unsigned int __dpmax[2] = {0x7fefffff, 0xffffffff};
        static const unsigned int __spepsilon = 0x34000000;
        static const unsigned int __dpepsilon[2] = {0x3cb00000,0};
        /****** END INTERNAL ******/
#   endif

#else

#   define FLT_MIN_EXP          (-127)
#   define DBL_MIN_EXP          (-1023)
#   define LDBL_MIN_EXP         (-1023)
#   define FLT_MAX_EXP          (127)
#   define DBL_MAX_EXP          (1023)
#   define LDBL_MAX_EXP         (1023)

#   define FLT_MIN_10_EXP       (-38)
#   define DBL_MIN_10_EXP       (-308)
#   define LDBL_MIN_10_EXP      (-308)

#   define FLT_MAX_10_EXP       (38)
#   define DBL_MAX_10_EXP       (307)
#   define LDBL_MAX_10_EXP      (307)


#   if defined(lint) || defined(__lint)
        /*
         * For linting purposes we defined these constants this way, so
         * that lint does not generate any annoying warning messages.
         */
#       define FLT_MAX         1.701412e+38
#       define DBL_MAX         8.988466e+307
#       define LDBL_MAX        8.988466e+307
#       define FLT_MIN         2.938736e-39
#       define DBL_MIN         5.562685e-309
#       define LDBL_MIN        5.562685e-309
#       define FLT_EPSILON     1.192093e-07
#       define DBL_EPSILON     2.220446e-16
#       define LDBL_EPSILON    2.220446e-16
#   else
        /*
         * These identifiers are internal to the implementation -
         * use by applications is not supported
         */
        static const unsigned int __spmin = 0x00800000;
        static const unsigned int __spmax = 0x7fffffff;
        static const unsigned int __dpmin[2] = {0x00100000, 0};
        static const unsigned int __dpmax[2] = {0x7fffffff, 0xffffffff};
        static const unsigned int __spepsilon = 0x35000000;
        static const unsigned int __dpepsilon[2] = {0x3cd00000,0};
        /****** END INTERNAL ******/
#   endif

#endif

#define FLT_ROUNDS      (1)     /* rounds to nearest */
#define FLT_RADIX       (2)
#define FLT_MANT_DIG    (24)
#define DBL_MANT_DIG    (53)
#define LDBL_MANT_DIG   DBL_MANT_DIG
#define FLT_DIG         (6)
#define DBL_DIG         (15)
#define LDBL_DIG        (15)

#if !defined(lint) && !defined(__lint)
#   define FLT_MAX      (*(float *)(void *)& __spmax)
#   define DBL_MAX      (*(double *)(void *) __dpmax)
#   define LDBL_MAX     (*(long double *)(void *)__dpmax)
#   define FLT_EPSILON  (*(float *)(void *)&__spepsilon)
#   define DBL_EPSILON  (*(double *)(void *)__dpepsilon)
#   define LDBL_EPSILON (*(long double *)(void *)__dpepsilon)
#   define FLT_MIN      (*(float *)(void *)&__spmin)
#   define DBL_MIN      (*(double *)(void *)__dpmin)
#   define LDBL_MIN     (*(long double *)(void *)__dpmin)
#endif

#endif  /* __FLOAT_H_SEEN */