* Implementation of GiNaC's overloaded operators. */
/*
- * GiNaC Copyright (C) 1999-2003 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
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <iostream>
// ncmul::eval()'s rule to pull out commutative elements we need to check
// only one of the elements.
if (rh.return_type()==return_types::commutative ||
- lh.return_type()==return_types::commutative)
+ lh.return_type()==return_types::commutative) {
return (new mul(lh,rh))->setflag(status_flags::dynallocated);
- else
+ } else {
return (new ncmul(lh,rh))->setflag(status_flags::dynallocated);
+ }
}
/** Used internally by operator-() and friends to change the sign of an argument. */
const numeric operator-(const numeric & lh)
{
- return _num_1.mul(lh);
+ return _num_1_p->mul(lh);
}
/** Numeric prefix increment. Adds 1 and returns incremented number. */
numeric& operator++(numeric & rh)
{
- rh = rh.add(_num1);
+ rh = rh.add(*_num1_p);
return rh;
}
/** Numeric prefix decrement. Subtracts 1 and returns decremented number. */
numeric& operator--(numeric & rh)
{
- rh = rh.add(_num_1);
+ rh = rh.add(*_num_1_p);
return rh;
}
const numeric operator++(numeric & lh, int)
{
numeric tmp(lh);
- lh = lh.add(_num1);
+ lh = lh.add(*_num1_p);
return tmp;
}
const numeric operator--(numeric & lh, int)
{
numeric tmp(lh);
- lh = lh.add(_num_1);
+ lh = lh.add(*_num_1_p);
return tmp;
}
{
print_context *p = get_print_context(s);
if (p == 0)
- set_print_context(s, print_context(s, options));
+ set_print_context(s, print_dflt(s, options));
else
p->options = options;
}
{
print_context *p = get_print_context(os);
if (p == 0)
- e.print(print_context(os));
+ e.print(print_dflt(os));
else
e.print(*p);
return os;
std::ostream & dflt(std::ostream & os)
{
- set_print_context(os, print_context(os));
+ set_print_context(os, print_dflt(os));
set_print_options(os, 0);
return os;
}