94 std::vector<U> op1 = lft->evaluate();
95 std::vector<U> op2 = rgt->evaluate();
96 std::vector<T> result;
98 if (op1.size() == op2.size()) {
99 for (
typename std::vector<U>::size_type i = 0; i < op1.size(); ++i) {
100 result.push_back((*fun.function)(op1[i], op2[i]));
102 }
else if (op1.size() == 1) {
103 for (
typename std::vector<U>::size_type i = 0; i < op2.size(); ++i) {
104 result.push_back((*fun.function)(op1[0], op2[i]));
106 }
else if (op2.size() == 1) {
107 for (
typename std::vector<U>::size_type i = 0; i < op1.size(); ++i) {
108 result.push_back((*fun.function)(op1[i], op2[0]));
111 throw OpalException(
"ABinary::evaluate()",
"Inconsistent array dimensions.");
129 if (fun.precedence >= 0) {
131 if (fun.precedence <= precedence) os <<
"(";
132 lft->print(os, fun.precedence - 1);
134 rgt->print(os, fun.precedence);
135 if (fun.precedence <= precedence) os <<
")";
138 os << fun.name <<
'(';