کاهش قدرت
مثال  روش کاهش قدرت > آخرین ضرب

در آخر این دو حلقه ب که  تنها با یک عمل ضرب (در 0330) در حلقه بیرونی و هیچ ضرب در حلقه درونی باقی می مانند.
0010 ; for (i = 0, i < n; i++)
0020  {
0030   r1 = #0            ; i = 0
0050   load r2, n
0220   fr3 = #0.0
0340   fr4 = #1.0
0055   r8 = r1 * r2         ; set initial value for r8
0056   r40 = r8 * #8         ; initial value for r8 * 8
0057   r30 = r2 * #8         ; increment for r40
0058   r20 = r8 + r2         ; copied from 0117
0058   r22 = r20 * #8         ; initial value of r22
0040 G0000:
0060   cmp r1, r2           ; i < n
0070   bge G0001
0080
0118   r10 = r40           ; strength reduced expression to r40
0090   ; for (j = 0; j < n; j++)
0100    {
0120 G0002:
0147      cmp r10, r22       ; r10 = 8*(r8 + j) < 8*(r8 + n) = r22
0150      bge G0003
0160
0170      ; A[i,j] = 0.0;
0230      fstore fr3, A[r10]
0240
0245      r10 = r10 + #8      ; strength reduced multiply
0260      br G0002
0270    }
0280 G0003:
0290   ; A[i,i] = 1.0;
0320   r14 = r8 + r1         ; calculate subscript i * n + i
0330   r15 = r14 * #8         ; calculate byte address
0350   fstore fr4, A[r15]
0360
0370   ;i++
0380   r1 = r1 + #1
0385   r8 = r8 + r2         ; strength reduce r8 = r1 * r2
0386   r40 = r40 + r30        ; strength reduce expression r8 * 8
0388   r22 = r22 + r30        ; strength reduce r22 = r20 * 8
0390   br G0000
0400  }
0410 G0001:
در خط 0320 ، r14 مجموع r8 و r1 است ، و r8 و r1 در حلقه افزایش می یابد. ثبات r8 توسط r2 (= n) = افزایش میابد(bumped ) و r1 توسط 1 افزایش میابد . در نتیجه ، r14  در هر بار تکرار حلقه n  + 1 افزایش می یابد. آخرین ضرب حلقه ، در خط  0330 می تواند  با روش کاهش قدرتی با افزودن (r2 + 1) * 8  در هر تکرار  حلقه بهینه شود .
0010 ; for (i = 0, i < n; i++)
0020  {
0030   r1 = #0            ; i = 0
0050   load r2, n
0220   fr3 = #0.0
0340   fr4 = #1.0
0055   r8 = r1 * r2         ; set initial value for r8
0056   r40 = r8 * #8         ; initial value for r8 * 8
0057   r30 = r2 * #8         ; increment for r40
0058   r20 = r8 + r2         ; copied from 0117
0058   r22 = r20 * #8         ; initial value of r22
005A   r14 = r8 + r1         ; copied from 0320
005B   r15 = r14 * #8         ; initial value of r15 (0330)
005C   r49 = r2 + #1
005D   r50 = r49 * #8         ; strength reduced increment
0040 G0000:
0060   cmp r1, r2           ; i < n
0070   bge G0001
0080
0118   r10 = r40           ; strength reduced expression to r40
0090   ; for (j = 0; j < n; j++)
0100    {
0120 G0002:
0147      cmp r10, r22       ; r10 = 8*(r8 + j) < 8*(r8 + n) = r22
0150      bge G0003
0160
0170      ; A[i,j] = 0.0;
0230      fstore fr3, A[r10]
0240
0245      r10 = r10 + #8      ; strength reduced multiply
0260      br G0002
0270    }
0280 G0003:
0290   ; A[i,i] = 1.0;
0320 ; r14 = r8 + r1   killed   ; dead code
0330 ; r15 = r14 * #8   killed   ; strength reduced
0350   fstore fr4, A[r15]
0360
0370   ;i++
0380   r1 = r1 + #1
0385   r8 = r8 + r2         ; strength reduce r8 = r1 * r2
0386   r40 = r40 + r30        ; strength reduce expression r8 * 8
0388   r22 = r22 + r30        ; strength reduce r22 = r20 * 8
0389   r15 = r15 + r50        ; strength reduce r15 = r14 * 8
0390   br G0000
0400  }
0410 G0001:
هنوز کار های بیشتری برای انجام هست. تاشو ثابت(Constant folding)  r1 = 0 را در مقدمه کد  شناسایی میکند ، بنابراین چندین دستورالعمل تمیز می شوند(کاهش میابند). ثبات r8 در حلقه استفاده نمی‌شود ، بنابراین می تواند از بین برود 

علاوه بر این ، r1 فقط برای کنترل حلقه مورد استفاده قرار گرفته است  ، پس r1 را می توان با یک متغیر القایی متفاوت مانند R40 جایگزین کرد. زیرا جایی که متغیر i  از 0 تا  n  تغیر میکند ، ثبات r40 از 0 تا8 * n * n تغییر میکند .
0010 ; for (i = 0, i < n; i++)
0020  {
0030 ; r1 = #0            ; i = 0, becomes dead code
0050   load r2, n
0220   fr3 = #0.0
0340   fr4 = #1.0
0055 ; r8 = #0     killed     ; r8 no longer used
0056   r40 = #0            ; initial value for r8 * 8
0057   r30 = r2 * #8         ; increment for r40
0058 ; r20 = r2     killed     ; r8 = 0, becomes dead code
0058   r22 = r2 * #8         ; r20 = r2
005A ; r14 =    #0  killed     ; r8 = 0, becomes dead code
005B   r15 =    #0         ; r14 = 0
005C   r49 = r2 + #1
005D   r50 = r49 * #8         ; strength reduced increment
005D   r60 = r2 * r30         ; new limit for r40
0040 G0000:
0060 ; cmp r1, r2    killed     ; i < n; induction variable replaced
0065   cmp r40, r60          ; i * 8 * n < 8 * n * n
0070   bge G0001
0080
0118   r10 = r40           ; strength reduced expression to r40
0090   ; for (j = 0; j < n; j++)
0100    {
0120 G0002:
0147      cmp r10, r22       ; r10 = 8*(r8 + j) < 8*(r8 + n) = r22
0150      bge G0003
0160
0170      ; A[i,j] = 0.0;
0230      fstore fr3, A[r10]
0240
0245      r10 = r10 + #8      ; strength reduced multiply
0260      br G0002
0270    }
0280 G0003:
0290   ; A[i,i] = 1.0;
0350   fstore fr4, A[r15]
0360
0370   ;i++
0380 ; r1 = r1 + #1   killed    ; dead code (r40 controls loop)
0385 ; r8 = r8 + r2   killed    ; dead code
0386   r40 = r40 + r30        ; strength reduce expression r8 * 8
0388   r22 = r22 + r30        ; strength reduce r22 = r20 * 8
0389   r15 = r15 + r50        ; strength reduce r15 = r14 * 8
0390   br G0000
0400  }
0410 G0001: