lib/integral.js
function(expr, context, subIntegral) {
      if(expr.type === 'FunctionNode' && expr.name === 'log' && expr.args.length === 1) {
        if(expr.args.length === 1 && expr.args[0].equals(context.variable)) {
          return new OperatorNode('-', 'subtract', [
            new OperatorNode('*', 'multiply', [
              context.variable,
              new FunctionNode('log', [context.variable])
            ]),
            context.variable
          ]);
        }
      }
    }
function(expr, context, subIntegral) {
      if(expr.type === 'FunctionNode' && expr.name === 'log' && expr.args.length === 1) {
        if(expr.args.length === 1 && expr.args[0].equals(context.variable)) {
          return new OperatorNode('-', 'subtract', [
            new OperatorNode('*', 'multiply', [
              context.variable,
              new FunctionNode('log', [context.variable])
            ]),
            context.variable
          ]);
        }
      }
    }
integral(log(x), x) = x*log(x) - x