123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- // test file for quaternion.hpp
- // (C) Copyright Hubert Holin 2001.
- // 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/math/quaternion.hpp>
- typedef boost::math::quaternion<double> qt;
- typedef std::complex<double> ct;
- #ifndef BOOST_NO_CXX14_CONSTEXPR
- constexpr qt full_constexpr_test(qt a, qt b, double d, ct c)
- {
- a.swap(b);
- qt result(a), t;
- result += d;
- result += c;
- result += b;
- t = result;
- t = d;
- t = c;
- result -= d;
- result -= c;
- result -= a;
- result *= d;
- result *= c;
- result *= a;
- result /= d;
- result /= c;
- result /= b;
- result += a + d;
- result += d + a;
- result += a + c;
- result += c + a;
- result += a + b;
- result += a - d;
- result += d - a;
- result += a - c;
- result += c - a;
- result += a - b;
- result += a * d;
- result += d * a;
- result += a * c;
- result += c * a;
- result += a * b;
- result += a / d;
- result += d / a;
- result += a / c;
- result += c / a;
- result += a / b;
- result += norm(a);
- result += conj(a);
- return result;
- }
- #endif
- int main()
- {
- #ifndef BOOST_NO_CXX11_CONSTEXPR
- constexpr qt q1;
- constexpr qt q2(2.0);
- constexpr qt q3(2.0, 3.0);
- constexpr qt q4(2.0, 3.9, 3.0);
- constexpr qt q5(2.0, 3.9, 3.0, 5.);
- constexpr ct c1(2., 3.);
- constexpr qt q6(c1);
- constexpr qt q7(c1, c1);
- constexpr qt q8(q1);
- constexpr double d1 = q5.real();
- constexpr qt q9 = q1.unreal();
- constexpr double d2 = q1.R_component_1();
- constexpr double d3 = q1.R_component_2();
- constexpr double d4 = q1.R_component_3();
- constexpr double d5 = q1.R_component_4();
- constexpr ct c2 = q1.C_component_1();
- constexpr ct c3 = q1.C_component_1();
- constexpr qt q10 = q1 + d1;
- constexpr qt q11 = d1 + q1;
- constexpr qt q12 = c2 + q1;
- constexpr qt q13 = q1 + c2;
- constexpr qt q14 = q1 + q2;
- constexpr qt q15 = q1 - d1;
- constexpr qt q16 = d1 - q1;
- constexpr qt q17 = c2 - q1;
- constexpr qt q18 = q1 - c2;
- constexpr qt q19 = q1 - q2;
- constexpr qt q20 = q1 * d1;
- constexpr qt q21 = d1 * q1;
- constexpr qt q22 = q5 / d1;
- constexpr double d6 = real(q5);
- constexpr qt q23 = unreal(q1);
- constexpr bool b1 = q1 == d1;
- constexpr bool b2 = d1 == q1;
- constexpr bool b3 = q1 != d1;
- constexpr bool b4 = d1 != q1;
- constexpr bool b5 = q1 == c2;
- constexpr bool b6 = c2 == q1;
- constexpr bool b7 = q1 != c2;
- constexpr bool b8 = c2 != q1;
- constexpr bool b9 = q2 == q1;
- constexpr bool b10 = q1 != q2;
- (void)q9;
- (void)d2;
- (void)d3;
- (void)d4;
- (void)d6;
- (void)d5;
- (void)c3;
- (void)q10;
- (void)q11;
- (void)q12;
- (void)q13;
- (void)q14;
- (void)q15;
- (void)q16;
- (void)q17;
- (void)q18;
- (void)q19;
- (void)q20;
- (void)q21;
- (void)q22;
- (void)q23;
- (void)b1;
- (void)b2;
- (void)b3;
- (void)b4;
- (void)b5;
- (void)b6;
- (void)b7;
- (void)b8;
- (void)b9;
- (void)b10;
- #endif
- #ifndef BOOST_NO_CXX14_CONSTEXPR
- constexpr qt q24 = full_constexpr_test(q5, q5 + 1, 3.2, q5.C_component_1());
- (void)q24;
- #endif
- return 0;
- }
|