#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 r50740 = x;
        float r50741 = y;
        float r50742 = z;
        float r50743 = r50741 * r50742;
        float r50744 = r50743 - r50740;
        float r50745 = t;
        float r50746 = r50745 * r50742;
        float r50747 = r50746 - r50740;
        float r50748 = r50744 / r50747;
        float r50749 = r50740 + r50748;
        float r50750 = 1.0f;
        float r50751 = r50740 + r50750;
        float r50752 = r50749 / r50751;
        return r50752;
}

double f_id(double x, double y, double z, double t) {
        double r50753 = x;
        double r50754 = y;
        double r50755 = z;
        double r50756 = r50754 * r50755;
        double r50757 = r50756 - r50753;
        double r50758 = t;
        double r50759 = r50758 * r50755;
        double r50760 = r50759 - r50753;
        double r50761 = r50757 / r50760;
        double r50762 = r50753 + r50761;
        double r50763 = 1.0;
        double r50764 = r50753 + r50763;
        double r50765 = r50762 / r50764;
        return r50765;
}


double f_of(float x, float y, float z, float t) {
        float r50766 = x;
        float r50767 = y;
        float r50768 = t;
        float r50769 = z;
        float r50770 = r50766 / r50769;
        float r50771 = r50768 - r50770;
        float r50772 = r50767 / r50771;
        float r50773 = r50768 * r50769;
        float r50774 = r50773 - r50766;
        float r50775 = r50766 / r50774;
        float r50776 = r50772 - r50775;
        float r50777 = r50766 + r50776;
        float r50778 = 1.0f;
        float r50779 = r50766 + r50778;
        float r50780 = r50777 / r50779;
        return r50780;
}

double f_od(double x, double y, double z, double t) {
        double r50781 = x;
        double r50782 = y;
        double r50783 = t;
        double r50784 = z;
        double r50785 = r50781 / r50784;
        double r50786 = r50783 - r50785;
        double r50787 = r50782 / r50786;
        double r50788 = r50783 * r50784;
        double r50789 = r50788 - r50781;
        double r50790 = r50781 / r50789;
        double r50791 = r50787 - r50790;
        double r50792 = r50781 + r50791;
        double r50793 = 1.0;
        double r50794 = r50781 + r50793;
        double r50795 = r50792 / r50794;
        return r50795;
}

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 r50796, r50797, r50798, r50799, r50800, r50801, r50802, r50803, r50804, r50805, r50806, r50807, r50808;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r50796);
        mpfr_init(r50797);
        mpfr_init(r50798);
        mpfr_init(r50799);
        mpfr_init(r50800);
        mpfr_init(r50801);
        mpfr_init(r50802);
        mpfr_init(r50803);
        mpfr_init(r50804);
        mpfr_init(r50805);
        mpfr_init_set_str(r50806, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50807);
        mpfr_init(r50808);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r50796, x, MPFR_RNDN);
        mpfr_set_d(r50797, y, MPFR_RNDN);
        mpfr_set_d(r50798, z, MPFR_RNDN);
        mpfr_mul(r50799, r50797, r50798, MPFR_RNDN);
        mpfr_sub(r50800, r50799, r50796, MPFR_RNDN);
        mpfr_set_d(r50801, t, MPFR_RNDN);
        mpfr_mul(r50802, r50801, r50798, MPFR_RNDN);
        mpfr_sub(r50803, r50802, r50796, MPFR_RNDN);
        mpfr_div(r50804, r50800, r50803, MPFR_RNDN);
        mpfr_add(r50805, r50796, r50804, MPFR_RNDN);
        ;
        mpfr_add(r50807, r50796, r50806, MPFR_RNDN);
        mpfr_div(r50808, r50805, r50807, MPFR_RNDN);
        return mpfr_get_d(r50808, MPFR_RNDN);
}

static mpfr_t r50809, r50810, r50811, r50812, r50813, r50814, r50815, r50816, r50817, r50818, r50819, r50820, r50821, r50822, r50823;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50809);
        mpfr_init(r50810);
        mpfr_init(r50811);
        mpfr_init(r50812);
        mpfr_init(r50813);
        mpfr_init(r50814);
        mpfr_init(r50815);
        mpfr_init(r50816);
        mpfr_init(r50817);
        mpfr_init(r50818);
        mpfr_init(r50819);
        mpfr_init(r50820);
        mpfr_init_set_str(r50821, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50822);
        mpfr_init(r50823);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r50809, x, MPFR_RNDN);
        mpfr_set_d(r50810, y, MPFR_RNDN);
        mpfr_set_d(r50811, t, MPFR_RNDN);
        mpfr_set_d(r50812, z, MPFR_RNDN);
        mpfr_div(r50813, r50809, r50812, MPFR_RNDN);
        mpfr_sub(r50814, r50811, r50813, MPFR_RNDN);
        mpfr_div(r50815, r50810, r50814, MPFR_RNDN);
        mpfr_mul(r50816, r50811, r50812, MPFR_RNDN);
        mpfr_sub(r50817, r50816, r50809, MPFR_RNDN);
        mpfr_div(r50818, r50809, r50817, MPFR_RNDN);
        mpfr_sub(r50819, r50815, r50818, MPFR_RNDN);
        mpfr_add(r50820, r50809, r50819, MPFR_RNDN);
        ;
        mpfr_add(r50822, r50809, r50821, MPFR_RNDN);
        mpfr_div(r50823, r50820, r50822, MPFR_RNDN);
        return mpfr_get_d(r50823, MPFR_RNDN);
}

static mpfr_t r50824, r50825, r50826, r50827, r50828, r50829, r50830, r50831, r50832, r50833, r50834, r50835, r50836, r50837, r50838;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50824);
        mpfr_init(r50825);
        mpfr_init(r50826);
        mpfr_init(r50827);
        mpfr_init(r50828);
        mpfr_init(r50829);
        mpfr_init(r50830);
        mpfr_init(r50831);
        mpfr_init(r50832);
        mpfr_init(r50833);
        mpfr_init(r50834);
        mpfr_init(r50835);
        mpfr_init_set_str(r50836, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50837);
        mpfr_init(r50838);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r50824, x, MPFR_RNDN);
        mpfr_set_d(r50825, y, MPFR_RNDN);
        mpfr_set_d(r50826, t, MPFR_RNDN);
        mpfr_set_d(r50827, z, MPFR_RNDN);
        mpfr_div(r50828, r50824, r50827, MPFR_RNDN);
        mpfr_sub(r50829, r50826, r50828, MPFR_RNDN);
        mpfr_div(r50830, r50825, r50829, MPFR_RNDN);
        mpfr_mul(r50831, r50826, r50827, MPFR_RNDN);
        mpfr_sub(r50832, r50831, r50824, MPFR_RNDN);
        mpfr_div(r50833, r50824, r50832, MPFR_RNDN);
        mpfr_sub(r50834, r50830, r50833, MPFR_RNDN);
        mpfr_add(r50835, r50824, r50834, MPFR_RNDN);
        ;
        mpfr_add(r50837, r50824, r50836, MPFR_RNDN);
        mpfr_div(r50838, r50835, r50837, MPFR_RNDN);
        return mpfr_get_d(r50838, MPFR_RNDN);
}

