#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 r10698 = a;
        float r10699 = exp(r10698);
        float r10700 = b;
        float r10701 = exp(r10700);
        float r10702 = r10699 + r10701;
        float r10703 = r10699 / r10702;
        return r10703;
}

double f_id(double a, double b) {
        double r10704 = a;
        double r10705 = exp(r10704);
        double r10706 = b;
        double r10707 = exp(r10706);
        double r10708 = r10705 + r10707;
        double r10709 = r10705 / r10708;
        return r10709;
}


double f_of(float a, float b) {
        float r10710 = a;
        float r10711 = exp(r10710);
        float r10712 = exp(r10711);
        float r10713 = 1.0f;
        float r10714 = b;
        float r10715 = exp(r10714);
        float r10716 = r10711 + r10715;
        float r10717 = r10713 / r10716;
        float r10718 = pow(r10712, r10717);
        float r10719 = log(r10718);
        return r10719;
}

double f_od(double a, double b) {
        double r10720 = a;
        double r10721 = exp(r10720);
        double r10722 = exp(r10721);
        double r10723 = 1.0;
        double r10724 = b;
        double r10725 = exp(r10724);
        double r10726 = r10721 + r10725;
        double r10727 = r10723 / r10726;
        double r10728 = pow(r10722, r10727);
        double r10729 = log(r10728);
        return r10729;
}

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 r10730, r10731, r10732, r10733, r10734, r10735;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r10730);
        mpfr_init(r10731);
        mpfr_init(r10732);
        mpfr_init(r10733);
        mpfr_init(r10734);
        mpfr_init(r10735);
}

double f_im(double a, double b) {
        mpfr_set_d(r10730, a, MPFR_RNDN);
        mpfr_exp(r10731, r10730, MPFR_RNDN);
        mpfr_set_d(r10732, b, MPFR_RNDN);
        mpfr_exp(r10733, r10732, MPFR_RNDN);
        mpfr_add(r10734, r10731, r10733, MPFR_RNDN);
        mpfr_div(r10735, r10731, r10734, MPFR_RNDN);
        return mpfr_get_d(r10735, MPFR_RNDN);
}

static mpfr_t r10736, r10737, r10738, r10739, r10740, r10741, r10742, r10743, r10744, r10745;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10736);
        mpfr_init(r10737);
        mpfr_init(r10738);
        mpfr_init_set_str(r10739, "1", 10, MPFR_RNDN);
        mpfr_init(r10740);
        mpfr_init(r10741);
        mpfr_init(r10742);
        mpfr_init(r10743);
        mpfr_init(r10744);
        mpfr_init(r10745);
}

double f_fm(double a, double b) {
        mpfr_set_d(r10736, a, MPFR_RNDN);
        mpfr_exp(r10737, r10736, MPFR_RNDN);
        mpfr_exp(r10738, r10737, MPFR_RNDN);
        ;
        mpfr_set_d(r10740, b, MPFR_RNDN);
        mpfr_exp(r10741, r10740, MPFR_RNDN);
        mpfr_add(r10742, r10737, r10741, MPFR_RNDN);
        mpfr_div(r10743, r10739, r10742, MPFR_RNDN);
        mpfr_pow(r10744, r10738, r10743, MPFR_RNDN);
        mpfr_log(r10745, r10744, MPFR_RNDN);
        return mpfr_get_d(r10745, MPFR_RNDN);
}

static mpfr_t r10746, r10747, r10748, r10749, r10750, r10751, r10752, r10753, r10754, r10755;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r10746);
        mpfr_init(r10747);
        mpfr_init(r10748);
        mpfr_init_set_str(r10749, "1", 10, MPFR_RNDN);
        mpfr_init(r10750);
        mpfr_init(r10751);
        mpfr_init(r10752);
        mpfr_init(r10753);
        mpfr_init(r10754);
        mpfr_init(r10755);
}

double f_dm(double a, double b) {
        mpfr_set_d(r10746, a, MPFR_RNDN);
        mpfr_exp(r10747, r10746, MPFR_RNDN);
        mpfr_exp(r10748, r10747, MPFR_RNDN);
        ;
        mpfr_set_d(r10750, b, MPFR_RNDN);
        mpfr_exp(r10751, r10750, MPFR_RNDN);
        mpfr_add(r10752, r10747, r10751, MPFR_RNDN);
        mpfr_div(r10753, r10749, r10752, MPFR_RNDN);
        mpfr_pow(r10754, r10748, r10753, MPFR_RNDN);
        mpfr_log(r10755, r10754, MPFR_RNDN);
        return mpfr_get_d(r10755, MPFR_RNDN);
}

