+ Interval_t<T> &operator *= (T r)
+ {
+ if (!is_empty ())
+ {
+ at (LEFT) *= r;
+ at (RIGHT) *= r;
+ if (r < T (0))
+ swap ();
+ }
+ return *this;
+ }
+
+ Real linear_combination (Real x) const
+ {
+ Drul_array<Real> da (at (LEFT), at (RIGHT));
+ return ::linear_combination (da, x);
+ }
+ string to_string () const;
+
+ bool contains (T r) const;
+ void negate ()
+ {
+ T r = -at (LEFT);
+ T l = -at (RIGHT);
+ at (LEFT) = l;
+ at (RIGHT) = r;
+ }
+
+ void swap ()
+ {
+ T t = at (LEFT);
+ at (LEFT) = at (RIGHT);
+ at (RIGHT) = t;
+ }
+
+ static int left_comparison (Interval_t<T> const &a, Interval_t<T> const &b)
+ {
+ return sign (a[LEFT] - b[RIGHT]);
+ }