1 #include <flens/lapack/interface/include/config.h>
 2 
 3 
 4 namespace flens { namespace lapack {
 5 
 6 extern "C" {
 7 
 8 //-- dgetri --------------------------------------------------------------------
 9 void
10 LAPACK_DECL(dgetri)(const INTEGER    *N,
11                     DOUBLE           *A,
12                     const INTEGER    *LDA,
13                     INTEGER          *IPIV,
14                     DOUBLE           *WORK,
15                     const INTEGER    *LWORK,
16                     INTEGER          *INFO)
17 {
18     DEBUG_FLENS_LAPACK("dgetri");
19 
20     using std::max;
21     using std::min;
22 //
23 //  Test the input parameters so that we pass LAPACK error checks
24 //
25     *INFO = 0;
26     bool lQuery = (*LWORK==-1);
27 
28     if (*N<0) {
29         *INFO = 1;
30     } else if (*LDA<max(INTEGER(1),*N)) {
31         *INFO = 3;
32     } else if (*LWORK<max(INTEGER(1),*N) && !lQuery) {
33         *INFO = 6;
34     }
35 
36     if (*INFO!=0) {
37         LAPACK_ERROR("DGETRI", INFO);
38         *INFO = -(*INFO);
39         return;
40     }
41 
42 //
43 //  Setup FLENS matrix/vector types
44 //
45     DGeMatrixView       _A      = DFSView(*N, *N, A, *LDA);
46     IDenseVectorView    _IPIV   = IArrayView(*N, IPIV, 1);
47     DDenseVectorView    _WORK   = DArrayView(*LWORK, WORK, 1);
48 
49 //
50 //  Call FLENS implementation
51 //
52     tri(_A, _IPIV, _WORK);
53 }
54 
55 // extern "C"
56 
57 } } // namespace lapack, flens