#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 r52933 = x;
        float r52934 = y;
        float r52935 = r52933 * r52934;
        float r52936 = 1.0;
        float r52937 = r52934 + r52936;
        float r52938 = r52935 / r52937;
        return r52938;
}

double f_id(double x, double y) {
        double r52939 = x;
        double r52940 = y;
        double r52941 = r52939 * r52940;
        double r52942 = 1.0;
        double r52943 = r52940 + r52942;
        double r52944 = r52941 / r52943;
        return r52944;
}


double f_of(float x, float y) {
        float r52945 = y;
        float r52946 = -28.696850627339362;
        bool r52947 = r52945 <= r52946;
        float r52948 = x;
        float r52949 = 1.0;
        float r52950 = r52949 / r52945;
        float r52951 = r52950 - r52949;
        float r52952 = r52948 / r52945;
        float r52953 = r52951 * r52952;
        float r52954 = r52948 + r52953;
        float r52955 = 6031115.829667645;
        bool r52956 = r52945 <= r52955;
        float r52957 = r52948 * r52945;
        float r52958 = r52945 + r52949;
        float r52959 = r52957 / r52958;
        float r52960 = r52956 ? r52959 : r52954;
        float r52961 = r52947 ? r52954 : r52960;
        return r52961;
}

double f_od(double x, double y) {
        double r52962 = y;
        double r52963 = -28.696850627339362;
        bool r52964 = r52962 <= r52963;
        double r52965 = x;
        double r52966 = 1.0;
        double r52967 = r52966 / r52962;
        double r52968 = r52967 - r52966;
        double r52969 = r52965 / r52962;
        double r52970 = r52968 * r52969;
        double r52971 = r52965 + r52970;
        double r52972 = 6031115.829667645;
        bool r52973 = r52962 <= r52972;
        double r52974 = r52965 * r52962;
        double r52975 = r52962 + r52966;
        double r52976 = r52974 / r52975;
        double r52977 = r52973 ? r52976 : r52971;
        double r52978 = r52964 ? r52971 : r52977;
        return r52978;
}

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 r52979, r52980, r52981, r52982, r52983, r52984;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52979);
        mpfr_init(r52980);
        mpfr_init(r52981);
        mpfr_init_set_str(r52982, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52983);
        mpfr_init(r52984);
}

double f_im(double x, double y) {
        mpfr_set_d(r52979, x, MPFR_RNDN);
        mpfr_set_d(r52980, y, MPFR_RNDN);
        mpfr_mul(r52981, r52979, r52980, MPFR_RNDN);
        ;
        mpfr_add(r52983, r52980, r52982, MPFR_RNDN);
        mpfr_div(r52984, r52981, r52983, MPFR_RNDN);
        return mpfr_get_d(r52984, MPFR_RNDN);
}

static mpfr_t r52985, r52986, r52987, r52988, r52989, r52990, r52991, r52992, r52993, r52994, r52995, r52996, r52997, r52998, r52999, r53000, r53001;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52985);
        mpfr_init_set_str(r52986, "-28.696850627339362", 10, MPFR_RNDN);
        mpfr_init(r52987);
        mpfr_init(r52988);
        mpfr_init_set_str(r52989, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52990);
        mpfr_init(r52991);
        mpfr_init(r52992);
        mpfr_init(r52993);
        mpfr_init(r52994);
        mpfr_init_set_str(r52995, "6031115.829667645", 10, MPFR_RNDN);
        mpfr_init(r52996);
        mpfr_init(r52997);
        mpfr_init(r52998);
        mpfr_init(r52999);
        mpfr_init(r53000);
        mpfr_init(r53001);
}

double f_fm(double x, double y) {
        mpfr_set_d(r52985, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52987, mpfr_cmp(r52985, r52986) <= 0, MPFR_RNDN);
        mpfr_set_d(r52988, x, MPFR_RNDN);
        ;
        mpfr_div(r52990, r52989, r52985, MPFR_RNDN);
        mpfr_sub(r52991, r52990, r52989, MPFR_RNDN);
        mpfr_div(r52992, r52988, r52985, MPFR_RNDN);
        mpfr_mul(r52993, r52991, r52992, MPFR_RNDN);
        mpfr_add(r52994, r52988, r52993, MPFR_RNDN);
        ;
        mpfr_set_si(r52996, mpfr_cmp(r52985, r52995) <= 0, MPFR_RNDN);
        mpfr_mul(r52997, r52988, r52985, MPFR_RNDN);
        mpfr_add(r52998, r52985, r52989, MPFR_RNDN);
        mpfr_div(r52999, r52997, r52998, MPFR_RNDN);
        if (mpfr_get_si(r52996, MPFR_RNDN)) { mpfr_set(r53000, r52999, MPFR_RNDN); } else { mpfr_set(r53000, r52994, MPFR_RNDN); };
        if (mpfr_get_si(r52987, MPFR_RNDN)) { mpfr_set(r53001, r52994, MPFR_RNDN); } else { mpfr_set(r53001, r53000, MPFR_RNDN); };
        return mpfr_get_d(r53001, MPFR_RNDN);
}

static mpfr_t r53002, r53003, r53004, r53005, r53006, r53007, r53008, r53009, r53010, r53011, r53012, r53013, r53014, r53015, r53016, r53017, r53018;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r53002);
        mpfr_init_set_str(r53003, "-28.696850627339362", 10, MPFR_RNDN);
        mpfr_init(r53004);
        mpfr_init(r53005);
        mpfr_init_set_str(r53006, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53007);
        mpfr_init(r53008);
        mpfr_init(r53009);
        mpfr_init(r53010);
        mpfr_init(r53011);
        mpfr_init_set_str(r53012, "6031115.829667645", 10, MPFR_RNDN);
        mpfr_init(r53013);
        mpfr_init(r53014);
        mpfr_init(r53015);
        mpfr_init(r53016);
        mpfr_init(r53017);
        mpfr_init(r53018);
}

double f_dm(double x, double y) {
        mpfr_set_d(r53002, y, MPFR_RNDN);
        ;
        mpfr_set_si(r53004, mpfr_cmp(r53002, r53003) <= 0, MPFR_RNDN);
        mpfr_set_d(r53005, x, MPFR_RNDN);
        ;
        mpfr_div(r53007, r53006, r53002, MPFR_RNDN);
        mpfr_sub(r53008, r53007, r53006, MPFR_RNDN);
        mpfr_div(r53009, r53005, r53002, MPFR_RNDN);
        mpfr_mul(r53010, r53008, r53009, MPFR_RNDN);
        mpfr_add(r53011, r53005, r53010, MPFR_RNDN);
        ;
        mpfr_set_si(r53013, mpfr_cmp(r53002, r53012) <= 0, MPFR_RNDN);
        mpfr_mul(r53014, r53005, r53002, MPFR_RNDN);
        mpfr_add(r53015, r53002, r53006, MPFR_RNDN);
        mpfr_div(r53016, r53014, r53015, MPFR_RNDN);
        if (mpfr_get_si(r53013, MPFR_RNDN)) { mpfr_set(r53017, r53016, MPFR_RNDN); } else { mpfr_set(r53017, r53011, MPFR_RNDN); };
        if (mpfr_get_si(r53004, MPFR_RNDN)) { mpfr_set(r53018, r53011, MPFR_RNDN); } else { mpfr_set(r53018, r53017, MPFR_RNDN); };
        return mpfr_get_d(r53018, MPFR_RNDN);
}

