2023: ARB ถูกรวมเข้ากับหินเหล็กไฟ ที่เก็บปัจจุบันถูกเก็บถาวรและจะไม่ได้รับการปรับปรุงอีกต่อไป ดู
https://github.com/flintlib/flint/
สำหรับการพัฒนาใหม่!
ARB เป็นไลบรารี C สำหรับการคณิตศาสตร์ช่วงเวลาที่กำหนดโดยพลการ มันได้รับการสนับสนุนอย่างเต็มที่สำหรับตัวเลขจริงและที่ซับซ้อน ไลบรารีนั้นมีความปลอดภัยแบบเธรดพกพาและทดสอบอย่างกว้างขวาง ARB เป็นซอฟต์แวร์ฟรีที่จัดจำหน่ายภายใต้ใบอนุญาตสาธารณะ GNU Lesser ทั่วไป (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 ยังอนุญาตให้ทำงานกับพหุนามแบบ univariate, ชุดพลังงานที่ถูกตัดทอนและเมทริกซ์มากกว่าตัวเลขจริงและที่ซับซ้อน
รองรับพีชคณิตเชิงเส้นพื้นฐานรวมถึงการคูณเมทริกซ์, ปัจจัย, ผกผัน, การแก้ปัญหาที่ไม่จำเป็น, เมทริกซ์เอ็กซ์โปเนนเชียลและการคำนวณค่าลักษณะเฉพาะและ eigenvectors
การสนับสนุนพหุนามและชุดพลังงานค่อนข้างกว้างขวางรวมถึงวิธีการสำหรับองค์ประกอบการพลิกกลับต้นไม้ผลิตภัณฑ์การประเมินแบบหลายจุดและการแก้ไขการแยกรากที่ซับซ้อนและฟังก์ชั่นยอดเยี่ยมของซีรีย์พลังงาน
คุณสมบัติอื่น ๆ รวมถึงการแยกรากสำหรับฟังก์ชั่นจริงการรวมตัวเลขที่เข้มงวดของฟังก์ชั่นที่ซับซ้อนและการแปลงฟูริเยร์แบบแยก (DFTs)
ARB สามารถคำนวณฟังก์ชั่นที่ยอดเยี่ยมและพิเศษได้หลากหลายรวมถึงฟังก์ชั่นแกมม่า, ฟังก์ชั่น polygamma, ฟังก์ชั่น riemann Zeta และ Hurwitththetz Zeta, ฟังก์ชั่น LICHLET L LICHLET, ฟังก์ชั่นการทำงานของ hypergeometric hypergeometric พหุนาม, อินทิกรัลแบบเอ็กซ์โปเนนเชียลและตรีโกณมิติ, ฟังก์ชั่นแกมม่าและเบต้าที่ไม่สมบูรณ์, ฟังก์ชั่น Jacobi theta, ฟังก์ชั่นโมดูลาร์, ฟังก์ชั่นรูปไข่แบบ weierstrass, วงรีที่สมบูรณ์และไม่สมบูรณ์
ARB ใช้การแสดงถึงจุดกึ่งกลาง (บอล) ของจำนวนจริง ที่ความแม่นยำสูงสิ่งนี้จะช่วยให้การทำเลขคณิตช่วงเวลาโดยไม่มีค่าใช้จ่ายอย่างมีนัยสำคัญเมื่อเทียบกับเลขคณิตจุดลอยตัวธรรมดา นอกจากนี้ยังมีการปรับให้เหมาะสมในระดับต่ำต่าง ๆ ได้ถูกนำไปใช้เพื่อลดค่าใช้จ่ายในการกำหนดค่าของเครื่องจักรเพียงไม่กี่คำ การดำเนินการส่วนใหญ่เกี่ยวกับพหุนามและชุดพลังงานใช้การคูณ FFT ที่รวดเร็วแบบ asymptotically ขึ้นอยู่กับหินเหล็กไฟ ในทำนองเดียวกันการดำเนินการส่วนใหญ่ในเมทริกซ์ขนาดใหญ่ใช้ประโยชน์จากการคูณเมทริกซ์จำนวนเต็มอย่างรวดเร็วในหินเหล็กไฟ
สำหรับเลขคณิตขั้นพื้นฐานโดยทั่วไป ARB ควรอยู่ใกล้กับ MPFR (http://mpfr.org) แม้ว่ามันจะช้าลงเล็กน้อยที่ความแม่นยำต่ำและเร็วกว่า MPFI (https://perso.ens-lyon.fr/nathalie.revol/Software.html)
ฟังก์ชั่นยอดเยี่ยมใน ARB นั้นได้รับการปรับให้เหมาะสมมากและโดยทั่วไปควรเร็วกว่าซอฟต์แวร์ที่มีความแม่นยำตามอำเภอใจอื่น ๆ ในปัจจุบัน ตารางต่อไปนี้เปรียบเทียบเวลาเป็นวินาทีเพื่อประเมินฟังก์ชั่น Gauss hypergeometric 2F1(1/2, 1/4, 1, z) ที่หมายเลขคอมเพล็กซ์ z = 5^(1/2) + 7^(1/2)i ถึงจำนวนเลขทศนิยมที่กำหนด GHZ Intel Xeon X5675)
| ตัวเลข | คณิตศาสตร์ | mpmath | อาร์บ |
|---|---|---|---|
| 10 | 0.00066 | 0.00065 | 0.000071 |
| 100 | 0.0039 | 0.0012 | 0.00048 |
| 1,000 | 0.23 | 1.2 | 0.0093 |
| 10,000 | 42.6 | 84 | 0.56 |
ARB ขึ้นอยู่กับ Flint (http://flintlib.org/) ไม่ว่าจะเป็น GMP (http://gmplib.org) หรือ mpir (http://mpir.org) และ mpfr (http://mpfr.org)
ดู http://arblib.org/setup.html สำหรับคำแนะนำเกี่ยวกับการสร้างและการติดตั้ง ARB โดยตรงจากซอร์สโค้ด ARB อาจพร้อมใช้งาน (หรือเร็ว ๆ นี้) เป็นแพ็คเกจสำหรับการแจกจ่าย Linux ของคุณ
Sagemath (http://sagemath.org/) รวม ARB เป็นแพ็คเกจมาตรฐานและมีอินเทอร์เฟซ Python ระดับสูง ดูเอกสาร Sagemath สำหรับ Realballfield (http://doc.sagemath.org/html/en/reference/rings_numerical/sage/rings/real_arb.html) และ Complexballfield (http://doc.sagemath.org/html/en/reference/rings_numerical/sage/rings/complex_arb.html)
NEMO (https://github.com/nemocas/nemo.jl/) เป็นแพ็คเกจพีชคณิตคอมพิวเตอร์สำหรับภาษาการเขียนโปรแกรม Julia ซึ่งรวมถึงอินเทอร์เฟซ Julia ระดับสูงถึง ARB สคริปต์การติดตั้ง NEMO จะสร้างการติดตั้ง ARB ในท้องถิ่นพร้อมกับการอ้างอิงอื่น ๆ
นอกจากนี้ยังมีอินเทอร์เฟซ Python แบบสแตนด์อโลนไปยัง Flint และ ARB (https://github.com/fredrik-johansson/python-flint)
มี wrapper แยกต่างหากของฟังก์ชั่นยอดเยี่ยมสำหรับใช้กับ C99 complex double type (https://github.com/fredrik-johansson/arbcmath)
ผู้ห่อหุ้มบุคคลที่สามอื่น ๆ ได้แก่ :