Exponential Module

Currently I've created an `Exp` class. However, as @certik suggested, it might not be that necessary to create a class for `Exp`.
The only new addition was an explicit `diff` which can be incorporated in the current `diff` of `pow` itself as a special case.
My earlier view was that since we will be adding functions like `rewrite_as_exp` functions in trignometric classes it might be useful to have an `Exp` class but I guess as Aaron said on gitter, 
> it's better to special case E in one place (pow) than to special case exp everywhere in the code that tries to deal with pow objects 
The coming week I'll be working on the Hyperbolic Module and then I'll
start working on the Complex Module.

Sushant Hiray,
Senior Undergrad CSE,
IIT Bombay




On Sun, Jun 15, 2014 at 10:25 PM, Ondřej Čertík <notifications@github.com>
wrote:

> In src/pow.cpp:
>
> > +    return mul(div(one, arg_), arg_->diff(x));
> > +}
> > +
> > +RCP<const Basic> log(const RCP<const Basic> &arg)
> > +{
> > +    if (eq(arg, zero)) {
> > +        throw std::runtime_error("log(0) is complex infinity. Yet to be implemented");
> > +    }
> > +    if (eq(arg, one)) return zero;
> > +    if (eq(arg, E)) return one;
> > +    if (is_a<Rational>(*arg)) {
> > +        RCP<const Rational> arg_new = rcp_static_cast<const Rational>(arg);
> > +        RCP<const Integer> num;
> > +        RCP<const Integer> den;
> > +        get_num_den(arg_new, outArg(num), outArg(den));
> > +        return sub(log(num), log(den));
>
> If you could tackle #47 <https://github.com/sympy/csympy/issues/47>, that
> would be a huge help. If you run into any issues, please ping me.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/sympy/csympy/pull/194/files#r13787032>.
>