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

char *name = "quadp (p42, positive)";

double f_if(float a, float b, float c) {
        float r4940169 = b;
        float r4940170 = -r4940169;
        float r4940171 = r4940169 * r4940169;
        float r4940172 = 4.0f;
        float r4940173 = a;
        float r4940174 = c;
        float r4940175 = r4940173 * r4940174;
        float r4940176 = r4940172 * r4940175;
        float r4940177 = r4940171 - r4940176;
        float r4940178 = sqrt(r4940177);
        float r4940179 = r4940170 + r4940178;
        float r4940180 = 2.0f;
        float r4940181 = r4940180 * r4940173;
        float r4940182 = r4940179 / r4940181;
        return r4940182;
}

double f_id(double a, double b, double c) {
        double r4940183 = b;
        double r4940184 = -r4940183;
        double r4940185 = r4940183 * r4940183;
        double r4940186 = 4.0;
        double r4940187 = a;
        double r4940188 = c;
        double r4940189 = r4940187 * r4940188;
        double r4940190 = r4940186 * r4940189;
        double r4940191 = r4940185 - r4940190;
        double r4940192 = sqrt(r4940191);
        double r4940193 = r4940184 + r4940192;
        double r4940194 = 2.0;
        double r4940195 = r4940194 * r4940187;
        double r4940196 = r4940193 / r4940195;
        return r4940196;
}


double f_of(float a, float b, float c) {
        float r4940197 = b;
        float r4940198 = -1.6024324632435378e+106f;
        bool r4940199 = r4940197 <= r4940198;
        float r4940200 = -r4940197;
        float r4940201 = a;
        float r4940202 = r4940200 / r4940201;
        float r4940203 = 7.311707109636147e-288f;
        bool r4940204 = r4940197 <= r4940203;
        float r4940205 = r4940197 * r4940197;
        float r4940206 = 4.0f;
        float r4940207 = c;
        float r4940208 = r4940201 * r4940207;
        float r4940209 = r4940206 * r4940208;
        float r4940210 = r4940205 - r4940209;
        float r4940211 = sqrt(r4940210);
        float r4940212 = r4940200 + r4940211;
        float r4940213 = 2.0f;
        float r4940214 = r4940213 * r4940201;
        float r4940215 = r4940212 / r4940214;
        float r4940216 = 1.0612379322957353e+83f;
        bool r4940217 = r4940197 <= r4940216;
        float r4940218 = r4940206 / r4940213;
        float r4940219 = r4940197 * r4940197;
        float r4940220 = r4940207 * r4940201;
        float r4940221 = r4940206 * r4940220;
        float r4940222 = r4940219 - r4940221;
        float r4940223 = sqrt(r4940222);
        float r4940224 = r4940200 - r4940223;
        float r4940225 = r4940207 / r4940224;
        float r4940226 = r4940218 * r4940225;
        float r4940227 = r4940197 + r4940200;
        float r4940228 = r4940201 + r4940201;
        float r4940229 = r4940227 / r4940228;
        float r4940230 = r4940207 / r4940197;
        float r4940231 = r4940229 - r4940230;
        float r4940232 = r4940217 ? r4940226 : r4940231;
        float r4940233 = r4940204 ? r4940215 : r4940232;
        float r4940234 = r4940199 ? r4940202 : r4940233;
        return r4940234;
}

double f_od(double a, double b, double c) {
        double r4940235 = b;
        double r4940236 = -1.6024324632435378e+106;
        bool r4940237 = r4940235 <= r4940236;
        double r4940238 = -r4940235;
        double r4940239 = a;
        double r4940240 = r4940238 / r4940239;
        double r4940241 = 7.311707109636147e-288;
        bool r4940242 = r4940235 <= r4940241;
        double r4940243 = r4940235 * r4940235;
        double r4940244 = 4.0;
        double r4940245 = c;
        double r4940246 = r4940239 * r4940245;
        double r4940247 = r4940244 * r4940246;
        double r4940248 = r4940243 - r4940247;
        double r4940249 = sqrt(r4940248);
        double r4940250 = r4940238 + r4940249;
        double r4940251 = 2.0;
        double r4940252 = r4940251 * r4940239;
        double r4940253 = r4940250 / r4940252;
        double r4940254 = 1.0612379322957353e+83;
        bool r4940255 = r4940235 <= r4940254;
        double r4940256 = r4940244 / r4940251;
        double r4940257 = r4940235 * r4940235;
        double r4940258 = r4940245 * r4940239;
        double r4940259 = r4940244 * r4940258;
        double r4940260 = r4940257 - r4940259;
        double r4940261 = sqrt(r4940260);
        double r4940262 = r4940238 - r4940261;
        double r4940263 = r4940245 / r4940262;
        double r4940264 = r4940256 * r4940263;
        double r4940265 = r4940235 + r4940238;
        double r4940266 = r4940239 + r4940239;
        double r4940267 = r4940265 / r4940266;
        double r4940268 = r4940245 / r4940235;
        double r4940269 = r4940267 - r4940268;
        double r4940270 = r4940255 ? r4940264 : r4940269;
        double r4940271 = r4940242 ? r4940253 : r4940270;
        double r4940272 = r4940237 ? r4940240 : r4940271;
        return r4940272;
}

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 r4940273, r4940274, r4940275, r4940276, r4940277, r4940278, r4940279, r4940280, r4940281, r4940282, r4940283, r4940284, r4940285, r4940286;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4940273);
        mpfr_init(r4940274);
        mpfr_init(r4940275);
        mpfr_init_set_str(r4940276, "4", 10, MPFR_RNDN);
        mpfr_init(r4940277);
        mpfr_init(r4940278);
        mpfr_init(r4940279);
        mpfr_init(r4940280);
        mpfr_init(r4940281);
        mpfr_init(r4940282);
        mpfr_init(r4940283);
        mpfr_init_set_str(r4940284, "2", 10, MPFR_RNDN);
        mpfr_init(r4940285);
        mpfr_init(r4940286);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r4940273, b, MPFR_RNDN);
        mpfr_neg(r4940274, r4940273, MPFR_RNDN);
        mpfr_sqr(r4940275, r4940273, MPFR_RNDN);
        ;
        mpfr_set_d(r4940277, a, MPFR_RNDN);
        mpfr_set_d(r4940278, c, MPFR_RNDN);
        mpfr_mul(r4940279, r4940277, r4940278, MPFR_RNDN);
        mpfr_mul(r4940280, r4940276, r4940279, MPFR_RNDN);
        mpfr_sub(r4940281, r4940275, r4940280, MPFR_RNDN);
        mpfr_sqrt(r4940282, r4940281, MPFR_RNDN);
        mpfr_add(r4940283, r4940274, r4940282, MPFR_RNDN);
        ;
        mpfr_mul(r4940285, r4940284, r4940277, MPFR_RNDN);
        mpfr_div(r4940286, r4940283, r4940285, MPFR_RNDN);
        return mpfr_get_d(r4940286, MPFR_RNDN);
}

static mpfr_t r4940287, r4940288, r4940289, r4940290, r4940291, r4940292, r4940293, r4940294, r4940295, r4940296, r4940297, r4940298, r4940299, r4940300, r4940301, r4940302, r4940303, r4940304, r4940305, r4940306, r4940307, r4940308, r4940309, r4940310, r4940311, r4940312, r4940313, r4940314, r4940315, r4940316, r4940317, r4940318, r4940319, r4940320, r4940321, r4940322, r4940323, r4940324;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4940287);
        mpfr_init_set_str(r4940288, "-1.6024324632435378e+106", 10, MPFR_RNDN);
        mpfr_init(r4940289);
        mpfr_init(r4940290);
        mpfr_init(r4940291);
        mpfr_init(r4940292);
        mpfr_init_set_str(r4940293, "7.311707109636147e-288", 10, MPFR_RNDN);
        mpfr_init(r4940294);
        mpfr_init(r4940295);
        mpfr_init_set_str(r4940296, "4", 10, MPFR_RNDN);
        mpfr_init(r4940297);
        mpfr_init(r4940298);
        mpfr_init(r4940299);
        mpfr_init(r4940300);
        mpfr_init(r4940301);
        mpfr_init(r4940302);
        mpfr_init_set_str(r4940303, "2", 10, MPFR_RNDN);
        mpfr_init(r4940304);
        mpfr_init(r4940305);
        mpfr_init_set_str(r4940306, "1.0612379322957353e+83", 10, MPFR_RNDN);
        mpfr_init(r4940307);
        mpfr_init(r4940308);
        mpfr_init(r4940309);
        mpfr_init(r4940310);
        mpfr_init(r4940311);
        mpfr_init(r4940312);
        mpfr_init(r4940313);
        mpfr_init(r4940314);
        mpfr_init(r4940315);
        mpfr_init(r4940316);
        mpfr_init(r4940317);
        mpfr_init(r4940318);
        mpfr_init(r4940319);
        mpfr_init(r4940320);
        mpfr_init(r4940321);
        mpfr_init(r4940322);
        mpfr_init(r4940323);
        mpfr_init(r4940324);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r4940287, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4940289, mpfr_cmp(r4940287, r4940288) <= 0, MPFR_RNDN);
        mpfr_neg(r4940290, r4940287, MPFR_RNDN);
        mpfr_set_d(r4940291, a, MPFR_RNDN);
        mpfr_div(r4940292, r4940290, r4940291, MPFR_RNDN);
        ;
        mpfr_set_si(r4940294, mpfr_cmp(r4940287, r4940293) <= 0, MPFR_RNDN);
        mpfr_sqr(r4940295, r4940287, MPFR_RNDN);
        ;
        mpfr_set_d(r4940297, c, MPFR_RNDN);
        mpfr_mul(r4940298, r4940291, r4940297, MPFR_RNDN);
        mpfr_mul(r4940299, r4940296, r4940298, MPFR_RNDN);
        mpfr_sub(r4940300, r4940295, r4940299, MPFR_RNDN);
        mpfr_sqrt(r4940301, r4940300, MPFR_RNDN);
        mpfr_add(r4940302, r4940290, r4940301, MPFR_RNDN);
        ;
        mpfr_mul(r4940304, r4940303, r4940291, MPFR_RNDN);
        mpfr_div(r4940305, r4940302, r4940304, MPFR_RNDN);
        ;
        mpfr_set_si(r4940307, mpfr_cmp(r4940287, r4940306) <= 0, MPFR_RNDN);
        mpfr_div(r4940308, r4940296, r4940303, MPFR_RNDN);
        mpfr_mul(r4940309, r4940287, r4940287, MPFR_RNDN);
        mpfr_mul(r4940310, r4940297, r4940291, MPFR_RNDN);
        mpfr_mul(r4940311, r4940296, r4940310, MPFR_RNDN);
        mpfr_sub(r4940312, r4940309, r4940311, MPFR_RNDN);
        mpfr_sqrt(r4940313, r4940312, MPFR_RNDN);
        mpfr_sub(r4940314, r4940290, r4940313, MPFR_RNDN);
        mpfr_div(r4940315, r4940297, r4940314, MPFR_RNDN);
        mpfr_mul(r4940316, r4940308, r4940315, MPFR_RNDN);
        mpfr_add(r4940317, r4940287, r4940290, MPFR_RNDN);
        mpfr_add(r4940318, r4940291, r4940291, MPFR_RNDN);
        mpfr_div(r4940319, r4940317, r4940318, MPFR_RNDN);
        mpfr_div(r4940320, r4940297, r4940287, MPFR_RNDN);
        mpfr_sub(r4940321, r4940319, r4940320, MPFR_RNDN);
        if (mpfr_get_si(r4940307, MPFR_RNDN)) { mpfr_set(r4940322, r4940316, MPFR_RNDN); } else { mpfr_set(r4940322, r4940321, MPFR_RNDN); };
        if (mpfr_get_si(r4940294, MPFR_RNDN)) { mpfr_set(r4940323, r4940305, MPFR_RNDN); } else { mpfr_set(r4940323, r4940322, MPFR_RNDN); };
        if (mpfr_get_si(r4940289, MPFR_RNDN)) { mpfr_set(r4940324, r4940292, MPFR_RNDN); } else { mpfr_set(r4940324, r4940323, MPFR_RNDN); };
        return mpfr_get_d(r4940324, MPFR_RNDN);
}

static mpfr_t r4940325, r4940326, r4940327, r4940328, r4940329, r4940330, r4940331, r4940332, r4940333, r4940334, r4940335, r4940336, r4940337, r4940338, r4940339, r4940340, r4940341, r4940342, r4940343, r4940344, r4940345, r4940346, r4940347, r4940348, r4940349, r4940350, r4940351, r4940352, r4940353, r4940354, r4940355, r4940356, r4940357, r4940358, r4940359, r4940360, r4940361, r4940362;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4940325);
        mpfr_init_set_str(r4940326, "-1.6024324632435378e+106", 10, MPFR_RNDN);
        mpfr_init(r4940327);
        mpfr_init(r4940328);
        mpfr_init(r4940329);
        mpfr_init(r4940330);
        mpfr_init_set_str(r4940331, "7.311707109636147e-288", 10, MPFR_RNDN);
        mpfr_init(r4940332);
        mpfr_init(r4940333);
        mpfr_init_set_str(r4940334, "4", 10, MPFR_RNDN);
        mpfr_init(r4940335);
        mpfr_init(r4940336);
        mpfr_init(r4940337);
        mpfr_init(r4940338);
        mpfr_init(r4940339);
        mpfr_init(r4940340);
        mpfr_init_set_str(r4940341, "2", 10, MPFR_RNDN);
        mpfr_init(r4940342);
        mpfr_init(r4940343);
        mpfr_init_set_str(r4940344, "1.0612379322957353e+83", 10, MPFR_RNDN);
        mpfr_init(r4940345);
        mpfr_init(r4940346);
        mpfr_init(r4940347);
        mpfr_init(r4940348);
        mpfr_init(r4940349);
        mpfr_init(r4940350);
        mpfr_init(r4940351);
        mpfr_init(r4940352);
        mpfr_init(r4940353);
        mpfr_init(r4940354);
        mpfr_init(r4940355);
        mpfr_init(r4940356);
        mpfr_init(r4940357);
        mpfr_init(r4940358);
        mpfr_init(r4940359);
        mpfr_init(r4940360);
        mpfr_init(r4940361);
        mpfr_init(r4940362);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r4940325, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4940327, mpfr_cmp(r4940325, r4940326) <= 0, MPFR_RNDN);
        mpfr_neg(r4940328, r4940325, MPFR_RNDN);
        mpfr_set_d(r4940329, a, MPFR_RNDN);
        mpfr_div(r4940330, r4940328, r4940329, MPFR_RNDN);
        ;
        mpfr_set_si(r4940332, mpfr_cmp(r4940325, r4940331) <= 0, MPFR_RNDN);
        mpfr_sqr(r4940333, r4940325, MPFR_RNDN);
        ;
        mpfr_set_d(r4940335, c, MPFR_RNDN);
        mpfr_mul(r4940336, r4940329, r4940335, MPFR_RNDN);
        mpfr_mul(r4940337, r4940334, r4940336, MPFR_RNDN);
        mpfr_sub(r4940338, r4940333, r4940337, MPFR_RNDN);
        mpfr_sqrt(r4940339, r4940338, MPFR_RNDN);
        mpfr_add(r4940340, r4940328, r4940339, MPFR_RNDN);
        ;
        mpfr_mul(r4940342, r4940341, r4940329, MPFR_RNDN);
        mpfr_div(r4940343, r4940340, r4940342, MPFR_RNDN);
        ;
        mpfr_set_si(r4940345, mpfr_cmp(r4940325, r4940344) <= 0, MPFR_RNDN);
        mpfr_div(r4940346, r4940334, r4940341, MPFR_RNDN);
        mpfr_mul(r4940347, r4940325, r4940325, MPFR_RNDN);
        mpfr_mul(r4940348, r4940335, r4940329, MPFR_RNDN);
        mpfr_mul(r4940349, r4940334, r4940348, MPFR_RNDN);
        mpfr_sub(r4940350, r4940347, r4940349, MPFR_RNDN);
        mpfr_sqrt(r4940351, r4940350, MPFR_RNDN);
        mpfr_sub(r4940352, r4940328, r4940351, MPFR_RNDN);
        mpfr_div(r4940353, r4940335, r4940352, MPFR_RNDN);
        mpfr_mul(r4940354, r4940346, r4940353, MPFR_RNDN);
        mpfr_add(r4940355, r4940325, r4940328, MPFR_RNDN);
        mpfr_add(r4940356, r4940329, r4940329, MPFR_RNDN);
        mpfr_div(r4940357, r4940355, r4940356, MPFR_RNDN);
        mpfr_div(r4940358, r4940335, r4940325, MPFR_RNDN);
        mpfr_sub(r4940359, r4940357, r4940358, MPFR_RNDN);
        if (mpfr_get_si(r4940345, MPFR_RNDN)) { mpfr_set(r4940360, r4940354, MPFR_RNDN); } else { mpfr_set(r4940360, r4940359, MPFR_RNDN); };
        if (mpfr_get_si(r4940332, MPFR_RNDN)) { mpfr_set(r4940361, r4940343, MPFR_RNDN); } else { mpfr_set(r4940361, r4940360, MPFR_RNDN); };
        if (mpfr_get_si(r4940327, MPFR_RNDN)) { mpfr_set(r4940362, r4940330, MPFR_RNDN); } else { mpfr_set(r4940362, r4940361, MPFR_RNDN); };
        return mpfr_get_d(r4940362, MPFR_RNDN);
}

