whole_func_string: 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
            ]);
          }
        }
      }
func_code_string: 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
            ]);
          }
        }
      }
func_documentation_string: integral(log(x), x) = x*log(x) - x