#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 r53093 = x;
        float r53094 = y;
        float r53095 = r53093 * r53094;
        float r53096 = 1.0;
        float r53097 = r53094 + r53096;
        float r53098 = r53095 / r53097;
        return r53098;
}

double f_id(double x, double y) {
        double r53099 = x;
        double r53100 = y;
        double r53101 = r53099 * r53100;
        double r53102 = 1.0;
        double r53103 = r53100 + r53102;
        double r53104 = r53101 / r53103;
        return r53104;
}


double f_of(float x, float y) {
        float r53105 = y;
        float r53106 = -28.696850627339362;
        bool r53107 = r53105 <= r53106;
        float r53108 = x;
        float r53109 = 1.0;
        float r53110 = r53109 / r53105;
        float r53111 = r53110 - r53109;
        float r53112 = r53108 / r53105;
        float r53113 = r53111 * r53112;
        float r53114 = r53108 + r53113;
        float r53115 = 6031115.829667645;
        bool r53116 = r53105 <= r53115;
        float r53117 = r53108 * r53105;
        float r53118 = r53105 + r53109;
        float r53119 = r53117 / r53118;
        float r53120 = r53116 ? r53119 : r53114;
        float r53121 = r53107 ? r53114 : r53120;
        return r53121;
}

double f_od(double x, double y) {
        double r53122 = y;
        double r53123 = -28.696850627339362;
        bool r53124 = r53122 <= r53123;
        double r53125 = x;
        double r53126 = 1.0;
        double r53127 = r53126 / r53122;
        double r53128 = r53127 - r53126;
        double r53129 = r53125 / r53122;
        double r53130 = r53128 * r53129;
        double r53131 = r53125 + r53130;
        double r53132 = 6031115.829667645;
        bool r53133 = r53122 <= r53132;
        double r53134 = r53125 * r53122;
        double r53135 = r53122 + r53126;
        double r53136 = r53134 / r53135;
        double r53137 = r53133 ? r53136 : r53131;
        double r53138 = r53124 ? r53131 : r53137;
        return r53138;
}

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 r53139, r53140, r53141, r53142, r53143, r53144;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r53139);
        mpfr_init(r53140);
        mpfr_init(r53141);
        mpfr_init_set_str(r53142, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53143);
        mpfr_init(r53144);
}

double f_im(double x, double y) {
        mpfr_set_d(r53139, x, MPFR_RNDN);
        mpfr_set_d(r53140, y, MPFR_RNDN);
        mpfr_mul(r53141, r53139, r53140, MPFR_RNDN);
        ;
        mpfr_add(r53143, r53140, r53142, MPFR_RNDN);
        mpfr_div(r53144, r53141, r53143, MPFR_RNDN);
        return mpfr_get_d(r53144, MPFR_RNDN);
}

static mpfr_t r53145, r53146, r53147, r53148, r53149, r53150, r53151, r53152, r53153, r53154, r53155, r53156, r53157, r53158, r53159, r53160, r53161;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r53145);
        mpfr_init_set_str(r53146, "-28.696850627339362", 10, MPFR_RNDN);
        mpfr_init(r53147);
        mpfr_init(r53148);
        mpfr_init_set_str(r53149, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53150);
        mpfr_init(r53151);
        mpfr_init(r53152);
        mpfr_init(r53153);
        mpfr_init(r53154);
        mpfr_init_set_str(r53155, "6031115.829667645", 10, MPFR_RNDN);
        mpfr_init(r53156);
        mpfr_init(r53157);
        mpfr_init(r53158);
        mpfr_init(r53159);
        mpfr_init(r53160);
        mpfr_init(r53161);
}

double f_fm(double x, double y) {
        mpfr_set_d(r53145, y, MPFR_RNDN);
        ;
        mpfr_set_si(r53147, mpfr_cmp(r53145, r53146) <= 0, MPFR_RNDN);
        mpfr_set_d(r53148, x, MPFR_RNDN);
        ;
        mpfr_div(r53150, r53149, r53145, MPFR_RNDN);
        mpfr_sub(r53151, r53150, r53149, MPFR_RNDN);
        mpfr_div(r53152, r53148, r53145, MPFR_RNDN);
        mpfr_mul(r53153, r53151, r53152, MPFR_RNDN);
        mpfr_add(r53154, r53148, r53153, MPFR_RNDN);
        ;
        mpfr_set_si(r53156, mpfr_cmp(r53145, r53155) <= 0, MPFR_RNDN);
        mpfr_mul(r53157, r53148, r53145, MPFR_RNDN);
        mpfr_add(r53158, r53145, r53149, MPFR_RNDN);
        mpfr_div(r53159, r53157, r53158, MPFR_RNDN);
        if (mpfr_get_si(r53156, MPFR_RNDN)) { mpfr_set(r53160, r53159, MPFR_RNDN); } else { mpfr_set(r53160, r53154, MPFR_RNDN); };
        if (mpfr_get_si(r53147, MPFR_RNDN)) { mpfr_set(r53161, r53154, MPFR_RNDN); } else { mpfr_set(r53161, r53160, MPFR_RNDN); };
        return mpfr_get_d(r53161, MPFR_RNDN);
}

static mpfr_t r53162, r53163, r53164, r53165, r53166, r53167, r53168, r53169, r53170, r53171, r53172, r53173, r53174, r53175, r53176, r53177, r53178;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r53162);
        mpfr_init_set_str(r53163, "-28.696850627339362", 10, MPFR_RNDN);
        mpfr_init(r53164);
        mpfr_init(r53165);
        mpfr_init_set_str(r53166, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53167);
        mpfr_init(r53168);
        mpfr_init(r53169);
        mpfr_init(r53170);
        mpfr_init(r53171);
        mpfr_init_set_str(r53172, "6031115.829667645", 10, MPFR_RNDN);
        mpfr_init(r53173);
        mpfr_init(r53174);
        mpfr_init(r53175);
        mpfr_init(r53176);
        mpfr_init(r53177);
        mpfr_init(r53178);
}

double f_dm(double x, double y) {
        mpfr_set_d(r53162, y, MPFR_RNDN);
        ;
        mpfr_set_si(r53164, mpfr_cmp(r53162, r53163) <= 0, MPFR_RNDN);
        mpfr_set_d(r53165, x, MPFR_RNDN);
        ;
        mpfr_div(r53167, r53166, r53162, MPFR_RNDN);
        mpfr_sub(r53168, r53167, r53166, MPFR_RNDN);
        mpfr_div(r53169, r53165, r53162, MPFR_RNDN);
        mpfr_mul(r53170, r53168, r53169, MPFR_RNDN);
        mpfr_add(r53171, r53165, r53170, MPFR_RNDN);
        ;
        mpfr_set_si(r53173, mpfr_cmp(r53162, r53172) <= 0, MPFR_RNDN);
        mpfr_mul(r53174, r53165, r53162, MPFR_RNDN);
        mpfr_add(r53175, r53162, r53166, MPFR_RNDN);
        mpfr_div(r53176, r53174, r53175, MPFR_RNDN);
        if (mpfr_get_si(r53173, MPFR_RNDN)) { mpfr_set(r53177, r53176, MPFR_RNDN); } else { mpfr_set(r53177, r53171, MPFR_RNDN); };
        if (mpfr_get_si(r53164, MPFR_RNDN)) { mpfr_set(r53178, r53171, MPFR_RNDN); } else { mpfr_set(r53178, r53177, MPFR_RNDN); };
        return mpfr_get_d(r53178, MPFR_RNDN);
}

