convert factorials to gamma-function format
adding factorial test case
be more explicit with the rewrite operation
stripping trailing whitespace
adding negative number test case
only rewrite for positive z0
codeprinters: fix Rational's printing for code (as fractions of doubles)

S(4)/3 * x -> (4.0/3.0)*x for ccode, not 4*x/3
ccode: print Rational numbers with long double
printing.rst: fix doctest failures for fcode
use is_positive in favor of __ge__

relevant issue: http://code.google.com/p/sympy/issues/detail?id=2832
adding symbolic z0 test case for factorials
Merge branch 'master' into rationals-printing-in-code
Merge branch 'master' into rationals-printing-in-code
added a recursive doit() call in Sum

This enables the evaluation of nested sums.
doc string revesion for Sum
Piecewise._evals_subs doesn't evals every pieces.

Expressions are evaluated only if their condition is not False
and evaluation stops when it evaluates a condition to True,

Adds two tests:
    p3 = Piecewise((1, Eq(x, 0)), (1/x, True))
    p4 = Piecewise((1, Eq(x, 0)), (2, 1/x>2))
    assert p3.subs(x, 0.0) == 1
    assert p4.subs(x, 0.0) == 1
docstring improved for Sum
Pretty printing of Integral(x, x)**2.

Wrap an Integral with brackets when raised to a power. Do the same
for most objects, excepts if it is an atom (doesn't need brackets)
or a function (which handle printing powers differently already).

Fixes issue 3260.
Remove a couple TODOs.
Piecewise._eval_interval for cond. indep. of integration var.

This fixes the Integral of a Piecewise when the conditions are
independent of the integration variable.

Before:

>>> integrate(Piecewise((0, Eq(y, 0)), (x*y/sqrt(y**2), True)), (x, 1, 3))
4*y/sqrt(y**2)

After:

>>> integrate(Piecewise((0, Eq(y, 0)), (x*y/sqrt(y**2), True)), (x, 1, 3))
Piecewise((0, y == 0), (4*y/sqrt(y**2), True))