Sha*_*ddy 3 c operations objective-c matrix complex-numbers
我正在尝试执行涉及矩阵运算和复杂数学的计算 - 有时在C中.我非常熟悉Matlab,我知道这些类型的计算可以简单有效地执行.例如,相同大小的两个矩阵A和B,每个具有复数值的元素,可以通过表达式A + B容易地求和.是否有任何软件包或技术可以建议在C或Objective C中使用这些类型的表达式编程?我知道complex.h允许对复数执行操作,但我不知道如何在复杂矩阵上执行操作,这就是我真正想要的.同样,我知道允许对矩阵进行操作的包,但不认为它们在处理复杂矩阵时会有用.
您希望将BLAS用于基本线性代数运算,例如求和或乘以两个矩阵,以及LAPACK用于更多计算密集型算法,例如分解矩阵.
BLAS例程有一些有趣的名字,看起来像字母汤.这是因为旧的Fortran限制了函数名的长度.名称的第一个字母表示BLAS例程操作的数据类型.由于您对复数的兴趣,您想要查看从c(复杂的单精度)或z(对于复杂的双精度)开始的例程.例如,BLAS例程相乘复杂基质A和B是CGEMM或ZGEMM(此处GEMM表示一般矩阵矩阵乘法.)
看起来在Objective C中,BLAS可以通过Accelerate框架获得.命名约定是以cblas_原始BLAS名称为前缀.例如这里是文档的cblas_zgemm.
通常,供应商为其平台提供了BLAS的优化版本.这些例程通常比这些矩阵运算的朴素实现快得多.通常,利用这些例程可以实现或几乎实现机器的峰值浮点性能.事实上,LINPACK基准测试(LINPACK是LAPACK的前身)使用这些例程来对超级计算机进行基准测试和排名.