code: def interpret_softmax_expr(self, expr, **kwargs):
      self.with_vectors = True
      self.with_softmax_expr = True
  
      var_name = self._cg.add_var_declaration(expr.output_size)
      nested = [
          self._do_interpret(expr, **kwargs) for expr in expr.exprs
      ]
      func_inv = self._cg.function_invocation(
          self.softmax_function_name,
          self._cg.vector_init(nested),
          expr.output_size,
          var_name,
      )
      self._cg.add_code_line(f"{func_inv};")
      return var_name
  
file_path: m2cgen/m2cgen/interpreters/c/interpreter.py
imports: from pathlib import Path
  from m2cgen.ast import BinNumOpType
  from m2cgen.interpreters.c.code_generator import CCodeGenerator
  from m2cgen.interpreters.interpreter import ImperativeToCodeInterpreter
  from m2cgen.interpreters.mixins import LinearAlgebraMixin, PowExprFunctionMixin
  from m2cgen.interpreters.utils import get_file_content
label_desc: Use image node_id 5 for calling the CInterpreter obj's underlying member method code with example usage: obj.interpret_softmax_expr(expr) and returns: var_name