>

C 또는 C ++에서 좋은 임의 정밀도 수학 라이브러리를 찾고 있습니다. 조언이나 제안을 해주시겠습니까?

기본 요구 사항 :

<올>
  • MUST는 임의로 큰 정수를 처리합니다 (제 관심 분야는 정수입니다). 임의로 큰 단어의 의미를 모르는 경우 100000과 같은 것을 상상하십시오! (100000의 계승).
  • 라이브러리 초기화/개체 생성 중에 지정할 정밀도MUST NOT NEED시스템의 사용 가능한 리소스가정밀도를 제한해야합니다.
  • SHOULD는 플랫폼의 모든 기능을 활용하며 기본적으로 "작은"숫자를 처리해야합니다. 즉, 64 비트 플랫폼에서는 2 ^ 33 + 2 ^ 32를 계산할 때 사용 가능한 64 비트 CPU 명령어를 사용해야합니다. 라이브러리SHOULD NOT은 동일한 플랫폼에서 2 ^ 66 + 2 ^ 65와 동일한 방식으로이를 계산합니다
  • ItMUST더하기 (+), 빼기 (-), 곱하기 (*), 정수 나누기 (/), 나머지 (%), 거듭 제곱 (**), 증분 (++) , 감소 (-), gcd (), factorial () 및 기타 일반적인 정수 산술 계산을 효율적으로 수행합니다. 정수 결과를 생성하지 않는 sqrt () (제곱근), log () (대수)와 같은 함수를 처리하는 기능은 플러스입니다. 기호 계산 처리 능력이 훨씬 좋습니다.

    지금까지 찾은 내용은 다음과 같습니다.

    <올>
  • JavaBigIntegerBigDecimal수업 : 지금까지 이것을 사용했습니다. 소스 코드를 읽었지만 아래 수학을 이해하지 못합니다. 내가 배운 적이없는 이론/알고리즘을 기반으로 할 수도 있습니다.
  • 의 내장 정수 유형 또는 핵심 라이브러리 bc/Python/루비/Haskell/Lisp/Erlang/OCaml/PHP/다른 언어 :이 언어 중 일부를 사용한 적이 있지만 어떤 라이브러리를 사용하고 있는지 또는 어떤 종류의 구현을 사용하고 있는지 전혀 모릅니다.
  • 내가 이미 알고있는 것 :

    <올>
  • char을 10 진수로 사용하고char *를 10 진수 문자열로 사용하여 계산 for 루프를 사용하여 숫자에.
  • int(또는long int또는long long 사용)를 기본 "단위"로 지정하고 배열을 임의의 긴 정수로 배열 한 다음 for-loop를 사용하여 요소를 계산합니다.
  • 정수 유형을 사용하여 십진수 (또는 소수)를BCD로 저장 (이진 코드 10 진수).
  • 부스의 곱셈 ​​알고리즘
  • 알지 못하는 것 :

    <올>
  • 순진한 방법을 사용하지 않고 위에서 언급 한 이진 배열을 10 진수로 인쇄합니다. 순진한 방법의 예 : (1) 가장 낮은 것에서 가장 높은 것까지 비트를 더하십시오 : 1, 2, 4, 8, 16, 32, ... (2)char *위에서 언급 한 문자열을 사용하여 중간 소수 자릿수 결과를 저장합니다.
  • 내가 좋아하는 것 :

    <올>
  • GMP,MPFR,decNumber(또는 귀하의 의견에 부합하는 다른 라이브러리)
  • 읽어야 할 책/기사에 대한 좋은 제안. 예를 들어,순진하지 않은이진수를 십진수로 변환하는 알고리즘이 어떻게 작동하는지에 대한 그림이있는 그림이 좋습니다."제한된 정밀도로 이진에서 소수로 변환"Douglas W. Jones가 좋은 기사의 예입니다.
  • 도움말.
  • 이 질문에하지 마십시오:

    <올>
  • 더블(또는긴 더블또는long long double)은이 문제를 쉽게 해결할 수 있습니다. 그렇게 생각하면 토론중인 문제를 이해하지 못했음을 의미합니다.

    • 답변 # 1

      GMP가 널리 사용됩니다. Squeak Smalltalk는 매우 훌륭한 라이브러리를 가지고 있지만 Smalltalk로 작성되었습니다.

      관련 도서 나 기사를 요청했습니다. bignums의 까다로운 부분은 긴 분할입니다. Per Brinch Hansen의 논문 다중 길이 부문 재검토 : Minefield 둘러보기를 추천합니다.

    • 답변 # 2

      전체적으로 가장 빠른 범용 임의 정밀도 라이브러리는 GMP입니다. 부동 소수점 값으로 작업하려면 MPFR 라이브러리를보십시오. MPFR은 GMP를 기반으로합니다.

      다른 언어의 기본 임의 정밀도 지원과 관련하여 Python은 라이센스, 코드 크기 및 코드 이식성 때문에 자체 구현을 사용합니다. GMPY 모듈을 통해 Python은 GMP 라이브러리에 액세스 할 수 있습니다.

      casevh

    • 답변 # 3

      http://ttmath.org 참조

      무료 개인 및 상업용 무료 템플릿 전용 헤더 전용 라이브러리.

    • 답변 # 4

      임의의 정밀 산술 라이브러리를 서로 비교하지는 않았지만 다소 균일하게 정착 된 것으로 보이는 사람들 GMP에. GHC Haskell 및 GNU Guile Scheme의 임의 정밀도 정수는 모두 GMP를 사용하여 구현되며 언어 총격에 대한 pidigits 벤치 마크의 가장 빠른 구현은 GMP를 기반으로합니다.

    • 답변 # 5

      파리는 어떻습니까? 최고의 GMP를 기반으로하며 필요한 숫자 이론 연산 (및 많은 기호 계산 항목)에 대한 다른 모든 장점을 제공합니다.

      http://pari.math.u-bordeaux.fr/

  • 이전 go - golang 테스트에서 패키지 구조의 현재 루트를 문자열로 얻을 수 있습니까?
  • 다음 email - Gsuite 설정 문제