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

char *name = "3frac (problem 3.3.3)";

double f_if(float x) {
        float r10923 = 1;
        float r10924 = x;
        float r10925 = r10924 + r10923;
        float r10926 = r10923 / r10925;
        float r10927 = 2;
        float r10928 = r10927 / r10924;
        float r10929 = r10926 - r10928;
        float r10930 = r10924 - r10923;
        float r10931 = r10923 / r10930;
        float r10932 = r10929 + r10931;
        return r10932;
}

double f_id(double x) {
        double r10933 = 1;
        double r10934 = x;
        double r10935 = r10934 + r10933;
        double r10936 = r10933 / r10935;
        double r10937 = 2;
        double r10938 = r10937 / r10934;
        double r10939 = r10936 - r10938;
        double r10940 = r10934 - r10933;
        double r10941 = r10933 / r10940;
        double r10942 = r10939 + r10941;
        return r10942;
}


double f_of(float x) {
        float r10943 = 1;
        float r10944 = x;
        float r10945 = r10944 + r10943;
        float r10946 = r10943 / r10945;
        float r10947 = 2;
        float r10948 = r10947 / r10944;
        float r10949 = r10946 - r10948;
        float r10950 = r10944 - r10943;
        float r10951 = r10943 / r10950;
        float r10952 = r10949 + r10951;
        float r10953 = -8.485757240345714e-09;
        bool r10954 = r10952 <= r10953;
        float r10955 = 3.53176010245925e-310;
        bool r10956 = r10952 <= r10955;
        float r10957 = r10944 * r10944;
        float r10958 = r10948 / r10957;
        float r10959 = 7;
        float r10960 = pow(r10944, r10959);
        float r10961 = r10947 / r10960;
        float r10962 = r10958 + r10961;
        float r10963 = 5;
        float r10964 = pow(r10944, r10963);
        float r10965 = r10947 / r10964;
        float r10966 = r10962 + r10965;
        float r10967 = r10956 ? r10966 : r10952;
        float r10968 = r10954 ? r10952 : r10967;
        return r10968;
}

double f_od(double x) {
        double r10969 = 1;
        double r10970 = x;
        double r10971 = r10970 + r10969;
        double r10972 = r10969 / r10971;
        double r10973 = 2;
        double r10974 = r10973 / r10970;
        double r10975 = r10972 - r10974;
        double r10976 = r10970 - r10969;
        double r10977 = r10969 / r10976;
        double r10978 = r10975 + r10977;
        double r10979 = -8.485757240345714e-09;
        bool r10980 = r10978 <= r10979;
        double r10981 = 3.53176010245925e-310;
        bool r10982 = r10978 <= r10981;
        double r10983 = r10970 * r10970;
        double r10984 = r10974 / r10983;
        double r10985 = 7;
        double r10986 = pow(r10970, r10985);
        double r10987 = r10973 / r10986;
        double r10988 = r10984 + r10987;
        double r10989 = 5;
        double r10990 = pow(r10970, r10989);
        double r10991 = r10973 / r10990;
        double r10992 = r10988 + r10991;
        double r10993 = r10982 ? r10992 : r10978;
        double r10994 = r10980 ? r10978 : r10993;
        return r10994;
}

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 r10995, r10996, r10997, r10998, r10999, r11000, r11001, r11002, r11003, r11004;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r10995, "1", 10, MPFR_RNDN);
        mpfr_init(r10996);
        mpfr_init(r10997);
        mpfr_init(r10998);
        mpfr_init_set_str(r10999, "2", 10, MPFR_RNDN);
        mpfr_init(r11000);
        mpfr_init(r11001);
        mpfr_init(r11002);
        mpfr_init(r11003);
        mpfr_init(r11004);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10996, x, MPFR_RNDN);
        mpfr_add(r10997, r10996, r10995, MPFR_RNDN);
        mpfr_div(r10998, r10995, r10997, MPFR_RNDN);
        ;
        mpfr_div(r11000, r10999, r10996, MPFR_RNDN);
        mpfr_sub(r11001, r10998, r11000, MPFR_RNDN);
        mpfr_sub(r11002, r10996, r10995, MPFR_RNDN);
        mpfr_div(r11003, r10995, r11002, MPFR_RNDN);
        mpfr_add(r11004, r11001, r11003, MPFR_RNDN);
        return mpfr_get_d(r11004, MPFR_RNDN);
}

static mpfr_t r11005, r11006, r11007, r11008, r11009, r11010, r11011, r11012, r11013, r11014, r11015, r11016, r11017, r11018, r11019, r11020, r11021, r11022, r11023, r11024, r11025, r11026, r11027, r11028, r11029, r11030;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11005, "1", 10, MPFR_RNDN);
        mpfr_init(r11006);
        mpfr_init(r11007);
        mpfr_init(r11008);
        mpfr_init_set_str(r11009, "2", 10, MPFR_RNDN);
        mpfr_init(r11010);
        mpfr_init(r11011);
        mpfr_init(r11012);
        mpfr_init(r11013);
        mpfr_init(r11014);
        mpfr_init_set_str(r11015, "-8.485757240345714e-09", 10, MPFR_RNDN);
        mpfr_init(r11016);
        mpfr_init_set_str(r11017, "3.53176010245925e-310", 10, MPFR_RNDN);
        mpfr_init(r11018);
        mpfr_init(r11019);
        mpfr_init(r11020);
        mpfr_init_set_str(r11021, "7", 10, MPFR_RNDN);
        mpfr_init(r11022);
        mpfr_init(r11023);
        mpfr_init(r11024);
        mpfr_init_set_str(r11025, "5", 10, MPFR_RNDN);
        mpfr_init(r11026);
        mpfr_init(r11027);
        mpfr_init(r11028);
        mpfr_init(r11029);
        mpfr_init(r11030);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11006, x, MPFR_RNDN);
        mpfr_add(r11007, r11006, r11005, MPFR_RNDN);
        mpfr_div(r11008, r11005, r11007, MPFR_RNDN);
        ;
        mpfr_div(r11010, r11009, r11006, MPFR_RNDN);
        mpfr_sub(r11011, r11008, r11010, MPFR_RNDN);
        mpfr_sub(r11012, r11006, r11005, MPFR_RNDN);
        mpfr_div(r11013, r11005, r11012, MPFR_RNDN);
        mpfr_add(r11014, r11011, r11013, MPFR_RNDN);
        ;
        mpfr_set_si(r11016, mpfr_cmp(r11014, r11015) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r11018, mpfr_cmp(r11014, r11017) <= 0, MPFR_RNDN);
        mpfr_mul(r11019, r11006, r11006, MPFR_RNDN);
        mpfr_div(r11020, r11010, r11019, MPFR_RNDN);
        ;
        mpfr_pow(r11022, r11006, r11021, MPFR_RNDN);
        mpfr_div(r11023, r11009, r11022, MPFR_RNDN);
        mpfr_add(r11024, r11020, r11023, MPFR_RNDN);
        ;
        mpfr_pow(r11026, r11006, r11025, MPFR_RNDN);
        mpfr_div(r11027, r11009, r11026, MPFR_RNDN);
        mpfr_add(r11028, r11024, r11027, MPFR_RNDN);
        if (mpfr_get_si(r11018, MPFR_RNDN)) { mpfr_set(r11029, r11028, MPFR_RNDN); } else { mpfr_set(r11029, r11014, MPFR_RNDN); };
        if (mpfr_get_si(r11016, MPFR_RNDN)) { mpfr_set(r11030, r11014, MPFR_RNDN); } else { mpfr_set(r11030, r11029, MPFR_RNDN); };
        return mpfr_get_d(r11030, MPFR_RNDN);
}

static mpfr_t r11031, r11032, r11033, r11034, r11035, r11036, r11037, r11038, r11039, r11040, r11041, r11042, r11043, r11044, r11045, r11046, r11047, r11048, r11049, r11050, r11051, r11052, r11053, r11054, r11055, r11056;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11031, "1", 10, MPFR_RNDN);
        mpfr_init(r11032);
        mpfr_init(r11033);
        mpfr_init(r11034);
        mpfr_init_set_str(r11035, "2", 10, MPFR_RNDN);
        mpfr_init(r11036);
        mpfr_init(r11037);
        mpfr_init(r11038);
        mpfr_init(r11039);
        mpfr_init(r11040);
        mpfr_init_set_str(r11041, "-8.485757240345714e-09", 10, MPFR_RNDN);
        mpfr_init(r11042);
        mpfr_init_set_str(r11043, "3.53176010245925e-310", 10, MPFR_RNDN);
        mpfr_init(r11044);
        mpfr_init(r11045);
        mpfr_init(r11046);
        mpfr_init_set_str(r11047, "7", 10, MPFR_RNDN);
        mpfr_init(r11048);
        mpfr_init(r11049);
        mpfr_init(r11050);
        mpfr_init_set_str(r11051, "5", 10, MPFR_RNDN);
        mpfr_init(r11052);
        mpfr_init(r11053);
        mpfr_init(r11054);
        mpfr_init(r11055);
        mpfr_init(r11056);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11032, x, MPFR_RNDN);
        mpfr_add(r11033, r11032, r11031, MPFR_RNDN);
        mpfr_div(r11034, r11031, r11033, MPFR_RNDN);
        ;
        mpfr_div(r11036, r11035, r11032, MPFR_RNDN);
        mpfr_sub(r11037, r11034, r11036, MPFR_RNDN);
        mpfr_sub(r11038, r11032, r11031, MPFR_RNDN);
        mpfr_div(r11039, r11031, r11038, MPFR_RNDN);
        mpfr_add(r11040, r11037, r11039, MPFR_RNDN);
        ;
        mpfr_set_si(r11042, mpfr_cmp(r11040, r11041) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r11044, mpfr_cmp(r11040, r11043) <= 0, MPFR_RNDN);
        mpfr_mul(r11045, r11032, r11032, MPFR_RNDN);
        mpfr_div(r11046, r11036, r11045, MPFR_RNDN);
        ;
        mpfr_pow(r11048, r11032, r11047, MPFR_RNDN);
        mpfr_div(r11049, r11035, r11048, MPFR_RNDN);
        mpfr_add(r11050, r11046, r11049, MPFR_RNDN);
        ;
        mpfr_pow(r11052, r11032, r11051, MPFR_RNDN);
        mpfr_div(r11053, r11035, r11052, MPFR_RNDN);
        mpfr_add(r11054, r11050, r11053, MPFR_RNDN);
        if (mpfr_get_si(r11044, MPFR_RNDN)) { mpfr_set(r11055, r11054, MPFR_RNDN); } else { mpfr_set(r11055, r11040, MPFR_RNDN); };
        if (mpfr_get_si(r11042, MPFR_RNDN)) { mpfr_set(r11056, r11040, MPFR_RNDN); } else { mpfr_set(r11056, r11055, MPFR_RNDN); };
        return mpfr_get_d(r11056, MPFR_RNDN);
}

