#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 r52573 = 1.0;
        float r52574 = x;
        float r52575 = r52573 - r52574;
        float r52576 = y;
        float r52577 = r52575 * r52576;
        float r52578 = r52576 + r52573;
        float r52579 = r52577 / r52578;
        float r52580 = r52573 - r52579;
        return r52580;
}

double f_id(double x, double y) {
        double r52581 = 1.0;
        double r52582 = x;
        double r52583 = r52581 - r52582;
        double r52584 = y;
        double r52585 = r52583 * r52584;
        double r52586 = r52584 + r52581;
        double r52587 = r52585 / r52586;
        double r52588 = r52581 - r52587;
        return r52588;
}


double f_of(float x, float y) {
        float r52589 = y;
        float r52590 = -105446982.68410039;
        bool r52591 = r52589 <= r52590;
        float r52592 = x;
        float r52593 = 1.0;
        float r52594 = r52593 - r52592;
        float r52595 = r52593 / r52589;
        float r52596 = r52595 - r52593;
        float r52597 = r52589 / r52596;
        float r52598 = r52594 / r52597;
        float r52599 = r52592 - r52598;
        float r52600 = 232001311.40530783;
        bool r52601 = r52589 <= r52600;
        float r52602 = r52589 + r52593;
        float r52603 = r52589 / r52602;
        float r52604 = r52603 * r52594;
        float r52605 = r52593 - r52604;
        float r52606 = r52601 ? r52605 : r52599;
        float r52607 = r52591 ? r52599 : r52606;
        return r52607;
}

double f_od(double x, double y) {
        double r52608 = y;
        double r52609 = -105446982.68410039;
        bool r52610 = r52608 <= r52609;
        double r52611 = x;
        double r52612 = 1.0;
        double r52613 = r52612 - r52611;
        double r52614 = r52612 / r52608;
        double r52615 = r52614 - r52612;
        double r52616 = r52608 / r52615;
        double r52617 = r52613 / r52616;
        double r52618 = r52611 - r52617;
        double r52619 = 232001311.40530783;
        bool r52620 = r52608 <= r52619;
        double r52621 = r52608 + r52612;
        double r52622 = r52608 / r52621;
        double r52623 = r52622 * r52613;
        double r52624 = r52612 - r52623;
        double r52625 = r52620 ? r52624 : r52618;
        double r52626 = r52610 ? r52618 : r52625;
        return r52626;
}

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 r52627, r52628, r52629, r52630, r52631, r52632, r52633, r52634;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r52627, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52628);
        mpfr_init(r52629);
        mpfr_init(r52630);
        mpfr_init(r52631);
        mpfr_init(r52632);
        mpfr_init(r52633);
        mpfr_init(r52634);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r52628, x, MPFR_RNDN);
        mpfr_sub(r52629, r52627, r52628, MPFR_RNDN);
        mpfr_set_d(r52630, y, MPFR_RNDN);
        mpfr_mul(r52631, r52629, r52630, MPFR_RNDN);
        mpfr_add(r52632, r52630, r52627, MPFR_RNDN);
        mpfr_div(r52633, r52631, r52632, MPFR_RNDN);
        mpfr_sub(r52634, r52627, r52633, MPFR_RNDN);
        return mpfr_get_d(r52634, MPFR_RNDN);
}

static mpfr_t r52635, r52636, r52637, r52638, r52639, r52640, r52641, r52642, r52643, r52644, r52645, r52646, r52647, r52648, r52649, r52650, r52651, r52652, r52653;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r52635);
        mpfr_init_set_str(r52636, "-105446982.68410039", 10, MPFR_RNDN);
        mpfr_init(r52637);
        mpfr_init(r52638);
        mpfr_init_set_str(r52639, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52640);
        mpfr_init(r52641);
        mpfr_init(r52642);
        mpfr_init(r52643);
        mpfr_init(r52644);
        mpfr_init(r52645);
        mpfr_init_set_str(r52646, "232001311.40530783", 10, MPFR_RNDN);
        mpfr_init(r52647);
        mpfr_init(r52648);
        mpfr_init(r52649);
        mpfr_init(r52650);
        mpfr_init(r52651);
        mpfr_init(r52652);
        mpfr_init(r52653);
}

double f_fm(double x, double y) {
        mpfr_set_d(r52635, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52637, mpfr_cmp(r52635, r52636) <= 0, MPFR_RNDN);
        mpfr_set_d(r52638, x, MPFR_RNDN);
        ;
        mpfr_sub(r52640, r52639, r52638, MPFR_RNDN);
        mpfr_div(r52641, r52639, r52635, MPFR_RNDN);
        mpfr_sub(r52642, r52641, r52639, MPFR_RNDN);
        mpfr_div(r52643, r52635, r52642, MPFR_RNDN);
        mpfr_div(r52644, r52640, r52643, MPFR_RNDN);
        mpfr_sub(r52645, r52638, r52644, MPFR_RNDN);
        ;
        mpfr_set_si(r52647, mpfr_cmp(r52635, r52646) <= 0, MPFR_RNDN);
        mpfr_add(r52648, r52635, r52639, MPFR_RNDN);
        mpfr_div(r52649, r52635, r52648, MPFR_RNDN);
        mpfr_mul(r52650, r52649, r52640, MPFR_RNDN);
        mpfr_sub(r52651, r52639, r52650, MPFR_RNDN);
        if (mpfr_get_si(r52647, MPFR_RNDN)) { mpfr_set(r52652, r52651, MPFR_RNDN); } else { mpfr_set(r52652, r52645, MPFR_RNDN); };
        if (mpfr_get_si(r52637, MPFR_RNDN)) { mpfr_set(r52653, r52645, MPFR_RNDN); } else { mpfr_set(r52653, r52652, MPFR_RNDN); };
        return mpfr_get_d(r52653, MPFR_RNDN);
}

static mpfr_t r52654, r52655, r52656, r52657, r52658, r52659, r52660, r52661, r52662, r52663, r52664, r52665, r52666, r52667, r52668, r52669, r52670, r52671, r52672;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r52654);
        mpfr_init_set_str(r52655, "-105446982.68410039", 10, MPFR_RNDN);
        mpfr_init(r52656);
        mpfr_init(r52657);
        mpfr_init_set_str(r52658, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52659);
        mpfr_init(r52660);
        mpfr_init(r52661);
        mpfr_init(r52662);
        mpfr_init(r52663);
        mpfr_init(r52664);
        mpfr_init_set_str(r52665, "232001311.40530783", 10, MPFR_RNDN);
        mpfr_init(r52666);
        mpfr_init(r52667);
        mpfr_init(r52668);
        mpfr_init(r52669);
        mpfr_init(r52670);
        mpfr_init(r52671);
        mpfr_init(r52672);
}

double f_dm(double x, double y) {
        mpfr_set_d(r52654, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52656, mpfr_cmp(r52654, r52655) <= 0, MPFR_RNDN);
        mpfr_set_d(r52657, x, MPFR_RNDN);
        ;
        mpfr_sub(r52659, r52658, r52657, MPFR_RNDN);
        mpfr_div(r52660, r52658, r52654, MPFR_RNDN);
        mpfr_sub(r52661, r52660, r52658, MPFR_RNDN);
        mpfr_div(r52662, r52654, r52661, MPFR_RNDN);
        mpfr_div(r52663, r52659, r52662, MPFR_RNDN);
        mpfr_sub(r52664, r52657, r52663, MPFR_RNDN);
        ;
        mpfr_set_si(r52666, mpfr_cmp(r52654, r52665) <= 0, MPFR_RNDN);
        mpfr_add(r52667, r52654, r52658, MPFR_RNDN);
        mpfr_div(r52668, r52654, r52667, MPFR_RNDN);
        mpfr_mul(r52669, r52668, r52659, MPFR_RNDN);
        mpfr_sub(r52670, r52658, r52669, MPFR_RNDN);
        if (mpfr_get_si(r52666, MPFR_RNDN)) { mpfr_set(r52671, r52670, MPFR_RNDN); } else { mpfr_set(r52671, r52664, MPFR_RNDN); };
        if (mpfr_get_si(r52656, MPFR_RNDN)) { mpfr_set(r52672, r52664, MPFR_RNDN); } else { mpfr_set(r52672, r52671, MPFR_RNDN); };
        return mpfr_get_d(r52672, MPFR_RNDN);
}

