Strength Reduction

This optimization replaces expensive operations with cheaper operations, reducing either execution time or code size. Examples include using left or right shifts instead of multiplications and divisions by constant powers of two.