C++ 科学计算库GSL中文版文档系列(一):向量和矩阵

来源:互联网 发布:网络直销的优点 编辑:程序博客网 时间:2024/05/16 15:31

本章中所描述的功能为普通的C数列提供了一个简单的向量和矩阵接口。这些数组的内存管理是使用一个单一的底层类型,称为块(block)实现的。通过编写你自己的函数并借助向量和矩阵形式,你可以通过一个单一的结构,包含数据和数组长度作为一个参数,而不需要额外的功能参数。后面将要讲到的BLAS库的引用规则和向量和矩阵的格式是兼容的。

  1. 数据类型

    所有的函数接口都可用于每个标准数据类型。双精度数的格式有前缀gsl_block,gsl_vector和gsl_matrix。同样,对于单精度浮点数数组的格式有前缀gsl_block_float,gsl_vector_float和gsl_matrix_float。可用的数据类型的完整列表如下:


  2. 区块(Blocks)

    所有的内存都是一致通过gsl_block结构分配的。该结构体包含两个组件,一个内存区域的大小数据和一个指向内存的指针。而gsl_block结构看起来像这样:


  3. 区块内存分配

    该函数分配的内存块按照malloc和free的风格。此外,他们还自动执行错误检查。如果没有足够的内存来分配,函数就调用错误处理程序(GSL与gsl_enomem错误数)返回一个空指针。因此,如果你使用库的错误处理程序中止你的程序,就不需要你自己手动检查每个分配。


    函数

    //GNU's not unixgsl_block * gsl_block_alloc (size_t n)//GNU



    这个函数分配内存块大小为n的双精度元素,返回一个块结构指针。块未初始化,所以它的元素的值是未定义的。如果你想确保所有的元素都被初始化为零则使用功能gsl_block_calloc。如果内存不足,则返回一个空指针,并创该块。

   

 函数: 

//GNUgsl_block * gsl_block_calloc (size_t n)//GNU

  这个函数分配内存块并初始化所有的块元素为零。

   函数: 

//GNUvoid gsl_block_free (gsl_block * b)//GNU
这个函数释放先前B与gsl_block_alloc或gsl_block_calloc使用的内存。



0 0
原创粉丝点击