#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 r52797 = x;
        float r52798 = y;
        float r52799 = z;
        float r52800 = r52798 * r52799;
        float r52801 = r52800 - r52797;
        float r52802 = t;
        float r52803 = r52802 * r52799;
        float r52804 = r52803 - r52797;
        float r52805 = r52801 / r52804;
        float r52806 = r52797 + r52805;
        float r52807 = 1.0;
        float r52808 = r52797 + r52807;
        float r52809 = r52806 / r52808;
        return r52809;
}

double f_id(double x, double y, double z, double t) {
        double r52810 = x;
        double r52811 = y;
        double r52812 = z;
        double r52813 = r52811 * r52812;
        double r52814 = r52813 - r52810;
        double r52815 = t;
        double r52816 = r52815 * r52812;
        double r52817 = r52816 - r52810;
        double r52818 = r52814 / r52817;
        double r52819 = r52810 + r52818;
        double r52820 = 1.0;
        double r52821 = r52810 + r52820;
        double r52822 = r52819 / r52821;
        return r52822;
}


double f_of(float x, float y, float z, float t) {
        float r52823 = x;
        float r52824 = y;
        float r52825 = t;
        float r52826 = z;
        float r52827 = r52823 / r52826;
        float r52828 = r52825 - r52827;
        float r52829 = r52824 / r52828;
        float r52830 = r52825 * r52826;
        float r52831 = r52830 - r52823;
        float r52832 = r52823 / r52831;
        float r52833 = r52829 - r52832;
        float r52834 = r52823 + r52833;
        float r52835 = 1.0;
        float r52836 = r52823 + r52835;
        float r52837 = r52834 / r52836;
        return r52837;
}

double f_od(double x, double y, double z, double t) {
        double r52838 = x;
        double r52839 = y;
        double r52840 = t;
        double r52841 = z;
        double r52842 = r52838 / r52841;
        double r52843 = r52840 - r52842;
        double r52844 = r52839 / r52843;
        double r52845 = r52840 * r52841;
        double r52846 = r52845 - r52838;
        double r52847 = r52838 / r52846;
        double r52848 = r52844 - r52847;
        double r52849 = r52838 + r52848;
        double r52850 = 1.0;
        double r52851 = r52838 + r52850;
        double r52852 = r52849 / r52851;
        return r52852;
}

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 r52853, r52854, r52855, r52856, r52857, r52858, r52859, r52860, r52861, r52862, r52863, r52864, r52865;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52853);
        mpfr_init(r52854);
        mpfr_init(r52855);
        mpfr_init(r52856);
        mpfr_init(r52857);
        mpfr_init(r52858);
        mpfr_init(r52859);
        mpfr_init(r52860);
        mpfr_init(r52861);
        mpfr_init(r52862);
        mpfr_init_set_str(r52863, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52864);
        mpfr_init(r52865);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r52853, x, MPFR_RNDN);
        mpfr_set_d(r52854, y, MPFR_RNDN);
        mpfr_set_d(r52855, z, MPFR_RNDN);
        mpfr_mul(r52856, r52854, r52855, MPFR_RNDN);
        mpfr_sub(r52857, r52856, r52853, MPFR_RNDN);
        mpfr_set_d(r52858, t, MPFR_RNDN);
        mpfr_mul(r52859, r52858, r52855, MPFR_RNDN);
        mpfr_sub(r52860, r52859, r52853, MPFR_RNDN);
        mpfr_div(r52861, r52857, r52860, MPFR_RNDN);
        mpfr_add(r52862, r52853, r52861, MPFR_RNDN);
        ;
        mpfr_add(r52864, r52853, r52863, MPFR_RNDN);
        mpfr_div(r52865, r52862, r52864, MPFR_RNDN);
        return mpfr_get_d(r52865, MPFR_RNDN);
}

static mpfr_t r52866, r52867, r52868, r52869, r52870, r52871, r52872, r52873, r52874, r52875, r52876, r52877, r52878, r52879, r52880;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52866);
        mpfr_init(r52867);
        mpfr_init(r52868);
        mpfr_init(r52869);
        mpfr_init(r52870);
        mpfr_init(r52871);
        mpfr_init(r52872);
        mpfr_init(r52873);
        mpfr_init(r52874);
        mpfr_init(r52875);
        mpfr_init(r52876);
        mpfr_init(r52877);
        mpfr_init_set_str(r52878, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52879);
        mpfr_init(r52880);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r52866, x, MPFR_RNDN);
        mpfr_set_d(r52867, y, MPFR_RNDN);
        mpfr_set_d(r52868, t, MPFR_RNDN);
        mpfr_set_d(r52869, z, MPFR_RNDN);
        mpfr_div(r52870, r52866, r52869, MPFR_RNDN);
        mpfr_sub(r52871, r52868, r52870, MPFR_RNDN);
        mpfr_div(r52872, r52867, r52871, MPFR_RNDN);
        mpfr_mul(r52873, r52868, r52869, MPFR_RNDN);
        mpfr_sub(r52874, r52873, r52866, MPFR_RNDN);
        mpfr_div(r52875, r52866, r52874, MPFR_RNDN);
        mpfr_sub(r52876, r52872, r52875, MPFR_RNDN);
        mpfr_add(r52877, r52866, r52876, MPFR_RNDN);
        ;
        mpfr_add(r52879, r52866, r52878, MPFR_RNDN);
        mpfr_div(r52880, r52877, r52879, MPFR_RNDN);
        return mpfr_get_d(r52880, MPFR_RNDN);
}

static mpfr_t r52881, r52882, r52883, r52884, r52885, r52886, r52887, r52888, r52889, r52890, r52891, r52892, r52893, r52894, r52895;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52881);
        mpfr_init(r52882);
        mpfr_init(r52883);
        mpfr_init(r52884);
        mpfr_init(r52885);
        mpfr_init(r52886);
        mpfr_init(r52887);
        mpfr_init(r52888);
        mpfr_init(r52889);
        mpfr_init(r52890);
        mpfr_init(r52891);
        mpfr_init(r52892);
        mpfr_init_set_str(r52893, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52894);
        mpfr_init(r52895);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r52881, x, MPFR_RNDN);
        mpfr_set_d(r52882, y, MPFR_RNDN);
        mpfr_set_d(r52883, t, MPFR_RNDN);
        mpfr_set_d(r52884, z, MPFR_RNDN);
        mpfr_div(r52885, r52881, r52884, MPFR_RNDN);
        mpfr_sub(r52886, r52883, r52885, MPFR_RNDN);
        mpfr_div(r52887, r52882, r52886, MPFR_RNDN);
        mpfr_mul(r52888, r52883, r52884, MPFR_RNDN);
        mpfr_sub(r52889, r52888, r52881, MPFR_RNDN);
        mpfr_div(r52890, r52881, r52889, MPFR_RNDN);
        mpfr_sub(r52891, r52887, r52890, MPFR_RNDN);
        mpfr_add(r52892, r52881, r52891, MPFR_RNDN);
        ;
        mpfr_add(r52894, r52881, r52893, MPFR_RNDN);
        mpfr_div(r52895, r52892, r52894, MPFR_RNDN);
        return mpfr_get_d(r52895, MPFR_RNDN);
}

