Coding style: sympy/integrals/deltafunctions.py
Move deltaintegrate tests to their own file.
Fix wrong result for integrate(DiracDelta(y - x), x).
Bring coverage of integrals/deltafunctions.py to 100%.
Rewrite tests in terms of deltaintegrate instead of integrate.
Return DiracDelta(0) unevaluated.

This is needed to keep track of prefactors to DiracDelta(0),
otherwise the Infinity automatically gobbles them.
Handle integrate(DiracDelta(x)**2, x).

>>> integrate(DiracDelta(x)**2, (x,))
DiracDelta(0)*Heaviside(x)
>>> integrate(DiracDelta(x)**2, (x, -oo, oo))
DiracDelta(0)
Fix issue 1423: integrating DiracDelta fails sometimes

It failed because the result is zero and bool(zero) is False.
One should use `result is not None` instead of `bool(result)`.
Add tests from issues 1423, 2630 and 3328.
remove more references to Float(nan)
Fixes plotting errors due to complex values in a new sampled point

When recursively sampling, if the new point sampled is a complex
value, with the two end points being real, then it recursively
samples the endpoint and the new point.
Consider relative error while classifying a number as complex

The sampling code in experimental lambdify now checks whether the
abs(num.imag) > 1e-7 * abs(num) to classify the number as a complex
number.
removed the test added during the fix
use / instead of // for integers
look at exponent rather than computing int
Float accepts mpf and watches for exponential notation when prec=''

The significant figures should not include zeros that were signified
with the exponent as in '12e3' -- this gives 1.2e4 rather than 12000.

Also, don't count the negative when counting significant figures.
3540: don't base nonzero on man of mpf tuple

It is necessary but not sufficient to guarantee that the tuple represents
0 -- finf, for example, also has a mantissa of 0.
remove more references to fnan; use is_zero and is_positive

In the context of Number, where the sign is easily determined,
the use of is_zero is much faster than using an equality test
or converting to a boolean:

>>> timeit('bool(z)','from sympy import Float\nz=Float(0)')
1.1109158992767334
>>> timeit('z==0','from sympy import Float\nz=Float(0)')
10.78619384765625
>>> timeit('z.is_zero','from sympy import Float\nz=Float(0)')
0.10547804832458496

>>> timeit('bool(z)','from sympy import Rational\nz=Rational(1,3)')
0.3191959857940674
>>> timeit('z==0','from sympy import Rational\nz=Rational(1,3)')
5.848392963409424
>>> timeit('z.is_zero','from sympy import Rational\nz=Rational(1,3)')
0.10593008995056152
2950: Rational processes Float and float

o The unprejudiced underlying fraction of the float is used to
create the Rational. Since as_integer_ratio() is not available in 2.5
(and Decimal in 2.5 will not take a float) mpf is used to parse the
float to get the mantissa and exponent.

o strings matching a literal 'float/float' are now processed and
processing is not passed to sympify (which makes Rational more literal).

        It makes sense to handle strings representing Rationals since
        it is about 100x faster than passing off the expression to
        sympify. No deeper processing is done, however.
add coverage tests for oo and others; us is_nonnegative