c_interface_base.h
Go to the documentation of this file.
1 
2 #ifndef BTL_C_INTERFACE_BASE_H
3 #define BTL_C_INTERFACE_BASE_H
4 
5 #include "utilities.h"
6 #include <vector>
7 
8 template <class real>
10  public:
11  typedef real real_type;
12  typedef std::vector<real> stl_vector;
13  typedef std::vector<stl_vector> stl_matrix;
14 
15  typedef real* gene_matrix;
16  typedef real* gene_vector;
17 
18  static void free_matrix(gene_matrix& A, int /*N*/) { delete[] A; }
19 
20  static void free_vector(gene_vector& B) { delete[] B; }
21 
22  static inline void matrix_from_stl(gene_matrix& A, stl_matrix& A_stl) {
23  int N = A_stl.size();
24  A = new real[N * N];
25  for (int j = 0; j < N; j++)
26  for (int i = 0; i < N; i++) A[i + N * j] = A_stl[j][i];
27  }
28 
29  static inline void vector_from_stl(gene_vector& B, stl_vector& B_stl) {
30  int N = B_stl.size();
31  B = new real[N];
32  for (int i = 0; i < N; i++) B[i] = B_stl[i];
33  }
34 
35  static inline void vector_to_stl(gene_vector& B, stl_vector& B_stl) {
36  int N = B_stl.size();
37  for (int i = 0; i < N; i++) B_stl[i] = B[i];
38  }
39 
40  static inline void matrix_to_stl(gene_matrix& A, stl_matrix& A_stl) {
41  int N = A_stl.size();
42  for (int j = 0; j < N; j++) {
43  A_stl[j].resize(N);
44  for (int i = 0; i < N; i++) A_stl[j][i] = A[i + N * j];
45  }
46  }
47 
48  static inline void copy_vector(const gene_vector& source, gene_vector& cible, int N) {
49  for (int i = 0; i < N; i++) cible[i] = source[i];
50  }
51 
52  static inline void copy_matrix(const gene_matrix& source, gene_matrix& cible, int N) {
53  for (int j = 0; j < N; j++) {
54  for (int i = 0; i < N; i++) {
55  cible[i + N * j] = source[i + N * j];
56  }
57  }
58  }
59 };
60 
61 #endif
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Matrix< SCALARA, Dynamic, Dynamic, opt_A > A
Definition: bench_gemm.cpp:47
Matrix< SCALARB, Dynamic, Dynamic, opt_B > B
Definition: bench_gemm.cpp:48
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
Definition: c_interface_base.h:9
std::vector< stl_vector > stl_matrix
Definition: c_interface_base.h:13
static void free_vector(gene_vector &B)
Definition: c_interface_base.h:20
static void vector_from_stl(gene_vector &B, stl_vector &B_stl)
Definition: c_interface_base.h:29
real * gene_vector
Definition: c_interface_base.h:16
real * gene_matrix
Definition: c_interface_base.h:15
static void free_matrix(gene_matrix &A, int)
Definition: c_interface_base.h:18
static void copy_vector(const gene_vector &source, gene_vector &cible, int N)
Definition: c_interface_base.h:48
static void vector_to_stl(gene_vector &B, stl_vector &B_stl)
Definition: c_interface_base.h:35
static void matrix_from_stl(gene_matrix &A, stl_matrix &A_stl)
Definition: c_interface_base.h:22
std::vector< real > stl_vector
Definition: c_interface_base.h:12
static void matrix_to_stl(gene_matrix &A, stl_matrix &A_stl)
Definition: c_interface_base.h:40
real real_type
Definition: c_interface_base.h:11
static void copy_matrix(const gene_matrix &source, gene_matrix &cible, int N)
Definition: c_interface_base.h:52
Definition: matrices.h:74
@ N
Definition: constructor.cpp:22
void source(const Vector< double > &x, Vector< double > &f)
Source function.
Definition: unstructured_two_d_circle.cc:46
Definition: main.h:115
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2