variables that are not necessarily linear functions of the loop counter; for example, the loop j = 1; for (i = 0; i < 10; ++i) { j = j << 1; } may be converted to for (i = 0; i < 10; ++i) { j = 1 << (i+1); } See also Mathematical induction References Further reading Compiler optimizations