Guillermo Ramírez wrote:
Hello Brian,

 >However, many people do run into problems when they build x64
 >applications on Windows becasue they wrongly assume that long types have
 >64-bits when in fact these types have 32-bits on Windows.  To obtain a
 >64-bit type 'long long' has to be used.

 >MPIR itself has two predefined (signed and unsigned) integer types -
 >mpir_si and mpir_ui - that avoid this problem by being defined as 32-bit
 >types on win32 and 64-bit types on x64.  If these are used in building
 >applications, it is often be possible to avoid many (but not all) of the
 >issues that turn up in porting win32 applications to x64.

Does the above mean that the user needs to change the mpirxx.h file to a
specific
arithmetic type?

No.


I am trying to use the open source libDAI library and am having several
errors and
warnings with the mpirxx.h file, for instance:

Error1error C4146: unary minus operator applied to unsigned type, result
still unsigned
C:\Program Files (x86)\Microsoft Visual Studio
12.0\VC\include\mpirxx.h1181GBP1

Line 118 really looks a bit weird; the minus should IMHO precede 'l':

inline void __mpz_set_si_safe(mpz_ptr p, mpir_si l)
{
  if(l < 0)
  {
    __mpz_set_ui_safe(p, -static_cast<mpir_ui>(l)); // line 118
    mpz_neg(p, p);
  }
  else
    __mpz_set_ui_safe(p, l);
    // Note: we know the high bit of l is 0 so we could do slightly better
}


Warning18warning C4244: 'argument' : conversion from '__int64' to
'mpir_si', possible loss of data
C:\Program Files (x86)\Microsoft Visual Studio
12.0\VC\include\mpirxx.h15431GBP1

Here my impression is that mpir_si is indeed defined to (just) 32 bits (=> win32), otherwise the warning doesn't make sense:

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

On the other hand, there should be a warning for the next line as well (assuming mpir_ui is also just 32 bits).


Probably MPIRXX_HAVE_LLONG shouldn't be defined in that case? (The "logic" w.r.t. to that preprocessor variable is at least a bit confusing IIRC.)


Brian will know better, as he has tested on (and maintains the) Windows (version)...


-leif

--
() The ASCII Ribbon Campaign
/\   Help Cure HTML E-Mail

--
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/d/optout.

Reply via email to