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

char *name = "Diagrams.Trail:splitAtParam  from diagrams-lib-1.3.0.3, D";

double f_if(float x, float y) {
        float r50552 = 1.0f;
        float r50553 = x;
        float r50554 = r50552 - r50553;
        float r50555 = y;
        float r50556 = r50554 * r50555;
        float r50557 = r50555 + r50552;
        float r50558 = r50556 / r50557;
        float r50559 = r50552 - r50558;
        return r50559;
}

double f_id(double x, double y) {
        double r50560 = 1.0;
        double r50561 = x;
        double r50562 = r50560 - r50561;
        double r50563 = y;
        double r50564 = r50562 * r50563;
        double r50565 = r50563 + r50560;
        double r50566 = r50564 / r50565;
        double r50567 = r50560 - r50566;
        return r50567;
}


double f_of(float x, float y) {
        float r50568 = y;
        float r50569 = -162969717.01587787f;
        bool r50570 = r50568 <= r50569;
        float r50571 = x;
        float r50572 = 1.0f;
        float r50573 = r50572 / r50568;
        float r50574 = r50571 + r50573;
        float r50575 = r50573 * r50571;
        float r50576 = r50574 - r50575;
        float r50577 = 1815642973497.1892f;
        bool r50578 = r50568 <= r50577;
        float r50579 = r50572 + r50568;
        float r50580 = r50568 / r50579;
        float r50581 = r50572 - r50571;
        float r50582 = r50580 * r50581;
        float r50583 = r50572 - r50582;
        float r50584 = r50578 ? r50583 : r50576;
        float r50585 = r50570 ? r50576 : r50584;
        return r50585;
}

double f_od(double x, double y) {
        double r50586 = y;
        double r50587 = -162969717.01587787;
        bool r50588 = r50586 <= r50587;
        double r50589 = x;
        double r50590 = 1.0;
        double r50591 = r50590 / r50586;
        double r50592 = r50589 + r50591;
        double r50593 = r50591 * r50589;
        double r50594 = r50592 - r50593;
        double r50595 = 1815642973497.1892;
        bool r50596 = r50586 <= r50595;
        double r50597 = r50590 + r50586;
        double r50598 = r50586 / r50597;
        double r50599 = r50590 - r50589;
        double r50600 = r50598 * r50599;
        double r50601 = r50590 - r50600;
        double r50602 = r50596 ? r50601 : r50594;
        double r50603 = r50588 ? r50594 : r50602;
        return r50603;
}

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 r50604, r50605, r50606, r50607, r50608, r50609, r50610, r50611;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r50604, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50605);
        mpfr_init(r50606);
        mpfr_init(r50607);
        mpfr_init(r50608);
        mpfr_init(r50609);
        mpfr_init(r50610);
        mpfr_init(r50611);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r50605, x, MPFR_RNDN);
        mpfr_sub(r50606, r50604, r50605, MPFR_RNDN);
        mpfr_set_d(r50607, y, MPFR_RNDN);
        mpfr_mul(r50608, r50606, r50607, MPFR_RNDN);
        mpfr_add(r50609, r50607, r50604, MPFR_RNDN);
        mpfr_div(r50610, r50608, r50609, MPFR_RNDN);
        mpfr_sub(r50611, r50604, r50610, MPFR_RNDN);
        return mpfr_get_d(r50611, MPFR_RNDN);
}

static mpfr_t r50612, r50613, r50614, r50615, r50616, r50617, r50618, r50619, r50620, r50621, r50622, r50623, r50624, r50625, r50626, r50627, r50628, r50629;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50612);
        mpfr_init_set_str(r50613, "-162969717.01587787", 10, MPFR_RNDN);
        mpfr_init(r50614);
        mpfr_init(r50615);
        mpfr_init_set_str(r50616, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50617);
        mpfr_init(r50618);
        mpfr_init(r50619);
        mpfr_init(r50620);
        mpfr_init_set_str(r50621, "1815642973497.1892", 10, MPFR_RNDN);
        mpfr_init(r50622);
        mpfr_init(r50623);
        mpfr_init(r50624);
        mpfr_init(r50625);
        mpfr_init(r50626);
        mpfr_init(r50627);
        mpfr_init(r50628);
        mpfr_init(r50629);
}

double f_fm(double x, double y) {
        mpfr_set_d(r50612, y, MPFR_RNDN);
        ;
        mpfr_set_si(r50614, mpfr_cmp(r50612, r50613) <= 0, MPFR_RNDN);
        mpfr_set_d(r50615, x, MPFR_RNDN);
        ;
        mpfr_div(r50617, r50616, r50612, MPFR_RNDN);
        mpfr_add(r50618, r50615, r50617, MPFR_RNDN);
        mpfr_mul(r50619, r50617, r50615, MPFR_RNDN);
        mpfr_sub(r50620, r50618, r50619, MPFR_RNDN);
        ;
        mpfr_set_si(r50622, mpfr_cmp(r50612, r50621) <= 0, MPFR_RNDN);
        mpfr_add(r50623, r50616, r50612, MPFR_RNDN);
        mpfr_div(r50624, r50612, r50623, MPFR_RNDN);
        mpfr_sub(r50625, r50616, r50615, MPFR_RNDN);
        mpfr_mul(r50626, r50624, r50625, MPFR_RNDN);
        mpfr_sub(r50627, r50616, r50626, MPFR_RNDN);
        if (mpfr_get_si(r50622, MPFR_RNDN)) { mpfr_set(r50628, r50627, MPFR_RNDN); } else { mpfr_set(r50628, r50620, MPFR_RNDN); };
        if (mpfr_get_si(r50614, MPFR_RNDN)) { mpfr_set(r50629, r50620, MPFR_RNDN); } else { mpfr_set(r50629, r50628, MPFR_RNDN); };
        return mpfr_get_d(r50629, MPFR_RNDN);
}

static mpfr_t r50630, r50631, r50632, r50633, r50634, r50635, r50636, r50637, r50638, r50639, r50640, r50641, r50642, r50643, r50644, r50645, r50646, r50647;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50630);
        mpfr_init_set_str(r50631, "-162969717.01587787", 10, MPFR_RNDN);
        mpfr_init(r50632);
        mpfr_init(r50633);
        mpfr_init_set_str(r50634, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50635);
        mpfr_init(r50636);
        mpfr_init(r50637);
        mpfr_init(r50638);
        mpfr_init_set_str(r50639, "1815642973497.1892", 10, MPFR_RNDN);
        mpfr_init(r50640);
        mpfr_init(r50641);
        mpfr_init(r50642);
        mpfr_init(r50643);
        mpfr_init(r50644);
        mpfr_init(r50645);
        mpfr_init(r50646);
        mpfr_init(r50647);
}

double f_dm(double x, double y) {
        mpfr_set_d(r50630, y, MPFR_RNDN);
        ;
        mpfr_set_si(r50632, mpfr_cmp(r50630, r50631) <= 0, MPFR_RNDN);
        mpfr_set_d(r50633, x, MPFR_RNDN);
        ;
        mpfr_div(r50635, r50634, r50630, MPFR_RNDN);
        mpfr_add(r50636, r50633, r50635, MPFR_RNDN);
        mpfr_mul(r50637, r50635, r50633, MPFR_RNDN);
        mpfr_sub(r50638, r50636, r50637, MPFR_RNDN);
        ;
        mpfr_set_si(r50640, mpfr_cmp(r50630, r50639) <= 0, MPFR_RNDN);
        mpfr_add(r50641, r50634, r50630, MPFR_RNDN);
        mpfr_div(r50642, r50630, r50641, MPFR_RNDN);
        mpfr_sub(r50643, r50634, r50633, MPFR_RNDN);
        mpfr_mul(r50644, r50642, r50643, MPFR_RNDN);
        mpfr_sub(r50645, r50634, r50644, MPFR_RNDN);
        if (mpfr_get_si(r50640, MPFR_RNDN)) { mpfr_set(r50646, r50645, MPFR_RNDN); } else { mpfr_set(r50646, r50638, MPFR_RNDN); };
        if (mpfr_get_si(r50632, MPFR_RNDN)) { mpfr_set(r50647, r50638, MPFR_RNDN); } else { mpfr_set(r50647, r50646, MPFR_RNDN); };
        return mpfr_get_d(r50647, MPFR_RNDN);
}

