我在使用 BLAS 例程的 C/C++ 程序时遇到问题ddot
。我正在运行 Linux,到目前为止 LAPACK 例程工作没有任何问题。
无论我选择int
整数参数的类型ddot
还是选择ptrdiff_t
.
该代码是:
#include <iostream>
#include <stdlib.h>
using namespace std;
extern "C" {
extern int ddot_( int*, double* , int* , double* ,int*);
// OR extern int ddot_( ptrdiff_t*, double* , ptrdiff_t* , double* ,ptrdiff_t*);
}
int main() {
int n=3; // OR ptrdiff_t n=3;
int inc=1; // OR ptrdiff_t inc=1;
double result=0;
double *x = (double*) calloc (n, sizeof (double));
double *y = (double*) calloc (n, sizeof (double));
result = ddot_(&n, x, &inc, y, &inc);
cout<<result<<endl;
return 0;
}
如果我选择n
并inc
成为类型,int
一切都会编译,但我得到的输出result
等于4
. x
和不同数字的相同效果y
。
我试图用谷歌搜索我的问题,发现 和 的类型n
可能inc
会导致错误的结果,我应该尝试ptrdiff_t
or mwSignedIndex
。mwSignedIndex
到目前为止,我还没有设法将其包含在我的程序中,但是如果我选择n
并inc
成为类型ptrdiff_t
并在开始时更改“extern C”部分,我也会得到4
结果。
我错过了什么吗?我的数学错了吗?我感谢任何帮助或建议!
编辑:在以前版本的问题中,我没有设法正确使用ptrdiff_t
. 尽管如此,错误的结果仍然存在。