#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 r52512 = x;
        float r52513 = r52512 * r52512;
        float r52514 = y;
        float r52515 = 4.0;
        float r52516 = r52514 * r52515;
        float r52517 = r52516 * r52514;
        float r52518 = r52513 - r52517;
        float r52519 = r52513 + r52517;
        float r52520 = r52518 / r52519;
        return r52520;
}

double f_id(double x, double y) {
        double r52521 = x;
        double r52522 = r52521 * r52521;
        double r52523 = y;
        double r52524 = 4.0;
        double r52525 = r52523 * r52524;
        double r52526 = r52525 * r52523;
        double r52527 = r52522 - r52526;
        double r52528 = r52522 + r52526;
        double r52529 = r52527 / r52528;
        return r52529;
}


double f_of(float x, float y) {
        float r52530 = y;
        float r52531 = -7.802168173177268e+153;
        bool r52532 = r52530 <= r52531;
        float r52533 = -1.0;
        float r52534 = -5.836330729285146e-79;
        bool r52535 = r52530 <= r52534;
        float r52536 = x;
        float r52537 = r52536 * r52536;
        float r52538 = 4.0;
        float r52539 = r52530 * r52538;
        float r52540 = r52539 * r52530;
        float r52541 = r52537 + r52540;
        float r52542 = r52537 / r52541;
        float r52543 = r52540 / r52541;
        float r52544 = r52542 - r52543;
        float r52545 = 3.452373824601348e-136;
        bool r52546 = r52530 <= r52545;
        float r52547 = 1;
        float r52548 = 2.424870889256943e+28;
        bool r52549 = r52530 <= r52548;
        float r52550 = 5.208440760297056e+55;
        bool r52551 = r52530 <= r52550;
        float r52552 = r52551 ? r52547 : r52533;
        float r52553 = r52549 ? r52544 : r52552;
        float r52554 = r52546 ? r52547 : r52553;
        float r52555 = r52535 ? r52544 : r52554;
        float r52556 = r52532 ? r52533 : r52555;
        return r52556;
}

double f_od(double x, double y) {
        double r52557 = y;
        double r52558 = -7.802168173177268e+153;
        bool r52559 = r52557 <= r52558;
        double r52560 = -1.0;
        double r52561 = -5.836330729285146e-79;
        bool r52562 = r52557 <= r52561;
        double r52563 = x;
        double r52564 = r52563 * r52563;
        double r52565 = 4.0;
        double r52566 = r52557 * r52565;
        double r52567 = r52566 * r52557;
        double r52568 = r52564 + r52567;
        double r52569 = r52564 / r52568;
        double r52570 = r52567 / r52568;
        double r52571 = r52569 - r52570;
        double r52572 = 3.452373824601348e-136;
        bool r52573 = r52557 <= r52572;
        double r52574 = 1;
        double r52575 = 2.424870889256943e+28;
        bool r52576 = r52557 <= r52575;
        double r52577 = 5.208440760297056e+55;
        bool r52578 = r52557 <= r52577;
        double r52579 = r52578 ? r52574 : r52560;
        double r52580 = r52576 ? r52571 : r52579;
        double r52581 = r52573 ? r52574 : r52580;
        double r52582 = r52562 ? r52571 : r52581;
        double r52583 = r52559 ? r52560 : r52582;
        return r52583;
}

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 r52584, r52585, r52586, r52587, r52588, r52589, r52590, r52591, r52592;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52584);
        mpfr_init(r52585);
        mpfr_init(r52586);
        mpfr_init_set_str(r52587, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52588);
        mpfr_init(r52589);
        mpfr_init(r52590);
        mpfr_init(r52591);
        mpfr_init(r52592);
}

double f_im(double x, double y) {
        mpfr_set_d(r52584, x, MPFR_RNDN);
        mpfr_mul(r52585, r52584, r52584, MPFR_RNDN);
        mpfr_set_d(r52586, y, MPFR_RNDN);
        ;
        mpfr_mul(r52588, r52586, r52587, MPFR_RNDN);
        mpfr_mul(r52589, r52588, r52586, MPFR_RNDN);
        mpfr_sub(r52590, r52585, r52589, MPFR_RNDN);
        mpfr_add(r52591, r52585, r52589, MPFR_RNDN);
        mpfr_div(r52592, r52590, r52591, MPFR_RNDN);
        return mpfr_get_d(r52592, MPFR_RNDN);
}

static mpfr_t r52593, r52594, r52595, r52596, r52597, r52598, r52599, r52600, r52601, r52602, r52603, r52604, r52605, r52606, r52607, r52608, r52609, r52610, r52611, r52612, r52613, r52614, r52615, r52616, r52617, r52618, r52619;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52593);
        mpfr_init_set_str(r52594, "-7.802168173177268e+153", 10, MPFR_RNDN);
        mpfr_init(r52595);
        mpfr_init_set_str(r52596, "-1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52597, "-5.836330729285146e-79", 10, MPFR_RNDN);
        mpfr_init(r52598);
        mpfr_init(r52599);
        mpfr_init(r52600);
        mpfr_init_set_str(r52601, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52602);
        mpfr_init(r52603);
        mpfr_init(r52604);
        mpfr_init(r52605);
        mpfr_init(r52606);
        mpfr_init(r52607);
        mpfr_init_set_str(r52608, "3.452373824601348e-136", 10, MPFR_RNDN);
        mpfr_init(r52609);
        mpfr_init_set_str(r52610, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r52611, "2.424870889256943e+28", 10, MPFR_RNDN);
        mpfr_init(r52612);
        mpfr_init_set_str(r52613, "5.208440760297056e+55", 10, MPFR_RNDN);
        mpfr_init(r52614);
        mpfr_init(r52615);
        mpfr_init(r52616);
        mpfr_init(r52617);
        mpfr_init(r52618);
        mpfr_init(r52619);
}

double f_fm(double x, double y) {
        mpfr_set_d(r52593, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52595, mpfr_cmp(r52593, r52594) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52598, mpfr_cmp(r52593, r52597) <= 0, MPFR_RNDN);
        mpfr_set_d(r52599, x, MPFR_RNDN);
        mpfr_mul(r52600, r52599, r52599, MPFR_RNDN);
        ;
        mpfr_mul(r52602, r52593, r52601, MPFR_RNDN);
        mpfr_mul(r52603, r52602, r52593, MPFR_RNDN);
        mpfr_add(r52604, r52600, r52603, MPFR_RNDN);
        mpfr_div(r52605, r52600, r52604, MPFR_RNDN);
        mpfr_div(r52606, r52603, r52604, MPFR_RNDN);
        mpfr_sub(r52607, r52605, r52606, MPFR_RNDN);
        ;
        mpfr_set_si(r52609, mpfr_cmp(r52593, r52608) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52612, mpfr_cmp(r52593, r52611) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r52614, mpfr_cmp(r52593, r52613) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r52614, MPFR_RNDN)) { mpfr_set(r52615, r52610, MPFR_RNDN); } else { mpfr_set(r52615, r52596, MPFR_RNDN); };
        if (mpfr_get_si(r52612, MPFR_RNDN)) { mpfr_set(r52616, r52607, MPFR_RNDN); } else { mpfr_set(r52616, r52615, MPFR_RNDN); };
        if (mpfr_get_si(r52609, MPFR_RNDN)) { mpfr_set(r52617, r52610, MPFR_RNDN); } else { mpfr_set(r52617, r52616, MPFR_RNDN); };
        if (mpfr_get_si(r52598, MPFR_RNDN)) { mpfr_set(r52618, r52607, MPFR_RNDN); } else { mpfr_set(r52618, r52617, MPFR_RNDN); };
        if (mpfr_get_si(r52595, MPFR_RNDN)) { mpfr_set(r52619, r52596, MPFR_RNDN); } else { mpfr_set(r52619, r52618, MPFR_RNDN); };
        return mpfr_get_d(r52619, MPFR_RNDN);
}

static mpfr_t r52620, r52621, r52622, r52623, r52624, r52625, r52626, r52627, r52628, r52629, r52630, r52631, r52632, r52633, r52634, r52635, r52636, r52637, r52638, r52639, r52640, r52641, r52642, r52643, r52644, r52645, r52646;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52620);
        mpfr_init_set_str(r52621, "-7.802168173177268e+153", 10, MPFR_RNDN);
        mpfr_init(r52622);
        mpfr_init_set_str(r52623, "-1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52624, "-5.836330729285146e-79", 10, MPFR_RNDN);
        mpfr_init(r52625);
        mpfr_init(r52626);
        mpfr_init(r52627);
        mpfr_init_set_str(r52628, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52629);
        mpfr_init(r52630);
        mpfr_init(r52631);
        mpfr_init(r52632);
        mpfr_init(r52633);
        mpfr_init(r52634);
        mpfr_init_set_str(r52635, "3.452373824601348e-136", 10, MPFR_RNDN);
        mpfr_init(r52636);
        mpfr_init_set_str(r52637, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r52638, "2.424870889256943e+28", 10, MPFR_RNDN);
        mpfr_init(r52639);
        mpfr_init_set_str(r52640, "5.208440760297056e+55", 10, MPFR_RNDN);
        mpfr_init(r52641);
        mpfr_init(r52642);
        mpfr_init(r52643);
        mpfr_init(r52644);
        mpfr_init(r52645);
        mpfr_init(r52646);
}

double f_dm(double x, double y) {
        mpfr_set_d(r52620, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52622, mpfr_cmp(r52620, r52621) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52625, mpfr_cmp(r52620, r52624) <= 0, MPFR_RNDN);
        mpfr_set_d(r52626, x, MPFR_RNDN);
        mpfr_mul(r52627, r52626, r52626, MPFR_RNDN);
        ;
        mpfr_mul(r52629, r52620, r52628, MPFR_RNDN);
        mpfr_mul(r52630, r52629, r52620, MPFR_RNDN);
        mpfr_add(r52631, r52627, r52630, MPFR_RNDN);
        mpfr_div(r52632, r52627, r52631, MPFR_RNDN);
        mpfr_div(r52633, r52630, r52631, MPFR_RNDN);
        mpfr_sub(r52634, r52632, r52633, MPFR_RNDN);
        ;
        mpfr_set_si(r52636, mpfr_cmp(r52620, r52635) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_si(r52639, mpfr_cmp(r52620, r52638) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r52641, mpfr_cmp(r52620, r52640) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r52641, MPFR_RNDN)) { mpfr_set(r52642, r52637, MPFR_RNDN); } else { mpfr_set(r52642, r52623, MPFR_RNDN); };
        if (mpfr_get_si(r52639, MPFR_RNDN)) { mpfr_set(r52643, r52634, MPFR_RNDN); } else { mpfr_set(r52643, r52642, MPFR_RNDN); };
        if (mpfr_get_si(r52636, MPFR_RNDN)) { mpfr_set(r52644, r52637, MPFR_RNDN); } else { mpfr_set(r52644, r52643, MPFR_RNDN); };
        if (mpfr_get_si(r52625, MPFR_RNDN)) { mpfr_set(r52645, r52634, MPFR_RNDN); } else { mpfr_set(r52645, r52644, MPFR_RNDN); };
        if (mpfr_get_si(r52622, MPFR_RNDN)) { mpfr_set(r52646, r52623, MPFR_RNDN); } else { mpfr_set(r52646, r52645, MPFR_RNDN); };
        return mpfr_get_d(r52646, MPFR_RNDN);
}

