#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, B";

double f_if(float x, float y) {
        float r52711 = x;
        float r52712 = y;
        float r52713 = r52711 * r52712;
        float r52714 = 1.0;
        float r52715 = r52712 + r52714;
        float r52716 = r52713 / r52715;
        return r52716;
}

double f_id(double x, double y) {
        double r52717 = x;
        double r52718 = y;
        double r52719 = r52717 * r52718;
        double r52720 = 1.0;
        double r52721 = r52718 + r52720;
        double r52722 = r52719 / r52721;
        return r52722;
}


double f_of(float x, float y) {
        float r52723 = y;
        float r52724 = -411930.8608633218;
        bool r52725 = r52723 <= r52724;
        float r52726 = x;
        float r52727 = 1.0;
        float r52728 = r52727 / r52723;
        float r52729 = r52728 - r52727;
        float r52730 = r52726 / r52723;
        float r52731 = r52729 * r52730;
        float r52732 = r52726 + r52731;
        float r52733 = 282709.3197423372;
        bool r52734 = r52723 <= r52733;
        float r52735 = r52726 * r52723;
        float r52736 = r52723 + r52727;
        float r52737 = r52735 / r52736;
        float r52738 = r52734 ? r52737 : r52732;
        float r52739 = r52725 ? r52732 : r52738;
        return r52739;
}

double f_od(double x, double y) {
        double r52740 = y;
        double r52741 = -411930.8608633218;
        bool r52742 = r52740 <= r52741;
        double r52743 = x;
        double r52744 = 1.0;
        double r52745 = r52744 / r52740;
        double r52746 = r52745 - r52744;
        double r52747 = r52743 / r52740;
        double r52748 = r52746 * r52747;
        double r52749 = r52743 + r52748;
        double r52750 = 282709.3197423372;
        bool r52751 = r52740 <= r52750;
        double r52752 = r52743 * r52740;
        double r52753 = r52740 + r52744;
        double r52754 = r52752 / r52753;
        double r52755 = r52751 ? r52754 : r52749;
        double r52756 = r52742 ? r52749 : r52755;
        return r52756;
}

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 r52757, r52758, r52759, r52760, r52761, r52762;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52757);
        mpfr_init(r52758);
        mpfr_init(r52759);
        mpfr_init_set_str(r52760, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52761);
        mpfr_init(r52762);
}

double f_im(double x, double y) {
        mpfr_set_d(r52757, x, MPFR_RNDN);
        mpfr_set_d(r52758, y, MPFR_RNDN);
        mpfr_mul(r52759, r52757, r52758, MPFR_RNDN);
        ;
        mpfr_add(r52761, r52758, r52760, MPFR_RNDN);
        mpfr_div(r52762, r52759, r52761, MPFR_RNDN);
        return mpfr_get_d(r52762, MPFR_RNDN);
}

static mpfr_t r52763, r52764, r52765, r52766, r52767, r52768, r52769, r52770, r52771, r52772, r52773, r52774, r52775, r52776, r52777, r52778, r52779;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52763);
        mpfr_init_set_str(r52764, "-411930.8608633218", 10, MPFR_RNDN);
        mpfr_init(r52765);
        mpfr_init(r52766);
        mpfr_init_set_str(r52767, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52768);
        mpfr_init(r52769);
        mpfr_init(r52770);
        mpfr_init(r52771);
        mpfr_init(r52772);
        mpfr_init_set_str(r52773, "282709.3197423372", 10, MPFR_RNDN);
        mpfr_init(r52774);
        mpfr_init(r52775);
        mpfr_init(r52776);
        mpfr_init(r52777);
        mpfr_init(r52778);
        mpfr_init(r52779);
}

double f_fm(double x, double y) {
        mpfr_set_d(r52763, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52765, mpfr_cmp(r52763, r52764) <= 0, MPFR_RNDN);
        mpfr_set_d(r52766, x, MPFR_RNDN);
        ;
        mpfr_div(r52768, r52767, r52763, MPFR_RNDN);
        mpfr_sub(r52769, r52768, r52767, MPFR_RNDN);
        mpfr_div(r52770, r52766, r52763, MPFR_RNDN);
        mpfr_mul(r52771, r52769, r52770, MPFR_RNDN);
        mpfr_add(r52772, r52766, r52771, MPFR_RNDN);
        ;
        mpfr_set_si(r52774, mpfr_cmp(r52763, r52773) <= 0, MPFR_RNDN);
        mpfr_mul(r52775, r52766, r52763, MPFR_RNDN);
        mpfr_add(r52776, r52763, r52767, MPFR_RNDN);
        mpfr_div(r52777, r52775, r52776, MPFR_RNDN);
        if (mpfr_get_si(r52774, MPFR_RNDN)) { mpfr_set(r52778, r52777, MPFR_RNDN); } else { mpfr_set(r52778, r52772, MPFR_RNDN); };
        if (mpfr_get_si(r52765, MPFR_RNDN)) { mpfr_set(r52779, r52772, MPFR_RNDN); } else { mpfr_set(r52779, r52778, MPFR_RNDN); };
        return mpfr_get_d(r52779, MPFR_RNDN);
}

static mpfr_t r52780, r52781, r52782, r52783, r52784, r52785, r52786, r52787, r52788, r52789, r52790, r52791, r52792, r52793, r52794, r52795, r52796;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52780);
        mpfr_init_set_str(r52781, "-411930.8608633218", 10, MPFR_RNDN);
        mpfr_init(r52782);
        mpfr_init(r52783);
        mpfr_init_set_str(r52784, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52785);
        mpfr_init(r52786);
        mpfr_init(r52787);
        mpfr_init(r52788);
        mpfr_init(r52789);
        mpfr_init_set_str(r52790, "282709.3197423372", 10, MPFR_RNDN);
        mpfr_init(r52791);
        mpfr_init(r52792);
        mpfr_init(r52793);
        mpfr_init(r52794);
        mpfr_init(r52795);
        mpfr_init(r52796);
}

double f_dm(double x, double y) {
        mpfr_set_d(r52780, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52782, mpfr_cmp(r52780, r52781) <= 0, MPFR_RNDN);
        mpfr_set_d(r52783, x, MPFR_RNDN);
        ;
        mpfr_div(r52785, r52784, r52780, MPFR_RNDN);
        mpfr_sub(r52786, r52785, r52784, MPFR_RNDN);
        mpfr_div(r52787, r52783, r52780, MPFR_RNDN);
        mpfr_mul(r52788, r52786, r52787, MPFR_RNDN);
        mpfr_add(r52789, r52783, r52788, MPFR_RNDN);
        ;
        mpfr_set_si(r52791, mpfr_cmp(r52780, r52790) <= 0, MPFR_RNDN);
        mpfr_mul(r52792, r52783, r52780, MPFR_RNDN);
        mpfr_add(r52793, r52780, r52784, MPFR_RNDN);
        mpfr_div(r52794, r52792, r52793, MPFR_RNDN);
        if (mpfr_get_si(r52791, MPFR_RNDN)) { mpfr_set(r52795, r52794, MPFR_RNDN); } else { mpfr_set(r52795, r52789, MPFR_RNDN); };
        if (mpfr_get_si(r52782, MPFR_RNDN)) { mpfr_set(r52796, r52789, MPFR_RNDN); } else { mpfr_set(r52796, r52795, MPFR_RNDN); };
        return mpfr_get_d(r52796, MPFR_RNDN);
}

