#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 r53019 = x;
        float r53020 = y;
        float r53021 = z;
        float r53022 = r53020 * r53021;
        float r53023 = r53022 - r53019;
        float r53024 = t;
        float r53025 = r53024 * r53021;
        float r53026 = r53025 - r53019;
        float r53027 = r53023 / r53026;
        float r53028 = r53019 + r53027;
        float r53029 = 1.0;
        float r53030 = r53019 + r53029;
        float r53031 = r53028 / r53030;
        return r53031;
}

double f_id(double x, double y, double z, double t) {
        double r53032 = x;
        double r53033 = y;
        double r53034 = z;
        double r53035 = r53033 * r53034;
        double r53036 = r53035 - r53032;
        double r53037 = t;
        double r53038 = r53037 * r53034;
        double r53039 = r53038 - r53032;
        double r53040 = r53036 / r53039;
        double r53041 = r53032 + r53040;
        double r53042 = 1.0;
        double r53043 = r53032 + r53042;
        double r53044 = r53041 / r53043;
        return r53044;
}


double f_of(float x, float y, float z, float t) {
        float r53045 = x;
        float r53046 = y;
        float r53047 = t;
        float r53048 = z;
        float r53049 = r53045 / r53048;
        float r53050 = r53047 - r53049;
        float r53051 = r53046 / r53050;
        float r53052 = r53047 * r53048;
        float r53053 = r53052 - r53045;
        float r53054 = r53045 / r53053;
        float r53055 = r53051 - r53054;
        float r53056 = r53045 + r53055;
        float r53057 = 1.0;
        float r53058 = r53045 + r53057;
        float r53059 = r53056 / r53058;
        return r53059;
}

double f_od(double x, double y, double z, double t) {
        double r53060 = x;
        double r53061 = y;
        double r53062 = t;
        double r53063 = z;
        double r53064 = r53060 / r53063;
        double r53065 = r53062 - r53064;
        double r53066 = r53061 / r53065;
        double r53067 = r53062 * r53063;
        double r53068 = r53067 - r53060;
        double r53069 = r53060 / r53068;
        double r53070 = r53066 - r53069;
        double r53071 = r53060 + r53070;
        double r53072 = 1.0;
        double r53073 = r53060 + r53072;
        double r53074 = r53071 / r53073;
        return r53074;
}

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 r53075, r53076, r53077, r53078, r53079, r53080, r53081, r53082, r53083, r53084, r53085, r53086, r53087;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r53075);
        mpfr_init(r53076);
        mpfr_init(r53077);
        mpfr_init(r53078);
        mpfr_init(r53079);
        mpfr_init(r53080);
        mpfr_init(r53081);
        mpfr_init(r53082);
        mpfr_init(r53083);
        mpfr_init(r53084);
        mpfr_init_set_str(r53085, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53086);
        mpfr_init(r53087);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r53075, x, MPFR_RNDN);
        mpfr_set_d(r53076, y, MPFR_RNDN);
        mpfr_set_d(r53077, z, MPFR_RNDN);
        mpfr_mul(r53078, r53076, r53077, MPFR_RNDN);
        mpfr_sub(r53079, r53078, r53075, MPFR_RNDN);
        mpfr_set_d(r53080, t, MPFR_RNDN);
        mpfr_mul(r53081, r53080, r53077, MPFR_RNDN);
        mpfr_sub(r53082, r53081, r53075, MPFR_RNDN);
        mpfr_div(r53083, r53079, r53082, MPFR_RNDN);
        mpfr_add(r53084, r53075, r53083, MPFR_RNDN);
        ;
        mpfr_add(r53086, r53075, r53085, MPFR_RNDN);
        mpfr_div(r53087, r53084, r53086, MPFR_RNDN);
        return mpfr_get_d(r53087, MPFR_RNDN);
}

static mpfr_t r53088, r53089, r53090, r53091, r53092, r53093, r53094, r53095, r53096, r53097, r53098, r53099, r53100, r53101, r53102;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r53088);
        mpfr_init(r53089);
        mpfr_init(r53090);
        mpfr_init(r53091);
        mpfr_init(r53092);
        mpfr_init(r53093);
        mpfr_init(r53094);
        mpfr_init(r53095);
        mpfr_init(r53096);
        mpfr_init(r53097);
        mpfr_init(r53098);
        mpfr_init(r53099);
        mpfr_init_set_str(r53100, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53101);
        mpfr_init(r53102);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r53088, x, MPFR_RNDN);
        mpfr_set_d(r53089, y, MPFR_RNDN);
        mpfr_set_d(r53090, t, MPFR_RNDN);
        mpfr_set_d(r53091, z, MPFR_RNDN);
        mpfr_div(r53092, r53088, r53091, MPFR_RNDN);
        mpfr_sub(r53093, r53090, r53092, MPFR_RNDN);
        mpfr_div(r53094, r53089, r53093, MPFR_RNDN);
        mpfr_mul(r53095, r53090, r53091, MPFR_RNDN);
        mpfr_sub(r53096, r53095, r53088, MPFR_RNDN);
        mpfr_div(r53097, r53088, r53096, MPFR_RNDN);
        mpfr_sub(r53098, r53094, r53097, MPFR_RNDN);
        mpfr_add(r53099, r53088, r53098, MPFR_RNDN);
        ;
        mpfr_add(r53101, r53088, r53100, MPFR_RNDN);
        mpfr_div(r53102, r53099, r53101, MPFR_RNDN);
        return mpfr_get_d(r53102, MPFR_RNDN);
}

static mpfr_t r53103, r53104, r53105, r53106, r53107, r53108, r53109, r53110, r53111, r53112, r53113, r53114, r53115, r53116, r53117;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r53103);
        mpfr_init(r53104);
        mpfr_init(r53105);
        mpfr_init(r53106);
        mpfr_init(r53107);
        mpfr_init(r53108);
        mpfr_init(r53109);
        mpfr_init(r53110);
        mpfr_init(r53111);
        mpfr_init(r53112);
        mpfr_init(r53113);
        mpfr_init(r53114);
        mpfr_init_set_str(r53115, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53116);
        mpfr_init(r53117);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r53103, x, MPFR_RNDN);
        mpfr_set_d(r53104, y, MPFR_RNDN);
        mpfr_set_d(r53105, t, MPFR_RNDN);
        mpfr_set_d(r53106, z, MPFR_RNDN);
        mpfr_div(r53107, r53103, r53106, MPFR_RNDN);
        mpfr_sub(r53108, r53105, r53107, MPFR_RNDN);
        mpfr_div(r53109, r53104, r53108, MPFR_RNDN);
        mpfr_mul(r53110, r53105, r53106, MPFR_RNDN);
        mpfr_sub(r53111, r53110, r53103, MPFR_RNDN);
        mpfr_div(r53112, r53103, r53111, MPFR_RNDN);
        mpfr_sub(r53113, r53109, r53112, MPFR_RNDN);
        mpfr_add(r53114, r53103, r53113, MPFR_RNDN);
        ;
        mpfr_add(r53116, r53103, r53115, MPFR_RNDN);
        mpfr_div(r53117, r53114, r53116, MPFR_RNDN);
        return mpfr_get_d(r53117, MPFR_RNDN);
}

