Using Optim.jl with only_fg!, what is the "Function value" that prints in the trace?

I am trying to execute the following optimization.

res = optimize( Optim.only_fg!((F, G, Az)->fg!(F,G,first(Az),x,z)), [100000.0],[500000.0],[400000.0],Fminbox(GradientDescent()),Optim.Options(iterations=10,show_trace=true,f_tol=1e-7,extended_trace=true,g_tol=1e-8))

where I have defined

function fg!(F,G,Az,xVal,zVal)
  # common computations not done in this example
  if G != nothing
   	G .= dX3dAz(Az,xVal,zVal)
  end
  if F != nothing
    return X3(Az,xVal,zVal)
  end
end

When I look at the trace printout, the three columns are: Iter Function value Gradient norm. The value printed out for “Function value” does not match what I would expect for my function X3. Could someone explain what exactly the “Function value” is being calculated from? Is it a weighting from the function and gradient? Is this discussed in the documentation anywhere? I wasn’t able to find anything.

Also, I know I haven’t included the functions X3 and dX3dAz as they very long, complicated expressions. However, I hope my question can be answered regardless. Thank you.