RosettaCodeData/Task/Ethiopian-multiplication/UNIX-Shell/ethiopian-multiplication-2.sh
Ingy döt Net d066446780 langs a-z
2013-04-10 22:43:41 -07:00

28 lines
323 B
Bash

halve() {
(( $1 >>= 1 ))
}
double() {
(( $1 <<= 1 ))
}
is_even() {
(( ($1 & 1) == 0 ))
}
multiply() {
local plier=$1
local plicand=$2
local result=0
while (( plier > 0 ))
do
is_even plier || (( result += plicand ))
halve plier
double plicand
done
echo $result
}
multiply 17 34
# => 578