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

double f_if(float x, float y, float z, float t) {
        float r52056 = x;
        float r52057 = y;
        float r52058 = z;
        float r52059 = r52057 * r52058;
        float r52060 = r52059 - r52056;
        float r52061 = t;
        float r52062 = r52061 * r52058;
        float r52063 = r52062 - r52056;
        float r52064 = r52060 / r52063;
        float r52065 = r52056 + r52064;
        float r52066 = 1.0;
        float r52067 = r52056 + r52066;
        float r52068 = r52065 / r52067;
        return r52068;
}

double f_id(double x, double y, double z, double t) {
        double r52069 = x;
        double r52070 = y;
        double r52071 = z;
        double r52072 = r52070 * r52071;
        double r52073 = r52072 - r52069;
        double r52074 = t;
        double r52075 = r52074 * r52071;
        double r52076 = r52075 - r52069;
        double r52077 = r52073 / r52076;
        double r52078 = r52069 + r52077;
        double r52079 = 1.0;
        double r52080 = r52069 + r52079;
        double r52081 = r52078 / r52080;
        return r52081;
}


double f_of(float x, float y, float z, float t) {
        float r52082 = x;
        float r52083 = y;
        float r52084 = t;
        float r52085 = z;
        float r52086 = r52082 / r52085;
        float r52087 = r52084 - r52086;
        float r52088 = r52083 / r52087;
        float r52089 = r52084 * r52085;
        float r52090 = r52089 - r52082;
        float r52091 = r52082 / r52090;
        float r52092 = r52088 - r52091;
        float r52093 = r52082 + r52092;
        float r52094 = 1.0;
        float r52095 = r52082 + r52094;
        float r52096 = r52093 / r52095;
        return r52096;
}

double f_od(double x, double y, double z, double t) {
        double r52097 = x;
        double r52098 = y;
        double r52099 = t;
        double r52100 = z;
        double r52101 = r52097 / r52100;
        double r52102 = r52099 - r52101;
        double r52103 = r52098 / r52102;
        double r52104 = r52099 * r52100;
        double r52105 = r52104 - r52097;
        double r52106 = r52097 / r52105;
        double r52107 = r52103 - r52106;
        double r52108 = r52097 + r52107;
        double r52109 = 1.0;
        double r52110 = r52097 + r52109;
        double r52111 = r52108 / r52110;
        return r52111;
}

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 r52112, r52113, r52114, r52115, r52116, r52117, r52118, r52119, r52120, r52121, r52122, r52123, r52124;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52112);
        mpfr_init(r52113);
        mpfr_init(r52114);
        mpfr_init(r52115);
        mpfr_init(r52116);
        mpfr_init(r52117);
        mpfr_init(r52118);
        mpfr_init(r52119);
        mpfr_init(r52120);
        mpfr_init(r52121);
        mpfr_init_set_str(r52122, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52123);
        mpfr_init(r52124);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r52112, x, MPFR_RNDN);
        mpfr_set_d(r52113, y, MPFR_RNDN);
        mpfr_set_d(r52114, z, MPFR_RNDN);
        mpfr_mul(r52115, r52113, r52114, MPFR_RNDN);
        mpfr_sub(r52116, r52115, r52112, MPFR_RNDN);
        mpfr_set_d(r52117, t, MPFR_RNDN);
        mpfr_mul(r52118, r52117, r52114, MPFR_RNDN);
        mpfr_sub(r52119, r52118, r52112, MPFR_RNDN);
        mpfr_div(r52120, r52116, r52119, MPFR_RNDN);
        mpfr_add(r52121, r52112, r52120, MPFR_RNDN);
        ;
        mpfr_add(r52123, r52112, r52122, MPFR_RNDN);
        mpfr_div(r52124, r52121, r52123, MPFR_RNDN);
        return mpfr_get_d(r52124, MPFR_RNDN);
}

static mpfr_t r52125, r52126, r52127, r52128, r52129, r52130, r52131, r52132, r52133, r52134, r52135, r52136, r52137, r52138, r52139;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52125);
        mpfr_init(r52126);
        mpfr_init(r52127);
        mpfr_init(r52128);
        mpfr_init(r52129);
        mpfr_init(r52130);
        mpfr_init(r52131);
        mpfr_init(r52132);
        mpfr_init(r52133);
        mpfr_init(r52134);
        mpfr_init(r52135);
        mpfr_init(r52136);
        mpfr_init_set_str(r52137, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52138);
        mpfr_init(r52139);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r52125, x, MPFR_RNDN);
        mpfr_set_d(r52126, y, MPFR_RNDN);
        mpfr_set_d(r52127, t, MPFR_RNDN);
        mpfr_set_d(r52128, z, MPFR_RNDN);
        mpfr_div(r52129, r52125, r52128, MPFR_RNDN);
        mpfr_sub(r52130, r52127, r52129, MPFR_RNDN);
        mpfr_div(r52131, r52126, r52130, MPFR_RNDN);
        mpfr_mul(r52132, r52127, r52128, MPFR_RNDN);
        mpfr_sub(r52133, r52132, r52125, MPFR_RNDN);
        mpfr_div(r52134, r52125, r52133, MPFR_RNDN);
        mpfr_sub(r52135, r52131, r52134, MPFR_RNDN);
        mpfr_add(r52136, r52125, r52135, MPFR_RNDN);
        ;
        mpfr_add(r52138, r52125, r52137, MPFR_RNDN);
        mpfr_div(r52139, r52136, r52138, MPFR_RNDN);
        return mpfr_get_d(r52139, MPFR_RNDN);
}

static mpfr_t r52140, r52141, r52142, r52143, r52144, r52145, r52146, r52147, r52148, r52149, r52150, r52151, r52152, r52153, r52154;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52140);
        mpfr_init(r52141);
        mpfr_init(r52142);
        mpfr_init(r52143);
        mpfr_init(r52144);
        mpfr_init(r52145);
        mpfr_init(r52146);
        mpfr_init(r52147);
        mpfr_init(r52148);
        mpfr_init(r52149);
        mpfr_init(r52150);
        mpfr_init(r52151);
        mpfr_init_set_str(r52152, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52153);
        mpfr_init(r52154);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r52140, x, MPFR_RNDN);
        mpfr_set_d(r52141, y, MPFR_RNDN);
        mpfr_set_d(r52142, t, MPFR_RNDN);
        mpfr_set_d(r52143, z, MPFR_RNDN);
        mpfr_div(r52144, r52140, r52143, MPFR_RNDN);
        mpfr_sub(r52145, r52142, r52144, MPFR_RNDN);
        mpfr_div(r52146, r52141, r52145, MPFR_RNDN);
        mpfr_mul(r52147, r52142, r52143, MPFR_RNDN);
        mpfr_sub(r52148, r52147, r52140, MPFR_RNDN);
        mpfr_div(r52149, r52140, r52148, MPFR_RNDN);
        mpfr_sub(r52150, r52146, r52149, MPFR_RNDN);
        mpfr_add(r52151, r52140, r52150, MPFR_RNDN);
        ;
        mpfr_add(r52153, r52140, r52152, MPFR_RNDN);
        mpfr_div(r52154, r52151, r52153, MPFR_RNDN);
        return mpfr_get_d(r52154, MPFR_RNDN);
}

