#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 r33647 = x;
        float r33648 = y;
        float r33649 = r33647 - r33648;
        float r33650 = 1.0;
        float r33651 = r33650 - r33648;
        float r33652 = r33649 / r33651;
        return r33652;
}

double f_id(double x, double y) {
        double r33653 = x;
        double r33654 = y;
        double r33655 = r33653 - r33654;
        double r33656 = 1.0;
        double r33657 = r33656 - r33654;
        double r33658 = r33655 / r33657;
        return r33658;
}


double f_of(float x, float y) {
        float r33659 = x;
        float r33660 = y;
        float r33661 = r33659 - r33660;
        float r33662 = 1.0;
        float r33663 = r33662 - r33660;
        float r33664 = r33661 / r33663;
        return r33664;
}

double f_od(double x, double y) {
        double r33665 = x;
        double r33666 = y;
        double r33667 = r33665 - r33666;
        double r33668 = 1.0;
        double r33669 = r33668 - r33666;
        double r33670 = r33667 / r33669;
        return r33670;
}

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 r33671, r33672, r33673, r33674, r33675, r33676;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r33671);
        mpfr_init(r33672);
        mpfr_init(r33673);
        mpfr_init_set_str(r33674, "1.0", 10, MPFR_RNDN);
        mpfr_init(r33675);
        mpfr_init(r33676);
}

double f_im(double x, double y) {
        mpfr_set_d(r33671, x, MPFR_RNDN);
        mpfr_set_d(r33672, y, MPFR_RNDN);
        mpfr_sub(r33673, r33671, r33672, MPFR_RNDN);
        ;
        mpfr_sub(r33675, r33674, r33672, MPFR_RNDN);
        mpfr_div(r33676, r33673, r33675, MPFR_RNDN);
        return mpfr_get_d(r33676, MPFR_RNDN);
}

static mpfr_t r33677, r33678, r33679, r33680, r33681, r33682;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r33677);
        mpfr_init(r33678);
        mpfr_init(r33679);
        mpfr_init_set_str(r33680, "1.0", 10, MPFR_RNDN);
        mpfr_init(r33681);
        mpfr_init(r33682);
}

double f_fm(double x, double y) {
        mpfr_set_d(r33677, x, MPFR_RNDN);
        mpfr_set_d(r33678, y, MPFR_RNDN);
        mpfr_sub(r33679, r33677, r33678, MPFR_RNDN);
        ;
        mpfr_sub(r33681, r33680, r33678, MPFR_RNDN);
        mpfr_div(r33682, r33679, r33681, MPFR_RNDN);
        return mpfr_get_d(r33682, MPFR_RNDN);
}

static mpfr_t r33683, r33684, r33685, r33686, r33687, r33688;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r33683);
        mpfr_init(r33684);
        mpfr_init(r33685);
        mpfr_init_set_str(r33686, "1.0", 10, MPFR_RNDN);
        mpfr_init(r33687);
        mpfr_init(r33688);
}

double f_dm(double x, double y) {
        mpfr_set_d(r33683, x, MPFR_RNDN);
        mpfr_set_d(r33684, y, MPFR_RNDN);
        mpfr_sub(r33685, r33683, r33684, MPFR_RNDN);
        ;
        mpfr_sub(r33687, r33686, r33684, MPFR_RNDN);
        mpfr_div(r33688, r33685, r33687, MPFR_RNDN);
        return mpfr_get_d(r33688, MPFR_RNDN);
}

