Vědecká knihovna GNU - GNU Scientific Library
Původní autoři | Mark Galassi , James Theiler, Brian Gough, Gerard Jungman a mnoho dalších |
---|---|
Vývojáři | Projekt GNU |
První vydání | Květen 1996 |
Stabilní uvolnění | GSL-2.7 / 1. června 2021
|
Úložiště | ftpmirror |
Napsáno | C |
Typ | Numerická knihovna |
Licence | 2007: GPL-3.0-nebo-novější 1996: GPL-2.0-nebo-novější |
webová stránka | www |
GNU vědecká knihovna (nebo GSL ) je softwarová knihovna pro numerické výpočty v oblasti aplikované matematiky a vědy . GSL je napsán v jazyce C ; obaly jsou k dispozici pro jiné programovací jazyky. GSL je součástí projektu GNU a je distribuován pod licencí General Public License GNU .
Historie projektu
Projekt GSL zahájili v roce 1996 fyzici Mark Galassi a James Theiler z Los Alamos National Laboratory . Jejich cílem bylo napsat moderní náhradu za široce používané, ale poněkud zastaralé fortranské knihovny, jako je Netlib . Provedli celkový návrh a napsali rané moduly; s tím připraveným najali další vědce, aby přispěli.
„Celkový vývoj knihovny a návrh a implementace hlavních modulů“ provedli Brian Gough a Gerard Jungman. Dalšími významnými přispěvateli byli Jim Davies , Reid Priedhorsky, M. Booth a F. Rossi.
Verze 1.0 byla vydána v roce 2001. V následujících letech se knihovna rozšiřovala jen pomalu; jak uvádí dokumentace, správci se více zajímali o stabilitu než o další funkce. Hlavní verze 1 skončila vydáním 1.16 z července 2013; to byla jediná veřejná aktivita za tři roky 2012–2014.
Rázný vývoj pokračoval obnovením verze 2.0 v říjnu 2015. Poslední verze 2.7 byla vydána v červnu 2021.
Příklad
Následující příklad programu vypočítá hodnotu Besselovy funkce pro 5:
#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;
}
Při kompilaci musí být ukázkový program propojen s knihovnou GSL:
gcc $(gsl-config --cflags) example.c $(gsl-config --libs)
Výstup je uveden níže a měl by být správný s přesností dvojnásobné přesnosti:
J0(5) = -1.775967713143382920e-01
Funkce
Softwarová knihovna poskytuje vybavení pro:
- Základní matematické funkce
- Složitá čísla
- Polynomy
- B-drážkování
- Speciální funkce
- Vektory a matice
- Permutace
- Kombinace
- Více sad
- Třídění
- BLAS
- Lineární algebra
- Vlastní systémy
- Rychlé Fourierovy transformace
- Numerická integrace (na základě QUADPACK )
- Generování náhodných čísel
- Kvazi-náhodné sekvence
- Distribuce náhodných čísel
- Statistika
- Histogramy
- N-tice
- Integrace Monte Carlo
- Simulované žíhání
- Běžné diferenciální rovnice
- Interpolace
- Numerická diferenciace
- Čebyševovy aproximace
- Sériové zrychlení
- Diskrétní Hanklova transformace
- Kořenové hledání v jedné a více dimenzích
- Minimalizace v jedné a více dimenzích
- Kování nejmenších čtverců
- Nelineární tvarování nejmenších čtverců
- Fyzikální konstanty
- Aritmetika s plovoucí desetinnou čárkou IEEE
- Diskrétní vlnková transformace
Vazby programovacího jazyka
Vzhledem k tomu, že GSL je napsán v jazyce C, je snadné poskytnout obaly pro jiné programovací jazyky. V současné době existují takové obaly
Podpora C ++
GSL lze použít ve třídách C ++ , ale nepoužívat ukazatele na členské funkce, protože typ ukazatele na členskou funkci se liší od ukazatele na funkci . Místo toho je třeba použít ukazatele na statické funkce. Dalším běžným řešením je použití funktoru .
K dispozici jsou obaly C ++ pro GSL. Ne všechny z nich jsou pravidelně udržovány. Nabízejí přístup k maticovým a vektorovým třídám, aniž by uživatel musel používat malloc a bezplatné funkce. Některé také nabízejí podporu pro vytváření pracovních prostorů, které se chovají jako třídy inteligentních ukazatelů . Nakonec existuje (omezená, od dubna 2020) podpora umožňující uživateli vytvářet třídy, které budou reprezentovat parametrizovanou funkci jako funktor .
I když to není striktně obal, existuje několik tříd C ++, které uživatelům C ++ umožňují používat vědeckou knihovnu Gnu s funkcemi obálky.
Viz také
Poznámky
Reference
externí odkazy
- Oficiální webové stránky
- Dokument o designu GSL
- Gsl balíček pro R (programovací jazyk) , což je R obal pro speciální funkce a kvazi generátorů náhodných čísel.