107 std::vector<U> op1 = lft->evaluate();
108 std::vector<U> op2 = rgt->evaluate();
109 std::vector<T> result;
111 if(op1.size() == op2.size()) {
112 for(
typename std::vector<U>::size_type i = 0; i < op1.size(); ++i) {
113 result.push_back((*fun.function)(op1[i], op2[i]));
115 }
else if(op1.size() == 1) {
116 for(
typename std::vector<U>::size_type i = 0; i < op2.size(); ++i) {
117 result.push_back((*fun.function)(op1[0], op2[i]));
119 }
else if(op2.size() == 1) {
120 for(
typename std::vector<U>::size_type i = 0; i < op1.size(); ++i) {
121 result.push_back((*fun.function)(op1[i], op2[0]));
125 "Inconsistent array dimensions.");
145 if(fun.precedence >= 0) {
147 if(fun.precedence <= precedence) os <<
"(";
148 lft->print(os, fun.precedence - 1);
150 rgt->print(os, fun.precedence);
151 if(fun.precedence <= precedence) os <<
")";
154 os << fun.name <<
'(';