Update runk

This commit is contained in:
Akemi Izuko 2023-12-23 20:13:57 -07:00
parent 08ecfff92d
commit fb863b209a
Signed by: akemi
GPG key ID: 8DE0764E1809E9FC

View file

@ -58,7 +58,7 @@ viw() {
} }
# Ronald's Universal Number Kounter, standardized syntax for unix calculators # Ronald's Universal Number Kounter, standardized syntax for unix calculators
# Use v as the first argument for verbosity/debugging # BSD-style arguments. v for verbose. c/p/b for the corresponding calculator
# Syntax features: # Syntax features:
# ^ and ** both work for exponentiation # ^ and ** both work for exponentiation
# log() is base 10 # log() is base 10
@ -67,14 +67,26 @@ viw() {
# Careful when changing order or sed might sed itself! # Careful when changing order or sed might sed itself!
runk() { runk() {
local -i is_verbose=0 local -i is_verbose=0
if [[ "$1" == v ]]; then local override=""
shift 1
if [[ -n "$2" ]]; then
if [[ "$1" =~ v ]]; then
is_verbose=1 is_verbose=1
fi fi
local calc_ver="$(echo "$@" | sed \ if [[ "$1" =~ c ]]; then
override="c"
elif [[ "$1" =~ p ]]; then
override="p"
elif [[ "$1" =~ b ]]; then
override="b"
fi
shift 1
fi
local calc_ver="($(echo "$@" | sed \
-e 's#log2(\([^)]\+\))#(log(\1)/log(2))#g' \ -e 's#log2(\([^)]\+\))#(log(\1)/log(2))#g' \
)" ))"
local py_ver="$(echo "$@" | sed \ local py_ver="$(echo "$@" | sed \
-e 's#\^#**#g' \ -e 's#\^#**#g' \
-e 's#\(log([^)]\+)\)#(\1/log(10))#g' \ -e 's#\(log([^)]\+)\)#(\1/log(10))#g' \
@ -87,22 +99,15 @@ runk() {
-e 's#log2(\([^)]\+\))#(l(\1)/l(2))#g' \ -e 's#log2(\([^)]\+\))#(l(\1)/l(2))#g' \
)" )"
if [[ $is_verbose -eq 1 ]]; then if command -v calc &>/dev/null && [[ -z "$override" ]] || [[ "$override" == c ]]; then
if command -v calc &>/dev/null; then
printf 'Using calc: %s\n' "$calc_ver"
elif command -v python3 &>/dev/null; then
printf 'Using python: %s\n' "$py_ver"
else
printf 'Using benchcalc: %s\n' "$bc_ver"
fi
fi
if command -v calc &>/dev/null; then
calc "$calc_ver" calc "$calc_ver"
elif command -v python3 &>/dev/null; then if [[ $is_verbose -eq 1 ]]; then printf 'Using calc: %s\n' "$calc_ver"; fi
elif command -v python3 &>/dev/null && [[ -z "$override" ]] || [[ "$override" == p ]]; then
python3 -c "from math import *; print($py_ver)" python3 -c "from math import *; print($py_ver)"
if [[ $is_verbose -eq 1 ]]; then printf 'Using python: %s\n' "$py_ver"; fi
else else
echo "$bc_ver" | bc --mathlib echo "$bc_ver" | bc --mathlib
if [[ $is_verbose -eq 1 ]]; then printf 'Using benchcalc: %s\n' "$bc_ver"; fi
fi fi
} }