---------- Forwarded message ----------
From: Wojciech Izykowski <wizykow...@gmail.com>
Date: 6 December 2012 17:13
Subject: Bug in gmpxx.h (MPIR 2.6.0)
To: thempirt...@gmail.com


In MPIR 2.6.0 gmpxx.h file (lines 1589-1599)

#ifdef MPIRXX_HAVE_LLONG
  __gmp_expr(signed long long int l) { mpz_init_set_si(mp, l); }
  __gmp_expr(unsigned long long int  l) { mpz_init_set_ui(mp, l); }
#endif

#if defined( _MSC_VER ) && _MSC_VER >= 1600
#if defined( _STDINT_H ) || defined ( _STDINT_H_ ) || defined ( _STDINT )
  __gmp_expr(intmax_t l) { mpz_init_set_sx(mp, l); }
  __gmp_expr(uintmax_t l) { mpz_init_set_ux(mp, l); }
#endif
#endif

should be

#ifdef MPIRXX_HAVE_LLONG
  __gmp_expr(signed long long int l) { mpz_init_set_si(mp, l); }
  __gmp_expr(unsigned long long int  l) { mpz_init_set_ui(mp, l); }
#else
#if defined( _MSC_VER ) && _MSC_VER >= 1600
#if defined( _STDINT_H ) || defined ( _STDINT_H_ ) || defined ( _STDINT )
  __gmp_expr(intmax_t l) { mpz_init_set_sx(mp, l); }
  __gmp_expr(uintmax_t l) { mpz_init_set_ux(mp, l); }
#endif
#endif
#endif

Rationale: intmax_t might be signed long long int and uintmax_t might be
unsigned long long int and then we get Visual C++ compiler error 'member
function already declared'.

Similarly, lines 1660-1670: it is:

#ifdef MPIRXX_HAVE_LLONG
  __gmp_expr & operator=(signed long long int i) { mpz_set_si(mp, i);
return *this; }
  __gmp_expr & operator=(unsigned long long int i) { mpz_set_ui(mp, i);
return *this; }
#endif

#if defined( _MSC_VER ) && _MSC_VER >= 1600
#if defined( _STDINT_H ) || defined ( _STDINT_H_ ) || defined ( _STDINT )
  __gmp_expr & operator=(intmax_t i) { mpz_set_sx(mp, i); return *this; }
  __gmp_expr & operator=(uintmax_t i) { mpz_set_ux(mp, i); return *this; }
#endif
#endif

it should be

#ifdef MPIRXX_HAVE_LLONG
  __gmp_expr & operator=(signed long long int i) { mpz_set_si(mp, i);
return *this; }
  __gmp_expr & operator=(unsigned long long int i) { mpz_set_ui(mp, i);
return *this; }
#else
#if defined( _MSC_VER ) && _MSC_VER >= 1600
#if defined( _STDINT_H ) || defined ( _STDINT_H_ ) || defined ( _STDINT )
  __gmp_expr & operator=(intmax_t i) { mpz_set_sx(mp, i); return *this; }
  __gmp_expr & operator=(uintmax_t i) { mpz_set_ux(mp, i); return *this; }
#endif
#endif
#endif

Thank your for MPIR. It's a great library!

Regards
Wojciech Izykowski

-- 
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to mpir-devel+unsubscr...@googlegroups.com.
To post to this group, send email to mpir-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/mpir-devel.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to