diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
commit | 483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch) | |
tree | e5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/boost/libs/numeric/interval/examples/rational.cpp | |
parent | Initial commit. (diff) | |
download | ceph-upstream.tar.xz ceph-upstream.zip |
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/numeric/interval/examples/rational.cpp')
-rw-r--r-- | src/boost/libs/numeric/interval/examples/rational.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/boost/libs/numeric/interval/examples/rational.cpp b/src/boost/libs/numeric/interval/examples/rational.cpp new file mode 100644 index 00000000..937171df --- /dev/null +++ b/src/boost/libs/numeric/interval/examples/rational.cpp @@ -0,0 +1,43 @@ +/* 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; +} |