why isn't xtable the first argument of ff and cff in FindMinimum:
In[1]:= xmax = 2.;
In[2]:= n = 10; nk = 15;
In[4]:= ktable = Table[Pi (i - 1)/nk; 2 Pi Cos[phi] // N, {i, 1, nk}];
In[9]:= xtable := RandomReal[{-xmax, xmax}, {n}];
In[6]:= ff[xtable_, ktable_, nk_, n_] :=
Module[{is, ik},
Min[Abs[Table[
Sum[Exp[I ktable[[ik]] xtable[[is]]], {is, 1, n}], {ik, 1,
nk}]]]];
In[7]:= cff =
Compile[{{xtable, _Real, 1}, {ktable, _Real,
1}, {nk, _Integer}, {n, _Integer}},
Module[{is, ik},
Min[Abs[Table[
Sum[Exp[I ktable[[ik]] xtable[[is]]], {is, 1, n}], {ik, 1,
nk}]]]],
"RuntimeOptions" -> {"EvaluateSymbolically" -> False},
CompilationTarget -> "C"];
In[10]:= FindMinimum[{ff[xtable, ktable, nk, n]}, varsp,
Compiled -> True]
During evaluation of In[10]:= FindMinimum::fmgz: Encountered a gradient that is effectively zero. The result returned may not be a minimum; it may be a maximum or a saddle point.
Out[10]= {1.74504, {varsp -> 1.}}
In[11]:= FindMinimum[{cff[xtable, ktable, nk, n]}, varsp,
Compiled -> True]
During evaluation of In[11]:= FindMinimum::fmgz: Encountered a gradient that is effectively zero. The result returned may not be a minimum; it may be a maximum or a saddle point.
Out[11]= {1.15655, {varsp -> 1.}}