ATLAS:计算矩阵逆时出错

问题描述 投票:0回答:1

我在使用 ATLAS 库计算矩阵的逆时遇到错误。

我得到错误输出:

进入 DTRSM 参数编号 9 时有非法值
已中止(核心已转储)

我从以下位置找到了此代码: https://cpp.hotexamples.com/examples/-/-/dgetrf_/cpp-dgetrf_-function-examples.html

我想使用 ATLAS 库计算 5x5 矩阵的逆矩阵,但我无法计算它 因为这个问题:

testinv.c:30:17:警告:函数“dgetri_”的隐式声明在 C99 中无效 [-Wimplicit-function-declaration] dgetri_ (&N,A,&N,IPIV,WORK,&LWORK,&INFO); ^

testinv.c:38:9:警告:函数“dgetrf_”的隐式声明在 C99 中无效 [-Wimplicit-function-declaration] dgetrf_ (&N,&N,A,&N,IPIV,&INFO); ^

testinv.c:40:17:警告:函数“dgetri_”的隐式声明在 C99 中无效 [-Wimplicit-function-declaration] dgetri_ (&N,A,&N,IPIV,WORK,&LWORK,&INFO); ^

生成 3 个警告。 cc -o testinv testinv.o -lm

进入 DTRSM 参数编号 9 时有非法值
已中止(核心已转储)

这是我的代码:

#include<math.h>
#include<cblas.h>
#include<stdlib.h>

int main ( ){
        int INFO;
        int N;
        static int * IPIV=NULL;
        static int LWORK=0;
        static double * WORK=NULL;
        static int last_n=0;

        N = 25;
        double A[25] = {
                0.67, 0.00, 0.00, 0.00, 0.00,
               -0.20, 3.82, 0.00, 0.00, 0.00,
                0.19,-0.13, 3.27, 0.00, 0.00,
               -1.06, 1.06, 0.11, 5.86, 0.00,
                0.46,-0.48, 1.10,-0.98, 3.54
        };

        if ( N>last_n){
                if (NULL==IPIV){
                        WORK = malloc(sizeof(double));
                } else {
                        free(IPIV);
                }
                LWORK = -1;
                dgetri_ (&N,A,&N,IPIV,WORK,&LWORK,&INFO);
                LWORK=(int)WORK[0];
                free(WORK);
                WORK = malloc(LWORK*sizeof(double));
                IPIV = malloc(N*sizeof(int));
                last_n = N;
        }

        dgetrf_ (&N,&N,A,&N,IPIV,&INFO);
        if ( INFO==0){
                dgetri_ (&N,A,&N,IPIV,WORK,&LWORK,&INFO);
        }

        printf("INFO \n");
        return 0;
lapack atlas cblas
1个回答
0
投票

据我所知,您正在尝试使用 ATLAS 库,但在编译时并未包含它。看看这个,让我知道它是否仍然是一个问题:https://michaellindon.github.io/lindonslog/programming/atlas-blas-lapack-linear-algebra-libraries/index.html

© www.soinside.com 2019 - 2024. All rights reserved.