polynomial_concept_check.cpp 976 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright Nick Thompson, 2017
  2. // Use, modification and distribution are subject to the
  3. // Boost Software License, Version 1.0.
  4. // (See accompanying file LICENSE_1_0.txt
  5. // or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. #include <boost/math/concepts/std_real_concept.hpp>
  7. #include <boost/math/tools/polynomial.hpp>
  8. #include <boost/multiprecision/cpp_int.hpp>
  9. template <class T>
  10. bool check_concepts()
  11. {
  12. boost::math::tools::polynomial<T> a(2), b(3), c(4);
  13. a += b;
  14. a -= b;
  15. a *= b;
  16. a /= b;
  17. a %= b;
  18. a = c;
  19. a += b + c;
  20. a += b - c;
  21. a += b * c;
  22. a += b / c;
  23. a += b % c;
  24. int i = 4;
  25. a += i;
  26. a -= i;
  27. a *= i;
  28. a /= i;
  29. a %= i;
  30. a += b + i;
  31. a += i + b;
  32. a += b - i;
  33. a += i - b;
  34. a += b * i;
  35. a += i * b;
  36. a += b / i;
  37. a += b % i;
  38. bool bb = false;
  39. bb |= a == b;
  40. bb |= a != b;
  41. return bb;
  42. }
  43. int main()
  44. {
  45. check_concepts<int>();
  46. check_concepts<boost::multiprecision::cpp_int>();
  47. return 0;
  48. }