Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1 @@
|
|||
multiply() { echo "$1 $2 * p" | dc; }
|
||||
43
Task/Long-multiplication/UNIX-Shell/long-multiplication-2.sh
Normal file
43
Task/Long-multiplication/UNIX-Shell/long-multiplication-2.sh
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
add() { # arbitrary-precision addition
|
||||
local a="$1" b="$2" sum= carry=0
|
||||
if (( ${#a} < ${#b} )); then
|
||||
local t="$a"
|
||||
a="$b" b="$t"
|
||||
fi
|
||||
|
||||
while (( ${#a} )); do
|
||||
local -i d1="${a##${a%?}}" d2="10#0${b##${b%?}}" s=carry+d1+d2
|
||||
sum="${s##${s%?}}$sum"
|
||||
carry="10#0${s%?}"
|
||||
a="${a%?}" b="${b%?}"
|
||||
done
|
||||
echo "$sum"
|
||||
}
|
||||
|
||||
multiply() { # arbitrary-precision multiplication
|
||||
local a="$1" b="$2" product=0
|
||||
if (( ${#a} < ${#b} )); then
|
||||
local t="$a"
|
||||
a="$b" b="$t"
|
||||
fi
|
||||
|
||||
local zeroes=
|
||||
while (( ${#b} )); do
|
||||
local m1="$a"
|
||||
local m2="${b##${b%?}}"
|
||||
local partial=$zeroes
|
||||
local -i carry=0
|
||||
while (( ${#m1} )); do
|
||||
local -i d="${m1##${m1%?}}"
|
||||
m1="${m1%?}"
|
||||
local -i p=d*m2+carry
|
||||
partial="${p##${p%?}}$partial"
|
||||
carry="10#0${p%?}"
|
||||
done
|
||||
partial="${carry#0}$partial"
|
||||
product="$(add "$product" "$partial")"
|
||||
zeroes=0$zeroes
|
||||
b="${b%?}"
|
||||
done
|
||||
echo "$product"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue