پرش به محتوا

کتاب‌خانه علوم گنو

از ویکی‌پدیا، دانشنامهٔ آزاد
کتاب‌خانه علمی گنو (GSL)
نویسنده(های)
اصلی
Mark Galassi, James Theiler, Brian Gough, Gerard Jungman و بسیاری دیگر
توسعه‌دهنده(ها)پروژه گنو
مخزن
نوشته‌شده باسی
مجوزپروانه عمومی همگانی گنو

کتاب‌خانه علمی گنو (یا GSL) یک کتاب‌خانه نرم‌افزاری برای محاسبات عددی در ریاضیات کاربردی و علوم است. GSL به زبان سی نوشته شده‌است؛ همچنین wrapperهای آن برای زبان‌های برنامه‌نویسی دیگر دردسترس هستند. GSL بخشی از پروژه گنو است و تحت پروانه عمومی همگانی گنو منتشر شده‌است.

پیشینه پروژه

[ویرایش]

پروژه 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

ویژگی‌ها

[ویرایش]

کتاب‌خانه نرم‌افزاری این قابلیت‌ها را ارائه می‌دهد

اتصال زبان‌های برنامه‌نویسی

[ویرایش]

از آنجایی که GSL به زبان سی نوشته شده، ارائه wrapper به زبان‌های برنامه‌نویسی دیگر آسان است. در زیر چنین wrapperهایی آمده‌اند:

پشتیبانی سی++

[ویرایش]

GSL می‌تواند در کلاس‌های سی++ استفاده شود، اما بدون استفاده از اشاره‌گر به توابع عضو، چرا که اشاره‌گر به تابع عضو با اشاره‌گر به تابع متفاوت است. به‌جای آن، اشاره‌گر به توابع ایستا می‌تواند استفاده شود. استفاده مشابهی درباره آن استفاده از functor است. wrapperهای سی++ برای GSL هم دردسترس است، اگرچه به‌طورمرتب نگهداری نمی‌شوند.

منابع

[ویرایش]