[prev in list] [next in list] [prev in thread] [next in thread]
List: gmp-bugs
Subject: 2 minor issues on Windows
From: George Woltman <woltman () alum ! mit ! edu>
Date: 2021-11-25 18:01:58
Message-ID: CAGRZj3LYstixk7WsuixZMZ8GXMX1HPLqoJ7H93sv8ncFBjbB2Q () mail ! gmail ! com
[Download RAW message or body]
Hi,
I'm using GMP 6.2. Has been working fine for 2+ years now, great library.
I've built the library (64-bit) using Cygwin. This creates a DLL and a
gmp.h file that can be used with Microsoft Visual Studio C compiler.
As you probably know, MSVC strangely defines long as 32-bits.
In gmp.h, these lines appear:
#ifdef __GMP_SHORT_LIMB
typedef unsigned int mp_limb_t;
typedef int mp_limb_signed_t;
#else
#ifdef _LONG_LONG_LIMB
typedef unsigned long long int mp_limb_t;
typedef long long int mp_limb_signed_t;
#else
typedef unsigned long int mp_limb_t;
typedef long int mp_limb_signed_t;
#endif
#endif
typedef unsigned long int mp_bitcnt_t;
The problem is that while _LONG_LONG_LIMB is defined, the definition of
mp_bitcnt_t ought to also use "long long".
I get this compiler warning calling mpz_tstbit: warning C4244: 'argument':
conversion from 'uint64_t' to 'mp_bitcnt_t', possible loss of data
Yes, I'm creating mpz values with more than 4 billion bits.
Minor issue #2 (I should have reported this years ago, sorry):
In gmp.h, these lines:
mpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
{
while (*__gmp_up == 0) /* Low zero limbs are unchanged by negation. */
{
*__gmp_rp = 0;
if (!--__gmp_n) /* All zero */
return 0;
++__gmp_up; ++__gmp_rp;
}
*__gmp_rp = (- *__gmp_up) & GMP_NUMB_MASK;
The last line generates this compiler warning:
warning C4146: unary minus operator applied to unsigned type, result still
unsigned
Let me know if you need any more info.
Regards,
George Woltman
_______________________________________________
gmp-bugs mailing list
gmp-bugs@gmplib.org
https://gmplib.org/mailman/listinfo/gmp-bugs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic