#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 r53179 = x;
        float r53180 = y;
        float r53181 = z;
        float r53182 = r53180 * r53181;
        float r53183 = r53182 - r53179;
        float r53184 = t;
        float r53185 = r53184 * r53181;
        float r53186 = r53185 - r53179;
        float r53187 = r53183 / r53186;
        float r53188 = r53179 + r53187;
        float r53189 = 1.0;
        float r53190 = r53179 + r53189;
        float r53191 = r53188 / r53190;
        return r53191;
}

double f_id(double x, double y, double z, double t) {
        double r53192 = x;
        double r53193 = y;
        double r53194 = z;
        double r53195 = r53193 * r53194;
        double r53196 = r53195 - r53192;
        double r53197 = t;
        double r53198 = r53197 * r53194;
        double r53199 = r53198 - r53192;
        double r53200 = r53196 / r53199;
        double r53201 = r53192 + r53200;
        double r53202 = 1.0;
        double r53203 = r53192 + r53202;
        double r53204 = r53201 / r53203;
        return r53204;
}


double f_of(float x, float y, float z, float t) {
        float r53205 = x;
        float r53206 = y;
        float r53207 = t;
        float r53208 = z;
        float r53209 = r53205 / r53208;
        float r53210 = r53207 - r53209;
        float r53211 = r53206 / r53210;
        float r53212 = r53207 * r53208;
        float r53213 = r53212 - r53205;
        float r53214 = r53205 / r53213;
        float r53215 = r53211 - r53214;
        float r53216 = r53205 + r53215;
        float r53217 = 1.0;
        float r53218 = r53205 + r53217;
        float r53219 = r53216 / r53218;
        return r53219;
}

double f_od(double x, double y, double z, double t) {
        double r53220 = x;
        double r53221 = y;
        double r53222 = t;
        double r53223 = z;
        double r53224 = r53220 / r53223;
        double r53225 = r53222 - r53224;
        double r53226 = r53221 / r53225;
        double r53227 = r53222 * r53223;
        double r53228 = r53227 - r53220;
        double r53229 = r53220 / r53228;
        double r53230 = r53226 - r53229;
        double r53231 = r53220 + r53230;
        double r53232 = 1.0;
        double r53233 = r53220 + r53232;
        double r53234 = r53231 / r53233;
        return r53234;
}

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 r53235, r53236, r53237, r53238, r53239, r53240, r53241, r53242, r53243, r53244, r53245, r53246, r53247;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r53235);
        mpfr_init(r53236);
        mpfr_init(r53237);
        mpfr_init(r53238);
        mpfr_init(r53239);
        mpfr_init(r53240);
        mpfr_init(r53241);
        mpfr_init(r53242);
        mpfr_init(r53243);
        mpfr_init(r53244);
        mpfr_init_set_str(r53245, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53246);
        mpfr_init(r53247);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r53235, x, MPFR_RNDN);
        mpfr_set_d(r53236, y, MPFR_RNDN);
        mpfr_set_d(r53237, z, MPFR_RNDN);
        mpfr_mul(r53238, r53236, r53237, MPFR_RNDN);
        mpfr_sub(r53239, r53238, r53235, MPFR_RNDN);
        mpfr_set_d(r53240, t, MPFR_RNDN);
        mpfr_mul(r53241, r53240, r53237, MPFR_RNDN);
        mpfr_sub(r53242, r53241, r53235, MPFR_RNDN);
        mpfr_div(r53243, r53239, r53242, MPFR_RNDN);
        mpfr_add(r53244, r53235, r53243, MPFR_RNDN);
        ;
        mpfr_add(r53246, r53235, r53245, MPFR_RNDN);
        mpfr_div(r53247, r53244, r53246, MPFR_RNDN);
        return mpfr_get_d(r53247, MPFR_RNDN);
}

static mpfr_t r53248, r53249, r53250, r53251, r53252, r53253, r53254, r53255, r53256, r53257, r53258, r53259, r53260, r53261, r53262;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r53248);
        mpfr_init(r53249);
        mpfr_init(r53250);
        mpfr_init(r53251);
        mpfr_init(r53252);
        mpfr_init(r53253);
        mpfr_init(r53254);
        mpfr_init(r53255);
        mpfr_init(r53256);
        mpfr_init(r53257);
        mpfr_init(r53258);
        mpfr_init(r53259);
        mpfr_init_set_str(r53260, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53261);
        mpfr_init(r53262);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r53248, x, MPFR_RNDN);
        mpfr_set_d(r53249, y, MPFR_RNDN);
        mpfr_set_d(r53250, t, MPFR_RNDN);
        mpfr_set_d(r53251, z, MPFR_RNDN);
        mpfr_div(r53252, r53248, r53251, MPFR_RNDN);
        mpfr_sub(r53253, r53250, r53252, MPFR_RNDN);
        mpfr_div(r53254, r53249, r53253, MPFR_RNDN);
        mpfr_mul(r53255, r53250, r53251, MPFR_RNDN);
        mpfr_sub(r53256, r53255, r53248, MPFR_RNDN);
        mpfr_div(r53257, r53248, r53256, MPFR_RNDN);
        mpfr_sub(r53258, r53254, r53257, MPFR_RNDN);
        mpfr_add(r53259, r53248, r53258, MPFR_RNDN);
        ;
        mpfr_add(r53261, r53248, r53260, MPFR_RNDN);
        mpfr_div(r53262, r53259, r53261, MPFR_RNDN);
        return mpfr_get_d(r53262, MPFR_RNDN);
}

static mpfr_t r53263, r53264, r53265, r53266, r53267, r53268, r53269, r53270, r53271, r53272, r53273, r53274, r53275, r53276, r53277;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r53263);
        mpfr_init(r53264);
        mpfr_init(r53265);
        mpfr_init(r53266);
        mpfr_init(r53267);
        mpfr_init(r53268);
        mpfr_init(r53269);
        mpfr_init(r53270);
        mpfr_init(r53271);
        mpfr_init(r53272);
        mpfr_init(r53273);
        mpfr_init(r53274);
        mpfr_init_set_str(r53275, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53276);
        mpfr_init(r53277);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r53263, x, MPFR_RNDN);
        mpfr_set_d(r53264, y, MPFR_RNDN);
        mpfr_set_d(r53265, t, MPFR_RNDN);
        mpfr_set_d(r53266, z, MPFR_RNDN);
        mpfr_div(r53267, r53263, r53266, MPFR_RNDN);
        mpfr_sub(r53268, r53265, r53267, MPFR_RNDN);
        mpfr_div(r53269, r53264, r53268, MPFR_RNDN);
        mpfr_mul(r53270, r53265, r53266, MPFR_RNDN);
        mpfr_sub(r53271, r53270, r53263, MPFR_RNDN);
        mpfr_div(r53272, r53263, r53271, MPFR_RNDN);
        mpfr_sub(r53273, r53269, r53272, MPFR_RNDN);
        mpfr_add(r53274, r53263, r53273, MPFR_RNDN);
        ;
        mpfr_add(r53276, r53263, r53275, MPFR_RNDN);
        mpfr_div(r53277, r53274, r53276, MPFR_RNDN);
        return mpfr_get_d(r53277, MPFR_RNDN);
}

