#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 r51577 = x;
        float r51578 = r51577 * r51577;
        float r51579 = y;
        float r51580 = 4.0;
        float r51581 = r51579 * r51580;
        float r51582 = r51581 * r51579;
        float r51583 = r51578 - r51582;
        float r51584 = r51578 + r51582;
        float r51585 = r51583 / r51584;
        return r51585;
}

double f_id(double x, double y) {
        double r51586 = x;
        double r51587 = r51586 * r51586;
        double r51588 = y;
        double r51589 = 4.0;
        double r51590 = r51588 * r51589;
        double r51591 = r51590 * r51588;
        double r51592 = r51587 - r51591;
        double r51593 = r51587 + r51591;
        double r51594 = r51592 / r51593;
        return r51594;
}


double f_of(float x, float y) {
        float r51595 = y;
        float r51596 = -7.802168173177268e+153;
        bool r51597 = r51595 <= r51596;
        float r51598 = -1.0;
        float r51599 = -5.836330729285146e-79;
        bool r51600 = r51595 <= r51599;
        float r51601 = x;
        float r51602 = r51601 * r51601;
        float r51603 = 4.0;
        float r51604 = r51595 * r51603;
        float r51605 = r51604 * r51595;
        float r51606 = r51602 + r51605;
        float r51607 = r51602 / r51606;
        float r51608 = r51605 / r51606;
        float r51609 = r51607 - r51608;
        float r51610 = 3.452373824601348e-136;
        bool r51611 = r51595 <= r51610;
        float r51612 = 1;
        float r51613 = 2.424870889256943e+28;
        bool r51614 = r51595 <= r51613;
        float r51615 = 5.208440760297056e+55;
        bool r51616 = r51595 <= r51615;
        float r51617 = r51616 ? r51612 : r51598;
        float r51618 = r51614 ? r51609 : r51617;
        float r51619 = r51611 ? r51612 : r51618;
        float r51620 = r51600 ? r51609 : r51619;
        float r51621 = r51597 ? r51598 : r51620;
        return r51621;
}

double f_od(double x, double y) {
        double r51622 = y;
        double r51623 = -7.802168173177268e+153;
        bool r51624 = r51622 <= r51623;
        double r51625 = -1.0;
        double r51626 = -5.836330729285146e-79;
        bool r51627 = r51622 <= r51626;
        double r51628 = x;
        double r51629 = r51628 * r51628;
        double r51630 = 4.0;
        double r51631 = r51622 * r51630;
        double r51632 = r51631 * r51622;
        double r51633 = r51629 + r51632;
        double r51634 = r51629 / r51633;
        double r51635 = r51632 / r51633;
        double r51636 = r51634 - r51635;
        double r51637 = 3.452373824601348e-136;
        bool r51638 = r51622 <= r51637;
        double r51639 = 1;
        double r51640 = 2.424870889256943e+28;
        bool r51641 = r51622 <= r51640;
        double r51642 = 5.208440760297056e+55;
        bool r51643 = r51622 <= r51642;
        double r51644 = r51643 ? r51639 : r51625;
        double r51645 = r51641 ? r51636 : r51644;
        double r51646 = r51638 ? r51639 : r51645;
        double r51647 = r51627 ? r51636 : r51646;
        double r51648 = r51624 ? r51625 : r51647;
        return r51648;
}

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 r51649, r51650, r51651, r51652, r51653, r51654, r51655, r51656, r51657;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51649);
        mpfr_init(r51650);
        mpfr_init(r51651);
        mpfr_init_set_str(r51652, "4.0", 10, MPFR_RNDN);
        mpfr_init(r51653);
        mpfr_init(r51654);
        mpfr_init(r51655);
        mpfr_init(r51656);
        mpfr_init(r51657);
}

double f_im(double x, double y) {
        mpfr_set_d(r51649, x, MPFR_RNDN);
        mpfr_mul(r51650, r51649, r51649, MPFR_RNDN);
        mpfr_set_d(r51651, y, MPFR_RNDN);
        ;
        mpfr_mul(r51653, r51651, r51652, MPFR_RNDN);
        mpfr_mul(r51654, r51653, r51651, MPFR_RNDN);
        mpfr_sub(r51655, r51650, r51654, MPFR_RNDN);
        mpfr_add(r51656, r51650, r51654, MPFR_RNDN);
        mpfr_div(r51657, r51655, r51656, MPFR_RNDN);
        return mpfr_get_d(r51657, MPFR_RNDN);
}

static mpfr_t r51658, r51659, r51660, r51661, r51662, r51663, r51664, r51665, r51666, r51667, r51668, r51669, r51670, r51671, r51672, r51673, r51674, r51675, r51676, r51677, r51678, r51679, r51680, r51681, r51682, r51683, r51684;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51658);
        mpfr_init_set_str(r51659, "-7.802168173177268e+153", 10, MPFR_RNDN);
        mpfr_init(r51660);
        mpfr_init_set_str(r51661, "-1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r51662, "-5.836330729285146e-79", 10, MPFR_RNDN);
        mpfr_init(r51663);
        mpfr_init(r51664);
        mpfr_init(r51665);
        mpfr_init_set_str(r51666, "4.0", 10, MPFR_RNDN);
        mpfr_init(r51667);
        mpfr_init(r51668);
        mpfr_init(r51669);
        mpfr_init(r51670);
        mpfr_init(r51671);
        mpfr_init(r51672);
        mpfr_init_set_str(r51673, "3.452373824601348e-136", 10, MPFR_RNDN);
        mpfr_init(r51674);
        mpfr_init_set_str(r51675, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r51676, "2.424870889256943e+28", 10, MPFR_RNDN);
        mpfr_init(r51677);
        mpfr_init_set_str(r51678, "5.208440760297056e+55", 10, MPFR_RNDN);
        mpfr_init(r51679);
        mpfr_init(r51680);
        mpfr_init(r51681);
        mpfr_init(r51682);
        mpfr_init(r51683);
        mpfr_init(r51684);
}

double f_fm(double x, double y) {
        mpfr_set_d(r51658, y, MPFR_RNDN);
        ;
        mpfr_set_si(r51660, mpfr_cmp(r51658, r51659) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r51663, mpfr_cmp(r51658, r51662) <= 0, MPFR_RNDN);
        mpfr_set_d(r51664, x, MPFR_RNDN);
        mpfr_mul(r51665, r51664, r51664, MPFR_RNDN);
        ;
        mpfr_mul(r51667, r51658, r51666, MPFR_RNDN);
        mpfr_mul(r51668, r51667, r51658, MPFR_RNDN);
        mpfr_add(r51669, r51665, r51668, MPFR_RNDN);
        mpfr_div(r51670, r51665, r51669, MPFR_RNDN);
        mpfr_div(r51671, r51668, r51669, MPFR_RNDN);
        mpfr_sub(r51672, r51670, r51671, MPFR_RNDN);
        ;
        mpfr_set_si(r51674, mpfr_cmp(r51658, r51673) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r51677, mpfr_cmp(r51658, r51676) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r51679, mpfr_cmp(r51658, r51678) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r51679, MPFR_RNDN)) { mpfr_set(r51680, r51675, MPFR_RNDN); } else { mpfr_set(r51680, r51661, MPFR_RNDN); };
        if (mpfr_get_si(r51677, MPFR_RNDN)) { mpfr_set(r51681, r51672, MPFR_RNDN); } else { mpfr_set(r51681, r51680, MPFR_RNDN); };
        if (mpfr_get_si(r51674, MPFR_RNDN)) { mpfr_set(r51682, r51675, MPFR_RNDN); } else { mpfr_set(r51682, r51681, MPFR_RNDN); };
        if (mpfr_get_si(r51663, MPFR_RNDN)) { mpfr_set(r51683, r51672, MPFR_RNDN); } else { mpfr_set(r51683, r51682, MPFR_RNDN); };
        if (mpfr_get_si(r51660, MPFR_RNDN)) { mpfr_set(r51684, r51661, MPFR_RNDN); } else { mpfr_set(r51684, r51683, MPFR_RNDN); };
        return mpfr_get_d(r51684, MPFR_RNDN);
}

static mpfr_t r51685, r51686, r51687, r51688, r51689, r51690, r51691, r51692, r51693, r51694, r51695, r51696, r51697, r51698, r51699, r51700, r51701, r51702, r51703, r51704, r51705, r51706, r51707, r51708, r51709, r51710, r51711;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51685);
        mpfr_init_set_str(r51686, "-7.802168173177268e+153", 10, MPFR_RNDN);
        mpfr_init(r51687);
        mpfr_init_set_str(r51688, "-1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r51689, "-5.836330729285146e-79", 10, MPFR_RNDN);
        mpfr_init(r51690);
        mpfr_init(r51691);
        mpfr_init(r51692);
        mpfr_init_set_str(r51693, "4.0", 10, MPFR_RNDN);
        mpfr_init(r51694);
        mpfr_init(r51695);
        mpfr_init(r51696);
        mpfr_init(r51697);
        mpfr_init(r51698);
        mpfr_init(r51699);
        mpfr_init_set_str(r51700, "3.452373824601348e-136", 10, MPFR_RNDN);
        mpfr_init(r51701);
        mpfr_init_set_str(r51702, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r51703, "2.424870889256943e+28", 10, MPFR_RNDN);
        mpfr_init(r51704);
        mpfr_init_set_str(r51705, "5.208440760297056e+55", 10, MPFR_RNDN);
        mpfr_init(r51706);
        mpfr_init(r51707);
        mpfr_init(r51708);
        mpfr_init(r51709);
        mpfr_init(r51710);
        mpfr_init(r51711);
}

double f_dm(double x, double y) {
        mpfr_set_d(r51685, y, MPFR_RNDN);
        ;
        mpfr_set_si(r51687, mpfr_cmp(r51685, r51686) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r51690, mpfr_cmp(r51685, r51689) <= 0, MPFR_RNDN);
        mpfr_set_d(r51691, x, MPFR_RNDN);
        mpfr_mul(r51692, r51691, r51691, MPFR_RNDN);
        ;
        mpfr_mul(r51694, r51685, r51693, MPFR_RNDN);
        mpfr_mul(r51695, r51694, r51685, MPFR_RNDN);
        mpfr_add(r51696, r51692, r51695, MPFR_RNDN);
        mpfr_div(r51697, r51692, r51696, MPFR_RNDN);
        mpfr_div(r51698, r51695, r51696, MPFR_RNDN);
        mpfr_sub(r51699, r51697, r51698, MPFR_RNDN);
        ;
        mpfr_set_si(r51701, mpfr_cmp(r51685, r51700) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r51704, mpfr_cmp(r51685, r51703) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r51706, mpfr_cmp(r51685, r51705) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r51706, MPFR_RNDN)) { mpfr_set(r51707, r51702, MPFR_RNDN); } else { mpfr_set(r51707, r51688, MPFR_RNDN); };
        if (mpfr_get_si(r51704, MPFR_RNDN)) { mpfr_set(r51708, r51699, MPFR_RNDN); } else { mpfr_set(r51708, r51707, MPFR_RNDN); };
        if (mpfr_get_si(r51701, MPFR_RNDN)) { mpfr_set(r51709, r51702, MPFR_RNDN); } else { mpfr_set(r51709, r51708, MPFR_RNDN); };
        if (mpfr_get_si(r51690, MPFR_RNDN)) { mpfr_set(r51710, r51699, MPFR_RNDN); } else { mpfr_set(r51710, r51709, MPFR_RNDN); };
        if (mpfr_get_si(r51687, MPFR_RNDN)) { mpfr_set(r51711, r51688, MPFR_RNDN); } else { mpfr_set(r51711, r51710, MPFR_RNDN); };
        return mpfr_get_d(r51711, MPFR_RNDN);
}

