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

char *name = "Diagrams.TwoD.Arc:arcBetween from diagrams-lib-1.3.0.3";

double f_if(float x, float y) {
        float r52476 = x;
        float r52477 = r52476 * r52476;
        float r52478 = y;
        float r52479 = 4.0;
        float r52480 = r52478 * r52479;
        float r52481 = r52480 * r52478;
        float r52482 = r52477 - r52481;
        float r52483 = r52477 + r52481;
        float r52484 = r52482 / r52483;
        return r52484;
}

double f_id(double x, double y) {
        double r52485 = x;
        double r52486 = r52485 * r52485;
        double r52487 = y;
        double r52488 = 4.0;
        double r52489 = r52487 * r52488;
        double r52490 = r52489 * r52487;
        double r52491 = r52486 - r52490;
        double r52492 = r52486 + r52490;
        double r52493 = r52491 / r52492;
        return r52493;
}


double f_of(float x, float y) {
        float r52494 = y;
        float r52495 = -7.833327672762858e+152;
        bool r52496 = r52494 <= r52495;
        float r52497 = -1.0;
        float r52498 = -4.242771342822211e-79;
        bool r52499 = r52494 <= r52498;
        float r52500 = x;
        float r52501 = r52500 * r52500;
        float r52502 = 4.0;
        float r52503 = r52494 * r52502;
        float r52504 = r52503 * r52494;
        float r52505 = r52501 + r52504;
        float r52506 = r52501 / r52505;
        float r52507 = r52504 / r52505;
        float r52508 = r52506 - r52507;
        float r52509 = 1.0512428670373637e-135;
        bool r52510 = r52494 <= r52509;
        float r52511 = 1;
        float r52512 = 2.586528948499352e+28;
        bool r52513 = r52494 <= r52512;
        float r52514 = 6.89776155181784e+58;
        bool r52515 = r52494 <= r52514;
        float r52516 = r52515 ? r52511 : r52497;
        float r52517 = r52513 ? r52508 : r52516;
        float r52518 = r52510 ? r52511 : r52517;
        float r52519 = r52499 ? r52508 : r52518;
        float r52520 = r52496 ? r52497 : r52519;
        return r52520;
}

double f_od(double x, double y) {
        double r52521 = y;
        double r52522 = -7.833327672762858e+152;
        bool r52523 = r52521 <= r52522;
        double r52524 = -1.0;
        double r52525 = -4.242771342822211e-79;
        bool r52526 = r52521 <= r52525;
        double r52527 = x;
        double r52528 = r52527 * r52527;
        double r52529 = 4.0;
        double r52530 = r52521 * r52529;
        double r52531 = r52530 * r52521;
        double r52532 = r52528 + r52531;
        double r52533 = r52528 / r52532;
        double r52534 = r52531 / r52532;
        double r52535 = r52533 - r52534;
        double r52536 = 1.0512428670373637e-135;
        bool r52537 = r52521 <= r52536;
        double r52538 = 1;
        double r52539 = 2.586528948499352e+28;
        bool r52540 = r52521 <= r52539;
        double r52541 = 6.89776155181784e+58;
        bool r52542 = r52521 <= r52541;
        double r52543 = r52542 ? r52538 : r52524;
        double r52544 = r52540 ? r52535 : r52543;
        double r52545 = r52537 ? r52538 : r52544;
        double r52546 = r52526 ? r52535 : r52545;
        double r52547 = r52523 ? r52524 : r52546;
        return r52547;
}

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 r52548, r52549, r52550, r52551, r52552, r52553, r52554, r52555, r52556;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52548);
        mpfr_init(r52549);
        mpfr_init(r52550);
        mpfr_init_set_str(r52551, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52552);
        mpfr_init(r52553);
        mpfr_init(r52554);
        mpfr_init(r52555);
        mpfr_init(r52556);
}

double f_im(double x, double y) {
        mpfr_set_d(r52548, x, MPFR_RNDN);
        mpfr_mul(r52549, r52548, r52548, MPFR_RNDN);
        mpfr_set_d(r52550, y, MPFR_RNDN);
        ;
        mpfr_mul(r52552, r52550, r52551, MPFR_RNDN);
        mpfr_mul(r52553, r52552, r52550, MPFR_RNDN);
        mpfr_sub(r52554, r52549, r52553, MPFR_RNDN);
        mpfr_add(r52555, r52549, r52553, MPFR_RNDN);
        mpfr_div(r52556, r52554, r52555, MPFR_RNDN);
        return mpfr_get_d(r52556, MPFR_RNDN);
}

static mpfr_t r52557, r52558, r52559, r52560, r52561, r52562, r52563, r52564, r52565, r52566, r52567, r52568, r52569, r52570, r52571, r52572, r52573, r52574, r52575, r52576, r52577, r52578, r52579, r52580, r52581, r52582, r52583;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52557);
        mpfr_init_set_str(r52558, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r52559);
        mpfr_init_set_str(r52560, "-1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52561, "-4.242771342822211e-79", 10, MPFR_RNDN);
        mpfr_init(r52562);
        mpfr_init(r52563);
        mpfr_init(r52564);
        mpfr_init_set_str(r52565, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52566);
        mpfr_init(r52567);
        mpfr_init(r52568);
        mpfr_init(r52569);
        mpfr_init(r52570);
        mpfr_init(r52571);
        mpfr_init_set_str(r52572, "1.0512428670373637e-135", 10, MPFR_RNDN);
        mpfr_init(r52573);
        mpfr_init_set_str(r52574, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r52575, "2.586528948499352e+28", 10, MPFR_RNDN);
        mpfr_init(r52576);
        mpfr_init_set_str(r52577, "6.89776155181784e+58", 10, MPFR_RNDN);
        mpfr_init(r52578);
        mpfr_init(r52579);
        mpfr_init(r52580);
        mpfr_init(r52581);
        mpfr_init(r52582);
        mpfr_init(r52583);
}

double f_fm(double x, double y) {
        mpfr_set_d(r52557, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52559, mpfr_cmp(r52557, r52558) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52562, mpfr_cmp(r52557, r52561) <= 0, MPFR_RNDN);
        mpfr_set_d(r52563, x, MPFR_RNDN);
        mpfr_mul(r52564, r52563, r52563, MPFR_RNDN);
        ;
        mpfr_mul(r52566, r52557, r52565, MPFR_RNDN);
        mpfr_mul(r52567, r52566, r52557, MPFR_RNDN);
        mpfr_add(r52568, r52564, r52567, MPFR_RNDN);
        mpfr_div(r52569, r52564, r52568, MPFR_RNDN);
        mpfr_div(r52570, r52567, r52568, MPFR_RNDN);
        mpfr_sub(r52571, r52569, r52570, MPFR_RNDN);
        ;
        mpfr_set_si(r52573, mpfr_cmp(r52557, r52572) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52576, mpfr_cmp(r52557, r52575) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r52578, mpfr_cmp(r52557, r52577) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r52578, MPFR_RNDN)) { mpfr_set(r52579, r52574, MPFR_RNDN); } else { mpfr_set(r52579, r52560, MPFR_RNDN); };
        if (mpfr_get_si(r52576, MPFR_RNDN)) { mpfr_set(r52580, r52571, MPFR_RNDN); } else { mpfr_set(r52580, r52579, MPFR_RNDN); };
        if (mpfr_get_si(r52573, MPFR_RNDN)) { mpfr_set(r52581, r52574, MPFR_RNDN); } else { mpfr_set(r52581, r52580, MPFR_RNDN); };
        if (mpfr_get_si(r52562, MPFR_RNDN)) { mpfr_set(r52582, r52571, MPFR_RNDN); } else { mpfr_set(r52582, r52581, MPFR_RNDN); };
        if (mpfr_get_si(r52559, MPFR_RNDN)) { mpfr_set(r52583, r52560, MPFR_RNDN); } else { mpfr_set(r52583, r52582, MPFR_RNDN); };
        return mpfr_get_d(r52583, MPFR_RNDN);
}

static mpfr_t r52584, r52585, r52586, r52587, r52588, r52589, r52590, r52591, r52592, r52593, r52594, r52595, r52596, r52597, r52598, r52599, r52600, r52601, r52602, r52603, r52604, r52605, r52606, r52607, r52608, r52609, r52610;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52584);
        mpfr_init_set_str(r52585, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r52586);
        mpfr_init_set_str(r52587, "-1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52588, "-4.242771342822211e-79", 10, MPFR_RNDN);
        mpfr_init(r52589);
        mpfr_init(r52590);
        mpfr_init(r52591);
        mpfr_init_set_str(r52592, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52593);
        mpfr_init(r52594);
        mpfr_init(r52595);
        mpfr_init(r52596);
        mpfr_init(r52597);
        mpfr_init(r52598);
        mpfr_init_set_str(r52599, "1.0512428670373637e-135", 10, MPFR_RNDN);
        mpfr_init(r52600);
        mpfr_init_set_str(r52601, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r52602, "2.586528948499352e+28", 10, MPFR_RNDN);
        mpfr_init(r52603);
        mpfr_init_set_str(r52604, "6.89776155181784e+58", 10, MPFR_RNDN);
        mpfr_init(r52605);
        mpfr_init(r52606);
        mpfr_init(r52607);
        mpfr_init(r52608);
        mpfr_init(r52609);
        mpfr_init(r52610);
}

double f_dm(double x, double y) {
        mpfr_set_d(r52584, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52586, mpfr_cmp(r52584, r52585) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52589, mpfr_cmp(r52584, r52588) <= 0, MPFR_RNDN);
        mpfr_set_d(r52590, x, MPFR_RNDN);
        mpfr_mul(r52591, r52590, r52590, MPFR_RNDN);
        ;
        mpfr_mul(r52593, r52584, r52592, MPFR_RNDN);
        mpfr_mul(r52594, r52593, r52584, MPFR_RNDN);
        mpfr_add(r52595, r52591, r52594, MPFR_RNDN);
        mpfr_div(r52596, r52591, r52595, MPFR_RNDN);
        mpfr_div(r52597, r52594, r52595, MPFR_RNDN);
        mpfr_sub(r52598, r52596, r52597, MPFR_RNDN);
        ;
        mpfr_set_si(r52600, mpfr_cmp(r52584, r52599) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52603, mpfr_cmp(r52584, r52602) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r52605, mpfr_cmp(r52584, r52604) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r52605, MPFR_RNDN)) { mpfr_set(r52606, r52601, MPFR_RNDN); } else { mpfr_set(r52606, r52587, MPFR_RNDN); };
        if (mpfr_get_si(r52603, MPFR_RNDN)) { mpfr_set(r52607, r52598, MPFR_RNDN); } else { mpfr_set(r52607, r52606, MPFR_RNDN); };
        if (mpfr_get_si(r52600, MPFR_RNDN)) { mpfr_set(r52608, r52601, MPFR_RNDN); } else { mpfr_set(r52608, r52607, MPFR_RNDN); };
        if (mpfr_get_si(r52589, MPFR_RNDN)) { mpfr_set(r52609, r52598, MPFR_RNDN); } else { mpfr_set(r52609, r52608, MPFR_RNDN); };
        if (mpfr_get_si(r52586, MPFR_RNDN)) { mpfr_set(r52610, r52587, MPFR_RNDN); } else { mpfr_set(r52610, r52609, MPFR_RNDN); };
        return mpfr_get_d(r52610, MPFR_RNDN);
}

