Anonymous user
Ethiopian multiplication: Difference between revisions
m
→{{header|REXX}}: added/changed comments, added subroutine fence, added whitespace. -- ~~~~
m (→{{header|REXX}}: added/changed comments, added subroutine fence, added whitespace. -- ~~~~) |
|||
Line 2,668:
=={{header|REXX}}==
<lang rexx>/*REXX program multiplies 2 integers by Ethiopian/Russian peasant method*/▼
numeric digits 1000 /*handle very large integers. */
▲/*REXX program multiplies 2 integers by Ethiopian/Russian peasant method*/
/*A & B should be checked if integers.*/▼
say 'a=' a
say 'b=' b
say 'product=' emult(a,b)
/*──────────────────────────────────EMULT subroutine────────────────────*/
emult: procedure; parse arg x 1 ox,y
prod=0
do while x\==0
if \iseven(x) then prod=prod+y
x=halve(x)
y=double(y)
end
return prod*sign(ox)
/*──────────────────────────────────subroutines─────────────────────────*/
halve: return arg(1)%2
double: return arg(1)*2
Line 2,698 ⟶ 2,697:
halve: procedure; parse arg ?; return ?%2
double: procedure; parse arg x; return x+x
iseven: procedure; parse arg _; return _//2 == 0</lang>
=={{header|Ruby}}==
|