#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 r52673 = x;
        float r52674 = y;
        float r52675 = r52673 * r52674;
        float r52676 = 1.0;
        float r52677 = r52674 + r52676;
        float r52678 = r52675 / r52677;
        return r52678;
}

double f_id(double x, double y) {
        double r52679 = x;
        double r52680 = y;
        double r52681 = r52679 * r52680;
        double r52682 = 1.0;
        double r52683 = r52680 + r52682;
        double r52684 = r52681 / r52683;
        return r52684;
}


double f_of(float x, float y) {
        float r52685 = y;
        float r52686 = -411930.8608633218;
        bool r52687 = r52685 <= r52686;
        float r52688 = x;
        float r52689 = 1.0;
        float r52690 = r52689 / r52685;
        float r52691 = r52690 - r52689;
        float r52692 = r52688 / r52685;
        float r52693 = r52691 * r52692;
        float r52694 = r52688 + r52693;
        float r52695 = 282709.3197423372;
        bool r52696 = r52685 <= r52695;
        float r52697 = r52688 * r52685;
        float r52698 = r52685 + r52689;
        float r52699 = r52697 / r52698;
        float r52700 = r52696 ? r52699 : r52694;
        float r52701 = r52687 ? r52694 : r52700;
        return r52701;
}

double f_od(double x, double y) {
        double r52702 = y;
        double r52703 = -411930.8608633218;
        bool r52704 = r52702 <= r52703;
        double r52705 = x;
        double r52706 = 1.0;
        double r52707 = r52706 / r52702;
        double r52708 = r52707 - r52706;
        double r52709 = r52705 / r52702;
        double r52710 = r52708 * r52709;
        double r52711 = r52705 + r52710;
        double r52712 = 282709.3197423372;
        bool r52713 = r52702 <= r52712;
        double r52714 = r52705 * r52702;
        double r52715 = r52702 + r52706;
        double r52716 = r52714 / r52715;
        double r52717 = r52713 ? r52716 : r52711;
        double r52718 = r52704 ? r52711 : r52717;
        return r52718;
}

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 r52719, r52720, r52721, r52722, r52723, r52724;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52719);
        mpfr_init(r52720);
        mpfr_init(r52721);
        mpfr_init_set_str(r52722, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52723);
        mpfr_init(r52724);
}

double f_im(double x, double y) {
        mpfr_set_d(r52719, x, MPFR_RNDN);
        mpfr_set_d(r52720, y, MPFR_RNDN);
        mpfr_mul(r52721, r52719, r52720, MPFR_RNDN);
        ;
        mpfr_add(r52723, r52720, r52722, MPFR_RNDN);
        mpfr_div(r52724, r52721, r52723, MPFR_RNDN);
        return mpfr_get_d(r52724, MPFR_RNDN);
}

static mpfr_t r52725, r52726, r52727, r52728, r52729, r52730, r52731, r52732, r52733, r52734, r52735, r52736, r52737, r52738, r52739, r52740, r52741;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52725);
        mpfr_init_set_str(r52726, "-411930.8608633218", 10, MPFR_RNDN);
        mpfr_init(r52727);
        mpfr_init(r52728);
        mpfr_init_set_str(r52729, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52730);
        mpfr_init(r52731);
        mpfr_init(r52732);
        mpfr_init(r52733);
        mpfr_init(r52734);
        mpfr_init_set_str(r52735, "282709.3197423372", 10, MPFR_RNDN);
        mpfr_init(r52736);
        mpfr_init(r52737);
        mpfr_init(r52738);
        mpfr_init(r52739);
        mpfr_init(r52740);
        mpfr_init(r52741);
}

double f_fm(double x, double y) {
        mpfr_set_d(r52725, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52727, mpfr_cmp(r52725, r52726) <= 0, MPFR_RNDN);
        mpfr_set_d(r52728, x, MPFR_RNDN);
        ;
        mpfr_div(r52730, r52729, r52725, MPFR_RNDN);
        mpfr_sub(r52731, r52730, r52729, MPFR_RNDN);
        mpfr_div(r52732, r52728, r52725, MPFR_RNDN);
        mpfr_mul(r52733, r52731, r52732, MPFR_RNDN);
        mpfr_add(r52734, r52728, r52733, MPFR_RNDN);
        ;
        mpfr_set_si(r52736, mpfr_cmp(r52725, r52735) <= 0, MPFR_RNDN);
        mpfr_mul(r52737, r52728, r52725, MPFR_RNDN);
        mpfr_add(r52738, r52725, r52729, MPFR_RNDN);
        mpfr_div(r52739, r52737, r52738, MPFR_RNDN);
        if (mpfr_get_si(r52736, MPFR_RNDN)) { mpfr_set(r52740, r52739, MPFR_RNDN); } else { mpfr_set(r52740, r52734, MPFR_RNDN); };
        if (mpfr_get_si(r52727, MPFR_RNDN)) { mpfr_set(r52741, r52734, MPFR_RNDN); } else { mpfr_set(r52741, r52740, MPFR_RNDN); };
        return mpfr_get_d(r52741, MPFR_RNDN);
}

static mpfr_t r52742, r52743, r52744, r52745, r52746, r52747, r52748, r52749, r52750, r52751, r52752, r52753, r52754, r52755, r52756, r52757, r52758;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52742);
        mpfr_init_set_str(r52743, "-411930.8608633218", 10, MPFR_RNDN);
        mpfr_init(r52744);
        mpfr_init(r52745);
        mpfr_init_set_str(r52746, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52747);
        mpfr_init(r52748);
        mpfr_init(r52749);
        mpfr_init(r52750);
        mpfr_init(r52751);
        mpfr_init_set_str(r52752, "282709.3197423372", 10, MPFR_RNDN);
        mpfr_init(r52753);
        mpfr_init(r52754);
        mpfr_init(r52755);
        mpfr_init(r52756);
        mpfr_init(r52757);
        mpfr_init(r52758);
}

double f_dm(double x, double y) {
        mpfr_set_d(r52742, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52744, mpfr_cmp(r52742, r52743) <= 0, MPFR_RNDN);
        mpfr_set_d(r52745, x, MPFR_RNDN);
        ;
        mpfr_div(r52747, r52746, r52742, MPFR_RNDN);
        mpfr_sub(r52748, r52747, r52746, MPFR_RNDN);
        mpfr_div(r52749, r52745, r52742, MPFR_RNDN);
        mpfr_mul(r52750, r52748, r52749, MPFR_RNDN);
        mpfr_add(r52751, r52745, r52750, MPFR_RNDN);
        ;
        mpfr_set_si(r52753, mpfr_cmp(r52742, r52752) <= 0, MPFR_RNDN);
        mpfr_mul(r52754, r52745, r52742, MPFR_RNDN);
        mpfr_add(r52755, r52742, r52746, MPFR_RNDN);
        mpfr_div(r52756, r52754, r52755, MPFR_RNDN);
        if (mpfr_get_si(r52753, MPFR_RNDN)) { mpfr_set(r52757, r52756, MPFR_RNDN); } else { mpfr_set(r52757, r52751, MPFR_RNDN); };
        if (mpfr_get_si(r52744, MPFR_RNDN)) { mpfr_set(r52758, r52751, MPFR_RNDN); } else { mpfr_set(r52758, r52757, MPFR_RNDN); };
        return mpfr_get_d(r52758, MPFR_RNDN);
}

