code: def log(v, base=None) -> Expression[float]:
      """
      If base is specified, calculates the logarithm of the given value to the given base.
      Otherwise, calculates the natural logarithm of the given value.
      """
      if base is None:
          return _unary_op("log", v)
      else:
          return _binary_op("log", base, v)
  
imports: from typing import Union
  from pyflink import add_version_doc
  from pyflink.java_gateway import get_gateway
  from pyflink.table.expression import Expression, _get_java_expression, TimePointUnit, JsonOnNull
  from pyflink.table.types import _to_java_data_type, DataType
  from pyflink.table.udf import UserDefinedFunctionWrapper
  from pyflink.util.java_utils import to_jarray, load_java_class
label_desc: Use image node_id 45 for calling a global function with example usage: log(v, base) and returns: _unary_op, _binary_op