我需要得到方程系统的解。为此,我使用函数sgesv _()。
一切都很有效,它让我得到了解决方案的正确结果。
但我得到一个奇怪的警告。
警告:从不兼容的指针类型
传递'sgesv_'的参数3
我正在使用该功能,因为Apple在WWDC视频上使用它。
我做错了什么?
a1,a2,b1,b2,c1,c2是浮点数
__CLPK_integer info;
__CLPK_integer n=2;
__CLPK_integer nb=1;
__CLPK_integer ipiv[n];
float A[n][n];
A[0][0]=a1;
A[0][1]=a2;
A[1][0]=b1;
A[1][1]=b2;
float B[n];
B[0]=-c1;
B[1]=-c2;
sgesv_(&n, &nb, A, &n, ipiv, B, &n, &info);
答案 0 :(得分:4)
第三个参数是float *
,但是你传递了一个浮点数组。碰巧这些花车的顺序正确。要摆脱警告,你可以这样做:
sgesv_(&n, &nb, &A[0][0], &n, ipiv, B, &n, &info);
或者这个:
sgesv_(&n, &nb, A[0], &n, ipiv, B, &n, &info);
甚至是这样:
sgesv_(&n, &nb, (float *)A, &n, ipiv, B, &n, &info);
或者你可以“扁平化”你的A阵列,例如
float A[n * n];
A[0 * n + 0] = a1;
A[0 * n + 1] = a2;
A[1 * n + 0] = b1;
A[1 * n + 1] = b2;
// ...
sgesv_(&n, &nb, A, &n, ipiv, B, &n, &info);