  We give a complexity dichotomy theorem for the counting Constraint
Satisfaction Problem (#CSP in short) with complex weights. To this end, we give
three conditions for its tractability. Let F be any finite set of
complex-valued functions, then we prove that #CSP(F) is solvable in polynomial
time if all three conditions are satisfied; and is #P-hard otherwise.
  Our complexity dichotomy generalizes a long series of important results on
counting problems: (a) the problem of counting graph homomorphisms is the
special case when there is a single symmetric binary function in F; (b) the
problem of counting directed graph homomorphisms is the special case when there
is a single not-necessarily-symmetric binary function in F; and (c) the
standard form of #CSP is when all functions in F take values in {0,1}.
