Fhernd icon

ExponenciacionEficiente.gcl

Fhernd | PRO | 10/15/16 03:33:29 PM UTC | 0 ⭐ | 10430 👁️ | Never ⏰ | []
F# |

280 B

|

None

|

0 👍

/

0 👎

[Ctx C: a, b: nat & b>=0
    {Q: T}
 
    x, y, z := a, b, 1;
    
    {Inv P: y>=0 & z*x^y = a^b}
    
    {cota t: y}
    
    do y > 1 ->
        if y mod 2 = 0 -> 
            x, y := x * x, y / 2;
        [] y mod 2 != 0 -> 
            z, x, y := z * x, x * x, (y - 1) / 2;
        fi
    od
    
    z = x * y;
    
    {R: z = a^b}
]

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎