#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 r4874110 = b_2F2;
        float r4874111 = -r4874110;
        float r4874112 = r4874110 * r4874110;
        float r4874113 = a;
        float r4874114 = c;
        float r4874115 = r4874113 * r4874114;
        float r4874116 = r4874112 - r4874115;
        float r4874117 = sqrt(r4874116);
        float r4874118 = r4874111 + r4874117;
        float r4874119 = r4874118 / r4874113;
        return r4874119;
}

double f_id(double a, double b_2F2, double c) {
        double r4874120 = b_2F2;
        double r4874121 = -r4874120;
        double r4874122 = r4874120 * r4874120;
        double r4874123 = a;
        double r4874124 = c;
        double r4874125 = r4874123 * r4874124;
        double r4874126 = r4874122 - r4874125;
        double r4874127 = sqrt(r4874126);
        double r4874128 = r4874121 + r4874127;
        double r4874129 = r4874128 / r4874123;
        return r4874129;
}


double f_of(float a, float b_2F2, float c) {
        float r4874130 = b_2F2;
        float r4874131 = -1.83182834227653e+137f;
        bool r4874132 = r4874130 <= r4874131;
        float r4874133 = 0.5f;
        float r4874134 = c;
        float r4874135 = r4874133 * r4874134;
        float r4874136 = a;
        float r4874137 = r4874130 / r4874136;
        float r4874138 = r4874135 / r4874137;
        float r4874139 = r4874130 + r4874130;
        float r4874140 = r4874138 - r4874139;
        float r4874141 = r4874140 / r4874136;
        float r4874142 = 1.9148583814984746e-58f;
        bool r4874143 = r4874130 <= r4874142;
        float r4874144 = -r4874130;
        float r4874145 = r4874130 * r4874130;
        float r4874146 = r4874136 * r4874134;
        float r4874147 = r4874145 - r4874146;
        float r4874148 = sqrt(r4874147);
        float r4874149 = r4874144 + r4874148;
        float r4874150 = 1.0f;
        float r4874151 = r4874150 / r4874136;
        float r4874152 = r4874149 * r4874151;
        float r4874153 = r4874144 + r4874130;
        float r4874154 = r4874153 / r4874136;
        float r4874155 = r4874134 / r4874130;
        float r4874156 = r4874155 * r4874133;
        float r4874157 = r4874154 - r4874156;
        float r4874158 = r4874143 ? r4874152 : r4874157;
        float r4874159 = r4874132 ? r4874141 : r4874158;
        return r4874159;
}

double f_od(double a, double b_2F2, double c) {
        double r4874160 = b_2F2;
        double r4874161 = -1.83182834227653e+137;
        bool r4874162 = r4874160 <= r4874161;
        double r4874163 = 0.5;
        double r4874164 = c;
        double r4874165 = r4874163 * r4874164;
        double r4874166 = a;
        double r4874167 = r4874160 / r4874166;
        double r4874168 = r4874165 / r4874167;
        double r4874169 = r4874160 + r4874160;
        double r4874170 = r4874168 - r4874169;
        double r4874171 = r4874170 / r4874166;
        double r4874172 = 1.9148583814984746e-58;
        bool r4874173 = r4874160 <= r4874172;
        double r4874174 = -r4874160;
        double r4874175 = r4874160 * r4874160;
        double r4874176 = r4874166 * r4874164;
        double r4874177 = r4874175 - r4874176;
        double r4874178 = sqrt(r4874177);
        double r4874179 = r4874174 + r4874178;
        double r4874180 = 1.0;
        double r4874181 = r4874180 / r4874166;
        double r4874182 = r4874179 * r4874181;
        double r4874183 = r4874174 + r4874160;
        double r4874184 = r4874183 / r4874166;
        double r4874185 = r4874164 / r4874160;
        double r4874186 = r4874185 * r4874163;
        double r4874187 = r4874184 - r4874186;
        double r4874188 = r4874173 ? r4874182 : r4874187;
        double r4874189 = r4874162 ? r4874171 : r4874188;
        return r4874189;
}

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 r4874190, r4874191, r4874192, r4874193, r4874194, r4874195, r4874196, r4874197, r4874198, r4874199;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4874190);
        mpfr_init(r4874191);
        mpfr_init(r4874192);
        mpfr_init(r4874193);
        mpfr_init(r4874194);
        mpfr_init(r4874195);
        mpfr_init(r4874196);
        mpfr_init(r4874197);
        mpfr_init(r4874198);
        mpfr_init(r4874199);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r4874190, b_2F2, MPFR_RNDN);
        mpfr_neg(r4874191, r4874190, MPFR_RNDN);
        mpfr_mul(r4874192, r4874190, r4874190, MPFR_RNDN);
        mpfr_set_d(r4874193, a, MPFR_RNDN);
        mpfr_set_d(r4874194, c, MPFR_RNDN);
        mpfr_mul(r4874195, r4874193, r4874194, MPFR_RNDN);
        mpfr_sub(r4874196, r4874192, r4874195, MPFR_RNDN);
        mpfr_sqrt(r4874197, r4874196, MPFR_RNDN);
        mpfr_add(r4874198, r4874191, r4874197, MPFR_RNDN);
        mpfr_div(r4874199, r4874198, r4874193, MPFR_RNDN);
        return mpfr_get_d(r4874199, MPFR_RNDN);
}

static mpfr_t r4874200, r4874201, r4874202, r4874203, r4874204, r4874205, r4874206, r4874207, r4874208, r4874209, r4874210, r4874211, r4874212, r4874213, r4874214, r4874215, r4874216, r4874217, r4874218, r4874219, r4874220, r4874221, r4874222, r4874223, r4874224, r4874225, r4874226, r4874227, r4874228, r4874229;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4874200);
        mpfr_init_set_str(r4874201, "-1.83182834227653e+137", 10, MPFR_RNDN);
        mpfr_init(r4874202);
        mpfr_init_set_str(r4874203, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4874204);
        mpfr_init(r4874205);
        mpfr_init(r4874206);
        mpfr_init(r4874207);
        mpfr_init(r4874208);
        mpfr_init(r4874209);
        mpfr_init(r4874210);
        mpfr_init(r4874211);
        mpfr_init_set_str(r4874212, "1.9148583814984746e-58", 10, MPFR_RNDN);
        mpfr_init(r4874213);
        mpfr_init(r4874214);
        mpfr_init(r4874215);
        mpfr_init(r4874216);
        mpfr_init(r4874217);
        mpfr_init(r4874218);
        mpfr_init(r4874219);
        mpfr_init_set_str(r4874220, "1", 10, MPFR_RNDN);
        mpfr_init(r4874221);
        mpfr_init(r4874222);
        mpfr_init(r4874223);
        mpfr_init(r4874224);
        mpfr_init(r4874225);
        mpfr_init(r4874226);
        mpfr_init(r4874227);
        mpfr_init(r4874228);
        mpfr_init(r4874229);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r4874200, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r4874202, mpfr_cmp(r4874200, r4874201) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r4874204, c, MPFR_RNDN);
        mpfr_mul(r4874205, r4874203, r4874204, MPFR_RNDN);
        mpfr_set_d(r4874206, a, MPFR_RNDN);
        mpfr_div(r4874207, r4874200, r4874206, MPFR_RNDN);
        mpfr_div(r4874208, r4874205, r4874207, MPFR_RNDN);
        mpfr_add(r4874209, r4874200, r4874200, MPFR_RNDN);
        mpfr_sub(r4874210, r4874208, r4874209, MPFR_RNDN);
        mpfr_div(r4874211, r4874210, r4874206, MPFR_RNDN);
        ;
        mpfr_set_si(r4874213, mpfr_cmp(r4874200, r4874212) <= 0, MPFR_RNDN);
        mpfr_neg(r4874214, r4874200, MPFR_RNDN);
        mpfr_mul(r4874215, r4874200, r4874200, MPFR_RNDN);
        mpfr_mul(r4874216, r4874206, r4874204, MPFR_RNDN);
        mpfr_sub(r4874217, r4874215, r4874216, MPFR_RNDN);
        mpfr_sqrt(r4874218, r4874217, MPFR_RNDN);
        mpfr_add(r4874219, r4874214, r4874218, MPFR_RNDN);
        ;
        mpfr_div(r4874221, r4874220, r4874206, MPFR_RNDN);
        mpfr_mul(r4874222, r4874219, r4874221, MPFR_RNDN);
        mpfr_add(r4874223, r4874214, r4874200, MPFR_RNDN);
        mpfr_div(r4874224, r4874223, r4874206, MPFR_RNDN);
        mpfr_div(r4874225, r4874204, r4874200, MPFR_RNDN);
        mpfr_mul(r4874226, r4874225, r4874203, MPFR_RNDN);
        mpfr_sub(r4874227, r4874224, r4874226, MPFR_RNDN);
        if (mpfr_get_si(r4874213, MPFR_RNDN)) { mpfr_set(r4874228, r4874222, MPFR_RNDN); } else { mpfr_set(r4874228, r4874227, MPFR_RNDN); };
        if (mpfr_get_si(r4874202, MPFR_RNDN)) { mpfr_set(r4874229, r4874211, MPFR_RNDN); } else { mpfr_set(r4874229, r4874228, MPFR_RNDN); };
        return mpfr_get_d(r4874229, MPFR_RNDN);
}

static mpfr_t r4874230, r4874231, r4874232, r4874233, r4874234, r4874235, r4874236, r4874237, r4874238, r4874239, r4874240, r4874241, r4874242, r4874243, r4874244, r4874245, r4874246, r4874247, r4874248, r4874249, r4874250, r4874251, r4874252, r4874253, r4874254, r4874255, r4874256, r4874257, r4874258, r4874259;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4874230);
        mpfr_init_set_str(r4874231, "-1.83182834227653e+137", 10, MPFR_RNDN);
        mpfr_init(r4874232);
        mpfr_init_set_str(r4874233, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4874234);
        mpfr_init(r4874235);
        mpfr_init(r4874236);
        mpfr_init(r4874237);
        mpfr_init(r4874238);
        mpfr_init(r4874239);
        mpfr_init(r4874240);
        mpfr_init(r4874241);
        mpfr_init_set_str(r4874242, "1.9148583814984746e-58", 10, MPFR_RNDN);
        mpfr_init(r4874243);
        mpfr_init(r4874244);
        mpfr_init(r4874245);
        mpfr_init(r4874246);
        mpfr_init(r4874247);
        mpfr_init(r4874248);
        mpfr_init(r4874249);
        mpfr_init_set_str(r4874250, "1", 10, MPFR_RNDN);
        mpfr_init(r4874251);
        mpfr_init(r4874252);
        mpfr_init(r4874253);
        mpfr_init(r4874254);
        mpfr_init(r4874255);
        mpfr_init(r4874256);
        mpfr_init(r4874257);
        mpfr_init(r4874258);
        mpfr_init(r4874259);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r4874230, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r4874232, mpfr_cmp(r4874230, r4874231) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r4874234, c, MPFR_RNDN);
        mpfr_mul(r4874235, r4874233, r4874234, MPFR_RNDN);
        mpfr_set_d(r4874236, a, MPFR_RNDN);
        mpfr_div(r4874237, r4874230, r4874236, MPFR_RNDN);
        mpfr_div(r4874238, r4874235, r4874237, MPFR_RNDN);
        mpfr_add(r4874239, r4874230, r4874230, MPFR_RNDN);
        mpfr_sub(r4874240, r4874238, r4874239, MPFR_RNDN);
        mpfr_div(r4874241, r4874240, r4874236, MPFR_RNDN);
        ;
        mpfr_set_si(r4874243, mpfr_cmp(r4874230, r4874242) <= 0, MPFR_RNDN);
        mpfr_neg(r4874244, r4874230, MPFR_RNDN);
        mpfr_mul(r4874245, r4874230, r4874230, MPFR_RNDN);
        mpfr_mul(r4874246, r4874236, r4874234, MPFR_RNDN);
        mpfr_sub(r4874247, r4874245, r4874246, MPFR_RNDN);
        mpfr_sqrt(r4874248, r4874247, MPFR_RNDN);
        mpfr_add(r4874249, r4874244, r4874248, MPFR_RNDN);
        ;
        mpfr_div(r4874251, r4874250, r4874236, MPFR_RNDN);
        mpfr_mul(r4874252, r4874249, r4874251, MPFR_RNDN);
        mpfr_add(r4874253, r4874244, r4874230, MPFR_RNDN);
        mpfr_div(r4874254, r4874253, r4874236, MPFR_RNDN);
        mpfr_div(r4874255, r4874234, r4874230, MPFR_RNDN);
        mpfr_mul(r4874256, r4874255, r4874233, MPFR_RNDN);
        mpfr_sub(r4874257, r4874254, r4874256, MPFR_RNDN);
        if (mpfr_get_si(r4874243, MPFR_RNDN)) { mpfr_set(r4874258, r4874252, MPFR_RNDN); } else { mpfr_set(r4874258, r4874257, MPFR_RNDN); };
        if (mpfr_get_si(r4874232, MPFR_RNDN)) { mpfr_set(r4874259, r4874241, MPFR_RNDN); } else { mpfr_set(r4874259, r4874258, MPFR_RNDN); };
        return mpfr_get_d(r4874259, MPFR_RNDN);
}

