h******6 发帖数: 5 | 1 本来矩阵向量运算的code都是自己乱写的, 现在想学用一下 blas lapack 这样的标准
库。 所以先找了一段 ATLAS 的源代码, 不是很懂, 有牛人能解释下下面的这段 代
码么? 特别是为什么 Mjoin 函数名后面能跟两个参数列表? 多谢!
#include "atlas_misc.h"
#include "atlas_level1.h"
#ifdef TREAL
void Mjoin(PATL,rot)(const int N, TYPE *X, const int incX,
TYPE *Y, const int incY, const TYPE c, const TYPE s)
{
int i;
TYPE tmp;
if (c != ATL_rone || s != ATL_rzero)
{
if (incX == 1 && incY == 1)
{
for (i=0; i != N; i++)
{
tmp = c * | a**a 发帖数: 416 | 2 想通过看代码来学习复杂算法,就像通过拆发动机来学习发动机原理一样,都是很吃力
的事情。建议你找本专门讲线性代数算法的书,比如著名的Matrix Computation. 这样
可以省事很多。
这段代码嘛, Mjoin不是函数,而是一个宏。它根据给出的参数来生成函数名字。
【在 h******6 的大作中提到】 : 本来矩阵向量运算的code都是自己乱写的, 现在想学用一下 blas lapack 这样的标准 : 库。 所以先找了一段 ATLAS 的源代码, 不是很懂, 有牛人能解释下下面的这段 代 : 码么? 特别是为什么 Mjoin 函数名后面能跟两个参数列表? 多谢! : #include "atlas_misc.h" : #include "atlas_level1.h" : #ifdef TREAL : void Mjoin(PATL,rot)(const int N, TYPE *X, const int incX, : TYPE *Y, const int incY, const TYPE c, const TYPE s) : { : int i;
|
|