Arithmetic.hpp

00001 template <class ArrayType>
00002 struct  Arithmetic
00003 {
00004         enum { Dims = ArrayType::Dims };
00005 
00006         typedef typename ArrayType::value_type  value_type;
00007 
00008 static  RefPtr<MemArrayBase<Dims> > create(const RefPtr<MemArrayBase<Dims> > &MB, double f)
00009         {
00010         typedef value_type result_t; 
00011         typedef MemArray<Dims, result_t> ResultArray_t; 
00012 
00013         RefPtr<TypedCreativeIterator<value_type> > TI = MB->getIterator();
00014 
00015         RefPtr<ResultArray_t> RA = new ResultArray_t( MB -> Size() );
00016 
00017         RefPtr<TypedCreativeIterator<result_t> > RI = RA->getIterator(); 
00018 
00019         const value_type*src = TI->ptr();
00020                 result_t*dst  = RI->ptr();
00021 
00022                 for(index_t i=0; i<TI->count(); i++)
00023                 {
00024                         dst[i] = src[i] * f;
00025                 }
00026 
00027                 return RA;
00028         }
00029 };
00030