7 /* sort forces by fabs before additinal. Additional by pair */
10 /* add third part of taylor series */
13 /* sort energy. impulse and moment by fabs before additinal. Additional by pair. Very slow */
14 /* #define SORT_ENERGYSTAR */
24 Vector c; /* coordinate */
25 Vector v; /* velocity */
26 Vector a; /* acceleration */
35 Vector *forces; /* forces between i-th and j-th stars */
40 double potentialEnergy;
57 #define CNT_FARRAY(n) ( (((n)+1)*((n)+2)) >> 1 )
60 #define GET_FORCE(g, i, j) ( (g)->forces + CNT_FARRAY(n) - CNT_FARRAY(n-i) + (j) - (i) - 1)
62 #define GET_FORCE(g, i, j) ( (g)->forces + (((j)*((j)+1))>>1) + i )
65 void initGalaxy(Galaxy *galaxy, u_int32_t nstars);
66 void forceGalaxy(Galaxy *galaxy);
67 void accelerationGalaxy(Galaxy *galaxy);
68 void stepGalaxy(Galaxy *galaxy, double delta);
69 void unstepGalaxy(Galaxy *galaxy, double delta);
70 void freeGalaxy(Galaxy *galaxy);
71 void EnergyImpulseGalaxy(Galaxy *galaxy);
72 void initLiveGalaxy(Galaxy *galaxy);
73 void liveGalaxy(Galaxy *galaxy, pthread_mutex_t *mutex);
74 void printStar(Star *star);