1

BLASライブラリを含めてコードでBLAS関数を呼び出していますが、コンパイラが「ddotはこのスコープで宣言されていません」というエラーを吐き出すため、コードに何らかの問題があるようです。

#include <stdio.h>
#include <stdlib.h>
#include <blas.h>

int main()
{
        double  m[10],n[10];
        int i;
        int result;

        printf("Enter the elements into first vector.\n");
        for(i=0;i<10;i++)
        scanf("%lf",&m[i]);

        printf("Enter the elements into second vector.\n");
        for(i=0;i<10;i++)
        scanf("%lf",&n[i]);

        result = ddot(m,n);
        printf("The result is %d\n",result);

        return 0;
}

このコードを適切に修正する方法について何かアイデアはありますか?

4

1 に答える 1

3

Cから呼び出す場合、関数名はcblas_ddot()(C呼び出し規約)またはddot_(Fortran呼び出し規約。末尾の下線に注意してください)のいずれかである必要があります。

いくつかの関数の引数がありません。試す

result = cblas_ddot(10, m, 1, n, 1);

または同等に

int len = 10, incm = 1, incn = 1;
// ...
result = ddot_(&len, m, &incm, n, &incn);

また、ddotはdoubleを返しますが、結果をintに割り当てています。

于 2013-01-23T13:44:59.893 に答える