#include <boost/multiprecision/cpp_dec_float.hpp>
#include <iostream>
int main()
{
using namespace boost::multiprecision;
typedef number<cpp_dec_float<10000> > number_t;
number_t earth_age = 6000; // years
number_t T = earth_age * 31557600; // seconds per Julian year
number_t g = 9.81; // m/s^2
number_t c = 299792458; // m/s
number_t phi = (g * T) / c;
number_t beta = tanh(phi);
number_t inv_gamma = sqrt(1.0 - (beta*beta));
std::cout << std::setprecision(std::numeric_limits<number_t>::max_digits10);
std::cout << "beta = " << beta << std::endl << std::endl;
std::cout << "inv_gamma = " << inv_gamma << std::endl << std::endl;
number_t earth_radius = 6371 * 1000; // meters
number_t flat_earth = 2 * earth_radius * inv_gamma;
std::cout << std::setprecision(10);
std::cout << "flat earth thickness = " << flat_earth << " meters" << std::endl << std::endl;
return 0;
}