#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 r26471 = eps;
        float r26472 = a;
        float r26473 = b;
        float r26474 = r26472 + r26473;
        float r26475 = r26474 * r26471;
        float r26476 = exp(r26475);
        float r26477 = 1;
        float r26478 = r26476 - r26477;
        float r26479 = r26471 * r26478;
        float r26480 = r26472 * r26471;
        float r26481 = exp(r26480);
        float r26482 = r26481 - r26477;
        float r26483 = r26473 * r26471;
        float r26484 = exp(r26483);
        float r26485 = r26484 - r26477;
        float r26486 = r26482 * r26485;
        float r26487 = r26479 / r26486;
        return r26487;
}

double f_id(double a, double b, double eps) {
        double r26488 = eps;
        double r26489 = a;
        double r26490 = b;
        double r26491 = r26489 + r26490;
        double r26492 = r26491 * r26488;
        double r26493 = exp(r26492);
        double r26494 = 1;
        double r26495 = r26493 - r26494;
        double r26496 = r26488 * r26495;
        double r26497 = r26489 * r26488;
        double r26498 = exp(r26497);
        double r26499 = r26498 - r26494;
        double r26500 = r26490 * r26488;
        double r26501 = exp(r26500);
        double r26502 = r26501 - r26494;
        double r26503 = r26499 * r26502;
        double r26504 = r26496 / r26503;
        return r26504;
}


double f_of(float a, float b, float eps) {
        float r26505 = eps;
        float r26506 = a;
        float r26507 = b;
        float r26508 = r26506 + r26507;
        float r26509 = r26508 * r26505;
        float r26510 = exp(r26509);
        float r26511 = 1;
        float r26512 = r26510 - r26511;
        float r26513 = r26505 * r26512;
        float r26514 = r26506 * r26505;
        float r26515 = exp(r26514);
        float r26516 = r26515 - r26511;
        float r26517 = r26507 * r26505;
        float r26518 = exp(r26517);
        float r26519 = r26518 - r26511;
        float r26520 = r26516 * r26519;
        float r26521 = r26513 / r26520;
        float r26522 = -5.879714522759736e-21;
        bool r26523 = r26521 <= r26522;
        float r26524 = r26511 / r26507;
        float r26525 = r26511 / r26506;
        float r26526 = r26524 + r26525;
        float r26527 = 6.302490121618446e+111;
        bool r26528 = r26521 <= r26527;
        float r26529 = r26505 * r26508;
        float r26530 = exp(r26529);
        float r26531 = -r26505;
        float r26532 = fma(r26505, r26530, r26531);
        float r26533 = r26505 * r26507;
        float r26534 = expm1(r26533);
        float r26535 = expm1(r26514);
        float r26536 = r26534 * r26535;
        float r26537 = r26532 / r26536;
        float r26538 = r26528 ? r26537 : r26526;
        float r26539 = r26523 ? r26526 : r26538;
        return r26539;
}

double f_od(double a, double b, double eps) {
        double r26540 = eps;
        double r26541 = a;
        double r26542 = b;
        double r26543 = r26541 + r26542;
        double r26544 = r26543 * r26540;
        double r26545 = exp(r26544);
        double r26546 = 1;
        double r26547 = r26545 - r26546;
        double r26548 = r26540 * r26547;
        double r26549 = r26541 * r26540;
        double r26550 = exp(r26549);
        double r26551 = r26550 - r26546;
        double r26552 = r26542 * r26540;
        double r26553 = exp(r26552);
        double r26554 = r26553 - r26546;
        double r26555 = r26551 * r26554;
        double r26556 = r26548 / r26555;
        double r26557 = -5.879714522759736e-21;
        bool r26558 = r26556 <= r26557;
        double r26559 = r26546 / r26542;
        double r26560 = r26546 / r26541;
        double r26561 = r26559 + r26560;
        double r26562 = 6.302490121618446e+111;
        bool r26563 = r26556 <= r26562;
        double r26564 = r26540 * r26543;
        double r26565 = exp(r26564);
        double r26566 = -r26540;
        double r26567 = fma(r26540, r26565, r26566);
        double r26568 = r26540 * r26542;
        double r26569 = expm1(r26568);
        double r26570 = expm1(r26549);
        double r26571 = r26569 * r26570;
        double r26572 = r26567 / r26571;
        double r26573 = r26563 ? r26572 : r26561;
        double r26574 = r26558 ? r26561 : r26573;
        return r26574;
}

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 r26575, r26576, r26577, r26578, r26579, r26580, r26581, r26582, r26583, r26584, r26585, r26586, r26587, r26588, r26589, r26590, r26591;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r26575);
        mpfr_init(r26576);
        mpfr_init(r26577);
        mpfr_init(r26578);
        mpfr_init(r26579);
        mpfr_init(r26580);
        mpfr_init_set_str(r26581, "1", 10, MPFR_RNDN);
        mpfr_init(r26582);
        mpfr_init(r26583);
        mpfr_init(r26584);
        mpfr_init(r26585);
        mpfr_init(r26586);
        mpfr_init(r26587);
        mpfr_init(r26588);
        mpfr_init(r26589);
        mpfr_init(r26590);
        mpfr_init(r26591);
}

double f_im(double a, double b, double eps) {
        mpfr_set_d(r26575, eps, MPFR_RNDN);
        mpfr_set_d(r26576, a, MPFR_RNDN);
        mpfr_set_d(r26577, b, MPFR_RNDN);
        mpfr_add(r26578, r26576, r26577, MPFR_RNDN);
        mpfr_mul(r26579, r26578, r26575, MPFR_RNDN);
        mpfr_exp(r26580, r26579, MPFR_RNDN);
        ;
        mpfr_sub(r26582, r26580, r26581, MPFR_RNDN);
        mpfr_mul(r26583, r26575, r26582, MPFR_RNDN);
        mpfr_mul(r26584, r26576, r26575, MPFR_RNDN);
        mpfr_exp(r26585, r26584, MPFR_RNDN);
        mpfr_sub(r26586, r26585, r26581, MPFR_RNDN);
        mpfr_mul(r26587, r26577, r26575, MPFR_RNDN);
        mpfr_exp(r26588, r26587, MPFR_RNDN);
        mpfr_sub(r26589, r26588, r26581, MPFR_RNDN);
        mpfr_mul(r26590, r26586, r26589, MPFR_RNDN);
        mpfr_div(r26591, r26583, r26590, MPFR_RNDN);
        return mpfr_get_d(r26591, MPFR_RNDN);
}

static mpfr_t r26592, r26593, r26594, r26595, r26596, r26597, r26598, r26599, r26600, r26601, r26602, r26603, r26604, r26605, r26606, r26607, r26608, r26609, r26610, r26611, r26612, r26613, r26614, r26615, r26616, r26617, r26618, r26619, r26620, r26621, r26622, r26623, r26624, r26625, r26626;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r26592);
        mpfr_init(r26593);
        mpfr_init(r26594);
        mpfr_init(r26595);
        mpfr_init(r26596);
        mpfr_init(r26597);
        mpfr_init_set_str(r26598, "1", 10, MPFR_RNDN);
        mpfr_init(r26599);
        mpfr_init(r26600);
        mpfr_init(r26601);
        mpfr_init(r26602);
        mpfr_init(r26603);
        mpfr_init(r26604);
        mpfr_init(r26605);
        mpfr_init(r26606);
        mpfr_init(r26607);
        mpfr_init(r26608);
        mpfr_init_set_str(r26609, "-5.879714522759736e-21", 10, MPFR_RNDN);
        mpfr_init(r26610);
        mpfr_init(r26611);
        mpfr_init(r26612);
        mpfr_init(r26613);
        mpfr_init_set_str(r26614, "6.302490121618446e+111", 10, MPFR_RNDN);
        mpfr_init(r26615);
        mpfr_init(r26616);
        mpfr_init(r26617);
        mpfr_init(r26618);
        mpfr_init(r26619);
        mpfr_init(r26620);
        mpfr_init(r26621);
        mpfr_init(r26622);
        mpfr_init(r26623);
        mpfr_init(r26624);
        mpfr_init(r26625);
        mpfr_init(r26626);
}

double f_fm(double a, double b, double eps) {
        mpfr_set_d(r26592, eps, MPFR_RNDN);
        mpfr_set_d(r26593, a, MPFR_RNDN);
        mpfr_set_d(r26594, b, MPFR_RNDN);
        mpfr_add(r26595, r26593, r26594, MPFR_RNDN);
        mpfr_mul(r26596, r26595, r26592, MPFR_RNDN);
        mpfr_exp(r26597, r26596, MPFR_RNDN);
        ;
        mpfr_sub(r26599, r26597, r26598, MPFR_RNDN);
        mpfr_mul(r26600, r26592, r26599, MPFR_RNDN);
        mpfr_mul(r26601, r26593, r26592, MPFR_RNDN);
        mpfr_exp(r26602, r26601, MPFR_RNDN);
        mpfr_sub(r26603, r26602, r26598, MPFR_RNDN);
        mpfr_mul(r26604, r26594, r26592, MPFR_RNDN);
        mpfr_exp(r26605, r26604, MPFR_RNDN);
        mpfr_sub(r26606, r26605, r26598, MPFR_RNDN);
        mpfr_mul(r26607, r26603, r26606, MPFR_RNDN);
        mpfr_div(r26608, r26600, r26607, MPFR_RNDN);
        ;
        mpfr_set_si(r26610, mpfr_cmp(r26608, r26609) <= 0, MPFR_RNDN);
        mpfr_div(r26611, r26598, r26594, MPFR_RNDN);
        mpfr_div(r26612, r26598, r26593, MPFR_RNDN);
        mpfr_add(r26613, r26611, r26612, MPFR_RNDN);
        ;
        mpfr_set_si(r26615, mpfr_cmp(r26608, r26614) <= 0, MPFR_RNDN);
        mpfr_mul(r26616, r26592, r26595, MPFR_RNDN);
        mpfr_exp(r26617, r26616, MPFR_RNDN);
        mpfr_neg(r26618, r26592, MPFR_RNDN);
        mpfr_fma(r26619, r26592, r26617, r26618, MPFR_RNDN);
        mpfr_mul(r26620, r26592, r26594, MPFR_RNDN);
        mpfr_expm1(r26621, r26620, MPFR_RNDN);
        mpfr_expm1(r26622, r26601, MPFR_RNDN);
        mpfr_mul(r26623, r26621, r26622, MPFR_RNDN);
        mpfr_div(r26624, r26619, r26623, MPFR_RNDN);
        if (mpfr_get_si(r26615, MPFR_RNDN)) { mpfr_set(r26625, r26624, MPFR_RNDN); } else { mpfr_set(r26625, r26613, MPFR_RNDN); };
        if (mpfr_get_si(r26610, MPFR_RNDN)) { mpfr_set(r26626, r26613, MPFR_RNDN); } else { mpfr_set(r26626, r26625, MPFR_RNDN); };
        return mpfr_get_d(r26626, MPFR_RNDN);
}

static mpfr_t r26627, r26628, r26629, r26630, r26631, r26632, r26633, r26634, r26635, r26636, r26637, r26638, r26639, r26640, r26641, r26642, r26643, r26644, r26645, r26646, r26647, r26648, r26649, r26650, r26651, r26652, r26653, r26654, r26655, r26656, r26657, r26658, r26659, r26660, r26661;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r26627);
        mpfr_init(r26628);
        mpfr_init(r26629);
        mpfr_init(r26630);
        mpfr_init(r26631);
        mpfr_init(r26632);
        mpfr_init_set_str(r26633, "1", 10, MPFR_RNDN);
        mpfr_init(r26634);
        mpfr_init(r26635);
        mpfr_init(r26636);
        mpfr_init(r26637);
        mpfr_init(r26638);
        mpfr_init(r26639);
        mpfr_init(r26640);
        mpfr_init(r26641);
        mpfr_init(r26642);
        mpfr_init(r26643);
        mpfr_init_set_str(r26644, "-5.879714522759736e-21", 10, MPFR_RNDN);
        mpfr_init(r26645);
        mpfr_init(r26646);
        mpfr_init(r26647);
        mpfr_init(r26648);
        mpfr_init_set_str(r26649, "6.302490121618446e+111", 10, MPFR_RNDN);
        mpfr_init(r26650);
        mpfr_init(r26651);
        mpfr_init(r26652);
        mpfr_init(r26653);
        mpfr_init(r26654);
        mpfr_init(r26655);
        mpfr_init(r26656);
        mpfr_init(r26657);
        mpfr_init(r26658);
        mpfr_init(r26659);
        mpfr_init(r26660);
        mpfr_init(r26661);
}

double f_dm(double a, double b, double eps) {
        mpfr_set_d(r26627, eps, MPFR_RNDN);
        mpfr_set_d(r26628, a, MPFR_RNDN);
        mpfr_set_d(r26629, b, MPFR_RNDN);
        mpfr_add(r26630, r26628, r26629, MPFR_RNDN);
        mpfr_mul(r26631, r26630, r26627, MPFR_RNDN);
        mpfr_exp(r26632, r26631, MPFR_RNDN);
        ;
        mpfr_sub(r26634, r26632, r26633, MPFR_RNDN);
        mpfr_mul(r26635, r26627, r26634, MPFR_RNDN);
        mpfr_mul(r26636, r26628, r26627, MPFR_RNDN);
        mpfr_exp(r26637, r26636, MPFR_RNDN);
        mpfr_sub(r26638, r26637, r26633, MPFR_RNDN);
        mpfr_mul(r26639, r26629, r26627, MPFR_RNDN);
        mpfr_exp(r26640, r26639, MPFR_RNDN);
        mpfr_sub(r26641, r26640, r26633, MPFR_RNDN);
        mpfr_mul(r26642, r26638, r26641, MPFR_RNDN);
        mpfr_div(r26643, r26635, r26642, MPFR_RNDN);
        ;
        mpfr_set_si(r26645, mpfr_cmp(r26643, r26644) <= 0, MPFR_RNDN);
        mpfr_div(r26646, r26633, r26629, MPFR_RNDN);
        mpfr_div(r26647, r26633, r26628, MPFR_RNDN);
        mpfr_add(r26648, r26646, r26647, MPFR_RNDN);
        ;
        mpfr_set_si(r26650, mpfr_cmp(r26643, r26649) <= 0, MPFR_RNDN);
        mpfr_mul(r26651, r26627, r26630, MPFR_RNDN);
        mpfr_exp(r26652, r26651, MPFR_RNDN);
        mpfr_neg(r26653, r26627, MPFR_RNDN);
        mpfr_fma(r26654, r26627, r26652, r26653, MPFR_RNDN);
        mpfr_mul(r26655, r26627, r26629, MPFR_RNDN);
        mpfr_expm1(r26656, r26655, MPFR_RNDN);
        mpfr_expm1(r26657, r26636, MPFR_RNDN);
        mpfr_mul(r26658, r26656, r26657, MPFR_RNDN);
        mpfr_div(r26659, r26654, r26658, MPFR_RNDN);
        if (mpfr_get_si(r26650, MPFR_RNDN)) { mpfr_set(r26660, r26659, MPFR_RNDN); } else { mpfr_set(r26660, r26648, MPFR_RNDN); };
        if (mpfr_get_si(r26645, MPFR_RNDN)) { mpfr_set(r26661, r26648, MPFR_RNDN); } else { mpfr_set(r26661, r26660, MPFR_RNDN); };
        return mpfr_get_d(r26661, MPFR_RNDN);
}

