Components of the library

The implementation of classes and functions is organised in three levels, namely the container, module and view levels. Let us describe them in more details.

The containers and domains

Here are some examples:

 linalg::rep1d<C>; linalg::rep2d<C>; lapack::rep2d<C>;     
 linalg::sparse2d<C>; linalg::toeplitz<C>; bezier::rep1d<C>;  ...

 linalg; lapack;  upol; bezier; ...

For instance, writting the following code

 namespace lapack {
 template <class C> 
   void solve(LU,linalg::rep1d<C> & x, const rep2d<C> & A, 
                 const linalg::rep1d<C> & b) {...};
 }

defines a specialized solve function for the containers of type lapack::rep2d<C>.

Modules

They can be combined or extended naturally. The main modules of the library are

 VECTOR, MATRIX, UPOLDAR, MPOLDST ...

These modules are available in files with the suffixe .m.

Views

 VectDse<double,linalg::rep1d<C> >; //equivalently VectDse<double>;

 template<class C, class R> 
 UPolDse<C,R> 
      operator*(const UPolDse<C,R>& a, const UPolDse<C,R>& b)
 {
   UPolDse<C,R> r;
   using UPOLDSE::mul; mul(r.rep(),a.rep(),b.rep());
   return r;
 }

SYNAPS DOCUMENTATION
logo