Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C BLAS sdot_函数返回意外结果_C_Gcc_Fortran_Blas - Fatal编程技术网

C BLAS sdot_函数返回意外结果

C BLAS sdot_函数返回意外结果,c,gcc,fortran,blas,C,Gcc,Fortran,Blas,我试图在Linux GCC中使用以下编译命令生成两个矩阵的点积: gcc-L/usr/lib64/atlas-lblas代码.c 下面是编译时似乎没有出错的代码: #include < stdio.h> int main() { int n,incx,incy; int x[] = {1,2,3}; int y[] = {2,3,4}; int z; incx =1; incy =1; n = 3; z = sdot_(&n, x,

我试图在Linux GCC中使用以下编译命令生成两个矩阵的点积:

gcc-L/usr/lib64/atlas-lblas代码.c

下面是编译时似乎没有出错的代码:

#include < stdio.h>    

int main()
{
  int n,incx,incy;
  int x[] = {1,2,3};
  int y[] = {2,3,4};
  int z;
  incx =1;
  incy =1;
  n = 3;
  z = sdot_(&n, x, &incx, y, &incy);
  printf("%d", z);
  printf("\n");
  return 0;
}
#包括
int main()
{
int n,incx,incy;
int x[]={1,2,3};
int y[]={2,3,4};
intz;
incx=1;
incy=1;
n=3;
z=sdot_(&n,x,&incx,y,&incy);
printf(“%d”,z);
printf(“\n”);
返回0;
}
所以我希望看到1*2+2*3+3*4=20,但是当我运行二进制文件时,结果“3”被打印出来


有什么想法吗?

您使用了错误的类型和
sdot\uu
的隐式声明。您应该添加函数原型(或包含标题)并使用正确的类型

#include <stdio.h>    

float sdot_(int* n, float* x, int* incx, float* y, int* incy);

int main()
{
  int n,incx,incy;
  float x[] = {1.f,2.f,3.f};
  float y[] = {2.f,3.f,4.f};
  float z;
  incx =1;
  incy =1;
  n = 3;
  z = sdot_(&n, x, &incx, y, &incy);
  printf("%f", z);
  printf("\n");
  return 0;
}

你能分享一下这个api sdot的定义吗;?或者干脆
mansdot
cc sdot.c -lblas -Wall
sdot.c: In function ‘main’:
sdot.c:14:3: warning: implicit declaration of function ‘sdot_’ [-Wimplicit-function-declaration]