Please rid me of this goto

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Thu Jun 23 10:45:05 PDT 2016


On 6/23/16 1:22 PM, Andrei Alexandrescu wrote:
> So I was looking for an efficient exponentiation implementation, and
> http://www.stepanovpapers.com/PAM.pdf has a nice discussion starting at
> page 54. Stepanov's solution, however, duplicates code, so I eliminated it:
>
> https://dpaste.dzfl.pl/e53acb41885a
>
> The cost is the use of one goto. Can the code be restructured to not
> need it?

Why is this not the same?


    for(;;) // previously outer:
    {
         if (e % 2 != 0)
         {
             r = mul(r, b, overflow);
             if (e == 1) return r;
         }
         b = mul(b, b, overflow);
         e /= 2;
    }

-Steve



More information about the Digitalmars-d mailing list