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