diff --git a/Doc/library/statistics.rst b/Doc/library/statistics.rst
index a0d4d39..8d961b7 100644
--- a/Doc/library/statistics.rst
+++ b/Doc/library/statistics.rst
@@ -482,9 +482,9 @@
 .. class:: NormalDist(mu=0.0, sigma=1.0)
 
     Returns a new *NormalDist* object where *mu* represents the `arithmetic
-    mean <https://en.wikipedia.org/wiki/Arithmetic_mean>`_ of data and *sigma*
+    mean <https://en.wikipedia.org/wiki/Arithmetic_mean>`_ and *sigma*
     represents the `standard deviation
-    <https://en.wikipedia.org/wiki/Standard_deviation>`_ of the data.
+    <https://en.wikipedia.org/wiki/Standard_deviation>`_.
 
     If *sigma* is negative, raises :exc:`StatisticsError`.
 
@@ -579,7 +579,7 @@
 :class:`NormalDist` Examples and Recipes
 ----------------------------------------
 
-A :class:`NormalDist` readily solves classic probability problems.
+:class:`NormalDist` readily solves classic probability problems.
 
 For example, given `historical data for SAT exams
 <https://blog.prepscholar.com/sat-standard-deviation>`_ showing that scores
diff --git a/Lib/statistics.py b/Lib/statistics.py
index bab5857..e917a5d 100644
--- a/Lib/statistics.py
+++ b/Lib/statistics.py
@@ -735,7 +735,7 @@
         return exp((x - self.mu)**2.0 / (-2.0*variance)) / sqrt(tau * variance)
 
     def cdf(self, x):
-        'Cumulative density function:  P(X <= x)'
+        'Cumulative distribution function:  P(X <= x)'
         if not self.sigma:
             raise StatisticsError('cdf() not defined when sigma is zero')
         return 0.5 * (1.0 + erf((x - self.mu) / (self.sigma * sqrt(2.0))))
diff --git a/Lib/test/test_statistics.py b/Lib/test/test_statistics.py
index d35cdd8..4adc5e4 100644
--- a/Lib/test/test_statistics.py
+++ b/Lib/test/test_statistics.py
@@ -2113,6 +2113,10 @@
         Y = NormalDist(100, 0)
         with self.assertRaises(statistics.StatisticsError):
             Y.pdf(90)
+        # Special values
+        self.assertEqual(X.pdf(float('-Inf')), 0.0)
+        self.assertEqual(X.pdf(float('Inf')), 0.0)
+        self.assertTrue(math.isnan(X.pdf(float('NaN'))))
 
     def test_cdf(self):
         NormalDist = statistics.NormalDist
@@ -2127,6 +2131,10 @@
         Y = NormalDist(100, 0)
         with self.assertRaises(statistics.StatisticsError):
             Y.cdf(90)
+        # Special values
+        self.assertEqual(X.cdf(float('-Inf')), 0.0)
+        self.assertEqual(X.cdf(float('Inf')), 1.0)
+        self.assertTrue(math.isnan(X.cdf(float('NaN'))))
 
     def test_properties(self):
         X = statistics.NormalDist(100, 15)
