#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, C";

double f_if(float x, float y) {
        float r50648 = x;
        float r50649 = y;
        float r50650 = r50648 - r50649;
        float r50651 = 1.0f;
        float r50652 = r50651 - r50649;
        float r50653 = r50650 / r50652;
        return r50653;
}

double f_id(double x, double y) {
        double r50654 = x;
        double r50655 = y;
        double r50656 = r50654 - r50655;
        double r50657 = 1.0;
        double r50658 = r50657 - r50655;
        double r50659 = r50656 / r50658;
        return r50659;
}


double f_of(float x, float y) {
        float r50660 = x;
        float r50661 = y;
        float r50662 = r50660 - r50661;
        float r50663 = 1.0f;
        float r50664 = r50663 - r50661;
        float r50665 = r50662 / r50664;
        return r50665;
}

double f_od(double x, double y) {
        double r50666 = x;
        double r50667 = y;
        double r50668 = r50666 - r50667;
        double r50669 = 1.0;
        double r50670 = r50669 - r50667;
        double r50671 = r50668 / r50670;
        return r50671;
}

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 r50672, r50673, r50674, r50675, r50676, r50677;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r50672);
        mpfr_init(r50673);
        mpfr_init(r50674);
        mpfr_init_set_str(r50675, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50676);
        mpfr_init(r50677);
}

double f_im(double x, double y) {
        mpfr_set_d(r50672, x, MPFR_RNDN);
        mpfr_set_d(r50673, y, MPFR_RNDN);
        mpfr_sub(r50674, r50672, r50673, MPFR_RNDN);
        ;
        mpfr_sub(r50676, r50675, r50673, MPFR_RNDN);
        mpfr_div(r50677, r50674, r50676, MPFR_RNDN);
        return mpfr_get_d(r50677, MPFR_RNDN);
}

static mpfr_t r50678, r50679, r50680, r50681, r50682, r50683;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50678);
        mpfr_init(r50679);
        mpfr_init(r50680);
        mpfr_init_set_str(r50681, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50682);
        mpfr_init(r50683);
}

double f_fm(double x, double y) {
        mpfr_set_d(r50678, x, MPFR_RNDN);
        mpfr_set_d(r50679, y, MPFR_RNDN);
        mpfr_sub(r50680, r50678, r50679, MPFR_RNDN);
        ;
        mpfr_sub(r50682, r50681, r50679, MPFR_RNDN);
        mpfr_div(r50683, r50680, r50682, MPFR_RNDN);
        return mpfr_get_d(r50683, MPFR_RNDN);
}

static mpfr_t r50684, r50685, r50686, r50687, r50688, r50689;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50684);
        mpfr_init(r50685);
        mpfr_init(r50686);
        mpfr_init_set_str(r50687, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50688);
        mpfr_init(r50689);
}

double f_dm(double x, double y) {
        mpfr_set_d(r50684, x, MPFR_RNDN);
        mpfr_set_d(r50685, y, MPFR_RNDN);
        mpfr_sub(r50686, r50684, r50685, MPFR_RNDN);
        ;
        mpfr_sub(r50688, r50687, r50685, MPFR_RNDN);
        mpfr_div(r50689, r50686, r50688, MPFR_RNDN);
        return mpfr_get_d(r50689, MPFR_RNDN);
}

