initial commit
This commit is contained in:
73
math.sh
Normal file
73
math.sh
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/bin/bash
|
||||
DIRECTORY=$(cd `dirname $0` && pwd)
|
||||
. /home/spezi/Scripts/utils/utils.sh
|
||||
|
||||
# https://unix.stackexchange.com/questions/66766/float-operation-with-bc
|
||||
# https://unix.stackexchange.com/questions/89712/how-to-convert-floating-point-number-to-integer
|
||||
# xargs: https://stackoverflow.com/questions/19148370/piping-seq-to-printf-for-number-formatting
|
||||
divideint () {
|
||||
bc <<< "scale=$scale; $1/$2" | xargs printf "%.0f\n"
|
||||
}
|
||||
|
||||
multiint () {
|
||||
bc <<< "scale=2; $1*$2" | xargs printf "%.0f\n"
|
||||
}
|
||||
|
||||
divide () {
|
||||
if [ -z $3 ]; then
|
||||
scale=2
|
||||
else
|
||||
scale=$3
|
||||
fi
|
||||
bc <<< "scale=$scale; $1/$2"
|
||||
}
|
||||
|
||||
multiply () {
|
||||
if [ -z $3 ]; then
|
||||
scale=2
|
||||
else
|
||||
scale=$3
|
||||
fi
|
||||
bc <<< "scale=$scale; $1*$2"
|
||||
}
|
||||
|
||||
avgoftwo () {
|
||||
sum=$(bc <<< "$1+$2")
|
||||
divideint $sum 2
|
||||
}
|
||||
|
||||
max () {
|
||||
declare -a allnumbers
|
||||
for arg in "$@"; do
|
||||
if isarray $arg; then
|
||||
for elem in ${arg[@]}; do
|
||||
[[ $elem -eq $elem ]] && allnumbers+=($elem)
|
||||
done
|
||||
else
|
||||
[[ $arg -eq $arg ]] && allnumbers+=($arg)
|
||||
fi
|
||||
done
|
||||
max=${allnumbers[0]}
|
||||
for n in "${allnumbers[@]}"; do
|
||||
((n > max)) && max=$n
|
||||
done
|
||||
echo $max
|
||||
}
|
||||
|
||||
min () {
|
||||
declare -a allnumbers
|
||||
for arg in "$@"; do
|
||||
if isarray $arg; then
|
||||
for elem in ${arg[@]}; do
|
||||
[[ $elem -eq $elem ]] && allnumbers+=($elem)
|
||||
done
|
||||
else
|
||||
[[ $arg -eq $arg ]] && allnumbers+=($arg)
|
||||
fi
|
||||
done
|
||||
min=${allnumbers[0]}
|
||||
for n in "${allnumbers[@]}"; do
|
||||
((n < min)) && min=$n
|
||||
done
|
||||
echo $min
|
||||
}
|
||||
Reference in New Issue
Block a user