#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 r4501093 = b;
        float r4501094 = -r4501093;
        float r4501095 = r4501093 * r4501093;
        float r4501096 = 4.0f;
        float r4501097 = a;
        float r4501098 = c;
        float r4501099 = r4501097 * r4501098;
        float r4501100 = r4501096 * r4501099;
        float r4501101 = r4501095 - r4501100;
        float r4501102 = sqrt(r4501101);
        float r4501103 = r4501094 + r4501102;
        float r4501104 = 2.0f;
        float r4501105 = r4501104 * r4501097;
        float r4501106 = r4501103 / r4501105;
        return r4501106;
}

double f_id(double a, double b, double c) {
        double r4501107 = b;
        double r4501108 = -r4501107;
        double r4501109 = r4501107 * r4501107;
        double r4501110 = 4.0;
        double r4501111 = a;
        double r4501112 = c;
        double r4501113 = r4501111 * r4501112;
        double r4501114 = r4501110 * r4501113;
        double r4501115 = r4501109 - r4501114;
        double r4501116 = sqrt(r4501115);
        double r4501117 = r4501108 + r4501116;
        double r4501118 = 2.0;
        double r4501119 = r4501118 * r4501111;
        double r4501120 = r4501117 / r4501119;
        return r4501120;
}


double f_of(float a, float b, float c) {
        float r4501121 = b;
        float r4501122 = -2.8335922143007058e+135f;
        bool r4501123 = r4501121 <= r4501122;
        float r4501124 = -r4501121;
        float r4501125 = a;
        float r4501126 = r4501124 / r4501125;
        float r4501127 = 2.4971715086460685e-08f;
        bool r4501128 = r4501121 <= r4501127;
        float r4501129 = r4501121 * r4501121;
        float r4501130 = 4.0f;
        float r4501131 = c;
        float r4501132 = r4501130 * r4501131;
        float r4501133 = r4501125 * r4501132;
        float r4501134 = r4501129 - r4501133;
        float r4501135 = sqrt(r4501134);
        float r4501136 = r4501135 + r4501124;
        float r4501137 = r4501125 + r4501125;
        float r4501138 = r4501136 / r4501137;
        float r4501139 = r4501131 / r4501121;
        float r4501140 = -2.0f;
        float r4501141 = 2.0f;
        float r4501142 = r4501140 / r4501141;
        float r4501143 = r4501139 * r4501142;
        float r4501144 = r4501128 ? r4501138 : r4501143;
        float r4501145 = r4501123 ? r4501126 : r4501144;
        return r4501145;
}

double f_od(double a, double b, double c) {
        double r4501146 = b;
        double r4501147 = -2.8335922143007058e+135;
        bool r4501148 = r4501146 <= r4501147;
        double r4501149 = -r4501146;
        double r4501150 = a;
        double r4501151 = r4501149 / r4501150;
        double r4501152 = 2.4971715086460685e-08;
        bool r4501153 = r4501146 <= r4501152;
        double r4501154 = r4501146 * r4501146;
        double r4501155 = 4.0;
        double r4501156 = c;
        double r4501157 = r4501155 * r4501156;
        double r4501158 = r4501150 * r4501157;
        double r4501159 = r4501154 - r4501158;
        double r4501160 = sqrt(r4501159);
        double r4501161 = r4501160 + r4501149;
        double r4501162 = r4501150 + r4501150;
        double r4501163 = r4501161 / r4501162;
        double r4501164 = r4501156 / r4501146;
        double r4501165 = -2.0;
        double r4501166 = 2.0;
        double r4501167 = r4501165 / r4501166;
        double r4501168 = r4501164 * r4501167;
        double r4501169 = r4501153 ? r4501163 : r4501168;
        double r4501170 = r4501148 ? r4501151 : r4501169;
        return r4501170;
}

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 r4501171, r4501172, r4501173, r4501174, r4501175, r4501176, r4501177, r4501178, r4501179, r4501180, r4501181, r4501182, r4501183, r4501184;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4501171);
        mpfr_init(r4501172);
        mpfr_init(r4501173);
        mpfr_init_set_str(r4501174, "4", 10, MPFR_RNDN);
        mpfr_init(r4501175);
        mpfr_init(r4501176);
        mpfr_init(r4501177);
        mpfr_init(r4501178);
        mpfr_init(r4501179);
        mpfr_init(r4501180);
        mpfr_init(r4501181);
        mpfr_init_set_str(r4501182, "2", 10, MPFR_RNDN);
        mpfr_init(r4501183);
        mpfr_init(r4501184);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r4501171, b, MPFR_RNDN);
        mpfr_neg(r4501172, r4501171, MPFR_RNDN);
        mpfr_sqr(r4501173, r4501171, MPFR_RNDN);
        ;
        mpfr_set_d(r4501175, a, MPFR_RNDN);
        mpfr_set_d(r4501176, c, MPFR_RNDN);
        mpfr_mul(r4501177, r4501175, r4501176, MPFR_RNDN);
        mpfr_mul(r4501178, r4501174, r4501177, MPFR_RNDN);
        mpfr_sub(r4501179, r4501173, r4501178, MPFR_RNDN);
        mpfr_sqrt(r4501180, r4501179, MPFR_RNDN);
        mpfr_add(r4501181, r4501172, r4501180, MPFR_RNDN);
        ;
        mpfr_mul(r4501183, r4501182, r4501175, MPFR_RNDN);
        mpfr_div(r4501184, r4501181, r4501183, MPFR_RNDN);
        return mpfr_get_d(r4501184, MPFR_RNDN);
}

static mpfr_t r4501185, r4501186, r4501187, r4501188, r4501189, r4501190, r4501191, r4501192, r4501193, r4501194, r4501195, r4501196, r4501197, r4501198, r4501199, r4501200, r4501201, r4501202, r4501203, r4501204, r4501205, r4501206, r4501207, r4501208, r4501209;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4501185);
        mpfr_init_set_str(r4501186, "-2.8335922143007058e+135", 10, MPFR_RNDN);
        mpfr_init(r4501187);
        mpfr_init(r4501188);
        mpfr_init(r4501189);
        mpfr_init(r4501190);
        mpfr_init_set_str(r4501191, "2.4971715086460685e-08", 10, MPFR_RNDN);
        mpfr_init(r4501192);
        mpfr_init(r4501193);
        mpfr_init_set_str(r4501194, "4", 10, MPFR_RNDN);
        mpfr_init(r4501195);
        mpfr_init(r4501196);
        mpfr_init(r4501197);
        mpfr_init(r4501198);
        mpfr_init(r4501199);
        mpfr_init(r4501200);
        mpfr_init(r4501201);
        mpfr_init(r4501202);
        mpfr_init(r4501203);
        mpfr_init_set_str(r4501204, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r4501205, "2", 10, MPFR_RNDN);
        mpfr_init(r4501206);
        mpfr_init(r4501207);
        mpfr_init(r4501208);
        mpfr_init(r4501209);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r4501185, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4501187, mpfr_cmp(r4501185, r4501186) <= 0, MPFR_RNDN);
        mpfr_neg(r4501188, r4501185, MPFR_RNDN);
        mpfr_set_d(r4501189, a, MPFR_RNDN);
        mpfr_div(r4501190, r4501188, r4501189, MPFR_RNDN);
        ;
        mpfr_set_si(r4501192, mpfr_cmp(r4501185, r4501191) <= 0, MPFR_RNDN);
        mpfr_mul(r4501193, r4501185, r4501185, MPFR_RNDN);
        ;
        mpfr_set_d(r4501195, c, MPFR_RNDN);
        mpfr_mul(r4501196, r4501194, r4501195, MPFR_RNDN);
        mpfr_mul(r4501197, r4501189, r4501196, MPFR_RNDN);
        mpfr_sub(r4501198, r4501193, r4501197, MPFR_RNDN);
        mpfr_sqrt(r4501199, r4501198, MPFR_RNDN);
        mpfr_add(r4501200, r4501199, r4501188, MPFR_RNDN);
        mpfr_add(r4501201, r4501189, r4501189, MPFR_RNDN);
        mpfr_div(r4501202, r4501200, r4501201, MPFR_RNDN);
        mpfr_div(r4501203, r4501195, r4501185, MPFR_RNDN);
        ;
        ;
        mpfr_div(r4501206, r4501204, r4501205, MPFR_RNDN);
        mpfr_mul(r4501207, r4501203, r4501206, MPFR_RNDN);
        if (mpfr_get_si(r4501192, MPFR_RNDN)) { mpfr_set(r4501208, r4501202, MPFR_RNDN); } else { mpfr_set(r4501208, r4501207, MPFR_RNDN); };
        if (mpfr_get_si(r4501187, MPFR_RNDN)) { mpfr_set(r4501209, r4501190, MPFR_RNDN); } else { mpfr_set(r4501209, r4501208, MPFR_RNDN); };
        return mpfr_get_d(r4501209, MPFR_RNDN);
}

static mpfr_t r4501210, r4501211, r4501212, r4501213, r4501214, r4501215, r4501216, r4501217, r4501218, r4501219, r4501220, r4501221, r4501222, r4501223, r4501224, r4501225, r4501226, r4501227, r4501228, r4501229, r4501230, r4501231, r4501232, r4501233, r4501234;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4501210);
        mpfr_init_set_str(r4501211, "-2.8335922143007058e+135", 10, MPFR_RNDN);
        mpfr_init(r4501212);
        mpfr_init(r4501213);
        mpfr_init(r4501214);
        mpfr_init(r4501215);
        mpfr_init_set_str(r4501216, "2.4971715086460685e-08", 10, MPFR_RNDN);
        mpfr_init(r4501217);
        mpfr_init(r4501218);
        mpfr_init_set_str(r4501219, "4", 10, MPFR_RNDN);
        mpfr_init(r4501220);
        mpfr_init(r4501221);
        mpfr_init(r4501222);
        mpfr_init(r4501223);
        mpfr_init(r4501224);
        mpfr_init(r4501225);
        mpfr_init(r4501226);
        mpfr_init(r4501227);
        mpfr_init(r4501228);
        mpfr_init_set_str(r4501229, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r4501230, "2", 10, MPFR_RNDN);
        mpfr_init(r4501231);
        mpfr_init(r4501232);
        mpfr_init(r4501233);
        mpfr_init(r4501234);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r4501210, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4501212, mpfr_cmp(r4501210, r4501211) <= 0, MPFR_RNDN);
        mpfr_neg(r4501213, r4501210, MPFR_RNDN);
        mpfr_set_d(r4501214, a, MPFR_RNDN);
        mpfr_div(r4501215, r4501213, r4501214, MPFR_RNDN);
        ;
        mpfr_set_si(r4501217, mpfr_cmp(r4501210, r4501216) <= 0, MPFR_RNDN);
        mpfr_mul(r4501218, r4501210, r4501210, MPFR_RNDN);
        ;
        mpfr_set_d(r4501220, c, MPFR_RNDN);
        mpfr_mul(r4501221, r4501219, r4501220, MPFR_RNDN);
        mpfr_mul(r4501222, r4501214, r4501221, MPFR_RNDN);
        mpfr_sub(r4501223, r4501218, r4501222, MPFR_RNDN);
        mpfr_sqrt(r4501224, r4501223, MPFR_RNDN);
        mpfr_add(r4501225, r4501224, r4501213, MPFR_RNDN);
        mpfr_add(r4501226, r4501214, r4501214, MPFR_RNDN);
        mpfr_div(r4501227, r4501225, r4501226, MPFR_RNDN);
        mpfr_div(r4501228, r4501220, r4501210, MPFR_RNDN);
        ;
        ;
        mpfr_div(r4501231, r4501229, r4501230, MPFR_RNDN);
        mpfr_mul(r4501232, r4501228, r4501231, MPFR_RNDN);
        if (mpfr_get_si(r4501217, MPFR_RNDN)) { mpfr_set(r4501233, r4501227, MPFR_RNDN); } else { mpfr_set(r4501233, r4501232, MPFR_RNDN); };
        if (mpfr_get_si(r4501212, MPFR_RNDN)) { mpfr_set(r4501234, r4501215, MPFR_RNDN); } else { mpfr_set(r4501234, r4501233, MPFR_RNDN); };
        return mpfr_get_d(r4501234, MPFR_RNDN);
}

