#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "2nthrt (problem 3.4.6)";

double f_if(float x, float n) {
        float r32813 = x;
        float r32814 = 1.0f;
        float r32815 = r32813 + r32814;
        float r32816 = n;
        float r32817 = r32814 / r32816;
        float r32818 = pow(r32815, r32817);
        float r32819 = pow(r32813, r32817);
        float r32820 = r32818 - r32819;
        return r32820;
}

double f_id(double x, double n) {
        double r32821 = x;
        double r32822 = 1.0;
        double r32823 = r32821 + r32822;
        double r32824 = n;
        double r32825 = r32822 / r32824;
        double r32826 = pow(r32823, r32825);
        double r32827 = pow(r32821, r32825);
        double r32828 = r32826 - r32827;
        return r32828;
}


double f_of(float x, float n) {
        float r32829 = n;
        float r32830 = -0.06870261394782061f;
        bool r32831 = r32829 <= r32830;
        float r32832 = 1.0f;
        float r32833 = x;
        float r32834 = r32829 * r32833;
        float r32835 = r32832 / r32834;
        float r32836 = log(r32833);
        float r32837 = r32829 * r32829;
        float r32838 = r32837 * r32833;
        float r32839 = r32836 / r32838;
        float r32840 = 0.5f;
        float r32841 = r32833 * r32833;
        float r32842 = r32829 * r32841;
        float r32843 = r32832 / r32842;
        float r32844 = r32840 * r32843;
        float r32845 = r32839 + r32844;
        float r32846 = r32835 - r32845;
        float r32847 = 361619410.9503674f;
        bool r32848 = r32829 <= r32847;
        float r32849 = r32833 + r32832;
        float r32850 = r32832 / r32829;
        float r32851 = pow(r32849, r32850);
        float r32852 = pow(r32833, r32850);
        float r32853 = r32851 - r32852;
        float r32854 = cbrt(r32853);
        float r32855 = cbrt(r32854);
        float r32856 = r32855 * (r32855 * r32855);
        float r32857 = r32856 * (r32856 * r32856);
        float r32858 = r32848 ? r32857 : r32846;
        float r32859 = r32831 ? r32846 : r32858;
        return r32859;
}

double f_od(double x, double n) {
        double r32860 = n;
        double r32861 = -0.06870261394782061;
        bool r32862 = r32860 <= r32861;
        double r32863 = 1.0;
        double r32864 = x;
        double r32865 = r32860 * r32864;
        double r32866 = r32863 / r32865;
        double r32867 = log(r32864);
        double r32868 = r32860 * r32860;
        double r32869 = r32868 * r32864;
        double r32870 = r32867 / r32869;
        double r32871 = 0.5;
        double r32872 = r32864 * r32864;
        double r32873 = r32860 * r32872;
        double r32874 = r32863 / r32873;
        double r32875 = r32871 * r32874;
        double r32876 = r32870 + r32875;
        double r32877 = r32866 - r32876;
        double r32878 = 361619410.9503674;
        bool r32879 = r32860 <= r32878;
        double r32880 = r32864 + r32863;
        double r32881 = r32863 / r32860;
        double r32882 = pow(r32880, r32881);
        double r32883 = pow(r32864, r32881);
        double r32884 = r32882 - r32883;
        double r32885 = cbrt(r32884);
        double r32886 = cbrt(r32885);
        double r32887 = r32886 * (r32886 * r32886);
        double r32888 = r32887 * (r32887 * r32887);
        double r32889 = r32879 ? r32888 : r32877;
        double r32890 = r32862 ? r32877 : r32889;
        return r32890;
}

void mpfr_fmod2(mpfr_t r, mpfr_t n, mpfr_t d, mpfr_rnd_t rmd) {
        mpfr_fmod(r, n, d, rmd);
        if (mpfr_cmp_ui(r, 0) < 0) mpfr_add(r, r, d, rmd);
}


static mpfr_t r32891, r32892, r32893, r32894, r32895, r32896, r32897, r32898;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r32891);
        mpfr_init_set_str(r32892, "1", 10, MPFR_RNDN);
        mpfr_init(r32893);
        mpfr_init(r32894);
        mpfr_init(r32895);
        mpfr_init(r32896);
        mpfr_init(r32897);
        mpfr_init(r32898);
}

double f_im(double x, double n) {
        mpfr_set_d(r32891, x, MPFR_RNDN);
        ;
        mpfr_add(r32893, r32891, r32892, MPFR_RNDN);
        mpfr_set_d(r32894, n, MPFR_RNDN);
        mpfr_div(r32895, r32892, r32894, MPFR_RNDN);
        mpfr_pow(r32896, r32893, r32895, MPFR_RNDN);
        mpfr_pow(r32897, r32891, r32895, MPFR_RNDN);
        mpfr_sub(r32898, r32896, r32897, MPFR_RNDN);
        return mpfr_get_d(r32898, MPFR_RNDN);
}

static mpfr_t r32899, r32900, r32901, r32902, r32903, r32904, r32905, r32906, r32907, r32908, r32909, r32910, r32911, r32912, r32913, r32914, r32915, r32916, r32917, r32918, r32919, r32920, r32921, r32922, r32923, r32924, r32925, r32926, r32927, r32928, r32929;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r32899);
        mpfr_init_set_str(r32900, "-0.06870261394782061", 10, MPFR_RNDN);
        mpfr_init(r32901);
        mpfr_init_set_str(r32902, "1", 10, MPFR_RNDN);
        mpfr_init(r32903);
        mpfr_init(r32904);
        mpfr_init(r32905);
        mpfr_init(r32906);
        mpfr_init(r32907);
        mpfr_init(r32908);
        mpfr_init(r32909);
        mpfr_init_set_str(r32910, "1/2", 10, MPFR_RNDN);
        mpfr_init(r32911);
        mpfr_init(r32912);
        mpfr_init(r32913);
        mpfr_init(r32914);
        mpfr_init(r32915);
        mpfr_init(r32916);
        mpfr_init_set_str(r32917, "361619410.9503674", 10, MPFR_RNDN);
        mpfr_init(r32918);
        mpfr_init(r32919);
        mpfr_init(r32920);
        mpfr_init(r32921);
        mpfr_init(r32922);
        mpfr_init(r32923);
        mpfr_init(r32924);
        mpfr_init(r32925);
        mpfr_init(r32926);
        mpfr_init(r32927);
        mpfr_init(r32928);
        mpfr_init(r32929);
}

double f_fm(double x, double n) {
        mpfr_set_d(r32899, n, MPFR_RNDN);
        ;
        mpfr_set_si(r32901, mpfr_cmp(r32899, r32900) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r32903, x, MPFR_RNDN);
        mpfr_mul(r32904, r32899, r32903, MPFR_RNDN);
        mpfr_div(r32905, r32902, r32904, MPFR_RNDN);
        mpfr_log(r32906, r32903, MPFR_RNDN);
        mpfr_sqr(r32907, r32899, MPFR_RNDN);
        mpfr_mul(r32908, r32907, r32903, MPFR_RNDN);
        mpfr_div(r32909, r32906, r32908, MPFR_RNDN);
        ;
        mpfr_sqr(r32911, r32903, MPFR_RNDN);
        mpfr_mul(r32912, r32899, r32911, MPFR_RNDN);
        mpfr_div(r32913, r32902, r32912, MPFR_RNDN);
        mpfr_mul(r32914, r32910, r32913, MPFR_RNDN);
        mpfr_add(r32915, r32909, r32914, MPFR_RNDN);
        mpfr_sub(r32916, r32905, r32915, MPFR_RNDN);
        ;
        mpfr_set_si(r32918, mpfr_cmp(r32899, r32917) <= 0, MPFR_RNDN);
        mpfr_add(r32919, r32903, r32902, MPFR_RNDN);
        mpfr_div(r32920, r32902, r32899, MPFR_RNDN);
        mpfr_pow(r32921, r32919, r32920, MPFR_RNDN);
        mpfr_pow(r32922, r32903, r32920, MPFR_RNDN);
        mpfr_sub(r32923, r32921, r32922, MPFR_RNDN);
        mpfr_cbrt(r32924, r32923, MPFR_RNDN);
        mpfr_cbrt(r32925, r32924, MPFR_RNDN);
        mpfr_mul(r32926, r32925, r32925, MPFR_RNDN); mpfr_mul(r32926, r32926, r32925, MPFR_RNDN);
        mpfr_mul(r32927, r32926, r32926, MPFR_RNDN); mpfr_mul(r32927, r32927, r32926, MPFR_RNDN);
        if (mpfr_get_si(r32918, MPFR_RNDN)) { mpfr_set(r32928, r32927, MPFR_RNDN); } else { mpfr_set(r32928, r32916, MPFR_RNDN); };
        if (mpfr_get_si(r32901, MPFR_RNDN)) { mpfr_set(r32929, r32916, MPFR_RNDN); } else { mpfr_set(r32929, r32928, MPFR_RNDN); };
        return mpfr_get_d(r32929, MPFR_RNDN);
}

static mpfr_t r32930, r32931, r32932, r32933, r32934, r32935, r32936, r32937, r32938, r32939, r32940, r32941, r32942, r32943, r32944, r32945, r32946, r32947, r32948, r32949, r32950, r32951, r32952, r32953, r32954, r32955, r32956, r32957, r32958, r32959, r32960;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r32930);
        mpfr_init_set_str(r32931, "-0.06870261394782061", 10, MPFR_RNDN);
        mpfr_init(r32932);
        mpfr_init_set_str(r32933, "1", 10, MPFR_RNDN);
        mpfr_init(r32934);
        mpfr_init(r32935);
        mpfr_init(r32936);
        mpfr_init(r32937);
        mpfr_init(r32938);
        mpfr_init(r32939);
        mpfr_init(r32940);
        mpfr_init_set_str(r32941, "1/2", 10, MPFR_RNDN);
        mpfr_init(r32942);
        mpfr_init(r32943);
        mpfr_init(r32944);
        mpfr_init(r32945);
        mpfr_init(r32946);
        mpfr_init(r32947);
        mpfr_init_set_str(r32948, "361619410.9503674", 10, MPFR_RNDN);
        mpfr_init(r32949);
        mpfr_init(r32950);
        mpfr_init(r32951);
        mpfr_init(r32952);
        mpfr_init(r32953);
        mpfr_init(r32954);
        mpfr_init(r32955);
        mpfr_init(r32956);
        mpfr_init(r32957);
        mpfr_init(r32958);
        mpfr_init(r32959);
        mpfr_init(r32960);
}

double f_dm(double x, double n) {
        mpfr_set_d(r32930, n, MPFR_RNDN);
        ;
        mpfr_set_si(r32932, mpfr_cmp(r32930, r32931) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r32934, x, MPFR_RNDN);
        mpfr_mul(r32935, r32930, r32934, MPFR_RNDN);
        mpfr_div(r32936, r32933, r32935, MPFR_RNDN);
        mpfr_log(r32937, r32934, MPFR_RNDN);
        mpfr_sqr(r32938, r32930, MPFR_RNDN);
        mpfr_mul(r32939, r32938, r32934, MPFR_RNDN);
        mpfr_div(r32940, r32937, r32939, MPFR_RNDN);
        ;
        mpfr_sqr(r32942, r32934, MPFR_RNDN);
        mpfr_mul(r32943, r32930, r32942, MPFR_RNDN);
        mpfr_div(r32944, r32933, r32943, MPFR_RNDN);
        mpfr_mul(r32945, r32941, r32944, MPFR_RNDN);
        mpfr_add(r32946, r32940, r32945, MPFR_RNDN);
        mpfr_sub(r32947, r32936, r32946, MPFR_RNDN);
        ;
        mpfr_set_si(r32949, mpfr_cmp(r32930, r32948) <= 0, MPFR_RNDN);
        mpfr_add(r32950, r32934, r32933, MPFR_RNDN);
        mpfr_div(r32951, r32933, r32930, MPFR_RNDN);
        mpfr_pow(r32952, r32950, r32951, MPFR_RNDN);
        mpfr_pow(r32953, r32934, r32951, MPFR_RNDN);
        mpfr_sub(r32954, r32952, r32953, MPFR_RNDN);
        mpfr_cbrt(r32955, r32954, MPFR_RNDN);
        mpfr_cbrt(r32956, r32955, MPFR_RNDN);
        mpfr_mul(r32957, r32956, r32956, MPFR_RNDN); mpfr_mul(r32957, r32957, r32956, MPFR_RNDN);
        mpfr_mul(r32958, r32957, r32957, MPFR_RNDN); mpfr_mul(r32958, r32958, r32957, MPFR_RNDN);
        if (mpfr_get_si(r32949, MPFR_RNDN)) { mpfr_set(r32959, r32958, MPFR_RNDN); } else { mpfr_set(r32959, r32947, MPFR_RNDN); };
        if (mpfr_get_si(r32932, MPFR_RNDN)) { mpfr_set(r32960, r32947, MPFR_RNDN); } else { mpfr_set(r32960, r32959, MPFR_RNDN); };
        return mpfr_get_d(r32960, MPFR_RNDN);
}

