Ticket #6614: quaternion_cpp11.diff
File quaternion_cpp11.diff, 152.2 KB (added by , 11 years ago) |
---|
-
boost/math/octonion.hpp
37 37 #endif /* BOOST_WORKAROUND(__GNUC__, < 3) */ 38 38 39 39 #define BOOST_OCTONION_ACCESSOR_GENERATOR(type) \ 40 typereal() const \40 BOOST_CONSTEXPR type real() const \ 41 41 { \ 42 42 return(a); \ 43 43 } \ 44 44 \ 45 octonion<type> unreal() const\45 BOOST_CONSTEXPR octonion<type> unreal() const \ 46 46 { \ 47 47 return( octonion<type>(static_cast<type>(0),b,c,d,e,f,g,h)); \ 48 48 } \ 49 49 \ 50 typeR_component_1() const \50 BOOST_CONSTEXPR type R_component_1() const \ 51 51 { \ 52 52 return(a); \ 53 53 } \ 54 54 \ 55 typeR_component_2() const \55 BOOST_CONSTEXPR type R_component_2() const \ 56 56 { \ 57 57 return(b); \ 58 58 } \ 59 59 \ 60 typeR_component_3() const \60 BOOST_CONSTEXPR type R_component_3() const \ 61 61 { \ 62 62 return(c); \ 63 63 } \ 64 64 \ 65 typeR_component_4() const \65 BOOST_CONSTEXPR type R_component_4() const \ 66 66 { \ 67 67 return(d); \ 68 68 } \ 69 69 \ 70 typeR_component_5() const \70 BOOST_CONSTEXPR type R_component_5() const \ 71 71 { \ 72 72 return(e); \ 73 73 } \ 74 74 \ 75 typeR_component_6() const \75 BOOST_CONSTEXPR type R_component_6() const \ 76 76 { \ 77 77 return(f); \ 78 78 } \ 79 79 \ 80 typeR_component_7() const \80 BOOST_CONSTEXPR type R_component_7() const \ 81 81 { \ 82 82 return(g); \ 83 83 } \ 84 84 \ 85 typeR_component_8() const \85 BOOST_CONSTEXPR type R_component_8() const \ 86 86 { \ 87 87 return(h); \ 88 88 } \ 89 89 \ 90 ::std::complex<type> C_component_1() const\90 BOOST_CONSTEXPR ::std::complex<type> C_component_1() const \ 91 91 { \ 92 92 return(::std::complex<type>(a,b)); \ 93 93 } \ 94 94 \ 95 ::std::complex<type> C_component_2() const\95 BOOST_CONSTEXPR ::std::complex<type> C_component_2() const \ 96 96 { \ 97 97 return(::std::complex<type>(c,d)); \ 98 98 } \ 99 99 \ 100 ::std::complex<type> C_component_3() const\100 BOOST_CONSTEXPR ::std::complex<type> C_component_3() const \ 101 101 { \ 102 102 return(::std::complex<type>(e,f)); \ 103 103 } \ 104 104 \ 105 ::std::complex<type> C_component_4() const\105 BOOST_CONSTEXPR ::std::complex<type> C_component_4() const \ 106 106 { \ 107 107 return(::std::complex<type>(g,h)); \ 108 108 } \ 109 109 \ 110 ::boost::math::quaternion<type> H_component_1() const\110 BOOST_CONSTEXPR ::boost::math::quaternion<type> H_component_1() const \ 111 111 { \ 112 112 return(::boost::math::quaternion<type>(a,b,c,d)); \ 113 113 } \ 114 114 \ 115 ::boost::math::quaternion<type> H_component_2() const\115 BOOST_CONSTEXPR ::boost::math::quaternion<type> H_component_2() const \ 116 116 { \ 117 117 return(::boost::math::quaternion<type>(e,f,g,h)); \ 118 118 } … … 201 201 // constructor for O seen as R^8 202 202 // (also default constructor) 203 203 204 explicitoctonion( T const & requested_a = T(),204 BOOST_CONSTEXPR octonion( T const & requested_a = T(), 205 205 T const & requested_b = T(), 206 206 T const & requested_c = T(), 207 207 T const & requested_d = T(), … … 224 224 225 225 // constructor for H seen as C^4 226 226 227 explicitoctonion( ::std::complex<T> const & z0,227 BOOST_CONSTEXPR octonion( ::std::complex<T> const & z0, 228 228 ::std::complex<T> const & z1 = ::std::complex<T>(), 229 229 ::std::complex<T> const & z2 = ::std::complex<T>(), 230 230 ::std::complex<T> const & z3 = ::std::complex<T>()) … … 243 243 244 244 // constructor for O seen as H^2 245 245 246 explicitoctonion( ::boost::math::quaternion<T> const & q0,246 BOOST_CONSTEXPR octonion( ::boost::math::quaternion<T> const & q0, 247 247 ::boost::math::quaternion<T> const & q1 = ::boost::math::quaternion<T>()) 248 248 : a(q0.R_component_1()), 249 249 b(q0.R_component_2()), … … 265 265 // templated copy constructor 266 266 267 267 template<typename X> 268 explicitoctonion(octonion<X> const & a_recopier)268 BOOST_CONSTEXPR octonion(octonion<X> const & a_recopier) 269 269 : a(static_cast<T>(a_recopier.R_component_1())), 270 270 b(static_cast<T>(a_recopier.R_component_2())), 271 271 c(static_cast<T>(a_recopier.R_component_3())), … … 683 683 template<> class octonion<long double>; 684 684 685 685 686 // helper templates for converting copy constructors (declaration)687 688 namespace detail689 {690 691 template< typename T,692 typename U693 >694 octonion<T> octonion_type_converter(octonion<U> const & rhs);695 }696 697 698 686 // implementation of octonion specialization 699 687 700 688 701 689 #define BOOST_OCTONION_CONSTRUCTOR_GENERATOR(type) \ 702 explicitoctonion( type const & requested_a = static_cast<type>(0), \690 BOOST_CONSTEXPR octonion( type const & requested_a = static_cast<type>(0), \ 703 691 type const & requested_b = static_cast<type>(0), \ 704 692 type const & requested_c = static_cast<type>(0), \ 705 693 type const & requested_d = static_cast<type>(0), \ … … 707 695 type const & requested_f = static_cast<type>(0), \ 708 696 type const & requested_g = static_cast<type>(0), \ 709 697 type const & requested_h = static_cast<type>(0)) \ 698 BOOST_NOEXCEPT \ 710 699 : a(requested_a), \ 711 700 b(requested_b), \ 712 701 c(requested_c), \ … … 718 707 { \ 719 708 } \ 720 709 \ 721 explicitoctonion( ::std::complex<type> const & z0, \710 BOOST_CONSTEXPR octonion( ::std::complex<type> const & z0, \ 722 711 ::std::complex<type> const & z1 = ::std::complex<type>(), \ 723 712 ::std::complex<type> const & z2 = ::std::complex<type>(), \ 724 713 ::std::complex<type> const & z3 = ::std::complex<type>()) \ 714 BOOST_NOEXCEPT \ 725 715 : a(z0.real()), \ 726 716 b(z0.imag()), \ 727 717 c(z1.real()), \ … … 733 723 { \ 734 724 } \ 735 725 \ 736 explicitoctonion( ::boost::math::quaternion<type> const & q0, \726 BOOST_CONSTEXPR octonion( ::boost::math::quaternion<type> const & q0, \ 737 727 ::boost::math::quaternion<type> const & q1 = ::boost::math::quaternion<type>()) \ 728 BOOST_NOEXCEPT \ 738 729 : a(q0.R_component_1()), \ 739 730 b(q0.R_component_2()), \ 740 731 c(q0.R_component_3()), \ … … 749 740 750 741 #define BOOST_OCTONION_MEMBER_ADD_GENERATOR_1(type) \ 751 742 octonion<type> & operator += (type const & rhs) \ 743 BOOST_NOEXCEPT \ 752 744 { \ 753 745 a += rhs; \ 754 746 \ … … 757 749 758 750 #define BOOST_OCTONION_MEMBER_ADD_GENERATOR_2(type) \ 759 751 octonion<type> & operator += (::std::complex<type> const & rhs) \ 752 BOOST_NOEXCEPT \ 760 753 { \ 761 754 a += rhs.real(); \ 762 755 b += rhs.imag(); \ … … 766 759 767 760 #define BOOST_OCTONION_MEMBER_ADD_GENERATOR_3(type) \ 768 761 octonion<type> & operator += (::boost::math::quaternion<type> const & rhs) \ 762 BOOST_NOEXCEPT \ 769 763 { \ 770 764 a += rhs.R_component_1(); \ 771 765 b += rhs.R_component_2(); \ … … 793 787 794 788 #define BOOST_OCTONION_MEMBER_SUB_GENERATOR_1(type) \ 795 789 octonion<type> & operator -= (type const & rhs) \ 790 BOOST_NOEXCEPT \ 796 791 { \ 797 792 a -= rhs; \ 798 793 \ … … 801 796 802 797 #define BOOST_OCTONION_MEMBER_SUB_GENERATOR_2(type) \ 803 798 octonion<type> & operator -= (::std::complex<type> const & rhs) \ 799 BOOST_NOEXCEPT \ 804 800 { \ 805 801 a -= rhs.real(); \ 806 802 b -= rhs.imag(); \ … … 810 806 811 807 #define BOOST_OCTONION_MEMBER_SUB_GENERATOR_3(type) \ 812 808 octonion<type> & operator -= (::boost::math::quaternion<type> const & rhs) \ 809 BOOST_NOEXCEPT \ 813 810 { \ 814 811 a -= rhs.R_component_1(); \ 815 812 b -= rhs.R_component_2(); \ … … 837 834 838 835 #define BOOST_OCTONION_MEMBER_MUL_GENERATOR_1(type) \ 839 836 octonion<type> & operator *= (type const & rhs) \ 837 BOOST_NOEXCEPT \ 840 838 { \ 841 839 a *= rhs; \ 842 840 b *= rhs; \ … … 852 850 853 851 #define BOOST_OCTONION_MEMBER_MUL_GENERATOR_2(type) \ 854 852 octonion<type> & operator *= (::std::complex<type> const & rhs) \ 853 BOOST_NOEXCEPT \ 855 854 { \ 856 855 type ar = rhs.real(); \ 857 856 type br = rhs.imag(); \ … … 879 878 880 879 #define BOOST_OCTONION_MEMBER_MUL_GENERATOR_3(type) \ 881 880 octonion<type> & operator *= (::boost::math::quaternion<type> const & rhs) \ 881 BOOST_NOEXCEPT \ 882 882 { \ 883 883 type ar = rhs.R_component_1(); \ 884 884 type br = rhs.R_component_2(); \ … … 949 949 950 950 #define BOOST_OCTONION_MEMBER_DIV_GENERATOR_1(type) \ 951 951 octonion<type> & operator /= (type const & rhs) \ 952 BOOST_NOEXCEPT \ 952 953 { \ 953 954 a /= rhs; \ 954 955 b /= rhs; \ … … 1409 1410 1410 1411 // explicit copy constructors (precision-loosing converters) 1411 1412 1412 explicit octonion(octonion<double> const & a_recopier) 1413 { 1414 *this = detail::octonion_type_converter<float, double>(a_recopier); 1415 } 1413 explicit BOOST_CONSTEXPR octonion(octonion<double> const & a_recopier) 1414 BOOST_NOEXCEPT ; 1416 1415 1417 explicit octonion(octonion<long double> const & a_recopier) 1418 { 1419 *this = detail::octonion_type_converter<float, long double>(a_recopier); 1420 } 1416 explicit BOOST_CONSTEXPR octonion(octonion<long double> const & a_recopier) 1417 BOOST_NOEXCEPT ; 1421 1418 1422 1419 // destructor 1423 1420 // (this is taken care of by the compiler itself) … … 1471 1468 1472 1469 // converting copy constructor 1473 1470 1474 explicit octonion(octonion<float> const & a_recopier) 1471 BOOST_CONSTEXPR octonion(octonion<float> const & a_recopier) 1472 BOOST_NOEXCEPT 1473 : a(a_recopier.R_component_1()), 1474 b(a_recopier.R_component_2()), 1475 c(a_recopier.R_component_3()), 1476 d(a_recopier.R_component_4()), 1477 e(a_recopier.R_component_5()), 1478 f(a_recopier.R_component_6()), 1479 g(a_recopier.R_component_7()), 1480 h(a_recopier.R_component_8()) 1475 1481 { 1476 *this = detail::octonion_type_converter<double, float>(a_recopier);1482 // nothing to do! 1477 1483 } 1478 1484 1479 1485 // explicit copy constructors (precision-loosing converters) 1480 1486 1481 explicit octonion(octonion<long double> const & a_recopier) 1482 { 1483 *this = detail::octonion_type_converter<double, long double>(a_recopier); 1484 } 1487 explicit BOOST_CONSTEXPR octonion(octonion<long double> const & a_recopier) 1488 BOOST_NOEXCEPT ; 1485 1489 1486 1490 // destructor 1487 1491 // (this is taken care of by the compiler itself) … … 1533 1537 // UNtemplated copy constructor 1534 1538 // (this is taken care of by the compiler itself) 1535 1539 1536 // converting copy constructor 1540 // converting copy constructors 1537 1541 1538 explicit octonion(octonion<float> const & a_recopier) 1542 BOOST_CONSTEXPR octonion(octonion<float> const & a_recopier) 1543 BOOST_NOEXCEPT 1544 : a(a_recopier.R_component_1()), 1545 b(a_recopier.R_component_2()), 1546 c(a_recopier.R_component_3()), 1547 d(a_recopier.R_component_4()), 1548 e(a_recopier.R_component_5()), 1549 f(a_recopier.R_component_6()), 1550 g(a_recopier.R_component_7()), 1551 h(a_recopier.R_component_8()) 1539 1552 { 1540 *this = detail::octonion_type_converter<long double, float>(a_recopier);1553 // nothing to do! 1541 1554 } 1542 1555 1543 1544 explicit octonion(octonion<double> const & a_recopier) 1556 BOOST_CONSTEXPR octonion(octonion<double> const & a_recopier) 1557 BOOST_NOEXCEPT 1558 : a(a_recopier.R_component_1()), 1559 b(a_recopier.R_component_2()), 1560 c(a_recopier.R_component_3()), 1561 d(a_recopier.R_component_4()), 1562 e(a_recopier.R_component_5()), 1563 f(a_recopier.R_component_6()), 1564 g(a_recopier.R_component_7()), 1565 h(a_recopier.R_component_8()) 1545 1566 { 1546 *this = detail::octonion_type_converter<long double, double>(a_recopier);1567 // nothing to do! 1547 1568 } 1548 1569 1549 1570 … … 1585 1606 }; 1586 1607 1587 1608 1609 BOOST_CONSTEXPR inline 1610 octonion<float>::octonion( octonion<double> const &a_recopier ) 1611 BOOST_NOEXCEPT 1612 : a(static_cast<float>(a_recopier.R_component_1())), 1613 b(static_cast<float>(a_recopier.R_component_2())), 1614 c(static_cast<float>(a_recopier.R_component_3())), 1615 d(static_cast<float>(a_recopier.R_component_4())), 1616 e(static_cast<float>(a_recopier.R_component_5())), 1617 f(static_cast<float>(a_recopier.R_component_6())), 1618 g(static_cast<float>(a_recopier.R_component_7())), 1619 h(static_cast<float>(a_recopier.R_component_8())) 1620 { 1621 //nothing to do! 1622 } 1623 1624 BOOST_CONSTEXPR inline 1625 octonion<float>::octonion( octonion<long double> const &a_recopier ) 1626 BOOST_NOEXCEPT 1627 : a(static_cast<float>(a_recopier.R_component_1())), 1628 b(static_cast<float>(a_recopier.R_component_2())), 1629 c(static_cast<float>(a_recopier.R_component_3())), 1630 d(static_cast<float>(a_recopier.R_component_4())), 1631 e(static_cast<float>(a_recopier.R_component_5())), 1632 f(static_cast<float>(a_recopier.R_component_6())), 1633 g(static_cast<float>(a_recopier.R_component_7())), 1634 h(static_cast<float>(a_recopier.R_component_8())) 1635 { 1636 //nothing to do! 1637 } 1638 1639 BOOST_CONSTEXPR inline 1640 octonion<double>::octonion( octonion<long double> const &a_recopier ) 1641 BOOST_NOEXCEPT 1642 : a(static_cast<double>(a_recopier.R_component_1())), 1643 b(static_cast<double>(a_recopier.R_component_2())), 1644 c(static_cast<double>(a_recopier.R_component_3())), 1645 d(static_cast<double>(a_recopier.R_component_4())), 1646 e(static_cast<double>(a_recopier.R_component_5())), 1647 f(static_cast<double>(a_recopier.R_component_6())), 1648 g(static_cast<double>(a_recopier.R_component_7())), 1649 h(static_cast<double>(a_recopier.R_component_8())) 1650 { 1651 //nothing to do! 1652 } 1653 1654 1588 1655 #undef BOOST_OCTONION_CONSTRUCTOR_GENERATOR 1589 1656 1590 1657 #undef BOOST_OCTONION_MEMBER_ALGEBRAIC_GENERATOR … … 1693 1760 1694 1761 1695 1762 template<typename T> 1696 inline octonion<T>operator + (octonion<T> const & o)1763 BOOST_CONSTEXPR inline octonion<T> operator + (octonion<T> const & o) 1697 1764 { 1698 1765 return(o); 1699 1766 } 1700 1767 1701 1768 1702 1769 template<typename T> 1703 inline octonion<T>operator - (octonion<T> const & o)1770 BOOST_CONSTEXPR inline octonion<T> operator - (octonion<T> const & o) 1704 1771 { 1705 1772 return(octonion<T>(-o.R_component_1(),-o.R_component_2(),-o.R_component_3(),-o.R_component_4(),-o.R_component_5(),-o.R_component_6(),-o.R_component_7(),-o.R_component_8())); 1706 1773 } 1707 1774 1708 1775 1709 1776 template<typename T> 1710 inline booloperator == (T const & lhs, octonion<T> const & rhs)1777 BOOST_CONSTEXPR inline bool operator == (T const & lhs, octonion<T> const & rhs) 1711 1778 { 1712 1779 return( 1713 1780 (rhs.R_component_1() == lhs)&& … … 1723 1790 1724 1791 1725 1792 template<typename T> 1726 inline booloperator == (octonion<T> const & lhs, T const & rhs)1793 BOOST_CONSTEXPR inline bool operator == (octonion<T> const & lhs, T const & rhs) 1727 1794 { 1728 1795 return( 1729 1796 (lhs.R_component_1() == rhs)&& … … 1739 1806 1740 1807 1741 1808 template<typename T> 1742 inline booloperator == (::std::complex<T> const & lhs, octonion<T> const & rhs)1809 BOOST_CONSTEXPR inline bool operator == (::std::complex<T> const & lhs, octonion<T> const & rhs) 1743 1810 { 1744 1811 return( 1745 1812 (rhs.R_component_1() == lhs.real())&& … … 1755 1822 1756 1823 1757 1824 template<typename T> 1758 inline booloperator == (octonion<T> const & lhs, ::std::complex<T> const & rhs)1825 BOOST_CONSTEXPR inline bool operator == (octonion<T> const & lhs, ::std::complex<T> const & rhs) 1759 1826 { 1760 1827 return( 1761 1828 (lhs.R_component_1() == rhs.real())&& … … 1771 1838 1772 1839 1773 1840 template<typename T> 1774 inline booloperator == (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs)1841 BOOST_CONSTEXPR inline bool operator == (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs) 1775 1842 { 1776 1843 return( 1777 1844 (rhs.R_component_1() == lhs.R_component_1())&& … … 1787 1854 1788 1855 1789 1856 template<typename T> 1790 inline booloperator == (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs)1857 BOOST_CONSTEXPR inline bool operator == (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs) 1791 1858 { 1792 1859 return( 1793 1860 (lhs.R_component_1() == rhs.R_component_1())&& … … 1803 1870 1804 1871 1805 1872 template<typename T> 1806 inline booloperator == (octonion<T> const & lhs, octonion<T> const & rhs)1873 BOOST_CONSTEXPR inline bool operator == (octonion<T> const & lhs, octonion<T> const & rhs) 1807 1874 { 1808 1875 return( 1809 1876 (rhs.R_component_1() == lhs.R_component_1())&& … … 1824 1891 } 1825 1892 1826 1893 template<typename T> 1827 inline booloperator != (T const & lhs, octonion<T> const & rhs)1894 BOOST_CONSTEXPR inline bool operator != (T const & lhs, octonion<T> const & rhs) 1828 1895 BOOST_OCTONION_NOT_EQUAL_GENERATOR 1829 1896 1830 1897 template<typename T> 1831 inline booloperator != (octonion<T> const & lhs, T const & rhs)1898 BOOST_CONSTEXPR inline bool operator != (octonion<T> const & lhs, T const & rhs) 1832 1899 BOOST_OCTONION_NOT_EQUAL_GENERATOR 1833 1900 1834 1901 template<typename T> 1835 inline booloperator != (::std::complex<T> const & lhs, octonion<T> const & rhs)1902 BOOST_CONSTEXPR inline bool operator != (::std::complex<T> const & lhs, octonion<T> const & rhs) 1836 1903 BOOST_OCTONION_NOT_EQUAL_GENERATOR 1837 1904 1838 1905 template<typename T> 1839 inline booloperator != (octonion<T> const & lhs, ::std::complex<T> const & rhs)1906 BOOST_CONSTEXPR inline bool operator != (octonion<T> const & lhs, ::std::complex<T> const & rhs) 1840 1907 BOOST_OCTONION_NOT_EQUAL_GENERATOR 1841 1908 1842 1909 template<typename T> 1843 inline booloperator != (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs)1910 BOOST_CONSTEXPR inline bool operator != (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs) 1844 1911 BOOST_OCTONION_NOT_EQUAL_GENERATOR 1845 1912 1846 1913 template<typename T> 1847 inline booloperator != (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs)1914 BOOST_CONSTEXPR inline bool operator != (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs) 1848 1915 BOOST_OCTONION_NOT_EQUAL_GENERATOR 1849 1916 1850 1917 template<typename T> 1851 inline booloperator != (octonion<T> const & lhs, octonion<T> const & rhs)1918 BOOST_CONSTEXPR inline bool operator != (octonion<T> const & lhs, octonion<T> const & rhs) 1852 1919 BOOST_OCTONION_NOT_EQUAL_GENERATOR 1853 1920 1854 1921 #undef BOOST_OCTONION_NOT_EQUAL_GENERATOR … … 4367 4434 // values 4368 4435 4369 4436 template<typename T> 4370 inline Treal(octonion<T> const & o)4437 BOOST_CONSTEXPR inline T real(octonion<T> const & o) 4371 4438 { 4372 4439 return(o.real()); 4373 4440 } 4374 4441 4375 4442 4376 4443 template<typename T> 4377 inline octonion<T>unreal(octonion<T> const & o)4444 BOOST_CONSTEXPR inline octonion<T> unreal(octonion<T> const & o) 4378 4445 { 4379 4446 return(o.unreal()); 4380 4447 } … … 4468 4535 #undef BOOST_OCTONION_VALARRAY_LOADER 4469 4536 4470 4537 4471 // Note: This is the Cayley norm, not the Euclidian norm...4472 4473 4538 template<typename T> 4474 inline T norm(octonion<T> const & o)4539 BOOST_CONSTEXPR inline octonion<T> conj(octonion<T> const & o) 4475 4540 { 4476 return(real(o*conj(o)));4477 }4478 4479 4480 template<typename T>4481 inline octonion<T> conj(octonion<T> const & o)4482 {4483 4541 return(octonion<T>( +o.R_component_1(), 4484 4542 -o.R_component_2(), 4485 4543 -o.R_component_3(), … … 4491 4549 } 4492 4550 4493 4551 4552 // Note: This is the Cayley norm, not the Euclidian norm... 4553 4554 template<typename T> 4555 BOOST_CONSTEXPR inline T norm(octonion<T> const & o) 4556 { 4557 return(real(o*conj(o))); 4558 } 4559 4560 4494 4561 // Note: There is little point, for the octonions, to introduce the equivalents 4495 4562 // to the complex "arg" and the quaternionic "cylindropolar". 4496 4563 … … 4720 4787 return(pow(octonion<T>(static_cast<T>(1))/o,-n)); 4721 4788 } 4722 4789 } 4723 4724 4725 // helper templates for converting copy constructors (definition)4726 4727 namespace detail4728 {4729 4730 template< typename T,4731 typename U4732 >4733 octonion<T> octonion_type_converter(octonion<U> const & rhs)4734 {4735 return(octonion<T>( static_cast<T>(rhs.R_component_1()),4736 static_cast<T>(rhs.R_component_2()),4737 static_cast<T>(rhs.R_component_3()),4738 static_cast<T>(rhs.R_component_4()),4739 static_cast<T>(rhs.R_component_5()),4740 static_cast<T>(rhs.R_component_6()),4741 static_cast<T>(rhs.R_component_7()),4742 static_cast<T>(rhs.R_component_8())));4743 }4744 }4745 4790 } 4746 4791 } 4747 4792 -
boost/math/quaternion.hpp
52 52 #endif /* BOOST_WORKAROUND(__GNUC__, < 3) */ 53 53 54 54 #define BOOST_QUATERNION_ACCESSOR_GENERATOR(type) \ 55 type real() const\55 BOOST_CONSTEXPR type real() const \ 56 56 { \ 57 57 return(a); \ 58 58 } \ 59 59 \ 60 quaternion<type> unreal() const\60 BOOST_CONSTEXPR quaternion<type> unreal() const \ 61 61 { \ 62 62 return(quaternion<type>(static_cast<type>(0),b,c,d)); \ 63 63 } \ 64 64 \ 65 typeR_component_1() const \65 BOOST_CONSTEXPR type R_component_1() const \ 66 66 { \ 67 67 return(a); \ 68 68 } \ 69 69 \ 70 typeR_component_2() const \70 BOOST_CONSTEXPR type R_component_2() const \ 71 71 { \ 72 72 return(b); \ 73 73 } \ 74 74 \ 75 typeR_component_3() const \75 BOOST_CONSTEXPR type R_component_3() const \ 76 76 { \ 77 77 return(c); \ 78 78 } \ 79 79 \ 80 typeR_component_4() const \80 BOOST_CONSTEXPR type R_component_4() const \ 81 81 { \ 82 82 return(d); \ 83 83 } \ 84 84 \ 85 ::std::complex<type> C_component_1() const\85 BOOST_CONSTEXPR ::std::complex<type> C_component_1() const \ 86 86 { \ 87 87 return(::std::complex<type>(a,b)); \ 88 88 } \ 89 89 \ 90 ::std::complex<type> C_component_2() const\90 BOOST_CONSTEXPR ::std::complex<type> C_component_2() const \ 91 91 { \ 92 92 return(::std::complex<type>(c,d)); \ 93 93 } … … 153 153 // constructor for H seen as R^4 154 154 // (also default constructor) 155 155 156 explicitquaternion( T const & requested_a = T(),156 BOOST_CONSTEXPR quaternion( T const & requested_a = T(), 157 157 T const & requested_b = T(), 158 158 T const & requested_c = T(), 159 159 T const & requested_d = T()) … … 168 168 169 169 // constructor for H seen as C^2 170 170 171 explicitquaternion( ::std::complex<T> const & z0,171 BOOST_CONSTEXPR quaternion( ::std::complex<T> const & z0, 172 172 ::std::complex<T> const & z1 = ::std::complex<T>()) 173 173 : a(z0.real()), 174 174 b(z0.imag()), … … 186 186 // templated copy constructor 187 187 188 188 template<typename X> 189 explicitquaternion(quaternion<X> const & a_recopier)189 BOOST_CONSTEXPR quaternion(quaternion<X> const & a_recopier) 190 190 : a(static_cast<T>(a_recopier.R_component_1())), 191 191 b(static_cast<T>(a_recopier.R_component_2())), 192 192 c(static_cast<T>(a_recopier.R_component_3())), … … 436 436 template<> class quaternion<long double>; 437 437 438 438 439 // helper templates for converting copy constructors (declaration)440 441 namespace detail442 {443 444 template< typename T,445 typename U446 >447 quaternion<T> quaternion_type_converter(quaternion<U> const & rhs);448 }449 450 451 439 // implementation of quaternion specialization 452 440 453 441 454 442 #define BOOST_QUATERNION_CONSTRUCTOR_GENERATOR(type) \ 455 explicitquaternion( type const & requested_a = static_cast<type>(0), \443 BOOST_CONSTEXPR quaternion( type const & requested_a = static_cast<type>(0), \ 456 444 type const & requested_b = static_cast<type>(0), \ 457 445 type const & requested_c = static_cast<type>(0), \ 458 446 type const & requested_d = static_cast<type>(0)) \ 447 BOOST_NOEXCEPT \ 459 448 : a(requested_a), \ 460 449 b(requested_b), \ 461 450 c(requested_c), \ … … 463 452 { \ 464 453 } \ 465 454 \ 466 explicitquaternion( ::std::complex<type> const & z0, \455 BOOST_CONSTEXPR quaternion( ::std::complex<type> const & z0, \ 467 456 ::std::complex<type> const & z1 = ::std::complex<type>()) \ 457 BOOST_NOEXCEPT \ 468 458 : a(z0.real()), \ 469 459 b(z0.imag()), \ 470 460 c(z1.real()), \ … … 475 465 476 466 #define BOOST_QUATERNION_MEMBER_ADD_GENERATOR_1(type) \ 477 467 quaternion<type> & operator += (type const & rhs) \ 468 BOOST_NOEXCEPT \ 478 469 { \ 479 470 a += rhs; \ 480 471 \ … … 483 474 484 475 #define BOOST_QUATERNION_MEMBER_ADD_GENERATOR_2(type) \ 485 476 quaternion<type> & operator += (::std::complex<type> const & rhs) \ 477 BOOST_NOEXCEPT \ 486 478 { \ 487 479 a += rhs.real(); \ 488 480 b += rhs.imag(); \ … … 504 496 505 497 #define BOOST_QUATERNION_MEMBER_SUB_GENERATOR_1(type) \ 506 498 quaternion<type> & operator -= (type const & rhs) \ 499 BOOST_NOEXCEPT \ 507 500 { \ 508 501 a -= rhs; \ 509 502 \ … … 512 505 513 506 #define BOOST_QUATERNION_MEMBER_SUB_GENERATOR_2(type) \ 514 507 quaternion<type> & operator -= (::std::complex<type> const & rhs) \ 508 BOOST_NOEXCEPT \ 515 509 { \ 516 510 a -= rhs.real(); \ 517 511 b -= rhs.imag(); \ … … 533 527 534 528 #define BOOST_QUATERNION_MEMBER_MUL_GENERATOR_1(type) \ 535 529 quaternion<type> & operator *= (type const & rhs) \ 530 BOOST_NOEXCEPT \ 536 531 { \ 537 532 a *= rhs; \ 538 533 b *= rhs; \ … … 544 539 545 540 #define BOOST_QUATERNION_MEMBER_MUL_GENERATOR_2(type) \ 546 541 quaternion<type> & operator *= (::std::complex<type> const & rhs) \ 542 BOOST_NOEXCEPT \ 547 543 { \ 548 544 type ar = rhs.real(); \ 549 545 type br = rhs.imag(); \ … … 592 588 593 589 #define BOOST_QUATERNION_MEMBER_DIV_GENERATOR_1(type) \ 594 590 quaternion<type> & operator /= (type const & rhs) \ 591 BOOST_NOEXCEPT \ 595 592 { \ 596 593 a /= rhs; \ 597 594 b /= rhs; \ … … 855 852 856 853 // explicit copy constructors (precision-loosing converters) 857 854 858 explicit quaternion(quaternion<double> const & a_recopier) 859 { 860 *this = detail::quaternion_type_converter<float, double>(a_recopier); 861 } 855 explicit BOOST_CONSTEXPR quaternion(quaternion<double> const & a_recopier) 856 BOOST_NOEXCEPT ; 862 857 863 explicit quaternion(quaternion<long double> const & a_recopier) 864 { 865 *this = detail::quaternion_type_converter<float, long double>(a_recopier); 866 } 858 explicit BOOST_CONSTEXPR quaternion(quaternion<long double> const & a_recopier) 859 BOOST_NOEXCEPT ; 867 860 868 861 // destructor 869 862 // (this is taken care of by the compiler itself) … … 916 909 917 910 // converting copy constructor 918 911 919 explicit quaternion(quaternion<float> const & a_recopier) 912 BOOST_CONSTEXPR quaternion(quaternion<float> const & a_recopier) 913 BOOST_NOEXCEPT 914 : a(a_recopier.R_component_1()), 915 b(a_recopier.R_component_2()), 916 c(a_recopier.R_component_3()), 917 d(a_recopier.R_component_4()) 920 918 { 921 *this = detail::quaternion_type_converter<double, float>(a_recopier);919 // nothing to do! 922 920 } 923 921 924 922 // explicit copy constructors (precision-loosing converters) 925 923 926 explicit quaternion(quaternion<long double> const & a_recopier) 927 { 928 *this = detail::quaternion_type_converter<double, long double>(a_recopier); 929 } 924 explicit BOOST_CONSTEXPR quaternion(quaternion<long double> const & a_recopier) 925 BOOST_NOEXCEPT ; 930 926 931 927 // destructor 932 928 // (this is taken care of by the compiler itself) … … 979 975 980 976 // converting copy constructors 981 977 982 explicit quaternion(quaternion<float> const & a_recopier) 978 BOOST_CONSTEXPR quaternion(quaternion<float> const & a_recopier) 979 BOOST_NOEXCEPT 980 : a(a_recopier.R_component_1()), 981 b(a_recopier.R_component_2()), 982 c(a_recopier.R_component_3()), 983 d(a_recopier.R_component_4()) 983 984 { 984 *this = detail::quaternion_type_converter<long double, float>(a_recopier);985 // nothing to do! 985 986 } 986 987 987 explicit quaternion(quaternion<double> const & a_recopier) 988 BOOST_CONSTEXPR quaternion(quaternion<double> const & a_recopier) 989 BOOST_NOEXCEPT 990 : a(a_recopier.R_component_1()), 991 b(a_recopier.R_component_2()), 992 c(a_recopier.R_component_3()), 993 d(a_recopier.R_component_4()) 988 994 { 989 *this = detail::quaternion_type_converter<long double, double>(a_recopier);995 // nothing to do! 990 996 } 991 997 992 998 // destructor … … 1026 1032 }; 1027 1033 1028 1034 1035 BOOST_CONSTEXPR inline 1036 quaternion<float>::quaternion( quaternion<double> const &a_recopier ) 1037 BOOST_NOEXCEPT 1038 : a(static_cast<float>(a_recopier.R_component_1())), 1039 b(static_cast<float>(a_recopier.R_component_2())), 1040 c(static_cast<float>(a_recopier.R_component_3())), 1041 d(static_cast<float>(a_recopier.R_component_4())) 1042 { 1043 //nothing to do! 1044 } 1045 1046 BOOST_CONSTEXPR inline 1047 quaternion<float>::quaternion( quaternion<long double> const &a_recopier ) 1048 BOOST_NOEXCEPT 1049 : a(static_cast<float>(a_recopier.R_component_1())), 1050 b(static_cast<float>(a_recopier.R_component_2())), 1051 c(static_cast<float>(a_recopier.R_component_3())), 1052 d(static_cast<float>(a_recopier.R_component_4())) 1053 { 1054 //nothing to do! 1055 } 1056 1057 BOOST_CONSTEXPR inline 1058 quaternion<double>::quaternion( quaternion<long double> const &a_recopier ) 1059 BOOST_NOEXCEPT 1060 : a(static_cast<double>(a_recopier.R_component_1())), 1061 b(static_cast<double>(a_recopier.R_component_2())), 1062 c(static_cast<double>(a_recopier.R_component_3())), 1063 d(static_cast<double>(a_recopier.R_component_4())) 1064 { 1065 //nothing to do! 1066 } 1067 1068 1029 1069 #undef BOOST_QUATERNION_MEMBER_ALGEBRAIC_GENERATOR 1030 1070 #undef BOOST_QUATERNION_MEMBER_ADD_GENERATOR 1031 1071 #undef BOOST_QUATERNION_MEMBER_SUB_GENERATOR … … 1114 1154 1115 1155 1116 1156 template<typename T> 1117 inline quaternion<T>operator + (quaternion<T> const & q)1157 BOOST_CONSTEXPR inline quaternion<T> operator + (quaternion<T> const & q) 1118 1158 { 1119 1159 return(q); 1120 1160 } 1121 1161 1122 1162 1123 1163 template<typename T> 1124 inline quaternion<T>operator - (quaternion<T> const & q)1164 BOOST_CONSTEXPR inline quaternion<T> operator - (quaternion<T> const & q) 1125 1165 { 1126 1166 return(quaternion<T>(-q.R_component_1(),-q.R_component_2(),-q.R_component_3(),-q.R_component_4())); 1127 1167 } 1128 1168 1129 1169 1130 1170 template<typename T> 1131 inline booloperator == (T const & lhs, quaternion<T> const & rhs)1171 BOOST_CONSTEXPR inline bool operator == (T const & lhs, quaternion<T> const & rhs) 1132 1172 { 1133 1173 return ( 1134 1174 (rhs.R_component_1() == lhs)&& … … 1140 1180 1141 1181 1142 1182 template<typename T> 1143 inline booloperator == (quaternion<T> const & lhs, T const & rhs)1183 BOOST_CONSTEXPR inline bool operator == (quaternion<T> const & lhs, T const & rhs) 1144 1184 { 1145 1185 return ( 1146 1186 (lhs.R_component_1() == rhs)&& … … 1152 1192 1153 1193 1154 1194 template<typename T> 1155 inline booloperator == (::std::complex<T> const & lhs, quaternion<T> const & rhs)1195 BOOST_CONSTEXPR inline bool operator == (::std::complex<T> const & lhs, quaternion<T> const & rhs) 1156 1196 { 1157 1197 return ( 1158 1198 (rhs.R_component_1() == lhs.real())&& … … 1164 1204 1165 1205 1166 1206 template<typename T> 1167 inline booloperator == (quaternion<T> const & lhs, ::std::complex<T> const & rhs)1207 BOOST_CONSTEXPR inline bool operator == (quaternion<T> const & lhs, ::std::complex<T> const & rhs) 1168 1208 { 1169 1209 return ( 1170 1210 (lhs.R_component_1() == rhs.real())&& … … 1176 1216 1177 1217 1178 1218 template<typename T> 1179 inline booloperator == (quaternion<T> const & lhs, quaternion<T> const & rhs)1219 BOOST_CONSTEXPR inline bool operator == (quaternion<T> const & lhs, quaternion<T> const & rhs) 1180 1220 { 1181 1221 return ( 1182 1222 (rhs.R_component_1() == lhs.R_component_1())&& … … 1193 1233 } 1194 1234 1195 1235 template<typename T> 1196 inline booloperator != (T const & lhs, quaternion<T> const & rhs)1236 BOOST_CONSTEXPR inline bool operator != (T const & lhs, quaternion<T> const & rhs) 1197 1237 BOOST_QUATERNION_NOT_EQUAL_GENERATOR 1198 1238 1199 1239 template<typename T> 1200 inline booloperator != (quaternion<T> const & lhs, T const & rhs)1240 BOOST_CONSTEXPR inline bool operator != (quaternion<T> const & lhs, T const & rhs) 1201 1241 BOOST_QUATERNION_NOT_EQUAL_GENERATOR 1202 1242 1203 1243 template<typename T> 1204 inline booloperator != (::std::complex<T> const & lhs, quaternion<T> const & rhs)1244 BOOST_CONSTEXPR inline bool operator != (::std::complex<T> const & lhs, quaternion<T> const & rhs) 1205 1245 BOOST_QUATERNION_NOT_EQUAL_GENERATOR 1206 1246 1207 1247 template<typename T> 1208 inline booloperator != (quaternion<T> const & lhs, ::std::complex<T> const & rhs)1248 BOOST_CONSTEXPR inline bool operator != (quaternion<T> const & lhs, ::std::complex<T> const & rhs) 1209 1249 BOOST_QUATERNION_NOT_EQUAL_GENERATOR 1210 1250 1211 1251 template<typename T> 1212 inline booloperator != (quaternion<T> const & lhs, quaternion<T> const & rhs)1252 BOOST_CONSTEXPR inline bool operator != (quaternion<T> const & lhs, quaternion<T> const & rhs) 1213 1253 BOOST_QUATERNION_NOT_EQUAL_GENERATOR 1214 1254 1215 1255 #undef BOOST_QUATERNION_NOT_EQUAL_GENERATOR … … 1554 1594 // values 1555 1595 1556 1596 template<typename T> 1557 inline Treal(quaternion<T> const & q)1597 BOOST_CONSTEXPR inline T real(quaternion<T> const & q) 1558 1598 { 1559 1599 return(q.real()); 1560 1600 } 1561 1601 1562 1602 1563 1603 template<typename T> 1564 inline quaternion<T>unreal(quaternion<T> const & q)1604 BOOST_CONSTEXPR inline quaternion<T> unreal(quaternion<T> const & q) 1565 1605 { 1566 1606 return(q.unreal()); 1567 1607 } … … 1651 1691 #undef BOOST_QUATERNION_VALARRAY_LOADER 1652 1692 1653 1693 1654 // Note: This is the Cayley norm, not the Euclidian norm...1655 1656 1694 template<typename T> 1657 inline T norm(quaternion<T>const& q)1695 BOOST_CONSTEXPR inline quaternion<T> conj(quaternion<T> const & q) 1658 1696 { 1659 return(real(q*conj(q))); 1697 return(quaternion<T>( +q.R_component_1(), 1698 -q.R_component_2(), 1699 -q.R_component_3(), 1700 -q.R_component_4())); 1660 1701 } 1661 1702 1662 1703 1704 // Note: This is the Cayley norm, not the Euclidian norm... 1705 1663 1706 template<typename T> 1664 inline quaternion<T> conj(quaternion<T> const& q)1707 BOOST_CONSTEXPR inline T norm(quaternion<T>const & q) 1665 1708 { 1666 return(quaternion<T>( +q.R_component_1(), 1667 -q.R_component_2(), 1668 -q.R_component_3(), 1669 -q.R_component_4())); 1709 return(real(q*conj(q))); 1670 1710 } 1671 1711 1672 1712 … … 1894 1934 return(pow(quaternion<T>(static_cast<T>(1))/q,-n)); 1895 1935 } 1896 1936 } 1897 1898 1899 // helper templates for converting copy constructors (definition)1900 1901 namespace detail1902 {1903 1904 template< typename T,1905 typename U1906 >1907 quaternion<T> quaternion_type_converter(quaternion<U> const & rhs)1908 {1909 return(quaternion<T>( static_cast<T>(rhs.R_component_1()),1910 static_cast<T>(rhs.R_component_2()),1911 static_cast<T>(rhs.R_component_3()),1912 static_cast<T>(rhs.R_component_4())));1913 }1914 }1915 1937 } 1916 1938 } 1917 1939 -
libs/math/doc/quaternion/math-quaternion.qbk
120 120 template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_division_operators operator /]`` (quaternion<T> const & lhs, ::std::complex<T> const & rhs); 121 121 template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.binary_division_operators operator /]`` (quaternion<T> const & lhs, quaternion<T> const & rhs); 122 122 123 template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.unary_plus operator +]`` (quaternion<T> const & q);124 template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.non_mem.unary_minus operator -]`` (quaternion<T> const & q);123 template<typename T> constexpr quaternion<T> ``[link boost_quaternions.quaternions.non_mem.unary_plus operator +]`` (quaternion<T> const & q); 124 template<typename T> constexpr quaternion<T> ``[link boost_quaternions.quaternions.non_mem.unary_minus operator -]`` (quaternion<T> const & q); 125 125 126 template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (T const & lhs, quaternion<T> const & rhs);127 template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (quaternion<T> const & lhs, T const & rhs);128 template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (::std::complex<T> const & lhs, quaternion<T> const & rhs);129 template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (quaternion<T> const & lhs, ::std::complex<T> const & rhs);130 template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (quaternion<T> const & lhs, quaternion<T> const & rhs);126 template<typename T> constexpr bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (T const & lhs, quaternion<T> const & rhs); 127 template<typename T> constexpr bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (quaternion<T> const & lhs, T const & rhs); 128 template<typename T> constexpr bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (::std::complex<T> const & lhs, quaternion<T> const & rhs); 129 template<typename T> constexpr bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (quaternion<T> const & lhs, ::std::complex<T> const & rhs); 130 template<typename T> constexpr bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (quaternion<T> const & lhs, quaternion<T> const & rhs); 131 131 132 template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (T const & lhs, quaternion<T> const & rhs);133 template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (quaternion<T> const & lhs, T const & rhs);134 template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (::std::complex<T> const & lhs, quaternion<T> const & rhs);135 template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (quaternion<T> const & lhs, ::std::complex<T> const & rhs);136 template<typename T> bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (quaternion<T> const & lhs, quaternion<T> const & rhs);132 template<typename T> constexpr bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (T const & lhs, quaternion<T> const & rhs); 133 template<typename T> constexpr bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (quaternion<T> const & lhs, T const & rhs); 134 template<typename T> constexpr bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (::std::complex<T> const & lhs, quaternion<T> const & rhs); 135 template<typename T> constexpr bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (quaternion<T> const & lhs, ::std::complex<T> const & rhs); 136 template<typename T> constexpr bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (quaternion<T> const & lhs, quaternion<T> const & rhs); 137 137 138 138 template<typename T, typename charT, class traits> 139 139 ::std::basic_istream<charT,traits>& ``[link boost_quaternions.quaternions.non_mem.stream_extractor operator >>]`` (::std::basic_istream<charT,traits> & is, quaternion<T> & q); … … 142 142 ::std::basic_ostream<charT,traits>& operator ``[link boost_quaternions.quaternions.non_mem.stream_inserter operator <<]`` (::std::basic_ostream<charT,traits> & os, quaternion<T> const & q); 143 143 144 144 // values 145 template<typename T> T ``[link boost_quaternions.quaternions.value_op.real_and_unreal real]``(quaternion<T> const & q);146 template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.value_op.real_and_unreal unreal]``(quaternion<T> const & q);145 template<typename T> constexpr T ``[link boost_quaternions.quaternions.value_op.real_and_unreal real]``(quaternion<T> const & q); 146 template<typename T> constexpr quaternion<T> ``[link boost_quaternions.quaternions.value_op.real_and_unreal unreal]``(quaternion<T> const & q); 147 147 148 148 template<typename T> T ``[link boost_quaternions.quaternions.value_op.sup sup]``(quaternion<T> const & q); 149 149 template<typename T> T ``[link boost_quaternions.quaternions.value_op.l1 l1]``(quaternion<T> const & q); 150 150 template<typename T> T ``[link boost_quaternions.quaternions.value_op.abs abs]``(quaternion<T> const & q); 151 template<typename T> T ``[link boost_quaternions.quaternions.value_op.norm norm]``(quaternion<T>const & q);152 template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.value_op.conj conj]``(quaternion<T> const & q);151 template<typename T> /*constexpr*/ T ``[link boost_quaternions.quaternions.value_op.norm norm]``(quaternion<T>const & q); 152 template<typename T> constexpr quaternion<T> ``[link boost_quaternions.quaternions.value_op.conj conj]``(quaternion<T> const & q); 153 153 154 154 template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.creation_spherical spherical]``(T const & rho, T const & theta, T const & phi1, T const & phi2); 155 155 template<typename T> quaternion<T> ``[link boost_quaternions.quaternions.creation_semipolar semipolar]``(T const & rho, T const & alpha, T const & theta1, T const & theta2); … … 183 183 184 184 typedef T ``[link boost_quaternions.quaternions.mem_typedef value_type]``; 185 185 186 explicit``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T());187 explicit``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>());186 constexpr ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T()); 187 constexpr ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>()); 188 188 template<typename X> 189 explicit``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<X> const & a_recopier);189 constexpr ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<X> const & a_recopier); 190 190 191 T ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const;192 quaternion<T> ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const;193 T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const;194 T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const;195 T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const;196 T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const;197 ::std::complex<T> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const;198 ::std::complex<T> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const;191 constexpr T ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const; 192 constexpr quaternion<T> ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const; 193 constexpr T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const; 194 constexpr T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const; 195 constexpr T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const; 196 constexpr T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const; 197 constexpr ::std::complex<T> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const; 198 constexpr ::std::complex<T> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const; 199 199 200 200 quaternion<T>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion<T> const & a_affecter); 201 201 template<typename X> … … 239 239 public: 240 240 typedef float ``[link boost_quaternions.quaternions.mem_typedef value_type]``; 241 241 242 explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f);243 explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex<float> const & z0, ::std::complex<float> const & z1 = ::std::complex<float>());244 explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<double> const & a_recopier);245 explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<long double> const & a_recopier);242 constexpr ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f) noexcept; 243 constexpr ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex<float> const & z0, ::std::complex<float> const & z1 = ::std::complex<float>()) noexcept; 244 constexpr explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<double> const & a_recopier) noexcept; 245 constexpr explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<long double> const & a_recopier) noexcept; 246 246 247 float ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const;248 quaternion<float> ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const;249 float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const;250 float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const;251 float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const;252 float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const;253 ::std::complex<float> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const;254 ::std::complex<float> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const;247 constexpr float ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const; 248 constexpr quaternion<float> ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const; 249 constexpr float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const; 250 constexpr float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const; 251 constexpr float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const; 252 constexpr float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const; 253 constexpr ::std::complex<float> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const; 254 constexpr ::std::complex<float> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const; 255 255 256 256 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion<float> const & a_affecter); 257 257 template<typename X> … … 259 259 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(float const & a_affecter); 260 260 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(::std::complex<float> const & a_affecter); 261 261 262 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(float const & rhs) ;263 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex<float> const & rhs) ;262 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(float const & rhs) noexcept; 263 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex<float> const & rhs) noexcept; 264 264 template<typename X> 265 265 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(quaternion<X> const & rhs); 266 266 267 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(float const & rhs) ;268 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex<float> const & rhs) ;267 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(float const & rhs) noexcept; 268 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex<float> const & rhs) noexcept; 269 269 template<typename X> 270 270 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(quaternion<X> const & rhs); 271 271 272 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(float const & rhs) ;273 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex<float> const & rhs) ;272 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(float const & rhs) noexcept; 273 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex<float> const & rhs) noexcept; 274 274 template<typename X> 275 275 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(quaternion<X> const & rhs); 276 276 277 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(float const & rhs) ;277 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(float const & rhs) noexcept; 278 278 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(::std::complex<float> const & rhs); 279 279 template<typename X> 280 280 quaternion<float>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(quaternion<X> const & rhs); … … 288 288 public: 289 289 typedef double ``[link boost_quaternions.quaternions.mem_typedef value_type]``; 290 290 291 explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0);292 explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>());293 explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<float> const & a_recopier);294 explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<long double> const & a_recopier);291 constexpr ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0) noexcept; 292 constexpr ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>()) noexcept; 293 constexpr ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<float> const & a_recopier) noexcept; 294 constexpr explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<long double> const & a_recopier) noexcept; 295 295 296 double ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const;297 quaternion<double> ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const;298 double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const;299 double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const;300 double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const;301 double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const;302 ::std::complex<double> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const;303 ::std::complex<double> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const;296 constexpr double ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const; 297 constexpr quaternion<double> ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const; 298 constexpr double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const; 299 constexpr double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const; 300 constexpr double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const; 301 constexpr double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const; 302 constexpr ::std::complex<double> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const; 303 constexpr ::std::complex<double> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const; 304 304 305 305 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion<double> const & a_affecter); 306 306 template<typename X> … … 308 308 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(double const & a_affecter); 309 309 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(::std::complex<double> const & a_affecter); 310 310 311 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(double const & rhs) ;312 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex<double> const & rhs) ;311 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(double const & rhs) noexcept; 312 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex<double> const & rhs) noexcept; 313 313 template<typename X> 314 314 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(quaternion<X> const & rhs); 315 315 316 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(double const & rhs) ;317 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex<double> const & rhs) ;316 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(double const & rhs) noexcept; 317 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex<double> const & rhs) noexcept; 318 318 template<typename X> 319 319 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(quaternion<X> const & rhs); 320 320 321 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(double const & rhs) ;322 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex<double> const & rhs) ;321 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(double const & rhs) noexcept; 322 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex<double> const & rhs) noexcept; 323 323 template<typename X> 324 324 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(quaternion<X> const & rhs); 325 325 326 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(double const & rhs) ;326 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(double const & rhs) noexcept; 327 327 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(::std::complex<double> const & rhs); 328 328 template<typename X> 329 329 quaternion<double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(quaternion<X> const & rhs); … … 337 337 public: 338 338 typedef long double ``[link boost_quaternions.quaternions.mem_typedef value_type]``; 339 339 340 explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L);341 explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>());342 explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<float> const & a_recopier);343 explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<double> const & a_recopier);340 constexpr ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L) noexcept; 341 constexpr ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>()) noexcept; 342 constexpr ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<float> const & a_recopier) noexcept; 343 constexpr ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion<double> const & a_recopier) noexcept; 344 344 345 long double ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const;346 quaternion<long double> ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const;347 long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const;348 long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const;349 long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const;350 long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const;351 ::std::complex<long double> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const;352 ::std::complex<long double> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const;345 constexpr long double ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const; 346 constexpr quaternion<long double> ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const; 347 constexpr long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const; 348 constexpr long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const; 349 constexpr long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const; 350 constexpr long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const; 351 constexpr ::std::complex<long double> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const; 352 constexpr ::std::complex<long double> ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const; 353 353 354 354 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion<long double> const & a_affecter); 355 355 template<typename X> … … 357 357 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(long double const & a_affecter); 358 358 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(::std::complex<long double> const & a_affecter); 359 359 360 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(long double const & rhs) ;361 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex<long double> const & rhs) ;360 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(long double const & rhs) noexcept; 361 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex<long double> const & rhs) noexcept; 362 362 template<typename X> 363 363 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(quaternion<X> const & rhs); 364 364 365 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(long double const & rhs) ;366 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex<long double> const & rhs) ;365 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(long double const & rhs) noexcept; 366 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex<long double> const & rhs) noexcept; 367 367 template<typename X> 368 368 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(quaternion<X> const & rhs); 369 369 370 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(long double const & rhs) ;371 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex<long double> const & rhs) ;370 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(long double const & rhs) noexcept; 371 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex<long double> const & rhs) noexcept; 372 372 template<typename X> 373 373 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(quaternion<X> const & rhs); 374 374 375 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(long double const & rhs) ;375 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(long double const & rhs) noexcept; 376 376 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(::std::complex<long double> const & rhs); 377 377 template<typename X> 378 378 quaternion<long double>& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(quaternion<X> const & rhs); … … 412 412 413 413 Template version: 414 414 415 explicitquaternion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T());416 explicitquaternion(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>());415 constexpr quaternion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T()); 416 constexpr quaternion(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>()); 417 417 template<typename X> 418 explicitquaternion(quaternion<X> const & a_recopier);418 constexpr quaternion(quaternion<X> const & a_recopier); 419 419 420 420 Float specialization version: 421 421 422 explicit quaternion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f);423 explicit quaternion(::std::complex<float> const & z0,::std::complex<float> const & z1 = ::std::complex<float>());424 explicit quaternion(quaternion<double> const & a_recopier);425 explicit quaternion(quaternion<long double> const & a_recopier);422 constexpr quaternion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f) noexcept; 423 constexpr quaternion(::std::complex<float> const & z0,::std::complex<float> const & z1 = ::std::complex<float>()) noexcept; 424 constexpr explicit quaternion(quaternion<double> const & a_recopier) noexcept; 425 constexpr explicit quaternion(quaternion<long double> const & a_recopier) noexcept; 426 426 427 427 Double specialization version: 428 428 429 explicit quaternion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0);430 explicit quaternion(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>());431 explicit quaternion(quaternion<float> const & a_recopier);432 explicit quaternion(quaternion<long double> const & a_recopier);429 constexpr quaternion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0) noexcept; 430 constexpr quaternion(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>()) noexcept; 431 constexpr quaternion(quaternion<float> const & a_recopier) noexcept; 432 constexpr explicit quaternion(quaternion<long double> const & a_recopier) noexcept; 433 433 434 434 Long double specialization version: 435 435 436 explicit quaternion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L);437 explicit quaternion( ::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>());438 explicit quaternion(quaternion<float> const & a_recopier);439 explicit quaternion(quaternion<double> const & a_recopier);436 constexpr quaternion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L) noexcept; 437 constexpr quaternion( ::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>()) noexcept; 438 constexpr quaternion(quaternion<float> const & a_recopier) noexcept; 439 constexpr quaternion(quaternion<double> const & a_recopier) noexcept; 440 440 441 441 A default constructor is provided for each form, which initializes 442 442 each component to the default values for their type … … 450 450 constructors must not throw. 451 451 452 452 Destructors and untemplated copy constructors (from the same type) are 453 provided by the compiler. Converting copy constructors make use of a 454 templated helper function in a "detail" subnamespace. 453 provided by the compiler. 455 454 456 455 [h3 Other member functions] 457 456 [h4 Real and Unreal Parts] -
libs/math/doc/octonion/math-octonion.qbk
121 121 template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs); 122 122 template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (octonion<T> const & lhs, octonion<T> const & rhs); 123 123 124 template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.unary_plus_and_minus_operators operator +]`` (octonion<T> const & o);125 template<typename T> octonion<T> ``[link boost_octonions.octonions.non_mem.unary_plus_and_minus_operators operator -]`` (octonion<T> const & o);124 template<typename T> constexpr octonion<T> ``[link boost_octonions.octonions.non_mem.unary_plus_and_minus_operators operator +]`` (octonion<T> const & o); 125 template<typename T> constexpr octonion<T> ``[link boost_octonions.octonions.non_mem.unary_plus_and_minus_operators operator -]`` (octonion<T> const & o); 126 126 127 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (T const & lhs, octonion<T> const & rhs);128 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion<T> const & lhs, T const & rhs);129 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (::std::complex<T> const & lhs, octonion<T> const & rhs);130 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion<T> const & lhs, ::std::complex<T> const & rhs);131 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);132 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);133 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion<T> const & lhs, octonion<T> const & rhs);127 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (T const & lhs, octonion<T> const & rhs); 128 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion<T> const & lhs, T const & rhs); 129 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (::std::complex<T> const & lhs, octonion<T> const & rhs); 130 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion<T> const & lhs, ::std::complex<T> const & rhs); 131 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs); 132 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs); 133 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion<T> const & lhs, octonion<T> const & rhs); 134 134 135 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (T const & lhs, octonion<T> const & rhs);136 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion<T> const & lhs, T const & rhs);137 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (::std::complex<T> const & lhs, octonion<T> const & rhs);138 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion<T> const & lhs, ::std::complex<T> const & rhs);139 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);140 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);141 template<typename T> bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion<T> const & lhs, octonion<T> const & rhs);135 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (T const & lhs, octonion<T> const & rhs); 136 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion<T> const & lhs, T const & rhs); 137 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (::std::complex<T> const & lhs, octonion<T> const & rhs); 138 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion<T> const & lhs, ::std::complex<T> const & rhs); 139 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs); 140 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs); 141 template<typename T> constexpr bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion<T> const & lhs, octonion<T> const & rhs); 142 142 143 143 template<typename T, typename charT, class traits> 144 144 ::std::basic_istream<charT,traits> & ``[link boost_octonions.octonions.non_mem.stream_extractor operator >>]`` (::std::basic_istream<charT,traits> & is, octonion<T> & o); … … 148 148 149 149 // values 150 150 151 template<typename T> T ``[link boost_octonions.octonions.octonion_value_operations.real_and_unreal real]``(octonion<T> const & o);152 template<typename T> octonion<T> ``[link boost_octonions.octonions.octonion_value_operations.real_and_unreal unreal]``(octonion<T> const & o);151 template<typename T> constexpr T ``[link boost_octonions.octonions.octonion_value_operations.real_and_unreal real]``(octonion<T> const & o); 152 template<typename T> constexpr octonion<T> ``[link boost_octonions.octonions.octonion_value_operations.real_and_unreal unreal]``(octonion<T> const & o); 153 153 154 154 template<typename T> T ``[link boost_octonions.octonions.octonion_value_operations.sup sup]``(octonion<T> const & o); 155 155 template<typename T> T ``[link boost_octonions.octonions.octonion_value_operations.l1 l1]``(octonion<T>const & o); 156 156 template<typename T> T ``[link boost_octonions.octonions.octonion_value_operations.abs abs]``(octonion<T> const & o); 157 template<typename T> T ``[link boost_octonions.octonions.octonion_value_operations.norm norm]``(octonion<T>const & o);158 template<typename T> octonion<T> ``[link boost_octonions.octonions.octonion_value_operations.conj conj]``(octonion<T> const & o);157 template<typename T> /*constexpr*/ T ``[link boost_octonions.octonions.octonion_value_operations.norm norm]``(octonion<T>const & o); 158 template<typename T> constexpr octonion<T> ``[link boost_octonions.octonions.octonion_value_operations.conj conj]``(octonion<T> const & o); 159 159 160 160 template<typename T> octonion<T> ``[link boost_octonions.octonions.oct_create spherical]``(T const & rho, T const & theta, T const & phi1, T const & phi2, T const & phi3, T const & phi4, T const & phi5, T const & phi6); 161 161 template<typename T> octonion<T> ``[link boost_octonions.octonions.oct_create multipolar]``(T const & rho1, T const & theta1, T const & rho2, T const & theta2, T const & rho3, T const & theta3, T const & rho4, T const & theta4); … … 187 187 public: 188 188 typedef T value_type; 189 189 190 explicit``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T(), T const & requested_e = T(), T const & requested_f = T(), T const & requested_g = T(), T const & requested_h = T());191 explicit``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>(), ::std::complex<T> const & z2 = ::std::complex<T>(), ::std::complex<T> const & z3 = ::std::complex<T>());192 explicit``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion<T> const & q0, ::boost::math::quaternion<T> const & q1 = ::boost::math::quaternion<T>());190 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T(), T const & requested_e = T(), T const & requested_f = T(), T const & requested_g = T(), T const & requested_h = T()); 191 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>(), ::std::complex<T> const & z2 = ::std::complex<T>(), ::std::complex<T> const & z3 = ::std::complex<T>()); 192 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion<T> const & q0, ::boost::math::quaternion<T> const & q1 = ::boost::math::quaternion<T>()); 193 193 template<typename X> 194 explicit``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<X> const & a_recopier);194 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<X> const & a_recopier); 195 195 196 T ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const;197 octonion<T> ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const;196 constexpr T ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const; 197 constexpr octonion<T> ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const; 198 198 199 T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const;200 T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const;201 T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const;202 T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const;203 T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const;204 T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const;205 T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const;206 T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const;199 constexpr T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const; 200 constexpr T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const; 201 constexpr T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const; 202 constexpr T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const; 203 constexpr T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const; 204 constexpr T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const; 205 constexpr T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const; 206 constexpr T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const; 207 207 208 ::std::complex<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const;209 ::std::complex<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const;210 ::std::complex<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const;211 ::std::complex<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const;208 constexpr ::std::complex<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const; 209 constexpr ::std::complex<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const; 210 constexpr ::std::complex<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const; 211 constexpr ::std::complex<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const; 212 212 213 ::boost::math::quaternion<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const;214 ::boost::math::quaternion<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const;213 constexpr ::boost::math::quaternion<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const; 214 constexpr ::boost::math::quaternion<T> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const; 215 215 216 216 octonion<T> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion<T> const & a_affecter); 217 217 template<typename X> … … 259 259 public: 260 260 typedef float value_type; 261 261 262 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f, float const & requested_e = 0.0f, float const & requested_f = 0.0f, float const & requested_g = 0.0f, float const & requested_h = 0.0f);263 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::std::complex<float> const & z0, ::std::complex<float> const & z1 = ::std::complex<float>(), ::std::complex<float> const & z2 = ::std::complex<float>(), ::std::complex<float> const & z3 = ::std::complex<float>());264 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion<float> const & q0, ::boost::math::quaternion<float> const & q1 = ::boost::math::quaternion<float>());265 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<double> const & a_recopier);266 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<long double> const & a_recopier);262 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f, float const & requested_e = 0.0f, float const & requested_f = 0.0f, float const & requested_g = 0.0f, float const & requested_h = 0.0f) noexcept; 263 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::std::complex<float> const & z0, ::std::complex<float> const & z1 = ::std::complex<float>(), ::std::complex<float> const & z2 = ::std::complex<float>(), ::std::complex<float> const & z3 = ::std::complex<float>()) noexcept; 264 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion<float> const & q0, ::boost::math::quaternion<float> const & q1 = ::boost::math::quaternion<float>()) noexcept; 265 constexpr explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<double> const & a_recopier) noexcept; 266 constexpr explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<long double> const & a_recopier) noexcept; 267 267 268 float ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const;269 octonion<float> ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const;268 constexpr float ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const ; 269 constexpr octonion<float> ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const; 270 270 271 float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const;272 float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const;273 float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const;274 float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const;275 float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const;276 float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const;277 float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const;278 float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const;271 constexpr float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const; 272 constexpr float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const; 273 constexpr float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const; 274 constexpr float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const; 275 constexpr float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const; 276 constexpr float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const; 277 constexpr float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const; 278 constexpr float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const; 279 279 280 ::std::complex<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const;281 ::std::complex<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const;282 ::std::complex<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const;283 ::std::complex<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const;280 constexpr ::std::complex<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const; 281 constexpr ::std::complex<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const; 282 constexpr ::std::complex<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const; 283 constexpr ::std::complex<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const; 284 284 285 ::boost::math::quaternion<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const;286 ::boost::math::quaternion<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const;285 constexpr ::boost::math::quaternion<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const; 286 constexpr ::boost::math::quaternion<float> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const; 287 287 288 288 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion<float> const & a_affecter); 289 289 template<typename X> … … 292 292 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex<float> const & a_affecter); 293 293 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion<float> const & a_affecter); 294 294 295 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (float const & rhs) ;296 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex<float> const & rhs) ;297 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion<float> const & rhs) ;295 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (float const & rhs) noexcept; 296 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex<float> const & rhs) noexcept; 297 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion<float> const & rhs) noexcept; 298 298 template<typename X> 299 299 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion<X> const & rhs); 300 300 301 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (float const & rhs) ;302 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex<float> const & rhs) ;303 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion<float> const & rhs) ;301 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (float const & rhs) noexcept; 302 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex<float> const & rhs) noexcept; 303 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion<float> const & rhs) noexcept; 304 304 template<typename X> 305 305 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion<X> const & rhs); 306 306 307 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (float const & rhs) ;308 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex<float> const & rhs) ;309 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion<float> const & rhs) ;307 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (float const & rhs) noexcept; 308 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex<float> const & rhs) noexcept; 309 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion<float> const & rhs) noexcept; 310 310 template<typename X> 311 311 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion<X> const & rhs); 312 312 313 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (float const & rhs) ;313 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (float const & rhs) noexcept; 314 314 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex<float> const & rhs); 315 315 octonion<float> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion<float> const & rhs); 316 316 template<typename X> … … 325 325 public: 326 326 typedef double value_type; 327 327 328 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0, double const & requested_e = 0.0, double const & requested_f = 0.0, double const & requested_g = 0.0, double const & requested_h = 0.0);329 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>(), ::std::complex<double> const & z2 = ::std::complex<double>(), ::std::complex<double> const & z3 = ::std::complex<double>());330 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion<double> const & q0, ::boost::math::quaternion<double> const & q1 = ::boost::math::quaternion<double>());331 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<float> const & a_recopier);332 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<long double> const & a_recopier);328 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0, double const & requested_e = 0.0, double const & requested_f = 0.0, double const & requested_g = 0.0, double const & requested_h = 0.0) noexcept; 329 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>(), ::std::complex<double> const & z2 = ::std::complex<double>(), ::std::complex<double> const & z3 = ::std::complex<double>()) noexcept; 330 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion<double> const & q0, ::boost::math::quaternion<double> const & q1 = ::boost::math::quaternion<double>()) noexcept; 331 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<float> const & a_recopier) noexcept; 332 constexpr explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<long double> const & a_recopier) noexcept; 333 333 334 double ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const;335 octonion<double> ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const;334 constexpr double ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const; 335 constexpr octonion<double> ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const; 336 336 337 double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const;338 double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const;339 double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const;340 double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const;341 double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const;342 double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const;343 double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const;344 double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const;337 constexpr double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const; 338 constexpr double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const; 339 constexpr double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const; 340 constexpr double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const; 341 constexpr double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const; 342 constexpr double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const; 343 constexpr double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const; 344 constexpr double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const; 345 345 346 ::std::complex<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const;347 ::std::complex<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const;348 ::std::complex<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const;349 ::std::complex<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const;346 constexpr ::std::complex<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const; 347 constexpr ::std::complex<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const; 348 constexpr ::std::complex<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const; 349 constexpr ::std::complex<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const; 350 350 351 ::boost::math::quaternion<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const;352 ::boost::math::quaternion<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const;351 constexpr ::boost::math::quaternion<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const; 352 constexpr ::boost::math::quaternion<double> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const; 353 353 354 354 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion<double> const & a_affecter); 355 355 template<typename X> … … 358 358 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex<double> const & a_affecter); 359 359 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion<double> const & a_affecter); 360 360 361 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (double const & rhs) ;362 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex<double> const & rhs) ;363 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion<double> const & rhs) ;361 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (double const & rhs) noexcept; 362 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex<double> const & rhs) noexcept; 363 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion<double> const & rhs) noexcept; 364 364 template<typename X> 365 365 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion<X> const & rhs); 366 366 367 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (double const & rhs) ;368 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex<double> const & rhs) ;369 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion<double> const & rhs) ;367 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (double const & rhs) noexcept; 368 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex<double> const & rhs) noexcept; 369 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion<double> const & rhs) noexcept; 370 370 template<typename X> 371 371 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion<X> const & rhs); 372 372 373 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (double const & rhs) ;374 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex<double> const & rhs) ;375 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion<double> const & rhs) ;373 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (double const & rhs) noexcept; 374 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex<double> const & rhs) noexcept; 375 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion<double> const & rhs) noexcept; 376 376 template<typename X> 377 377 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion<X> const & rhs); 378 378 379 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (double const & rhs) ;379 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (double const & rhs) noexcept; 380 380 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex<double> const & rhs); 381 381 octonion<double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion<double> const & rhs); 382 382 template<typename X> … … 391 391 public: 392 392 typedef long double value_type; 393 393 394 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L, long double const & requested_e = 0.0L, long double const & requested_f = 0.0L, long double const & requested_g = 0.0L, long double const & requested_h = 0.0L);395 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``( ::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>(), ::std::complex<long double> const & z2 = ::std::complex<long double>(), ::std::complex<long double> const & z3 = ::std::complex<long double>());396 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``( ::boost::math::quaternion<long double> const & q0, ::boost::math::quaternion<long double> const & z1 = ::boost::math::quaternion<long double>());397 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<float> const & a_recopier);398 explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<double> const & a_recopier);394 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L, long double const & requested_e = 0.0L, long double const & requested_f = 0.0L, long double const & requested_g = 0.0L, long double const & requested_h = 0.0L) noexcept; 395 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``( ::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>(), ::std::complex<long double> const & z2 = ::std::complex<long double>(), ::std::complex<long double> const & z3 = ::std::complex<long double>()) noexcept; 396 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``( ::boost::math::quaternion<long double> const & q0, ::boost::math::quaternion<long double> const & z1 = ::boost::math::quaternion<long double>()) noexcept; 397 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<float> const & a_recopier) noexcept; 398 constexpr ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion<double> const & a_recopier) noexcept; 399 399 400 long double ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const;401 octonion<long double> ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const;400 constexpr long double ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const; 401 constexpr octonion<long double> ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const; 402 402 403 long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const;404 long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const;405 long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const;406 long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const;407 long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const;408 long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const;409 long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const;410 long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const;403 constexpr long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const; 404 constexpr long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const; 405 constexpr long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const; 406 constexpr long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const; 407 constexpr long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const; 408 constexpr long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const; 409 constexpr long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const; 410 constexpr long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const; 411 411 412 ::std::complex<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const;413 ::std::complex<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const;414 ::std::complex<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const;415 ::std::complex<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const;412 constexpr ::std::complex<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const; 413 constexpr ::std::complex<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const; 414 constexpr ::std::complex<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const; 415 constexpr ::std::complex<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const; 416 416 417 ::boost::math::quaternion<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const;418 ::boost::math::quaternion<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const;417 constexpr ::boost::math::quaternion<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const; 418 constexpr ::boost::math::quaternion<long double> ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const; 419 419 420 420 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion<long double> const & a_affecter); 421 421 template<typename X> … … 424 424 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex<long double> const & a_affecter); 425 425 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion<long double> const & a_affecter); 426 426 427 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (long double const & rhs) ;428 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex<long double> const & rhs) ;429 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion<long double> const & rhs) ;427 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (long double const & rhs) noexcept; 428 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex<long double> const & rhs) noexcept; 429 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion<long double> const & rhs) noexcept; 430 430 template<typename X> 431 431 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion<X> const & rhs); 432 432 433 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (long double const & rhs) ;434 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex<long double> const & rhs) ;435 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion<long double> const & rhs) ;433 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (long double const & rhs) noexcept; 434 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex<long double> const & rhs) noexcept; 435 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion<long double> const & rhs) noexcept; 436 436 template<typename X> 437 437 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion<X> const & rhs); 438 438 439 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (long double const & rhs) ;440 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex<long double> const & rhs) ;441 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion<long double> const & rhs) ;439 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (long double const & rhs) noexcept; 440 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex<long double> const & rhs) noexcept; 441 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion<long double> const & rhs) noexcept; 442 442 template<typename X> 443 443 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion<X> const & rhs); 444 444 445 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (long double const & rhs) ;445 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (long double const & rhs) noexcept; 446 446 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex<long double> const & rhs); 447 447 octonion<long double> & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion<long double> const & rhs); 448 448 template<typename X> … … 483 483 484 484 Template version: 485 485 486 explicitoctonion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T(), T const & requested_e = T(), T const & requested_f = T(), T const & requested_g = T(), T const & requested_h = T());487 explicitoctonion(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>(), ::std::complex<T> const & z2 = ::std::complex<T>(), ::std::complex<T> const & z3 = ::std::complex<T>());488 explicitoctonion(::boost::math::quaternion<T> const & q0, ::boost::math::quaternion<T> const & q1 = ::boost::math::quaternion<T>());486 constexpr octonion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T(), T const & requested_e = T(), T const & requested_f = T(), T const & requested_g = T(), T const & requested_h = T()); 487 constexpr octonion(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>(), ::std::complex<T> const & z2 = ::std::complex<T>(), ::std::complex<T> const & z3 = ::std::complex<T>()); 488 constexpr octonion(::boost::math::quaternion<T> const & q0, ::boost::math::quaternion<T> const & q1 = ::boost::math::quaternion<T>()); 489 489 template<typename X> 490 explicitoctonion(octonion<X> const & a_recopier);490 constexpr octonion(octonion<X> const & a_recopier); 491 491 492 492 Float specialization version: 493 493 494 explicit octonion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f, float const & requested_e = 0.0f, float const & requested_f = 0.0f, float const & requested_g = 0.0f, float const & requested_h = 0.0f);495 explicit octonion(::std::complex<float> const & z0, ::std::complex<float> const & z1 = ::std::complex<float>(), ::std::complex<float> const & z2 = ::std::complex<float>(), ::std::complex<float> const & z3 = ::std::complex<float>());496 explicit octonion(::boost::math::quaternion<float> const & q0, ::boost::math::quaternion<float> const & q1 = ::boost::math::quaternion<float>());497 explicit octonion(octonion<double> const & a_recopier);498 explicit octonion(octonion<long double> const & a_recopier);494 constexpr octonion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f, float const & requested_e = 0.0f, float const & requested_f = 0.0f, float const & requested_g = 0.0f, float const & requested_h = 0.0f) noexcept; 495 constexpr octonion(::std::complex<float> const & z0, ::std::complex<float> const & z1 = ::std::complex<float>(), ::std::complex<float> const & z2 = ::std::complex<float>(), ::std::complex<float> const & z3 = ::std::complex<float>()) noexcept; 496 constexpr octonion(::boost::math::quaternion<float> const & q0, ::boost::math::quaternion<float> const & q1 = ::boost::math::quaternion<float>()) noexcept; 497 constexpr explicit octonion(octonion<double> const & a_recopier) noexcept; 498 constexpr explicit octonion(octonion<long double> const & a_recopier) noexcept; 499 499 500 500 Double specialization version: 501 501 502 explicit octonion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0, double const & requested_e = 0.0, double const & requested_f = 0.0, double const & requested_g = 0.0, double const & requested_h = 0.0);503 explicit octonion(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>(), ::std::complex<double> const & z2 = ::std::complex<double>(), ::std::complex<double> const & z3 = ::std::complex<double>());504 explicit octonion(::boost::math::quaternion<double> const & q0, ::boost::math::quaternion<double> const & q1 = ::boost::math::quaternion<double>());505 explicit octonion(octonion<float> const & a_recopier);506 explicit octonion(octonion<long double> const & a_recopier);502 constexpr octonion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0, double const & requested_e = 0.0, double const & requested_f = 0.0, double const & requested_g = 0.0, double const & requested_h = 0.0) noexcept; 503 constexpr octonion(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>(), ::std::complex<double> const & z2 = ::std::complex<double>(), ::std::complex<double> const & z3 = ::std::complex<double>()) noexcept; 504 constexpr octonion(::boost::math::quaternion<double> const & q0, ::boost::math::quaternion<double> const & q1 = ::boost::math::quaternion<double>()) noexcept; 505 constexpr octonion(octonion<float> const & a_recopier) noexcept; 506 constexpr explicit octonion(octonion<long double> const & a_recopier) noexcept; 507 507 508 508 Long double specialization version: 509 509 510 explicit octonion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L, long double const & requested_e = 0.0L, long double const & requested_f = 0.0L, long double const & requested_g = 0.0L, long double const & requested_h = 0.0L);511 explicit octonion( ::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>(), ::std::complex<long double> const & z2 = ::std::complex<long double>(), ::std::complex<long double> const & z3 = ::std::complex<long double>());512 explicit octonion(::boost::math::quaternion<long double> const & q0, ::boost::math::quaternion<long double> const & q1 = ::boost::math::quaternion<long double>());513 explicit octonion(octonion<float> const & a_recopier);514 explicit octonion(octonion<double> const & a_recopier);510 constexpr octonion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L, long double const & requested_e = 0.0L, long double const & requested_f = 0.0L, long double const & requested_g = 0.0L, long double const & requested_h = 0.0L) noexcept; 511 constexpr octonion( ::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>(), ::std::complex<long double> const & z2 = ::std::complex<long double>(), ::std::complex<long double> const & z3 = ::std::complex<long double>()) noexcept; 512 constexpr octonion(::boost::math::quaternion<long double> const & q0, ::boost::math::quaternion<long double> const & q1 = ::boost::math::quaternion<long double>()) noexcept; 513 constexpr octonion(octonion<float> const & a_recopier) noexcept; 514 constexpr octonion(octonion<double> const & a_recopier) noexcept; 515 515 516 516 A default constructor is provided for each form, which initializes each component 517 517 to the default values for their type (i.e. zero for floating numbers). … … 525 525 the base type's constructors must not throw. 526 526 527 527 Destructors and untemplated copy constructors (from the same type) 528 are provided by the compiler. Converting copy constructors make use 529 of a templated helper function in a "detail" subnamespace. 528 are provided by the compiler. 530 529 531 530 [h3 Other member functions] 532 531 … … 710 709 template<typename T> octonion<T> operator / (octonion<T> const & lhs, octonion<T> const & rhs); 711 710 712 711 These operators return `octonion<T>(lhs) /= rhs`. It is of course still an 713 error to divide by zero... 712 error to divide by zero.... 714 713 715 714 [h4 Binary Equality Operators] 716 715 … … 722 721 template<typename T> bool operator == (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs); 723 722 template<typename T> bool operator == (octonion<T> const & lhs, octonion<T> const & rhs); 724 723 725 These return true if and only if the fourcomponents of `octonion<T>(lhs)`724 These return true if and only if the eight components of `octonion<T>(lhs)` 726 725 are equal to their counterparts in `octonion<T>(rhs)`. As with any 727 726 floating-type entity, this is essentially meaningless. 728 727