12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- /* 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;
- }
|