00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef MTL_DIVIDE_BY_INPLACE_INCLUDE
00010 #define MTL_DIVIDE_BY_INPLACE_INCLUDE
00011
00012 #include <boost/numeric/mtl/mtl_fwd.hpp>
00013 #include <boost/numeric/mtl/utility/tag.hpp>
00014 #include <boost/numeric/mtl/operation/assign_each_nonzero.hpp>
00015
00016 #include <boost/lambda/lambda.hpp>
00017
00018
00019 namespace mtl {
00020
00021
00023 template <typename Factor, typename Collection>
00024 void divide_by_inplace(Collection& c, const Factor& alpha, tag::scalar)
00025 {
00026 assign_each_nonzero(c, boost::lambda::_1 / alpha);
00027 }
00028
00030 template <typename Factor, typename Collection>
00031 void divide_by_inplace(Collection& c, const Factor& alpha)
00032 {
00033 divide_by_inplace(c, alpha, typename traits::category<Factor>::type());
00034 }
00035
00036
00037 }
00038
00039 #endif // MTL_DIVIDE_BY_INPLACE_INCLUDE