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 Mailing [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 بالعمل مع متعدد الحدود المتغير ، وسلسلة الطاقة المقطوعة ، والمصفوفات على كل من الأرقام الحقيقية والمعقدة.
يتم دعم الجبر الخطي الأساسي ، بما في ذلك مضاعفة المصفوفة ، العوامل المحددة ، العكسية ، الحل غير الأسي ، المصفوفة الأسية ، وحساب القيم الذاتية والمؤثرات.
دعم متعدد الحدود وسلسلة الطاقة واسعة النطاق تمامًا ، بما في ذلك طرق التكوين ، والانعكاس ، وأشجار المنتج ، والتقييم متعدد النقاط والاستيفاء ، وعزل الجذر المعقد ، والوظائف المتعالية لسلسلة الطاقة.
تشمل الميزات الأخرى عزل الجذر للوظائف الحقيقية ، والتكامل العددي الصارم للوظائف المعقدة ، وتحويلات فورييه المنفصلة (DFTS).
يمكن لـ ARB حساب مجموعة واسعة من الوظائف المتعالية والخاصة ، بما في ذلك وظيفة Gamma ، وظائف تعدد الزوجات ، وظائف Riemann Zeta و Hurwitz Zeta ، وظائف Dirichlet L ، وظائف polylogarith ، وظائف الخطأ ، وظائف Gauss Hypergeetric 2F1 ، وظائف Hypergeometric المتقدمة ، وظائف Bessogen ، وظائف Airy ، متعدد الحدود ، والتكاملات الأسية والثلاثية ، ووظائف الغاما والبيتا غير المكتملة ، ووظائف ثيتا Jacobi ، والوظائف المعيارية ، وأعداد Weiersstrass الإهليلجية ، وأعداد الكامل الكاملة وغير المكتملة ، ووظائف البارنات ، و Lambert.
يستخدم ARB تمثيل Midpoint-Radius (الكرة) للأرقام الحقيقية. بدقة عالية ، يسمح هذا بالقيام بالحساب الفاصل دون وجود عام كبير مقارنة بحساب النقطة العائمة. كما تم تنفيذ العديد من التحسينات ذات المستوى المنخفض لتقليل النفقات العامة عند الدقة في عدد قليل من كلمات الماكينة. تستخدم معظم العمليات على متعدد الحدود وسلسلة الطاقة تكاثر FFT السريع بشكل غير مقارب على أساس الصوان. وبالمثل ، تستفيد معظم العمليات على المصفوفات الكبيرة من تكاثر مصفوفة عدد صحيح سريع في الصوان.
بالنسبة للحساب الأساسي ، يجب أن يكون 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 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).
انظر http://arblib.org/setup.html للحصول على تعليمات حول بناء وتثبيت ARB مباشرة من رمز المصدر. قد يكون ARB متاحًا أيضًا (أو قريبًا) كحزمة لتوزيع Linux الخاص بك.
يتضمن Sagemath (http://sagemath.org/) ARB كحزمة قياسية ويحتوي على واجهة بيثون عالية المستوى. راجع وثائق 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/) هي حزمة الجبر للكمبيوتر للغة برمجة جوليا والتي تتضمن واجهة جوليا عالية المستوى إلى ARB. سيقوم برنامج تثبيت NEMO بإنشاء تثبيت محلي لـ ARB مع التبعيات الأخرى.
تتوفر أيضًا واجهة Python المستقلة إلى Flint و ARB (https://github.com/fredrik-johansson/python-flint).
يتوفر غلاف منفصل من الوظائف المتعالية للاستخدام مع النوع complex double C99 (https://github.com/fredrik-johansson/arbcmath).
وتشمل أغلفة الطرف الثالث الأخرى: