code: def test_softmax_expr():
      expr = ast.SoftmaxExpr([ast.NumVal(2.0), ast.NumVal(3.0)])
  
      expected_code = """
  <?php
  function score(array $input) {
      return softmax(array(2.0, 3.0));
  }
  function softmax(array $x) {
      $size = count($x);
      $result = array();
      $m = max($x);
      $sum = 0.0;
      for ($i = 0; $i < $size; ++$i) {
          $result[$i] = exp($x[$i] - $m);
          $sum += $result[$i];
      }
      for ($i = 0; $i < $size; ++$i) {
          $result[$i] /= $sum;
      }
      return $result;
  }
  """
  
      interpreter = PhpInterpreter()
      assert_code_equal(interpreter.interpret(expr), expected_code)
  
imports: from itertools import product
  import pytest
  from m2cgen import ast
  from m2cgen.interpreters import PhpInterpreter
  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