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

char *name = "expq3 (problem 3.4.2)";

double f_if(float a, float b, float eps) {
        float r26652 = eps;
        float r26653 = a;
        float r26654 = b;
        float r26655 = r26653 + r26654;
        float r26656 = r26655 * r26652;
        float r26657 = exp(r26656);
        float r26658 = 1;
        float r26659 = r26657 - r26658;
        float r26660 = r26652 * r26659;
        float r26661 = r26653 * r26652;
        float r26662 = exp(r26661);
        float r26663 = r26662 - r26658;
        float r26664 = r26654 * r26652;
        float r26665 = exp(r26664);
        float r26666 = r26665 - r26658;
        float r26667 = r26663 * r26666;
        float r26668 = r26660 / r26667;
        return r26668;
}

double f_id(double a, double b, double eps) {
        double r26669 = eps;
        double r26670 = a;
        double r26671 = b;
        double r26672 = r26670 + r26671;
        double r26673 = r26672 * r26669;
        double r26674 = exp(r26673);
        double r26675 = 1;
        double r26676 = r26674 - r26675;
        double r26677 = r26669 * r26676;
        double r26678 = r26670 * r26669;
        double r26679 = exp(r26678);
        double r26680 = r26679 - r26675;
        double r26681 = r26671 * r26669;
        double r26682 = exp(r26681);
        double r26683 = r26682 - r26675;
        double r26684 = r26680 * r26683;
        double r26685 = r26677 / r26684;
        return r26685;
}


double f_of(float a, float b, float eps) {
        float r26686 = eps;
        float r26687 = a;
        float r26688 = b;
        float r26689 = r26687 + r26688;
        float r26690 = r26689 * r26686;
        float r26691 = exp(r26690);
        float r26692 = 1;
        float r26693 = r26691 - r26692;
        float r26694 = r26686 * r26693;
        float r26695 = r26687 * r26686;
        float r26696 = exp(r26695);
        float r26697 = r26696 - r26692;
        float r26698 = r26688 * r26686;
        float r26699 = exp(r26698);
        float r26700 = r26699 - r26692;
        float r26701 = r26697 * r26700;
        float r26702 = r26694 / r26701;
        float r26703 = -0.2297424843178869;
        bool r26704 = r26702 <= r26703;
        float r26705 = r26692 / r26688;
        float r26706 = r26692 / r26687;
        float r26707 = r26705 + r26706;
        float r26708 = 1.781894697276848e+308;
        bool r26709 = r26702 <= r26708;
        float r26710 = expm1(r26695);
        float r26711 = r26686 / r26710;
        float r26712 = r26688 + r26687;
        float r26713 = r26712 * r26686;
        float r26714 = expm1(r26713);
        float r26715 = r26686 * r26688;
        float r26716 = expm1(r26715);
        float r26717 = r26714 / r26716;
        float r26718 = r26711 * r26717;
        float r26719 = r26709 ? r26718 : r26707;
        float r26720 = r26704 ? r26707 : r26719;
        return r26720;
}

double f_od(double a, double b, double eps) {
        double r26721 = eps;
        double r26722 = a;
        double r26723 = b;
        double r26724 = r26722 + r26723;
        double r26725 = r26724 * r26721;
        double r26726 = exp(r26725);
        double r26727 = 1;
        double r26728 = r26726 - r26727;
        double r26729 = r26721 * r26728;
        double r26730 = r26722 * r26721;
        double r26731 = exp(r26730);
        double r26732 = r26731 - r26727;
        double r26733 = r26723 * r26721;
        double r26734 = exp(r26733);
        double r26735 = r26734 - r26727;
        double r26736 = r26732 * r26735;
        double r26737 = r26729 / r26736;
        double r26738 = -0.2297424843178869;
        bool r26739 = r26737 <= r26738;
        double r26740 = r26727 / r26723;
        double r26741 = r26727 / r26722;
        double r26742 = r26740 + r26741;
        double r26743 = 1.781894697276848e+308;
        bool r26744 = r26737 <= r26743;
        double r26745 = expm1(r26730);
        double r26746 = r26721 / r26745;
        double r26747 = r26723 + r26722;
        double r26748 = r26747 * r26721;
        double r26749 = expm1(r26748);
        double r26750 = r26721 * r26723;
        double r26751 = expm1(r26750);
        double r26752 = r26749 / r26751;
        double r26753 = r26746 * r26752;
        double r26754 = r26744 ? r26753 : r26742;
        double r26755 = r26739 ? r26742 : r26754;
        return r26755;
}

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 r26756, r26757, r26758, r26759, r26760, r26761, r26762, r26763, r26764, r26765, r26766, r26767, r26768, r26769, r26770, r26771, r26772;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r26756);
        mpfr_init(r26757);
        mpfr_init(r26758);
        mpfr_init(r26759);
        mpfr_init(r26760);
        mpfr_init(r26761);
        mpfr_init_set_str(r26762, "1", 10, MPFR_RNDN);
        mpfr_init(r26763);
        mpfr_init(r26764);
        mpfr_init(r26765);
        mpfr_init(r26766);
        mpfr_init(r26767);
        mpfr_init(r26768);
        mpfr_init(r26769);
        mpfr_init(r26770);
        mpfr_init(r26771);
        mpfr_init(r26772);
}

double f_im(double a, double b, double eps) {
        mpfr_set_d(r26756, eps, MPFR_RNDN);
        mpfr_set_d(r26757, a, MPFR_RNDN);
        mpfr_set_d(r26758, b, MPFR_RNDN);
        mpfr_add(r26759, r26757, r26758, MPFR_RNDN);
        mpfr_mul(r26760, r26759, r26756, MPFR_RNDN);
        mpfr_exp(r26761, r26760, MPFR_RNDN);
        ;
        mpfr_sub(r26763, r26761, r26762, MPFR_RNDN);
        mpfr_mul(r26764, r26756, r26763, MPFR_RNDN);
        mpfr_mul(r26765, r26757, r26756, MPFR_RNDN);
        mpfr_exp(r26766, r26765, MPFR_RNDN);
        mpfr_sub(r26767, r26766, r26762, MPFR_RNDN);
        mpfr_mul(r26768, r26758, r26756, MPFR_RNDN);
        mpfr_exp(r26769, r26768, MPFR_RNDN);
        mpfr_sub(r26770, r26769, r26762, MPFR_RNDN);
        mpfr_mul(r26771, r26767, r26770, MPFR_RNDN);
        mpfr_div(r26772, r26764, r26771, MPFR_RNDN);
        return mpfr_get_d(r26772, MPFR_RNDN);
}

static mpfr_t r26773, r26774, r26775, r26776, r26777, r26778, r26779, r26780, r26781, r26782, r26783, r26784, r26785, r26786, r26787, r26788, r26789, r26790, r26791, r26792, r26793, r26794, r26795, r26796, r26797, r26798, r26799, r26800, r26801, r26802, r26803, r26804, r26805, r26806, r26807;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r26773);
        mpfr_init(r26774);
        mpfr_init(r26775);
        mpfr_init(r26776);
        mpfr_init(r26777);
        mpfr_init(r26778);
        mpfr_init_set_str(r26779, "1", 10, MPFR_RNDN);
        mpfr_init(r26780);
        mpfr_init(r26781);
        mpfr_init(r26782);
        mpfr_init(r26783);
        mpfr_init(r26784);
        mpfr_init(r26785);
        mpfr_init(r26786);
        mpfr_init(r26787);
        mpfr_init(r26788);
        mpfr_init(r26789);
        mpfr_init_set_str(r26790, "-0.2297424843178869", 10, MPFR_RNDN);
        mpfr_init(r26791);
        mpfr_init(r26792);
        mpfr_init(r26793);
        mpfr_init(r26794);
        mpfr_init_set_str(r26795, "1.781894697276848e+308", 10, MPFR_RNDN);
        mpfr_init(r26796);
        mpfr_init(r26797);
        mpfr_init(r26798);
        mpfr_init(r26799);
        mpfr_init(r26800);
        mpfr_init(r26801);
        mpfr_init(r26802);
        mpfr_init(r26803);
        mpfr_init(r26804);
        mpfr_init(r26805);
        mpfr_init(r26806);
        mpfr_init(r26807);
}

double f_fm(double a, double b, double eps) {
        mpfr_set_d(r26773, eps, MPFR_RNDN);
        mpfr_set_d(r26774, a, MPFR_RNDN);
        mpfr_set_d(r26775, b, MPFR_RNDN);
        mpfr_add(r26776, r26774, r26775, MPFR_RNDN);
        mpfr_mul(r26777, r26776, r26773, MPFR_RNDN);
        mpfr_exp(r26778, r26777, MPFR_RNDN);
        ;
        mpfr_sub(r26780, r26778, r26779, MPFR_RNDN);
        mpfr_mul(r26781, r26773, r26780, MPFR_RNDN);
        mpfr_mul(r26782, r26774, r26773, MPFR_RNDN);
        mpfr_exp(r26783, r26782, MPFR_RNDN);
        mpfr_sub(r26784, r26783, r26779, MPFR_RNDN);
        mpfr_mul(r26785, r26775, r26773, MPFR_RNDN);
        mpfr_exp(r26786, r26785, MPFR_RNDN);
        mpfr_sub(r26787, r26786, r26779, MPFR_RNDN);
        mpfr_mul(r26788, r26784, r26787, MPFR_RNDN);
        mpfr_div(r26789, r26781, r26788, MPFR_RNDN);
        ;
        mpfr_set_si(r26791, mpfr_cmp(r26789, r26790) <= 0, MPFR_RNDN);
        mpfr_div(r26792, r26779, r26775, MPFR_RNDN);
        mpfr_div(r26793, r26779, r26774, MPFR_RNDN);
        mpfr_add(r26794, r26792, r26793, MPFR_RNDN);
        ;
        mpfr_set_si(r26796, mpfr_cmp(r26789, r26795) <= 0, MPFR_RNDN);
        mpfr_expm1(r26797, r26782, MPFR_RNDN);
        mpfr_div(r26798, r26773, r26797, MPFR_RNDN);
        mpfr_add(r26799, r26775, r26774, MPFR_RNDN);
        mpfr_mul(r26800, r26799, r26773, MPFR_RNDN);
        mpfr_expm1(r26801, r26800, MPFR_RNDN);
        mpfr_mul(r26802, r26773, r26775, MPFR_RNDN);
        mpfr_expm1(r26803, r26802, MPFR_RNDN);
        mpfr_div(r26804, r26801, r26803, MPFR_RNDN);
        mpfr_mul(r26805, r26798, r26804, MPFR_RNDN);
        if (mpfr_get_si(r26796, MPFR_RNDN)) { mpfr_set(r26806, r26805, MPFR_RNDN); } else { mpfr_set(r26806, r26794, MPFR_RNDN); };
        if (mpfr_get_si(r26791, MPFR_RNDN)) { mpfr_set(r26807, r26794, MPFR_RNDN); } else { mpfr_set(r26807, r26806, MPFR_RNDN); };
        return mpfr_get_d(r26807, MPFR_RNDN);
}

static mpfr_t r26808, r26809, r26810, r26811, r26812, r26813, r26814, r26815, r26816, r26817, r26818, r26819, r26820, r26821, r26822, r26823, r26824, r26825, r26826, r26827, r26828, r26829, r26830, r26831, r26832, r26833, r26834, r26835, r26836, r26837, r26838, r26839, r26840, r26841, r26842;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r26808);
        mpfr_init(r26809);
        mpfr_init(r26810);
        mpfr_init(r26811);
        mpfr_init(r26812);
        mpfr_init(r26813);
        mpfr_init_set_str(r26814, "1", 10, MPFR_RNDN);
        mpfr_init(r26815);
        mpfr_init(r26816);
        mpfr_init(r26817);
        mpfr_init(r26818);
        mpfr_init(r26819);
        mpfr_init(r26820);
        mpfr_init(r26821);
        mpfr_init(r26822);
        mpfr_init(r26823);
        mpfr_init(r26824);
        mpfr_init_set_str(r26825, "-0.2297424843178869", 10, MPFR_RNDN);
        mpfr_init(r26826);
        mpfr_init(r26827);
        mpfr_init(r26828);
        mpfr_init(r26829);
        mpfr_init_set_str(r26830, "1.781894697276848e+308", 10, MPFR_RNDN);
        mpfr_init(r26831);
        mpfr_init(r26832);
        mpfr_init(r26833);
        mpfr_init(r26834);
        mpfr_init(r26835);
        mpfr_init(r26836);
        mpfr_init(r26837);
        mpfr_init(r26838);
        mpfr_init(r26839);
        mpfr_init(r26840);
        mpfr_init(r26841);
        mpfr_init(r26842);
}

double f_dm(double a, double b, double eps) {
        mpfr_set_d(r26808, eps, MPFR_RNDN);
        mpfr_set_d(r26809, a, MPFR_RNDN);
        mpfr_set_d(r26810, b, MPFR_RNDN);
        mpfr_add(r26811, r26809, r26810, MPFR_RNDN);
        mpfr_mul(r26812, r26811, r26808, MPFR_RNDN);
        mpfr_exp(r26813, r26812, MPFR_RNDN);
        ;
        mpfr_sub(r26815, r26813, r26814, MPFR_RNDN);
        mpfr_mul(r26816, r26808, r26815, MPFR_RNDN);
        mpfr_mul(r26817, r26809, r26808, MPFR_RNDN);
        mpfr_exp(r26818, r26817, MPFR_RNDN);
        mpfr_sub(r26819, r26818, r26814, MPFR_RNDN);
        mpfr_mul(r26820, r26810, r26808, MPFR_RNDN);
        mpfr_exp(r26821, r26820, MPFR_RNDN);
        mpfr_sub(r26822, r26821, r26814, MPFR_RNDN);
        mpfr_mul(r26823, r26819, r26822, MPFR_RNDN);
        mpfr_div(r26824, r26816, r26823, MPFR_RNDN);
        ;
        mpfr_set_si(r26826, mpfr_cmp(r26824, r26825) <= 0, MPFR_RNDN);
        mpfr_div(r26827, r26814, r26810, MPFR_RNDN);
        mpfr_div(r26828, r26814, r26809, MPFR_RNDN);
        mpfr_add(r26829, r26827, r26828, MPFR_RNDN);
        ;
        mpfr_set_si(r26831, mpfr_cmp(r26824, r26830) <= 0, MPFR_RNDN);
        mpfr_expm1(r26832, r26817, MPFR_RNDN);
        mpfr_div(r26833, r26808, r26832, MPFR_RNDN);
        mpfr_add(r26834, r26810, r26809, MPFR_RNDN);
        mpfr_mul(r26835, r26834, r26808, MPFR_RNDN);
        mpfr_expm1(r26836, r26835, MPFR_RNDN);
        mpfr_mul(r26837, r26808, r26810, MPFR_RNDN);
        mpfr_expm1(r26838, r26837, MPFR_RNDN);
        mpfr_div(r26839, r26836, r26838, MPFR_RNDN);
        mpfr_mul(r26840, r26833, r26839, MPFR_RNDN);
        if (mpfr_get_si(r26831, MPFR_RNDN)) { mpfr_set(r26841, r26840, MPFR_RNDN); } else { mpfr_set(r26841, r26829, MPFR_RNDN); };
        if (mpfr_get_si(r26826, MPFR_RNDN)) { mpfr_set(r26842, r26829, MPFR_RNDN); } else { mpfr_set(r26842, r26841, MPFR_RNDN); };
        return mpfr_get_d(r26842, MPFR_RNDN);
}

