code: function(expr, context) {
        if(expr.type === "OperatorNode" && expr.op === '^' && expr.args[0].equals(context.variable) && context.isConstant(expr.args[1])) {
          // Simplify Exponent if constant
          var exponentValue = getNumericValue(expr.args[1]);
          if(exponentValue === -1) {
            return new FunctionNode('log', [
              new FunctionNode('abs', [
                context.variable.clone()
              ])
            ]);
          } else {
            return new OperatorNode('*', 'multiply', [
              new OperatorNode('/', 'divide', [
                new ConstantNode(1),
                new OperatorNode('+', 'add', [
                  expr.args[1].clone(),
                  new ConstantNode(1)
                ])
              ]),
              new OperatorNode('^', 'pow', [
                expr.args[0].clone(),
                new OperatorNode('+', 'add', [
                  expr.args[1].clone(),
                  new ConstantNode(1)
                ])
              ])
            ]);
          }
        }
      }
docs: integral(x^c, x) = 1/(c+1) * x^(c+1) and integral(x^(-1)) = log(x)