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

double f_if(float x, float y) {
        float r50690 = x;
        float r50691 = y;
        float r50692 = r50690 * r50691;
        float r50693 = 1.0f;
        float r50694 = r50691 + r50693;
        float r50695 = r50692 / r50694;
        return r50695;
}

double f_id(double x, double y) {
        double r50696 = x;
        double r50697 = y;
        double r50698 = r50696 * r50697;
        double r50699 = 1.0;
        double r50700 = r50697 + r50699;
        double r50701 = r50698 / r50700;
        return r50701;
}


double f_of(float x, float y) {
        float r50702 = x;
        float r50703 = 1.0f;
        float r50704 = r50702 / r50703;
        float r50705 = y;
        float r50706 = 1.0f;
        float r50707 = r50705 + r50706;
        float r50708 = r50705 / r50707;
        float r50709 = r50704 * r50708;
        return r50709;
}

double f_od(double x, double y) {
        double r50710 = x;
        double r50711 = 1.0;
        double r50712 = r50710 / r50711;
        double r50713 = y;
        double r50714 = 1.0;
        double r50715 = r50713 + r50714;
        double r50716 = r50713 / r50715;
        double r50717 = r50712 * r50716;
        return r50717;
}

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 r50718, r50719, r50720, r50721, r50722, r50723;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r50718);
        mpfr_init(r50719);
        mpfr_init(r50720);
        mpfr_init_set_str(r50721, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50722);
        mpfr_init(r50723);
}

double f_im(double x, double y) {
        mpfr_set_d(r50718, x, MPFR_RNDN);
        mpfr_set_d(r50719, y, MPFR_RNDN);
        mpfr_mul(r50720, r50718, r50719, MPFR_RNDN);
        ;
        mpfr_add(r50722, r50719, r50721, MPFR_RNDN);
        mpfr_div(r50723, r50720, r50722, MPFR_RNDN);
        return mpfr_get_d(r50723, MPFR_RNDN);
}

static mpfr_t r50724, r50725, r50726, r50727, r50728, r50729, r50730, r50731;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50724);
        mpfr_init_set_str(r50725, "1", 10, MPFR_RNDN);
        mpfr_init(r50726);
        mpfr_init(r50727);
        mpfr_init_set_str(r50728, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50729);
        mpfr_init(r50730);
        mpfr_init(r50731);
}

double f_fm(double x, double y) {
        mpfr_set_d(r50724, x, MPFR_RNDN);
        ;
        mpfr_div(r50726, r50724, r50725, MPFR_RNDN);
        mpfr_set_d(r50727, y, MPFR_RNDN);
        ;
        mpfr_add(r50729, r50727, r50728, MPFR_RNDN);
        mpfr_div(r50730, r50727, r50729, MPFR_RNDN);
        mpfr_mul(r50731, r50726, r50730, MPFR_RNDN);
        return mpfr_get_d(r50731, MPFR_RNDN);
}

static mpfr_t r50732, r50733, r50734, r50735, r50736, r50737, r50738, r50739;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50732);
        mpfr_init_set_str(r50733, "1", 10, MPFR_RNDN);
        mpfr_init(r50734);
        mpfr_init(r50735);
        mpfr_init_set_str(r50736, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50737);
        mpfr_init(r50738);
        mpfr_init(r50739);
}

double f_dm(double x, double y) {
        mpfr_set_d(r50732, x, MPFR_RNDN);
        ;
        mpfr_div(r50734, r50732, r50733, MPFR_RNDN);
        mpfr_set_d(r50735, y, MPFR_RNDN);
        ;
        mpfr_add(r50737, r50735, r50736, MPFR_RNDN);
        mpfr_div(r50738, r50735, r50737, MPFR_RNDN);
        mpfr_mul(r50739, r50734, r50738, MPFR_RNDN);
        return mpfr_get_d(r50739, MPFR_RNDN);
}

