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
          ]);
        }
      }
    }
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
integral ( log ( x ) x ) = x * log ( x ) - x