Vědecká knihovna GNU - GNU Scientific Library

Vědecká knihovna GNU
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 ; Před 25 lety ( 1996-05 )
Stabilní uvolnění
GSL-2.7 / 1. června 2021 ; Před 4 měsíci ( 2021-06-01 )
Úložiště ftpmirror .gnu .org /gsl /
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 .org /software /gsl /

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:

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