MatrixFlagInline.cxx
1 // Copyright (C) 2001-2010 Vivien Mallet
2 //
3 // This file is part of the linear-algebra library Seldon,
4 // http://seldon.sourceforge.net/.
5 //
6 // Seldon is free software; you can redistribute it and/or modify it under the
7 // terms of the GNU Lesser General Public License as published by the Free
8 // Software Foundation; either version 2.1 of the License, or (at your option)
9 // any later version.
10 //
11 // Seldon is distributed in the hope that it will be useful, but WITHOUT ANY
12 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
14 // more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public License
17 // along with Seldon. If not, see http://www.gnu.org/licenses/.
18 
19 
20 #ifndef SELDON_FILE_SHARE_MATRIXFLAG_INLINE_CXX
21 
22 
23 #include "MatrixFlag.hxx"
24 
25 
26 namespace Seldon
27 {
28 
29 
31  // SELDONTRANSPOSE //
33 
34 
35  inline SeldonTranspose::SeldonTranspose(int status)
36  {
37  status_ = status;
38  if (status_ == 0)
39  cblas_status_ = CblasTrans;
40  else if (status_ == 1)
41  cblas_status_ = CblasNoTrans;
42  else
43  cblas_status_ = CblasConjTrans;
44  }
45 
46 
47  inline SeldonTranspose::SeldonTranspose(const enum CBLAS_TRANSPOSE status):
48  cblas_status_(status)
49  {
50  if (cblas_status_ == CblasTrans)
51  status_ = 0;
52  else if (cblas_status_ == CblasNoTrans)
53  status_ = 1;
54  else
55  status_ = 2;
56  }
57 
58 
59 
60  inline CBLAS_TRANSPOSE SeldonTranspose::Cblas() const
61  {
62  return cblas_status_;
63  }
64 
65 
66  inline char SeldonTranspose::Char() const
67  {
68  if (status_ == 0)
69  return 'T';
70  else if (status_ == 1)
71  return 'N';
72  else
73  return 'C';
74  }
75 
76 
77  inline char SeldonTranspose::RevChar() const
78  {
79  if (status_ == 0)
80  return 'N';
81  else if (status_ == 1)
82  return 'T';
83  else
84  return 'N';
85  }
86 
87 
88  inline bool SeldonTranspose::Trans() const
89  {
90  return (status_ == 0);
91  }
92 
93 
94  inline bool SeldonTranspose::NoTrans() const
95  {
96  return (status_ == 1);
97  }
98 
99 
100  inline bool SeldonTranspose::ConjTrans() const
101  {
102  return (status_ == 2);
103  }
104 
105 
106  inline class_SeldonTrans::class_SeldonTrans(): SeldonTranspose(0)
107  {
108  }
109 
110 
111  inline class_SeldonNoTrans::class_SeldonNoTrans(): SeldonTranspose(1)
112  {
113  }
114 
115 
116  inline class_SeldonConjTrans::class_SeldonConjTrans(): SeldonTranspose(2)
117  {
118  }
119 
120 
122  // SELDONDIAG //
124 
125 
126  inline SeldonDiag::SeldonDiag(int status)
127  {
128  status_ = status;
129  if (status_ == 0)
130  cblas_status_ = CblasNonUnit;
131  else
132  cblas_status_ = CblasUnit;
133  }
134 
135 
136  inline CBLAS_DIAG SeldonDiag::Cblas() const
137  {
138  return cblas_status_;
139  }
140 
141 
142  inline char SeldonDiag::Char() const
143  {
144  return (status_ == 0) ? 'N' : 'U';
145  }
146 
147 
148  inline bool SeldonDiag::NonUnit() const
149  {
150  return (status_ == 0);
151  }
152 
153 
154  inline bool SeldonDiag::Unit() const
155  {
156  return (status_ == 1);
157  }
158 
159 
160  inline class_SeldonNonUnit::class_SeldonNonUnit(): SeldonDiag(0)
161  {
162  }
163 
164 
165  inline class_SeldonUnit::class_SeldonUnit(): SeldonDiag(1)
166  {
167  }
168 
169 
171  // SELDONUPLO //
173 
174 
175  inline SeldonUplo::SeldonUplo(int status)
176  {
177  status_ = status;
178  if (status_ == 0)
179  cblas_status_ = CblasUpper;
180  else
181  cblas_status_ = CblasLower;
182  }
183 
184 
185  inline CBLAS_UPLO SeldonUplo::Cblas() const
186  {
187  return cblas_status_;
188  }
189 
190 
191  inline bool SeldonUplo::Upper() const
192  {
193  return (status_ == 0);
194  }
195 
196 
197  inline bool SeldonUplo::Lower() const
198  {
199  return (status_ == 1);
200  }
201 
202 
203  inline char SeldonUplo::Char() const
204  {
205  return (status_ == 0) ? 'U' : 'L';
206  }
207 
208 
209  inline char SeldonUplo::RevChar() const
210  {
211  return (status_ == 0) ? 'L' : 'U';
212  }
213 
214 
216  // SELDONNORM //
218 
219 
220  inline SeldonNorm::SeldonNorm(int status)
221  {
222  status_ = status;
223  }
224 
225 
226  inline char SeldonNorm::Char() const
227  {
228  return (status_ == 0) ? 'I' : '1';
229  }
230 
231 
232  inline char SeldonNorm::RevChar() const
233  {
234  return (status_ == 0) ? '1' : 'I';
235  }
236 
237 
239  // SELDONCONJUGATE //
241 
242 
243  inline SeldonConjugate::SeldonConjugate(bool status)
244  {
245  status_ = status;
246  }
247 
248 
249  inline bool SeldonConjugate::Conj() const
250  {
251  return status_;
252  }
253 
254 
256  // SELDONSIDE //
258 
259 
260  inline SeldonSide::SeldonSide(int status)
261  {
262  status_ = status;
263  if (status_ == 0)
264  cblas_status_ = CblasLeft;
265  else
266  cblas_status_ = CblasRight;
267  }
268 
269 
270  inline SeldonSide::SeldonSide(const enum CBLAS_SIDE status):
271  cblas_status_(status)
272  {
273  if (cblas_status_ == CblasLeft)
274  status_ = 0;
275  else
276  status_ = 1;
277  }
278 
279 
280  inline CBLAS_SIDE SeldonSide::Cblas() const
281  {
282  return cblas_status_;
283  }
284 
285 
286  inline char SeldonSide::Char() const
287  {
288  if (status_ == 0)
289  return 'L';
290  else
291  return 'R';
292  }
293 
294 
295  inline char SeldonSide::RevChar() const
296  {
297  if (status_ == 0)
298  return 'R';
299  else
300  return 'L';
301  }
302 
303 
304  inline bool SeldonSide::Left() const
305  {
306  return (status_ == 0);
307  }
308 
309 
310  inline bool SeldonSide::Right() const
311  {
312  return (status_ == 1);
313  }
314 
315 
316  inline class_SeldonLeft::class_SeldonLeft(): SeldonSide(0)
317  {
318  }
319 
320 
321  inline class_SeldonRight::class_SeldonRight(): SeldonSide(1)
322  {
323  }
324 
325 }
326 
327 
328 #define SELDON_FILE_SHARE_MATRIXFLAG_INLINE_CXX
329 #endif
Seldon
Seldon namespace.
Definition: Array.cxx:24