My Project
Loading...
Searching...
No Matches
tnt_lapack.h
1#ifndef TNT_LAPACK_HPP
2#define TNT_LAPACK_HPP
3
4extern "C"
5{
6#include "f2c.h"
7#include "clapack.h"
8}
9
10
27namespace TNT
28{
29
30 Fortran_Array2D<double> Lapack_LinearSolve( const Fortran_Array2D<double> &A,
31 const Fortran_Array2D<double> &B)
32 {
33
34 integer m = A.dim1();
35 integer n = A.dim2();
36
37 if (m != n)
38 return Fortran_Array2D<double>();
39
40 integer nrhs = B.dim2();
41
42 if (n != B.dim1())
43 return Fortran_Array2D<double>();
44
45
46 Fortran_Array2D<double> X(B.copy());
47 Fortran_Array2D<double> lu(A.copy());
48 Fortran_Array1D<integer> ipiv(m, integer(0));
49
50 integer info=0;
51
52 dgesv_( &n, &nrhs, &lu(1,1), &m, &ipiv(1), &X(1,1), &n, &info);
53
54 return X;
55 }
56
57
58
59}
60
61
62#endif
63// TNT_LAPACK_HPP
64
Definition tnt_array1d.h:36