* tinfo_key and the hash value. */
basic::basic(const basic & other) : tinfo_key(other.tinfo_key), flags(other.flags & ~status_flags::dynallocated), hashvalue(other.hashvalue)
{
- GINAC_ASSERT(typeid(*this) == typeid(other));
}
/** basic assignment operator: the other object might be of a derived class. */
* @see basic::dbgprinttree */
void basic::dbgprint() const
{
- this->print(std::cerr);
+ this->print(print_dflt(std::cerr));
std::cerr << std::endl;
}
return map(map_evalm);
}
+/** Function object to be applied by basic::eval_integ(). */
+struct eval_integ_map_function : public map_function {
+ ex operator()(const ex & e) { return eval_integ(e); }
+} map_eval_integ;
+
+/** Evaluate integrals, if result is known. */
+ex basic::eval_integ() const
+{
+ if (nops() == 0)
+ return *this;
+ else
+ return map(map_eval_integ);
+}
+
/** Perform automatic symbolic evaluations on indexed expression that
* contains this object as the base expression. */
ex basic::eval_indexed(const basic & i) const
* (or a subclass) and their indices are compatible. This function is used
* internally by simplify_indexed().
*
- * @param self First indexed expression; it's base object is *this
+ * @param self First indexed expression; its base object is *this
* @param other Second indexed expression
* @return sum of self and other
* @see ex::simplify_indexed() */
/** Multiply an indexed expression with a scalar. This function is used
* internally by simplify_indexed().
*
- * @param self Indexed expression; it's base object is *this
+ * @param self Indexed expression; its base object is *this
* @param other Numeric value
* @return product of self and other
* @see ex::simplify_indexed() */
* and that at least one dummy index has been found. This functions is
* used internally by simplify_indexed().
*
- * @param self Pointer to first indexed expression; it's base object is *this
+ * @param self Pointer to first indexed expression; its base object is *this
* @param other Pointer to second indexed expression
* @param v The complete vector of factors
* @return true if the contraction was successful, false otherwise