GNU Bilimsel Kütüphanesi - GNU Scientific Library

GNU Bilimsel Kütüphanesi
Orijinal yazar (lar)Mark Galassi, James Theiler, Brian Gough, Gerard Jungman ve diğerleri
Geliştirici (ler)GNU Projesi
İlk sürümMayıs 1996; 24 yıl önce (1996-05)
Kararlı sürüm
GSL-2.6 / 20 Ağustos 2019; 15 ay önce (2019-08-20)
Depoftpmirror.gnu.org/ gsl/
YazılmışC
TürSayısal kütüphane
LisansGNU Genel Kamu Lisansı
İnternet sitesiwww.gnu.org/yazılım/ gsl/

GNU Bilimsel Kütüphanesi (veya GSL) bir yazılım kitaplığı sayısal hesaplamalar için Uygulamalı matematik ve Bilim. GSL şu şekilde yazılmıştır: C; Diğer programlama dilleri için sarmalayıcılar mevcuttur. GSL, GNU Projesi[1] ve altında dağıtılır GNU Genel Kamu Lisansı.

Proje geçmişi

GSL projesi, 1996 yılında fizikçiler Mark Galassi ve James Theiler tarafından başlatıldı. Los Alamos Ulusal Laboratuvarı.[2] Yaygın olarak kullanılan ancak biraz modası geçmiş olan modern bir yedek yazmayı hedeflediler Fortran gibi kütüphaneler Netlib.[3] Genel tasarımı gerçekleştirdiler ve ilk modülleri yazdılar; bu hazırlıkla katkıda bulunmaları için başka bilim adamlarını işe aldılar.

"Kütüphanenin genel gelişimi ve ana modüllerin tasarımı ve uygulaması", Brian Gough ve Gerard Jungman.[2] Diğer büyük katkıda bulunanlar Jim Davies, Reid Priedhorsky, M. Booth ve F. Rossi.[2]

Versiyon 1.0 2001'de yayınlandı. Sonraki yıllarda, kütüphane sadece yavaş bir şekilde genişledi; Belgelerde belirtildiği gibi, bakımcılar ek işlevsellikten çok kararlılıkla ilgileniyorlardı. Ana sürüm 1, Temmuz 2013'ün 1.16 sürümüyle sona erdi; bu, 2012-2014 arasındaki üç yıllık tek halka açık faaliyetti.

Güçlü geliştirme, Ekim 2015'te sürüm 2.0'ın yayınlanmasıyla devam etti. En son sürüm 2.6, Ağustos 2019'da piyasaya sürüldü.

Misal

Aşağıdaki örnek program, Bessel işlevi 5 için:[4]

#Dahil etmek <stdio.h>#Dahil etmek <gsl/gsl_sf_bessel.h>int ana(geçersiz){  çift x = 5.0;  çift y = gsl_sf_bessel_J0(x);  printf("J0 (% g) =% .18e n", x, y);  dönüş 0;}

Örnek programın GSL kitaplığı üzerine derlemeye bağlanması gerekir:

gcc $(gsl-config --cflags) example.c $(gsl-config --libs)

Çıktı aşağıda gösterilmiştir ve doğru olmalıdır. çift ​​kesinlik doğruluk:

J0 (5) = -1,775967713143382920e-01

Özellikleri

Yazılım kitaplığı aşağıdakiler için olanaklar sağlar:

Programlama dili bağlamaları

GSL C dilinde yazıldığından, diğer programlama dilleri için sarmalayıcılar sağlamak kolaydır. Bu tür sarmalayıcılar şu anda mevcut

C ++ desteği

GSL, C ++ sınıflar, ancak üye işlevlere işaretçi kullanmıyor, çünkü türü üye işlevine işaretçi farklı işleve işaretçi.[20] Bunun yerine, statik işlevlere işaretçiler kullanılmalıdır. Başka bir yaygın çözüm, bir functor.

GSL için C ++ sarmalayıcılar mevcuttur.[6][7][8] Bunların hepsi düzenli olarak muhafaza edilmiyor. Kullanıcının kullanmak zorunda kalmadan matris ve vektör sınıflarına erişim sağlarlar. Malloc ve Bedava fonksiyonlar. Bazıları ayrıca şu şekilde davranan çalışma alanları oluşturmak için destek sunar Akıllı işaretçi sınıflar. Son olarak, kullanıcının parametreleştirilmiş bir işlevi bir işlev olarak temsil etmek için sınıflar oluşturmasına izin vermek için (Nisan 2020 itibarıyla sınırlıdır) functor.

Kesin olarak sarmalayıcılar olmasa da, bazı C ++ sınıfları vardır. [21][22] C ++ kullanıcılarının Gnu Bilimsel Kütüphanesini sarmalayıcı özellikleriyle kullanmasına izin verir.

Ayrıca bakınız

Referanslar

Dış bağlantılar