пример с неочевидной разбивкой на подвыражения
Даже для человека не совсем очевидно, что его можно переписать так, сократив количество операций умножения с четырех до одного:
inj
= i*n + j; // однократное вычисление подвыражения
up
= val[inj - n]; // избавление от лишнего сложения
down
= val[inj + n]; // избавления от одного сложения и умножения
left
= val[inj - 1]; // избавление от одного сложения и умножения
right
= val[inj + 1]; // избавление от одного сложения и умножения
sum = up + down + left + right;