source: pacpussensors/trunk/Vislab/lib3dv/eigen/bench/btl/libs/BLAS/c_interface_base.h@ 136

Last change on this file since 136 was 136, checked in by ldecherf, 7 years ago

Doc

File size: 1.6 KB
Line 
1
2#ifndef BTL_C_INTERFACE_BASE_H
3#define BTL_C_INTERFACE_BASE_H
4
5#include "utilities.h"
6#include <vector>
7
8template<class real> class c_interface_base
9{
10
11public:
12
13 typedef real real_type;
14 typedef std::vector<real> stl_vector;
15 typedef std::vector<stl_vector > stl_matrix;
16
17 typedef real* gene_matrix;
18 typedef real* gene_vector;
19
20 static void free_matrix(gene_matrix & A, int N){
21 delete A;
22 }
23
24 static void free_vector(gene_vector & B){
25 delete B;
26 }
27
28 static inline void matrix_from_stl(gene_matrix & A, stl_matrix & A_stl){
29 int N = A_stl.size();
30 A = new real[N*N];
31 for (int j=0;j<N;j++)
32 for (int i=0;i<N;i++)
33 A[i+N*j] = A_stl[j][i];
34 }
35
36 static inline void vector_from_stl(gene_vector & B, stl_vector & B_stl){
37 int N = B_stl.size();
38 B = new real[N];
39 for (int i=0;i<N;i++)
40 B[i] = B_stl[i];
41 }
42
43 static inline void vector_to_stl(gene_vector & B, stl_vector & B_stl){
44 int N = B_stl.size();
45 for (int i=0;i<N;i++)
46 B_stl[i] = B[i];
47 }
48
49 static inline void matrix_to_stl(gene_matrix & A, stl_matrix & A_stl){
50 int N = A_stl.size();
51 for (int j=0;j<N;j++){
52 A_stl[j].resize(N);
53 for (int i=0;i<N;i++)
54 A_stl[j][i] = A[i+N*j];
55 }
56 }
57
58 static inline void copy_vector(const gene_vector & source, gene_vector & cible, int N){
59 for (int i=0;i<N;i++)
60 cible[i]=source[i];
61 }
62
63 static inline void copy_matrix(const gene_matrix & source, gene_matrix & cible, int N){
64 for (int j=0;j<N;j++){
65 for (int i=0;i<N;i++){
66 cible[i+N*j] = source[i+N*j];
67 }
68 }
69 }
70
71};
72
73#endif
Note: See TracBrowser for help on using the repository browser.