21 #ifndef SELDON_FILE_MATRIX_SPARSE_INLINE_CXX
23 #include "Matrix_Sparse.hxx"
52 template <
class T,
class Prop,
class Storage,
class Allocator>
68 template <
class T,
class Prop,
class Storage,
class Allocator>
89 template <
class T,
class Prop,
class Storage,
class Allocator>
108 template <
class T,
class Prop,
class Storage,
class Allocator>
124 template <
class T,
class Prop,
class Storage,
class Allocator>
137 template <
class T,
class Prop,
class Storage,
class Allocator>
149 template <
class T,
class Prop,
class Storage,
class Allocator>
164 template <
class T,
class Prop,
class Storage,
class Allocator>
175 template <
class T,
class Prop,
class Storage,
class Allocator>
178 return (Storage::GetFirst(this->m_, this->n_) + 1);
191 template <
class T,
class Prop,
class Storage,
class Allocator>
204 template <
class T,
class Prop,
class Storage,
class Allocator>
205 inline const typename Matrix_Sparse<T, Prop, Storage, Allocator>::value_type&
220 template <
class T,
class Prop,
class Storage,
class Allocator>
229 template <
class T,
class Prop,
class Storage,
class Allocator>
234 throw Undefined(
"AddInteractionRow",
"Not implemented");
244 template <
class T,
class Prop,
class Storage,
class Allocator>
258 template <
class T,
class Prop,
class Storage,
class Allocator>
272 template <
class T,
class Prop,
class Storage,
class Allocator>
283 #ifdef SELDON_WITH_VIRTUAL
284 template <
class T,
class Prop,
class Storage,
class Allocator>
287 const typename ClassComplexType<T>::Treal& omega,
288 int nb_iter,
int stage_ssor)
const
291 x, r, omega, nb_iter, stage_ssor);
294 template <
class T,
class Prop,
class Storage,
class Allocator>
295 inline void Matrix_Sparse<T, Prop, Storage, Allocator>
296 ::ApplySor(
const SeldonTranspose& trans, Vector<Tcplx>& x,
const Vector<Tcplx>& r,
297 const typename ClassComplexType<T>::Treal& omega,
298 int nb_iter,
int stage_ssor)
const
301 static_cast<const Matrix<T, Prop, Storage, Allocator>&
>(*
this),
302 x, r, omega, nb_iter, stage_ssor);
305 template <
class T,
class Prop,
class Storage,
class Allocator>
306 inline void Matrix_Sparse<T, Prop, Storage, Allocator>
307 ::MltAddVector(
const Treal& alpha,
const Vector<Treal>& x,
308 const Treal& beta, Vector<Treal>& y)
const
311 static_cast<const Matrix<T, Prop, Storage, Allocator>&
>(*
this),
315 template <
class T,
class Prop,
class Storage,
class Allocator>
316 inline void Matrix_Sparse<T, Prop, Storage, Allocator>
317 ::MltAddVector(
const Tcplx& alpha,
const Vector<Tcplx>& x,
318 const Tcplx& beta, Vector<Tcplx>& y)
const
321 static_cast<const Matrix<T, Prop, Storage, Allocator>&
>(*
this),
325 template <
class T,
class Prop,
class Storage,
class Allocator>
326 inline void Matrix_Sparse<T, Prop, Storage, Allocator>
327 ::MltAddVector(
const Treal& alpha,
const SeldonTranspose& trans,
328 const Vector<Treal>& x,
329 const Treal& beta, Vector<Treal>& y)
const
332 static_cast<const Matrix<T, Prop, Storage, Allocator>&
>(*
this),
336 template <
class T,
class Prop,
class Storage,
class Allocator>
337 inline void Matrix_Sparse<T, Prop, Storage, Allocator>
338 ::MltAddVector(
const Tcplx& alpha,
const SeldonTranspose& trans,
339 const Vector<Tcplx>& x,
340 const Tcplx& beta, Vector<Tcplx>& y)
const
343 static_cast<const Matrix<T, Prop, Storage, Allocator>&
>(*
this),
347 template <
class T,
class Prop,
class Storage,
class Allocator>
348 inline void Matrix_Sparse<T, Prop, Storage, Allocator>
349 ::MltVector(
const Vector<Treal>& x, Vector<Treal>& y)
const
351 Mlt(
static_cast<const Matrix<T, Prop, Storage, Allocator>&
>(*
this), x, y);
354 template <
class T,
class Prop,
class Storage,
class Allocator>
355 inline void Matrix_Sparse<T, Prop, Storage, Allocator>
356 ::MltVector(
const Vector<Tcplx>& x, Vector<Tcplx>& y)
const
358 Mlt(
static_cast<const Matrix<T, Prop, Storage, Allocator>&
>(*
this), x, y);
361 template <
class T,
class Prop,
class Storage,
class Allocator>
362 inline void Matrix_Sparse<T, Prop, Storage, Allocator>
363 ::MltVector(
const SeldonTranspose& trans,
364 const Vector<Treal>& x, Vector<Treal>& y)
const
367 static_cast<const Matrix<T, Prop, Storage, Allocator>&
>(*
this), x, y);
370 template <
class T,
class Prop,
class Storage,
class Allocator>
371 inline void Matrix_Sparse<T, Prop, Storage, Allocator>
372 ::MltVector(
const SeldonTranspose& trans,
373 const Vector<Tcplx>& x, Vector<Tcplx>& y)
const
376 static_cast<const Matrix<T, Prop, Storage, Allocator>&
>(*
this), x, y);
379 template <
class T,
class Prop,
class Storage,
class Allocator>
380 inline bool Matrix_Sparse<T, Prop, Storage, Allocator>
381 ::IsSymmetric()
const
401 template <
class T,
class Prop,
class Allocator>
413 template <
class T,
class Prop,
class Allocator>
427 template <
class T,
class Prop,
class Allocator>
446 template <
class T,
class Prop,
class Allocator>
447 template <
class Storage0,
class Allocator0,
448 class Storage1,
class Allocator1,
449 class Storage2,
class Allocator2>
474 template <
class T,
class Prop,
class Allocator>
486 template <
class T,
class Prop,
class Allocator>
500 template <
class T,
class Prop,
class Allocator>
519 template <
class T,
class Prop,
class Allocator>
520 template <
class Storage0,
class Allocator0,
521 class Storage1,
class Allocator1,
522 class Storage2,
class Allocator2>
535 #define SELDON_FILE_MATRIX_SPARSE_INLINE_CXX