我正在使用Visual Studio调试用C编写的程序,
当我达到乘以两个矩阵的陈述时,
我为所有人获得了意外的价值-1.#IND000000000000
结果矩阵的元素。
以下用于矩阵乘法的函数。
extern void matmul(const char *tr, int n, int k, int m, double alpha,
const double *A, const double *B, double beta, double *C)
{
double d;
int i,j,x,f=tr[0]=='N'?(tr[1]=='N'?1:2):(tr[1]=='N'?3:4);
for (i=0;i<n;i++)
for (j=0;j<k;j++) {
d=0.0;
switch (f) {
case 1: for (x=0;x<m;x++) d+=A[i+x*n]*B[x+j*m]; break;
case 2: for (x=0;x<m;x++) d+=A[i+x*n]*B[j+x*k]; break;
case 3: for (x=0;x<m;x++) d+=A[x+i*m]*B[x+j*m]; break;
case 4: for (x=0;x<m;x++) d+=A[x+i*m]*B[j+x*k]; break;
}
if (beta==0.0)
C[i+j*n]=alpha*d;
else
C[i+j*n]=alpha*d+beta*C[i+j*n];
}
}
matmul("NN",n,1,m,1.0,A,y,0.0,Ay); /* Ay=A*y */