SEP Solver Library  1.0
 All Classes Namespaces Files Functions Variables Typedefs Macros
inCoreFloat.h
Go to the documentation of this file.
1 #ifndef INCOREFLOAT_H
2 #define INCOREFLOAT_H 1
3 #include "Space.h"
4 #include "DataInCoreFloat.h"
5 //#include <omp.h>
6 #include "myomp.h"
7 
8 #include <iostream>
9 namespace SEP {
10 
11 
12 class inCoreFloat: public Space
13 {
14  public:
15  inCoreFloat(){ init=false;}
16  virtual void linearCombo(float a, dataContainer * x, float b, dataContainer * y) const ;
17  virtual double innerProd(dataContainer * x, dataContainer * y) const;
18  virtual void addInv(dataContainer * x) const;
19  virtual void addInv(dataContainer * x, dataContainer * xNeg) const ;
20  virtual void scale(float a, dataContainer * x)const ;
21  virtual void scale(float a, dataContainer * x,dataContainer * ax)const ;
22 
23  virtual void zeroElement(dataContainer * x) const ;
24  virtual void random(dataContainer * x) const ;
25  virtual void print_it(){std::cerr<<"incorefloat"<<std::endl;}
26  virtual ~inCoreFloat(){
27  }
28 
29  void set_n123(long long n){ n123=n;}
30  long long get_n123(){return n123;}
31  void push_back_n(long long i){ n.push_back(i);}
32  std::vector<long long> get_ns() const{
33  std::vector<long long> n2;
34  for(long long i=0;i < (long long)n.size(); i++) n2.push_back(n[i]);
35  return n2;
36  }
37  long long get_n(int iax) const{ return n[iax];}
38 
39  private:
40  bool init;
41  long long n123;
42  std::vector<long long> b_omp,e_omp;
43  int beg_vector;
44  int nomp;
45  std::vector<long long> n;
46 
47 
48 };
49 
50 class inCoreFloat1D: public inCoreFloat{
51  public:
53  inCoreFloat1D(int n){ base_1d(n);}
54  virtual bool isCompatible(dataContainer *x) const;
55  virtual bool isCompatible(Space *otherSpace, bool makeSame=false) const;
56  virtual void print_it(){std::cerr<<"incorefloat1d"<<std::endl;}
57  virtual dataContainer *buildDataContainer()const;
58  void base_1d(int n1);
59 
60 };
61 class inCoreFloat2D: public inCoreFloat{
62  public:
64  inCoreFloat2D(long long *n){
65  base_2d(n[0],n[1]);
66  }
67  inCoreFloat2D(std::vector<long long> n){
68  base_2d(n[0],n[1]);
69  }
70  inCoreFloat2D(int n1, int n2){
71  base_2d(n1,n2);
72  }
73  virtual bool isCompatible(dataContainer *x) const;
74  virtual bool isCompatible(Space *otherSpace, bool makeSame=false) const;
77  return x;
78  }
79 
80  private:
81  void base_2d(int n1,int n2);
82 
83 };
84 class inCoreFloat3D: protected inCoreFloat{
85  public:
87  inCoreFloat3D(std::vector<long long> n){
88  base_3d(n[0],n[1],n[2]);
89  }
90  inCoreFloat3D(int *n){
91  base_3d(n[0],n[1],n[2]);
92  }
93 
94  inCoreFloat3D(int n1, int n2, int n3){
95  base_3d(n1,n2,n3);
96  }
97  virtual bool isCompatible(dataContainer *x) const;
98  virtual bool isCompatible(Space *otherSpace, bool makeSame=false) const;
101  return x;
102  }
103 
104  private:
105  void base_3d(int n1,int n2, int n3);
106 
107 };
108 class inCoreFloat4D: protected inCoreFloat{
109  public:
111  inCoreFloat4D(std::vector<long long> n){
112  base_4d(n[0],n[1],n[2],n[3]);
113  }
114  inCoreFloat4D(int *n){
115  base_4d(n[0],n[1],n[2],n[3]);
116  }
117  inCoreFloat4D(int n1, int n2, int n3, int n4){
118  base_4d(n1,n2,n3,n4);
119  }
120  virtual bool isCompatible(dataContainer *x) const;
121  virtual bool isCompatible(Space *otherSpace, bool makeSame=false) const;
124  return x;
125  }
126 
127  private:
128  void base_4d(int n1,int n2, int n3, int n4);
129 
130 };
131 class inCoreFloat5D: protected inCoreFloat{
132  public:
134  inCoreFloat5D(std::vector<long long> n){
135  base_5d(n[0],n[1],n[2],n[3],n[4]);
136  }
137  inCoreFloat5D(int *n){
138  base_5d(n[0],n[1],n[2],n[3],n[4]);
139  }
140  inCoreFloat5D(int n1, int n2, int n3, int n4, int n5){
141  base_5d(n1,n2,n3,n4,n5);
142  }
143  virtual bool isCompatible(dataContainer *x) const;
144  virtual bool isCompatible(Space *otherSpace, bool makeSame=false) const;
147  return x;
148  }
149 
150  private:
151  void base_5d(int n1,int n2, int n3, int n4, int n5);
152 
153 };
154 class inCoreFloat6D: protected inCoreFloat{
155  public:
157  inCoreFloat6D(std::vector<long long> n){
158  base_6d(n[0],n[1],n[2],n[3],n[4],n[5]);
159  }
160  inCoreFloat6D(int *n){
161  base_6d(n[0],n[1],n[2],n[3],n[4],n[5]);
162  }
163  inCoreFloat6D(int n1, int n2, int n3, int n4, int n5, int n6){
164  base_6d(n1,n2,n3,n4,n5,n6);
165  }
166  virtual bool isCompatible(dataContainer *x) const;
167  virtual bool isCompatible(Space *otherSpace, bool makeSame=false) const;
170  return x;
171  }
172 
173  private:
174  void base_6d(int n1,int n2, int n3, int n4, int n5, int n6);
175 
176 };
177 class inCoreFloat7D: protected inCoreFloat{
178  public:
180  inCoreFloat7D(std::vector<long long> n){
181  base_7d(n[0],n[1],n[2],n[3],n[4],n[5],n[6]);
182  }
183  inCoreFloat7D(int *n){
184  base_7d(n[0],n[1],n[2],n[3],n[4],n[5],n[6]);
185  }
186  inCoreFloat7D(int n1, int n2, int n3, int n4, int n5, int n6, int n7){
187  base_7d(n1,n2,n3,n4,n5,n6,n7);
188  }
191  return x;
192  }
193  virtual bool isCompatible(dataContainer *x) const;
194  virtual bool isCompatible(Space *otherSpace, bool makeSame=false) const;
195 
196  private:
197  void base_7d(int n1,int n2, int n3, int n4, int n5, int n6, int n7);
198 
199 };
200 
201 }
202 
203 #endif