### Multiprecsion float

With Boost Multiprecision float, we can achieve precision up to 50 and 100 decimal with cpp_float_50 and cpp_dec_float_100 respectively.
Below is C++ code to calculate Area of circle with different precision by using float, decimal and cpp_float_50 type.
#include<iostream>
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <boost/math/constants/constants.hpp>

using boost::multiprecision::cpp_dec_float_50;

using namespace std;

template<typename T>
inline T area_of_a_circle(T r)
{
// pi represent predefined constant having value
// 3.1415926535897932384...
using boost::math::constants::pi;
return pi<T>() * r * r;

int main()

double radius_d = 123.0 / 100;

cpp_dec_float_50 r_mp = 123.0 / 100;
cpp_dec_float_50 area_mp = area_of_a_circle(r_mp);

// numeric_limits::digits10 represent the number
// of decimal digits that can be held of particular
// data type without any loss.

// Area by using float data type
cout << "Float: "
<< setprecision(numeric_limits<float>::digits10)
<< area_f << endl;

// Area by using double data type
cout << "Double: "
<<setprecision(numeric_limits<double>::digits10)
<< area_d << endl;

// Area by using Boost Multiprecision
cout << "Boost Multiprecision: "
<< setprecision(numeric_limits<cpp_dec_float_50>::digits10)
<< area_mp << endl;
return 0;
}

OUTPUT:
Float: 4.75292
Double: 4.752915525616
Boost Multiprecision: 4.7529155256159980531876290929438093413108253981451