synaps/linalg/texp.h

00001 #ifndef SYNAPS_LINALG_TEXP_H
00002 #define SYNAPS_LINALG_TEXP_H
00003 #include <synaps/init.h>
00004 #include <synaps/arithm/texp.h>
00005 #include <synaps/base/Range.h>
00006 #include <synaps/linalg/VectDse.h> // a cause de texp 
00007 
00008 __BEGIN_NAMESPACE_SYNAPS
00009 
00010 
00011 namespace linalg 
00012 { 
00013   define_binary_operator(_submatrix_,submatrix,submatrix);
00014   define_binary_operator(_row_,row,row);
00015   define_binary_operator(_col_,col,col);
00016 };
00017 
00018 namespace arithm { 
00019   
00020   template<> struct template_expression_operand< Range2d > { typedef Range2d T; }; 
00021   
00022   
00023   template<class Matrix> struct binary_operator_prototype< linalg::_row_, Matrix, Range >
00024   {
00025     typedef Matrix                        F;
00026     typedef Matrix                        U;
00027     typedef Range                         V;
00028   };
00029   
00030   template<class Matrix> struct binary_operator_prototype< linalg::_col_, Matrix, Range >
00031   {
00032     typedef Matrix                        F;
00033     typedef Matrix                        U;
00034     typedef Range                         V;
00035   };
00036   
00037   template<class Matrix> struct binary_operator_prototype< linalg::_row_, Matrix, int >
00038   {
00039     typedef typename Matrix::row_type       F;
00040     typedef Matrix                          U;
00041     typedef int                             V;
00042   };
00043   
00044   template<class Matrix> struct binary_operator_prototype< linalg::_col_, Matrix, int >
00045   {
00046     typedef typename Matrix::col_type     F;
00047     typedef Matrix                        U;
00048     typedef int                           V;
00049   };
00050 };
00051 __END_NAMESPACE_SYNAPS
00052 #endif

SYNAPS DOCUMENTATION
logo