bc는 로그 및 계승 계산을 지원하지 않습니까? log, n!계산은?

다른 명령 행 계산기 즉 지원 있는가 log, n!계산은? 적어도 bc그렇게 할 수는 없습니다. 오류를 파싱했습니다.

스크립트를 사용할 수 있다면 가장 좋습니다. 예 : echo '5!' | program



답변

bc-l플래그 와 함께 호출 된 경우 자연 로그를 지원합니다 . base-10 또는 base-2 로그를 계산할 수 있습니다.

$ bc -l
...
l(100)/l(10)
2.00000000000000000000

l(256)/l(2)
8.00000000000000000007

나는 기본적으로 계승이 있다고 생각하지 않지만 스스로 작성하기에는 충분합니다.

$ bc
...
define fact_rec (n) {
  if (n < 0) {
    print "oops";
    halt;
  }
  if (n < 2) return 1;
  return n*fact_rec(n-1);
}
fact_rec(5)
120

또는:

define fact_it (n) {
  if (n < 0) {
    print "oops";
    halt;
  }
  res = 1;
  for (; n > 1; n--) {
    res *= n;
  }
  return res;
}
fact_it(100)
93326215443944152681699238856266700490715968264381621468592963895217\
59999322991560894146397615651828625369792082722375825118521091686400\
0000000000000000000000

POSIX를 준수하려면 다음을 작성해야합니다.

define f(n) {
  auto s, m
  if (n <= 0) {
    "Invalid input: "
    n
    return(-1)
  }
  s = scale
  scale = 0
  m = n / 1
  scale = s
  if (n != m) {
    "Invalid input: "
    n
    return(-1)
  }
  if (n < 2) return(1)
  return(n * f(n - 1))
}

즉, 단일 문자 함수 이름, 아니오 print, 아니오 halt, 괄호가 필요합니다 return(x). 입력 유효성 검사가 필요하지 않은 경우 (여기 양의 정수의 경우) 다음과 같습니다.

define f(n) {
  if (n < 2) return(1)
  return(n * f(n - 1))
}


답변

Orpie는 이다 계산기와 명령 줄 괴짜 계산기. 최신 HP RPN 계산기를 에뮬레이트합니다. 물론 이는 계산하는 유일한 방법입니다.

TI, Casios 등에서 제기 된 계산기 이단자 인 경우 온라인으로 재교육을 시작할 수있는 많은 RPN 자습서가 있습니다. RPN 사고 방식을 익히면 Orpie 매뉴얼 이 결국 사용됩니다.

5를 계산하려면! Orpie에서 작성하는대로 입력하십시오 5 !. Enter그 사이를 눌러 5스택에 먼저 밀어 넣을 수 있지만 반드시 그럴 필요는 없습니다.

로그 10 (5) 을 계산하려면을 입력하십시오 5 Enter ' l o Enter. 5다음 키 스트로크는 연산자가 아니기 때문에이 경우에는 스택을 먼저 밀어야합니다 . 작은 따옴표 문자는 명령 약어 모드로 들어가서 입력을 시작할 log10수 있으며 처음 두 문자만으로 고유하게 식별 할 수 있습니다. ( l혼자서 ln대신 자연 로그 기능을 얻을 수 있습니다 .)

어떤 RPN 계산기와 마찬가지로, 당신이 얻을 수있는 정말 연습의 비트와 함께, 빠른 Orpie와.

Orpie는 재고 Ubuntu repos에 있습니다. FreeBSD는 다음과 같이 포트에 포함합니다 math/orpie. OS X에서는 Homebrew를 통해 설치할 수 있습니다 . 다른 OS에서 타사 패키지를 사용할 수 있습니다. OCaml 로 작성 되었으므로 OCaml 개발 환경이 설치되어 있지 않기 때문에 소스에서 빌드하는 것은 다소 번거로울 수 있습니다 . 하나의 설정을 얻는 것이 특히 어렵지는 않습니다.


답변

명령 줄 계산기의 이맥 인 GNU Octave 는 항상 존재합니다 (계산기에 내장 된 완전한 개발 환경과 프로그래밍 언어 및 수천 개의 선택적 애드온을 원할 때)

또는 R 통계는 더 일이 있다면.

나는 대부분은 단지 사용하는 bc -l난이 … 표준 수학 라이브러리가로드 얻을 수 bc별칭 bc -l. bc매뉴얼 페이지를 다음과 같이 정의 하지만 계승 함수 정의에 대한 정보는 Mat의 답변을 참조하십시오 .

define f (x) {
  if (x <= 1) return (1);
  return (f(x-1) * x);
}

== 1이 아닌 <= 1을 확인하면 음수 (오류 여야 함) 또는 0 (유효)을 공급할 경우 무한 루프가 방지됩니다.


답변

내가 가장 좋아하는 것은 가볍고 간단 W-Calc합니다.
http://w-calc.sourceforge.net

명령을 수동으로 보거나 수동으로 수동으로 다시 만들 필요가 없습니다 bc. 명령은 대부분 정확히 예상 한 것이므로 원하는 것을 입력하면 작동합니다. 귀하의 질문에 따라 테스트 – 실제로 log()n!작업 예상대로.

(물론 나는 Orpie에 대해 들어 보지 못했습니다. 더 나은 옵션 일 수 있습니다.)


답변

완전히 과잉이지만 프로그래밍 언어 통역사는 결국 명령 줄 계산기입니다.

$ echo 5 | python -c 'import sys; import math; print math.factorial(int(sys.stdin.readline()));'
120


답변

Mac 포트가있는 경우 :

$ sudo /opt/local/bin/port install orpie


답변