--- /dev/null
+function f = extended_powell1(x)
+ ##
+ ## The extended Powell function. See Dennis & Schnabel, Appendix B,
+ ## problem #2.
+ ##
+ ## This function has a minimum at x=(0,0,...,0) with f(x) == 0. The
+ ## suggested starting point is x0=(3, -1, 0, 1,..., 3, -1, 0, 1).
+ ## Since the number of arguments is variable, we take a vector
+ ## instead of its individual components.
+ ##
+ n = length(x);
+
+ if (odd(n))
+ ## 'm' below must be an integer.
+ f = NA;
+ return;
+ end
+
+ m = n / 4;
+ f = 0;
+
+ % The extended Powell is simply a sum of Powell
+ % applications.
+ for k = [ 1 : m ]
+ y1 = x(4*k - 3);
+ y2 = x(4*k - 2);
+ y3 = x(4*k - 1);
+ y4 = x(4*k);
+
+ f_k = powell(y1,y2,y3,y4);
+ f = f + f_k;
+ end
+end