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

char *name = "VandenBroeck and Keller, Equation (20)";

double f_if(float f) {
        float r20906 = 1;
        float r20907 = atan2(1.0, 0.0);
        float r20908 = 4;
        float r20909 = r20907 / r20908;
        float r20910 = r20906 / r20909;
        float r20911 = f;
        float r20912 = r20909 * r20911;
        float r20913 = exp(r20912);
        float r20914 = -r20912;
        float r20915 = exp(r20914);
        float r20916 = r20913 + r20915;
        float r20917 = r20913 - r20915;
        float r20918 = r20916 / r20917;
        float r20919 = log(r20918);
        float r20920 = r20910 * r20919;
        float r20921 = -r20920;
        return r20921;
}

double f_id(double f) {
        double r20922 = 1;
        double r20923 = atan2(1.0, 0.0);
        double r20924 = 4;
        double r20925 = r20923 / r20924;
        double r20926 = r20922 / r20925;
        double r20927 = f;
        double r20928 = r20925 * r20927;
        double r20929 = exp(r20928);
        double r20930 = -r20928;
        double r20931 = exp(r20930);
        double r20932 = r20929 + r20931;
        double r20933 = r20929 - r20931;
        double r20934 = r20932 / r20933;
        double r20935 = log(r20934);
        double r20936 = r20926 * r20935;
        double r20937 = -r20936;
        return r20937;
}


double f_of(float f) {
        float r20938 = 1;
        float r20939 = atan2(1.0, 0.0);
        float r20940 = 4;
        float r20941 = r20939 / r20940;
        float r20942 = r20938 / r20941;
        float r20943 = 1/61440;
        float r20944 = 5;
        float r20945 = pow(r20939, r20944);
        float r20946 = f;
        float r20947 = pow(r20946, r20944);
        float r20948 = r20945 * r20947;
        float r20949 = r20943 * r20948;
        float r20950 = 1/2;
        float r20951 = r20939 * r20946;
        float r20952 = r20950 * r20951;
        float r20953 = 1/192;
        float r20954 = 3;
        float r20955 = pow(r20939, r20954);
        float r20956 = pow(r20946, r20954);
        float r20957 = r20955 * r20956;
        float r20958 = r20953 * r20957;
        float r20959 = r20952 + r20958;
        float r20960 = r20949 + r20959;
        float r20961 = cbrt(r20960);
        float r20962 = r20961 * r20961;
        float r20963 = r20938 / r20962;
        float r20964 = log(r20963);
        float r20965 = r20942 * r20964;
        float r20966 = r20941 * r20946;
        float r20967 = exp(r20966);
        float r20968 = -r20966;
        float r20969 = exp(r20968);
        float r20970 = r20967 + r20969;
        float r20971 = r20970 / r20961;
        float r20972 = log(r20971);
        float r20973 = r20942 * r20972;
        float r20974 = r20965 + r20973;
        float r20975 = -r20974;
        return r20975;
}

double f_od(double f) {
        double r20976 = 1;
        double r20977 = atan2(1.0, 0.0);
        double r20978 = 4;
        double r20979 = r20977 / r20978;
        double r20980 = r20976 / r20979;
        double r20981 = 1/61440;
        double r20982 = 5;
        double r20983 = pow(r20977, r20982);
        double r20984 = f;
        double r20985 = pow(r20984, r20982);
        double r20986 = r20983 * r20985;
        double r20987 = r20981 * r20986;
        double r20988 = 1/2;
        double r20989 = r20977 * r20984;
        double r20990 = r20988 * r20989;
        double r20991 = 1/192;
        double r20992 = 3;
        double r20993 = pow(r20977, r20992);
        double r20994 = pow(r20984, r20992);
        double r20995 = r20993 * r20994;
        double r20996 = r20991 * r20995;
        double r20997 = r20990 + r20996;
        double r20998 = r20987 + r20997;
        double r20999 = cbrt(r20998);
        double r21000 = r20999 * r20999;
        double r21001 = r20976 / r21000;
        double r21002 = log(r21001);
        double r21003 = r20980 * r21002;
        double r21004 = r20979 * r20984;
        double r21005 = exp(r21004);
        double r21006 = -r21004;
        double r21007 = exp(r21006);
        double r21008 = r21005 + r21007;
        double r21009 = r21008 / r20999;
        double r21010 = log(r21009);
        double r21011 = r20980 * r21010;
        double r21012 = r21003 + r21011;
        double r21013 = -r21012;
        return r21013;
}

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 r21014, r21015, r21016, r21017, r21018, r21019, r21020, r21021, r21022, r21023, r21024, r21025, r21026, r21027, r21028, r21029;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r21014, "1", 10, MPFR_RNDN);
        mpfr_init(r21015);
        mpfr_init_set_str(r21016, "4", 10, MPFR_RNDN);
        mpfr_init(r21017);
        mpfr_init(r21018);
        mpfr_init(r21019);
        mpfr_init(r21020);
        mpfr_init(r21021);
        mpfr_init(r21022);
        mpfr_init(r21023);
        mpfr_init(r21024);
        mpfr_init(r21025);
        mpfr_init(r21026);
        mpfr_init(r21027);
        mpfr_init(r21028);
        mpfr_init(r21029);
}

double f_im(double f) {
        ;
        mpfr_const_pi(r21015, MPFR_RNDN);
        ;
        mpfr_div(r21017, r21015, r21016, MPFR_RNDN);
        mpfr_div(r21018, r21014, r21017, MPFR_RNDN);
        mpfr_set_d(r21019, f, MPFR_RNDN);
        mpfr_mul(r21020, r21017, r21019, MPFR_RNDN);
        mpfr_exp(r21021, r21020, MPFR_RNDN);
        mpfr_neg(r21022, r21020, MPFR_RNDN);
        mpfr_exp(r21023, r21022, MPFR_RNDN);
        mpfr_add(r21024, r21021, r21023, MPFR_RNDN);
        mpfr_sub(r21025, r21021, r21023, MPFR_RNDN);
        mpfr_div(r21026, r21024, r21025, MPFR_RNDN);
        mpfr_log(r21027, r21026, MPFR_RNDN);
        mpfr_mul(r21028, r21018, r21027, MPFR_RNDN);
        mpfr_neg(r21029, r21028, MPFR_RNDN);
        return mpfr_get_d(r21029, MPFR_RNDN);
}

static mpfr_t r21030, r21031, r21032, r21033, r21034, r21035, r21036, r21037, r21038, r21039, r21040, r21041, r21042, r21043, r21044, r21045, r21046, r21047, r21048, r21049, r21050, r21051, r21052, r21053, r21054, r21055, r21056, r21057, r21058, r21059, r21060, r21061, r21062, r21063, r21064, r21065, r21066, r21067;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r21030, "1", 10, MPFR_RNDN);
        mpfr_init(r21031);
        mpfr_init_set_str(r21032, "4", 10, MPFR_RNDN);
        mpfr_init(r21033);
        mpfr_init(r21034);
        mpfr_init_set_str(r21035, "1/61440", 10, MPFR_RNDN);
        mpfr_init_set_str(r21036, "5", 10, MPFR_RNDN);
        mpfr_init(r21037);
        mpfr_init(r21038);
        mpfr_init(r21039);
        mpfr_init(r21040);
        mpfr_init(r21041);
        mpfr_init_set_str(r21042, "1/2", 10, MPFR_RNDN);
        mpfr_init(r21043);
        mpfr_init(r21044);
        mpfr_init_set_str(r21045, "1/192", 10, MPFR_RNDN);
        mpfr_init_set_str(r21046, "3", 10, MPFR_RNDN);
        mpfr_init(r21047);
        mpfr_init(r21048);
        mpfr_init(r21049);
        mpfr_init(r21050);
        mpfr_init(r21051);
        mpfr_init(r21052);
        mpfr_init(r21053);
        mpfr_init(r21054);
        mpfr_init(r21055);
        mpfr_init(r21056);
        mpfr_init(r21057);
        mpfr_init(r21058);
        mpfr_init(r21059);
        mpfr_init(r21060);
        mpfr_init(r21061);
        mpfr_init(r21062);
        mpfr_init(r21063);
        mpfr_init(r21064);
        mpfr_init(r21065);
        mpfr_init(r21066);
        mpfr_init(r21067);
}

double f_fm(double f) {
        ;
        mpfr_const_pi(r21031, MPFR_RNDN);
        ;
        mpfr_div(r21033, r21031, r21032, MPFR_RNDN);
        mpfr_div(r21034, r21030, r21033, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r21037, r21031, r21036, MPFR_RNDN);
        mpfr_set_d(r21038, f, MPFR_RNDN);
        mpfr_pow(r21039, r21038, r21036, MPFR_RNDN);
        mpfr_mul(r21040, r21037, r21039, MPFR_RNDN);
        mpfr_mul(r21041, r21035, r21040, MPFR_RNDN);
        ;
        mpfr_mul(r21043, r21031, r21038, MPFR_RNDN);
        mpfr_mul(r21044, r21042, r21043, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r21047, r21031, r21046, MPFR_RNDN);
        mpfr_pow(r21048, r21038, r21046, MPFR_RNDN);
        mpfr_mul(r21049, r21047, r21048, MPFR_RNDN);
        mpfr_mul(r21050, r21045, r21049, MPFR_RNDN);
        mpfr_add(r21051, r21044, r21050, MPFR_RNDN);
        mpfr_add(r21052, r21041, r21051, MPFR_RNDN);
        mpfr_cbrt(r21053, r21052, MPFR_RNDN);
        mpfr_mul(r21054, r21053, r21053, MPFR_RNDN);
        mpfr_div(r21055, r21030, r21054, MPFR_RNDN);
        mpfr_log(r21056, r21055, MPFR_RNDN);
        mpfr_mul(r21057, r21034, r21056, MPFR_RNDN);
        mpfr_mul(r21058, r21033, r21038, MPFR_RNDN);
        mpfr_exp(r21059, r21058, MPFR_RNDN);
        mpfr_neg(r21060, r21058, MPFR_RNDN);
        mpfr_exp(r21061, r21060, MPFR_RNDN);
        mpfr_add(r21062, r21059, r21061, MPFR_RNDN);
        mpfr_div(r21063, r21062, r21053, MPFR_RNDN);
        mpfr_log(r21064, r21063, MPFR_RNDN);
        mpfr_mul(r21065, r21034, r21064, MPFR_RNDN);
        mpfr_add(r21066, r21057, r21065, MPFR_RNDN);
        mpfr_neg(r21067, r21066, MPFR_RNDN);
        return mpfr_get_d(r21067, MPFR_RNDN);
}

static mpfr_t r21068, r21069, r21070, r21071, r21072, r21073, r21074, r21075, r21076, r21077, r21078, r21079, r21080, r21081, r21082, r21083, r21084, r21085, r21086, r21087, r21088, r21089, r21090, r21091, r21092, r21093, r21094, r21095, r21096, r21097, r21098, r21099, r21100, r21101, r21102, r21103, r21104, r21105;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r21068, "1", 10, MPFR_RNDN);
        mpfr_init(r21069);
        mpfr_init_set_str(r21070, "4", 10, MPFR_RNDN);
        mpfr_init(r21071);
        mpfr_init(r21072);
        mpfr_init_set_str(r21073, "1/61440", 10, MPFR_RNDN);
        mpfr_init_set_str(r21074, "5", 10, MPFR_RNDN);
        mpfr_init(r21075);
        mpfr_init(r21076);
        mpfr_init(r21077);
        mpfr_init(r21078);
        mpfr_init(r21079);
        mpfr_init_set_str(r21080, "1/2", 10, MPFR_RNDN);
        mpfr_init(r21081);
        mpfr_init(r21082);
        mpfr_init_set_str(r21083, "1/192", 10, MPFR_RNDN);
        mpfr_init_set_str(r21084, "3", 10, MPFR_RNDN);
        mpfr_init(r21085);
        mpfr_init(r21086);
        mpfr_init(r21087);
        mpfr_init(r21088);
        mpfr_init(r21089);
        mpfr_init(r21090);
        mpfr_init(r21091);
        mpfr_init(r21092);
        mpfr_init(r21093);
        mpfr_init(r21094);
        mpfr_init(r21095);
        mpfr_init(r21096);
        mpfr_init(r21097);
        mpfr_init(r21098);
        mpfr_init(r21099);
        mpfr_init(r21100);
        mpfr_init(r21101);
        mpfr_init(r21102);
        mpfr_init(r21103);
        mpfr_init(r21104);
        mpfr_init(r21105);
}

double f_dm(double f) {
        ;
        mpfr_const_pi(r21069, MPFR_RNDN);
        ;
        mpfr_div(r21071, r21069, r21070, MPFR_RNDN);
        mpfr_div(r21072, r21068, r21071, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r21075, r21069, r21074, MPFR_RNDN);
        mpfr_set_d(r21076, f, MPFR_RNDN);
        mpfr_pow(r21077, r21076, r21074, MPFR_RNDN);
        mpfr_mul(r21078, r21075, r21077, MPFR_RNDN);
        mpfr_mul(r21079, r21073, r21078, MPFR_RNDN);
        ;
        mpfr_mul(r21081, r21069, r21076, MPFR_RNDN);
        mpfr_mul(r21082, r21080, r21081, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r21085, r21069, r21084, MPFR_RNDN);
        mpfr_pow(r21086, r21076, r21084, MPFR_RNDN);
        mpfr_mul(r21087, r21085, r21086, MPFR_RNDN);
        mpfr_mul(r21088, r21083, r21087, MPFR_RNDN);
        mpfr_add(r21089, r21082, r21088, MPFR_RNDN);
        mpfr_add(r21090, r21079, r21089, MPFR_RNDN);
        mpfr_cbrt(r21091, r21090, MPFR_RNDN);
        mpfr_mul(r21092, r21091, r21091, MPFR_RNDN);
        mpfr_div(r21093, r21068, r21092, MPFR_RNDN);
        mpfr_log(r21094, r21093, MPFR_RNDN);
        mpfr_mul(r21095, r21072, r21094, MPFR_RNDN);
        mpfr_mul(r21096, r21071, r21076, MPFR_RNDN);
        mpfr_exp(r21097, r21096, MPFR_RNDN);
        mpfr_neg(r21098, r21096, MPFR_RNDN);
        mpfr_exp(r21099, r21098, MPFR_RNDN);
        mpfr_add(r21100, r21097, r21099, MPFR_RNDN);
        mpfr_div(r21101, r21100, r21091, MPFR_RNDN);
        mpfr_log(r21102, r21101, MPFR_RNDN);
        mpfr_mul(r21103, r21072, r21102, MPFR_RNDN);
        mpfr_add(r21104, r21095, r21103, MPFR_RNDN);
        mpfr_neg(r21105, r21104, MPFR_RNDN);
        return mpfr_get_d(r21105, MPFR_RNDN);
}

