summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/numeric/interval/test/pow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/numeric/interval/test/pow.cpp')
-rw-r--r--src/boost/libs/numeric/interval/test/pow.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/boost/libs/numeric/interval/test/pow.cpp b/src/boost/libs/numeric/interval/test/pow.cpp
new file mode 100644
index 00000000..ef5b268b
--- /dev/null
+++ b/src/boost/libs/numeric/interval/test/pow.cpp
@@ -0,0 +1,42 @@
+/* Boost test/pow.cpp
+ * test the pow function
+ *
+ * Copyright 2002-2003 Guillaume Melquiond
+ *
+ * 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)
+ */
+
+#include <boost/numeric/interval.hpp>
+#include <boost/test/minimal.hpp>
+#include "bugs.hpp"
+
+bool test_pow(double al, double au, double bl, double bu, int p) {
+ typedef boost::numeric::interval<double> I;
+ I b = pow(I(al, au), p);
+ return b.lower() == bl && b.upper() == bu;
+}
+
+int test_main(int, char *[]) {
+ BOOST_CHECK(test_pow(2, 3, 8, 27, 3));
+ BOOST_CHECK(test_pow(2, 3, 16, 81, 4));
+ BOOST_CHECK(test_pow(-3, 2, -27, 8, 3));
+ BOOST_CHECK(test_pow(-3, 2, 0, 81, 4));
+ BOOST_CHECK(test_pow(-3, -2, -27, -8, 3));
+ BOOST_CHECK(test_pow(-3, -2, 16, 81, 4));
+
+ BOOST_CHECK(test_pow(2, 4, 1./64, 1./8, -3));
+ BOOST_CHECK(test_pow(2, 4, 1./256, 1./16, -4));
+ BOOST_CHECK(test_pow(-4, -2, -1./8, -1./64, -3));
+ BOOST_CHECK(test_pow(-4, -2, 1./256, 1./16, -4));
+
+ BOOST_CHECK(test_pow(2, 3, 1, 1, 0));
+ BOOST_CHECK(test_pow(-3, 2, 1, 1, 0));
+ BOOST_CHECK(test_pow(-3, -2, 1, 1, 0));
+
+# ifdef __BORLANDC__
+ ::detail::ignore_warnings();
+# endif
+ return 0;
+}