#include "fadiff.h" using namespace std; template void vplus(D_u (&u)[n], D_v (&v)[n], D_r (&r)[n]) { for (int j = 0; j void vminus(D_u (&u)[n], D_v (&v)[n], D_r (&r)[n]) { for (int j = 0; j void ktimesv(D_k k, D_v (&v)[n], D_r (&r)[n]) { for (int j = 0; j D magnitude_squared(D (&x)[n]) { D r = 0.0; for (int j = 0; j D magnitude(D (&x)[n]) {return sqrt(magnitude_squared(x));} template D distance_squared(D (&u)[n], D (&v)[n]) { D t[n]; vminus(u, v, t); return magnitude_squared(t);} template D distance(D (&u)[n], D (&v)[n]) { return sqrt(distance_squared(u, v));} template D gradient(F f(F (&)[n]), D (&x)[n], D (&f_gradient)[n]) { F g_x[n], y; for (int k = 0; k D multivariate_argmin(F f(F (&)[n]), D (&x)[n], D (&x_star)[n]) { D fx, gx[n], eta = 1e-5, t[n], x_prime[n], fx_prime; int i = 0; fx = gradient(f, x, gx); for (int j = 0; j