series_generic.h
Go to the documentation of this file.
1 
6 #ifndef SYMENGINE_SERIES_GENERIC_H
7 #define SYMENGINE_SERIES_GENERIC_H
8 
10 #include <symengine/polys/uexprpoly.h>
11 #include <symengine/series.h>
12 
13 namespace SymEngine
14 {
16 class SYMENGINE_EXPORT UnivariateSeries
17  : public SeriesBase<UExprDict, Expression, UnivariateSeries>
18 {
19  // UnivariateSeries 1 + 2*x + x**2 + O(x**5) has dict_ = {{0, 1}, {1, 2},
20  // {2, 1}} with var_ = "x" and prec_ = 5
21 public:
22  using SeriesBase::mul;
23  using SeriesBase::pow;
24  IMPLEMENT_TYPEID(SYMENGINE_UNIVARIATESERIES)
25  UnivariateSeries(const UExprDict &sp, const std::string varname,
26  const unsigned degree)
27  : SeriesBase(sp, varname, degree)
28  {
29  SYMENGINE_ASSIGN_TYPEID()
30  }
31 
32  static RCP<const UnivariateSeries> create(const RCP<const Symbol> &var,
33  const unsigned int &prec,
34  const UExprDict &s)
35  {
36  return make_rcp<const UnivariateSeries>(std::move(s), var->get_name(),
37  prec);
38  }
39 
40  static RCP<const UnivariateSeries>
41  series(const RCP<const Basic> &t, const std::string &x, unsigned int prec);
42  hash_t __hash__() const override;
43  int compare(const Basic &o) const override;
44  bool operator==(const UnivariateSeries &u) const;
45  RCP<const Basic> as_basic() const override;
46  umap_int_basic as_dict() const override;
47  RCP<const Basic> get_coeff(int) const override;
48  static UExprDict var(const std::string &s);
49 
50  static Expression convert(const Basic &x);
51 
52  static int ldegree(const UExprDict &s);
53  static UExprDict mul(const UExprDict &s, const UExprDict &r, unsigned prec);
54  static UExprDict pow(const UExprDict &s, int n, unsigned prec);
55  static Expression find_cf(const UExprDict &s, const UExprDict &var,
56  int deg);
57  static Expression root(Expression &c, unsigned n);
58  static UExprDict diff(const UExprDict &s, const UExprDict &var);
59  static UExprDict integrate(const UExprDict &s, const UExprDict &var);
60  static UExprDict subs(const UExprDict &s, const UExprDict &var,
61  const UExprDict &r, unsigned prec);
62 
63  static Expression sin(const Expression &c);
64  static Expression cos(const Expression &c);
65  static Expression tan(const Expression &c);
66  static Expression asin(const Expression &c);
67  static Expression acos(const Expression &c);
68  static Expression atan(const Expression &c);
69  static Expression sinh(const Expression &c);
70  static Expression cosh(const Expression &c);
71  static Expression tanh(const Expression &c);
72  static Expression asinh(const Expression &c);
73  static Expression acosh(const Expression &c);
74  static Expression atanh(const Expression &c);
75  static Expression exp(const Expression &c);
76  static Expression log(const Expression &c);
77 };
78 
79 inline RCP<const UnivariateSeries>
80 univariate_series(RCP<const Symbol> i, unsigned int prec, const UExprDict &s)
81 {
82  return make_rcp<const UnivariateSeries>(std::move(s), i->get_name(), prec);
83 }
84 
85 } // namespace SymEngine
86 #endif
#define IMPLEMENT_TYPEID(SYMENGINE_ID)
Inline members and functions.
Definition: basic.h:344
RCP< const Number > mul(const Number &other) const override
Multiplication.
Definition: series.h:110
RCP< const Number > pow(const Number &other) const override
Power.
Definition: series.h:128
UnivariateSeries Class.
Main namespace for SymEngine package.
Definition: add.cpp:19
RCP< const Basic > atan(const RCP< const Basic > &arg)
Canonicalize ATan:
Definition: functions.cpp:1531
RCP< const Basic > cos(const RCP< const Basic > &arg)
Canonicalize Cos:
Definition: functions.cpp:949
RCP< const Basic > sinh(const RCP< const Basic > &arg)
Canonicalize Sinh:
Definition: functions.cpp:2125
RCP< const Basic > sin(const RCP< const Basic > &arg)
Canonicalize Sin:
Definition: functions.cpp:881
RCP< const Basic > mul(const RCP< const Basic > &a, const RCP< const Basic > &b)
Multiplication.
Definition: mul.cpp:352
RCP< const Basic > tan(const RCP< const Basic > &arg)
Canonicalize Tan:
Definition: functions.cpp:1014
RCP< const Basic > acos(const RCP< const Basic > &arg)
Canonicalize ACos:
Definition: functions.cpp:1409
RCP< const Basic > tanh(const RCP< const Basic > &arg)
Canonicalize Tanh:
Definition: functions.cpp:2288
RCP< const Basic > asin(const RCP< const Basic > &arg)
Canonicalize ASin:
Definition: functions.cpp:1367
RCP< const Basic > cosh(const RCP< const Basic > &arg)
Canonicalize Cosh:
Definition: functions.cpp:2210
RCP< const Basic > exp(const RCP< const Basic > &x)
Returns the natural exponential function E**x = pow(E, x)
Definition: pow.cpp:271
RCP< const Basic > atanh(const RCP< const Basic > &arg)
Canonicalize ATanh:
Definition: functions.cpp:2492
RCP< const Basic > acosh(const RCP< const Basic > &arg)
Canonicalize ACosh:
Definition: functions.cpp:2459
RCP< const Basic > asinh(const RCP< const Basic > &arg)
Canonicalize ASinh:
Definition: functions.cpp:2374
RCP< const Basic > log(const RCP< const Basic > &arg)
Returns the Natural Logarithm from argument arg
Definition: functions.cpp:1772