**کتاب‌خانه علمی گنو** (یا 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

```

ویژگی‌ها
--------

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

* توابع پایه ریاضیات
* اعداد مختلط
* چندجمله‌ای‌ها
* توابع مخصوص
* بردار و ماتریس
* جایگشت‌ها
* ترکیبات
* Multisets
* مرتب‌سازی
* BLAS
* جبر خطی
* Eigensystems
* تبدیل فوریه سریع
* یکپارچه‌سازی اعداد (بر پایه QUADPACK)
* ساخت عدد تصادفی
* توالی شبه‌تصادفی
* توزیع اعداد تصادفی
* آمار
* هیستوگرام
* تاپل N
* یکپارچه‌سازی مونت کارلو
* بازریخت شبیه‌سازی شده
* معادلات دیفرانسیل معمولی
* الحاق
* دیفرانسیل عددی
* تقریب چبیشف
* شتاب سری
* تبدیل گسسته هنکل
* ریشه‌یابی در یک و چند بعدی
* بهینه‌سازی در یک و چند بعدی
* حداقل مربعات fitting
* حداقل مربعات fitting غیرخطی
* ثابت‌های فیزیکی
* حساب ممیز شناور IEEE
* تبدیل موجک گسسته

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

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

* AMPL
* سی++
* فورترن
* هسکل
* لیسپ
* Ocami
* اوکتاو
* زبان داده پرل
* پایتون
* آر
* روبی

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

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

منابع
-----



| * ن
* ب
* و
پروژه گنو |
| --- |
| تاریخچه | بیانیه گنو ·  بنیاد نرم‌افزار آزاد (اروپا ·  هند ·  آمریکای لاتین) ·  تاریخچه نرم‌افزار آزاد | GNU is not a gnu |
| پروانه‌ها | پروانه عمومی همگانی گنو ·  گنو ال‌جی‌پی‌ال ·  آفرو جی‌پی‌ال ·  پروانه مستندات آزاد گنو ·  GPL linking exception |
| نرم‌افزارها | 
* گنو (انواع)
* گنو هرد
* لینوکس-لیبره
* کتابخانه سی گنو
* بش
* coreutils
* findutils
* Build System
* جی‌سی‌سی
* گنو بین‌یوتیلز
* گنو دیباگر
* گنو گراب
* گنوم
* گنو استپ
* گیمپ
* گنو ایمکس
* GNU TeXmacs
* گنو آکتیو
* آر
* کتاب‌خانه علوم گنو
* GMP
* Electric
* GNU Archimedes
* گنونت
* گنو پرایوسی گارد
* گنوزیلا (گنو آیس‌کت)
* گنو هیلس
* GNUmed
* لیلی‌پاند
* GNU Go
* شطرنج گنو
* جی‌نش
* گنو گیکس
* توزیع سامانه گیکس
* *بیشتر...*

 |
| سخنرانان عمومی | Alexandre Oliva ·  Benjamin Mako Hill ·  Bradley M. Kuhn ·  ابن ماگلن ·  Federico Heinz ·  Georg C. F. Greve ·  Loïc Dachary ·  Ricardo Galli ·  ریچارد استالمن ·  Robert J. Chassell ·  John Sullivan |
| دیگر موضوع‌ها | بحث نامگذاری گنو/لینوکس ·  *انقلاب اواس* ·  BadVista ·  Defective by Design |