Ticket #7637: karma_real_policies_int.patch
File karma_real_policies_int.patch, 1.8 KB (added by , 10 years ago) |
---|
-
boost/spirit/home/karma/numeric/detail/numeric_utils.hpp
545 545 return call(n, mpl::bool_<is_integral<T>::value>()); 546 546 } 547 547 }; 548 549 /////////////////////////////////////////////////////////////////////// 550 struct decompose_real 551 { 552 template <typename T> 553 static T call(T n, T* iptr, mpl::true_) 554 { 555 *iptr = n; 556 return T(0); 557 } 558 559 template <typename T> 560 static T call(T n, T* iptr, mpl::false_) 561 { 562 // Allow ADL to find the correct overload for modf 563 using namespace std; 564 return modf(n, iptr); 565 } 566 567 template <typename T> 568 static T call(T n, T* iptr) 569 { 570 return call(n, iptr, mpl::bool_<is_integral<T>::value>()); 571 } 572 }; 548 573 }}} 549 574 550 575 namespace boost { namespace spirit { namespace karma -
boost/spirit/home/karma/numeric/detail/real_utils.hpp
112 112 // prepare numbers (sign, integer and fraction part) 113 113 U integer_part; 114 114 U precexp = spirit::traits::pow10<U>(precision); 115 U fractional_part = modf(n, &integer_part);115 U fractional_part = spirit::traits::decompose_real::call(n, &integer_part); 116 116 117 117 fractional_part = floor(fractional_part * precexp + U(0.5)); 118 118 if (fractional_part >= precexp)