synaps/mpol/let.h

00001 #ifndef synaps_mpol_let_H
00002 #define synaps_mpol_let_H  
00003 #include <synaps/init.h>
00004 #include <synaps/arithm/let.h>
00005 __BEGIN_NAMESPACE_SYNAPS
00006 
00007 namespace let { 
00008   
00009   template<class POL, class C, class R>
00010     POL convert(const Monom<C,R> & m, type::As<POL> ) { return POL(m.coeff(),m[0]); };
00011   
00012   template<class C, class R>
00013     C convert(const Monom<C,R> & m, type::As<C> ) { return m.coeff(); }
00014   
00015   template<class U,class S, class C, class O,class R>
00016     void assign(UPolDse< U, S> & u, const MPol<C,O,R> & p, int v)
00017   {
00018     int d= degree(p,v);
00019     u.resize(d+1);
00020     for( unsigned i=0;i<u.size();++i) u[i]=0; //VECTOR::init(u,(U)0);
00021     for(typename MPol<C,O,R>::const_iterator it=p.begin(); it !=p.end(); ++it)
00022       {
00023         u[(*it)[v]] += let::convert(*it,type::As<U>());
00024       }
00025   }
00026 }
00027 
00028 __END_NAMESPACE_SYNAPS
00029 #endif

SYNAPS DOCUMENTATION
logo