* Implementation of GiNaC's non-commutative products of expressions. */
/*
- * GiNaC Copyright (C) 1999-2004 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2005 Johannes Gutenberg University Mainz, Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
int ncmul::degree(const ex & s) const
{
+ if (is_equal(ex_to<basic>(s)))
+ return 1;
+
// Sum up degrees of factors
int deg_sum = 0;
exvector::const_iterator i = seq.begin(), end = seq.end();
int ncmul::ldegree(const ex & s) const
{
+ if (is_equal(ex_to<basic>(s)))
+ return 1;
+
// Sum up degrees of factors
int deg_sum = 0;
exvector::const_iterator i = seq.begin(), end = seq.end();
ex ncmul::coeff(const ex & s, int n) const
{
+ if (is_equal(ex_to<basic>(s)))
+ return n==1 ? _ex1 : _ex0;
+
exvector coeffseq;
coeffseq.reserve(seq.size());
++i;
}
// all factors checked
- GINAC_ASSERT(!all_commutative); // not all factors should commute, because this is a ncmul();
+ GINAC_ASSERT(!all_commutative); // not all factors should commutate, because this is a ncmul();
return all_commutative ? return_types::commutative : return_types::noncommutative;
}