引言
GNU科学库(GSL)是一套数值计算的函数集。这些函数是采用C语言从头开始编写的,为C程序员提供了现代应用程序编程接口(API),也允许为非常高级的语言编写包装器。源代码是根据GNU通用公共许可证分发的。
1.1 GSL中可用的函数
本库涵盖了数值计算领域中一系列广泛的主题,可用于以下领域:
复数 | 多项式求根 | 特殊函数 |
向量和矩阵 | 排列 | 组合 |
排序 | 基本线性代数子程序(BLAS)支持 | 线性代数 |
复杂线性代数(CBLAS)库 | 快速傅里叶变换 | 特征系统 |
随机数 | 求积分 | 随机分布 |
拟随机数列 | 直方图 | 统计学 |
蒙特卡罗积分 | N元组 | 微分方程 |
模拟退火算法 | 数值微分 | 插值 |
级数加速 | 切比雪夫逼近 | 求根 |
离散汉克尔变换 | 最小二乘拟合 | 求最小值 |
IEEE浮点 | 物理常数 | 基础样条 |
小波 | 稀疏基本线性代数子程序支持 | 稀疏线性代数 |
本手册中描述了这些函数的用法。每一章详细描述了函数的定义,并附有示例程序,和引用的算法文章。
在可能的情况下,这些例程都是基于可靠的公共域包,如FFTPACK和QUADPACK,GSL的开发人员已经用现代编码约定在C中重新实现了这些包。
1.2 GSL是免费软件
GNU科学库中的子程序是“免费软件”;这意味着任何人都可以免费使用它们,在其他免费的软件中重新分发。本库不在公共域中,它受版权保护,并且有分发条件。这些设计条件是允许一个好的、愿意合作的公民想要做的一切。不允许的是试图阻止其他人进一步共享他们可能从您那里获得的任何版本的软件。
具体来说,我们要确保您有权共享GNU科学库提供的程序副本,您可以接收它们的源代码,或者如果需要,您可以获取它,您可以更改这些程序或在新的免费程序中使用它们的一部分,并且您知道可以做这些事情。
为了确保每个人都有这样的权利,我们必须禁止你剥夺其他人的这些权利。例如,如果您分发使用GNU科学库的任何代码的副本,则必须给予接受者您已收到的所有权利。您必须确保它们也能接收或获取源代码,包括库和使用它的代码。你必须告诉他们他们的权利。这意味着本库不应该在专有程序中重新分发。