Повышение эффективности цикла C

У меня есть некоторый рабочий код c, который я хочу сделать более эффективным. Я знаю, что лучше избегать высказываний в циклах, но я изо всех сил пытаюсь обойти это здесь. Может ли кто-нибудь предложить, как я мог бы сделать следующий код более эффективным?

for(iy=0;iy<Ny;iy++) { for(ix=0;ix<Nx;ix++) { if (ix==0) { pudx = (u[1][iy] + u[Nx-1][iy] - 2.0*u[0][iy])/(calc1); } else if (ix==Nx-1) { pudx = (u[0][iy] + u[Nx-2][iy] - 2.0*u[Nx-1][iy])/(calc1); } else { pudx = (u[ix+1][iy] + u[ix-1][iy] - 2.0*u[ix][iy])/(calc1); } if (iy==0) { pudy = (u[ix][1] + u[ix][Ny-1] - 2.0*u[ix][0])/(calc2); } else if (iy==Ny-1) { pudy = (u[ix][0] + u[ix][Ny-2] - 2.0*u[ix][Ny-1])/(calc2); } else { pudy = (u[ix][iy+1] + u[ix][iy-1] - 2.0*u[ix][iy])/(calc2); } u_new[ix][iy] = 2.0*u[ix][iy] - u_old[ix][iy] + calc*(pudx+pudy); } } 

Я знаю, что такая оптимизация может быть выполнена с помощью компилятора, но я бы хотел повысить эффективность с помощью флага -o (без оптимизации компилятора).

После @JohnBollinger: (непроверенный, очевидно)


 unsigned ix, iy; for(iy=0;iy