diff --git a/Objects/complexobject.c b/Objects/complexobject.c
index a47cd54..90b970e 100644
--- a/Objects/complexobject.c
+++ b/Objects/complexobject.c
@@ -8,6 +8,10 @@
 #include "Python.h"
 #include "structmember.h"
 
+#ifdef HAVE_IEEEFP_H
+#include <ieeefp.h>
+#endif
+
 #ifndef WITHOUT_COMPLEX
 
 /* Precisions used by repr() and str(), respectively.
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 20f1510..745dfc3 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -12,6 +12,10 @@
 #include <ctype.h>
 #include <float.h>
 
+#ifdef HAVE_IEEEFP_H
+#include <ieeefp.h>
+#endif
+
 #if !defined(__STDC__)
 extern double fmod(double, double);
 extern double pow(double, double);
diff --git a/Objects/longobject.c b/Objects/longobject.c
index b8725df..1d4b502 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -1620,7 +1620,7 @@
 		n >>= 1;
 	/* n <- total # of bits needed, while setting p to end-of-string */
 	n = 0;
-	while (_PyLong_DigitValue[(unsigned)Py_CHARMASK(*p)] < base)
+	while (_PyLong_DigitValue[Py_CHARMASK(*p)] < base)
 		++p;
 	*str = p;
 	/* n <- # of Python digits needed, = ceiling(n/PyLong_SHIFT). */
@@ -1641,7 +1641,7 @@
 	bits_in_accum = 0;
 	pdigit = z->ob_digit;
 	while (--p >= start) {
-		int k = _PyLong_DigitValue[(unsigned)Py_CHARMASK(*p)];
+		int k = _PyLong_DigitValue[Py_CHARMASK(*p)];
 		assert(k >= 0 && k < base);
 		accum |= (twodigits)(k << bits_in_accum);
 		bits_in_accum += bits_per_char;
@@ -1828,7 +1828,7 @@
 
 		/* Find length of the string of numeric characters. */
 		scan = str;
-		while (_PyLong_DigitValue[(unsigned)Py_CHARMASK(*scan)] < base)
+		while (_PyLong_DigitValue[Py_CHARMASK(*scan)] < base)
 			++scan;
 
 		/* Create a long object that can contain the largest possible
@@ -1854,10 +1854,10 @@
 		/* Work ;-) */
 		while (str < scan) {
 			/* grab up to convwidth digits from the input string */
-			c = (digit)_PyLong_DigitValue[(unsigned)Py_CHARMASK(*str++)];
+			c = (digit)_PyLong_DigitValue[Py_CHARMASK(*str++)];
 			for (i = 1; i < convwidth && str != scan; ++i, ++str) {
 				c = (twodigits)(c *  base +
-					_PyLong_DigitValue[(unsigned)Py_CHARMASK(*str)]);
+					_PyLong_DigitValue[Py_CHARMASK(*str)]);
 				assert(c < PyLong_BASE);
 			}
 
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index fef304a..60cbffa 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -512,13 +512,13 @@
 	/* Single characters are shared when using this constructor.
            Restrict to ASCII, since the input must be UTF-8. */
 	if (size == 1 && Py_CHARMASK(*u) < 128) {
-	    unicode = unicode_latin1[(unsigned)Py_CHARMASK(*u)];
+	    unicode = unicode_latin1[Py_CHARMASK(*u)];
 	    if (!unicode) {
 		unicode = _PyUnicode_New(1);
 		if (!unicode)
 		    return NULL;
 		unicode->str[0] = Py_CHARMASK(*u);
-		unicode_latin1[(unsigned)Py_CHARMASK(*u)] = unicode;
+		unicode_latin1[Py_CHARMASK(*u)] = unicode;
 	    }
 	    Py_INCREF(unicode);
 	    return (PyObject *)unicode;
