Program Listing for File constants.h

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

#ifndef SYMENGINE_CONSTANTS_H
#define SYMENGINE_CONSTANTS_H

#include <symengine/integer.h>
#include <symengine/symbol.h>
#include <symengine/infinity.h>
#include <symengine/nan.h>

namespace SymEngine
{

class Constant : public Basic
{
private:
    std::string name_;

public:
    IMPLEMENT_TYPEID(SYMENGINE_CONSTANT)
    Constant(const std::string &name);
    virtual hash_t __hash__() const;
    virtual bool __eq__(const Basic &o) const;
    virtual int compare(const Basic &o) const;
    inline std::string get_name() const
    {
        return name_;
    }

    virtual vec_basic get_args() const
    {
        return {};
    }
};

inline RCP<const Constant> constant(const std::string &name)
{
    return make_rcp<const Constant>(name);
}

// Constant Numbers
extern SYMENGINE_EXPORT RCP<const Integer> zero;
extern SYMENGINE_EXPORT RCP<const Integer> one;
extern SYMENGINE_EXPORT RCP<const Integer> minus_one;
extern SYMENGINE_EXPORT RCP<const Number> I;

// Symbolic Constants
extern SYMENGINE_EXPORT RCP<const Constant> pi;
extern SYMENGINE_EXPORT RCP<const Constant> E;
extern SYMENGINE_EXPORT RCP<const Constant> EulerGamma;
extern SYMENGINE_EXPORT RCP<const Constant> Catalan;
extern SYMENGINE_EXPORT RCP<const Constant> GoldenRatio;

// Infinity
extern SYMENGINE_EXPORT RCP<const Infty> Inf;
extern SYMENGINE_EXPORT RCP<const Infty> NegInf;
extern SYMENGINE_EXPORT RCP<const Infty> ComplexInf;

// Not a Number
extern SYMENGINE_EXPORT RCP<const NaN> Nan;
} // SymEngine

#endif