프로그래머를 위한 계산기 - pcalc

지리즈의 이미지
23118
points
8
points

유수히 뛰어난 계산기가 있지만,
이 계산기의 강점은 프로그래머 혹은 시스템 관리자들에게 특화되어 있다는 점이다.
콘솔에서 돌아간다는 것과 2진수 16진수 10진수를 섞어서 자유롭게 계산할 수 있다.
그리고, 항상 결과값을 10진수 16진수 2진수로 보여준다.

zirize@zirize ~ $ pcalc 0y1001
        9               0x9             0y1001
zirize@zirize ~ $ pcalc 0x9
        9               0x9             0y1001
zirize@zirize ~ $ pcalc 9
        9               0x9             0y1001
zirize@zirize ~ $ pcalc 0y1001 + 0x9 + 9
        27              0x1b            0y11011
zirize@zirize ~ $ pcalc 0x9 / 0y1001 * 9
        1               0x1             0y1
        0               0x0             0y0
        0               0x0             0y0
        0               0x0             0y0
        0               0x0             0y0
        9               0x9             0y1001
zirize@zirize ~ $ pcalc  0y1001 / 9 * 0x9
        1               0x1             0y1
        0               0x0             0y0
        0               0x0             0y0
        0               0x0             0y0
        0               0x0             0y0
        9               0x9             0y1001
zirize@zirize ~ $ pcalc 0xa % 0y1001
        1               0x1             0y1
zirize@zirize ~ $ pcalc f

Functions: (case insensitive)

    SIN         math sinus              COS        math cos
    ATAN        math atan               LOG        math log
    LOG10       math log10              EXP        math exp
    SQRT        math sqrt               INT        math int
    ABS         math abs

    F2C         converting temperature -> fahrenheit to celsius
    C2F         converting temperature -> celsius to fahrenheit
    IN2MM       converting length      -> inches to millimeter
    MM2IN       converting length      -> millimeter to inches
    PO2KG       converting mass        -> pounds to kilogram
    KG2PO       converting mass        -> kilogram to pounds

For functions type pcalc f
For controls  type pcalc l
For operators type pcalc o
For constants type pcalc c

zirize@zirize ~ $ pcalc o

Operator priorities:

    right  assotiation:     '='         ASSIGNMENT
    left   assotiation:     or          BINARY OR
    left   assotiation:     and         BINARY AND
    left   assotiation:     '<' '>'     BINARY LEFT/RIGHT SHIFT
    left   assotiation:     '+' '-'     ADDITION/SUBTRUCTION
    left   assotiation:     '*' '/' '%' MULTIPLY/DIVIDE
    left   assotiation:     '-'         UNARY MINUS
    right  assotiation:     '^'         EXPONENTATION

For functions type pcalc f
For controls  type pcalc l
For operators type pcalc o
For constants type pcalc c

zirize@zirize ~ $ pcalc c

Constants:

    PI      3.14159265358979323846
    E       2.71828182845904523536
    GAMMA   0.57721566490153286060
    DEG     57.29577951308322087680
    PHI     1.61803389974989484820

For functions type pcalc f
For controls  type pcalc l
For operators type pcalc o
For constants type pcalc c

zirize@zirize ~ $    

체스맨의 이미지
6254
points

좋군요. 꼭 있었으면

3
points

좋군요. 꼭 있었으면 하던 기능이 있네요. bc 는 지워야겠습니다.

써보실 분들은 참고로, 구글에선 쉽게 안찾아지는 것 같은데, 소스포지에서 다운 받을 수 있습니다...

http://sourceforge.net/project/showfiles.php?group_id=196894&package_id=...

지리즈의 이미지
23118
points

죄송하게 됬습니다.

2
points

gentoo portage에 있길래, 다른 배포본들도 그냥 쉽게 구할 수 있는줄 알았습니다.

http://pcalc.sourceforge.net/

가도 별 내용은 없습니다.

복잡한 기능은 설치한 후 /usr/share/doc/pcalc 안의
readme파일과 example을 참조하시는 편이 좋을 듯합니다.

그래봤자 사칙연산외에는 거의 사용할 일이 없을 듯 하지만요. 쿠쿠

There is no spoon. Neo from the Matrix 1999.

체스맨의 이미지
6254
points

cygwin 에서도 (

3
points

cygwin 에서도 ( 물론이겠지만 ) 잘 빌드 되네요.

octal number 는 결과에는 같이 표시를 안해주나봅니다... 옵션같은 걸 못찾겠네요.

> pcalc 0c777
   511             0x1ff           0y111111111

저는 무엇보다 AND, OR, SHIFT 등의 비트 연산이 되는 게 맘에 드네요. 좌,우 쉬프트는 < > 이고, redirection 과 혼동되지 않기 위해 "" 로 둘러싸주는 게 좋습니다.

> pcalc "0x10>4"
        1               0x1             0y1

다른 기능들은 소스 안에 있는 README 파일을 읽어보시면 잘 알 수 있을 것 같네요. 아무튼 좋은 툴 소개해주셔서 감사합니다.

--------------------
추가로... vim 에서는 다음 정도의 간단한 명령을 추가하면 ""를 둘러싸는 것 신경쓸 필요 없이 그냥 명령을 내리면 될 것 같네요. makeprg 나 grepprg 등을 통하지 않고 결과값을 quickfix 창으로 가져오는 방법은 잘 모르겠는데, 이건 질문을 올려봐야겠네요...

command! -nargs=* CALC :  !pcalc <q-args>

:CALC 0x10 > 4
        1               0x1             0y1

doodoo의 이미지
5203
points

fl 라이브러리가 어떤

2
points

fl 라이브러리가 어떤 것인지 잘 모르겠군요

방금 설치하다가 에러났습니다.

cc -ggdb -Wall -DVERSION='"1.2"'  -c -o convert.o convert.c
cc   pcalc.o pcalcl.o funct.o math.o symbol.o help.o store.o print.o str.o convert.o  -lm -lfl -o pcalc
/usr/bin/ld: cannot find -lfl
collect2: ld returned 1 exit status
make: *** [pcalc] Error 1

체스맨의 이미지
6254
points

flex 을 설치하셔야 될

4
points

flex 을 설치하셔야 될 겁니다.

feedseaotter의 이미지
1140
points

저도 doodoo님과 같은

2
points

저도 doodoo님과 같은 문제로 고민하고 있었는데 flex 설치해주니 잘 되는군요
감사합니다

doodoo의 이미지
5203
points

저도 되네요 ^^;

0
points

저도 되네요 ^^;

감사합니다.

체스맨의 이미지
6254
points

다음 스레드에 빔의

4
points

음... 제가 올린 스레드도 아닌데, 제가 도배를 하는 것 같아 좀 그렇지만,

수식에 '%' 나 '|' 가 포함돼 있을때 빔이 내부적으로 이들 문자를 확장하거나 다르게 해석하는 것으로 인해 제대로 수식이 전달되지 않을 수가 있네요.

외부 명령을 실행할 때 이러한 내부적 해석을 안하도록 만드는 방법을 찾아봤으나, 찾지 못해서, 이들 문자 앞에 escape 문자 를 붙여주는 방법으로 일단 수정을 해서 올려봅니다.

EscapeSpecialChar 함수가 지정된 문자 앞에 escape 문자를 붙이는 기능을 합니다.

function! EscapeSpecialChar(cmd,c)
    return substitute(a:cmd,"\\([".a:c."]\\)","\\\\\\1","g")
endfunction

function! Calc( eq )
    let oldprg=&makeprg
    let &makeprg='pcalc "'.EscapeSpecialChar(a:eq,"%|").'"'
    make
    let &makeprg=oldprg
endfunction

command! -nargs=* QCALC : call Calc( <q-args> )
command! -nargs=* RCALC : exe 'r !pcalc "'.EscapeSpecialChar(<q-args>,"%").'"'
command! -nargs=* CALC : exe '!pcalc "'.EscapeSpecialChar(<q-args>,"%").'"'

체스맨의 이미지
6254
points

감기가 걸려 정신이

2
points

감기가 걸려 정신이 없어 그랬는지, 댓글을 단다는 게 원본글을 자체를 수정해서 이전 글을 날려먹었네요.

뭐 아무튼 저렇게 수정했습니다. 잘 되는 것 같네요.

지리즈의 이미지
23118
points

마음 놓고 글 올려 주세요.

0
points

부족한 글이 풍족해지는 것 같아서 제가 오히려 감사할 따름입니다.

There is no spoon. Neo from the Matrix 1999.

아치리눅스용 PKGBUILD 입니다.

1
point

아치리눅스용 pcalc의 PKGBUILD 파일 입니다.

pkgname=pcalc
pkgver=1.2
pkgrel=1
pkgdesc="pcalc is porgrammer's calculator, command line utility."
url="http://pcalc.sourceforge.net"
license="GPL"
arch=('i686')
depends=('flex')
makedepends=('make')
source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2)
md5sums=(b0d53adf9b7c393cdd5de089c7fe3699)

build() {
cd $startdir/src/$pkgname-$pkgver
make
mkdir -p $startdir/pkg/usr/bin/
mv $pkgname $startdir/pkg/usr/bin/
}

#vim: ft=sh

첨부 파일파일 크기
PKGBUILD.456 bytes
지리즈의 이미지
23118
points

보니깐, Gentoo의 ebuild하고 유사하네요.

0
points

PKGBUILD로 설치하면 나중에 언인스톨할 때 설치된 파일이 깨끗이 삭제가 되나요?

There is no spoon. Neo from the Matrix 1999.

atie의 이미지
18064
points

그냥 참고 삼아서,

1
point

그냥 참고 삼아서, AUR에 pcalc가 있습니다. PKGBUILD의 9번째 줄에 있는 괄호 하나 빼면 잘 만들어 쓸 수 있더군요.
----
I paint objects as I think them, not as I see them.
atie's minipage

이미 있는것인데

0
points

이미 있는것인데 괜한 짖을 했군요.

제가 아치리눅스를 사용한지 얼마 되지 않고
AUR에 들어가본적이 없어서 그런곳이 있는지 알지 못했습니다.

이제 부터는 pacman으로 찾아봐서 없으면 제일먼저 AUR을 찾아가봐야 겠군요.
알려 주셔서 감사합니다.

댓글 보기 옵션

원하시는 댓글 전시 방법을 선택한 다음 "설정 저장"을 누르셔서 적용하십시오.