]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/libs/multiprecision/test/git_issue_426.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / multiprecision / test / git_issue_426.cpp
diff --git a/ceph/src/boost/libs/multiprecision/test/git_issue_426.cpp b/ceph/src/boost/libs/multiprecision/test/git_issue_426.cpp
new file mode 100644 (file)
index 0000000..a905b97
--- /dev/null
@@ -0,0 +1,50 @@
+///////////////////////////////////////////////////////////////////////////////
+//  Copyright 2019 John Maddock. 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/multiprecision/cpp_bin_float.hpp>
+#ifdef TEST_MPFR
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#include "test.hpp"
+
+template <class T>
+void test()
+{
+   T d = 360;
+   for (int i = 2; i >= -2; --i)
+   {
+      T x = i * d;
+      T y = remainder(x, d);
+      if (y == 0)
+         BOOST_CHECK_EQUAL(signbit(y), signbit(x));
+      if (i == 0)
+      {
+         x = -x;
+         y = remainder(x, d);
+         if (y == 0)
+            BOOST_CHECK_EQUAL(signbit(y), signbit(x));
+      }
+   }
+}
+
+int main()
+{
+   test<boost::multiprecision::cpp_bin_float_50>();
+   // No signed zero:
+   //test<boost::multiprecision::cpp_dec_float_50>();
+   //test<boost::multiprecision::mpf_float_50>();
+#ifdef TEST_MPFR
+   test<boost::multiprecision::mpfr_float_50>();
+#endif
+#ifdef TEST_FLOAT128
+   test<boost::multiprecision::float128>();
+#endif
+   return boost::report_errors();
+}
+
+