BC는 로그 및 계승 계산을 지원하지 않습니까?

BC는 로그 및 계승 계산을 지원하지 않습니까?

log계산을 지원하는 다른 명령줄 계산기가 있습니까 n!? 적어도 bc그런 식으로 작동하지 않으며 구문 분석 오류가 발생합니다.

바람직하게는 스크립트에서 사용할 수 있습니다(예 echo '5!' | program: .

답변1

bc플래그를 사용하여 호출하면 자연 로그가 지원됩니다 -l. 이를 사용하여 밑이 10인 로그 또는 밑이 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))
}

즉, 단일 문자 함수 이름인 no print, no 에는 halt괄호가 필요합니다 return(x). 입력 유효성 검사가 필요하지 않은 경우(여기서는 양의 정수) 다음을 수행하세요.

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

답변2

오피이것계산기와 명령줄 괴짜들이 통합된 계산기 모음입니다. 이는 유일한 실제 계산 방법인 기존 HP RPN 계산기를 에뮬레이트합니다.그것은 알려져있다.

당신이 계산기 이단자이고 어린 시절부터 TI, 카시오스 같은 제품을 사용해 왔다면 여기많은 RPN 지도 시간온라인으로 추가 교육을 시작할 수 있습니다.오피 매뉴얼RPN 사고방식을 익히면 결국 도움이 될 것입니다.

5를 계산하세요! Orpie에서는 다음과 같이 입력하세요 5 !. Enter그 사이를 눌러 먼저 스택에 밀어넣을 수 있지만 5필수는 아닙니다.

로그 10 (5) 을 계산하려면 를 입력합니다 5 Enter ' l o Enter. 이 경우 5다음 키 입력은 연산자가 아니기 때문에 먼저 스택에 푸시해야 합니다 . 이 작은따옴표 문자는 명령 약어 모드로 들어가고 입력을 시작할 수 있습니다. log10여기서 처음 두 문자만 사용하여 고유하게 식별할 수 있습니다. (대신 l자연로그함수만 구하면 됩니다 ln.)

다른 RPN 계산기와 마찬가지로 다음과 같은 결과를 얻을 수 있습니다.진짜Orpie와 함께하는 빠른 연습 세션과 약간의 연습.

Orpie는 Ubuntu 스톡 저장소에 있습니다. FreeBSD에는 포트에 math/orpie.스스로 만든. 다른 운영 체제에서는 타사 소프트웨어 패키지를 사용할 수 있습니다. 소스에서 빌드하는 것은 약간 번거로울 수 있습니다.오카미르, OCaml 개발 환경이 설치되어 있지 않을 수 있습니다. 하지만 세트를 구성하는 것은 특별히 어렵지 않습니다.

답변3

항상 GNU가 있습니다옥타브, 명령줄 계산기용 emacs(계산기에 내장된 완전한 개발 환경과 프로그래밍 언어 및 수천 개의 선택적 추가 기능이 필요한 경우)

또는오른쪽통계를 선호한다면.

bc -l나는 주로 표준 수학 라이브러리를 로드 하는 데 사용합니다 ... 계승 함수 정의에 대한 정보는 Mat의 답변을 참조하십시오... bc매뉴얼 페이지에서는 다음과 같이 정의합니다.bc -lbc

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

== 1 대신 <=1을 선택하면 음수(오류여야 함) 또는 0(유효함)을 입력하는 경우 무한 루프를 방지할 수 있습니다.

답변4

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

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

관련 정보