#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 r5179972 = b_2F2;
        float r5179973 = -r5179972;
        float r5179974 = r5179972 * r5179972;
        float r5179975 = a;
        float r5179976 = c;
        float r5179977 = r5179975 * r5179976;
        float r5179978 = r5179974 - r5179977;
        float r5179979 = sqrt(r5179978);
        float r5179980 = r5179973 + r5179979;
        float r5179981 = r5179980 / r5179975;
        return r5179981;
}

double f_id(double a, double b_2F2, double c) {
        double r5179982 = b_2F2;
        double r5179983 = -r5179982;
        double r5179984 = r5179982 * r5179982;
        double r5179985 = a;
        double r5179986 = c;
        double r5179987 = r5179985 * r5179986;
        double r5179988 = r5179984 - r5179987;
        double r5179989 = sqrt(r5179988);
        double r5179990 = r5179983 + r5179989;
        double r5179991 = r5179990 / r5179985;
        return r5179991;
}


double f_of(float a, float b_2F2, float c) {
        float r5179992 = b_2F2;
        float r5179993 = -6.5699153576604614e+97f;
        bool r5179994 = r5179992 <= r5179993;
        float r5179995 = c;
        float r5179996 = 0.5f;
        float r5179997 = r5179992 / r5179996;
        float r5179998 = r5179995 / r5179997;
        float r5179999 = r5179992 + r5179992;
        float r5180000 = a;
        float r5180001 = r5179999 / r5180000;
        float r5180002 = r5179998 - r5180001;
        float r5180003 = -3.283746017650344e-287f;
        bool r5180004 = r5179992 <= r5180003;
        float r5180005 = -r5179992;
        float r5180006 = r5179992 * r5179992;
        float r5180007 = r5180000 * r5179995;
        float r5180008 = r5180006 - r5180007;
        float r5180009 = sqrt(r5180008);
        float r5180010 = r5180005 + r5180009;
        float r5180011 = 1.0f;
        float r5180012 = r5180011 / r5180000;
        float r5180013 = r5180010 * r5180012;
        float r5180014 = 2.9567149947595096e+19f;
        bool r5180015 = r5179992 <= r5180014;
        float r5180016 = r5180005 - r5180009;
        float r5180017 = r5180007 / r5180016;
        float r5180018 = r5180017 / r5180000;
        float r5180019 = r5179992 + r5180005;
        float r5180020 = r5180019 / r5180000;
        float r5180021 = r5179996 * r5179995;
        float r5180022 = r5180021 / r5179992;
        float r5180023 = r5180020 - r5180022;
        float r5180024 = r5180015 ? r5180018 : r5180023;
        float r5180025 = r5180004 ? r5180013 : r5180024;
        float r5180026 = r5179994 ? r5180002 : r5180025;
        return r5180026;
}

double f_od(double a, double b_2F2, double c) {
        double r5180027 = b_2F2;
        double r5180028 = -6.5699153576604614e+97;
        bool r5180029 = r5180027 <= r5180028;
        double r5180030 = c;
        double r5180031 = 0.5;
        double r5180032 = r5180027 / r5180031;
        double r5180033 = r5180030 / r5180032;
        double r5180034 = r5180027 + r5180027;
        double r5180035 = a;
        double r5180036 = r5180034 / r5180035;
        double r5180037 = r5180033 - r5180036;
        double r5180038 = -3.283746017650344e-287;
        bool r5180039 = r5180027 <= r5180038;
        double r5180040 = -r5180027;
        double r5180041 = r5180027 * r5180027;
        double r5180042 = r5180035 * r5180030;
        double r5180043 = r5180041 - r5180042;
        double r5180044 = sqrt(r5180043);
        double r5180045 = r5180040 + r5180044;
        double r5180046 = 1.0;
        double r5180047 = r5180046 / r5180035;
        double r5180048 = r5180045 * r5180047;
        double r5180049 = 2.9567149947595096e+19;
        bool r5180050 = r5180027 <= r5180049;
        double r5180051 = r5180040 - r5180044;
        double r5180052 = r5180042 / r5180051;
        double r5180053 = r5180052 / r5180035;
        double r5180054 = r5180027 + r5180040;
        double r5180055 = r5180054 / r5180035;
        double r5180056 = r5180031 * r5180030;
        double r5180057 = r5180056 / r5180027;
        double r5180058 = r5180055 - r5180057;
        double r5180059 = r5180050 ? r5180053 : r5180058;
        double r5180060 = r5180039 ? r5180048 : r5180059;
        double r5180061 = r5180029 ? r5180037 : r5180060;
        return r5180061;
}

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 r5180062, r5180063, r5180064, r5180065, r5180066, r5180067, r5180068, r5180069, r5180070, r5180071;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r5180062);
        mpfr_init(r5180063);
        mpfr_init(r5180064);
        mpfr_init(r5180065);
        mpfr_init(r5180066);
        mpfr_init(r5180067);
        mpfr_init(r5180068);
        mpfr_init(r5180069);
        mpfr_init(r5180070);
        mpfr_init(r5180071);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r5180062, b_2F2, MPFR_RNDN);
        mpfr_neg(r5180063, r5180062, MPFR_RNDN);
        mpfr_sqr(r5180064, r5180062, MPFR_RNDN);
        mpfr_set_d(r5180065, a, MPFR_RNDN);
        mpfr_set_d(r5180066, c, MPFR_RNDN);
        mpfr_mul(r5180067, r5180065, r5180066, MPFR_RNDN);
        mpfr_sub(r5180068, r5180064, r5180067, MPFR_RNDN);
        mpfr_sqrt(r5180069, r5180068, MPFR_RNDN);
        mpfr_add(r5180070, r5180063, r5180069, MPFR_RNDN);
        mpfr_div(r5180071, r5180070, r5180065, MPFR_RNDN);
        return mpfr_get_d(r5180071, MPFR_RNDN);
}

static mpfr_t r5180072, r5180073, r5180074, r5180075, r5180076, r5180077, r5180078, r5180079, r5180080, r5180081, r5180082, r5180083, r5180084, r5180085, r5180086, r5180087, r5180088, r5180089, r5180090, r5180091, r5180092, r5180093, r5180094, r5180095, r5180096, r5180097, r5180098, r5180099, r5180100, r5180101, r5180102, r5180103, r5180104, r5180105, r5180106;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r5180072);
        mpfr_init_set_str(r5180073, "-6.5699153576604614e+97", 10, MPFR_RNDN);
        mpfr_init(r5180074);
        mpfr_init(r5180075);
        mpfr_init_set_str(r5180076, "1/2", 10, MPFR_RNDN);
        mpfr_init(r5180077);
        mpfr_init(r5180078);
        mpfr_init(r5180079);
        mpfr_init(r5180080);
        mpfr_init(r5180081);
        mpfr_init(r5180082);
        mpfr_init_set_str(r5180083, "-3.283746017650344e-287", 10, MPFR_RNDN);
        mpfr_init(r5180084);
        mpfr_init(r5180085);
        mpfr_init(r5180086);
        mpfr_init(r5180087);
        mpfr_init(r5180088);
        mpfr_init(r5180089);
        mpfr_init(r5180090);
        mpfr_init_set_str(r5180091, "1", 10, MPFR_RNDN);
        mpfr_init(r5180092);
        mpfr_init(r5180093);
        mpfr_init_set_str(r5180094, "2.9567149947595096e+19", 10, MPFR_RNDN);
        mpfr_init(r5180095);
        mpfr_init(r5180096);
        mpfr_init(r5180097);
        mpfr_init(r5180098);
        mpfr_init(r5180099);
        mpfr_init(r5180100);
        mpfr_init(r5180101);
        mpfr_init(r5180102);
        mpfr_init(r5180103);
        mpfr_init(r5180104);
        mpfr_init(r5180105);
        mpfr_init(r5180106);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r5180072, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r5180074, mpfr_cmp(r5180072, r5180073) <= 0, MPFR_RNDN);
        mpfr_set_d(r5180075, c, MPFR_RNDN);
        ;
        mpfr_div(r5180077, r5180072, r5180076, MPFR_RNDN);
        mpfr_div(r5180078, r5180075, r5180077, MPFR_RNDN);
        mpfr_add(r5180079, r5180072, r5180072, MPFR_RNDN);
        mpfr_set_d(r5180080, a, MPFR_RNDN);
        mpfr_div(r5180081, r5180079, r5180080, MPFR_RNDN);
        mpfr_sub(r5180082, r5180078, r5180081, MPFR_RNDN);
        ;
        mpfr_set_si(r5180084, mpfr_cmp(r5180072, r5180083) <= 0, MPFR_RNDN);
        mpfr_neg(r5180085, r5180072, MPFR_RNDN);
        mpfr_sqr(r5180086, r5180072, MPFR_RNDN);
        mpfr_mul(r5180087, r5180080, r5180075, MPFR_RNDN);
        mpfr_sub(r5180088, r5180086, r5180087, MPFR_RNDN);
        mpfr_sqrt(r5180089, r5180088, MPFR_RNDN);
        mpfr_add(r5180090, r5180085, r5180089, MPFR_RNDN);
        ;
        mpfr_div(r5180092, r5180091, r5180080, MPFR_RNDN);
        mpfr_mul(r5180093, r5180090, r5180092, MPFR_RNDN);
        ;
        mpfr_set_si(r5180095, mpfr_cmp(r5180072, r5180094) <= 0, MPFR_RNDN);
        mpfr_sub(r5180096, r5180085, r5180089, MPFR_RNDN);
        mpfr_div(r5180097, r5180087, r5180096, MPFR_RNDN);
        mpfr_div(r5180098, r5180097, r5180080, MPFR_RNDN);
        mpfr_add(r5180099, r5180072, r5180085, MPFR_RNDN);
        mpfr_div(r5180100, r5180099, r5180080, MPFR_RNDN);
        mpfr_mul(r5180101, r5180076, r5180075, MPFR_RNDN);
        mpfr_div(r5180102, r5180101, r5180072, MPFR_RNDN);
        mpfr_sub(r5180103, r5180100, r5180102, MPFR_RNDN);
        if (mpfr_get_si(r5180095, MPFR_RNDN)) { mpfr_set(r5180104, r5180098, MPFR_RNDN); } else { mpfr_set(r5180104, r5180103, MPFR_RNDN); };
        if (mpfr_get_si(r5180084, MPFR_RNDN)) { mpfr_set(r5180105, r5180093, MPFR_RNDN); } else { mpfr_set(r5180105, r5180104, MPFR_RNDN); };
        if (mpfr_get_si(r5180074, MPFR_RNDN)) { mpfr_set(r5180106, r5180082, MPFR_RNDN); } else { mpfr_set(r5180106, r5180105, MPFR_RNDN); };
        return mpfr_get_d(r5180106, MPFR_RNDN);
}

static mpfr_t r5180107, r5180108, r5180109, r5180110, r5180111, r5180112, r5180113, r5180114, r5180115, r5180116, r5180117, r5180118, r5180119, r5180120, r5180121, r5180122, r5180123, r5180124, r5180125, r5180126, r5180127, r5180128, r5180129, r5180130, r5180131, r5180132, r5180133, r5180134, r5180135, r5180136, r5180137, r5180138, r5180139, r5180140, r5180141;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r5180107);
        mpfr_init_set_str(r5180108, "-6.5699153576604614e+97", 10, MPFR_RNDN);
        mpfr_init(r5180109);
        mpfr_init(r5180110);
        mpfr_init_set_str(r5180111, "1/2", 10, MPFR_RNDN);
        mpfr_init(r5180112);
        mpfr_init(r5180113);
        mpfr_init(r5180114);
        mpfr_init(r5180115);
        mpfr_init(r5180116);
        mpfr_init(r5180117);
        mpfr_init_set_str(r5180118, "-3.283746017650344e-287", 10, MPFR_RNDN);
        mpfr_init(r5180119);
        mpfr_init(r5180120);
        mpfr_init(r5180121);
        mpfr_init(r5180122);
        mpfr_init(r5180123);
        mpfr_init(r5180124);
        mpfr_init(r5180125);
        mpfr_init_set_str(r5180126, "1", 10, MPFR_RNDN);
        mpfr_init(r5180127);
        mpfr_init(r5180128);
        mpfr_init_set_str(r5180129, "2.9567149947595096e+19", 10, MPFR_RNDN);
        mpfr_init(r5180130);
        mpfr_init(r5180131);
        mpfr_init(r5180132);
        mpfr_init(r5180133);
        mpfr_init(r5180134);
        mpfr_init(r5180135);
        mpfr_init(r5180136);
        mpfr_init(r5180137);
        mpfr_init(r5180138);
        mpfr_init(r5180139);
        mpfr_init(r5180140);
        mpfr_init(r5180141);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r5180107, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r5180109, mpfr_cmp(r5180107, r5180108) <= 0, MPFR_RNDN);
        mpfr_set_d(r5180110, c, MPFR_RNDN);
        ;
        mpfr_div(r5180112, r5180107, r5180111, MPFR_RNDN);
        mpfr_div(r5180113, r5180110, r5180112, MPFR_RNDN);
        mpfr_add(r5180114, r5180107, r5180107, MPFR_RNDN);
        mpfr_set_d(r5180115, a, MPFR_RNDN);
        mpfr_div(r5180116, r5180114, r5180115, MPFR_RNDN);
        mpfr_sub(r5180117, r5180113, r5180116, MPFR_RNDN);
        ;
        mpfr_set_si(r5180119, mpfr_cmp(r5180107, r5180118) <= 0, MPFR_RNDN);
        mpfr_neg(r5180120, r5180107, MPFR_RNDN);
        mpfr_sqr(r5180121, r5180107, MPFR_RNDN);
        mpfr_mul(r5180122, r5180115, r5180110, MPFR_RNDN);
        mpfr_sub(r5180123, r5180121, r5180122, MPFR_RNDN);
        mpfr_sqrt(r5180124, r5180123, MPFR_RNDN);
        mpfr_add(r5180125, r5180120, r5180124, MPFR_RNDN);
        ;
        mpfr_div(r5180127, r5180126, r5180115, MPFR_RNDN);
        mpfr_mul(r5180128, r5180125, r5180127, MPFR_RNDN);
        ;
        mpfr_set_si(r5180130, mpfr_cmp(r5180107, r5180129) <= 0, MPFR_RNDN);
        mpfr_sub(r5180131, r5180120, r5180124, MPFR_RNDN);
        mpfr_div(r5180132, r5180122, r5180131, MPFR_RNDN);
        mpfr_div(r5180133, r5180132, r5180115, MPFR_RNDN);
        mpfr_add(r5180134, r5180107, r5180120, MPFR_RNDN);
        mpfr_div(r5180135, r5180134, r5180115, MPFR_RNDN);
        mpfr_mul(r5180136, r5180111, r5180110, MPFR_RNDN);
        mpfr_div(r5180137, r5180136, r5180107, MPFR_RNDN);
        mpfr_sub(r5180138, r5180135, r5180137, MPFR_RNDN);
        if (mpfr_get_si(r5180130, MPFR_RNDN)) { mpfr_set(r5180139, r5180133, MPFR_RNDN); } else { mpfr_set(r5180139, r5180138, MPFR_RNDN); };
        if (mpfr_get_si(r5180119, MPFR_RNDN)) { mpfr_set(r5180140, r5180128, MPFR_RNDN); } else { mpfr_set(r5180140, r5180139, MPFR_RNDN); };
        if (mpfr_get_si(r5180109, MPFR_RNDN)) { mpfr_set(r5180141, r5180117, MPFR_RNDN); } else { mpfr_set(r5180141, r5180140, MPFR_RNDN); };
        return mpfr_get_d(r5180141, MPFR_RNDN);
}

