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

char *name = "NMSE problem 3.2.1";

double f_if(float a, float b_2, float c) {
        float r26134 = b_2;
        float r26135 = -r26134;
        float r26136 = r26134 * r26134;
        float r26137 = a;
        float r26138 = c;
        float r26139 = r26137 * r26138;
        float r26140 = r26136 - r26139;
        float r26141 = sqrt(r26140);
        float r26142 = r26135 - r26141;
        float r26143 = r26142 / r26137;
        return r26143;
}

double f_id(double a, double b_2, double c) {
        double r26144 = b_2;
        double r26145 = -r26144;
        double r26146 = r26144 * r26144;
        double r26147 = a;
        double r26148 = c;
        double r26149 = r26147 * r26148;
        double r26150 = r26146 - r26149;
        double r26151 = sqrt(r26150);
        double r26152 = r26145 - r26151;
        double r26153 = r26152 / r26147;
        return r26153;
}


double f_of(float a, float b_2, float c) {
        float r26154 = b_2;
        float r26155 = -4.4718629886123e+18;
        bool r26156 = r26154 <= r26155;
        float r26157 = -1/2;
        float r26158 = c;
        float r26159 = r26158 / r26154;
        float r26160 = r26157 * r26159;
        float r26161 = -2.416846626462428e-136;
        bool r26162 = r26154 <= r26161;
        float r26163 = 1;
        float r26164 = a;
        float r26165 = r26158 * r26164;
        float r26166 = r26164 / r26165;
        float r26167 = -r26154;
        float r26168 = r26154 * r26154;
        float r26169 = r26164 * r26158;
        float r26170 = r26168 - r26169;
        float r26171 = sqrt(r26170);
        float r26172 = r26167 + r26171;
        float r26173 = r26166 * r26172;
        float r26174 = r26163 / r26173;
        float r26175 = 2.8067255509096775e+134;
        bool r26176 = r26154 <= r26175;
        float r26177 = r26167 - r26171;
        float r26178 = r26177 / r26164;
        float r26179 = -2;
        float r26180 = r26154 / r26164;
        float r26181 = r26179 * r26180;
        float r26182 = r26176 ? r26178 : r26181;
        float r26183 = r26162 ? r26174 : r26182;
        float r26184 = r26156 ? r26160 : r26183;
        return r26184;
}

double f_od(double a, double b_2, double c) {
        double r26185 = b_2;
        double r26186 = -4.4718629886123e+18;
        bool r26187 = r26185 <= r26186;
        double r26188 = -1/2;
        double r26189 = c;
        double r26190 = r26189 / r26185;
        double r26191 = r26188 * r26190;
        double r26192 = -2.416846626462428e-136;
        bool r26193 = r26185 <= r26192;
        double r26194 = 1;
        double r26195 = a;
        double r26196 = r26189 * r26195;
        double r26197 = r26195 / r26196;
        double r26198 = -r26185;
        double r26199 = r26185 * r26185;
        double r26200 = r26195 * r26189;
        double r26201 = r26199 - r26200;
        double r26202 = sqrt(r26201);
        double r26203 = r26198 + r26202;
        double r26204 = r26197 * r26203;
        double r26205 = r26194 / r26204;
        double r26206 = 2.8067255509096775e+134;
        bool r26207 = r26185 <= r26206;
        double r26208 = r26198 - r26202;
        double r26209 = r26208 / r26195;
        double r26210 = -2;
        double r26211 = r26185 / r26195;
        double r26212 = r26210 * r26211;
        double r26213 = r26207 ? r26209 : r26212;
        double r26214 = r26193 ? r26205 : r26213;
        double r26215 = r26187 ? r26191 : r26214;
        return r26215;
}

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 r26216, r26217, r26218, r26219, r26220, r26221, r26222, r26223, r26224, r26225;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26216);
        mpfr_init(r26217);
        mpfr_init(r26218);
        mpfr_init(r26219);
        mpfr_init(r26220);
        mpfr_init(r26221);
        mpfr_init(r26222);
        mpfr_init(r26223);
        mpfr_init(r26224);
        mpfr_init(r26225);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r26216, b_2, MPFR_RNDN);
        mpfr_neg(r26217, r26216, MPFR_RNDN);
        mpfr_mul(r26218, r26216, r26216, MPFR_RNDN);
        mpfr_set_d(r26219, a, MPFR_RNDN);
        mpfr_set_d(r26220, c, MPFR_RNDN);
        mpfr_mul(r26221, r26219, r26220, MPFR_RNDN);
        mpfr_sub(r26222, r26218, r26221, MPFR_RNDN);
        mpfr_sqrt(r26223, r26222, MPFR_RNDN);
        mpfr_sub(r26224, r26217, r26223, MPFR_RNDN);
        mpfr_div(r26225, r26224, r26219, MPFR_RNDN);
        return mpfr_get_d(r26225, MPFR_RNDN);
}

static mpfr_t r26226, r26227, r26228, r26229, r26230, r26231, r26232, r26233, r26234, r26235, r26236, r26237, r26238, r26239, r26240, r26241, r26242, r26243, r26244, r26245, r26246, r26247, r26248, r26249, r26250, r26251, r26252, r26253, r26254, r26255, r26256;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26226);
        mpfr_init_set_str(r26227, "-4.4718629886123e+18", 10, MPFR_RNDN);
        mpfr_init(r26228);
        mpfr_init_set_str(r26229, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r26230);
        mpfr_init(r26231);
        mpfr_init(r26232);
        mpfr_init_set_str(r26233, "-2.416846626462428e-136", 10, MPFR_RNDN);
        mpfr_init(r26234);
        mpfr_init_set_str(r26235, "1", 10, MPFR_RNDN);
        mpfr_init(r26236);
        mpfr_init(r26237);
        mpfr_init(r26238);
        mpfr_init(r26239);
        mpfr_init(r26240);
        mpfr_init(r26241);
        mpfr_init(r26242);
        mpfr_init(r26243);
        mpfr_init(r26244);
        mpfr_init(r26245);
        mpfr_init(r26246);
        mpfr_init_set_str(r26247, "2.8067255509096775e+134", 10, MPFR_RNDN);
        mpfr_init(r26248);
        mpfr_init(r26249);
        mpfr_init(r26250);
        mpfr_init_set_str(r26251, "-2", 10, MPFR_RNDN);
        mpfr_init(r26252);
        mpfr_init(r26253);
        mpfr_init(r26254);
        mpfr_init(r26255);
        mpfr_init(r26256);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r26226, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r26228, mpfr_cmp(r26226, r26227) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r26230, c, MPFR_RNDN);
        mpfr_div(r26231, r26230, r26226, MPFR_RNDN);
        mpfr_mul(r26232, r26229, r26231, MPFR_RNDN);
        ;
        mpfr_set_si(r26234, mpfr_cmp(r26226, r26233) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r26236, a, MPFR_RNDN);
        mpfr_mul(r26237, r26230, r26236, MPFR_RNDN);
        mpfr_div(r26238, r26236, r26237, MPFR_RNDN);
        mpfr_neg(r26239, r26226, MPFR_RNDN);
        mpfr_mul(r26240, r26226, r26226, MPFR_RNDN);
        mpfr_mul(r26241, r26236, r26230, MPFR_RNDN);
        mpfr_sub(r26242, r26240, r26241, MPFR_RNDN);
        mpfr_sqrt(r26243, r26242, MPFR_RNDN);
        mpfr_add(r26244, r26239, r26243, MPFR_RNDN);
        mpfr_mul(r26245, r26238, r26244, MPFR_RNDN);
        mpfr_div(r26246, r26235, r26245, MPFR_RNDN);
        ;
        mpfr_set_si(r26248, mpfr_cmp(r26226, r26247) <= 0, MPFR_RNDN);
        mpfr_sub(r26249, r26239, r26243, MPFR_RNDN);
        mpfr_div(r26250, r26249, r26236, MPFR_RNDN);
        ;
        mpfr_div(r26252, r26226, r26236, MPFR_RNDN);
        mpfr_mul(r26253, r26251, r26252, MPFR_RNDN);
        if (mpfr_get_si(r26248, MPFR_RNDN)) { mpfr_set(r26254, r26250, MPFR_RNDN); } else { mpfr_set(r26254, r26253, MPFR_RNDN); };
        if (mpfr_get_si(r26234, MPFR_RNDN)) { mpfr_set(r26255, r26246, MPFR_RNDN); } else { mpfr_set(r26255, r26254, MPFR_RNDN); };
        if (mpfr_get_si(r26228, MPFR_RNDN)) { mpfr_set(r26256, r26232, MPFR_RNDN); } else { mpfr_set(r26256, r26255, MPFR_RNDN); };
        return mpfr_get_d(r26256, MPFR_RNDN);
}

static mpfr_t r26257, r26258, r26259, r26260, r26261, r26262, r26263, r26264, r26265, r26266, r26267, r26268, r26269, r26270, r26271, r26272, r26273, r26274, r26275, r26276, r26277, r26278, r26279, r26280, r26281, r26282, r26283, r26284, r26285, r26286, r26287;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26257);
        mpfr_init_set_str(r26258, "-4.4718629886123e+18", 10, MPFR_RNDN);
        mpfr_init(r26259);
        mpfr_init_set_str(r26260, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r26261);
        mpfr_init(r26262);
        mpfr_init(r26263);
        mpfr_init_set_str(r26264, "-2.416846626462428e-136", 10, MPFR_RNDN);
        mpfr_init(r26265);
        mpfr_init_set_str(r26266, "1", 10, MPFR_RNDN);
        mpfr_init(r26267);
        mpfr_init(r26268);
        mpfr_init(r26269);
        mpfr_init(r26270);
        mpfr_init(r26271);
        mpfr_init(r26272);
        mpfr_init(r26273);
        mpfr_init(r26274);
        mpfr_init(r26275);
        mpfr_init(r26276);
        mpfr_init(r26277);
        mpfr_init_set_str(r26278, "2.8067255509096775e+134", 10, MPFR_RNDN);
        mpfr_init(r26279);
        mpfr_init(r26280);
        mpfr_init(r26281);
        mpfr_init_set_str(r26282, "-2", 10, MPFR_RNDN);
        mpfr_init(r26283);
        mpfr_init(r26284);
        mpfr_init(r26285);
        mpfr_init(r26286);
        mpfr_init(r26287);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r26257, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r26259, mpfr_cmp(r26257, r26258) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r26261, c, MPFR_RNDN);
        mpfr_div(r26262, r26261, r26257, MPFR_RNDN);
        mpfr_mul(r26263, r26260, r26262, MPFR_RNDN);
        ;
        mpfr_set_si(r26265, mpfr_cmp(r26257, r26264) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r26267, a, MPFR_RNDN);
        mpfr_mul(r26268, r26261, r26267, MPFR_RNDN);
        mpfr_div(r26269, r26267, r26268, MPFR_RNDN);
        mpfr_neg(r26270, r26257, MPFR_RNDN);
        mpfr_mul(r26271, r26257, r26257, MPFR_RNDN);
        mpfr_mul(r26272, r26267, r26261, MPFR_RNDN);
        mpfr_sub(r26273, r26271, r26272, MPFR_RNDN);
        mpfr_sqrt(r26274, r26273, MPFR_RNDN);
        mpfr_add(r26275, r26270, r26274, MPFR_RNDN);
        mpfr_mul(r26276, r26269, r26275, MPFR_RNDN);
        mpfr_div(r26277, r26266, r26276, MPFR_RNDN);
        ;
        mpfr_set_si(r26279, mpfr_cmp(r26257, r26278) <= 0, MPFR_RNDN);
        mpfr_sub(r26280, r26270, r26274, MPFR_RNDN);
        mpfr_div(r26281, r26280, r26267, MPFR_RNDN);
        ;
        mpfr_div(r26283, r26257, r26267, MPFR_RNDN);
        mpfr_mul(r26284, r26282, r26283, MPFR_RNDN);
        if (mpfr_get_si(r26279, MPFR_RNDN)) { mpfr_set(r26285, r26281, MPFR_RNDN); } else { mpfr_set(r26285, r26284, MPFR_RNDN); };
        if (mpfr_get_si(r26265, MPFR_RNDN)) { mpfr_set(r26286, r26277, MPFR_RNDN); } else { mpfr_set(r26286, r26285, MPFR_RNDN); };
        if (mpfr_get_si(r26259, MPFR_RNDN)) { mpfr_set(r26287, r26263, MPFR_RNDN); } else { mpfr_set(r26287, r26286, MPFR_RNDN); };
        return mpfr_get_d(r26287, MPFR_RNDN);
}

