Program Listing for File pow.h

Return to documentation for file (symengine/symengine/pow.h)

#ifndef SYMENGINE_POW_H
#define SYMENGINE_POW_H

#include <symengine/functions.h>
#include <symengine/mul.h>
#include <symengine/ntheory.h>
#include <symengine/constants.h>

namespace SymEngine
{

class Pow : public Basic
{
private:
    RCP<const Basic> base_, exp_;

public:
    IMPLEMENT_TYPEID(SYMENGINE_POW)
    Pow(const RCP<const Basic> &base, const RCP<const Basic> &exp);
    virtual hash_t __hash__() const;
    virtual bool __eq__(const Basic &o) const;
    virtual int compare(const Basic &o) const;
    bool is_canonical(const Basic &base, const Basic &exp) const;
    inline RCP<const Basic> get_base() const
    {
        return base_;
    }
    inline RCP<const Basic> get_exp() const
    {
        return exp_;
    }

    virtual vec_basic get_args() const;
};

RCP<const Basic> pow(const RCP<const Basic> &a, const RCP<const Basic> &b);

RCP<const Basic> exp(const RCP<const Basic> &x);

void multinomial_coefficients(unsigned m, unsigned n, map_vec_uint &r);
void multinomial_coefficients_mpz(unsigned m, unsigned n, map_vec_mpz &r);
RCP<const Basic> pow_expand(const RCP<const Pow> &self);
inline RCP<const Basic> sqrt(const RCP<const Basic> &x)
{
    return pow(x, div(one, integer(2)));
}
inline RCP<const Basic> cbrt(const RCP<const Basic> &x)
{
    return pow(x, div(one, integer(3)));
}

} // SymEngine

#endif