在C中乘以矩阵(-1。#IND)

时间:2018-05-24 14:16:42

标签: c matrix-multiplication

我正在使用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 */

0 个答案:

没有答案