00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef __MMX_COMPLEX_INTERVAL_HPP
00014 #define __MMX_COMPLEX_INTERVAL_HPP
00015 #include <numerix/interval.hpp>
00016 #include <numerix/complex.hpp>
00017 namespace mmx {
00018 #define TMPL template<typename C>
00019 #define Interval interval<C>
00020 #define Complex complex<C>
00021 #define Complex_interval complex<interval<C> >
00022
00023 TMPL
00024 struct make_ball_helper<Complex_interval,Complex,C> {
00025 static inline Complex_interval val (const Complex& c, const C& r) {
00026 return Complex_interval (make_ball<Interval,C,C> (Re (c), r),
00027 make_ball<Interval,C,C> (Im (c), r)); }
00028 };
00029
00030 TMPL inline C abs_down (const Complex_interval& z) {
00031 return lower (abs (z)); }
00032 TMPL inline C abs_up (const Complex_interval& z) {
00033 return upper (abs (z)); }
00034
00035 #undef TMPL
00036 #undef Interval
00037 #undef Complex
00038 #undef Complex_interval
00039 }
00040 #endif // __MMX_COMPLEX_HPP