[PPL-devel] Re: GMP 4.2 release candidate available

Roberto Bagnara bagnara at cs.unipr.it
Tue Mar 21 19:20:42 CET 2006


Torbjorn Granlund wrote:
> There is now a GMP 4.2 release candidate available, please test it and
> report problems and successes to me (not to any GMP list).
> 
> The tar file is here:
> 
>   ftp://ftp.swox.com/pub/gmp/src/gmp-4.1.99.tar.bz2
> 
> Unless something terrible shows up, I will release GMP 4.2 tomorrow.

A bug has been introduced into the C++ interface.  This is witnessed
by the following program:

#include <gmpxx.h>

void foo(mpz_class& a,
	 const mpz_class& b, const mpz_class& c, const mpz_class& d) {
   a = b*a - c*d;
}

It does just fine with GMP 4.1.4, but with the release candidate I obtain
the following:

$ g++ -v
Reading specs from /usr/local/lib/gcc/i686-pc-linux-gnu/3.4.4/specs
Configured with: ../gcc-3.4.4/configure --prefix=/usr/local
Thread model: posix
gcc version 3.4.4
$ g++ -c bug.cc
bug.cc: In function `void foo(mpz_class&, const mpz_class&, const mpz_class&, const mpz_class&)':
bug.cc:5: error: ambiguous class template instantiation for `struct __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >'
/usr/local/include/gmpxx.h:4585: error: candidates are: class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], V>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<T, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], V>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, U, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], V>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, __gmp_expr<__mpz_struct[1], T>, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<T, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, T, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4585: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], T>, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], U>, __gmp_expr<__mpz_struct[1], V>, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<U, __gmp_expr<__mpz_struct[1], V>, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], U>, V, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], U>, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, __gmp_expr<__mpz_struct[1], U>, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<U, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, U, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:4581: error:                 class __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], T>, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >
/usr/local/include/gmpxx.h:3549: error:                 class __gmp_expr<T, __gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<T, V>, Op> >
/usr/local/include/gmpxx.h:3516: error:                 class __gmp_expr<T, __gmp_binary_expr<__gmp_expr<U, V>, __gmp_expr<T, W>, Op> >
/usr/local/include/gmpxx.h:3483: error:                 class __gmp_expr<T, __gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<V, W>, Op> >
/usr/local/include/gmpxx.h:3452: error:                 class __gmp_expr<T, __gmp_binary_expr<U, __gmp_expr<T, V>, Op> >
/usr/local/include/gmpxx.h:3425: error:                 class __gmp_expr<T, __gmp_binary_expr<__gmp_expr<T, U>, V, Op> >
bug.cc:5: error: invalid use of undefined type `struct __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >'
/usr/local/include/gmpxx.h:1885: error: declaration of `struct __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >'
/usr/local/include/gmpxx.h: In function `__gmp_expr<typename __gmp_resolve_expr<T, V>::value_type, __gmp_binary_expr<__gmp_expr<T, U>, __gmp_expr<V, W>, __gmp_binary_minus> > operator-(const __gmp_expr<T, U>&, const __gmp_expr<V, W>&) [with T = __mpz_struct[1], U = __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies>, V = __mpz_struct[1], W = __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies>]':
bug.cc:5:   instantiated from here
/usr/local/include/gmpxx.h:4898: error: return type `struct __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >' is incomplete
/usr/local/include/gmpxx.h:4898: error: invalid use of undefined type `struct __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >'
/usr/local/include/gmpxx.h:1885: error: declaration of `struct __gmp_expr<__mpz_struct[1], __gmp_binary_expr<__gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_expr<__mpz_struct[1], __gmp_binary_expr<mpz_class, mpz_class, __gmp_binary_multiplies> >, __gmp_binary_minus> >'

All the best,

    Roberto

-- 
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:bagnara at cs.unipr.it



More information about the PPL-devel mailing list