while (!stackRPN.empty()) {
String token = stackRPN.pop();
if (isNumber(token)) {
stackAnswer.push(token);
} else if (isOperator(token)) {
Complex a = complexFormat.parse(stackAnswer.pop());
Complex b = complexFormat.parse(stackAnswer.pop());
if (token.equals("+")) {
stackAnswer.push(complexFormat.format(b.add(a)));
} else if (token.equals("-")) {
stackAnswer.push(complexFormat.format(b.subtract(a)));
} else if (token.equals("*")) {
stackAnswer.push(complexFormat.format(b.multiply(a)));
} else if (token.equals("/")) {
stackAnswer.push(complexFormat.format(b.divide(a)));
}
} else if (isFunction(token)) {
Complex a = complexFormat.parse(stackAnswer.pop());
if (token.equals("abs")) {
stackAnswer.push(complexFormat.format(a.abs()));
} else if (token.equals("acos")) {
stackAnswer.push(complexFormat.format(a.acos()));
} else if (token.equals("arg")) {
stackAnswer.push(complexFormat.format(a.getArgument()));
} else if (token.equals("asin")) {
stackAnswer.push(complexFormat.format(a.asin()));
} else if (token.equals("atan")) {
stackAnswer.push(complexFormat.format(a.atan()));
} else if (token.equals("conj")) {
stackAnswer.push(complexFormat.format(a.conjugate()));
} else if (token.equals("cos")) {
stackAnswer.push(complexFormat.format(a.cos()));
} else if (token.equals("cosh")) {
stackAnswer.push(complexFormat.format(a.cosh()));
} else if (token.equals("exp")) {
stackAnswer.push(complexFormat.format(a.exp()));
} else if (token.equals("imag")) {
stackAnswer.push(complexFormat.format(a.getImaginary()));
} else if (token.equals("log")) {
stackAnswer.push(complexFormat.format(a.log()));
} else if (token.equals("neg")) {
stackAnswer.push(complexFormat.format(a.negate()));
} else if (token.equals("real")) {
stackAnswer.push(complexFormat.format(a.getReal()));
} else if (token.equals("sin")) {
stackAnswer.push(complexFormat.format(a.sin()));
} else if (token.equals("sinh")) {
stackAnswer.push(complexFormat.format(a.sinh()));
} else if (token.equals("sqrt")) {
stackAnswer.push(complexFormat.format(a.sqrt()));
} else if (token.equals("tan")) {
stackAnswer.push(complexFormat.format(a.tan()));
} else if (token.equals("tanh")) {
stackAnswer.push(complexFormat.format(a.tanh()));
} else if (token.equals("pow")) {
Complex b = complexFormat.parse(stackAnswer.pop());
stackAnswer.push(complexFormat.format(b.pow(a)));
}
}
}
if (stackAnswer.size() > 1) {