在BLAS库中调用DDOT函数

时间:2013-01-23 01:01:28

标签: c blas

我通过包含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;
}

关于如何正确修复此代码的任何想法?

1 个答案:

答案 0 :(得分: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。