数学和数值计算(Math and Numerics)Boost.Integer
这个库针对整数类型提供了一系列功能,比如编译时刻的最大值最小值常量[3],根据要求的位数给出合适大小的类型,静态的计算以2为底的对数,以及其它功能。它还包括来自1999 C的标准头文件<stdint.h>的一些类型定义(typedefs)。
Integer的作者是Beman Dawes和Daryle Walker。
Boost.Interval
Interval库在你与数学区间打交道的时候为你提供帮助。它为interval类模板提供数学运算符。除了那些明显包括区间的运算,区间的另外一个通常的应用是,当运算给出的是不精确的结果的时候,可以用区间来量化舍入误差的扩散。
Interval的作者是Guillaume Melquiond,Sylvain Pion,以及Hervé Brönniman,这个库受到Jens Maurer所做的前期工作的启发。
Boost.Math
Math是一组与数学相关的模板:四元数和八元数(复数的泛化);诸如acosh,asinh,以及sinhc等数值函数;计算最大公约数(Greatest Common Divsor。译注:这个词的缩写是非法词汇不能使用,贴了好几次都给我警告。真TMD faint)以及最小公倍数(LCM);还有很多其它的东西。
Math的作者是Hubert Holin,Daryle Walker,以及Eric Ford。
Boost.Minmax
Minmax同时计算最大值和最小值,而不是像使用std::min和std::max的时候那样需要两次比较。对于有n个元素的一个序列来说,只需要进行3n/2+1次比较,而不是像使用std::min_element和std::max_element的时候那样需要2n次。
Minmax的作者是Hervé Brönniman。
Boost.Numeric Conversion
Numeric Conversion库是一组用来在不同数值类型之间实施安全的和可预见的转换的工具集。例如,有一个工具叫做numeric_cast(最早是在Boost.Conversion里的),它可以对所实施的转换进行范围检验,进而保证目标类型可以表示被转换的值;否则,它就抛出一个异常。
Numeric Conversion的作者是Fernando Cacciola。
Boost.Operators
Operators库提供相关操作符及其概念(LessThanComparable,Arithmetic,等等)的实现。 当为一个类型定义操作符的时候,添加所有应该定义的操作符是非常累人的,而且很容易出错。例如,当提供操作符<(LessThanComparable)的时候,操作符<=、>、以及>=大多数情况下也都应该被定义。Operators库针对一个给定的类型,根据用户定义的一小部分操作符,自动定义所有相关的操作符。这个库在“Library 4: Operators 4”有详细的叙述。
Operators的作者是David Abrahams,Jeremy Siek,Aleksey Gurtovoy,Beman Dawes,以及Daryle Walker。
Boost.Random
这个库是针对随机数的专业应用的,它包括一系列发生器(generators)和分配器(distributions),这些发生器和分配器在诸如仿真和安全等很多领域都有广泛的使用。Random已经被即将到来的标准库技术报告所采纳。
Random的作者是Jens Maurer。
Boost.Rational
整数类型和浮点数类型都已经内建于C++语言,而复数是C++标准库的一部分,那么有理数该怎么办呢?有理数避免了浮点数丢失精度的问题,比如说,它们更适合应用于货币记帐系统。Rational提供了可以基于任何整数类型的有理数,包括用户定义的类型(显然一个没有精度限制的类型是最有用的)。
Rational的作者是Paul Moore。
Boost.uBLAS
uBLAS库提供针对向量和矩阵的基本线性代数运算,它使用数学符号,运算符重载,并且借助于高效的代码生成机制(通过使用expression templates)。
uBLAS的作者是Joerg Walter和Mathias Koch。
[3] std::numeric_limits 仅仅以函数的形式提供这些值。