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

char *name = "quad2p (problem 3.2.1, positive)";

double f_if(float a, float b_2F2, float c) {
        float r21081 = b_2F2;
        float r21082 = -r21081;
        float r21083 = r21081 * r21081;
        float r21084 = a;
        float r21085 = c;
        float r21086 = r21084 * r21085;
        float r21087 = r21083 - r21086;
        float r21088 = sqrt(r21087);
        float r21089 = r21082 + r21088;
        float r21090 = r21089 / r21084;
        return r21090;
}

double f_id(double a, double b_2F2, double c) {
        double r21091 = b_2F2;
        double r21092 = -r21091;
        double r21093 = r21091 * r21091;
        double r21094 = a;
        double r21095 = c;
        double r21096 = r21094 * r21095;
        double r21097 = r21093 - r21096;
        double r21098 = sqrt(r21097);
        double r21099 = r21092 + r21098;
        double r21100 = r21099 / r21094;
        return r21100;
}


double f_of(float a, float b_2F2, float c) {
        float r21101 = b_2F2;
        float r21102 = -2.7887640869868202e+101;
        bool r21103 = r21101 <= r21102;
        float r21104 = 1/2;
        float r21105 = c;
        float r21106 = r21101 / r21105;
        float r21107 = r21104 / r21106;
        float r21108 = 2;
        float r21109 = a;
        float r21110 = r21108 / r21109;
        float r21111 = r21101 * r21110;
        float r21112 = r21107 - r21111;
        float r21113 = 1.3310796105836453e-210;
        bool r21114 = r21101 <= r21113;
        float r21115 = -r21101;
        float r21116 = cbrt(r21115);
        float r21117 = r21116 * r21116;
        float r21118 = r21101 * r21101;
        float r21119 = r21109 * r21105;
        float r21120 = r21118 - r21119;
        float r21121 = sqrt(r21120);
        float r21122 = fma(r21117, r21116, r21121);
        float r21123 = r21122 / r21109;
        float r21124 = 4.1096217777624155e+104;
        bool r21125 = r21101 <= r21124;
        float r21126 = r21105 * r21109;
        float r21127 = r21115 - r21121;
        float r21128 = r21126 / r21127;
        float r21129 = r21128 / r21109;
        float r21130 = r21104 * r21105;
        float r21131 = r21101 / r21109;
        float r21132 = r21130 / r21131;
        float r21133 = r21101 + r21101;
        float r21134 = r21132 - r21133;
        float r21135 = r21105 / r21134;
        float r21136 = r21125 ? r21129 : r21135;
        float r21137 = r21114 ? r21123 : r21136;
        float r21138 = r21103 ? r21112 : r21137;
        return r21138;
}

double f_od(double a, double b_2F2, double c) {
        double r21139 = b_2F2;
        double r21140 = -2.7887640869868202e+101;
        bool r21141 = r21139 <= r21140;
        double r21142 = 1/2;
        double r21143 = c;
        double r21144 = r21139 / r21143;
        double r21145 = r21142 / r21144;
        double r21146 = 2;
        double r21147 = a;
        double r21148 = r21146 / r21147;
        double r21149 = r21139 * r21148;
        double r21150 = r21145 - r21149;
        double r21151 = 1.3310796105836453e-210;
        bool r21152 = r21139 <= r21151;
        double r21153 = -r21139;
        double r21154 = cbrt(r21153);
        double r21155 = r21154 * r21154;
        double r21156 = r21139 * r21139;
        double r21157 = r21147 * r21143;
        double r21158 = r21156 - r21157;
        double r21159 = sqrt(r21158);
        double r21160 = fma(r21155, r21154, r21159);
        double r21161 = r21160 / r21147;
        double r21162 = 4.1096217777624155e+104;
        bool r21163 = r21139 <= r21162;
        double r21164 = r21143 * r21147;
        double r21165 = r21153 - r21159;
        double r21166 = r21164 / r21165;
        double r21167 = r21166 / r21147;
        double r21168 = r21142 * r21143;
        double r21169 = r21139 / r21147;
        double r21170 = r21168 / r21169;
        double r21171 = r21139 + r21139;
        double r21172 = r21170 - r21171;
        double r21173 = r21143 / r21172;
        double r21174 = r21163 ? r21167 : r21173;
        double r21175 = r21152 ? r21161 : r21174;
        double r21176 = r21141 ? r21150 : r21175;
        return r21176;
}

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 r21177, r21178, r21179, r21180, r21181, r21182, r21183, r21184, r21185, r21186;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21177);
        mpfr_init(r21178);
        mpfr_init(r21179);
        mpfr_init(r21180);
        mpfr_init(r21181);
        mpfr_init(r21182);
        mpfr_init(r21183);
        mpfr_init(r21184);
        mpfr_init(r21185);
        mpfr_init(r21186);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r21177, b_2F2, MPFR_RNDN);
        mpfr_neg(r21178, r21177, MPFR_RNDN);
        mpfr_mul(r21179, r21177, r21177, MPFR_RNDN);
        mpfr_set_d(r21180, a, MPFR_RNDN);
        mpfr_set_d(r21181, c, MPFR_RNDN);
        mpfr_mul(r21182, r21180, r21181, MPFR_RNDN);
        mpfr_sub(r21183, r21179, r21182, MPFR_RNDN);
        mpfr_sqrt(r21184, r21183, MPFR_RNDN);
        mpfr_add(r21185, r21178, r21184, MPFR_RNDN);
        mpfr_div(r21186, r21185, r21180, MPFR_RNDN);
        return mpfr_get_d(r21186, MPFR_RNDN);
}

static mpfr_t r21187, r21188, r21189, r21190, r21191, r21192, r21193, r21194, r21195, r21196, r21197, r21198, r21199, r21200, r21201, r21202, r21203, r21204, r21205, r21206, r21207, r21208, r21209, r21210, r21211, r21212, r21213, r21214, r21215, r21216, r21217, r21218, r21219, r21220, r21221, r21222, r21223, r21224;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21187);
        mpfr_init_set_str(r21188, "-2.7887640869868202e+101", 10, MPFR_RNDN);
        mpfr_init(r21189);
        mpfr_init_set_str(r21190, "1/2", 10, MPFR_RNDN);
        mpfr_init(r21191);
        mpfr_init(r21192);
        mpfr_init(r21193);
        mpfr_init_set_str(r21194, "2", 10, MPFR_RNDN);
        mpfr_init(r21195);
        mpfr_init(r21196);
        mpfr_init(r21197);
        mpfr_init(r21198);
        mpfr_init_set_str(r21199, "1.3310796105836453e-210", 10, MPFR_RNDN);
        mpfr_init(r21200);
        mpfr_init(r21201);
        mpfr_init(r21202);
        mpfr_init(r21203);
        mpfr_init(r21204);
        mpfr_init(r21205);
        mpfr_init(r21206);
        mpfr_init(r21207);
        mpfr_init(r21208);
        mpfr_init(r21209);
        mpfr_init_set_str(r21210, "4.1096217777624155e+104", 10, MPFR_RNDN);
        mpfr_init(r21211);
        mpfr_init(r21212);
        mpfr_init(r21213);
        mpfr_init(r21214);
        mpfr_init(r21215);
        mpfr_init(r21216);
        mpfr_init(r21217);
        mpfr_init(r21218);
        mpfr_init(r21219);
        mpfr_init(r21220);
        mpfr_init(r21221);
        mpfr_init(r21222);
        mpfr_init(r21223);
        mpfr_init(r21224);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r21187, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r21189, mpfr_cmp(r21187, r21188) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r21191, c, MPFR_RNDN);
        mpfr_div(r21192, r21187, r21191, MPFR_RNDN);
        mpfr_div(r21193, r21190, r21192, MPFR_RNDN);
        ;
        mpfr_set_d(r21195, a, MPFR_RNDN);
        mpfr_div(r21196, r21194, r21195, MPFR_RNDN);
        mpfr_mul(r21197, r21187, r21196, MPFR_RNDN);
        mpfr_sub(r21198, r21193, r21197, MPFR_RNDN);
        ;
        mpfr_set_si(r21200, mpfr_cmp(r21187, r21199) <= 0, MPFR_RNDN);
        mpfr_neg(r21201, r21187, MPFR_RNDN);
        mpfr_cbrt(r21202, r21201, MPFR_RNDN);
        mpfr_mul(r21203, r21202, r21202, MPFR_RNDN);
        mpfr_mul(r21204, r21187, r21187, MPFR_RNDN);
        mpfr_mul(r21205, r21195, r21191, MPFR_RNDN);
        mpfr_sub(r21206, r21204, r21205, MPFR_RNDN);
        mpfr_sqrt(r21207, r21206, MPFR_RNDN);
        mpfr_fma(r21208, r21203, r21202, r21207, MPFR_RNDN);
        mpfr_div(r21209, r21208, r21195, MPFR_RNDN);
        ;
        mpfr_set_si(r21211, mpfr_cmp(r21187, r21210) <= 0, MPFR_RNDN);
        mpfr_mul(r21212, r21191, r21195, MPFR_RNDN);
        mpfr_sub(r21213, r21201, r21207, MPFR_RNDN);
        mpfr_div(r21214, r21212, r21213, MPFR_RNDN);
        mpfr_div(r21215, r21214, r21195, MPFR_RNDN);
        mpfr_mul(r21216, r21190, r21191, MPFR_RNDN);
        mpfr_div(r21217, r21187, r21195, MPFR_RNDN);
        mpfr_div(r21218, r21216, r21217, MPFR_RNDN);
        mpfr_add(r21219, r21187, r21187, MPFR_RNDN);
        mpfr_sub(r21220, r21218, r21219, MPFR_RNDN);
        mpfr_div(r21221, r21191, r21220, MPFR_RNDN);
        if (mpfr_get_si(r21211, MPFR_RNDN)) { mpfr_set(r21222, r21215, MPFR_RNDN); } else { mpfr_set(r21222, r21221, MPFR_RNDN); };
        if (mpfr_get_si(r21200, MPFR_RNDN)) { mpfr_set(r21223, r21209, MPFR_RNDN); } else { mpfr_set(r21223, r21222, MPFR_RNDN); };
        if (mpfr_get_si(r21189, MPFR_RNDN)) { mpfr_set(r21224, r21198, MPFR_RNDN); } else { mpfr_set(r21224, r21223, MPFR_RNDN); };
        return mpfr_get_d(r21224, MPFR_RNDN);
}

static mpfr_t r21225, r21226, r21227, r21228, r21229, r21230, r21231, r21232, r21233, r21234, r21235, r21236, r21237, r21238, r21239, r21240, r21241, r21242, r21243, r21244, r21245, r21246, r21247, r21248, r21249, r21250, r21251, r21252, r21253, r21254, r21255, r21256, r21257, r21258, r21259, r21260, r21261, r21262;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r21225);
        mpfr_init_set_str(r21226, "-2.7887640869868202e+101", 10, MPFR_RNDN);
        mpfr_init(r21227);
        mpfr_init_set_str(r21228, "1/2", 10, MPFR_RNDN);
        mpfr_init(r21229);
        mpfr_init(r21230);
        mpfr_init(r21231);
        mpfr_init_set_str(r21232, "2", 10, MPFR_RNDN);
        mpfr_init(r21233);
        mpfr_init(r21234);
        mpfr_init(r21235);
        mpfr_init(r21236);
        mpfr_init_set_str(r21237, "1.3310796105836453e-210", 10, MPFR_RNDN);
        mpfr_init(r21238);
        mpfr_init(r21239);
        mpfr_init(r21240);
        mpfr_init(r21241);
        mpfr_init(r21242);
        mpfr_init(r21243);
        mpfr_init(r21244);
        mpfr_init(r21245);
        mpfr_init(r21246);
        mpfr_init(r21247);
        mpfr_init_set_str(r21248, "4.1096217777624155e+104", 10, MPFR_RNDN);
        mpfr_init(r21249);
        mpfr_init(r21250);
        mpfr_init(r21251);
        mpfr_init(r21252);
        mpfr_init(r21253);
        mpfr_init(r21254);
        mpfr_init(r21255);
        mpfr_init(r21256);
        mpfr_init(r21257);
        mpfr_init(r21258);
        mpfr_init(r21259);
        mpfr_init(r21260);
        mpfr_init(r21261);
        mpfr_init(r21262);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r21225, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r21227, mpfr_cmp(r21225, r21226) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r21229, c, MPFR_RNDN);
        mpfr_div(r21230, r21225, r21229, MPFR_RNDN);
        mpfr_div(r21231, r21228, r21230, MPFR_RNDN);
        ;
        mpfr_set_d(r21233, a, MPFR_RNDN);
        mpfr_div(r21234, r21232, r21233, MPFR_RNDN);
        mpfr_mul(r21235, r21225, r21234, MPFR_RNDN);
        mpfr_sub(r21236, r21231, r21235, MPFR_RNDN);
        ;
        mpfr_set_si(r21238, mpfr_cmp(r21225, r21237) <= 0, MPFR_RNDN);
        mpfr_neg(r21239, r21225, MPFR_RNDN);
        mpfr_cbrt(r21240, r21239, MPFR_RNDN);
        mpfr_mul(r21241, r21240, r21240, MPFR_RNDN);
        mpfr_mul(r21242, r21225, r21225, MPFR_RNDN);
        mpfr_mul(r21243, r21233, r21229, MPFR_RNDN);
        mpfr_sub(r21244, r21242, r21243, MPFR_RNDN);
        mpfr_sqrt(r21245, r21244, MPFR_RNDN);
        mpfr_fma(r21246, r21241, r21240, r21245, MPFR_RNDN);
        mpfr_div(r21247, r21246, r21233, MPFR_RNDN);
        ;
        mpfr_set_si(r21249, mpfr_cmp(r21225, r21248) <= 0, MPFR_RNDN);
        mpfr_mul(r21250, r21229, r21233, MPFR_RNDN);
        mpfr_sub(r21251, r21239, r21245, MPFR_RNDN);
        mpfr_div(r21252, r21250, r21251, MPFR_RNDN);
        mpfr_div(r21253, r21252, r21233, MPFR_RNDN);
        mpfr_mul(r21254, r21228, r21229, MPFR_RNDN);
        mpfr_div(r21255, r21225, r21233, MPFR_RNDN);
        mpfr_div(r21256, r21254, r21255, MPFR_RNDN);
        mpfr_add(r21257, r21225, r21225, MPFR_RNDN);
        mpfr_sub(r21258, r21256, r21257, MPFR_RNDN);
        mpfr_div(r21259, r21229, r21258, MPFR_RNDN);
        if (mpfr_get_si(r21249, MPFR_RNDN)) { mpfr_set(r21260, r21253, MPFR_RNDN); } else { mpfr_set(r21260, r21259, MPFR_RNDN); };
        if (mpfr_get_si(r21238, MPFR_RNDN)) { mpfr_set(r21261, r21247, MPFR_RNDN); } else { mpfr_set(r21261, r21260, MPFR_RNDN); };
        if (mpfr_get_si(r21227, MPFR_RNDN)) { mpfr_set(r21262, r21236, MPFR_RNDN); } else { mpfr_set(r21262, r21261, MPFR_RNDN); };
        return mpfr_get_d(r21262, MPFR_RNDN);
}

