mirror of
https://github.com/boostorg/multiprecision.git
synced 2026-01-19 04:22:11 +00:00
Disable some tests when the exponent range is greater than that of the reference type. Fix up a few other warnings.
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
@import url('../../../../doc/src/boostbook.css');
|
||||
/* Contains the basic settings for BoostBook and used by Quickbook to docbook conversion. */
|
||||
|
||||
/* Note:this import link assumes called from doc/html, not from any backup copy in /doc. */
|
||||
/* Note:this import link assumes called from libs/multiprecision/doc/html, not from any backup copy in libs/multiprecision/doc. */
|
||||
/* boost-no-inspect */
|
||||
@import url('../../../../doc/src/boostbook.css');
|
||||
|
||||
/*=============================================================================
|
||||
Copyright (c) 2004 Joel de Guzman http://spirit.sourceforge.net/
|
||||
|
||||
@@ -357,7 +357,6 @@ void eval_cos(T& result, const T& x)
|
||||
|
||||
typedef typename boost::multiprecision::detail::canonical<boost::int32_t, T>::type si_type;
|
||||
typedef typename boost::multiprecision::detail::canonical<boost::uint32_t, T>::type ui_type;
|
||||
typedef typename mpl::front<typename T::float_types>::type fp_type;
|
||||
|
||||
switch (eval_fpclassify(x))
|
||||
{
|
||||
@@ -467,9 +466,6 @@ void eval_cos(T& result, const T& x)
|
||||
|
||||
const bool b_zero = eval_get_sign(xx) == 0;
|
||||
|
||||
// Check if the reduced argument is very close to 0.
|
||||
const bool b_near_zero = xx.compare(fp_type(1e-1)) < 0;
|
||||
|
||||
if (b_zero)
|
||||
{
|
||||
result = si_type(0);
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
template <class T>
|
||||
void test()
|
||||
{
|
||||
using mpfr_float_1000 = boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<1000> >;
|
||||
typedef boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<1000> > mpfr_float_1000;
|
||||
|
||||
for (int n = -20; n <= 20; ++n)
|
||||
{
|
||||
@@ -102,12 +102,10 @@ int main()
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
|
||||
/* These fail since our exponent range is greater than that of mpfr which we use for comparison:
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<char> > > >();
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<char> > > >();
|
||||
*/
|
||||
// Check low multiprecision digit counts.
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<9> > >();
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
|
||||
|
||||
@@ -50,13 +50,15 @@
|
||||
template <class T>
|
||||
void test()
|
||||
{
|
||||
using mpfr_float_1000 = boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<1000> >;
|
||||
typedef boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<1000> > mpfr_float_1000;
|
||||
|
||||
for (int n = -20; n <= 20; ++n)
|
||||
for (int n = 0; n <= 20; ++n)
|
||||
{
|
||||
std::cout << "Testing n = " << n << std::endl;
|
||||
T boundary = boost::math::constants::half_pi<T>() * n;
|
||||
T val = boundary;
|
||||
if((n == 0) && ((std::numeric_limits<T>::min_exponent <= std::numeric_limits<mpfr_float_1000>::min_exponent) || (!std::numeric_limits<T>::is_specialized)))
|
||||
continue;
|
||||
for (unsigned i = 0; i < 200; ++i)
|
||||
{
|
||||
mpfr_float_1000 comparison(val);
|
||||
@@ -64,10 +66,6 @@ void test()
|
||||
T found = sin(val);
|
||||
T expected = T(comparison);
|
||||
BOOST_CHECK_LE(boost::math::epsilon_difference(found, expected), 20);
|
||||
//std::cout << std::setprecision(10) << val << std::endl;
|
||||
//std::cout << std::setprecision(50) << found << std::endl;
|
||||
//std::cout << std::setprecision(50) << comparison << std::endl;
|
||||
//std::cout << std::setprecision(50) << expected << std::endl;
|
||||
val = boost::math::float_next(val);
|
||||
}
|
||||
val = boundary;
|
||||
@@ -102,12 +100,10 @@ int main()
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
|
||||
/* These fail since our exponent range is greater than that of mpfr which we use for comparison:
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<char> > > >();
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<char> > > >();
|
||||
*/
|
||||
// Check low multiprecision digit counts.
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<9> > >();
|
||||
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
|
||||
|
||||
Reference in New Issue
Block a user