diff --git a/Objects/longobject.c b/Objects/longobject.c
index badc3df..de7ff39 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -28,8 +28,14 @@
 
 #include "allobjects.h"
 #include "longintrepr.h"
+#include <math.h>
 #include <assert.h>
 
+/* Forward: */
+extern object *long_mul PROTO((longobject *, object *));
+extern object *long_add PROTO((longobject *, object *));
+extern object *long_neg PROTO((longobject *));
+
 static int ticker;	/* XXX Could be shared with ceval? */
 
 #define INTRCHECK(block) \
@@ -87,6 +93,39 @@
 	return (object *)v;
 }
 
+/* Create a new long int object from a C double */
+
+object *
+dnewlongobject(dval)
+	double dval;
+{
+	longobject *v;
+	double frac;
+	int i, ndig, expo, neg;
+	neg = 0;
+	if (dval < 0.0) {
+		neg = 1;
+		dval = -dval;
+	}
+	frac = frexp(dval, &expo); /* dval = frac*2**expo; 0.0 <= frac < 1.0 */
+	if (expo <= 0)
+		return newlongobject(0L);
+	ndig = (expo-1) / SHIFT + 1; /* Number of 'digits' in result */
+	v = alloclongobject(ndig);
+	if (v == NULL)
+		return NULL;
+	frac = ldexp(frac, (expo-1) % SHIFT + 1);
+	for (i = ndig; --i >= 0; ) {
+		long bits = (long)frac;
+		v->ob_digit[i] = bits;
+		frac = frac - (double)bits;
+		frac = ldexp(frac, SHIFT);
+	}
+	if (neg)
+		v->ob_size = -v->ob_size;
+	return (object *)v;
+}
+
 /* Get a C long int from a long int object.
    Returns -1 and sets an error condition if overflow occurs. */
 
