#!/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 }