#include #include #include #define NATOM 100000 int main() { int i, j, k; double ddsum, dx, dy, dz, dxA, dyA, dzA, dxB, dyB, dzB; double* dsum; dsum = (double*)malloc(NATOM*sizeof(double)); system("date"); for (i = 0; i < NATOM; i++) { dsum[i] = 0.0; } for (i = 0; i < NATOM; i++) { for (j = 0; j < NATOM; j++) { dx = j*5.0; dy = j*6.0 - 7.0; dz = j*2.0 + 3.0; dsum[i] += dx*dx + dy*dy + dz*dz; } } ddsum = 0.0; for (i = 0; i < NATOM; i++) { ddsum += dsum[i]; } printf("DDsum = %16.8e\n", ddsum); system("date"); for (i = 0; i < NATOM; i++) { dsum[i] = 0.0; } for (i = 0; i < NATOM; i++) { for (j = 0; j < NATOM-1; j += 2) { dxA = j*5.0; dyA = j*6.0 - 7.0; dzA = j*2.0 + 3.0; dxB = (j+1)*5.0; dyB = (j+1)*6.0 - 7.0; dzB = (j+1)*2.0 + 3.0; dsum[i] += dxA*dxA + dyA*dyA + dzA*dzA + dxB*dxB + dyB*dyB + dzB*dzB; } if (j != NATOM) { dxA = j*5.0; dyA = j*6.0 - 7.0; dzA = j*2.0 + 3.0; dsum[i] += dxA*dxA + dyA*dyA + dzA*dzA; } } ddsum = 0.0; for (i = 0; i < NATOM; i++) { ddsum += dsum[i]; } printf("DDsum = %16.8e\n", ddsum); system("date"); }