IntPow.java

/**
 * 
 */
package progen.kernel.functions;

import java.util.List;
import java.util.Map;

import progen.kernel.tree.Node;
import progen.userprogram.UserProgram;

/**
 * Implementación del operador de exponenciación entera, es decir, eleva un
 * número entero a otro número entero, devolviendo un número entero.
 * 
 * @author jirsis
 * @since 2.0
 */
public class IntPow extends NonTerminal {

  private static final long serialVersionUID = 7695120111914304103L;

  /**
   * Constructor por defecto.
   */
  public IntPow() {
    super("double$$int$$int", "^");
  }

  @Override
  public Object evaluate(List<Node> arguments, UserProgram userProgram, Map<String, Object> returnAddr) {
    final Integer base = (Integer) arguments.get(0).evaluate(userProgram, returnAddr);
    final Integer exponent = (Integer) arguments.get(1).evaluate(userProgram, returnAddr);
    return Math.pow(base, exponent);
  }

}