#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 r52991 = x;
        float r52992 = y;
        float r52993 = z;
        float r52994 = r52992 * r52993;
        float r52995 = r52994 - r52991;
        float r52996 = t;
        float r52997 = r52996 * r52993;
        float r52998 = r52997 - r52991;
        float r52999 = r52995 / r52998;
        float r53000 = r52991 + r52999;
        float r53001 = 1.0;
        float r53002 = r52991 + r53001;
        float r53003 = r53000 / r53002;
        return r53003;
}

double f_id(double x, double y, double z, double t) {
        double r53004 = x;
        double r53005 = y;
        double r53006 = z;
        double r53007 = r53005 * r53006;
        double r53008 = r53007 - r53004;
        double r53009 = t;
        double r53010 = r53009 * r53006;
        double r53011 = r53010 - r53004;
        double r53012 = r53008 / r53011;
        double r53013 = r53004 + r53012;
        double r53014 = 1.0;
        double r53015 = r53004 + r53014;
        double r53016 = r53013 / r53015;
        return r53016;
}


double f_of(float x, float y, float z, float t) {
        float r53017 = x;
        float r53018 = y;
        float r53019 = t;
        float r53020 = z;
        float r53021 = r53017 / r53020;
        float r53022 = r53019 - r53021;
        float r53023 = r53018 / r53022;
        float r53024 = r53019 * r53020;
        float r53025 = r53024 - r53017;
        float r53026 = r53017 / r53025;
        float r53027 = r53023 - r53026;
        float r53028 = r53017 + r53027;
        float r53029 = 1.0;
        float r53030 = r53017 + r53029;
        float r53031 = r53028 / r53030;
        return r53031;
}

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

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 r53047, r53048, r53049, r53050, r53051, r53052, r53053, r53054, r53055, r53056, r53057, r53058, r53059;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r53047);
        mpfr_init(r53048);
        mpfr_init(r53049);
        mpfr_init(r53050);
        mpfr_init(r53051);
        mpfr_init(r53052);
        mpfr_init(r53053);
        mpfr_init(r53054);
        mpfr_init(r53055);
        mpfr_init(r53056);
        mpfr_init_set_str(r53057, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53058);
        mpfr_init(r53059);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r53047, x, MPFR_RNDN);
        mpfr_set_d(r53048, y, MPFR_RNDN);
        mpfr_set_d(r53049, z, MPFR_RNDN);
        mpfr_mul(r53050, r53048, r53049, MPFR_RNDN);
        mpfr_sub(r53051, r53050, r53047, MPFR_RNDN);
        mpfr_set_d(r53052, t, MPFR_RNDN);
        mpfr_mul(r53053, r53052, r53049, MPFR_RNDN);
        mpfr_sub(r53054, r53053, r53047, MPFR_RNDN);
        mpfr_div(r53055, r53051, r53054, MPFR_RNDN);
        mpfr_add(r53056, r53047, r53055, MPFR_RNDN);
        ;
        mpfr_add(r53058, r53047, r53057, MPFR_RNDN);
        mpfr_div(r53059, r53056, r53058, MPFR_RNDN);
        return mpfr_get_d(r53059, MPFR_RNDN);
}

static mpfr_t r53060, r53061, r53062, r53063, r53064, r53065, r53066, r53067, r53068, r53069, r53070, r53071, r53072, r53073, r53074;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r53060);
        mpfr_init(r53061);
        mpfr_init(r53062);
        mpfr_init(r53063);
        mpfr_init(r53064);
        mpfr_init(r53065);
        mpfr_init(r53066);
        mpfr_init(r53067);
        mpfr_init(r53068);
        mpfr_init(r53069);
        mpfr_init(r53070);
        mpfr_init(r53071);
        mpfr_init_set_str(r53072, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53073);
        mpfr_init(r53074);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r53060, x, MPFR_RNDN);
        mpfr_set_d(r53061, y, MPFR_RNDN);
        mpfr_set_d(r53062, t, MPFR_RNDN);
        mpfr_set_d(r53063, z, MPFR_RNDN);
        mpfr_div(r53064, r53060, r53063, MPFR_RNDN);
        mpfr_sub(r53065, r53062, r53064, MPFR_RNDN);
        mpfr_div(r53066, r53061, r53065, MPFR_RNDN);
        mpfr_mul(r53067, r53062, r53063, MPFR_RNDN);
        mpfr_sub(r53068, r53067, r53060, MPFR_RNDN);
        mpfr_div(r53069, r53060, r53068, MPFR_RNDN);
        mpfr_sub(r53070, r53066, r53069, MPFR_RNDN);
        mpfr_add(r53071, r53060, r53070, MPFR_RNDN);
        ;
        mpfr_add(r53073, r53060, r53072, MPFR_RNDN);
        mpfr_div(r53074, r53071, r53073, MPFR_RNDN);
        return mpfr_get_d(r53074, MPFR_RNDN);
}

static mpfr_t r53075, r53076, r53077, r53078, r53079, r53080, r53081, r53082, r53083, r53084, r53085, r53086, r53087, r53088, r53089;

void setup_mpfr_f_dm() {
        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(r53085);
        mpfr_init(r53086);
        mpfr_init_set_str(r53087, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53088);
        mpfr_init(r53089);
}

double f_dm(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, t, MPFR_RNDN);
        mpfr_set_d(r53078, z, MPFR_RNDN);
        mpfr_div(r53079, r53075, r53078, MPFR_RNDN);
        mpfr_sub(r53080, r53077, r53079, MPFR_RNDN);
        mpfr_div(r53081, r53076, r53080, MPFR_RNDN);
        mpfr_mul(r53082, r53077, r53078, MPFR_RNDN);
        mpfr_sub(r53083, r53082, r53075, MPFR_RNDN);
        mpfr_div(r53084, r53075, r53083, MPFR_RNDN);
        mpfr_sub(r53085, r53081, r53084, MPFR_RNDN);
        mpfr_add(r53086, r53075, r53085, MPFR_RNDN);
        ;
        mpfr_add(r53088, r53075, r53087, MPFR_RNDN);
        mpfr_div(r53089, r53086, r53088, MPFR_RNDN);
        return mpfr_get_d(r53089, MPFR_RNDN);
}

