Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.math.mathematica

Topic: Russian Peasant Multiplication / was question on how
Replies: 0  

Advanced Search

Back to Topic List Back to Topic List  
Dr. Robert Kragler

Posts: 19
Registered: 3/18/08
Russian Peasant Multiplication / was question on how
Posted: Jul 2, 2013 12:29 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply


On Sun, Jun 30, 2013 at 3:29 AM, <d.a.paxton@gmail.com> wrote:

Hi Dave,
in Wikipedia you will find an explicit example for the Russian Peasant
Multiplication. This algorithm can be simply programed in Mathematica :

RussianPeasantMultplication[x0_Integer,y0_Integer]:=
Module[{x,y,yS,nD },
x=x0;y=y0; yS=y;
nD=Max @ (Length /@ IntegerDigits @ {x0,y0});
pf=PaddedForm[#,2nD+2]&;
If[x<0,(sgn=Sign[x];x=Abs[x];),(sgn=+1;x=x;)];
While[x>=1,(Print["x=",pf @ x,"; ","y=",pf @ y,"; ","yS=",pf @ yS ];
x=Floor[x/2];y=2y;
If[OddQ[x], yS=yS+y];) ];
Return[sgn*yS]
]

See for example

x0=-27;y0=82;
RussianPeasantMultplication[x0,y0]

gives as output

x= 27; y= 82; yS= 82
x= 13; y= 164; yS= 246
x= 6; y= 328; yS= 246
x= 3; y= 656; yS= 902
x= 1; y= 1312; yS= 2214

Out[32]= -2214

Regards
Robert

Robert Kragler
Email : kragler@hs-weingarten.de
URL : http://portal.hs-weingarten.de/web/kragler




Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.