00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include "SundanceUnaryMinus.hpp"
00032
00033 using namespace Sundance;
00034 using namespace Sundance;
00035
00036 using namespace Sundance;
00037 using namespace Teuchos;
00038
00039 UnaryMinus::UnaryMinus(const RCP<ScalarExpr>& arg)
00040 : UnaryExpr(arg)
00041 {}
00042
00043 Set<MultiSet<int> > UnaryMinus::internalFindQ_W(int order, const EvalContext& context) const
00044 {
00045 int verb = context.setupVerbosity();
00046 Tabs tab(0);
00047 SUNDANCE_MSG2(verb, tab << "UnaryMinus::internalFindQ_W(" << order << ")");
00048 Set<MultiSet<int> > rtn;
00049 if (order > 1) return rtn;
00050
00051 if (order==1)
00052 {
00053
00054
00055 rtn.put(makeMultiSet<int>(0));
00056 }
00057 else
00058 {
00059
00060 const Set<MultipleDeriv>& w
00061 = evaluatableArg()->findW(0, context);
00062 if (w.size() > 0)
00063 {
00064 rtn.put(makeMultiSet<int>(0));
00065 }
00066 }
00067 return rtn;
00068 }
00069
00070 std::ostream& UnaryMinus::toText(std::ostream& os, bool paren) const
00071 {
00072 if (paren) os << "(";
00073 os << "-" << arg().toString();
00074 if (paren) os << ")";
00075 return os;
00076 }
00077
00078 XMLObject UnaryMinus::toXML() const
00079 {
00080 XMLObject rtn("UnaryMinus");
00081 rtn.addChild(arg().toXML());
00082 return rtn;
00083 }