@@ -2302,10 +2302,12 @@ def test_error_cases(self):
23022302 StatisticsError = statistics .StatisticsError
23032303 with self .assertRaises (StatisticsError ):
23042304 geometric_mean ([]) # empty input
2305- with self .assertRaises (StatisticsError ):
2306- geometric_mean ([3.5 , 0.0 , 5.25 ]) # zero input
23072305 with self .assertRaises (StatisticsError ):
23082306 geometric_mean ([3.5 , - 4.0 , 5.25 ]) # negative input
2307+ with self .assertRaises (StatisticsError ):
2308+ geometric_mean ([0.0 , - 4.0 , 5.25 ]) # negative input with zero
2309+ with self .assertRaises (StatisticsError ):
2310+ geometric_mean ([3.5 , - math .inf , 5.25 ]) # negative infinity
23092311 with self .assertRaises (StatisticsError ):
23102312 geometric_mean (iter ([])) # empty iterator
23112313 with self .assertRaises (TypeError ):
@@ -2328,6 +2330,12 @@ def test_special_values(self):
23282330 with self .assertRaises (ValueError ):
23292331 geometric_mean ([Inf , - Inf ])
23302332
2333+ # Cases with zero
2334+ self .assertEqual (geometric_mean ([3 , 0.0 , 5 ]), 0.0 ) # Any zero gives a zero
2335+ self .assertEqual (geometric_mean ([3 , - 0.0 , 5 ]), 0.0 ) # Negative zero allowed
2336+ self .assertTrue (math .isnan (geometric_mean ([0 , NaN ]))) # NaN beats zero
2337+ self .assertTrue (math .isnan (geometric_mean ([0 , Inf ]))) # Because 0.0 * Inf -> NaN
2338+
23312339 def test_mixed_int_and_float (self ):
23322340 # Regression test for b.p.o. issue #28327
23332341 geometric_mean = statistics .geometric_mean
0 commit comments