Jump to content
Toggle menu
  • 6 users
  • 271 edits
The Commonwealth of Acropolis
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

The Constitution is blocked from ratification due to the standing appointment of the Recruiter-General

Away:Module-math

From The Commonwealth of Acropolis
Revision as of 14:59, 17 September 2026 by Dword (talk | contribs)
#!/usr/bin/env bash
export BC_LINE_LENGTH=0
code=("$@")
glob_scale=100
bc_mathlib() {
    echo "scale=${glob_scale}; ${1} (${code[1]})" | bc -l
}
bc_biterm() {
    echo "scale=${glob_scale}; ${code[1]} ${1} ${code[2]}" | bc
}
case $1 in
    sum)
        echo "${code[@]:1}" | awk -F" " '{for(i=1; i<=NF; i++) s+=$i} END {print s}'
        ;;
    sin)
        bc_mathlib s
        ;;
    cos)
        bc_mathlib c
        ;;
    atan)
        bc_mathlib a
        ;;
    ln)
        bc_mathlib l
        ;;
    epow)
        bc_mathlib e
        ;;
    pi)
        printf "4*a(1)\n" | bc -l 
        ;;
    neg)
        printf "scale=%s; - %s\n" "${glob_scale}" "${code[1]}" | bc
        ;;
    add)
        bc_biterm "+"
        ;;
    sub)
        bc_biterm "-"
        ;;
    mul)
        bc_biterm "*"
        ;;
    div)
        bc_biterm "/"
        ;;
    mod)
        bc_biterm "%"
        ;;
    pow)
        bc_biterm "^"
        ;;
    lt)
        bc_biterm "<"
        ;;
    lte)
        bc_biterm "<="
        ;;
    gt)
        bc_biterm ">"
        ;;
    gte)
        bc_biterm ">="
        ;;
    eq)
        bc_biterm "=="
        ;;
    neq)
        bc_biterm "!="
        ;;
    not)
        printf "!%s\n" "${code[1]}" | bc
        ;;
    and)
        bc_biterm "&&"
        ;;
    or)
        bc_biterm "||"
        ;;
    sigfig)
        printf "length ( %s )\n" "${code[1]}" | bc
        ;;
    sqrt)
        printf "sqrt ( %s )\n" "${code[1]}" | bc
        ;;
esac