00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef MTL_VECTOR_SPLIT_COMPLEX_VECTOR_INCLUDE
00013 #define MTL_VECTOR_SPLIT_COMPLEX_VECTOR_INCLUDE
00014
00015 #include <boost/numeric/mtl/utility/exception.hpp>
00016 #include <boost/numeric/mtl/concept/collection.hpp>
00017 #include <boost/numeric/mtl/operation/size.hpp>
00018
00019 namespace mtl { namespace vector {
00020
00022
00025 template <typename VectorComplex, typename VectorReal, typename VectorImaginary>
00026 inline void split_complex_vector(const VectorComplex& c, VectorReal& r, VectorImaginary& i)
00027 {
00028 using mtl::size;
00029 r.checked_change_dim(size(c));
00030 i.checked_change_dim(size(c));
00031
00032 for (std::size_t j= 0; j < size(c); ++j)
00033 r[j]= real(c[j]),
00034 i[j]= imag(c[j]);
00035 }
00036
00037 }}
00038
00039 #endif // MTL_VECTOR_SPLIT_COMPLEX_VECTOR_INCLUDE