GSL-GNU科学图书馆

GNU科学库(GSL)是一个面向C和C++程序员的数字库。它是GNU通用公共许可下的自由软件。

该库提供了广泛的数学例程,如随机数生成器、特殊函数和最小二乘拟合。总共有1000多个功能,有一个广泛的测试套件。

与专有数字图书馆的许可不同,GSL的许可并不限制科学合作。它允许您与他人自由共享您的程序。

当前稳定版本以下为:GSL-2.7标准
2021年6月1日发布。
(有关最近更改的详细信息,请参阅新闻文件。)



GSL中的功能区

图书馆涵盖的全部主题领域包括

  • 复数
  • 多项式的根
  • 特殊功能
  • 向量和矩阵
  • 突变
  • 排序
  • BLAS支持
  • 线性代数
  • 特征系统
  • 快速傅里叶变换
  • 正交
  • 随机数
  • 准随机序列
  • 随机分布
  • 统计
  • 直方图
  • N元组
  • 蒙特卡罗积分
  • 模拟退火
  • 微分方程
  • 插值
  • 数值微分
  • 切比雪夫近似
  • 串联加速度
  • 离散Hankel变换
  • 寻根
  • 最小化
  • Least-Squares配件
  • 物理常数
  • IEEE浮点
  • 离散小波变换
  • 基本样条曲线
  • 运行统计信息
  • 稀疏矩阵与线性代数

下载GSL

稳定版本可以在上的gsl子目录中找到

有关获取GSL的其他方式,请阅读如何获得GNU软件

安装说明可以在包含的README和INSTALL文件中找到。

大多数GNU/Linux发行版都包含预编译的二进制包。

GSL的编译版本可作为Cygwin公司在Windows上。

验证GSL签名

要验证GSL tarball的签名,请下载gsl-X.Y.tar.gz和gsl-X.j.tar.gz.sig文件。这个可以找到用于签署官方发布的密钥在这里。

签名可以通过以下步骤进行验证:

gpg—导入gsl_key.txtgpg—验证gsl-X.Y.tar.gz.sig

文档

GSL包含reStructuredText格式的参考手册。您可以查看HTML和PDF格式的手册,也可以使用shell命令在系统上阅读手册信息gsl-ref(如果安装了库)。

GSL参考手册在线提供,

该手册已作为印刷本出版(根据GNU自由文档许可证),最新版本为

GNU科学图书馆参考手册-第三版(2009年1月),
M.Galassi等人,ISBN 0954612078(平装)RRP 39.95美元。

网上还提供了日语翻译(可能不是最新版本)。

网上还提供葡萄牙语翻译。

如果您使用并重视GSL,请考虑捐款帮助我们改进图书馆。

支持的平台

GSL是在以下平台上开发的,

  • 带有gcc的GNU/Linux

据报道,它可以在以下其他平台上编译,

  • SunOS 4.1.3和Solaris 2.x(Sparc)
  • Alpha GNU/Linux,gcc
  • HP-UX 9/10/11、PA-RISC、gcc/cc
  • IRIX 6.5,gcc公司
  • m68k NeXTSTEP,gcc公司
  • Compaq Alpha Tru64 Unix,gcc公司
  • FreeBSD、OpenBSD和NetBSD、gcc
  • Cygwin公司
  • 苹果达尔文5.4
  • 日立SR8000 Super Technical Server,cc
  • Microsoft Windows

有几个人贡献了一些工具,使GSL能够在Windows平台上轻松构建。可以找到更多信息在这里。

我们要求GSL应该构建在任何带有ANSI C编译器的类UNIX系统上,如果没有,那就是一个bug,我们希望有一个补丁!完整的库也应该通过进行检查.

如果你发现了一个错误,请报告给<bug-gsl@gnu.org程序>.

以前提交的错误报告可以在bug-gsl邮件列表存档GSL错误数据库.

邮件列表

按照以下单个邮件列表的链接订阅或查看列表存档:

  • 臭虫-gsl<bug-gsl@gnu.org>邮件列表--GNU科学图书馆的错误报告应发送到此处
  • 帮助-gsl<帮助-gsl@gnu.org>用户邮件列表——有关安装、GSL如何工作和如何使用的问题,或有关GSL的一般问题。
  • 信息-gsl<info-gsl@gnu.org>邮件列表——这里发布了新版本的公告。

您也可以通过Savannah关注公告GSL RSS源.RSS(RSS)

动机

以下是根据GNU通用公共许可证使用免费科学图书馆的一些主要好处,

  • 允许更轻松的协作,库对每个人都是免费的。
  • 使用该库的软件可以作为源代码公开发布。
  • 您可以根据需要调整源代码。
  • 尊重您的隐私,不会对“内部”使用施加任何条件。
  • 您可以为用户社区提供改进。

特殊功能

该库使用面向对象的设计。不同的算法可以很容易地插入或在运行时更改,而无需重新编译程序。

它是为普通科学用户设计的。任何懂C语言编程的人都可以直接开始使用这个库。

该接口设计得很简单,可以链接到非常高级的语言,如GNU Guile或Python

该库是线程安全的。

在可能的情况下,这些例程基于可靠的公共域Fortran包,如FFTPACK和QUADPACK,GSL的开发人员使用现代编码约定在C中重新实现了这些包。

该库易于编译,并且不依赖于其他包。

许可

GSL根据通用公共许可证(GPL)。

以下文章描述了GNU项目使用GPL的原因:

以下文章提供了研究人员的其他信息:

有关许可证常见问题的一些答案:

如果我编写一个使用GSL的应用程序,我是否被迫分发该应用程序?
不可以。如果您愿意,许可证为您提供了分发应用程序的选项。您不必在许可证中使用此选项。

如果我想分发使用GSL的应用程序,我需要使用什么许可证?
GNU通用公共许可证(GPL)。

商业用户的底线:

GSL可以在内部(“内部”)无限制地使用,但只能在GNU GPL下的其他软件中重新发布。

更多信息

如果你想在期刊文章中参考GNU科学图书馆,推荐的方法是引用参考手册,例如。M.Galassi等人,《GNU科学图书馆参考手册》(第三版),ISBN 0954612078.

如果要提供url,请使用“http://www.gnu.org/software/gsl/".

GSL需要一个用于向量和矩阵运算的BLAS库。GSL提供的默认CBLAS库可以替换为调优的ATLAS库,以获得更好的性能,

  • 阿特拉斯-具有CBLAS接口的便携式自优化BLAS库

ATLAS是自由软件,其许可证与GNU GPL兼容。

对科学计算有用的其他软件包包括:

所有这些包都是免费软件(GNU GPL/LGPL)。

开发

GSL开发由Savannah.gnu.org托管,网址为http://savannah.gnu.org/projects/gsl

存储库可通过“git”使用

git克隆git://git.savannah.gnu.org/gsl.git

注:如果使用git,则需要automake、autoconf、libtool、GNU m4、GNU make和GNUTexinfo(制造信息)。

要从签出开始构建过程,请从以下开始:./autogen.sh它将为编译包做准备。然后您可以使用./configure--启用maintainer-mode制作以通常的方式。

提交通知可通过git存储库获得新闻提要.

除了GSL公司参考手册,任何想要使用该库的人都应该阅读GSL设计文档,

GSL是一个具有稳定API的成熟库。主要重点是确保现有功能的稳定性,整理和修复报告的任何错误,并添加经过良好测试和记录的新的有用算法。鼓励潜在的贡献者通过调查和修复BUGS数据库中的已知问题来熟悉该库。

该项目始终希望引入新功能并扩展或改进现有功能。为了保持稳定性,任何新功能都被鼓励作为包,构建在GSL之上,并由其作者独立维护,就像在其他自由软件项目中一样。GSL的设计允许通过简单的链接将扩展与现有库一起使用。一旦一个新的扩展被证明是有用和稳定的,它就可以被合并到主GSL存储库中。

关于图书馆发展的讨论gsl-discuss@sourceware.org邮件列表。欢迎数值分析专家提出任何意见。您可以订阅gsl讨论在这里。

GSL是GNU项目的一部分,因此遵循GNU编码标准.

技术报告

GSL技术报告旨在记录GSL中某些功能实现的详细信息。GSL技术报告集可在此处找到:

扩展/应用

以下第三方软件包提供了对GSL的扩展。

如果您想向GSL添加功能,我们建议您首先将其作为扩展。我们将在这里列出它,以便人们可以试用。扩展可以在实际使用中经过测试后合并.

  • 张索尔-多维数组表示和处理的张量库
  • MIXMAX公司-伪随机数MIXMAX生成器(http://mixmax.hepforge.org)
  • 准蒙特卡罗-准蒙特卡罗积分例程(戴维·扎斯拉夫斯基)
  • ISVD公司-增量奇异值分解(Attila Axt)
  • 结婚张索尔-多维数组和张量的扩展(Jordi Burguet Castell)
  • 非线性的-N维最小二乘拟合的更简单界面(帕特里克·阿尔肯)
  • 退火-使用新API(alpha-Marco Maggi)重新进行模拟退火
  • 雅可比-0.9-雅可比多项式和与高斯雅可比求积有关的运算(积分、导数和插值)(保罗·贾巴多)
  • 齐古拉-高斯-使用Ziggurat方法(Jochen-Voss)的更快的高斯发生器,现已并入GSL 1.8
  • 维格纳。c(c)-替代Wigner系数计算(大j)(j.Underwood)
  • 自适应。c(c)-自适应多维集成,类似于cubpack(史蒂文·约翰逊)
  • jsqrng公司-高维准随机序列(J.Scott)
  • 定量糊精-扩展维QRNG(Philipp Baecker)
  • CQP公司-解决凸二次问题(Ewgenij Hübner)
  • 捆绑-强大的束最小化算法(需要CQP)(Ewgenij Hübner-升级到v1.2,2006年10月)
  • 格西-其他最小化算法(Peter Geczy)
  • 四分之一-四次多项式解算器(安德鲁·斯坦纳)
  • 菲涅尔-正弦和余弦菲涅耳积分(Aleksey Dmitriev)
  • Simplex改进-替代单工最小化器(Ivo Alxneit)
  • 塔穆阿诺娃-TAMU ANOVA包提供单因素和双因素ANOVA。
  • OOL公司-“开放优化库”提供了与GSL兼容的约束优化方法(正在开发中)。
  • 糊精-0.2-附加随机数生成器(Brian Gough,示例包)

其他套餐:

  • 更加坚韧-基于Marsaglia的Diehard测试和NIST统计测试套件的GSL广泛随机数测试套件(Robert G.Brown)
  • VFGEN(变频发电机)-根据用户提供的向量字段规范为GSL ODE系统生成C源代码(Warren Weckesser)

我们知道的一些使用GSL的应用程序:

  • 葛兰素史克壳牌公司(Lua)-使用Lua脚本语言与GSL例程的接口。
  • NEMO公司-N-body start dynamics toolbox是一个类unix的库和程序工具集,它还具有操作ascii表和其他类型数据的工具
  • 卢什-Lisp Universal Shell是一种面向对象的编程语言,具有与GSL、LAPACK和BLAS的完整接口。
  • 数字Exp-数值函数和算法的交互式图形探索(使用Gtk)
  • 实验室绘图-数据分析和可视化软件
  • Qumax公司-原子、分子和固体的量子蒙特卡罗软件
  • ORSA公司-轨道重建、仿真和分析。
  • Qti图-科学绘图与数据分析应用
  • 拉普拉斯-高级数字语言Rlab的库
  • 布拉胡特-计算信息论码率和信道容量

其他语言包装器(不一定完整):

教材:

  • 《数值物理》,第二版,Harald Wiedemann著(ISBN 978-3-662-58186-5,Springer出版(2019),360页,德语)

    一本关于数值物理的教科书,涵盖经典力学、电动力学、光学、统计物理和量子力学。书中的示例程序使用GNU科学图书馆,是免费软件(源代码可以从下面的Springer站点下载)。

    有关本书的更多信息,请访问出版商springer.com网站.

项目背景

该项目由洛斯阿拉莫斯国家实验室的M.加拉西博士和J.泰勒博士于1996年构思。

其他物理学家也加入了他们的行列,他们也认为现有图书馆的许可证阻碍了科学合作。

该图书馆的大部分内容都是由相对少数具有计算物理学背景的人编写的,目的是提供一个一致且设计合理的框架。

G.Jungman博士和B.Gough博士负责图书馆的总体开发以及主要模块的设计和实现。模块也由J.Davies博士、R.Priedhorsky博士、M.Booth博士、F.Rossi博士和P.Alken博士编写,以及用户社区中其他人的许多有用贡献。图书馆的Debian软件包由D.Eddelbuettel博士维护。

发布历史记录

  • gsl-2.7标准于2021年6月发布。
  • gsl-2.6标准于2019年8月发布。
  • gsl-2.5标准于2018年6月发布。
  • gsl-2.4标准于2017年6月发布。
  • gsl-2.3标准于2016年12月发布。
  • gsl-2.2.1标准于2016年8月发布。
  • gsl-2.2标准于2016年8月发布。
  • gsl-2.1型于2015年11月发布。
  • gsl-2.0标准于2015年10月发布。
  • gsl-1.16标准于2013年7月发布。
  • gsl-1.15标准于2011年5月发布。
  • gsl-1.14标准于2010年3月发布。
  • gsl-1.13标准于2009年9月发布。
  • gsl-1.12标准于2008年12月发布。
  • gsl-1.11标准于2008年3月发布。
  • gsl-1.10标准于2007年9月发布。
  • gsl-1.9标准于2007年2月发布。
  • gsl-1.8型2006年4月发布。
  • gsl-1.7标准于2005年9月发布。
  • gsl-1.6标准于2004年12月发布。
  • gsl-1.5标准于2004年6月发布。
  • gsl-1.4标准2003年8月发布。
  • gsl-1.3标准于2002年12月发布。
  • gsl-1.2标准于2002年7月发布。
  • gsl-1.1.1标准于2002年3月发布。
  • gsl-1.1标准于2002年2月发布。
  • gsl-1.0型于2001年11月发布。
  • gsl-0.9.4标准于2001年10月发布(第五次beta测试版)。
  • gsl-0.9.3标准于2001年9月发布(第四次beta测试版)。
  • gsl-0.9.2标准于2001年9月发布(第三次beta测试版)。
  • gsl-0.9.1标准于2001年8月发布(第二次beta测试版)。
  • gsl-0.9标准于2001年7月发布(第一次测试版)。
  • gsl-0.8于2001年5月发布。
  • gsl-0.72000年10月发布。
  • gsl-0.62000年6月发布。
  • 谷胱甘肽-0.5于1999年12月发布。
  • 克斯洛0.4.1于1999年2月发布。
  • gsl-0.4标准1998年8月发布。
  • 谷胱甘肽-0.3f1998年5月发布。
  • gsl-0.3亿1998年2月获释。
  • gsl-0.2标准于1996年10月发布。
  • gsl-0.1标准1996年某个时候发布。
  • gsl-0.0级1996年某个时候发布。
  • gsl项目于1996年5月启动(最早记录的变更日志条目)。