← Back to team overview

yade-dev team mailing list archive

[Branch ~yade-pkg/yade/git-trunk] Rev 3975: Remove extra/floating_point_utilities_v3

 

------------------------------------------------------------
revno: 3975
committer: Anton Gladky <gladky.anton@xxxxxxxxx>
timestamp: Fri 2014-05-23 15:03:49 +0200
message:
  Remove extra/floating_point_utilities_v3
  
  This library is shipped in Boost since 1.47.0,
  no need to ship an embedded version any more.
removed:
  extra/
  extra/floating_point_utilities_v3/
  extra/floating_point_utilities_v3/README
  extra/floating_point_utilities_v3/boost/
  extra/floating_point_utilities_v3/boost/math/
  extra/floating_point_utilities_v3/boost/math/detail/
  extra/floating_point_utilities_v3/boost/math/detail/fp_traits.hpp
  extra/floating_point_utilities_v3/boost/math/fpclassify.hpp
  extra/floating_point_utilities_v3/boost/math/nonfinite_num_facets.hpp
  extra/floating_point_utilities_v3/boost/math/signbit.hpp
modified:
  CMakeLists.txt


--
lp:yade
https://code.launchpad.net/~yade-pkg/yade/git-trunk

Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-pkg/yade/git-trunk/+edit-subscription
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt	2014-05-08 07:11:18 +0000
+++ CMakeLists.txt	2014-05-23 13:03:49 +0000
@@ -87,6 +87,9 @@
 #===========================================================
 # Add possibility to use local boost installation (e.g. -DLocalBoost=1.46.1)
 
+IF ( NOT LocalBoost )
+  SET(LocalBoost "1.47.0") # Minimal required Boost version
+ENDIF ( NOT LocalBoost )
 FIND_PACKAGE(Boost ${LocalBoost} COMPONENTS python thread filesystem iostreams regex serialization system REQUIRED)
 INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIRS})
 # for checking purpose
@@ -324,7 +327,6 @@
 ENDIF(ENABLE_GL2PS)
 
 INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extra/floating_point_utilities_v3)
 INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR})
 
 #===========================================================

=== removed directory 'extra'
=== removed directory 'extra/floating_point_utilities_v3'
=== removed file 'extra/floating_point_utilities_v3/README'
--- extra/floating_point_utilities_v3/README	2010-04-19 10:18:42 +0000
+++ extra/floating_point_utilities_v3/README	1970-01-01 00:00:00 +0000
@@ -1,7 +0,0 @@
-Graceful handling of nan and inf in iostream
-
-Proposed for boost::math
-
-Downloaded from: http://www.boostpro.com/vault/index.php?action=downloadfile&filename=floating_point_utilities_v3.zip&directory=Math%20-%20Numerics&;
-
-stripped of documentation

=== removed directory 'extra/floating_point_utilities_v3/boost'
=== removed directory 'extra/floating_point_utilities_v3/boost/math'
=== removed directory 'extra/floating_point_utilities_v3/boost/math/detail'
=== removed file 'extra/floating_point_utilities_v3/boost/math/detail/fp_traits.hpp'
--- extra/floating_point_utilities_v3/boost/math/detail/fp_traits.hpp	2010-04-19 10:18:42 +0000
+++ extra/floating_point_utilities_v3/boost/math/detail/fp_traits.hpp	1970-01-01 00:00:00 +0000
@@ -1,576 +0,0 @@
-// fp_traits.hpp
-
-#ifndef BOOST_MATH_FP_TRAITS_HPP
-#define BOOST_MATH_FP_TRAITS_HPP
-
-// Copyright (c) 2006 Johan Rade
-
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#if defined(__vms) && defined(__DECCXX) && !__IEEE_FLOAT
-#   error The VAX floating point mode on VMS is not supported.
-#endif
-
-#include <cstring>
-
-#include <boost/assert.hpp>
-#include <boost/cstdint.hpp>
-#include <boost/detail/endian.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/is_floating_point.hpp>
-
-//------------------------------------------------------------------------------
-
-namespace boost {
-namespace math {
-namespace detail {
-
-//------------------------------------------------------------------------------
-
-/*
-Most processors support three different floating point precisions:
-single precision (32 bits), double precision (64 bits)
-and extended double precision (>64 bits)
-
-Note that the C++ type long double can be implemented
-both as double precision and extended double precision.
-*/
-
-struct single_precision_tag {};
-struct double_precision_tag {};
-struct extended_double_precision_tag {};
-
-//------------------------------------------------------------------------------
-
-/*
-template<class T, class U> struct fp_traits_impl;
-
-  This is traits class that describes the binary structure of floating
-  point numbers of C++ type T and precision U
-
-Requirements: 
-
-  T = float, double or long double
-  U = single_precision_tag, double_precision_tag
-      or extended_double_precision_tag
-
-Typedef members:
-
-  bits -- the target type when copying the leading bytes of a floating
-      point number. It is a typedef for uint32_t or uint64_t.
-
-  coverage -- tells us whether all bytes are copied or not.
-      It is a typedef for all_bits or not_all_bits.
-
-Static data members:
-
-  sign, exponent, flag, mantissa -- bit masks that give the meaning of the bits
-      in the leading bytes.
-
-Static function members:
-
-  init() -- initializes the static data members, if needed.
-            (Is a no-op in the specialized versions of the template.)
-
-  get_bits(), set_bits() -- provide access to the leading bytes.
-*/
-
-struct all_bits {};
-struct not_all_bits {};
-
-// Generic version -------------------------------------------------------------
-
-// The generic version uses run time initialization to determine the floating
-// point format. It is capable of handling most formats,
-// but not the Motorola 68K extended double precision format.
-
-// Currently the generic version is used only for extended double precision
-// on Itanium. In all other cases there are specializations of the template
-// that use compile time initialization.
-
-template<class T> struct uint32_t_coverage
-{
-    typedef not_all_bits type;
-};
-
-template<> struct uint32_t_coverage<single_precision_tag>
-{
-    typedef all_bits type;
-};
-
-template<class T, class U> struct fp_traits_impl
-{
-    typedef uint32_t bits;
-    typedef BOOST_DEDUCED_TYPENAME uint32_t_coverage<U>::type coverage;
-
-    BOOST_STATIC_CONSTANT(uint32_t, sign = 0x80000000);
-    static uint32_t exponent;
-    static uint32_t flag;
-    static uint32_t mantissa;
-
-    static void init()
-    {
-        if(is_init_) return;
-        do_init_();
-        is_init_ = true;
-    }
-
-    static void get_bits(T x, uint32_t& a)
-    {
-        memcpy(&a, reinterpret_cast<const unsigned char*>(&x) + offset_, 4);
-    }
-
-    static void set_bits(T& x, uint32_t a)
-    {
-        memcpy(reinterpret_cast<unsigned char*>(&x) + offset_, &a, 4);
-    }
-
-private:
-    static size_t offset_;
-    static bool is_init_;
-    static void do_init_();
-};
-
-//..............................................................................
-
-template<class T, class U> uint32_t fp_traits_impl<T,U>::exponent;
-template<class T, class U> uint32_t fp_traits_impl<T,U>::flag;
-template<class T, class U> uint32_t fp_traits_impl<T,U>::mantissa;
-template<class T, class U> size_t   fp_traits_impl<T,U>::offset_;
-template<class T, class U> bool     fp_traits_impl<T,U>::is_init_;
-
-// In a single-threaded program, do_init will be called exactly once.
-// In a multi-threaded program, do_init may be called simultaneously
-// by more then one thread. That should not be a problem.
-
-//..............................................................................
-
-template<class T, class U> void fp_traits_impl<T,U>::do_init_()
-{
-    T x = static_cast<T>(3) / static_cast<T>(4);
-    // sign bit = 0
-    // exponent: first and last bit = 0, all other bits  = 1
-    // flag bit (if present) = 1
-    // mantissa: first bit = 1, all other bits = 0
-
-    uint32_t a;
-
-    for(size_t k = 0; k <= sizeof(T) - 4; ++k) {
-
-        memcpy(&a, reinterpret_cast<unsigned char*>(&x) + k, 4);
-
-        switch(a) {
-
-        case 0x3f400000:      // IEEE single precision format
-
-            offset_  = k;      
-            exponent = 0x7f800000;
-            flag     = 0x00000000;
-            mantissa = 0x007fffff;
-            return;
-
-        case 0x3fe80000:      // IEEE double precision format 
-                              // and PowerPC extended double precision format
-            offset_  = k;      
-            exponent = 0x7ff00000;
-            flag     = 0x00000000;
-            mantissa = 0x000fffff;
-            return;
-
-        case 0x3ffe0000:      // Motorola extended double precision format
-
-            // Must not get here. Must be handled by specialization.
-            // To get accurate cutoff between normals and subnormals
-            // we must use the flag bit that is in the 5th byte.
-            // Otherwise this cutoff will be off by a factor 2.
-            // If we do get here, then we have failed to detect the Motorola
-            // processor at compile time.
-
-            BOOST_ASSERT(false);        
-            return;
-
-        case 0x3ffe8000:      // IEEE extended double precision format
-                              // with 15 exponent bits
-            offset_  = k;      
-            exponent = 0x7fff0000;
-            flag     = 0x00000000;
-            mantissa = 0x0000ffff;
-            return;
-
-        case 0x3ffec000:      // Intel extended double precision format
-
-            offset_  = k;
-            exponent = 0x7fff0000;
-            flag     = 0x00008000;
-            mantissa = 0x00007fff;
-            return;
-
-        default:
-            continue;
-        }
-    }
-
-    BOOST_ASSERT(false); 
-
-    // Unknown format.
-}
-
-
-// float (32 bits) -------------------------------------------------------------
-
-template<> struct fp_traits_impl<float, single_precision_tag>
-{
-    typedef uint32_t bits;
-    typedef all_bits coverage;
-
-    BOOST_STATIC_CONSTANT(uint32_t, sign     = 0x80000000);
-    BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7f800000);
-    BOOST_STATIC_CONSTANT(uint32_t, flag     = 0x00000000);
-    BOOST_STATIC_CONSTANT(uint32_t, mantissa = 0x007fffff);
-
-    static void init() {}
-    static void get_bits(float x, uint32_t& a) { memcpy(&a, &x, 4); }
-    static void set_bits(float& x, uint32_t a) { memcpy(&x, &a, 4); }
-};
-
-
-// double (64 bits) ------------------------------------------------------------
-
-#if defined(BOOST_NO_INT64_T) || defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
-
-template<> struct fp_traits_impl<double, double_precision_tag>
-{
-    typedef uint32_t bits;
-    typedef not_all_bits coverage;
-
-    BOOST_STATIC_CONSTANT(uint32_t, sign     = 0x80000000);
-    BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7ff00000);
-    BOOST_STATIC_CONSTANT(uint32_t, flag     = 0);
-    BOOST_STATIC_CONSTANT(uint32_t, mantissa = 0x000fffff);
-
-    static void init() {}
-
-    static void get_bits(double x, uint32_t& a)
-    {
-        memcpy(&a, reinterpret_cast<const unsigned char*>(&x) + offset_, 4);
-    }
-
-    static void set_bits(double& x, uint32_t a)
-    {
-        memcpy(reinterpret_cast<unsigned char*>(&x) + offset_, &a, 4);
-    }
-
-private:
-
-#if defined(BOOST_BIG_ENDIAN)
-    BOOST_STATIC_CONSTANT(int, offset_ = 0);
-#elif defined(BOOST_LITTLE_ENDIAN)
-    BOOST_STATIC_CONSTANT(int, offset_ = 4);
-#else
-    BOOST_STATIC_ASSERT(false);
-#endif
-};
-
-//..............................................................................
-
-#else
-
-template<> struct fp_traits_impl<double, double_precision_tag>
-{
-    typedef uint64_t bits;
-    typedef all_bits coverage;
-
-    static const uint64_t sign     = (uint64_t)0x80000000 << 32;
-    static const uint64_t exponent = (uint64_t)0x7ff00000 << 32;
-    static const uint64_t flag     = 0;
-    static const uint64_t mantissa
-        = ((uint64_t)0x000fffff << 32) + (uint64_t)0xffffffff;
-
-    static void init() {}
-    static void get_bits(double x, uint64_t& a) { memcpy(&a, &x, 8); }
-    static void set_bits(double& x, uint64_t a) { memcpy(&x, &a, 8); }
-};
-
-#endif
-
-
-// long double (64 bits) -------------------------------------------------------
-
-#if defined(BOOST_NO_INT64_T) || defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
-
-template<> struct fp_traits_impl<long double, double_precision_tag>
-{
-    typedef uint32_t bits;
-    typedef not_all_bits coverage;
-
-    BOOST_STATIC_CONSTANT(uint32_t, sign     = 0x80000000);
-    BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7ff00000);
-    BOOST_STATIC_CONSTANT(uint32_t, flag     = 0);
-    BOOST_STATIC_CONSTANT(uint32_t, mantissa = 0x000fffff);
-
-    static void init() {}
-
-    static void get_bits(long double x, uint32_t& a)
-    {
-        memcpy(&a, reinterpret_cast<const unsigned char*>(&x) + offset_, 4);
-    }
-
-    static void set_bits(long double& x, uint32_t a)
-    {
-        memcpy(reinterpret_cast<unsigned char*>(&x) + offset_, &a, 4);
-    }
-
-private:
-
-#if defined(BOOST_BIG_ENDIAN)
-    BOOST_STATIC_CONSTANT(int, offset_ = 0);
-#elif defined(BOOST_LITTLE_ENDIAN)
-    BOOST_STATIC_CONSTANT(int, offset_ = 4);
-#else
-    BOOST_STATIC_ASSERT(false);
-#endif
-};
-
-//..............................................................................
-
-#else
-
-template<> struct fp_traits_impl<long double, double_precision_tag>
-{
-    typedef uint64_t bits;
-    typedef all_bits coverage;
-
-    static const uint64_t sign     = (uint64_t)0x80000000 << 32;
-    static const uint64_t exponent = (uint64_t)0x7ff00000 << 32;
-    static const uint64_t flag     = 0;
-    static const uint64_t mantissa
-        = ((uint64_t)0x000fffff << 32) + (uint64_t)0xffffffff;
-
-    static void init() {}
-    static void get_bits(long double x, uint64_t& a) { memcpy(&a, &x, 8); }
-    static void set_bits(long double& x, uint64_t a) { memcpy(&x, &a, 8); }
-};
-
-#endif
-
-
-// long double (>64 bits), x86 and x64 -----------------------------------------
-
-#if defined(__i386) || defined(__i386__) || defined(_M_IX86) \
-    || defined(__amd64) || defined(__amd64__)  || defined(_M_AMD64) \
-    || defined(__x86_64) || defined(__x86_64__) || defined(_M_X64)
-
-// Intel extended double precision format (80 bits)
-
-template<> struct fp_traits_impl<long double, extended_double_precision_tag>
-{
-    typedef uint32_t bits;
-    typedef not_all_bits coverage;
-
-    BOOST_STATIC_CONSTANT(uint32_t, sign     = 0x80000000);
-    BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7fff0000);
-    BOOST_STATIC_CONSTANT(uint32_t, flag     = 0x00008000);
-    BOOST_STATIC_CONSTANT(uint32_t, mantissa = 0x00007fff);
-
-    static void init() {}
-
-    static void get_bits(long double x, uint32_t& a)
-    {
-        memcpy(&a, reinterpret_cast<const unsigned char*>(&x) + 6, 4);
-    }
-
-    static void set_bits(long double& x, uint32_t a)
-    {
-        memcpy(reinterpret_cast<unsigned char*>(&x) + 6, &a, 4);
-    }
-};
-
-
-// long double (>64 bits), Itanium ---------------------------------------------
-
-#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
-
-// The floating point format is unknown at compile time
-// No template specialization is provided.
-// The generic definition is used.
-
-// The Itanium supports both
-// the Intel extended double precision format (80 bits) and
-// the IEEE extended double precision format with 15 exponent bits (128 bits).
-
-
-// long double (>64 bits), PowerPC ---------------------------------------------
-
-#elif defined(__powerpc) || defined(__powerpc__) || defined(__POWERPC__) \
-    || defined(__ppc) || defined(__ppc__) || defined(__PPC__)
-
-// PowerPC extended double precision format (128 bits)
-
-template<> struct fp_traits_impl<long double, extended_double_precision_tag>
-{
-    typedef uint32_t bits;
-    typedef not_all_bits coverage;
-
-    BOOST_STATIC_CONSTANT(uint32_t, sign     = 0x80000000);
-    BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7ff00000);
-    BOOST_STATIC_CONSTANT(uint32_t, flag     = 0x00000000);
-    BOOST_STATIC_CONSTANT(uint32_t, mantissa = 0x000fffff);
-
-    static void init() {}
-
-    static void get_bits(long double x, uint32_t& a)
-    {
-        memcpy(&a, reinterpret_cast<const unsigned char*>(&x) + offset_, 4);
-    }
-
-    static void set_bits(long double& x, uint32_t a)
-    {
-        memcpy(reinterpret_cast<unsigned char*>(&x) + offset_, &a, 4);
-    }
-
-private:
-
-#if defined(BOOST_BIG_ENDIAN)
-    BOOST_STATIC_CONSTANT(int, offset_ = 0);
-#elif defined(BOOST_LITTLE_ENDIAN)
-    BOOST_STATIC_CONSTANT(int, offset_ = 12);
-#else
-    BOOST_STATIC_ASSERT(false);
-#endif
-};
-
-
-// long double (>64 bits), Motorola 68K ----------------------------------------
-
-#elif defined(__m68k) || defined(__m68k__) \
-    || defined(__mc68000) || defined(__mc68000__) \
-
-// Motorola extended double precision format (96 bits)
-
-// It is the same format as the Intel extended double precision format,
-// except that 1) it is big-endian, 2) the 3rd and 4th byte are padding, and
-// 3) the flag bit is not set for infinity
-
-template<> struct fp_traits_impl<long double, extended_double_precision_tag>
-{
-    typedef uint32_t bits;
-    typedef not_all_bits coverage;
-
-    BOOST_STATIC_CONSTANT(uint32_t, sign     = 0x80000000);
-    BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7fff0000);
-    BOOST_STATIC_CONSTANT(uint32_t, flag     = 0x00008000);
-    BOOST_STATIC_CONSTANT(uint32_t, mantissa = 0x00007fff);
-
-    static void init() {}
-
-    // copy 1st, 2nd, 5th and 6th byte. 3rd and 4th byte are padding.
-
-    static void get_bits(long double x, uint32_t& a)
-    {
-        memcpy(&a, &x, 2);
-        memcpy(reinterpret_cast<unsigned char*>(&a) + 2,
-               reinterpret_cast<const unsigned char*>(&x) + 4, 2);
-    }
-
-    static void set_bits(long double& x, uint32_t a)
-    {
-        memcpy(&x, &a, 2);
-        memcpy(reinterpret_cast<unsigned char*>(&x) + 4,
-               reinterpret_cast<const unsigned char*>(&a) + 2, 2);
-    }
-};
-
-
-// long double (>64 bits), All other processors --------------------------------
-
-#else
-
-// IEEE extended double precision format with 15 exponent bits (128 bits)
-
-template<> struct fp_traits_impl<long double, extended_double_precision_tag>
-{
-    typedef uint32_t bits;
-    typedef not_all_bits coverage;
-
-    BOOST_STATIC_CONSTANT(uint32_t, sign     = 0x80000000);
-    BOOST_STATIC_CONSTANT(uint32_t, exponent = 0x7fff0000);
-    BOOST_STATIC_CONSTANT(uint32_t, flag     = 0x00000000);
-    BOOST_STATIC_CONSTANT(uint32_t, mantissa = 0x0000ffff);
-
-    static void init() {}
-
-    static void get_bits(long double x, uint32_t& a)
-    {
-        memcpy(&a, reinterpret_cast<const unsigned char*>(&x) + offset_, 4);
-    }
-
-    static void set_bits(long double& x, uint32_t a)
-    {
-        memcpy(reinterpret_cast<unsigned char*>(&x) + offset_, &a, 4);
-    }
-
-private:
-
-#if defined(BOOST_BIG_ENDIAN)
-    BOOST_STATIC_CONSTANT(int, offset_ = 0);
-#elif defined(BOOST_LITTLE_ENDIAN)
-    BOOST_STATIC_CONSTANT(int, offset_ = 12);
-#else
-    BOOST_STATIC_ASSERT(false);
-#endif
-};
-
-#endif
-
-
-//------------------------------------------------------------------------------
-
-// size_to_precision is a type switch for converting a C++ floating point type
-// to the corresponding precision type.
-
-template<int n> struct size_to_precision;
-
-template<> struct size_to_precision<4>
-{
-    typedef single_precision_tag type;
-};
-
-template<> struct size_to_precision<8>
-{
-    typedef double_precision_tag type;
-};
-
-template<> struct size_to_precision<10>
-{
-    typedef extended_double_precision_tag type;
-};
-
-template<> struct size_to_precision<12>
-{
-    typedef extended_double_precision_tag type;
-};
-
-template<> struct size_to_precision<16>
-{
-    typedef extended_double_precision_tag type;
-};
-
-// fp_traits is a type switch that selects the right fp_traits_impl
-
-template<class T> struct fp_traits
-{
-    BOOST_STATIC_ASSERT(boost::is_floating_point<T>::value);
-    typedef BOOST_DEDUCED_TYPENAME size_to_precision<sizeof(T)>::type precision;
-    typedef fp_traits_impl<T, precision> type;
-};
-
-
-//------------------------------------------------------------------------------
-
-}   // namespace detail
-}   // namespace math
-}   // namespace boost
-
-#endif

=== removed file 'extra/floating_point_utilities_v3/boost/math/fpclassify.hpp'
--- extra/floating_point_utilities_v3/boost/math/fpclassify.hpp	2010-04-19 10:18:42 +0000
+++ extra/floating_point_utilities_v3/boost/math/fpclassify.hpp	1970-01-01 00:00:00 +0000
@@ -1,229 +0,0 @@
-// fpclassify.hpp
-
-#ifndef BOOST_MATH_FPCLASSIFY_HPP
-#define BOOST_MATH_FPCLASSIFY_HPP
-
-// Copyright (c) 2006 Johan Rade
-
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-/*
-The following algorithm is used:
-
-  If all exponent bits, the flag bit (if there is one), 
-  and all mantissa bits are 0, then the number is zero.
-
-  If all exponent bits and the flag bit (if there is one) are 0, 
-  and at least one mantissa bit is 1, then the number is subnormal.
-
-  If all exponent bits are 1 and all mantissa bits are 0, 
-  then the number is infinity.
-
-  If all exponent bits are 1 and at least one mantissa bit is 1,
-  then the number is a not-a-number.
-
-  Otherwise the number is normal.
-
-(Note that the binary representation of infinity
-has flag bit 0 for Motorola 68K extended double precision,
-and flag bit 1 for Intel extended double precision.)
-
-To get the bits, the four or eight most significant bytes are copied
-into an uint32_t or uint64_t and bit masks are applied.
-This covers all the exponent bits and the flag bit (if there is one),
-but not always all the mantissa bits.
-Some of the functions below have two implementations,
-depending on whether all the mantissa bits are copied or not.
-*/
-
-#include <cmath>
-
-#ifndef FP_INFINITE
-#   define FP_INFINITE 0
-#   define FP_NAN 1
-#   define FP_NORMAL 2
-#   define FP_SUBNORMAL 3
-#   define FP_ZERO 4
-#endif
-
-#include "detail/fp_traits.hpp"
-
-namespace boost {
-namespace math {
-    
-//------------------------------------------------------------------------------
-
-template<class T> bool (isfinite)(T x)
-{
-    typedef BOOST_DEDUCED_TYPENAME detail::fp_traits<T>::type traits;
-    traits::init();
-
-    BOOST_DEDUCED_TYPENAME traits::bits a;
-    traits::get_bits(x,a);
-    a &= traits::exponent;
-    return a != traits::exponent;
-}
-
-//------------------------------------------------------------------------------
-
-template<class T> bool (isnormal)(T x)
-{
-    typedef BOOST_DEDUCED_TYPENAME detail::fp_traits<T>::type traits;
-    traits::init();
-
-    BOOST_DEDUCED_TYPENAME traits::bits a;
-    traits::get_bits(x,a);
-    a &= traits::exponent | traits::flag;
-    return (a != 0) && (a < traits::exponent);
-}
-
-//------------------------------------------------------------------------------
-
-namespace detail {
-
-    template<class T> bool isinf_impl(T x, all_bits)
-    {
-        typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::type traits;
-
-        BOOST_DEDUCED_TYPENAME traits::bits a;
-        traits::get_bits(x,a);
-        a &= traits::exponent | traits::mantissa;
-        return a == traits::exponent;
-    }
-
-    template<class T> bool isinf_impl(T x, not_all_bits)
-    {
-        typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::type traits;
-
-        BOOST_DEDUCED_TYPENAME traits::bits a;
-        traits::get_bits(x,a);
-        a &= traits::exponent | traits::mantissa;
-        if(a != traits::exponent)
-            return false;
-
-        traits::set_bits(x,0);
-        return x == 0;
-    }
-
-}   // namespace detail
-
-template<class T> bool (isinf)(T x)
-{
-    typedef BOOST_DEDUCED_TYPENAME detail::fp_traits<T>::type traits;
-    traits::init();
-    return detail::isinf_impl(x, BOOST_DEDUCED_TYPENAME traits::coverage());
-}
-
-//------------------------------------------------------------------------------
-
-namespace detail {
-
-    template<class T> bool isnan_impl(T x, all_bits)
-    {
-        typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::type traits;
-        traits::init();
-
-        BOOST_DEDUCED_TYPENAME traits::bits a;
-        traits::get_bits(x,a);
-        a &= traits::exponent | traits::mantissa;
-        return a > traits::exponent;
-    }
-
-    template<class T> bool isnan_impl(T x, not_all_bits)
-    {
-        typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::type traits;
-        traits::init();
-
-        BOOST_DEDUCED_TYPENAME traits::bits a;
-        traits::get_bits(x,a);
-
-        a &= traits::exponent | traits::mantissa;
-        if(a < traits::exponent)
-            return false;
-
-        a &= traits::mantissa;
-        traits::set_bits(x,a);
-        return x != 0;
-    }
-
-}   // namespace detail
-
-template<class T> bool (isnan)(T x)
-{
-    typedef BOOST_DEDUCED_TYPENAME detail::fp_traits<T>::type traits;
-    traits::init();
-    return detail::isnan_impl(x, BOOST_DEDUCED_TYPENAME traits::coverage());
-}
-
-//------------------------------------------------------------------------------
-
-namespace detail {
-
-    template<class T> int fpclassify_impl(T x, all_bits)
-    {
-        typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::type traits;
-
-        BOOST_DEDUCED_TYPENAME traits::bits a;
-        traits::get_bits(x,a);
-        a &= traits::exponent | traits::flag | traits::mantissa;
-
-        if(a <= traits::mantissa) {
-            if(a == 0)
-                return FP_ZERO;
-            else
-                return FP_SUBNORMAL;
-        }
-
-        if(a < traits::exponent)
-            return FP_NORMAL;
-
-        a &= traits::mantissa;
-        if(a == 0)
-            return FP_INFINITE;
-
-        return FP_NAN;
-    }
-
-    template<class T> int fpclassify_impl(T x, not_all_bits)
-    {
-        typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::type traits;
-
-        BOOST_DEDUCED_TYPENAME traits::bits a;
-        traits::get_bits(x,a); 
-        a &= traits::exponent | traits::flag | traits::mantissa;
-
-        if(a <= traits::mantissa) {
-            if(x == 0)
-                return FP_ZERO;
-            else
-                return FP_SUBNORMAL;
-        }
-            
-        if(a < traits::exponent)
-            return FP_NORMAL;
-
-        a &= traits::mantissa;
-        traits::set_bits(x,a);
-        if(x == 0)
-            return FP_INFINITE;
-        
-        return FP_NAN;
-    }
-
-}   // namespace detail
-
-template<class T> int (fpclassify)(T x)
-{
-    typedef BOOST_DEDUCED_TYPENAME detail::fp_traits<T>::type traits;
-    traits::init();
-    return detail::fpclassify_impl(x, BOOST_DEDUCED_TYPENAME traits::coverage());
-}
-
-//------------------------------------------------------------------------------
-
-}   // namespace math
-}   // namespace boost
-
-#endif

=== removed file 'extra/floating_point_utilities_v3/boost/math/nonfinite_num_facets.hpp'
--- extra/floating_point_utilities_v3/boost/math/nonfinite_num_facets.hpp	2010-04-19 10:18:42 +0000
+++ extra/floating_point_utilities_v3/boost/math/nonfinite_num_facets.hpp	1970-01-01 00:00:00 +0000
@@ -1,475 +0,0 @@
-#ifndef BOOST_MATH_NONFINITE_NUM_FACETS_HPP
-#define BOOST_MATH_NONFINITE_NUM_FACETS_HPP
-
-// Copyright (c) 2006 Johan Rade
-
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#include <cstring>
-#include <ios>
-#include <limits>
-#include <locale>
-#include "fpclassify.hpp"
-#include "signbit.hpp"
-
-#ifdef _MSC_VER
-#   pragma warning(push)
-#   pragma warning(disable : 4127 4511 4512 4706)
-#endif
-
-namespace boost {
-namespace math {
-
-
-// flags -----------------------------------------------------------------------
-
-const int legacy = 0x1;
-const int signed_zero = 0x2;
-const int trap_infinity = 0x4;
-const int trap_nan = 0x8;
-
-
-// class nonfinite_num_put -----------------------------------------------------
-
-template<
-    class CharType, 
-    class OutputIterator = std::ostreambuf_iterator<CharType> 
->
-class nonfinite_num_put : public std::num_put<CharType, OutputIterator> {
-public:
-    explicit nonfinite_num_put(int flags = 0) : flags_(flags) {}
-
-protected:
-    virtual OutputIterator do_put(
-        OutputIterator it, std::ios_base& iosb,
-        CharType fill, double val) const
-    {
-        put_and_reset_width(it, iosb, fill, val);
-        return it;
-    }
-
-    virtual OutputIterator do_put(
-        OutputIterator it, std::ios_base& iosb,
-        CharType fill, long double val) const
-    {
-        put_and_reset_width(it, iosb, fill, val);
-        return it;
-    }
-
-private:
-    template<class ValType> void put_and_reset_width(
-        OutputIterator& it, std::ios_base& iosb,
-        CharType fill, ValType val) const
-    {
-        put_impl(it, iosb, fill, val);
-        iosb.width(0);
-    }
-
-    template<class ValType> void put_impl(
-        OutputIterator& it, std::ios_base& iosb,
-        CharType fill, ValType val) const
-    {
-        switch((boost::math::fpclassify)(val)) {
-
-            case FP_INFINITE:
-                if(flags_ & trap_infinity)
-                    throw std::ios_base::failure("Infinity");
-                else if((boost::math::signbit)(val))
-                    put_num_and_fill(it, iosb, "-", "inf", fill);
-                else if(iosb.flags() & std::ios_base::showpos)
-                    put_num_and_fill(it, iosb, "+", "inf", fill);
-                else
-                    put_num_and_fill(it, iosb, "", "inf", fill);
-                break;
-            
-            case FP_NAN:
-                if(flags_ & trap_nan)
-                    throw std::ios_base::failure("NaN");
-                else if((boost::math::signbit)(val))
-                    put_num_and_fill(it, iosb, "-", "nan", fill);
-                else if(iosb.flags() & std::ios_base::showpos)
-                    put_num_and_fill(it, iosb, "+", "nan", fill);
-                else
-                    put_num_and_fill(it, iosb, "", "nan", fill);
-                break;
-
-            case FP_ZERO:
-                if(flags_ & signed_zero) {
-                    if((boost::math::signbit)(val))
-                        put_num_and_fill(it, iosb, "-", "0", fill);
-                    else if(iosb.flags() & std::ios_base::showpos)
-                        put_num_and_fill(it, iosb, "+", "0", fill);
-                    else
-                        put_num_and_fill(it, iosb, "", "0", fill);
-                }
-                else
-                    put_num_and_fill(it, iosb, "", "0", fill);
-                break;
-
-            default:
-                it = std::num_put<CharType, OutputIterator>::do_put(
-                    it, iosb, fill, val);
-                break;
-        }
-    }
-
-    void put_num_and_fill(
-        OutputIterator& it, std::ios_base& iosb, const char* prefix,
-        const char* body, CharType fill) const
-    {
-        int width = (int)strlen(prefix) + (int)strlen(body);
-        std::ios_base::fmtflags adjust
-            = iosb.flags() & std::ios_base::adjustfield;
-        const std::ctype<CharType>& ct
-            = std::use_facet<std::ctype<CharType> >(iosb.getloc());
-
-        if(adjust != std::ios_base::internal && adjust != std::ios_base::left)
-            put_fill(it, iosb, fill, width);
-
-        while(*prefix)
-            *it = ct.widen(*(prefix++));
-
-        if(adjust == std::ios_base::internal)
-            put_fill(it, iosb, fill, width);
-
-        if(iosb.flags() & std::ios_base::uppercase) {
-            while(*body)
-                *it = ct.toupper(ct.widen(*(body++)));
-        }
-        else {
-            while(*body)
-                *it = ct.widen(*(body++));
-        }
-
-        if(adjust == std::ios_base::left)
-            put_fill(it, iosb, fill, width);
-    }
-
-    void put_fill(
-        OutputIterator& it, std::ios_base& iosb, 
-        CharType fill, int width) const
-    {
-        for(int i = iosb.width() - width; i > 0; --i)
-            *it = fill;
-    }
-
-private:
-    const int flags_;
-};
-
-
-// class nonfinite_num_get ------------------------------------------------------
-
-template<
-    class CharType, 
-    class InputIterator = std::istreambuf_iterator<CharType> 
->
-class nonfinite_num_get : public std::num_get<CharType, InputIterator> {
-public:
-    explicit nonfinite_num_get(int flags = 0) : flags_(flags) {}
-
-protected:
-    virtual InputIterator do_get(
-        InputIterator it, InputIterator end, std::ios_base& iosb,
-        std::ios_base::iostate& state, float& val) const
-    {
-        get_and_check_eof(it, end, iosb, state, val);
-        return it;
-    }
-
-    virtual InputIterator do_get(
-        InputIterator it, InputIterator end, std::ios_base& iosb,
-        std::ios_base::iostate& state, double& val) const
-    {
-        get_and_check_eof(it, end, iosb, state, val);
-        return it;
-    }
-
-    virtual InputIterator do_get(
-        InputIterator it, InputIterator end, std::ios_base& iosb,
-        std::ios_base::iostate& state, long double& val) const
-    {
-        get_and_check_eof(it, end, iosb, state, val);
-        return it;
-    }
-
-//..............................................................................
-    
-private:
-    template<class ValType> static ValType positive_nan()
-    {
-        // on some platforms quiet_NaN() is negative
-        return (boost::math::copysign)(
-            std::numeric_limits<ValType>::quiet_NaN(), 1);  
-    }
-
-    template<class ValType> void get_and_check_eof(
-        InputIterator& it, InputIterator end, std::ios_base& iosb,
-        std::ios_base::iostate& state, ValType& val) const
-    {
-        get_signed(it, end, iosb, state, val);
-        if(it == end)
-            state |= std::ios_base::eofbit;
-    }
-
-    template<class ValType> void get_signed(
-        InputIterator& it, InputIterator end, std::ios_base& iosb,
-        std::ios_base::iostate& state, ValType& val) const
-    {
-        const std::ctype<CharType>& ct
-            = std::use_facet<std::ctype<CharType> >(iosb.getloc());
-
-        char c = peek_char(it, end, ct);
-
-        bool negative = (c == '-');
-
-        if(negative || c == '+') {
-            ++it;
-            c = peek_char(it, end, ct);
-            if(c == '-' || c == '+') {
-                // without this check, "++5" etc would be accepted
-                state |= std::ios_base::failbit;
-                return;
-            }
-        }
-
-        get_unsigned(it, end, iosb, ct, state, val);
-
-        if(negative)
-            val = (boost::math::changesign)(val);
-    }
-
-    template<class ValType> void get_unsigned(
-        InputIterator& it, InputIterator end, std::ios_base& iosb,
-        const std::ctype<CharType>& ct,
-        std::ios_base::iostate& state, ValType& val) const
-    {
-        switch(peek_char(it, end, ct)) {
-
-            case 'i': 
-                get_i(it, end, ct, state, val);
-                break;
-
-            case 'n':
-                get_n(it, end, ct, state, val);
-                break;
-
-            case 'q':
-            case 's':
-                get_q(it, end, ct, state, val);
-                break;
-
-            default:
-                it = std::num_get<CharType, InputIterator>::do_get(
-                        it, end, iosb, state, val);
-                if((flags_ & legacy) && val == static_cast<ValType>(1)
-                        && peek_char(it, end, ct) == '#')
-                    get_one_hash(it, end, ct, state, val);
-                break;
-        }
-    }
-
-    //..........................................................................
-
-    template<class ValType> void get_i(
-        InputIterator& it, InputIterator end, const std::ctype<CharType>& ct,
-        std::ios_base::iostate& state, ValType& val) const
-    {
-        if(!std::numeric_limits<ValType>::has_infinity
-                || (flags_ & trap_infinity)) {
-            state |= std::ios_base::failbit;
-            return;
-        }
-
-        ++it;
-
-        if(!match_string(it, end, ct, "nf")) {
-            state |= std::ios_base::failbit;
-            return;
-        }
-
-        if(peek_char(it, end, ct) != 'i') {
-            val = std::numeric_limits<ValType>::infinity();     // "inf"
-            return;
-        }
-
-        ++it;
-
-        if(!match_string(it, end, ct, "nity")) {
-            state |= std::ios_base::failbit;
-            return;
-        }
-
-        val = std::numeric_limits<ValType>::infinity();         // "infinity"
-    }
-
-    template<class ValType> void get_n(
-        InputIterator& it, InputIterator end, const std::ctype<CharType>& ct,
-        std::ios_base::iostate& state, ValType& val) const
-    {
-        if(!std::numeric_limits<ValType>::has_quiet_NaN 
-                || (flags_ & trap_nan)) {
-            state |= std::ios_base::failbit;
-            return;
-        }
-
-        ++it;
-            
-        if(!match_string(it, end, ct, "an")) {
-            state |= std::ios_base::failbit;
-            return;
-        }
-
-        switch(peek_char(it, end, ct)) {
-            case 'q':
-            case 's':
-                if(flags_ && legacy)
-                    ++it;
-                break;              // "nanq", "nans"
-                
-            case '(': 
-            {
-                ++it;
-                char c;
-                while((c = peek_char(it, end, ct))
-                        && c != ')' && c != ' ' && c != '\n' && c != '\t')
-                    ++it;
-                if(c != ')') {
-                    state |= std::ios_base::failbit;
-                    return;
-                }
-                ++it;           
-                break;              // "nan(...)"
-            }
-
-            default:
-                break;              // "nan"
-        }
-
-        val = positive_nan<ValType>();
-    }
-
-    template<class ValType> void get_q(
-        InputIterator& it, InputIterator end, const std::ctype<CharType>& ct,
-        std::ios_base::iostate& state, ValType& val) const
-    {
-        if(!std::numeric_limits<ValType>::has_quiet_NaN 
-                || (flags_ & trap_nan) || !(flags_ & legacy)) {
-            state |= std::ios_base::failbit;
-            return;
-        }
-
-        ++it;
-
-        if(!match_string(it, end, ct, "nan")) {
-            state |= std::ios_base::failbit;
-            return;
-        }
-
-        val = positive_nan<ValType>();      // qnan, snan
-    }
-
-    template<class ValType> void get_one_hash(
-        InputIterator& it, InputIterator end, const std::ctype<CharType>& ct,
-        std::ios_base::iostate& state, ValType& val) const
-    {
-        ++it;
-
-        switch(peek_char(it, end, ct)) {
-            case 'i':
-                get_one_hash_i(it, end, ct, state, val);
-                return;
-
-            case 'q':
-            case 's':
-                if(std::numeric_limits<ValType>::has_quiet_NaN
-                        && !(flags_ & trap_nan)) {
-                    ++it;
-                    if(match_string(it, end, ct, "nan")) {  
-                                                        // "1.#QNAN", "1.#SNAN"
-                        ++it;
-                        val = positive_nan<ValType>();
-                        return;
-                    }
-                }
-                break;
-
-            default:
-                break;
-        }
-
-        state |= std::ios_base::failbit;
-    }
-   
-    template<class ValType> void get_one_hash_i(
-        InputIterator& it, InputIterator end, const std::ctype<CharType>& ct,
-        std::ios_base::iostate& state, ValType& val) const
-    {
-        ++it;
-
-        if(peek_char(it, end, ct) == 'n') {
-            ++it;
-            switch(peek_char(it, end, ct)) {
-                case 'f':                                       // "1.#INF"
-                    if(std::numeric_limits<ValType>::has_infinity
-                            && !(flags_ & trap_infinity)) {
-                        ++it;
-                        val = std::numeric_limits<ValType>::infinity(); 
-                        return;
-                    }
-                    break;
-
-                case 'd':                                       // 1.#IND"
-                    if(std::numeric_limits<ValType>::has_quiet_NaN
-                            && !(flags_ & trap_nan)) {
-                        ++it;
-                        val = positive_nan<ValType>();
-                        return;
-                    }
-                    break;
-
-                default:
-                    break;
-            }
-        }
-
-        state |= std::ios_base::failbit;
-    }
-
-    //..........................................................................
-
-    char peek_char(
-        InputIterator& it, InputIterator end, 
-        const std::ctype<CharType>& ct) const
-    {
-        if(it == end) return 0;
-        return ct.narrow(ct.tolower(*it), 0);
-    }
-
-    bool match_string(
-        InputIterator& it, InputIterator end,
-        const std::ctype<CharType>& ct, const char* s) const
-    {
-        while(it != end && *s && *s == ct.narrow(ct.tolower(*it), 0)) {
-            ++s;
-            ++it;
-        }
-        return !*s;
-    }
-
-private:
-    const int flags_;
-};
-
-//------------------------------------------------------------------------------
-
-}   // namespace serialization
-}   // namespace boost
-
-#ifdef _MSC_VER
-#   pragma warning(pop)
-#endif
-
-#endif

=== removed file 'extra/floating_point_utilities_v3/boost/math/signbit.hpp'
--- extra/floating_point_utilities_v3/boost/math/signbit.hpp	2010-04-19 10:18:42 +0000
+++ extra/floating_point_utilities_v3/boost/math/signbit.hpp	1970-01-01 00:00:00 +0000
@@ -1,86 +0,0 @@
-// signbit.hpp
-
-#ifndef BOOST_MATH_SIGNBIT_HPP
-#define BOOST_MATH_SIGNBIT_HPP
-
-// Copyright (c) 2006 Johan Rade
-
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#include "detail/fp_traits.hpp"
-
-namespace boost {
-namespace math {
-
-//------------------------------------------------------------------------------
-
-template<class T> bool (signbit)(T x)
-{
-    typedef BOOST_DEDUCED_TYPENAME detail::fp_traits<T>::type traits;
-    traits::init();
-
-    BOOST_DEDUCED_TYPENAME traits::bits a;
-    traits::get_bits(x,a);
-    a &= traits::sign;
-    return a != 0;
-}
-
-//------------------------------------------------------------------------------
-
-namespace detail {
-
-    template<class T> T copysign_impl(T x, T y)
-    {
-        typedef BOOST_DEDUCED_TYPENAME fp_traits<T>::type traits;
-        traits::init();
-
-        BOOST_DEDUCED_TYPENAME traits::bits a;
-        traits::get_bits(x,a);
-        a &= ~traits::sign;
-
-        BOOST_DEDUCED_TYPENAME traits::bits b;
-        traits::get_bits(y,b);
-        b &= traits::sign;
-
-        traits::set_bits(x,a|b);
-        return x;
-    }
-}
-
-inline float (copysign)(float x, float y)      // magnitude of x and sign of y
-{
-    return detail::copysign_impl(x,y);
-}
-
-inline double (copysign)(double x, double y)
-{
-    return detail::copysign_impl(x,y);
-}
-
-inline long double (copysign)(long double x, long double y)
-{
-    return detail::copysign_impl(x,y);
-}
-
-//------------------------------------------------------------------------------
-
-template<class T> T (changesign)(T x)
-{
-    typedef BOOST_DEDUCED_TYPENAME detail::fp_traits<T>::type traits;
-    traits::init();
-
-    BOOST_DEDUCED_TYPENAME traits::bits a;
-    traits::get_bits(x,a);
-    a ^= traits::sign;
-    traits::set_bits(x,a);
-    return x;
-}
-
-//------------------------------------------------------------------------------
-
-}   // namespace math
-}   // namespace boost
-
-#endif