If I have a function of list argument (presumably with large number of entries), how can I pass it to NonlinearModelFit ? I don't want to pass it by pattern checking ( f[x_?(VectorQ[#, Numeric!]&)] ) because apparently it turns off some intermediate operations and heavily slows down the fitting. Example: f[x_, a_] := Exp[-Sin[{x, x}.a]]; NonlinearModelFit[RandomReal[{0, 1}, {10, 3}], f[x, a], {{a, {1, 2}}}, x] Answer I've always done it like this, and I've done fits with a few hundred parameters so it isn't that much of a pain. The point is that you define the function f to take a vector input for x and a . Then you define a vector of variables, {x 1 , x 2 ,....} and that is the fourth argument to NonlinearModelFit . The second argument to NonlinearModelFit needs to be a scalar function, where all the matrix expansions have happened already. In the case here, f[variables, parameters] evaluates the matrix product before it does any fitting. parameters = Arra