#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 r19850 = x;
        float r19851 = 1;
        float r19852 = r19850 + r19851;
        float r19853 = n;
        float r19854 = r19851 / r19853;
        float r19855 = pow(r19852, r19854);
        float r19856 = pow(r19850, r19854);
        float r19857 = r19855 - r19856;
        return r19857;
}

double f_id(double x, double n) {
        double r19858 = x;
        double r19859 = 1;
        double r19860 = r19858 + r19859;
        double r19861 = n;
        double r19862 = r19859 / r19861;
        double r19863 = pow(r19860, r19862);
        double r19864 = pow(r19858, r19862);
        double r19865 = r19863 - r19864;
        return r19865;
}


double f_of(float x, float n) {
        float r19866 = n;
        float r19867 = -9.666549003769692e+20;
        bool r19868 = r19866 <= r19867;
        float r19869 = 1;
        float r19870 = x;
        float r19871 = r19869 / r19870;
        float r19872 = r19871 / r19866;
        float r19873 = 1/2;
        float r19874 = r19873 / r19866;
        float r19875 = r19870 * r19870;
        float r19876 = r19874 / r19875;
        float r19877 = exp(r19876);
        float r19878 = log(r19877);
        float r19879 = r19872 - r19878;
        float r19880 = log(r19870);
        float r19881 = r19870 * r19866;
        float r19882 = r19880 / r19881;
        float r19883 = r19882 / r19866;
        float r19884 = r19879 - r19883;
        float r19885 = 1.3282366026080804e+18;
        bool r19886 = r19866 <= r19885;
        float r19887 = r19869 + r19870;
        float r19888 = r19869 / r19866;
        float r19889 = pow(r19887, r19888);
        float r19890 = pow(r19870, r19888);
        float r19891 = r19889 - r19890;
        float r19892 = exp(r19891);
        float r19893 = log(r19892);
        float r19894 = r19886 ? r19893 : r19884;
        float r19895 = r19868 ? r19884 : r19894;
        return r19895;
}

double f_od(double x, double n) {
        double r19896 = n;
        double r19897 = -9.666549003769692e+20;
        bool r19898 = r19896 <= r19897;
        double r19899 = 1;
        double r19900 = x;
        double r19901 = r19899 / r19900;
        double r19902 = r19901 / r19896;
        double r19903 = 1/2;
        double r19904 = r19903 / r19896;
        double r19905 = r19900 * r19900;
        double r19906 = r19904 / r19905;
        double r19907 = exp(r19906);
        double r19908 = log(r19907);
        double r19909 = r19902 - r19908;
        double r19910 = log(r19900);
        double r19911 = r19900 * r19896;
        double r19912 = r19910 / r19911;
        double r19913 = r19912 / r19896;
        double r19914 = r19909 - r19913;
        double r19915 = 1.3282366026080804e+18;
        bool r19916 = r19896 <= r19915;
        double r19917 = r19899 + r19900;
        double r19918 = r19899 / r19896;
        double r19919 = pow(r19917, r19918);
        double r19920 = pow(r19900, r19918);
        double r19921 = r19919 - r19920;
        double r19922 = exp(r19921);
        double r19923 = log(r19922);
        double r19924 = r19916 ? r19923 : r19914;
        double r19925 = r19898 ? r19914 : r19924;
        return r19925;
}

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 r19926, r19927, r19928, r19929, r19930, r19931, r19932, r19933;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19926);
        mpfr_init_set_str(r19927, "1", 10, MPFR_RNDN);
        mpfr_init(r19928);
        mpfr_init(r19929);
        mpfr_init(r19930);
        mpfr_init(r19931);
        mpfr_init(r19932);
        mpfr_init(r19933);
}

double f_im(double x, double n) {
        mpfr_set_d(r19926, x, MPFR_RNDN);
        ;
        mpfr_add(r19928, r19926, r19927, MPFR_RNDN);
        mpfr_set_d(r19929, n, MPFR_RNDN);
        mpfr_div(r19930, r19927, r19929, MPFR_RNDN);
        mpfr_pow(r19931, r19928, r19930, MPFR_RNDN);
        mpfr_pow(r19932, r19926, r19930, MPFR_RNDN);
        mpfr_sub(r19933, r19931, r19932, MPFR_RNDN);
        return mpfr_get_d(r19933, MPFR_RNDN);
}

static mpfr_t r19934, r19935, r19936, r19937, r19938, r19939, r19940, r19941, r19942, r19943, r19944, r19945, r19946, r19947, r19948, r19949, r19950, r19951, r19952, r19953, r19954, r19955, r19956, r19957, r19958, r19959, r19960, r19961, r19962, r19963;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19934);
        mpfr_init_set_str(r19935, "-9.666549003769692e+20", 10, MPFR_RNDN);
        mpfr_init(r19936);
        mpfr_init_set_str(r19937, "1", 10, MPFR_RNDN);
        mpfr_init(r19938);
        mpfr_init(r19939);
        mpfr_init(r19940);
        mpfr_init_set_str(r19941, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19942);
        mpfr_init(r19943);
        mpfr_init(r19944);
        mpfr_init(r19945);
        mpfr_init(r19946);
        mpfr_init(r19947);
        mpfr_init(r19948);
        mpfr_init(r19949);
        mpfr_init(r19950);
        mpfr_init(r19951);
        mpfr_init(r19952);
        mpfr_init_set_str(r19953, "1.3282366026080804e+18", 10, MPFR_RNDN);
        mpfr_init(r19954);
        mpfr_init(r19955);
        mpfr_init(r19956);
        mpfr_init(r19957);
        mpfr_init(r19958);
        mpfr_init(r19959);
        mpfr_init(r19960);
        mpfr_init(r19961);
        mpfr_init(r19962);
        mpfr_init(r19963);
}

double f_fm(double x, double n) {
        mpfr_set_d(r19934, n, MPFR_RNDN);
        ;
        mpfr_set_si(r19936, mpfr_cmp(r19934, r19935) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19938, x, MPFR_RNDN);
        mpfr_div(r19939, r19937, r19938, MPFR_RNDN);
        mpfr_div(r19940, r19939, r19934, MPFR_RNDN);
        ;
        mpfr_div(r19942, r19941, r19934, MPFR_RNDN);
        mpfr_mul(r19943, r19938, r19938, MPFR_RNDN);
        mpfr_div(r19944, r19942, r19943, MPFR_RNDN);
        mpfr_exp(r19945, r19944, MPFR_RNDN);
        mpfr_log(r19946, r19945, MPFR_RNDN);
        mpfr_sub(r19947, r19940, r19946, MPFR_RNDN);
        mpfr_log(r19948, r19938, MPFR_RNDN);
        mpfr_mul(r19949, r19938, r19934, MPFR_RNDN);
        mpfr_div(r19950, r19948, r19949, MPFR_RNDN);
        mpfr_div(r19951, r19950, r19934, MPFR_RNDN);
        mpfr_sub(r19952, r19947, r19951, MPFR_RNDN);
        ;
        mpfr_set_si(r19954, mpfr_cmp(r19934, r19953) <= 0, MPFR_RNDN);
        mpfr_add(r19955, r19937, r19938, MPFR_RNDN);
        mpfr_div(r19956, r19937, r19934, MPFR_RNDN);
        mpfr_pow(r19957, r19955, r19956, MPFR_RNDN);
        mpfr_pow(r19958, r19938, r19956, MPFR_RNDN);
        mpfr_sub(r19959, r19957, r19958, MPFR_RNDN);
        mpfr_exp(r19960, r19959, MPFR_RNDN);
        mpfr_log(r19961, r19960, MPFR_RNDN);
        if (mpfr_get_si(r19954, MPFR_RNDN)) { mpfr_set(r19962, r19961, MPFR_RNDN); } else { mpfr_set(r19962, r19952, MPFR_RNDN); };
        if (mpfr_get_si(r19936, MPFR_RNDN)) { mpfr_set(r19963, r19952, MPFR_RNDN); } else { mpfr_set(r19963, r19962, MPFR_RNDN); };
        return mpfr_get_d(r19963, MPFR_RNDN);
}

static mpfr_t r19964, r19965, r19966, r19967, r19968, r19969, r19970, r19971, r19972, r19973, r19974, r19975, r19976, r19977, r19978, r19979, r19980, r19981, r19982, r19983, r19984, r19985, r19986, r19987, r19988, r19989, r19990, r19991, r19992, r19993;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19964);
        mpfr_init_set_str(r19965, "-9.666549003769692e+20", 10, MPFR_RNDN);
        mpfr_init(r19966);
        mpfr_init_set_str(r19967, "1", 10, MPFR_RNDN);
        mpfr_init(r19968);
        mpfr_init(r19969);
        mpfr_init(r19970);
        mpfr_init_set_str(r19971, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19972);
        mpfr_init(r19973);
        mpfr_init(r19974);
        mpfr_init(r19975);
        mpfr_init(r19976);
        mpfr_init(r19977);
        mpfr_init(r19978);
        mpfr_init(r19979);
        mpfr_init(r19980);
        mpfr_init(r19981);
        mpfr_init(r19982);
        mpfr_init_set_str(r19983, "1.3282366026080804e+18", 10, MPFR_RNDN);
        mpfr_init(r19984);
        mpfr_init(r19985);
        mpfr_init(r19986);
        mpfr_init(r19987);
        mpfr_init(r19988);
        mpfr_init(r19989);
        mpfr_init(r19990);
        mpfr_init(r19991);
        mpfr_init(r19992);
        mpfr_init(r19993);
}

double f_dm(double x, double n) {
        mpfr_set_d(r19964, n, MPFR_RNDN);
        ;
        mpfr_set_si(r19966, mpfr_cmp(r19964, r19965) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19968, x, MPFR_RNDN);
        mpfr_div(r19969, r19967, r19968, MPFR_RNDN);
        mpfr_div(r19970, r19969, r19964, MPFR_RNDN);
        ;
        mpfr_div(r19972, r19971, r19964, MPFR_RNDN);
        mpfr_mul(r19973, r19968, r19968, MPFR_RNDN);
        mpfr_div(r19974, r19972, r19973, MPFR_RNDN);
        mpfr_exp(r19975, r19974, MPFR_RNDN);
        mpfr_log(r19976, r19975, MPFR_RNDN);
        mpfr_sub(r19977, r19970, r19976, MPFR_RNDN);
        mpfr_log(r19978, r19968, MPFR_RNDN);
        mpfr_mul(r19979, r19968, r19964, MPFR_RNDN);
        mpfr_div(r19980, r19978, r19979, MPFR_RNDN);
        mpfr_div(r19981, r19980, r19964, MPFR_RNDN);
        mpfr_sub(r19982, r19977, r19981, MPFR_RNDN);
        ;
        mpfr_set_si(r19984, mpfr_cmp(r19964, r19983) <= 0, MPFR_RNDN);
        mpfr_add(r19985, r19967, r19968, MPFR_RNDN);
        mpfr_div(r19986, r19967, r19964, MPFR_RNDN);
        mpfr_pow(r19987, r19985, r19986, MPFR_RNDN);
        mpfr_pow(r19988, r19968, r19986, MPFR_RNDN);
        mpfr_sub(r19989, r19987, r19988, MPFR_RNDN);
        mpfr_exp(r19990, r19989, MPFR_RNDN);
        mpfr_log(r19991, r19990, MPFR_RNDN);
        if (mpfr_get_si(r19984, MPFR_RNDN)) { mpfr_set(r19992, r19991, MPFR_RNDN); } else { mpfr_set(r19992, r19982, MPFR_RNDN); };
        if (mpfr_get_si(r19966, MPFR_RNDN)) { mpfr_set(r19993, r19982, MPFR_RNDN); } else { mpfr_set(r19993, r19992, MPFR_RNDN); };
        return mpfr_get_d(r19993, MPFR_RNDN);
}

