/* Boost example/rational.cpp * example program of how to use interval< rational<> > * * Copyright 2002-2003 Guillaume Melquiond, Sylvain Pion * * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or * copy at http://www.boost.org/LICENSE_1_0.txt) */ // it would have been enough to only include: // <boost/numeric/interval.hpp> // but it's a bit overkill to include processor intrinsics // and transcendental functions, so we do it by ourselves #include <boost/numeric/interval/interval.hpp> // base class #include <boost/numeric/interval/rounded_arith.hpp> // default arithmetic rounding policy #include <boost/numeric/interval/checking.hpp> // default checking policy #include <boost/numeric/interval/arith.hpp> // += *= -= etc #include <boost/numeric/interval/policies.hpp> // default policy #include <boost/rational.hpp> #include <iostream> typedef boost::rational<int> Rat; typedef boost::numeric::interval<Rat> Interval; std::ostream& operator<<(std::ostream& os, const Interval& r) { os << "[" << r.lower() << "," << r.upper() << "]"; return os; } int main() { Rat p(2, 3), q(3, 4); Interval z(4, 5); Interval a(p, q); a += z; z *= q; a -= p; a /= q; std::cout << z << std::endl; std::cout << a << std::endl; }