bc — język kalkulatora dowolnej precyzji

Na Debian Package of the Day znalazłem kiedyś opis programu bc. bc jest czymś w rodzaju miniaturowego środowiska do obliczeń numerycznych czy, innymi słowy, konsolowym kalkulatorem z możliwością pisania skryptów. Przy standardowym uruchomieniu nie potrafi wiele, ale wywołując go poleceniem bc -l ładujemy standardową bibliotekę matematyczną, która daje nam całkiem ciekawe możliwości. Oto przykład zabawy z liczbą π przy bardzo dużej precyzji:

scale=100
pi=4*a(1)
pi
3.141592653589793238462643383279502884197169399375105820974944592307\
8164062862089986280348253421170676
pi^100
51878483143196131920862615246303013562686760680405.78499007184235808\
21881443917044488975069457784017111468121839594952358845749712503052\
943832056191336

Funkcja a() to arcus tangens. bc, niestety, charakteryzuje się dość nerdowską nomenklaturą, ale możemy skorzystać ze skryptu definiującego standardowe nazwy dla funkcji. Możemy nawet dodać sobie do .bashrc:

export BC_ENV_ARGS='-q -l /home/vmario/bin/extensions.bc'

dzięki czemu bc będzie od razu ładował cały skrypt przy uruchomieniu (opcja -q zapobiega wyświetlaniu przywitania). I proszę bardzo:

pi=atan(1)*4
pi
3.14159265358979323844

Teraz możemy ubogacić nasze skrypty bashowe. Obok zwykłego $((2+2)) lub karkołomnych konstrukcji z wykorzystaniem expr, możemy posłużyć się poleceniem bc:

$ a=$(echo "sin(8)^3" | bc)
$ echo $a
.96841327546919229461

Komentarzy: 1 do „bc — język kalkulatora dowolnej precyzji“

  1. CalcTeX komentuje:

    bc – jest prostym językiem, ale o wielkich możliwościach, który zaskoczył mnie parę razy pozytywnie i zdarzyły się niestety nieoczekiwane niespodzianki… Udało mi się zaprzęgnąć bc i (La)TeX do wspólnej pracy:
    – bc do obliczeń,
    – (La)TeX-a do składu.

    Pakiet nazywa się CalcTeX i jest dostępny http://sg.bzip.pl/CalcTeX choć w wersjach na stronie używany jest python zamiast bc, ale można używałem bc również. Pakiet umożliwia generowanie dokumentów z obliczeniami sformatowanymi w GUSTowny sposób przerz TeX-a/LaTeX-a, co rozszerza możliwości bc.
    Na stronie dostępne są przykłady…

Dodawanie komentarzy

XHTML: Możesz używać tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">