[Pkg-scicomp-devel] Bug#430303: Bug#430303: ldbl128 transition for alpha, powerpc, sparc, s390
Rafael Laboissiere
rafael at debian.org
Sun Jun 24 15:26:24 UTC 2007
* Matthias Klose <doko at cs.tu-berlin.de> [2007-06-23 15:48]:
> Package: libsundials-serial-dev
> Severity: serious
> User: debian-release at lists.debian.org
> Usertags: goal-ldbl128
>
> Discussed in http://lists.debian.org/debian-devel/2007/05/msg01173.html
>
> With glibc-2.5 and gcc-4.1.2 (and gcc-4.2), the 'long double'
> data type did change from a 64bit representation to a 128bit
> representation on alpha, powerpc, sparc, s390. To allow
> partial upgrades of packages, we will need to rename all
> packages holding libraries with the long double data type in
> their API. Both libc and libstdc++ do not need to be renamed,
> because they support both representations. We rename the library
> packages on all architectures to avoid name mismatches between
> architectures (you can avoid the renaming by supporting both
> datatype representations in the library as done in glibc and
> libstdc++, but unless a library is prepared for that, it does not
> seem to be worth the effort).
>
> It is suggested to rename a package libfoo1 to libfoo1ldbl;
> please wait with the renaming if the package depends on
> another library package which needs renaming.
>
> This package has been indentified as one with header files in
> /usr/include matching 'long *double'. Please close this bug report
> if it is a false positive, or rename the package accordingly.
I think that this bug report filed against libsundials-serial-dev is a false
positive. It was probably triggered by the presence of the "long double"
string in /usr/include/sundials/sundials_types.h. The relevant part of this
file is:
########## [snip] ###################################
#if defined(SUNDIALS_SINGLE_PRECISION)
typedef float realtype;
#define RCONST(x) x##F
#define BIG_REAL FLT_MAX
#define SMALL_REAL FLT_MIN
#define UNIT_ROUNDOFF FLT_EPSILON
#elif defined(SUNDIALS_DOUBLE_PRECISION)
typedef double realtype;
#define RCONST(x) x
#define BIG_REAL DBL_MAX
#define SMALL_REAL DBL_MIN
#define UNIT_ROUNDOFF DBL_EPSILON
#elif defined(SUNDIALS_EXTENDED_PRECISION)
typedef long double realtype;
#define RCONST(x) x##L
#define BIG_REAL LDBL_MAX
#define SMALL_REAL LDBL_MIN
#define UNIT_ROUNDOFF LDBL_EPSILON
#endif
########## [snip] ###################################
The macro variables above are chosen by configure according to the
--with-precision flag:
$ ./configure --help| grep '\(precision\|extended\)'
--with-precision=ARG specify floating-point precision
(single/double/extended) [double]
whose value defaults to "double". As debian/rules does not set the flag
above:
$ grep FLAG debian/rules
DEB_CONFIGURE_EXTRA_FLAGS := --enable-shared --enable-fortran --disable-mpi --enable-examples
we end up with the following:
$ grep PRECISION /usr/include/sundials/sundials_config.h
#define SUNDIALS_DOUBLE_PRECISION 1
This means that there will be no "long double" declaration in the
libsundials-serial headers.
If nobody objects, I will close this bug report soon.
--
Rafael
More information about the Pkg-scicomp-devel
mailing list