#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 r11870061 = b_2F2;
        float r11870062 = -r11870061;
        float r11870063 = r11870061 * r11870061;
        float r11870064 = a;
        float r11870065 = c;
        float r11870066 = r11870064 * r11870065;
        float r11870067 = r11870063 - r11870066;
        float r11870068 = sqrt(r11870067);
        float r11870069 = r11870062 + r11870068;
        float r11870070 = r11870069 / r11870064;
        return r11870070;
}

double f_id(double a, double b_2F2, double c) {
        double r11870071 = b_2F2;
        double r11870072 = -r11870071;
        double r11870073 = r11870071 * r11870071;
        double r11870074 = a;
        double r11870075 = c;
        double r11870076 = r11870074 * r11870075;
        double r11870077 = r11870073 - r11870076;
        double r11870078 = sqrt(r11870077);
        double r11870079 = r11870072 + r11870078;
        double r11870080 = r11870079 / r11870074;
        return r11870080;
}


double f_of(float a, float b_2F2, float c) {
        float r11870081 = b_2F2;
        float r11870082 = -2.4514624744218936e+152;
        bool r11870083 = r11870081 <= r11870082;
        float r11870084 = -2;
        float r11870085 = a;
        float r11870086 = r11870081 / r11870085;
        float r11870087 = r11870084 * r11870086;
        float r11870088 = 4.812686842305236e-167;
        bool r11870089 = r11870081 <= r11870088;
        float r11870090 = -r11870081;
        float r11870091 = r11870081 * r11870081;
        float r11870092 = c;
        float r11870093 = r11870085 * r11870092;
        float r11870094 = r11870091 - r11870093;
        float r11870095 = sqrt(r11870094);
        float r11870096 = r11870090 + r11870095;
        float r11870097 = r11870096 / r11870085;
        float r11870098 = 288656888527.5769;
        bool r11870099 = r11870081 <= r11870098;
        float r11870100 = r11870092 * r11870085;
        float r11870101 = r11870090 - r11870095;
        float r11870102 = r11870100 / r11870101;
        float r11870103 = r11870102 / r11870085;
        float r11870104 = r11870090 - r11870081;
        float r11870105 = r11870085 / r11870081;
        float r11870106 = 1/2;
        float r11870107 = r11870106 * r11870092;
        float r11870108 = r11870105 * r11870107;
        float r11870109 = r11870104 + r11870108;
        float r11870110 = r11870092 / r11870109;
        float r11870111 = r11870099 ? r11870103 : r11870110;
        float r11870112 = r11870089 ? r11870097 : r11870111;
        float r11870113 = r11870083 ? r11870087 : r11870112;
        return r11870113;
}

double f_od(double a, double b_2F2, double c) {
        double r11870114 = b_2F2;
        double r11870115 = -2.4514624744218936e+152;
        bool r11870116 = r11870114 <= r11870115;
        double r11870117 = -2;
        double r11870118 = a;
        double r11870119 = r11870114 / r11870118;
        double r11870120 = r11870117 * r11870119;
        double r11870121 = 4.812686842305236e-167;
        bool r11870122 = r11870114 <= r11870121;
        double r11870123 = -r11870114;
        double r11870124 = r11870114 * r11870114;
        double r11870125 = c;
        double r11870126 = r11870118 * r11870125;
        double r11870127 = r11870124 - r11870126;
        double r11870128 = sqrt(r11870127);
        double r11870129 = r11870123 + r11870128;
        double r11870130 = r11870129 / r11870118;
        double r11870131 = 288656888527.5769;
        bool r11870132 = r11870114 <= r11870131;
        double r11870133 = r11870125 * r11870118;
        double r11870134 = r11870123 - r11870128;
        double r11870135 = r11870133 / r11870134;
        double r11870136 = r11870135 / r11870118;
        double r11870137 = r11870123 - r11870114;
        double r11870138 = r11870118 / r11870114;
        double r11870139 = 1/2;
        double r11870140 = r11870139 * r11870125;
        double r11870141 = r11870138 * r11870140;
        double r11870142 = r11870137 + r11870141;
        double r11870143 = r11870125 / r11870142;
        double r11870144 = r11870132 ? r11870136 : r11870143;
        double r11870145 = r11870122 ? r11870130 : r11870144;
        double r11870146 = r11870116 ? r11870120 : r11870145;
        return r11870146;
}

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 r11870147, r11870148, r11870149, r11870150, r11870151, r11870152, r11870153, r11870154, r11870155, r11870156;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r11870147);
        mpfr_init(r11870148);
        mpfr_init(r11870149);
        mpfr_init(r11870150);
        mpfr_init(r11870151);
        mpfr_init(r11870152);
        mpfr_init(r11870153);
        mpfr_init(r11870154);
        mpfr_init(r11870155);
        mpfr_init(r11870156);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r11870147, b_2F2, MPFR_RNDN);
        mpfr_neg(r11870148, r11870147, MPFR_RNDN);
        mpfr_mul(r11870149, r11870147, r11870147, MPFR_RNDN);
        mpfr_set_d(r11870150, a, MPFR_RNDN);
        mpfr_set_d(r11870151, c, MPFR_RNDN);
        mpfr_mul(r11870152, r11870150, r11870151, MPFR_RNDN);
        mpfr_sub(r11870153, r11870149, r11870152, MPFR_RNDN);
        mpfr_sqrt(r11870154, r11870153, MPFR_RNDN);
        mpfr_add(r11870155, r11870148, r11870154, MPFR_RNDN);
        mpfr_div(r11870156, r11870155, r11870150, MPFR_RNDN);
        return mpfr_get_d(r11870156, MPFR_RNDN);
}

static mpfr_t r11870157, r11870158, r11870159, r11870160, r11870161, r11870162, r11870163, r11870164, r11870165, r11870166, r11870167, r11870168, r11870169, r11870170, r11870171, r11870172, r11870173, r11870174, r11870175, r11870176, r11870177, r11870178, r11870179, r11870180, r11870181, r11870182, r11870183, r11870184, r11870185, r11870186, r11870187, r11870188, r11870189;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r11870157);
        mpfr_init_set_str(r11870158, "-2.4514624744218936e+152", 10, MPFR_RNDN);
        mpfr_init(r11870159);
        mpfr_init_set_str(r11870160, "-2", 10, MPFR_RNDN);
        mpfr_init(r11870161);
        mpfr_init(r11870162);
        mpfr_init(r11870163);
        mpfr_init_set_str(r11870164, "4.812686842305236e-167", 10, MPFR_RNDN);
        mpfr_init(r11870165);
        mpfr_init(r11870166);
        mpfr_init(r11870167);
        mpfr_init(r11870168);
        mpfr_init(r11870169);
        mpfr_init(r11870170);
        mpfr_init(r11870171);
        mpfr_init(r11870172);
        mpfr_init(r11870173);
        mpfr_init_set_str(r11870174, "288656888527.5769", 10, MPFR_RNDN);
        mpfr_init(r11870175);
        mpfr_init(r11870176);
        mpfr_init(r11870177);
        mpfr_init(r11870178);
        mpfr_init(r11870179);
        mpfr_init(r11870180);
        mpfr_init(r11870181);
        mpfr_init_set_str(r11870182, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11870183);
        mpfr_init(r11870184);
        mpfr_init(r11870185);
        mpfr_init(r11870186);
        mpfr_init(r11870187);
        mpfr_init(r11870188);
        mpfr_init(r11870189);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r11870157, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r11870159, mpfr_cmp(r11870157, r11870158) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r11870161, a, MPFR_RNDN);
        mpfr_div(r11870162, r11870157, r11870161, MPFR_RNDN);
        mpfr_mul(r11870163, r11870160, r11870162, MPFR_RNDN);
        ;
        mpfr_set_si(r11870165, mpfr_cmp(r11870157, r11870164) <= 0, MPFR_RNDN);
        mpfr_neg(r11870166, r11870157, MPFR_RNDN);
        mpfr_mul(r11870167, r11870157, r11870157, MPFR_RNDN);
        mpfr_set_d(r11870168, c, MPFR_RNDN);
        mpfr_mul(r11870169, r11870161, r11870168, MPFR_RNDN);
        mpfr_sub(r11870170, r11870167, r11870169, MPFR_RNDN);
        mpfr_sqrt(r11870171, r11870170, MPFR_RNDN);
        mpfr_add(r11870172, r11870166, r11870171, MPFR_RNDN);
        mpfr_div(r11870173, r11870172, r11870161, MPFR_RNDN);
        ;
        mpfr_set_si(r11870175, mpfr_cmp(r11870157, r11870174) <= 0, MPFR_RNDN);
        mpfr_mul(r11870176, r11870168, r11870161, MPFR_RNDN);
        mpfr_sub(r11870177, r11870166, r11870171, MPFR_RNDN);
        mpfr_div(r11870178, r11870176, r11870177, MPFR_RNDN);
        mpfr_div(r11870179, r11870178, r11870161, MPFR_RNDN);
        mpfr_sub(r11870180, r11870166, r11870157, MPFR_RNDN);
        mpfr_div(r11870181, r11870161, r11870157, MPFR_RNDN);
        ;
        mpfr_mul(r11870183, r11870182, r11870168, MPFR_RNDN);
        mpfr_mul(r11870184, r11870181, r11870183, MPFR_RNDN);
        mpfr_add(r11870185, r11870180, r11870184, MPFR_RNDN);
        mpfr_div(r11870186, r11870168, r11870185, MPFR_RNDN);
        if (mpfr_get_si(r11870175, MPFR_RNDN)) { mpfr_set(r11870187, r11870179, MPFR_RNDN); } else { mpfr_set(r11870187, r11870186, MPFR_RNDN); };
        if (mpfr_get_si(r11870165, MPFR_RNDN)) { mpfr_set(r11870188, r11870173, MPFR_RNDN); } else { mpfr_set(r11870188, r11870187, MPFR_RNDN); };
        if (mpfr_get_si(r11870159, MPFR_RNDN)) { mpfr_set(r11870189, r11870163, MPFR_RNDN); } else { mpfr_set(r11870189, r11870188, MPFR_RNDN); };
        return mpfr_get_d(r11870189, MPFR_RNDN);
}

static mpfr_t r11870190, r11870191, r11870192, r11870193, r11870194, r11870195, r11870196, r11870197, r11870198, r11870199, r11870200, r11870201, r11870202, r11870203, r11870204, r11870205, r11870206, r11870207, r11870208, r11870209, r11870210, r11870211, r11870212, r11870213, r11870214, r11870215, r11870216, r11870217, r11870218, r11870219, r11870220, r11870221, r11870222;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r11870190);
        mpfr_init_set_str(r11870191, "-2.4514624744218936e+152", 10, MPFR_RNDN);
        mpfr_init(r11870192);
        mpfr_init_set_str(r11870193, "-2", 10, MPFR_RNDN);
        mpfr_init(r11870194);
        mpfr_init(r11870195);
        mpfr_init(r11870196);
        mpfr_init_set_str(r11870197, "4.812686842305236e-167", 10, MPFR_RNDN);
        mpfr_init(r11870198);
        mpfr_init(r11870199);
        mpfr_init(r11870200);
        mpfr_init(r11870201);
        mpfr_init(r11870202);
        mpfr_init(r11870203);
        mpfr_init(r11870204);
        mpfr_init(r11870205);
        mpfr_init(r11870206);
        mpfr_init_set_str(r11870207, "288656888527.5769", 10, MPFR_RNDN);
        mpfr_init(r11870208);
        mpfr_init(r11870209);
        mpfr_init(r11870210);
        mpfr_init(r11870211);
        mpfr_init(r11870212);
        mpfr_init(r11870213);
        mpfr_init(r11870214);
        mpfr_init_set_str(r11870215, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11870216);
        mpfr_init(r11870217);
        mpfr_init(r11870218);
        mpfr_init(r11870219);
        mpfr_init(r11870220);
        mpfr_init(r11870221);
        mpfr_init(r11870222);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r11870190, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r11870192, mpfr_cmp(r11870190, r11870191) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r11870194, a, MPFR_RNDN);
        mpfr_div(r11870195, r11870190, r11870194, MPFR_RNDN);
        mpfr_mul(r11870196, r11870193, r11870195, MPFR_RNDN);
        ;
        mpfr_set_si(r11870198, mpfr_cmp(r11870190, r11870197) <= 0, MPFR_RNDN);
        mpfr_neg(r11870199, r11870190, MPFR_RNDN);
        mpfr_mul(r11870200, r11870190, r11870190, MPFR_RNDN);
        mpfr_set_d(r11870201, c, MPFR_RNDN);
        mpfr_mul(r11870202, r11870194, r11870201, MPFR_RNDN);
        mpfr_sub(r11870203, r11870200, r11870202, MPFR_RNDN);
        mpfr_sqrt(r11870204, r11870203, MPFR_RNDN);
        mpfr_add(r11870205, r11870199, r11870204, MPFR_RNDN);
        mpfr_div(r11870206, r11870205, r11870194, MPFR_RNDN);
        ;
        mpfr_set_si(r11870208, mpfr_cmp(r11870190, r11870207) <= 0, MPFR_RNDN);
        mpfr_mul(r11870209, r11870201, r11870194, MPFR_RNDN);
        mpfr_sub(r11870210, r11870199, r11870204, MPFR_RNDN);
        mpfr_div(r11870211, r11870209, r11870210, MPFR_RNDN);
        mpfr_div(r11870212, r11870211, r11870194, MPFR_RNDN);
        mpfr_sub(r11870213, r11870199, r11870190, MPFR_RNDN);
        mpfr_div(r11870214, r11870194, r11870190, MPFR_RNDN);
        ;
        mpfr_mul(r11870216, r11870215, r11870201, MPFR_RNDN);
        mpfr_mul(r11870217, r11870214, r11870216, MPFR_RNDN);
        mpfr_add(r11870218, r11870213, r11870217, MPFR_RNDN);
        mpfr_div(r11870219, r11870201, r11870218, MPFR_RNDN);
        if (mpfr_get_si(r11870208, MPFR_RNDN)) { mpfr_set(r11870220, r11870212, MPFR_RNDN); } else { mpfr_set(r11870220, r11870219, MPFR_RNDN); };
        if (mpfr_get_si(r11870198, MPFR_RNDN)) { mpfr_set(r11870221, r11870206, MPFR_RNDN); } else { mpfr_set(r11870221, r11870220, MPFR_RNDN); };
        if (mpfr_get_si(r11870192, MPFR_RNDN)) { mpfr_set(r11870222, r11870196, MPFR_RNDN); } else { mpfr_set(r11870222, r11870221, MPFR_RNDN); };
        return mpfr_get_d(r11870222, MPFR_RNDN);
}

