code: def test_softmax_expr():
      expr = ast.SoftmaxExpr([ast.NumVal(2.0), ast.NumVal(3.0)])
  
      expected_code = """
  function Score([double[]] $InputVector) {
      return Softmax $(@($(2.0), $(3.0)))
  }
  function Softmax([double[]] $x) {
      [int] $size = $x.Length
      [double[]] $result = @(0) * $size
      [double] $max = $x[0]
      for ([int] $i = 1; $i -lt $size; ++$i) {
          if ($x[$i] -gt $max) {
              $max = $x[$i]
          }
      }
      [double] $sum = 0.0
      for ([int] $i = 0; $i -lt $size; ++$i) {
          $result[$i] = [math]::Exp($x[$i] - $max)
          $sum += $result[$i]
      }
      for ([int] $i = 0; $i -lt $size; ++$i) {
          $result[$i] /= $sum;
      }
      return $result
  }
  """
  
      interpreter = PowershellInterpreter()
      assert_code_equal(interpreter.interpret(expr), expected_code)
  
imports: from itertools import product
  import pytest
  from m2cgen import ast
  from m2cgen.interpreters import PowershellInterpreter
  from tests.utils import assert_code_equal
label_desc: Use image node_id 18 for calling a global function with example usage: test_softmax_expr() without return types