diff DEPENDENCIES/generic/include/boost/math/octonion.hpp @ 101:c530137014c0

Update Boost headers (1.58.0)
author Chris Cannam
date Mon, 07 Sep 2015 11:12:49 +0100
parents 2665513ce2d3
children
line wrap: on
line diff
--- a/DEPENDENCIES/generic/include/boost/math/octonion.hpp	Fri Sep 04 12:01:02 2015 +0100
+++ b/DEPENDENCIES/generic/include/boost/math/octonion.hpp	Mon Sep 07 11:12:49 2015 +0100
@@ -18,23 +18,6 @@
 {
     namespace math
     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-        // gcc 2.95.x uses expression templates for valarray calculations, but
-        // the result is not conforming. We need BOOST_GET_VALARRAY to get an
-        // actual valarray result when we need to call a member function
-    #define    BOOST_GET_VALARRAY(T,x)    ::std::valarray<T>(x)
-        // gcc 2.95.x has an "std::ios" class that is similar to 
-        // "std::ios_base", so we just use a #define
-    #define    BOOST_IOS_BASE    ::std::ios
-        // gcc 2.x ignores function scope using declarations,
-        // put them in the scope of the enclosing namespace instead:
-        using    ::std::valarray;
-        using    ::std::sqrt;
-        using    ::std::cos;
-        using    ::std::sin;
-        using    ::std::exp;
-        using    ::std::cosh;
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
     
 #define    BOOST_OCTONION_ACCESSOR_GENERATOR(type)                      \
             type                        real() const                    \
@@ -958,48 +941,7 @@
                 return(*this);                                          \
             }
     
-#if defined(__GNUC__) && (__GNUC__ < 3)
-    #define    BOOST_OCTONION_MEMBER_DIV_GENERATOR_2(type)                                              \
-            octonion<type> &            operator /= (::std::complex<type> const & rhs)                  \
-            {                                                                                           \
-                using    ::std::valarray;                                                               \
-                                                                                                        \
-                valarray<type>    tr(2);                                                                \
-                                                                                                        \
-                tr[0] = rhs.real();                                                                     \
-                tr[1] = rhs.imag();                                                                     \
-                                                                                                        \
-                type            mixam = (BOOST_GET_VALARRAY(type,static_cast<type>(1)/abs(tr)).max)();  \
-                                                                                                        \
-                tr *= mixam;                                                                            \
-                                                                                                        \
-                valarray<type>    tt(8);                                                                \
-                                                                                                        \
-                tt[0] = +a*tr[0]-b*tr[1];                                                               \
-                tt[1] = -a*tr[1]+b*tr[0];                                                               \
-                tt[2] = +c*tr[0]-d*tr[1];                                                               \
-                tt[3] = +c*tr[1]+d*tr[0];                                                               \
-                tt[4] = +e*tr[0]-f*tr[1];                                                               \
-                tt[5] = +e*tr[1]+f*tr[0];                                                               \
-                tt[6] = +g*tr[0]+h*tr[1];                                                               \
-                tt[7] = +g*tr[1]+h*tr[0];                                                               \
-                                                                                                        \
-                tr *= tr;                                                                               \
-                                                                                                        \
-                tt *= (mixam/tr.sum());                                                                 \
-                                                                                                        \
-                a = tt[0];                                                                              \
-                b = tt[1];                                                                              \
-                c = tt[2];                                                                              \
-                d = tt[3];                                                                              \
-                e = tt[4];                                                                              \
-                f = tt[5];                                                                              \
-                g = tt[6];                                                                              \
-                h = tt[7];                                                                              \
-                                                                                                        \
-                return(*this);                                                                          \
-            }
-#elif    defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
+#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
     #define    BOOST_OCTONION_MEMBER_DIV_GENERATOR_2(type)                              \
             octonion<type> &            operator /= (::std::complex<type> const & rhs)  \
             {                                                                           \
@@ -1082,52 +1024,9 @@
                                                                                         \
                 return(*this);                                                          \
             }
-#endif    /* defined(__GNUC__) && (__GNUC__ < 3) */ /* BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP */
+#endif /* BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP */
     
-#if defined(__GNUC__) && (__GNUC__ < 3)
-    #define    BOOST_OCTONION_MEMBER_DIV_GENERATOR_3(type)                                           \
-            octonion<type> &            operator /= (::boost::math::quaternion<type> const & rhs)    \
-            {                                                                                        \
-                using    ::std::valarray;                                                            \
-                                                                                                     \
-                valarray<type>    tr(4);                                                             \
-                                                                                                     \
-                tr[0] = static_cast<type>(rhs.R_component_1());                                      \
-                tr[1] = static_cast<type>(rhs.R_component_2());                                      \
-                tr[2] = static_cast<type>(rhs.R_component_3());                                      \
-                tr[3] = static_cast<type>(rhs.R_component_4());                                      \
-                                                                                                     \
-                type           mixam = (BOOST_GET_VALARRAY(type,static_cast<type>(1)/abs(tr)).max)();\
-                                                                                                     \
-                tr *= mixam;                                                                         \
-                                                                                                     \
-                valarray<type>    tt(8);                                                             \
-                                                                                                     \
-                tt[0] = +a*tr[0]+b*tr[1]+c*tr[2]+d*tr[3];                                            \
-                tt[1] = -a*tr[1]+b*tr[0]-c*tr[3]+d*tr[2];                                            \
-                tt[2] = -a*tr[2]+b*tr[3]+c*tr[0]-d*tr[1];                                            \
-                tt[3] = -a*tr[3]-b*tr[2]+c*tr[1]+d*tr[0];                                            \
-                tt[4] = +e*tr[0]-f*tr[1]-g*tr[2]-h*tr[3];                                            \
-                tt[5] = +e*tr[1]+f*tr[0]+g*tr[3]-h*tr[2];                                            \
-                tt[6] = +e*tr[2]-f*tr[3]+g*tr[0]+h*tr[1];                                            \
-                tt[7] = +e*tr[3]+f*tr[2]-g*tr[1]+h*tr[0];                                            \
-                                                                                                     \
-                tr *= tr;                                                                            \
-                                                                                                     \
-                tt *= (mixam/tr.sum());                                                              \
-                                                                                                     \
-                a = tt[0];                                                                           \
-                b = tt[1];                                                                           \
-                c = tt[2];                                                                           \
-                d = tt[3];                                                                           \
-                e = tt[4];                                                                           \
-                f = tt[5];                                                                           \
-                g = tt[6];                                                                           \
-                h = tt[7];                                                                           \
-                                                                                                     \
-                return(*this);                                                                       \
-            }
-#elif    defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
+#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
     #define    BOOST_OCTONION_MEMBER_DIV_GENERATOR_3(type)                                           \
             octonion<type> &            operator /= (::boost::math::quaternion<type> const & rhs)    \
             {                                                                                        \
@@ -1214,57 +1113,9 @@
                                                                                                      \
                 return(*this);                                                                       \
             }
-#endif    /* defined(__GNUC__) && (__GNUC__ < 3) */ /* BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP */
+#endif /* BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP */
     
-#if defined(__GNUC__) && (__GNUC__ < 3)
-    #define    BOOST_OCTONION_MEMBER_DIV_GENERATOR_4(type)                                           \
-            template<typename X>                                                                     \
-            octonion<type> &            operator /= (octonion<X> const & rhs)                        \
-            {                                                                                        \
-                using    ::std::valarray;                                                            \
-                                                                                                     \
-                valarray<type>    tr(8);                                                             \
-                                                                                                     \
-                tr[0] = static_cast<type>(rhs.R_component_1());                                      \
-                tr[1] = static_cast<type>(rhs.R_component_2());                                      \
-                tr[2] = static_cast<type>(rhs.R_component_3());                                      \
-                tr[3] = static_cast<type>(rhs.R_component_4());                                      \
-                tr[4] = static_cast<type>(rhs.R_component_5());                                      \
-                tr[5] = static_cast<type>(rhs.R_component_6());                                      \
-                tr[6] = static_cast<type>(rhs.R_component_7());                                      \
-                tr[7] = static_cast<type>(rhs.R_component_8());                                      \
-                                                                                                     \
-                type           mixam = (BOOST_GET_VALARRAY(type,static_cast<type>(1)/abs(tr)).max)();\
-                                                                                                     \
-                tr *= mixam;                                                                         \
-                                                                                                     \
-                valarray<type>    tt(8);                                                             \
-                                                                                                     \
-                tt[0] = +a*tr[0]+b*tr[1]+c*tr[2]+d*tr[3]+e*tr[4]+f*tr[5]+g*tr[6]+h*tr[7];            \
-                tt[1] = -a*tr[1]+b*tr[0]-c*tr[3]+d*tr[2]-e*tr[5]+f*tr[4]+g*tr[7]-h*tr[6];            \
-                tt[2] = -a*tr[2]+b*tr[3]+c*tr[0]-d*tr[1]-e*tr[6]-f*tr[7]+g*tr[4]+h*tr[5];            \
-                tt[3] = -a*tr[3]-b*tr[2]+c*tr[1]+d*tr[0]-e*tr[7]+f*tr[6]-g*tr[5]+h*tr[4];            \
-                tt[4] = -a*tr[4]+b*tr[5]+c*tr[6]+d*tr[7]+e*tr[0]-f*tr[1]-g*tr[2]-h*tr[3];            \
-                tt[5] = -a*tr[5]-b*tr[4]+c*tr[7]-d*tr[6]+e*tr[1]+f*tr[0]+g*tr[3]-h*tr[2];            \
-                tt[6] = -a*tr[6]-b*tr[7]-c*tr[4]+d*tr[5]+e*tr[2]-f*tr[3]+g*tr[0]+h*tr[1];            \
-                tt[7] = -a*tr[7]+b*tr[6]-c*tr[5]-d*tr[4]+e*tr[3]+f*tr[2]-g*tr[1]+h*tr[0];            \
-                                                                                                     \
-                tr *= tr;                                                                            \
-                                                                                                     \
-                tt *= (mixam/tr.sum());                                                              \
-                                                                                                     \
-                a = tt[0];                                                                           \
-                b = tt[1];                                                                           \
-                c = tt[2];                                                                           \
-                d = tt[3];                                                                           \
-                e = tt[4];                                                                           \
-                f = tt[5];                                                                           \
-                g = tt[6];                                                                           \
-                h = tt[7];                                                                           \
-                                                                                                     \
-                return(*this);                                                                       \
-            }
-#elif    defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
+#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
     #define    BOOST_OCTONION_MEMBER_DIV_GENERATOR_4(type)                                           \
             template<typename X>                                                                     \
             octonion<type> &            operator /= (octonion<X> const & rhs)                        \
@@ -1361,7 +1212,7 @@
                                                                                                      \
                 return(*this);                                                                       \
             }
-#endif    /* defined(__GNUC__) && (__GNUC__ < 3) */ /* BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP */
+#endif /* BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP */
     
     
 #define    BOOST_OCTONION_MEMBER_ADD_GENERATOR(type)       \
@@ -1856,21 +1707,10 @@
         
         // Note:    the default values in the constructors of the complex and quaternions make for
         //            a very complex and ambiguous situation; we have made choices to disambiguate.
-        
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-        template<typename T>
-        ::std::istream &                        operator >> (    ::std::istream & is,
-                                                                octonion<T>& o)
-#else
         template<typename T, typename charT, class traits>
         ::std::basic_istream<charT,traits> &    operator >> (    ::std::basic_istream<charT,traits> & is,
                                                                 octonion<T> & o)
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-            typedef    char    charT;
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
-            
 #ifdef     BOOST_NO_STD_LOCALE
 #else
             const ::std::ctype<charT> & ct = ::std::use_facet< ::std::ctype<charT> >(is.getloc());
@@ -1988,20 +1828,12 @@
                                 }
                                 else                                    // error
                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                    is.setstate(::std::ios::failbit);
-#else
                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                 }
                             }
                             else                                    // error
                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                is.setstate(::std::ios::failbit);
-#else
                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                             }
                         }
                         else if    (cc ==',')                        // read "((u,"
@@ -2060,38 +1892,22 @@
                                     }
                                     else                                    // error
                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                        is.setstate(::std::ios::failbit);
-#else
                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                     }
                                 }
                                 else                                    // error
                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                    is.setstate(::std::ios::failbit);
-#else
                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                 }
                             }
                             else                                    // error
                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                is.setstate(::std::ios::failbit);
-#else
                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                             }
                         }
                         else                                    // error
                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                            is.setstate(::std::ios::failbit);
-#else
                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                         }
                     }
                     else                                        // read "((a"
@@ -2180,11 +1996,7 @@
                                         }
                                         else                                        // error
                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                            is.setstate(::std::ios::failbit);
-#else
                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                         }
                                     }
                                     else                                        // read "((a),(c" or "((a),(e"
@@ -2267,29 +2079,17 @@
                                                     }
                                                     else                                    // error
                                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                        is.setstate(::std::ios::failbit);
-#else
                                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                     }
                                                 }
                                                 else                                    // error
                                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                    is.setstate(::std::ios::failbit);
-#else
                                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                 }
                                             }
                                             else                                    // error
                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                is.setstate(::std::ios::failbit);
-#else
                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                             }
                                         }
                                         else if    (cc == ',')                            // read "((a),(c," or "((a),(e,"
@@ -2342,20 +2142,12 @@
                                                     }
                                                     else                                    // error
                                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                        is.setstate(::std::ios::failbit);
-#else
                                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                     }
                                                 }
                                                 else                                    // error
                                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                    is.setstate(::std::ios::failbit);
-#else
                                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                 }
                                             }
                                             else                                    // read "((a),(c,d" or "((a),(e,f"
@@ -2438,29 +2230,17 @@
                                                             }
                                                             else                                    // error
                                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                                is.setstate(::std::ios::failbit);
-#else
                                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                             }
                                                         }
                                                         else                                    // error
                                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                            is.setstate(::std::ios::failbit);
-#else
                                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                         }
                                                     }
                                                     else                                    // error
                                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                        is.setstate(::std::ios::failbit);
-#else
                                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                     }
                                                 }
                                                 else if    (cc == ',')                        // read "((a),(e,f," (ambiguity resolution)
@@ -2501,11 +2281,7 @@
                                                         }
                                                         else                                    // error
                                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                            is.setstate(::std::ios::failbit);
-#else
                                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                         }
                                                     }
                                                     else if    (cc == ',')                        // read "((a),(e,f,g,"
@@ -2544,48 +2320,28 @@
                                                             }
                                                             else                                    // error
                                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                                is.setstate(::std::ios::failbit);
-#else
                                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                             }
                                                         }
                                                         else                                    // error
                                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                            is.setstate(::std::ios::failbit);
-#else
                                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                         }
                                                     }
                                                     else                                    // error
                                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                        is.setstate(::std::ios::failbit);
-#else
                                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                     }
                                                 }
                                                 else                                    // error
                                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                    is.setstate(::std::ios::failbit);
-#else
                                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                 }
                                             }
                                         }
                                         else                                        // error
                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                            is.setstate(::std::ios::failbit);
-#else
                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                         }
                                     }
                                 }
@@ -2651,39 +2407,23 @@
                                             }
                                             else                                        // error
                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                is.setstate(::std::ios::failbit);
-#else
                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                             }
                                         }
                                         else                                        // error
                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                            is.setstate(::std::ios::failbit);
-#else
                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                         }
                                     }
                                     else                                        // error
                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                        is.setstate(::std::ios::failbit);
-#else
                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                     }
                                 }
                             }
                             else                                        // error
                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                is.setstate(::std::ios::failbit);
-#else
                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                             }
                         }
                         else if    (cc ==',')                            // read "((a,"
@@ -2758,29 +2498,17 @@
                                         }
                                         else                                        // error
                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                            is.setstate(::std::ios::failbit);
-#else
                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                         }
                                     }
                                     else                                        // error
                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                        is.setstate(::std::ios::failbit);
-#else
                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                     }
                                 }
                                 else                                        // error
                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                    is.setstate(::std::ios::failbit);
-#else
                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                 }
                             }
                             else
@@ -2869,11 +2597,7 @@
                                                 }
                                                 else                                        // error
                                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                    is.setstate(::std::ios::failbit);
-#else
                                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                 }
                                             }
                                             else                                        // read "((a,b),(c" or "((a,b),(e"
@@ -2956,29 +2680,17 @@
                                                             }
                                                             else                                        // error
                                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                                is.setstate(::std::ios::failbit);
-#else
                                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                             }
                                                         }
                                                         else                                        // error
                                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                            is.setstate(::std::ios::failbit);
-#else
                                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                         }
                                                     }
                                                     else                                        // error
                                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                        is.setstate(::std::ios::failbit);
-#else
                                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                     }
                                                 }
                                                 else if    (cc == ',')                            // read "((a,b),(c," or "((a,b),(e,"
@@ -3033,20 +2745,12 @@
                                                             }
                                                             else                                        // error
                                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                                is.setstate(::std::ios::failbit);
-#else
                                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                             }
                                                         }
                                                         else                                        // error
                                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                            is.setstate(::std::ios::failbit);
-#else
                                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                         }
                                                     }
                                                     else                                        // read "((a,b),(c,d" or "((a,b),(e,f"
@@ -3129,29 +2833,17 @@
                                                                     }
                                                                     else                                        // error
                                                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                                        is.setstate(::std::ios::failbit);
-#else
                                                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                                     }
                                                                 }
                                                                 else                                        // error
                                                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                                    is.setstate(::std::ios::failbit);
-#else
                                                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                                 }
                                                             }
                                                             else                                        // error
                                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                                is.setstate(::std::ios::failbit);
-#else
                                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                             }
                                                         }
                                                         else if    (cc == ',')                            // read "((a,b),(e,f," (ambiguity resolution)
@@ -3192,11 +2884,7 @@
                                                                 }
                                                                 else                                        // error
                                                                 {
-#if BOOST_WORKAROUND(__GNUC__, < 3)
-                                                                    is.setstate(::std::ios::failbit);
-#else
                                                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                                 }
                                                             }
                                                             else if    (cc == ',')                            // read "((a,b),(e,f,g,"
@@ -3235,67 +2923,39 @@
                                                                     }
                                                                     else                                        // error
                                                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                                        is.setstate(::std::ios::failbit);
-#else
                                                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                                     }
                                                                 }
                                                                 else                                        // error
                                                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                                    is.setstate(::std::ios::failbit);
-#else
                                                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                                 }
                                                             }
                                                             else                                        // error
                                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                                is.setstate(::std::ios::failbit);
-#else
                                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                             }
                                                         }
                                                         else                                        // error
                                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                            is.setstate(::std::ios::failbit);
-#else
                                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                         }
                                                     }
                                                 }
                                                 else                                        // error
                                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                    is.setstate(::std::ios::failbit);
-#else
                                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                 }
                                             }
                                         }
                                         else                                        // error
                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                            is.setstate(::std::ios::failbit);
-#else
                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                         }
                                     }
                                     else                                        // error
                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                        is.setstate(::std::ios::failbit);
-#else
                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                     }
                                 }
                                 else if    (cc == ',')                            // read "((a,b,"
@@ -3354,20 +3014,12 @@
                                             }
                                             else                                        // error
                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                is.setstate(::std::ios::failbit);
-#else
                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                             }
                                         }
                                         else                                        // error
                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                            is.setstate(::std::ios::failbit);
-#else
                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                         }
                                     }
                                     else if    (cc == ',')                            // read "((a,b,c,"
@@ -3426,57 +3078,33 @@
                                                 }
                                                 else                                        // error
                                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                    is.setstate(::std::ios::failbit);
-#else
                                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                 }
                                             }
                                             else                                        // error
                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                is.setstate(::std::ios::failbit);
-#else
                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                             }
                                         }
                                         else                                        // error
                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                            is.setstate(::std::ios::failbit);
-#else
                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                         }
                                     }
                                     else                                        // error
                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                        is.setstate(::std::ios::failbit);
-#else
                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                     }
                                 }
                                 else                                        // error
                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                    is.setstate(::std::ios::failbit);
-#else
                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                 }
                             }
                         }
                         else                                        // error
                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                            is.setstate(::std::ios::failbit);
-#else
                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                         }
                     }
                 }
@@ -3554,11 +3182,7 @@
                                 }
                                 else                                        // error
                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                    is.setstate(::std::ios::failbit);
-#else
                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                 }
                             }
                             else                                        // read "(a,(c" or "(a,(e"
@@ -3641,29 +3265,17 @@
                                             }
                                             else                                        // error
                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                is.setstate(::std::ios::failbit);
-#else
                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                             }
                                         }
                                         else                                        // error
                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                            is.setstate(::std::ios::failbit);
-#else
                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                         }
                                     }
                                     else                                        // error
                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                        is.setstate(::std::ios::failbit);
-#else
                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                     }
                                 }
                                 else if    (cc == ',')                            // read "(a,(c," or "(a,(e,"
@@ -3718,20 +3330,12 @@
                                             }
                                             else                                        // error
                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                is.setstate(::std::ios::failbit);
-#else
                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                             }
                                         }
                                         else                                        // error
                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                            is.setstate(::std::ios::failbit);
-#else
                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                         }
                                     }
                                     else                                        // read "(a,(c,d" or "(a,(e,f"
@@ -3814,29 +3418,17 @@
                                                     }
                                                     else                                        // error
                                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                        is.setstate(::std::ios::failbit);
-#else
                                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                     }
                                                 }
                                                 else                                        // error
                                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                    is.setstate(::std::ios::failbit);
-#else
                                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                 }
                                             }
                                             else                                        // error
                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                is.setstate(::std::ios::failbit);
-#else
                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                             }
                                         }
                                         else if    (cc == ',')                            // read "(a,(e,f," (ambiguity resolution)
@@ -3877,11 +3469,7 @@
                                                 }
                                                 else                                        // error
                                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                    is.setstate(::std::ios::failbit);
-#else
                                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                 }
                                             }
                                             else if    (cc == ',')                            // read "(a,(e,f,g,"
@@ -3920,48 +3508,28 @@
                                                     }
                                                     else                                        // error
                                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                        is.setstate(::std::ios::failbit);
-#else
                                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                     }
                                                 }
                                                 else                                        // error
                                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                    is.setstate(::std::ios::failbit);
-#else
                                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                 }
                                             }
                                             else                                        // error
                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                is.setstate(::std::ios::failbit);
-#else
                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                             }
                                         }
                                         else                                        // error
                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                            is.setstate(::std::ios::failbit);
-#else
                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                         }
                                     }
                                 }
                                 else                                        // error
                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                    is.setstate(::std::ios::failbit);
-#else
                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                 }
                             }
                         }
@@ -4047,20 +3615,12 @@
                                         }
                                         else                                        // error
                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                            is.setstate(::std::ios::failbit);
-#else
                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                         }
                                     }
                                     else                                        // error
                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                        is.setstate(::std::ios::failbit);
-#else
                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                     }
                                 }
                                 else                                        // read "(a,b,c" or "(a,c,e"
@@ -4127,11 +3687,7 @@
                                             }
                                             else                                        // error
                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                is.setstate(::std::ios::failbit);
-#else
                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                             }
                                         }
                                         else                                        // read "(a,b,c,d" (ambiguity resolution)
@@ -4238,77 +3794,45 @@
                                                             }
                                                             else                                        // error
                                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                                is.setstate(::std::ios::failbit);
-#else
                                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                             }
                                                         }
                                                         else                                        // error
                                                         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                            is.setstate(::std::ios::failbit);
-#else
                                                             is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                         }
                                                     }
                                                     else                                        // error
                                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                        is.setstate(::std::ios::failbit);
-#else
                                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                     }
                                                 }
                                                 else                                        // error
                                                 {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                    is.setstate(::std::ios::failbit);
-#else
                                                     is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                                 }
                                             }
                                             else                                        // error
                                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                                is.setstate(::std::ios::failbit);
-#else
                                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                             }
                                         }
                                     }
                                     else                                        // error
                                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                        is.setstate(::std::ios::failbit);
-#else
                                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                                     }
                                 }
                             }
                             else                                        // error
                             {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                                is.setstate(::std::ios::failbit);
-#else
                                 is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                             }
                         }
                     }
                     else                                        // error
                     {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-                        is.setstate(::std::ios::failbit);
-#else
                         is.setstate(::std::ios_base::failbit);
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
                     }
                 }
             }
@@ -4328,21 +3852,11 @@
         }
         
         
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-        template<typename T>
-        ::std::ostream &                        operator << (    ::std::ostream & os,
-                                                                octonion<T> const & o)
-#else
         template<typename T, typename charT, class traits>
         ::std::basic_ostream<charT,traits> &    operator << (    ::std::basic_ostream<charT,traits> & os,
                                                                 octonion<T> const & o)
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
         {
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-            ::std::ostringstream                        s;
-#else
             ::std::basic_ostringstream<charT,traits>    s;
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
             
             s.flags(os.flags());
 #ifdef    BOOST_NO_STD_LOCALE
@@ -4404,11 +3918,7 @@
             
             BOOST_OCTONION_VALARRAY_LOADER
             
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-            return((BOOST_GET_VALARRAY(T, abs(temp)).max)());
-#else
             return((abs(temp).max)());
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
         }
         
         
@@ -4421,11 +3931,7 @@
             
             BOOST_OCTONION_VALARRAY_LOADER
             
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-            return(BOOST_GET_VALARRAY(T, abs(temp)).sum());
-#else
             return(abs(temp).sum());
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
         }
         
         
@@ -4440,11 +3946,7 @@
             
             BOOST_OCTONION_VALARRAY_LOADER
             
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-            T            maxim = (BOOST_GET_VALARRAY(T,abs(temp)).max)();    // overflow protection
-#else
             T            maxim = (abs(temp).max)();    // overflow protection
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
             
             if    (maxim == static_cast<T>(0))
             {
@@ -4745,10 +4247,4 @@
     }
 }
 
-
-#if    BOOST_WORKAROUND(__GNUC__, < 3)
-    #undef    BOOST_GET_VALARRAY
-#endif /* BOOST_WORKAROUND(__GNUC__, < 3) */
-
-
 #endif /* BOOST_OCTONION_HPP */