کتابخانه علوم گنو
کتابخانه علمی گنو (یا GSL) یک کتابخانه نرمافزاری برای محاسبات عددی در ریاضیات کاربردی و علوم است. GSL به زبان سی نوشته شدهاست؛ همچنین wrapperهای آن برای زبانهای برنامهنویسی دیگر دردسترس هستند. GSL بخشی از پروژه گنو است و تحت پروانه عمومی همگانی گنو منتشر شدهاست.
نویسنده(های) اصلی | Mark Galassi, James Theiler, Brian Gough, Gerard Jungman و بسیاری دیگر |
---|---|
توسعهدهنده(ها) | پروژه گنو |
انتشار آزمایشی | ۱٫۱۶
|
مخزن | |
نوشتهشده با | سی |
گونه | کتابخانه محاسباتی |
پروانه | پروانه عمومی همگانی گنو |
وبگاه |
پیشینه پروژه
پروژه GSL در ۱۹۹۶ توسط فیزیکدانان Mark Galassi و James Theiler از آزمایشگاه ملی آلاموس پایهگذاری شد. آنان هدف نوشتن یک جایگزین پیشرفته برای کتابخانههای مورد استفاده گسترده، اما بهروزنشده فورترن همچون Netlib داشتند. آنان تمام طراحی کلی را انجام دادند و ماژولهای اولیه را نوشتند؛ و هنگام آمادگی آنها دانشمندان دیگری را برای همکاری استخدام کردند.
«توسعه کلی کتابخانه و ساخت ماژولهای بزرگتر» توسط Brian Gough و Gerard Jungman انجام شد. همکاران بزرگ دیگر Jim Davies, Reid Priedhorsky, M. Booth و F. Rossi بودند.
نسخه ۱٫۰ در ۲۰۱۱ منتشر شد. و کتابخانه به صورت فعال به توسعه ادامه داد و نسخه ۱٫۱۶ آن در ۱۹ ژوئیه ۲۰۱۳ منتشر شد.
نمونه
برنامه نمونه زیر مقدار تابع بسل را برای ۵ محاسبه میکند.
#include <stdio.h>
#include <gsl/gsl_sf_bessel.h>
int main(void)
{
double x = 5.0;
double y = gsl_sf_bessel_J0(x);
printf("J0(%g) = %.18e\n", x, y);
return 0;
}
این برنامه نمونه در حال پیوند دادن به کتابخانه GSL هنگام کامپایل است.
gcc $(gsl-config --cflags) example.c $(gsl-config --libs)
خروجی در زیر نمایش دادهشده و میتواند با دقت مضاعف صحیح باشد.
J0(5) = -1.775967713143382920e-01
ویژگیها
کتابخانه نرمافزاری این قابلیتها را ارائه میدهد
- توابع پایه ریاضیات
- اعداد مختلط
- چندجملهایها
- توابع مخصوص
- بردار و ماتریس
- جایگشتها
- ترکیبات
- Multisets
- مرتبسازی
- BLAS
- جبر خطی
- Eigensystems
- تبدیل فوریه سریع
- یکپارچهسازی اعداد (بر پایه QUADPACK)
- ساخت عدد تصادفی
- توالی شبهتصادفی
- توزیع اعداد تصادفی
- آمار
- هیستوگرام
- تاپل N
- یکپارچهسازی مونت کارلو
- بازریخت شبیهسازی شده
- معادلات دیفرانسیل معمولی
- الحاق
- دیفرانسیل عددی
- تقریب چبیشف
- شتاب سری
- تبدیل گسسته هنکل
- ریشهیابی در یک و چند بعدی
- بهینهسازی در یک و چند بعدی
- حداقل مربعات fitting
- حداقل مربعات fitting غیرخطی
- ثابتهای فیزیکی
- حساب ممیز شناور IEEE
- تبدیل موجک گسسته
اتصال زبانهای برنامهنویسی
از آنجایی که GSL به زبان سی نوشته شده، ارائه wrapper به زبانهای برنامهنویسی دیگر آسان است. در زیر چنین wrapperهایی آمدهاند:
پشتیبانی سی++
GSL میتواند در کلاسهای سی++ استفاده شود، اما بدون استفاده از اشارهگر به توابع عضو، چرا که اشارهگر به تابع عضو با اشارهگر به تابع متفاوت است. بهجای آن، اشارهگر به توابع ایستا میتواند استفاده شود. استفاده مشابهی درباره آن استفاده از functor است. wrapperهای سی++ برای GSL هم دردسترس است، اگرچه بهطورمرتب نگهداری نمیشوند.