diff --git a/Lib/fractions.py b/Lib/fractions.py
index bc06524..ed1e9a0 100755
--- a/Lib/fractions.py
+++ b/Lib/fractions.py
@@ -109,7 +109,7 @@
 
         """
         if isinstance(f, numbers.Integral):
-            f = float(f)
+            return cls(f)
         elif not isinstance(f, float):
             raise TypeError("%s.from_float() only takes floats, not %r (%s)" %
                             (cls.__name__, f, type(f).__name__))
diff --git a/Lib/heapq.py b/Lib/heapq.py
index 380fe12..2d34046 100644
--- a/Lib/heapq.py
+++ b/Lib/heapq.py
@@ -354,9 +354,12 @@
 
     Equivalent to:  sorted(iterable, key=key)[:n]
     """
+    if key is None:
+        it = zip(iterable, count())                         # decorate
+        result = _nsmallest(n, it)
+        return list(map(itemgetter(0), result))             # undecorate
     in1, in2 = tee(iterable)
-    keys = in1 if key is None else map(key, in1)
-    it = zip(keys, count(), in2)                           # decorate
+    it = zip(map(key, in1), count(), in2)                   # decorate
     result = _nsmallest(n, it)
     return list(map(itemgetter(2), result))                 # undecorate
 
@@ -366,9 +369,12 @@
 
     Equivalent to:  sorted(iterable, key=key, reverse=True)[:n]
     """
+    if key is None:
+        it = zip(iterable, map(neg, count()))               # decorate
+        result = _nlargest(n, it)
+        return list(map(itemgetter(0), result))             # undecorate
     in1, in2 = tee(iterable)
-    keys = in1 if key is None else map(key, in1)
-    it = zip(keys, map(neg, count()), in2)                 # decorate
+    it = zip(map(key, in1), map(neg, count()), in2)         # decorate
     result = _nlargest(n, it)
     return list(map(itemgetter(2), result))                 # undecorate
 
diff --git a/Lib/test/test_fractions.py b/Lib/test/test_fractions.py
index 4fadf6c..6851d2d 100644
--- a/Lib/test/test_fractions.py
+++ b/Lib/test/test_fractions.py
@@ -136,6 +136,8 @@
     def testFromFloat(self):
         self.assertRaises(TypeError, F.from_float, 3+4j)
         self.assertEquals((10, 1), _components(F.from_float(10)))
+        bigint = 1234567890123456789
+        self.assertEquals((bigint, 1), _components(F.from_float(bigint)))
         self.assertEquals((0, 1), _components(F.from_float(-0.0)))
         self.assertEquals((10, 1), _components(F.from_float(10.0)))
         self.assertEquals((-5, 2), _components(F.from_float(-2.5)))
diff --git a/Misc/NEWS b/Misc/NEWS
index e0b9eec..2c59b00 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -92,9 +92,15 @@
 - Issue #4796: Added Decimal.from_float() and Context.create_decimal_from_float()
   to the decimal module.
 
+- Fractions.from_float() no longer loses precision for integers too big to
+  cast as floats.
+
 - Issue #4812: add missing underscore prefix to some internal-use-only
   constants in the decimal module.  (Dec_0 becomes _Dec_0, etc.)
 
+- Issue 4790: The nsmallest() and nlargest() functions in the heapq module
+  did unnecessary work in the common case where no key function was specified.
+
 - Issue #4702: Throwing a DistutilsPlatformError instead of IOError in case 
   no MSVC compiler is found under Windows. Original patch by Philip Jenvey. 
 
