#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 r52670 = x;
        float r52671 = y;
        float r52672 = z;
        float r52673 = r52671 * r52672;
        float r52674 = r52673 - r52670;
        float r52675 = t;
        float r52676 = r52675 * r52672;
        float r52677 = r52676 - r52670;
        float r52678 = r52674 / r52677;
        float r52679 = r52670 + r52678;
        float r52680 = 1.0;
        float r52681 = r52670 + r52680;
        float r52682 = r52679 / r52681;
        return r52682;
}

double f_id(double x, double y, double z, double t) {
        double r52683 = x;
        double r52684 = y;
        double r52685 = z;
        double r52686 = r52684 * r52685;
        double r52687 = r52686 - r52683;
        double r52688 = t;
        double r52689 = r52688 * r52685;
        double r52690 = r52689 - r52683;
        double r52691 = r52687 / r52690;
        double r52692 = r52683 + r52691;
        double r52693 = 1.0;
        double r52694 = r52683 + r52693;
        double r52695 = r52692 / r52694;
        return r52695;
}


double f_of(float x, float y, float z, float t) {
        float r52696 = x;
        float r52697 = y;
        float r52698 = t;
        float r52699 = z;
        float r52700 = r52696 / r52699;
        float r52701 = r52698 - r52700;
        float r52702 = r52697 / r52701;
        float r52703 = r52698 * r52699;
        float r52704 = r52703 - r52696;
        float r52705 = r52696 / r52704;
        float r52706 = r52702 - r52705;
        float r52707 = r52696 + r52706;
        float r52708 = 1.0;
        float r52709 = r52696 + r52708;
        float r52710 = r52707 / r52709;
        return r52710;
}

double f_od(double x, double y, double z, double t) {
        double r52711 = x;
        double r52712 = y;
        double r52713 = t;
        double r52714 = z;
        double r52715 = r52711 / r52714;
        double r52716 = r52713 - r52715;
        double r52717 = r52712 / r52716;
        double r52718 = r52713 * r52714;
        double r52719 = r52718 - r52711;
        double r52720 = r52711 / r52719;
        double r52721 = r52717 - r52720;
        double r52722 = r52711 + r52721;
        double r52723 = 1.0;
        double r52724 = r52711 + r52723;
        double r52725 = r52722 / r52724;
        return r52725;
}

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 r52726, r52727, r52728, r52729, r52730, r52731, r52732, r52733, r52734, r52735, r52736, r52737, r52738;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52726);
        mpfr_init(r52727);
        mpfr_init(r52728);
        mpfr_init(r52729);
        mpfr_init(r52730);
        mpfr_init(r52731);
        mpfr_init(r52732);
        mpfr_init(r52733);
        mpfr_init(r52734);
        mpfr_init(r52735);
        mpfr_init_set_str(r52736, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52737);
        mpfr_init(r52738);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r52726, x, MPFR_RNDN);
        mpfr_set_d(r52727, y, MPFR_RNDN);
        mpfr_set_d(r52728, z, MPFR_RNDN);
        mpfr_mul(r52729, r52727, r52728, MPFR_RNDN);
        mpfr_sub(r52730, r52729, r52726, MPFR_RNDN);
        mpfr_set_d(r52731, t, MPFR_RNDN);
        mpfr_mul(r52732, r52731, r52728, MPFR_RNDN);
        mpfr_sub(r52733, r52732, r52726, MPFR_RNDN);
        mpfr_div(r52734, r52730, r52733, MPFR_RNDN);
        mpfr_add(r52735, r52726, r52734, MPFR_RNDN);
        ;
        mpfr_add(r52737, r52726, r52736, MPFR_RNDN);
        mpfr_div(r52738, r52735, r52737, MPFR_RNDN);
        return mpfr_get_d(r52738, MPFR_RNDN);
}

static mpfr_t r52739, r52740, r52741, r52742, r52743, r52744, r52745, r52746, r52747, r52748, r52749, r52750, r52751, r52752, r52753;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52739);
        mpfr_init(r52740);
        mpfr_init(r52741);
        mpfr_init(r52742);
        mpfr_init(r52743);
        mpfr_init(r52744);
        mpfr_init(r52745);
        mpfr_init(r52746);
        mpfr_init(r52747);
        mpfr_init(r52748);
        mpfr_init(r52749);
        mpfr_init(r52750);
        mpfr_init_set_str(r52751, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52752);
        mpfr_init(r52753);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r52739, x, MPFR_RNDN);
        mpfr_set_d(r52740, y, MPFR_RNDN);
        mpfr_set_d(r52741, t, MPFR_RNDN);
        mpfr_set_d(r52742, z, MPFR_RNDN);
        mpfr_div(r52743, r52739, r52742, MPFR_RNDN);
        mpfr_sub(r52744, r52741, r52743, MPFR_RNDN);
        mpfr_div(r52745, r52740, r52744, MPFR_RNDN);
        mpfr_mul(r52746, r52741, r52742, MPFR_RNDN);
        mpfr_sub(r52747, r52746, r52739, MPFR_RNDN);
        mpfr_div(r52748, r52739, r52747, MPFR_RNDN);
        mpfr_sub(r52749, r52745, r52748, MPFR_RNDN);
        mpfr_add(r52750, r52739, r52749, MPFR_RNDN);
        ;
        mpfr_add(r52752, r52739, r52751, MPFR_RNDN);
        mpfr_div(r52753, r52750, r52752, MPFR_RNDN);
        return mpfr_get_d(r52753, MPFR_RNDN);
}

static mpfr_t r52754, r52755, r52756, r52757, r52758, r52759, r52760, r52761, r52762, r52763, r52764, r52765, r52766, r52767, r52768;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52754);
        mpfr_init(r52755);
        mpfr_init(r52756);
        mpfr_init(r52757);
        mpfr_init(r52758);
        mpfr_init(r52759);
        mpfr_init(r52760);
        mpfr_init(r52761);
        mpfr_init(r52762);
        mpfr_init(r52763);
        mpfr_init(r52764);
        mpfr_init(r52765);
        mpfr_init_set_str(r52766, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52767);
        mpfr_init(r52768);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r52754, x, MPFR_RNDN);
        mpfr_set_d(r52755, y, MPFR_RNDN);
        mpfr_set_d(r52756, t, MPFR_RNDN);
        mpfr_set_d(r52757, z, MPFR_RNDN);
        mpfr_div(r52758, r52754, r52757, MPFR_RNDN);
        mpfr_sub(r52759, r52756, r52758, MPFR_RNDN);
        mpfr_div(r52760, r52755, r52759, MPFR_RNDN);
        mpfr_mul(r52761, r52756, r52757, MPFR_RNDN);
        mpfr_sub(r52762, r52761, r52754, MPFR_RNDN);
        mpfr_div(r52763, r52754, r52762, MPFR_RNDN);
        mpfr_sub(r52764, r52760, r52763, MPFR_RNDN);
        mpfr_add(r52765, r52754, r52764, MPFR_RNDN);
        ;
        mpfr_add(r52767, r52754, r52766, MPFR_RNDN);
        mpfr_div(r52768, r52765, r52767, MPFR_RNDN);
        return mpfr_get_d(r52768, MPFR_RNDN);
}

