2023 : ARB는 부싯돌로 합병되었습니다. 현재 저장소는 보관되어 있으며 더 이상 업데이트되지 않습니다. 보다
https://github.com/flintlib/flint/
새로운 개발을 위해!
ARB는 임의의 차량 간격 산술을위한 C 라이브러리입니다. 실제 및 복소수 모두를 완전히 지원합니다. 라이브러리는 스레드 안전, 휴대용이며 광범위하게 테스트됩니다. ARB는 GNU Lesser General Public License (LGPL), 버전 2.1 이상에 배포 된 무료 소프트웨어입니다.
문서 : http://arblib.org
개발 업데이트 : http://fredrikj.net/blog/
저자 : Fredrik Johansson [email protected]
버그 보고서, 기능 요청 및 기타 의견은 개인 커뮤니케이션, GitHub 문제 추적기 또는 Flint 메일 링리스트 [email protected]에서 환영합니다.
다음 프로그램은 sin(pi + exp(-10000)) . 사인 함수에 대한 입력은 4343 자리 내에 루트와 일치하기 때문에 정확한 결과를 얻으려면 최소 4343 자리 (14427 비트) 정밀도가 필요합니다. 이 프로그램은 64 비트, 128 비트, ... 정밀도로 평가를 반복하여 결과가 53 비트 이상으로 정확할 때만 중지됩니다.
#include "arb.h"
int main()
{
slong prec;
arb_t x, y;
arb_init(x); arb_init(y);
for (prec = 64; ; prec *= 2)
{
arb_const_pi(x, prec);
arb_set_si(y, -10000);
arb_exp(y, y, prec);
arb_add(x, x, y, prec);
arb_sin(y, x, prec);
arb_printn(y, 15, 0); printf("n");
if (arb_rel_accuracy_bits(y) >= 53)
break;
}
arb_clear(x); arb_clear(y);
flint_cleanup();
}
출력은 다음과 같습니다.
[+/- 6.01e-19]
[+/- 2.55e-38]
[+/- 8.01e-77]
[+/- 8.64e-154]
[+/- 5.37e-308]
[+/- 3.63e-616]
[+/- 1.07e-1232]
[+/- 9.27e-2466]
[-1.13548386531474e-4343 +/- 3.91e-4358]
각 선은 표현식의 정확한 값에 대한 엄격한 인클로저를 보여줍니다. 이 프로그램은 사용자가 ARB의 자동 오류 경계 추적에 의존하여 정확한 출력을 얻는 방법을 보여줍니다. 사용자가 오류 분석을 수행 할 필요가 없습니다.
더 많은 예제 프로그램은 http://arblib.org/examples.html을 참조하십시오
기본 산술 외에도 ARB는 단 변량 다항식, 잘린 파워 시리즈 및 실제 및 복소수 모두에 대한 행렬로 작업 할 수 있습니다.
기본 선형 대수는 매트릭스 곱셈, 결정 요인, 역, 비 설교 해결, 매트릭스 지수 및 고유 값 및 고유 벡터의 계산을 포함한 지원됩니다.
다항식 및 파워 시리즈에 대한 지원은 구성, 복귀, 제품 트리, 다중 포인트 평가 및 보간, 복잡한 뿌리 분리 및 전력 시리즈의 초월 기능을 포함하여 상당히 광범위합니다.
다른 기능으로는 실제 함수에 대한 뿌리 분리, 복잡한 함수의 엄격한 수치 통합 및 DFT (Discrete Fourier Transforms)가 있습니다.
ARB는 감마 기능, Polygamma 기능, Riemann Zeta 및 Hurwitz Zeta 기능, Dirichlet L-Funtions, Polylogarithm, Error Function, Gauss Hypergeometric Function 2F1, 합류 하이퍼 게오 메트릭 기능, BESSELOGONTIONS, Airy Functions 및 Legy Functions, Airy Functions, Legy Functions, Legy Functions, Legy Functions, Appergeometrications, Besselic Functions, Gauss Hypergeometric 기능을 포함하여 광범위한 초월 및 특수 기능을 계산할 수 있습니다. 다항식, 지수 및 삼각형 적분, 불완전한 감마 및 베타 함수, Jacobi Theta 함수, 모듈 식 타원 함수, 완전하고 불완전한 타원 적분, 산술 기하학 평균, Bernoulli 번호, 분만 기능, Barne G-Function.
ARB는 실수의 MidPoint-Radius (Ball) 표현을 사용합니다. 정밀도로, 이것은 평범한 부동 소수점 산술에 비해 상당한 오버 헤드없이 간격 산술을 수행 할 수 있습니다. 몇 개의 기계 단어의 정밀도에서 오버 헤드를 줄이기 위해 다양한 저수준 최적화가 구현되었습니다. 다항식 및 파워 시리즈에 대한 대부분의 작업은 부싯돌을 기반으로 비대칭 적으로 빠른 FFT 곱셈을 사용합니다. 마찬가지로, 큰 행렬에서 대부분의 작업은 Flint의 빠른 정수 매트릭스 곱셈을 활용합니다.
기본 산술의 경우 ARB는 일반적으로 MPFR (http://mpfr.org)만큼 빠르지 만 MPFI (https://perso.ens-lyon.fr/nathalie.revol/software.html)보다 약간 느릴 수 있습니다.
ARB의 초월 기능은 매우 잘 최적화되어 있으며 일반적으로 현재 사용 가능한 다른 임의의 차수 소프트웨어보다 빠릅니다. 다음 표는 복소수 z = 5^(1/2) + 7^(1/2)i 에서 가우스 과게 오 메트릭 함수 2F1(1/2, 1/4, 1, z) 평가하는 데 초의 시간을 비교합니다. Xeon x5675).
| 숫자 | 수학 | mpmath | ARB |
|---|---|---|---|
| 10 | 0.00066 | 0.00065 | 0.000071 |
| 100 | 0.0039 | 0.0012 | 0.00048 |
| 1000 | 0.23 | 1.2 | 0.0093 |
| 10000 | 42.6 | 84 | 0.56 |
ARB는 Flint (http://flintlib.org/), GMP (http://gmplib.org) 또는 Mpir (http://mpir.org) 및 MPFR (http://mpfr.org)에 따라 다릅니다.
소스 코드에서 직접 ARB를 구축하고 설치하는 방법에 대한 지침은 http://arblib.org/setup.html을 참조하십시오. Linux 배포의 패키지로 ARB를 사용할 수 있습니다 (또는 곧 출시 될 수도 있습니다.
Sagemath (http://sagemath.org/)에는 표준 패키지로 ARB가 포함되어 있으며 높은 수준의 Python 인터페이스를 포함합니다. Realballfield (http://doc.sagemath.org/html/en/reference/rings_numerical/sage/rings/real_arb.html) 및 Complexballfield의 Sagemath 문서를 참조하십시오 (http://doc.sagemath.org/html/en/reference/rings_numerical/sage/rings/complex_arb.html).
NEMO (https://github.com/nemocas/nemo.jl/)는 ARB에 대한 높은 수준의 Julia 인터페이스를 포함하는 Julia 프로그래밍 언어를위한 컴퓨터 대수 패키지입니다. NEMO 설치 스크립트는 다른 종속성과 함께 ARB의 로컬 설치를 만듭니다.
Flint 및 ARB에 대한 독립형 파이썬 인터페이스도 제공됩니다 (https://github.com/fredrik-johansson/python-flint).
C99 complex double 유형과 함께 사용할 초월 함수의 별도의 래퍼가 이용 가능합니다 (https://github.com/fredrik-johansson/arbcmath).
다른 타사 래퍼는 다음과 같습니다.