Boost logo

Ublas :

From: e r (erwann.rogard_at_[hidden])
Date: 2007-08-09 11:48:05


hi,
what's the best way to achieve x*=y? where x and y are vectors (or
proxies) of identical size? although i wrote a function (below) i'm
hoping there's already some ublas related facility to do so that someone
would kindly want to share.

template<typename D> class Op_product_term_by_term{
        public:
                Op_product_term_by_term(D& dest):iter(dest.begin()),end(dest.end()){};
                void operator()(double elem);
        private:
                typename D::iterator iter;
                typename D::iterator end;
};
template<typename D> void Op_product_term_by_term<D>::operator()(double
elem){
        if(iter<end){
                *(iter++)*=elem;
        }else{
                throw;
        };
};
template<typename D, typename B> void product_term_by_term(D& dest,const
B& by){
   if(dest.size()==by.size()){
     for_each(by.begin(),by.end(),Op_product_term_by_term<D>(dest));
   }else{
        throw;
   };
};

ps: should i post this kind of ad in boost.ublas or boost.users?