Optimized number of permutations of mappings in heurisch()
Reduced the number of permutations of mapping by not generating cases where mapping[-1] != x
While earlier the number of terms or components of a function being permuted were (say) n after these changes they have reduced to n-1, thus improving the time complexity
Optimized number of permutations of mappings in heurisch()

Inorer to reduce the number of permuations of mapping we can remove the unnecessary_tuples that is one of the form (x, x_)
and can append these to the end of all permuted mappings
renamed store_tuple to unnecessary_permutations
Fix typos

Fixed typos, 2 were part of the code, and 7 in docstring or comments.
Mod handles more simplification

While still trying to keep evaluation fast, Mod will now
removing a gcd from the terms and check for known differences
between arguments. Denesting is also implemented (although
probably more could be done).

Thanks to Patrick Lacasse for this suggestion to check ratios.
watch for TypeError from int
fix transform tests
don't let sum processing introduce new Mod
geometry: reflect method; ellipse & RegularPolygon are oriented

** Now geometric objects can be reflected across a line.

This is not implemented for the Ellipse except in the case of horizontal
and vertical lines since arbitrary rotation of the ellipse is not supported.

** Now RegularPolygon and Ellipse track their orientation so they, like
Polygon, can yield a positive or negative area.

** use simplify in geometry

The only place where nsimplify is used is in the definition of Points.
That instance is now limited only to converting floats to Rationals.
Without the rational=True option it would have converted, with approximation,
expressions like follows:

>>> nsimplify((1/(exp(3*pi*I/5)+1)),rational=0)
1/2 - I*sqrt(sqrt(5)/10 + 1/4)

Although that is correct in this instance, it might not always be
correct.
SymPyDocTestFinder: don't test functions which are not part of SymPy

these are the modules which are skipped:

array
basic
compiler.pycodegen
compiler.transformer
dense_coding_example
differential_equations
differentiation
expansion
fnmatch
functions
hydrogen
matplotlib.collections
matplotlib.colors
matplotlib.lines
matplotlib.patches
mpl_toolkits.mplot3d.axes3d
partial_differential_eqs
plotting_nice_plot
posixpath
precision
print_gtk
print_pretty
pyglet.clock
pyglet_plotting
re
series
substitution
doctest of memoization functions fix

fix doctest of functions which are decorated with one of the *_memo decorators
SymPyDocTestFinder: add additional check
minor cleanup of SymPyDocTestFinder
SymPyDocTestFinder: revert the previously added check

otherwise some methods are not doctested
Fix properties don't have a __module__ attr
doctest: Move the dependency checks to the SymPyDocTests class

The reporter prints a 's' when the dependencies for a doctest are not
met now.
always overwrite the _doctest_depends_on element of the globs dict

This fixes lots of possibly skipped doctests in e.g., ellipse.py
Implemented risch_integrate for trigonometric, inverse trigonometric and hyperbolic functions

Earlier:

        risch_integrate(sin(x),x)
        NotImplementedError

Now:

        risch_integrate(sin(x),x)
        -cos(x)
        integrate(sin(x),x,risch=True)
        -cos(x)

Added flag "rewrite_complex" to prevent calculation of every integral in terms of complex numbers (as we can get better results from other algorithms).
Conversions of trigonometric , inverse trigno , hyperbolic is implemented a s a fall back measure(if no algorithm gives anti-derivative then all the above functions would be converted into exponential or logarithmic components)

changed self.f.rewrite -> self.newf.rewrite