* Implementation of GiNaC's symbolic objects. */
/*
- * GiNaC Copyright (C) 1999 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2000 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
#include "idx.h"
#include "debugmsg.h"
+#ifndef NO_GINAC_NAMESPACE
namespace GiNaC {
+#endif // ndef NO_GINAC_NAMESPACE
//////////
// default constructor, destructor, copy constructor assignment operator and helpers
return new symbol(*this);
}
+void symbol::print(ostream & os, unsigned upper_precedence) const
+{
+ debugmsg("symbol print",LOGLEVEL_PRINT);
+ os << name;
+}
+
+void symbol::printraw(ostream & os) const
+{
+ debugmsg("symbol printraw",LOGLEVEL_PRINT);
+ os << "symbol(" << "name=" << name << ",serial=" << serial
+ << ",hash=" << hashvalue << ",flags=" << flags << ")";
+}
+
+void symbol::printtree(ostream & os, unsigned indent) const
+{
+ debugmsg("symbol printtree",LOGLEVEL_PRINT);
+ os << string(indent,' ') << name << " (symbol): "
+ << "serial=" << serial
+ << ", hash=" << hashvalue << " (0x" << hex << hashvalue << dec << ")"
+ << ", flags=" << flags << endl;
+}
+
+void symbol::printcsrc(ostream & os, unsigned type, unsigned upper_precedence) const
+{
+ debugmsg("symbol print csrc", LOGLEVEL_PRINT);
+ os << name;
+}
+
bool symbol::info(unsigned inf) const
{
if (inf==info_flags::symbol) return true;
- if (inf==info_flags::polynomial || inf==info_flags::integer_polynomial || inf==info_flags::rational_polynomial || inf==info_flags::rational_function) {
+ if (inf==info_flags::polynomial ||
+ inf==info_flags::integer_polynomial ||
+ inf==info_flags::cinteger_polynomial ||
+ inf==info_flags::rational_polynomial ||
+ inf==info_flags::crational_polynomial ||
+ inf==info_flags::rational_function) {
return true;
} else {
return basic::info(inf);
ex symbol::coeff(symbol const & s, int const n) const
{
if (compare_same_type(s)==0) {
- return n==1 ? exONE() : exZERO();
+ return n==1 ? _ex1() : _ex0();
} else {
- return n==0 ? *this : exZERO();
+ return n==0 ? *this : _ex0();
}
}
{
GINAC_ASSERT(ls.nops()==lr.nops());
#ifdef DO_GINAC_ASSERT
- for (int i=0; i<ls.nops(); i++) {
+ for (unsigned i=0; i<ls.nops(); i++) {
GINAC_ASSERT(is_ex_exactly_of_type(ls.op(i),symbol)||
is_ex_of_type(ls.op(i),idx));
}
#endif // def DO_GINAC_ASSERT
- for (int i=0; i<ls.nops(); i++) {
+ for (unsigned i=0; i<ls.nops(); i++) {
if (is_ex_exactly_of_type(ls.op(i),symbol)) {
if (compare_same_type(ex_to_symbol(ls.op(i)))==0) return lr.op(i);
}
{
if (asexinfop->is_assigned) {
asexinfop->is_assigned=0;
- asexinfop->assigned_expression=exZERO();
+ asexinfop->assigned_expression=_ex0();
}
setflag(status_flags::evaluated);
}
{
}
+#ifndef NO_GINAC_NAMESPACE
} // namespace GiNaC
+#endif // ndef NO_GINAC_NAMESPACE