code: def test_softmax_expr():
      expr = ast.SoftmaxExpr([ast.NumVal(2.0), ast.NumVal(3.0)])
  
      expected_code = """
  public class Model {
      public static double[] score(double[] input) {
          return softmax(new double[] {2.0, 3.0});
      }
      private static double[] softmax(double[] x) {
          int size = x.length;
          double[] result = new double[size];
          double max = x[0];
          for (int i = 1; i < size; ++i) {
              if (x[i] > max)
                  max = x[i];
          }
          double sum = 0.0;
          for (int i = 0; i < size; ++i) {
              result[i] = Math.exp(x[i] - max);
              sum += result[i];
          }
          for (int i = 0; i < size; ++i)
              result[i] /= sum;
          return result;
      }
  }
  """
  
      interpreter = JavaInterpreter()
      assert_code_equal(interpreter.interpret(expr), expected_code)
  
imports: from itertools import product
  import pytest
  from m2cgen import ast
  from m2cgen.interpreters import JavaInterpreter
  from tests.utils import assert_code_equal
label_desc: Use image node_id 25 for calling a global function with example usage: test_softmax_expr() without return types