UNIX계 계산 언어 “bc”를 제대로 조사해 본다

4637 단어 TerminalMacUNIXbc

bc란?



UNIX계에서 계산을 할 때 사용하는 계산 언어입니다.
 NAME
       bc - An arbitrary precision calculator language

"An arbitrary precision calculator language"를 일본어 번역하면 "임의 정밀도 계산 언어"입니다.

Mac 터미널에서 bc를 치고 Enter를 누르면 터미널에서 bc를 사용할 수 있습니다.
$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 

bc는 특별히 지정하지 않으면 대화형 모드로 실행됩니다.
예를 들어,
1+2

를 입력하고 Enter를 누르면
3

그리고 결과가 반환됩니다.
↓↓실제 사용예↓↓


scale=5 로 하는 것으로 소수를 5 자리수까지 표시하도록 설정하고 있습니다. (기본적으로 scale=0)

옵션


bc 시작 시 옵션을 지정할 수 있습니다. 다음은 man bc에서 옵션을 확인한 결과입니다.
OPTIONS
       -h, --help
              Print the usage and exit.

       -i, --interactive
              Force interactive mode.

       -l, --mathlib
              Define the standard math library.

       -w, --warn
              Give warnings for extensions to POSIX bc.

       -s, --standard
              Process exactly the POSIX bc language.

       -q, --quiet
              Do not print the normal GNU bc welcome.

       -v, --version
              Print the version number and copyright and quit.

영어를 전부 번역하는 것은 귀찮기 때문에 자주 사용하는 녀석만 봅시다.

-q, --quiet



런타임에 처음 나오는 버전 정보와 copyright를 숨깁니다. bc="bc -q" 같은 별칭을 등록해도 좋을 정도로 마스트인 옵션이라고 생각합니다.

-l, --mathlib


bc -l에서 실행하면 삼각 함수(sin,cos,arctan), 자연 로그(log), 지수 함수(exp())를 사용할 수 있습니다.-l를 선택하면 scale가 자동으로 20으로 설정됩니다. (=소수를 20자리 표시한다)
c(0)+1   #c(0) = cos(0)
2.00000000000000000000
s(0)  #sin(0)
0
l(1)   #log(1)
0
l(2.71828182845904523536) #log(e)
.99999999999999999999

기수 계산



ibase, obase라는 파라미터를 만지면 임의의 기수로의 입출력이 가능합니다.
예를 들어, ibase=10, obase=16 는 10진수로 입력한 계산식을 16진수로 결과 출력합니다. (기본적으로 둘 다 10이므로 10진수로 표시됨)
ibase=10
obase=16
10+5
F

적용: 비대화식 모드로 실행



다음과 같이 리디렉션<<을 사용하여 비대화식 모드에서 bc를 실행할 수 있습니다.
$ bc <<EOF
> scale=3
> 4/3
> EOF
1.333

위에서 EOF가 입력될 때까지 수식 입력을 수락합니다.

또는 파이프 기호|를 사용하여 다음과 같이 다시 작성할 수 있습니다.
$ echo "scale=3; 4/3;" | bc
1.333

원주율을 임의의 자리까지 구한다


$ bc -lq
scale = 10;
(12*a(1/49)+32*a(1/57)-5*a(1/239)+12*a(1/110443))*4
3.1415926420
a()는 tan의 역함수 arctan입니다.scale에 지정된 자릿수의 원주율을 표시합니다.

사이고에게



실은 이 기사는 블로그로부터의 재록입니다. 블로그에서는 다른 것에 대해서도 게시하고 있습니다.

사회인 1년째 SE의 때리기 비망록 - 하테나 블로그

참고

좋은 웹페이지 즐겨찾기