We give a trichotomy theorem for the complexity of approximately counting the
number of satisfying assignments of a Boolean CSP instance. Such problems are
parameterised by a constraint language specifying the relations that may be
used in constraints. If every relation in the constraint language is affine
then the number of satisfying assignments can be exactly counted in polynomial
time. Otherwise, if every relation in the constraint language is in the
co-clone IM_2 from Post's lattice, then the problem of counting satisfying
assignments is complete with respect to approximation-preserving reductions in
the complexity class #RH\Pi_1. This means that the problem of approximately
counting satisfying assignments of such a CSP instance is equivalent in
complexity to several other known counting problems, including the problem of
approximately counting the number of independent sets in a bipartite graph. For
every other fixed constraint language, the problem is complete for #P with
respect to approximation-preserving reductions, meaning that there is no fully
polynomial randomised approximation scheme for counting satisfying assignments
unless NP=RP