#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 r18544 = b_2F2;
        float r18545 = -r18544;
        float r18546 = r18544 * r18544;
        float r18547 = a;
        float r18548 = c;
        float r18549 = r18547 * r18548;
        float r18550 = r18546 - r18549;
        float r18551 = sqrt(r18550);
        float r18552 = r18545 + r18551;
        float r18553 = r18552 / r18547;
        return r18553;
}

double f_id(double a, double b_2F2, double c) {
        double r18554 = b_2F2;
        double r18555 = -r18554;
        double r18556 = r18554 * r18554;
        double r18557 = a;
        double r18558 = c;
        double r18559 = r18557 * r18558;
        double r18560 = r18556 - r18559;
        double r18561 = sqrt(r18560);
        double r18562 = r18555 + r18561;
        double r18563 = r18562 / r18557;
        return r18563;
}


double f_of(float a, float b_2F2, float c) {
        float r18564 = b_2F2;
        float r18565 = -1.2104515124530692e+151f;
        bool r18566 = r18564 <= r18565;
        float r18567 = 0.5f;
        float r18568 = c;
        float r18569 = r18568 / r18564;
        float r18570 = r18567 * r18569;
        float r18571 = 2.0f;
        float r18572 = a;
        float r18573 = r18564 / r18572;
        float r18574 = r18571 * r18573;
        float r18575 = r18570 - r18574;
        float r18576 = 2.5179726424422933e-277f;
        bool r18577 = r18564 <= r18576;
        float r18578 = -r18564;
        float r18579 = r18564 * r18564;
        float r18580 = r18572 * r18568;
        float r18581 = r18579 - r18580;
        float r18582 = sqrt(r18581);
        float r18583 = r18578 + r18582;
        float r18584 = 1.0f;
        float r18585 = r18584 / r18572;
        float r18586 = r18583 * r18585;
        float r18587 = 2.3106113327966147e+121f;
        bool r18588 = r18564 <= r18587;
        float r18589 = r18568 * r18572;
        float r18590 = r18579 - r18589;
        float r18591 = sqrt(r18590);
        float r18592 = r18578 - r18591;
        float r18593 = r18592 / r18568;
        float r18594 = r18584 / r18593;
        float r18595 = r18567 * r18568;
        float r18596 = r18595 / r18573;
        float r18597 = r18578 - r18564;
        float r18598 = r18596 + r18597;
        float r18599 = r18568 / r18598;
        float r18600 = r18588 ? r18594 : r18599;
        float r18601 = r18577 ? r18586 : r18600;
        float r18602 = r18566 ? r18575 : r18601;
        return r18602;
}

double f_od(double a, double b_2F2, double c) {
        double r18603 = b_2F2;
        double r18604 = -1.2104515124530692e+151;
        bool r18605 = r18603 <= r18604;
        double r18606 = 0.5;
        double r18607 = c;
        double r18608 = r18607 / r18603;
        double r18609 = r18606 * r18608;
        double r18610 = 2.0;
        double r18611 = a;
        double r18612 = r18603 / r18611;
        double r18613 = r18610 * r18612;
        double r18614 = r18609 - r18613;
        double r18615 = 2.5179726424422933e-277;
        bool r18616 = r18603 <= r18615;
        double r18617 = -r18603;
        double r18618 = r18603 * r18603;
        double r18619 = r18611 * r18607;
        double r18620 = r18618 - r18619;
        double r18621 = sqrt(r18620);
        double r18622 = r18617 + r18621;
        double r18623 = 1.0;
        double r18624 = r18623 / r18611;
        double r18625 = r18622 * r18624;
        double r18626 = 2.3106113327966147e+121;
        bool r18627 = r18603 <= r18626;
        double r18628 = r18607 * r18611;
        double r18629 = r18618 - r18628;
        double r18630 = sqrt(r18629);
        double r18631 = r18617 - r18630;
        double r18632 = r18631 / r18607;
        double r18633 = r18623 / r18632;
        double r18634 = r18606 * r18607;
        double r18635 = r18634 / r18612;
        double r18636 = r18617 - r18603;
        double r18637 = r18635 + r18636;
        double r18638 = r18607 / r18637;
        double r18639 = r18627 ? r18633 : r18638;
        double r18640 = r18616 ? r18625 : r18639;
        double r18641 = r18605 ? r18614 : r18640;
        return r18641;
}

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 r18642, r18643, r18644, r18645, r18646, r18647, r18648, r18649, r18650, r18651;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2704);
        mpfr_init(r18642);
        mpfr_init(r18643);
        mpfr_init(r18644);
        mpfr_init(r18645);
        mpfr_init(r18646);
        mpfr_init(r18647);
        mpfr_init(r18648);
        mpfr_init(r18649);
        mpfr_init(r18650);
        mpfr_init(r18651);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r18642, b_2F2, MPFR_RNDN);
        mpfr_neg(r18643, r18642, MPFR_RNDN);
        mpfr_sqr(r18644, r18642, MPFR_RNDN);
        mpfr_set_d(r18645, a, MPFR_RNDN);
        mpfr_set_d(r18646, c, MPFR_RNDN);
        mpfr_mul(r18647, r18645, r18646, MPFR_RNDN);
        mpfr_sub(r18648, r18644, r18647, MPFR_RNDN);
        mpfr_sqrt(r18649, r18648, MPFR_RNDN);
        mpfr_add(r18650, r18643, r18649, MPFR_RNDN);
        mpfr_div(r18651, r18650, r18645, MPFR_RNDN);
        return mpfr_get_d(r18651, MPFR_RNDN);
}

static mpfr_t r18652, r18653, r18654, r18655, r18656, r18657, r18658, r18659, r18660, r18661, r18662, r18663, r18664, r18665, r18666, r18667, r18668, r18669, r18670, r18671, r18672, r18673, r18674, r18675, r18676, r18677, r18678, r18679, r18680, r18681, r18682, r18683, r18684, r18685, r18686, r18687, r18688, r18689, r18690;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r18652);
        mpfr_init_set_str(r18653, "-1.2104515124530692e+151", 10, MPFR_RNDN);
        mpfr_init(r18654);
        mpfr_init_set_str(r18655, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18656);
        mpfr_init(r18657);
        mpfr_init(r18658);
        mpfr_init_set_str(r18659, "2", 10, MPFR_RNDN);
        mpfr_init(r18660);
        mpfr_init(r18661);
        mpfr_init(r18662);
        mpfr_init(r18663);
        mpfr_init_set_str(r18664, "2.5179726424422933e-277", 10, MPFR_RNDN);
        mpfr_init(r18665);
        mpfr_init(r18666);
        mpfr_init(r18667);
        mpfr_init(r18668);
        mpfr_init(r18669);
        mpfr_init(r18670);
        mpfr_init(r18671);
        mpfr_init_set_str(r18672, "1", 10, MPFR_RNDN);
        mpfr_init(r18673);
        mpfr_init(r18674);
        mpfr_init_set_str(r18675, "2.3106113327966147e+121", 10, MPFR_RNDN);
        mpfr_init(r18676);
        mpfr_init(r18677);
        mpfr_init(r18678);
        mpfr_init(r18679);
        mpfr_init(r18680);
        mpfr_init(r18681);
        mpfr_init(r18682);
        mpfr_init(r18683);
        mpfr_init(r18684);
        mpfr_init(r18685);
        mpfr_init(r18686);
        mpfr_init(r18687);
        mpfr_init(r18688);
        mpfr_init(r18689);
        mpfr_init(r18690);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r18652, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r18654, mpfr_cmp(r18652, r18653) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r18656, c, MPFR_RNDN);
        mpfr_div(r18657, r18656, r18652, MPFR_RNDN);
        mpfr_mul(r18658, r18655, r18657, MPFR_RNDN);
        ;
        mpfr_set_d(r18660, a, MPFR_RNDN);
        mpfr_div(r18661, r18652, r18660, MPFR_RNDN);
        mpfr_mul(r18662, r18659, r18661, MPFR_RNDN);
        mpfr_sub(r18663, r18658, r18662, MPFR_RNDN);
        ;
        mpfr_set_si(r18665, mpfr_cmp(r18652, r18664) <= 0, MPFR_RNDN);
        mpfr_neg(r18666, r18652, MPFR_RNDN);
        mpfr_sqr(r18667, r18652, MPFR_RNDN);
        mpfr_mul(r18668, r18660, r18656, MPFR_RNDN);
        mpfr_sub(r18669, r18667, r18668, MPFR_RNDN);
        mpfr_sqrt(r18670, r18669, MPFR_RNDN);
        mpfr_add(r18671, r18666, r18670, MPFR_RNDN);
        ;
        mpfr_div(r18673, r18672, r18660, MPFR_RNDN);
        mpfr_mul(r18674, r18671, r18673, MPFR_RNDN);
        ;
        mpfr_set_si(r18676, mpfr_cmp(r18652, r18675) <= 0, MPFR_RNDN);
        mpfr_mul(r18677, r18656, r18660, MPFR_RNDN);
        mpfr_sub(r18678, r18667, r18677, MPFR_RNDN);
        mpfr_sqrt(r18679, r18678, MPFR_RNDN);
        mpfr_sub(r18680, r18666, r18679, MPFR_RNDN);
        mpfr_div(r18681, r18680, r18656, MPFR_RNDN);
        mpfr_div(r18682, r18672, r18681, MPFR_RNDN);
        mpfr_mul(r18683, r18655, r18656, MPFR_RNDN);
        mpfr_div(r18684, r18683, r18661, MPFR_RNDN);
        mpfr_sub(r18685, r18666, r18652, MPFR_RNDN);
        mpfr_add(r18686, r18684, r18685, MPFR_RNDN);
        mpfr_div(r18687, r18656, r18686, MPFR_RNDN);
        if (mpfr_get_si(r18676, MPFR_RNDN)) { mpfr_set(r18688, r18682, MPFR_RNDN); } else { mpfr_set(r18688, r18687, MPFR_RNDN); };
        if (mpfr_get_si(r18665, MPFR_RNDN)) { mpfr_set(r18689, r18674, MPFR_RNDN); } else { mpfr_set(r18689, r18688, MPFR_RNDN); };
        if (mpfr_get_si(r18654, MPFR_RNDN)) { mpfr_set(r18690, r18663, MPFR_RNDN); } else { mpfr_set(r18690, r18689, MPFR_RNDN); };
        return mpfr_get_d(r18690, MPFR_RNDN);
}

static mpfr_t r18691, r18692, r18693, r18694, r18695, r18696, r18697, r18698, r18699, r18700, r18701, r18702, r18703, r18704, r18705, r18706, r18707, r18708, r18709, r18710, r18711, r18712, r18713, r18714, r18715, r18716, r18717, r18718, r18719, r18720, r18721, r18722, r18723, r18724, r18725, r18726, r18727, r18728, r18729;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r18691);
        mpfr_init_set_str(r18692, "-1.2104515124530692e+151", 10, MPFR_RNDN);
        mpfr_init(r18693);
        mpfr_init_set_str(r18694, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18695);
        mpfr_init(r18696);
        mpfr_init(r18697);
        mpfr_init_set_str(r18698, "2", 10, MPFR_RNDN);
        mpfr_init(r18699);
        mpfr_init(r18700);
        mpfr_init(r18701);
        mpfr_init(r18702);
        mpfr_init_set_str(r18703, "2.5179726424422933e-277", 10, MPFR_RNDN);
        mpfr_init(r18704);
        mpfr_init(r18705);
        mpfr_init(r18706);
        mpfr_init(r18707);
        mpfr_init(r18708);
        mpfr_init(r18709);
        mpfr_init(r18710);
        mpfr_init_set_str(r18711, "1", 10, MPFR_RNDN);
        mpfr_init(r18712);
        mpfr_init(r18713);
        mpfr_init_set_str(r18714, "2.3106113327966147e+121", 10, MPFR_RNDN);
        mpfr_init(r18715);
        mpfr_init(r18716);
        mpfr_init(r18717);
        mpfr_init(r18718);
        mpfr_init(r18719);
        mpfr_init(r18720);
        mpfr_init(r18721);
        mpfr_init(r18722);
        mpfr_init(r18723);
        mpfr_init(r18724);
        mpfr_init(r18725);
        mpfr_init(r18726);
        mpfr_init(r18727);
        mpfr_init(r18728);
        mpfr_init(r18729);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r18691, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r18693, mpfr_cmp(r18691, r18692) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r18695, c, MPFR_RNDN);
        mpfr_div(r18696, r18695, r18691, MPFR_RNDN);
        mpfr_mul(r18697, r18694, r18696, MPFR_RNDN);
        ;
        mpfr_set_d(r18699, a, MPFR_RNDN);
        mpfr_div(r18700, r18691, r18699, MPFR_RNDN);
        mpfr_mul(r18701, r18698, r18700, MPFR_RNDN);
        mpfr_sub(r18702, r18697, r18701, MPFR_RNDN);
        ;
        mpfr_set_si(r18704, mpfr_cmp(r18691, r18703) <= 0, MPFR_RNDN);
        mpfr_neg(r18705, r18691, MPFR_RNDN);
        mpfr_sqr(r18706, r18691, MPFR_RNDN);
        mpfr_mul(r18707, r18699, r18695, MPFR_RNDN);
        mpfr_sub(r18708, r18706, r18707, MPFR_RNDN);
        mpfr_sqrt(r18709, r18708, MPFR_RNDN);
        mpfr_add(r18710, r18705, r18709, MPFR_RNDN);
        ;
        mpfr_div(r18712, r18711, r18699, MPFR_RNDN);
        mpfr_mul(r18713, r18710, r18712, MPFR_RNDN);
        ;
        mpfr_set_si(r18715, mpfr_cmp(r18691, r18714) <= 0, MPFR_RNDN);
        mpfr_mul(r18716, r18695, r18699, MPFR_RNDN);
        mpfr_sub(r18717, r18706, r18716, MPFR_RNDN);
        mpfr_sqrt(r18718, r18717, MPFR_RNDN);
        mpfr_sub(r18719, r18705, r18718, MPFR_RNDN);
        mpfr_div(r18720, r18719, r18695, MPFR_RNDN);
        mpfr_div(r18721, r18711, r18720, MPFR_RNDN);
        mpfr_mul(r18722, r18694, r18695, MPFR_RNDN);
        mpfr_div(r18723, r18722, r18700, MPFR_RNDN);
        mpfr_sub(r18724, r18705, r18691, MPFR_RNDN);
        mpfr_add(r18725, r18723, r18724, MPFR_RNDN);
        mpfr_div(r18726, r18695, r18725, MPFR_RNDN);
        if (mpfr_get_si(r18715, MPFR_RNDN)) { mpfr_set(r18727, r18721, MPFR_RNDN); } else { mpfr_set(r18727, r18726, MPFR_RNDN); };
        if (mpfr_get_si(r18704, MPFR_RNDN)) { mpfr_set(r18728, r18713, MPFR_RNDN); } else { mpfr_set(r18728, r18727, MPFR_RNDN); };
        if (mpfr_get_si(r18693, MPFR_RNDN)) { mpfr_set(r18729, r18702, MPFR_RNDN); } else { mpfr_set(r18729, r18728, MPFR_RNDN); };
        return mpfr_get_d(r18729, MPFR_RNDN);
}

