public:
static unsigned register_new(function_options const & opt);
static unsigned find_function(const std::string &name, unsigned nparams);
- unsigned getserial(void) const {return serial;}
+ unsigned get_serial(void) const {return serial;}
std::string get_name(void) const;
// member variables
}
#define is_ex_the_function(OBJ, FUNCNAME) \\
- (is_ex_exactly_of_type(OBJ, function) && static_cast<GiNaC::function *>(OBJ.bp)->getserial() == function_index_##FUNCNAME)
+ (is_ex_exactly_of_type(OBJ, function) && static_cast<GiNaC::function *>(OBJ.bp)->get_serial() == function_index_##FUNCNAME)
} // namespace GiNaC
return seq.size();
}
-
/** Return the ith term in the series when represented as a sum. */
ex pseries::op(int i) const
{
return seq[i].rest * power(var - point, seq[i].coeff);
}
-
ex &pseries::let_op(int i)
{
throw (std::logic_error("let_op not defined for pseries"));
}
-
/** Return degree of highest power of the series. This is usually the exponent
* of the Order term. If s is not the expansion variable of the series, the
* series is examined termwise. */
return *this;
}
-
/** Evaluate coefficients. */
ex pseries::eval(int level) const
{
return (new pseries(relational(var,point), new_seq))->setflag(status_flags::dynallocated | status_flags::evaluated);
}
-
/** Evaluate coefficients numerically. */
ex pseries::evalf(int level) const
{
return (new pseries(relational(var,point), new_seq))->setflag(status_flags::dynallocated | status_flags::evaluated);
}
-
ex pseries::subs(const lst & ls, const lst & lr) const
{
// If expansion variable is being substituted, convert the series to a
return (new pseries(relational(var,point.subs(ls, lr)), newseq))->setflag(status_flags::dynallocated);
}
-
/** Implementation of ex::expand() for a power series. It expands all the
* terms individually and returns the resulting series as a new pseries. */
ex pseries::expand(unsigned options) const
->setflag(status_flags::dynallocated | status_flags::expanded);
}
-
/** Implementation of ex::diff() for a power series. It treats the series as a
* polynomial.
* @see ex::diff */
}
}
-
-/** Convert a pseries object to an ordinary polynomial.
- *
- * @param no_order flag: discard higher order terms */
ex pseries::convert_to_poly(bool no_order) const
{
ex e;
return e;
}
-
-/** Returns true if there is no order term, i.e. the series terminates and
- * false otherwise. */
bool pseries::is_terminating(void) const
{
return seq.size() == 0 || !is_order_function((seq.end()-1)->rest);
// non-virtual functions in this class
public:
+ /** Get the expansion variable. */
+ ex get_var(void) const {return var;}
+
+ /** Get the expansion point. */
+ ex get_point(void) const {return point;}
+
+ /** Convert the pseries object to an ordinary polynomial.
+ *
+ * @param no_order flag: discard higher order terms */
ex convert_to_poly(bool no_order = false) const;
- bool is_compatible_to(const pseries &other) const {return var.compare(other.var) == 0 && point.compare(other.point) == 0;}
+
+ /** Check whether series is compatible to another series (expansion
+ * variable and point are the same. */
+ bool is_compatible_to(const pseries &other) const {return var.is_equal(other.var) && point.is_equal(other.point);}
+
+ /** Check whether series has the value zero. */
bool is_zero(void) const {return seq.size() == 0;}
+
+ /** Returns true if there is no order term, i.e. the series terminates and
+ * false otherwise. */
bool is_terminating(void) const;
+
ex add_series(const pseries &other) const;
ex mul_const(const numeric &other) const;
ex mul_series(const pseries &other) const;
public:
void assign(const ex & value);
void unassign(void);
- void setname(const std::string & n) { name = n; }
- std::string getname(void) const { return name; }
+ void set_name(const std::string & n) { name = n; }
+ std::string get_name(void) const { return name; }
private:
std::string & autoname_prefix(void);