Issue #3382: Make '%F' and float.__format__('F') convert results to upper case. Much of the patch came from Mark Dickinson.
diff --git a/Lib/test/test_complex.py b/Lib/test/test_complex.py
index a192ec4..a2f4ed5 100644
--- a/Lib/test/test_complex.py
+++ b/Lib/test/test_complex.py
@@ -539,6 +539,25 @@
         # make sure everything works in ''.format()
         self.assertEqual('*{0:.3f}*'.format(3.14159+2.71828j), '*3.142+2.718j*')
 
+        # issue 3382: 'f' and 'F' with inf's and nan's
+        self.assertEqual('{0:f}'.format(INF+0j), 'inf+0.000000j')
+        self.assertEqual('{0:F}'.format(INF+0j), 'INF+0.000000j')
+        self.assertEqual('{0:f}'.format(-INF+0j), '-inf+0.000000j')
+        self.assertEqual('{0:F}'.format(-INF+0j), '-INF+0.000000j')
+        self.assertEqual('{0:f}'.format(complex(INF, INF)), 'inf+infj')
+        self.assertEqual('{0:F}'.format(complex(INF, INF)), 'INF+INFj')
+        self.assertEqual('{0:f}'.format(complex(INF, -INF)), 'inf-infj')
+        self.assertEqual('{0:F}'.format(complex(INF, -INF)), 'INF-INFj')
+        self.assertEqual('{0:f}'.format(complex(-INF, INF)), '-inf+infj')
+        self.assertEqual('{0:F}'.format(complex(-INF, INF)), '-INF+INFj')
+        self.assertEqual('{0:f}'.format(complex(-INF, -INF)), '-inf-infj')
+        self.assertEqual('{0:F}'.format(complex(-INF, -INF)), '-INF-INFj')
+
+        self.assertEqual('{0:f}'.format(complex(NAN, 0)), 'nan+0.000000j')
+        self.assertEqual('{0:F}'.format(complex(NAN, 0)), 'NAN+0.000000j')
+        self.assertEqual('{0:f}'.format(complex(NAN, NAN)), 'nan+nanj')
+        self.assertEqual('{0:F}'.format(complex(NAN, NAN)), 'NAN+NANj')
+
 def test_main():
     test_support.run_unittest(ComplexTest)