def test_pc_diff_from_mean_50pc(self):
     """Percentage difference from the mean between values where one is 50%
        of the other"""
     value_1 = 2000
     value_2 = 4000
     diff_1 = percentage_difference_from_mean(value_2, value_1)
     diff_2 = percentage_difference_from_mean(value_1, value_2)
     self.assertEquals(diff_1, diff_2)
     self.assertAlmostEquals(0.333, diff_1, 2)
 def test_pc_diff_from_mean_99pc(self):
     """Percentage difference from the mean between a very small value and a
        relatively large value"""
     value_1 = 0.0000000001
     value_2 = 2**32
     diff_1 = percentage_difference_from_mean(value_2, value_1)
     diff_2 = percentage_difference_from_mean(value_1, value_2)
     self.assertEquals(diff_1, diff_2)
     self.assertAlmostEquals(0.999999, diff_1, 2)
 def test_percentage_diff_from_mean(self):
     """Percentage difference from the mean between two values that are 
        almost equal"""
     value_1 = 3999.9999
     value_2 = 4000
     diff_1 = percentage_difference_from_mean(value_2, value_1)
     diff_2 = percentage_difference_from_mean(value_1, value_2)
     self.assertEquals(diff_1, diff_2)
     self.assertAlmostEquals(0.00000, diff_1, 2)
 def _print_interval(self, output, percentage, interval, ingredient):
     """Output confidence interval for one ingredient"""
     upper_value = percentage + interval
     upper = self._float_format() % upper_value
     lower_value = percentage - interval
     lower = self._float_format() % lower_value
     mean = self._float_format() % percentage
     text = "The " + str(ingredient) + " proportion "
     if interval == 0.0:
         difference = 0.0
     else:
         difference = percentage_difference_from_mean(lower_value,
                                                      upper_value) * 100
     if difference > 0.01:
         diff_text = ("%% (the interval is %0.0f%% of the mean "
             "proportion: %s%%)") % (difference, mean)
         output.line(text + "is between " + lower + "% and " + upper \
                     + diff_text)
     else:
         output.line(text + lower)