#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Quotient of sum of exps";

double f_if(float a, float b) {
        float r10739 = a;
        float r10740 = exp(r10739);
        float r10741 = b;
        float r10742 = exp(r10741);
        float r10743 = r10740 + r10742;
        float r10744 = r10740 / r10743;
        return r10744;
}

double f_id(double a, double b) {
        double r10745 = a;
        double r10746 = exp(r10745);
        double r10747 = b;
        double r10748 = exp(r10747);
        double r10749 = r10746 + r10748;
        double r10750 = r10746 / r10749;
        return r10750;
}


double f_of(float a, float b) {
        float r10751 = a;
        float r10752 = exp(r10751);
        float r10753 = b;
        float r10754 = exp(r10753);
        float r10755 = r10752 + r10754;
        float r10756 = r10752 / r10755;
        return r10756;
}

double f_od(double a, double b) {
        double r10757 = a;
        double r10758 = exp(r10757);
        double r10759 = b;
        double r10760 = exp(r10759);
        double r10761 = r10758 + r10760;
        double r10762 = r10758 / r10761;
        return r10762;
}

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 r10763, r10764, r10765, r10766, r10767, r10768;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r10763);
        mpfr_init(r10764);
        mpfr_init(r10765);
        mpfr_init(r10766);
        mpfr_init(r10767);
        mpfr_init(r10768);
}

double f_im(double a, double b) {
        mpfr_set_d(r10763, a, MPFR_RNDN);
        mpfr_exp(r10764, r10763, MPFR_RNDN);
        mpfr_set_d(r10765, b, MPFR_RNDN);
        mpfr_exp(r10766, r10765, MPFR_RNDN);
        mpfr_add(r10767, r10764, r10766, MPFR_RNDN);
        mpfr_div(r10768, r10764, r10767, MPFR_RNDN);
        return mpfr_get_d(r10768, MPFR_RNDN);
}

static mpfr_t r10769, r10770, r10771, r10772, r10773, r10774;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10769);
        mpfr_init(r10770);
        mpfr_init(r10771);
        mpfr_init(r10772);
        mpfr_init(r10773);
        mpfr_init(r10774);
}

double f_fm(double a, double b) {
        mpfr_set_d(r10769, a, MPFR_RNDN);
        mpfr_exp(r10770, r10769, MPFR_RNDN);
        mpfr_set_d(r10771, b, MPFR_RNDN);
        mpfr_exp(r10772, r10771, MPFR_RNDN);
        mpfr_add(r10773, r10770, r10772, MPFR_RNDN);
        mpfr_div(r10774, r10770, r10773, MPFR_RNDN);
        return mpfr_get_d(r10774, MPFR_RNDN);
}

static mpfr_t r10775, r10776, r10777, r10778, r10779, r10780;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10775);
        mpfr_init(r10776);
        mpfr_init(r10777);
        mpfr_init(r10778);
        mpfr_init(r10779);
        mpfr_init(r10780);
}

double f_dm(double a, double b) {
        mpfr_set_d(r10775, a, MPFR_RNDN);
        mpfr_exp(r10776, r10775, MPFR_RNDN);
        mpfr_set_d(r10777, b, MPFR_RNDN);
        mpfr_exp(r10778, r10777, MPFR_RNDN);
        mpfr_add(r10779, r10776, r10778, MPFR_RNDN);
        mpfr_div(r10780, r10776, r10779, MPFR_RNDN);
        return mpfr_get_d(r10780, MPFR_RNDN);
}

