Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
mpfr.hpp File Reference
#include <boost/multiprecision/number.hpp>
#include <boost/multiprecision/gmp.hpp>
#include <boost/math/special_functions/fpclassify.hpp>
#include <boost/cstdint.hpp>
#include <boost/multiprecision/detail/big_lanczos.hpp>
#include <boost/multiprecision/detail/digits.hpp>
#include <mpfr.h>
#include <cmath>
#include <algorithm>
Include dependency graph for mpfr.hpp:
This graph shows which files directly or indirectly include this file:

Classes

struct  boost::multiprecision::backends::mpfr_float_backend< digits10, AllocationType >
 
struct  boost::multiprecision::number_category< backends::mpfr_float_backend< digits10, AllocationType > >
 
struct  boost::multiprecision::backends::detail::mpfr_cleanup< b >
 
struct  boost::multiprecision::backends::detail::mpfr_cleanup< b >::initializer
 
struct  boost::multiprecision::backends::detail::mpfr_float_imp< digits10, AllocationType >
 
struct  boost::multiprecision::backends::detail::mpfr_float_imp< digits10, allocate_dynamic >
 
struct  boost::multiprecision::backends::detail::mpfr_float_imp< digits10, allocate_stack >
 
struct  boost::multiprecision::backends::mpfr_float_backend< digits10, AllocationType >
 
struct  boost::multiprecision::backends::mpfr_float_backend< 0, allocate_dynamic >
 
struct  boost::multiprecision::number_category< detail::canonical< mpfr_t, backends::mpfr_float_backend< 0 > >::type >
 
struct  boost::math::constants::detail::constant_pi< T >
 
struct  boost::math::constants::detail::constant_ln_two< T >
 
struct  boost::math::constants::detail::constant_euler< T >
 
struct  boost::math::constants::detail::constant_catalan< T >
 
struct  boost::math::constants::detail::detail::mpfr_constant_initializer< T, N >
 
struct  boost::math::constants::detail::constant_pi< boost::multiprecision::number< boost::multiprecision::mpfr_float_backend< Digits10, AllocateType >, ExpressionTemplates > >
 
struct  boost::math::constants::detail::constant_ln_two< boost::multiprecision::number< boost::multiprecision::mpfr_float_backend< Digits10, AllocateType >, ExpressionTemplates > >
 
struct  boost::math::constants::detail::constant_euler< boost::multiprecision::number< boost::multiprecision::mpfr_float_backend< Digits10, AllocateType >, ExpressionTemplates > >
 
struct  boost::math::constants::detail::constant_catalan< boost::multiprecision::number< boost::multiprecision::mpfr_float_backend< Digits10, AllocateType >, ExpressionTemplates > >
 
class  std::numeric_limits< boost::multiprecision::number< boost::multiprecision::mpfr_float_backend< Digits10, AllocateType >, ExpressionTemplates > >
 
class  std::numeric_limits< boost::multiprecision::number< boost::multiprecision::mpfr_float_backend< 0 >, ExpressionTemplates > >
 

Namespaces

 boost
 Duration formatting facet for input.
 
 boost::multiprecision
 
 boost::multiprecision::backends
 
 boost::multiprecision::backends::detail
 
 boost::math
 
 boost::math::tools
 
 boost::math::constants
 
 boost::math::constants::detail
 
 boost::math::constants::detail::detail
 

Macros

#define BOOST_MP_ENABLE_IF_WORKAROUND
 

Typedefs

typedef number
< mpfr_float_backend< 50 > > 
boost::multiprecision::mpfr_float_50
 
typedef number
< mpfr_float_backend< 100 > > 
boost::multiprecision::mpfr_float_100
 
typedef number
< mpfr_float_backend< 500 > > 
boost::multiprecision::mpfr_float_500
 
typedef number
< mpfr_float_backend< 1000 > > 
boost::multiprecision::mpfr_float_1000
 
typedef number
< mpfr_float_backend< 0 > > 
boost::multiprecision::mpfr_float
 
typedef number
< mpfr_float_backend
< 50, allocate_stack > > 
boost::multiprecision::static_mpfr_float_50
 
typedef number
< mpfr_float_backend
< 100, allocate_stack > > 
boost::multiprecision::static_mpfr_float_100
 

Enumerations

enum  boost::multiprecision::mpfr_allocation_type {
  boost::multiprecision::allocate_stack,
  boost::multiprecision::allocate_dynamic
}
 

Functions

long boost::multiprecision::backends::detail::get_default_precision ()
 
template<unsigned digits10, mpfr_allocation_type AllocationType, class T >
enable_if< is_arithmetic< T >
, bool >::type 
boost::multiprecision::backends::eval_eq (const mpfr_float_backend< digits10, AllocationType > &a, const T &b) BOOST_NOEXCEPT
 
template<unsigned digits10, mpfr_allocation_type AllocationType, class T >
enable_if< is_arithmetic< T >
, bool >::type 
boost::multiprecision::backends::eval_lt (const mpfr_float_backend< digits10, AllocationType > &a, const T &b) BOOST_NOEXCEPT
 
template<unsigned digits10, mpfr_allocation_type AllocationType, class T >
enable_if< is_arithmetic< T >
, bool >::type 
boost::multiprecision::backends::eval_gt (const mpfr_float_backend< digits10, AllocationType > &a, const T &b) BOOST_NOEXCEPT
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_add (mpfr_float_backend< D1, A1 > &result, const mpfr_float_backend< D2, A2 > &o)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_subtract (mpfr_float_backend< D1, A1 > &result, const mpfr_float_backend< D2, A2 > &o)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_multiply (mpfr_float_backend< D1, A1 > &result, const mpfr_float_backend< D2, A2 > &o)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_divide (mpfr_float_backend< D1, A1 > &result, const mpfr_float_backend< D2, A2 > &o)
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
void boost::multiprecision::backends::eval_add (mpfr_float_backend< digits10, AllocationType > &result, unsigned long i)
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
void boost::multiprecision::backends::eval_subtract (mpfr_float_backend< digits10, AllocationType > &result, unsigned long i)
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
void boost::multiprecision::backends::eval_multiply (mpfr_float_backend< digits10, AllocationType > &result, unsigned long i)
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
void boost::multiprecision::backends::eval_divide (mpfr_float_backend< digits10, AllocationType > &result, unsigned long i)
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
void boost::multiprecision::backends::eval_add (mpfr_float_backend< digits10, AllocationType > &result, long i)
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
void boost::multiprecision::backends::eval_subtract (mpfr_float_backend< digits10, AllocationType > &result, long i)
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
void boost::multiprecision::backends::eval_multiply (mpfr_float_backend< digits10, AllocationType > &result, long i)
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
void boost::multiprecision::backends::eval_divide (mpfr_float_backend< digits10, AllocationType > &result, long i)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2, unsigned D3>
void boost::multiprecision::backends::eval_add (mpfr_float_backend< D1, A1 > &a, const mpfr_float_backend< D2, A2 > &x, const mpfr_float_backend< D3 > &y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_add (mpfr_float_backend< D1, A1 > &a, const mpfr_float_backend< D2, A2 > &x, unsigned long y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_add (mpfr_float_backend< D1, A1 > &a, const mpfr_float_backend< D2, A2 > &x, long y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_add (mpfr_float_backend< D1, A1 > &a, unsigned long x, const mpfr_float_backend< D2, A2 > &y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_add (mpfr_float_backend< D1, A1 > &a, long x, const mpfr_float_backend< D2, A2 > &y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2, unsigned D3>
void boost::multiprecision::backends::eval_subtract (mpfr_float_backend< D1, A1 > &a, const mpfr_float_backend< D2, A2 > &x, const mpfr_float_backend< D3 > &y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_subtract (mpfr_float_backend< D1, A1 > &a, const mpfr_float_backend< D2, A2 > &x, unsigned long y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_subtract (mpfr_float_backend< D1, A1 > &a, const mpfr_float_backend< D2, A2 > &x, long y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_subtract (mpfr_float_backend< D1, A1 > &a, unsigned long x, const mpfr_float_backend< D2, A2 > &y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_subtract (mpfr_float_backend< D1, A1 > &a, long x, const mpfr_float_backend< D2, A2 > &y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2, unsigned D3>
void boost::multiprecision::backends::eval_multiply (mpfr_float_backend< D1, A1 > &a, const mpfr_float_backend< D2, A2 > &x, const mpfr_float_backend< D3 > &y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_multiply (mpfr_float_backend< D1, A1 > &a, const mpfr_float_backend< D2, A2 > &x, unsigned long y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_multiply (mpfr_float_backend< D1, A1 > &a, const mpfr_float_backend< D2, A2 > &x, long y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_multiply (mpfr_float_backend< D1, A1 > &a, unsigned long x, const mpfr_float_backend< D2, A2 > &y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_multiply (mpfr_float_backend< D1, A1 > &a, long x, const mpfr_float_backend< D2, A2 > &y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2, unsigned D3>
void boost::multiprecision::backends::eval_divide (mpfr_float_backend< D1, A1 > &a, const mpfr_float_backend< D2, A2 > &x, const mpfr_float_backend< D3 > &y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_divide (mpfr_float_backend< D1, A1 > &a, const mpfr_float_backend< D2, A2 > &x, unsigned long y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_divide (mpfr_float_backend< D1, A1 > &a, const mpfr_float_backend< D2, A2 > &x, long y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_divide (mpfr_float_backend< D1, A1 > &a, unsigned long x, const mpfr_float_backend< D2, A2 > &y)
 
template<unsigned D1, unsigned D2, mpfr_allocation_type A1, mpfr_allocation_type A2>
void boost::multiprecision::backends::eval_divide (mpfr_float_backend< D1, A1 > &a, long x, const mpfr_float_backend< D2, A2 > &y)
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
bool boost::multiprecision::backends::eval_is_zero (const mpfr_float_backend< digits10, AllocationType > &val) BOOST_NOEXCEPT
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
int boost::multiprecision::backends::eval_get_sign (const mpfr_float_backend< digits10, AllocationType > &val) BOOST_NOEXCEPT
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
void boost::multiprecision::backends::eval_convert_to (unsigned long *result, const mpfr_float_backend< digits10, AllocationType > &val)
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
void boost::multiprecision::backends::eval_convert_to (long *result, const mpfr_float_backend< digits10, AllocationType > &val)
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
void boost::multiprecision::backends::eval_convert_to (double *result, const mpfr_float_backend< digits10, AllocationType > &val) BOOST_NOEXCEPT
 
template<unsigned digits10, mpfr_allocation_type AllocationType>
void boost::multiprecision::backends::eval_convert_to (long double *result, const mpfr_float_backend< digits10, AllocationType > &val) BOOST_NOEXCEPT
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_sqrt (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &val)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_abs (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &val)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_fabs (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &val)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_ceil (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &val)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_floor (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &val)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_trunc (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &val)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_ldexp (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &val, long e)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_frexp (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &val, int *e)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_frexp (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &val, long *e)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
int boost::multiprecision::backends::eval_fpclassify (const mpfr_float_backend< Digits10, AllocateType > &val) BOOST_NOEXCEPT
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_pow (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &b, const mpfr_float_backend< Digits10, AllocateType > &e)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType, class Integer >
enable_if< mpl::and_
< is_signed< Integer >
, mpl::bool_< (sizeof(Integer)
<=sizeof(long))> > >::type 
boost::multiprecision::backends::eval_pow (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &b, const Integer &e)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType, class Integer >
enable_if< mpl::and_
< is_unsigned< Integer >
, mpl::bool_< (sizeof(Integer)
<=sizeof(long))> > >::type 
boost::multiprecision::backends::eval_pow (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &b, const Integer &e)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_exp (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &arg)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_log (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &arg)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_log10 (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &arg)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_sin (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &arg)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_cos (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &arg)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_tan (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &arg)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_asin (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &arg)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_acos (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &arg)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_atan (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &arg)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_atan2 (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &arg1, const mpfr_float_backend< Digits10, AllocateType > &arg2)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_sinh (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &arg)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_cosh (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &arg)
 
template<unsigned Digits10, mpfr_allocation_type AllocateType>
void boost::multiprecision::backends::eval_tanh (mpfr_float_backend< Digits10, AllocateType > &result, const mpfr_float_backend< Digits10, AllocateType > &arg)
 
template<>
int boost::math::tools::digits< boost::multiprecision::mpfr_float > ()
 

Macro Definition Documentation

#define BOOST_MP_ENABLE_IF_WORKAROUND