// This version is derived from m.c and is intended imroving the initial constants. #include "h.h" typedef struct {R p1; R p2; R per;} Suv; typedef struct {pt pos[N];} sv; // R v[] = {6.5106, 0.505328, 0.647584, 0.4696664}; R v[] = {6.53664, 0.5053325, 0.6475837, 0.4696658}; void ce(int j, sv t, sv u){R e = 0; {int n=N; while(n--){int dd=D; while(dd--) e += s(t.pos[n].dv[dd].x - u.pos[n].dv[dd].x ) +s(t.pos[n].dv[dd].xd - u.pos[n].dv[dd].xd);}} printf("v[1]=%15.11f; e=%15.11f\n", (d)v[1], (d)e);} int main(){assert(N==3); sv t = {{{{{-1, 0}, {0, -2*v[3]}}, 1}, // Broucke-Hennon {{{0.5, -v[1]}, {-v[2], v[3]}}, 1}, {{{0.5, v[1]}, {v[2], v[3]}}, 1}}}; sv u = t; spin(t.pos, v[0], 1, 500); ce(-1, t, u); return 0;}