// 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 typedef boost::math::quaternion qt; typedef std::complex 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; }