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.6 / 20. srpna 2019 |
Úložiště | ftpmirror |
Napsáno | C |
Typ | Numerická knihovna |
Licence | GNU General Public License |
webová stránka | www |
The Vědecká knihovna GNU (nebo GSL) je softwarová knihovna pro numerické výpočty v aplikovaná matematika a Věda. GSL je napsán C; wrappery jsou k dispozici pro jiné programovací jazyky. GSL je součástí Projekt GNU[1] a je distribuován pod GNU General Public License.
Historie projektu
Projekt GSL zahájili v roce 1996 fyzici Mark Galassi a James Theiler z Národní laboratoř Los Alamos.[2] Jejich cílem bylo napsat moderní náhradu za široce používanou, ale poněkud zastaralou Fortran knihovny jako Netlib.[3] Provedli celkový design a napsali rané moduly; s touto připraveností najali další vědce, aby přispěli.
„Celkový vývoj knihovny a návrh a implementace hlavních modulů“ provedla společnost Brian Gough a Gerard Jungman.[2] Dalšími významnými přispěvateli byli Jim Davies, Reid Priedhorsky, M. Booth a F. Rossi.[2]
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.
Intenzivní vývoj byl obnoven vydáním verze 2.0 v říjnu 2015. Nejnovější verze 2.6 byla vydána v srpnu 2019.
Příklad
Následující ukázkový program vypočítá hodnotu parametru Besselova funkce pro 5:[4]
#zahrnout <stdio.h>#zahrnout <gsl/gsl_sf_bessel.h>int hlavní(prázdnota){ dvojnásobek X = 5.0; dvojnásobek y = gsl_sf_bessel_J0(X); printf(„J0 (% g) =% .18e n", X, y); vrátit se 0;}
Ukázkový program musí být propojen s kompilací knihovny GSL:
gcc $(gsl-config --cflags) příklad. c $(gsl-config --libs)
Výstup je uveden níže a měl by být správný dvojnásobná přesnost přesnost:
J0 (5) = -1,775967713143382920e-01
Funkce
Softwarová knihovna poskytuje vybavení pro:
- Základní matematické funkce
- Složitá čísla
- Polynomy
- B-splajny
- Speciální funkce
- Vektory a matice
- Permutace
- Kombinace
- Multisety
- 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
- Náhodné rozdělení čísel
- Statistika
- Histogramy
- N-tice
- Integrace Monte Carlo
- Simulované žíhání
- Obyčejné diferenciální rovnice
- Interpolace
- Numerická diferenciace
- Čebyševovy aproximace
- Sériové zrychlení
- Oddělený Hankelova transformace
- Kořenový nález v jedné a více dimenzích
- Minimalizace v jedné a více dimenzích
- Kování nejmenších čtverců
- Nelineární tvar nejméně čtverců
- Fyzikální konstanty
- Aritmetika s plovoucí desetinnou čárkou IEEE
- Diskrétní vlnková transformace
Vazby v programovacím jazyce
Vzhledem k tomu, že GSL je napsán v jazyce C, je jednoduché poskytnout obálky pro další programovací jazyky. Takové obaly v současné době existují pro
- AMPL[5]
- C ++[6][7][8]
- Fortran[9]
- Haskell[10][11]
- Jáva[12]
- Julie[13]
- Lisp[14]
- Ocaml[15]
- Oktáva
- Datový jazyk Perl
- Krajta[16]
- R[17][18]
- Rubín[19]
Podpora C ++
GSL lze použít v C ++ třídy, ale nepoužívá ukazatele na členské funkce, protože typ ukazatel na členskou funkci se liší od ukazatel na funkci.[20] Místo toho je třeba použít ukazatele na statické funkce. Dalším běžným řešením je použití a funktor.
K dispozici jsou obaly C ++ pro GSL.[6][7][8] Ne všechny jsou pravidelně udržovány. Nabízejí přístup k maticovým a vektorovým třídám, aniž by je uživatel musel používat malloc a volný, uvolnit funkce. Některé také nabízejí podporu pro vytváření pracovních prostorů, které se chovají podobně Chytrý ukazatel třídy. Konečně existuje (od dubna 2020 omezená) podpora umožňující uživateli vytvářet třídy, které představují parametrizovanou funkci jako funktor.
I když to není striktně wrapper, existují některé třídy C ++ [21][22] které uživatelům C ++ umožňují používat vědeckou knihovnu Gnu s obalovými funkcemi.
Viz také
Reference
- ^ http://directory.fsf.org/GNU/
- ^ A b C Domovská stránka GSL.
- ^ GSL designový dokument.
- ^ Používání knihovny. Ukázkový program. Dokumentace GSL.
- ^ Vazby AMPL pro vědeckou knihovnu GNU.
- ^ A b ccgsl: rozhraní C ++ pro vědeckou knihovnu gnu;
- ^ A b GSL-- C ++ obaly pro GSL;
- ^ A b GSLwrap: Obálka třídy C ++ pro vědeckou knihovnu GNU.
- ^ FGSL - Fortranské rozhraní k vědecké knihovně GNU.
- ^ Balíček hmatrix-special, rozhraní se speciálními funkcemi GSL.
- ^ Balíček hmatrix-gsl, čistě funkční rozhraní k vybraným numerickým výpočtům, interně implementováno pomocí GSL.
- ^ Předvolby JavaCPP pro GSL.
- ^ Rozhraní Julia s GSL.
- ^ GSLL, GNU Scientific Library for Lisp.
- ^ gsl-ocaml: Vazby OCaml na GSL.
- ^ Pythonské rozhraní pro GNU Scientific Library.
- ^ RcppGSL: Integrace „Rcpp“ pro vektory a matice „GNU GSL“.
- ^ gsl: obal pro vědeckou knihovnu GNU.
- ^ rb-gsl: Ruby / GSL je rozhraní Ruby k vědecké knihovně GNU pro numerické výpočty s Ruby.
- ^ Ukazatele na členské funkce. Archivováno 2004-10-13 na Wayback Machine.
- ^ o2scl objektově orientovaná vědecká výpočetní knihovna;
- ^ yat.
externí odkazy
- Oficiální webové stránky
- The GSL balík pro R (programovací jazyk), obálka R pro speciální funkce a generátory kvazi náhodných čísel.