code: function nthRootExponent(node) {
    let newNode = clone(node);
  
    const radicandNode = getRadicandNode(node);
    const rootNode = getRootNode(node);
    const baseNode = radicandNode.args[0];
    const exponentNode = Node.Type.isParenthesis(radicandNode.args[1]) ?
      radicandNode.args[1].content : radicandNode.args[1];
    if (rootNode.equals(exponentNode)) {
      newNode = baseNode;
      return Node.Status.nodeChanged(
        ChangeTypes.CANCEL_EXPONENT_AND_ROOT, node, newNode);
    }
    else if (Node.Type.isConstant(rootNode) && Node.Type.isConstant(exponentNode)) {
      const rootValue = parseFloat(rootNode.value);
      const exponentValue = parseFloat(exponentNode.value);
      if (rootValue % exponentValue === 0) {
        const newRootValue = rootValue/exponentValue;
        const newRootNode = Node.Creator.constant(newRootValue);
  
        newNode = Node.Creator.nthRoot(baseNode, newRootNode);
        return Node.Status.nodeChanged(
          ChangeTypes.CANCEL_EXPONENT, node, newNode);
      }
      else if (exponentValue % rootValue === 0) {
        const newExponentValue = exponentValue/rootValue;
        const newExponentNode = Node.Creator.constant(newExponentValue);
  
        newNode = Node.Creator.operator('^', [baseNode, newExponentNode]);
        return Node.Status.nodeChanged(
          ChangeTypes.CANCEL_ROOT, node, newNode);
      }
    }
  
    return Node.Status.noChange(node);
  }
docs: Returns the nthRoot evaluated for an exponent node. Expects an exponent under the radicand. Cancels the root and the exponent if possible. Three cases: equal: nthRoot(2^x, x) = 2 root > exponent: nthRoot(x^2, 4) = nthRoot(x, 2) exponent > root: nthRoot(x^4, 2) = x^2