#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 r18948 = x;
        float r18949 = 1.0f;
        float r18950 = r18948 + r18949;
        float r18951 = n;
        float r18952 = r18949 / r18951;
        float r18953 = pow(r18950, r18952);
        float r18954 = pow(r18948, r18952);
        float r18955 = r18953 - r18954;
        return r18955;
}

double f_id(double x, double n) {
        double r18956 = x;
        double r18957 = 1.0;
        double r18958 = r18956 + r18957;
        double r18959 = n;
        double r18960 = r18957 / r18959;
        double r18961 = pow(r18958, r18960);
        double r18962 = pow(r18956, r18960);
        double r18963 = r18961 - r18962;
        return r18963;
}


double f_of(float x, float n) {
        float r18964 = n;
        float r18965 = -4088346716.1158066f;
        bool r18966 = r18964 <= r18965;
        float r18967 = 1.0f;
        float r18968 = x;
        float r18969 = r18968 * r18964;
        float r18970 = r18967 / r18969;
        float r18971 = 0.5f;
        float r18972 = r18971 / r18968;
        float r18973 = r18972 / r18969;
        float r18974 = r18970 - r18973;
        float r18975 = log(r18968);
        float r18976 = r18975 / r18964;
        float r18977 = r18976 / r18969;
        float r18978 = r18974 - r18977;
        float r18979 = 49343267539819.87f;
        bool r18980 = r18964 <= r18979;
        float r18981 = r18968 + r18967;
        float r18982 = sqrt(r18981);
        float r18983 = r18967 / r18964;
        float r18984 = pow(r18982, r18983);
        float r18985 = pow(r18968, r18983);
        float r18986 = sqrt(r18985);
        float r18987 = r18984 + r18986;
        float r18988 = exp(r18976);
        float r18989 = sqrt(r18988);
        float r18990 = r18967 - r18989;
        float r18991 = r18987 * r18990;
        float r18992 = r18980 ? r18991 : r18978;
        float r18993 = r18966 ? r18978 : r18992;
        return r18993;
}

double f_od(double x, double n) {
        double r18994 = n;
        double r18995 = -4088346716.1158066;
        bool r18996 = r18994 <= r18995;
        double r18997 = 1.0;
        double r18998 = x;
        double r18999 = r18998 * r18994;
        double r19000 = r18997 / r18999;
        double r19001 = 0.5;
        double r19002 = r19001 / r18998;
        double r19003 = r19002 / r18999;
        double r19004 = r19000 - r19003;
        double r19005 = log(r18998);
        double r19006 = r19005 / r18994;
        double r19007 = r19006 / r18999;
        double r19008 = r19004 - r19007;
        double r19009 = 49343267539819.87;
        bool r19010 = r18994 <= r19009;
        double r19011 = r18998 + r18997;
        double r19012 = sqrt(r19011);
        double r19013 = r18997 / r18994;
        double r19014 = pow(r19012, r19013);
        double r19015 = pow(r18998, r19013);
        double r19016 = sqrt(r19015);
        double r19017 = r19014 + r19016;
        double r19018 = exp(r19006);
        double r19019 = sqrt(r19018);
        double r19020 = r18997 - r19019;
        double r19021 = r19017 * r19020;
        double r19022 = r19010 ? r19021 : r19008;
        double r19023 = r18996 ? r19008 : r19022;
        return r19023;
}

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 r19024, r19025, r19026, r19027, r19028, r19029, r19030, r19031;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19024);
        mpfr_init_set_str(r19025, "1", 10, MPFR_RNDN);
        mpfr_init(r19026);
        mpfr_init(r19027);
        mpfr_init(r19028);
        mpfr_init(r19029);
        mpfr_init(r19030);
        mpfr_init(r19031);
}

double f_im(double x, double n) {
        mpfr_set_d(r19024, x, MPFR_RNDN);
        ;
        mpfr_add(r19026, r19024, r19025, MPFR_RNDN);
        mpfr_set_d(r19027, n, MPFR_RNDN);
        mpfr_div(r19028, r19025, r19027, MPFR_RNDN);
        mpfr_pow(r19029, r19026, r19028, MPFR_RNDN);
        mpfr_pow(r19030, r19024, r19028, MPFR_RNDN);
        mpfr_sub(r19031, r19029, r19030, MPFR_RNDN);
        return mpfr_get_d(r19031, MPFR_RNDN);
}

static mpfr_t r19032, r19033, r19034, r19035, r19036, r19037, r19038, r19039, r19040, r19041, r19042, r19043, r19044, r19045, r19046, r19047, r19048, r19049, r19050, r19051, r19052, r19053, r19054, r19055, r19056, r19057, r19058, r19059, r19060, r19061;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19032);
        mpfr_init_set_str(r19033, "-4088346716.1158066", 10, MPFR_RNDN);
        mpfr_init(r19034);
        mpfr_init_set_str(r19035, "1", 10, MPFR_RNDN);
        mpfr_init(r19036);
        mpfr_init(r19037);
        mpfr_init(r19038);
        mpfr_init_set_str(r19039, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19040);
        mpfr_init(r19041);
        mpfr_init(r19042);
        mpfr_init(r19043);
        mpfr_init(r19044);
        mpfr_init(r19045);
        mpfr_init(r19046);
        mpfr_init_set_str(r19047, "49343267539819.87", 10, MPFR_RNDN);
        mpfr_init(r19048);
        mpfr_init(r19049);
        mpfr_init(r19050);
        mpfr_init(r19051);
        mpfr_init(r19052);
        mpfr_init(r19053);
        mpfr_init(r19054);
        mpfr_init(r19055);
        mpfr_init(r19056);
        mpfr_init(r19057);
        mpfr_init(r19058);
        mpfr_init(r19059);
        mpfr_init(r19060);
        mpfr_init(r19061);
}

double f_fm(double x, double n) {
        mpfr_set_d(r19032, n, MPFR_RNDN);
        ;
        mpfr_set_si(r19034, mpfr_cmp(r19032, r19033) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19036, x, MPFR_RNDN);
        mpfr_mul(r19037, r19036, r19032, MPFR_RNDN);
        mpfr_div(r19038, r19035, r19037, MPFR_RNDN);
        ;
        mpfr_div(r19040, r19039, r19036, MPFR_RNDN);
        mpfr_div(r19041, r19040, r19037, MPFR_RNDN);
        mpfr_sub(r19042, r19038, r19041, MPFR_RNDN);
        mpfr_log(r19043, r19036, MPFR_RNDN);
        mpfr_div(r19044, r19043, r19032, MPFR_RNDN);
        mpfr_div(r19045, r19044, r19037, MPFR_RNDN);
        mpfr_sub(r19046, r19042, r19045, MPFR_RNDN);
        ;
        mpfr_set_si(r19048, mpfr_cmp(r19032, r19047) <= 0, MPFR_RNDN);
        mpfr_add(r19049, r19036, r19035, MPFR_RNDN);
        mpfr_sqrt(r19050, r19049, MPFR_RNDN);
        mpfr_div(r19051, r19035, r19032, MPFR_RNDN);
        mpfr_pow(r19052, r19050, r19051, MPFR_RNDN);
        mpfr_pow(r19053, r19036, r19051, MPFR_RNDN);
        mpfr_sqrt(r19054, r19053, MPFR_RNDN);
        mpfr_add(r19055, r19052, r19054, MPFR_RNDN);
        mpfr_exp(r19056, r19044, MPFR_RNDN);
        mpfr_sqrt(r19057, r19056, MPFR_RNDN);
        mpfr_sub(r19058, r19035, r19057, MPFR_RNDN);
        mpfr_mul(r19059, r19055, r19058, MPFR_RNDN);
        if (mpfr_get_si(r19048, MPFR_RNDN)) { mpfr_set(r19060, r19059, MPFR_RNDN); } else { mpfr_set(r19060, r19046, MPFR_RNDN); };
        if (mpfr_get_si(r19034, MPFR_RNDN)) { mpfr_set(r19061, r19046, MPFR_RNDN); } else { mpfr_set(r19061, r19060, MPFR_RNDN); };
        return mpfr_get_d(r19061, MPFR_RNDN);
}

static mpfr_t r19062, r19063, r19064, r19065, r19066, r19067, r19068, r19069, r19070, r19071, r19072, r19073, r19074, r19075, r19076, r19077, r19078, r19079, r19080, r19081, r19082, r19083, r19084, r19085, r19086, r19087, r19088, r19089, r19090, r19091;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19062);
        mpfr_init_set_str(r19063, "-4088346716.1158066", 10, MPFR_RNDN);
        mpfr_init(r19064);
        mpfr_init_set_str(r19065, "1", 10, MPFR_RNDN);
        mpfr_init(r19066);
        mpfr_init(r19067);
        mpfr_init(r19068);
        mpfr_init_set_str(r19069, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19070);
        mpfr_init(r19071);
        mpfr_init(r19072);
        mpfr_init(r19073);
        mpfr_init(r19074);
        mpfr_init(r19075);
        mpfr_init(r19076);
        mpfr_init_set_str(r19077, "49343267539819.87", 10, MPFR_RNDN);
        mpfr_init(r19078);
        mpfr_init(r19079);
        mpfr_init(r19080);
        mpfr_init(r19081);
        mpfr_init(r19082);
        mpfr_init(r19083);
        mpfr_init(r19084);
        mpfr_init(r19085);
        mpfr_init(r19086);
        mpfr_init(r19087);
        mpfr_init(r19088);
        mpfr_init(r19089);
        mpfr_init(r19090);
        mpfr_init(r19091);
}

double f_dm(double x, double n) {
        mpfr_set_d(r19062, n, MPFR_RNDN);
        ;
        mpfr_set_si(r19064, mpfr_cmp(r19062, r19063) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19066, x, MPFR_RNDN);
        mpfr_mul(r19067, r19066, r19062, MPFR_RNDN);
        mpfr_div(r19068, r19065, r19067, MPFR_RNDN);
        ;
        mpfr_div(r19070, r19069, r19066, MPFR_RNDN);
        mpfr_div(r19071, r19070, r19067, MPFR_RNDN);
        mpfr_sub(r19072, r19068, r19071, MPFR_RNDN);
        mpfr_log(r19073, r19066, MPFR_RNDN);
        mpfr_div(r19074, r19073, r19062, MPFR_RNDN);
        mpfr_div(r19075, r19074, r19067, MPFR_RNDN);
        mpfr_sub(r19076, r19072, r19075, MPFR_RNDN);
        ;
        mpfr_set_si(r19078, mpfr_cmp(r19062, r19077) <= 0, MPFR_RNDN);
        mpfr_add(r19079, r19066, r19065, MPFR_RNDN);
        mpfr_sqrt(r19080, r19079, MPFR_RNDN);
        mpfr_div(r19081, r19065, r19062, MPFR_RNDN);
        mpfr_pow(r19082, r19080, r19081, MPFR_RNDN);
        mpfr_pow(r19083, r19066, r19081, MPFR_RNDN);
        mpfr_sqrt(r19084, r19083, MPFR_RNDN);
        mpfr_add(r19085, r19082, r19084, MPFR_RNDN);
        mpfr_exp(r19086, r19074, MPFR_RNDN);
        mpfr_sqrt(r19087, r19086, MPFR_RNDN);
        mpfr_sub(r19088, r19065, r19087, MPFR_RNDN);
        mpfr_mul(r19089, r19085, r19088, MPFR_RNDN);
        if (mpfr_get_si(r19078, MPFR_RNDN)) { mpfr_set(r19090, r19089, MPFR_RNDN); } else { mpfr_set(r19090, r19076, MPFR_RNDN); };
        if (mpfr_get_si(r19064, MPFR_RNDN)) { mpfr_set(r19091, r19076, MPFR_RNDN); } else { mpfr_set(r19091, r19090, MPFR_RNDN); };
        return mpfr_get_d(r19091, MPFR_RNDN);
}

