矩阵乘法与c++

  • 本文关键字:c++ c++ linear-algebra blas
  • 更新时间 :
  • 英文 :


我对c++相当陌生,并试图使用LAPACK库进行矩阵乘法。我试着运行下面给出的常规推导。我期望输出A*B。但每次我得到的答案都是B*A这是例程的工作方式还是我的代码有问题?

我代码:

#include "stdafx.h"
#include<iostream>
using namespace std;
extern "C" void dgemm_(const char *TRANSA, const char *TRANSB, const int *M, const int *N, const int *K, double *ALPHA, double *A, const int *LDA, double *B, const int *LDB, double *BETA, double *C, const int *LDC);
int main(void)
{
    double A[4] = {1,2,3,4};
    double B[4] = {5,6,7,8};
    char TRANS = 'N';
    int M = 2;
    int N = 2;
    int K = 2;
    double ALPHA = 1.0;
    int LDA = 2;
    int LDB = 2;
    double BETA = 0.0;
    double C[4];
    int LDC = 2;
    dgemm_(&TRANS, &TRANS, &M, &N, &K, &ALPHA, A, &LDA, B, &LDB, &BETA, C, &LDC);
    cout << C[0] << endl;
    cout << C[1] << endl;
    cout << C[2] << endl;
    cout << C[3] << endl;
    getchar();
    return 0;
}

我没有研究过您对dgemm调用的细节,我不知道您是如何解释结果矩阵的。但是你似乎很有可能在某个地方混淆了col major和row major的解释。最有可能的计算使用col主要,但您假设行主要。

相关内容

  • 没有找到相关文章

最新更新