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

char *name = "2nthrt (problem 3.4.6)";

double f_if(float x, float n) {
        float r25487 = x;
        float r25488 = 1;
        float r25489 = r25487 + r25488;
        float r25490 = n;
        float r25491 = r25488 / r25490;
        float r25492 = pow(r25489, r25491);
        float r25493 = pow(r25487, r25491);
        float r25494 = r25492 - r25493;
        return r25494;
}

double f_id(double x, double n) {
        double r25495 = x;
        double r25496 = 1;
        double r25497 = r25495 + r25496;
        double r25498 = n;
        double r25499 = r25496 / r25498;
        double r25500 = pow(r25497, r25499);
        double r25501 = pow(r25495, r25499);
        double r25502 = r25500 - r25501;
        return r25502;
}


double f_of(float x, float n) {
        float r25503 = 1;
        float r25504 = n;
        float r25505 = r25503 / r25504;
        float r25506 = x;
        float r25507 = r25505 / r25506;
        float r25508 = 1/2;
        float r25509 = r25508 / r25504;
        float r25510 = r25506 * r25506;
        float r25511 = r25509 / r25510;
        float r25512 = r25507 - r25511;
        float r25513 = log(r25506);
        float r25514 = log(r25513);
        float r25515 = r25504 * r25506;
        float r25516 = r25515 * r25504;
        float r25517 = log(r25516);
        float r25518 = r25514 - r25517;
        float r25519 = cbrt(r25518);
        float r25520 = r25519 * r25519;
        float r25521 = exp(r25520);
        float r25522 = pow(r25521, r25519);
        float r25523 = r25512 + r25522;
        float r25524 = 4.375868223365995e-83;
        bool r25525 = r25523 <= r25524;
        float r25526 = r25503 / r25506;
        float r25527 = r25526 / r25504;
        float r25528 = r25527 - r25511;
        float r25529 = r25513 / r25506;
        float r25530 = r25504 * r25504;
        float r25531 = r25529 / r25530;
        float r25532 = r25528 + r25531;
        float r25533 = 1.7815982055454507e+308;
        bool r25534 = r25523 <= r25533;
        float r25535 = r25503 + r25506;
        float r25536 = pow(r25535, r25505);
        float r25537 = 3;
        float r25538 = pow(r25536, r25537);
        float r25539 = cbrt(r25538);
        float r25540 = pow(r25506, r25505);
        float r25541 = r25539 - r25540;
        float r25542 = r25536 - r25503;
        float r25543 = r25513 * r25509;
        float r25544 = r25504 / r25513;
        float r25545 = r25543 / r25544;
        float r25546 = r25542 - r25545;
        float r25547 = r25513 / r25504;
        float r25548 = r25546 - r25547;
        float r25549 = r25534 ? r25541 : r25548;
        float r25550 = r25525 ? r25532 : r25549;
        return r25550;
}

double f_od(double x, double n) {
        double r25551 = 1;
        double r25552 = n;
        double r25553 = r25551 / r25552;
        double r25554 = x;
        double r25555 = r25553 / r25554;
        double r25556 = 1/2;
        double r25557 = r25556 / r25552;
        double r25558 = r25554 * r25554;
        double r25559 = r25557 / r25558;
        double r25560 = r25555 - r25559;
        double r25561 = log(r25554);
        double r25562 = log(r25561);
        double r25563 = r25552 * r25554;
        double r25564 = r25563 * r25552;
        double r25565 = log(r25564);
        double r25566 = r25562 - r25565;
        double r25567 = cbrt(r25566);
        double r25568 = r25567 * r25567;
        double r25569 = exp(r25568);
        double r25570 = pow(r25569, r25567);
        double r25571 = r25560 + r25570;
        double r25572 = 4.375868223365995e-83;
        bool r25573 = r25571 <= r25572;
        double r25574 = r25551 / r25554;
        double r25575 = r25574 / r25552;
        double r25576 = r25575 - r25559;
        double r25577 = r25561 / r25554;
        double r25578 = r25552 * r25552;
        double r25579 = r25577 / r25578;
        double r25580 = r25576 + r25579;
        double r25581 = 1.7815982055454507e+308;
        bool r25582 = r25571 <= r25581;
        double r25583 = r25551 + r25554;
        double r25584 = pow(r25583, r25553);
        double r25585 = 3;
        double r25586 = pow(r25584, r25585);
        double r25587 = cbrt(r25586);
        double r25588 = pow(r25554, r25553);
        double r25589 = r25587 - r25588;
        double r25590 = r25584 - r25551;
        double r25591 = r25561 * r25557;
        double r25592 = r25552 / r25561;
        double r25593 = r25591 / r25592;
        double r25594 = r25590 - r25593;
        double r25595 = r25561 / r25552;
        double r25596 = r25594 - r25595;
        double r25597 = r25582 ? r25589 : r25596;
        double r25598 = r25573 ? r25580 : r25597;
        return r25598;
}

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 r25599, r25600, r25601, r25602, r25603, r25604, r25605, r25606;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r25599);
        mpfr_init_set_str(r25600, "1", 10, MPFR_RNDN);
        mpfr_init(r25601);
        mpfr_init(r25602);
        mpfr_init(r25603);
        mpfr_init(r25604);
        mpfr_init(r25605);
        mpfr_init(r25606);
}

double f_im(double x, double n) {
        mpfr_set_d(r25599, x, MPFR_RNDN);
        ;
        mpfr_add(r25601, r25599, r25600, MPFR_RNDN);
        mpfr_set_d(r25602, n, MPFR_RNDN);
        mpfr_div(r25603, r25600, r25602, MPFR_RNDN);
        mpfr_pow(r25604, r25601, r25603, MPFR_RNDN);
        mpfr_pow(r25605, r25599, r25603, MPFR_RNDN);
        mpfr_sub(r25606, r25604, r25605, MPFR_RNDN);
        return mpfr_get_d(r25606, MPFR_RNDN);
}

static mpfr_t r25607, r25608, r25609, r25610, r25611, r25612, r25613, r25614, r25615, r25616, r25617, r25618, r25619, r25620, r25621, r25622, r25623, r25624, r25625, r25626, r25627, r25628, r25629, r25630, r25631, r25632, r25633, r25634, r25635, r25636, r25637, r25638, r25639, r25640, r25641, r25642, r25643, r25644, r25645, r25646, r25647, r25648, r25649, r25650, r25651, r25652, r25653, r25654;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r25607, "1", 10, MPFR_RNDN);
        mpfr_init(r25608);
        mpfr_init(r25609);
        mpfr_init(r25610);
        mpfr_init(r25611);
        mpfr_init_set_str(r25612, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25613);
        mpfr_init(r25614);
        mpfr_init(r25615);
        mpfr_init(r25616);
        mpfr_init(r25617);
        mpfr_init(r25618);
        mpfr_init(r25619);
        mpfr_init(r25620);
        mpfr_init(r25621);
        mpfr_init(r25622);
        mpfr_init(r25623);
        mpfr_init(r25624);
        mpfr_init(r25625);
        mpfr_init(r25626);
        mpfr_init(r25627);
        mpfr_init_set_str(r25628, "4.375868223365995e-83", 10, MPFR_RNDN);
        mpfr_init(r25629);
        mpfr_init(r25630);
        mpfr_init(r25631);
        mpfr_init(r25632);
        mpfr_init(r25633);
        mpfr_init(r25634);
        mpfr_init(r25635);
        mpfr_init(r25636);
        mpfr_init_set_str(r25637, "1.7815982055454507e+308", 10, MPFR_RNDN);
        mpfr_init(r25638);
        mpfr_init(r25639);
        mpfr_init(r25640);
        mpfr_init_set_str(r25641, "3", 10, MPFR_RNDN);
        mpfr_init(r25642);
        mpfr_init(r25643);
        mpfr_init(r25644);
        mpfr_init(r25645);
        mpfr_init(r25646);
        mpfr_init(r25647);
        mpfr_init(r25648);
        mpfr_init(r25649);
        mpfr_init(r25650);
        mpfr_init(r25651);
        mpfr_init(r25652);
        mpfr_init(r25653);
        mpfr_init(r25654);
}

double f_fm(double x, double n) {
        ;
        mpfr_set_d(r25608, n, MPFR_RNDN);
        mpfr_div(r25609, r25607, r25608, MPFR_RNDN);
        mpfr_set_d(r25610, x, MPFR_RNDN);
        mpfr_div(r25611, r25609, r25610, MPFR_RNDN);
        ;
        mpfr_div(r25613, r25612, r25608, MPFR_RNDN);
        mpfr_mul(r25614, r25610, r25610, MPFR_RNDN);
        mpfr_div(r25615, r25613, r25614, MPFR_RNDN);
        mpfr_sub(r25616, r25611, r25615, MPFR_RNDN);
        mpfr_log(r25617, r25610, MPFR_RNDN);
        mpfr_log(r25618, r25617, MPFR_RNDN);
        mpfr_mul(r25619, r25608, r25610, MPFR_RNDN);
        mpfr_mul(r25620, r25619, r25608, MPFR_RNDN);
        mpfr_log(r25621, r25620, MPFR_RNDN);
        mpfr_sub(r25622, r25618, r25621, MPFR_RNDN);
        mpfr_cbrt(r25623, r25622, MPFR_RNDN);
        mpfr_mul(r25624, r25623, r25623, MPFR_RNDN);
        mpfr_exp(r25625, r25624, MPFR_RNDN);
        mpfr_pow(r25626, r25625, r25623, MPFR_RNDN);
        mpfr_add(r25627, r25616, r25626, MPFR_RNDN);
        ;
        mpfr_set_si(r25629, mpfr_cmp(r25627, r25628) <= 0, MPFR_RNDN);
        mpfr_div(r25630, r25607, r25610, MPFR_RNDN);
        mpfr_div(r25631, r25630, r25608, MPFR_RNDN);
        mpfr_sub(r25632, r25631, r25615, MPFR_RNDN);
        mpfr_div(r25633, r25617, r25610, MPFR_RNDN);
        mpfr_mul(r25634, r25608, r25608, MPFR_RNDN);
        mpfr_div(r25635, r25633, r25634, MPFR_RNDN);
        mpfr_add(r25636, r25632, r25635, MPFR_RNDN);
        ;
        mpfr_set_si(r25638, mpfr_cmp(r25627, r25637) <= 0, MPFR_RNDN);
        mpfr_add(r25639, r25607, r25610, MPFR_RNDN);
        mpfr_pow(r25640, r25639, r25609, MPFR_RNDN);
        ;
        mpfr_pow(r25642, r25640, r25641, MPFR_RNDN);
        mpfr_cbrt(r25643, r25642, MPFR_RNDN);
        mpfr_pow(r25644, r25610, r25609, MPFR_RNDN);
        mpfr_sub(r25645, r25643, r25644, MPFR_RNDN);
        mpfr_sub(r25646, r25640, r25607, MPFR_RNDN);
        mpfr_mul(r25647, r25617, r25613, MPFR_RNDN);
        mpfr_div(r25648, r25608, r25617, MPFR_RNDN);
        mpfr_div(r25649, r25647, r25648, MPFR_RNDN);
        mpfr_sub(r25650, r25646, r25649, MPFR_RNDN);
        mpfr_div(r25651, r25617, r25608, MPFR_RNDN);
        mpfr_sub(r25652, r25650, r25651, MPFR_RNDN);
        if (mpfr_get_si(r25638, MPFR_RNDN)) { mpfr_set(r25653, r25645, MPFR_RNDN); } else { mpfr_set(r25653, r25652, MPFR_RNDN); };
        if (mpfr_get_si(r25629, MPFR_RNDN)) { mpfr_set(r25654, r25636, MPFR_RNDN); } else { mpfr_set(r25654, r25653, MPFR_RNDN); };
        return mpfr_get_d(r25654, MPFR_RNDN);
}

static mpfr_t r25655, r25656, r25657, r25658, r25659, r25660, r25661, r25662, r25663, r25664, r25665, r25666, r25667, r25668, r25669, r25670, r25671, r25672, r25673, r25674, r25675, r25676, r25677, r25678, r25679, r25680, r25681, r25682, r25683, r25684, r25685, r25686, r25687, r25688, r25689, r25690, r25691, r25692, r25693, r25694, r25695, r25696, r25697, r25698, r25699, r25700, r25701, r25702;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r25655, "1", 10, MPFR_RNDN);
        mpfr_init(r25656);
        mpfr_init(r25657);
        mpfr_init(r25658);
        mpfr_init(r25659);
        mpfr_init_set_str(r25660, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25661);
        mpfr_init(r25662);
        mpfr_init(r25663);
        mpfr_init(r25664);
        mpfr_init(r25665);
        mpfr_init(r25666);
        mpfr_init(r25667);
        mpfr_init(r25668);
        mpfr_init(r25669);
        mpfr_init(r25670);
        mpfr_init(r25671);
        mpfr_init(r25672);
        mpfr_init(r25673);
        mpfr_init(r25674);
        mpfr_init(r25675);
        mpfr_init_set_str(r25676, "4.375868223365995e-83", 10, MPFR_RNDN);
        mpfr_init(r25677);
        mpfr_init(r25678);
        mpfr_init(r25679);
        mpfr_init(r25680);
        mpfr_init(r25681);
        mpfr_init(r25682);
        mpfr_init(r25683);
        mpfr_init(r25684);
        mpfr_init_set_str(r25685, "1.7815982055454507e+308", 10, MPFR_RNDN);
        mpfr_init(r25686);
        mpfr_init(r25687);
        mpfr_init(r25688);
        mpfr_init_set_str(r25689, "3", 10, MPFR_RNDN);
        mpfr_init(r25690);
        mpfr_init(r25691);
        mpfr_init(r25692);
        mpfr_init(r25693);
        mpfr_init(r25694);
        mpfr_init(r25695);
        mpfr_init(r25696);
        mpfr_init(r25697);
        mpfr_init(r25698);
        mpfr_init(r25699);
        mpfr_init(r25700);
        mpfr_init(r25701);
        mpfr_init(r25702);
}

double f_dm(double x, double n) {
        ;
        mpfr_set_d(r25656, n, MPFR_RNDN);
        mpfr_div(r25657, r25655, r25656, MPFR_RNDN);
        mpfr_set_d(r25658, x, MPFR_RNDN);
        mpfr_div(r25659, r25657, r25658, MPFR_RNDN);
        ;
        mpfr_div(r25661, r25660, r25656, MPFR_RNDN);
        mpfr_mul(r25662, r25658, r25658, MPFR_RNDN);
        mpfr_div(r25663, r25661, r25662, MPFR_RNDN);
        mpfr_sub(r25664, r25659, r25663, MPFR_RNDN);
        mpfr_log(r25665, r25658, MPFR_RNDN);
        mpfr_log(r25666, r25665, MPFR_RNDN);
        mpfr_mul(r25667, r25656, r25658, MPFR_RNDN);
        mpfr_mul(r25668, r25667, r25656, MPFR_RNDN);
        mpfr_log(r25669, r25668, MPFR_RNDN);
        mpfr_sub(r25670, r25666, r25669, MPFR_RNDN);
        mpfr_cbrt(r25671, r25670, MPFR_RNDN);
        mpfr_mul(r25672, r25671, r25671, MPFR_RNDN);
        mpfr_exp(r25673, r25672, MPFR_RNDN);
        mpfr_pow(r25674, r25673, r25671, MPFR_RNDN);
        mpfr_add(r25675, r25664, r25674, MPFR_RNDN);
        ;
        mpfr_set_si(r25677, mpfr_cmp(r25675, r25676) <= 0, MPFR_RNDN);
        mpfr_div(r25678, r25655, r25658, MPFR_RNDN);
        mpfr_div(r25679, r25678, r25656, MPFR_RNDN);
        mpfr_sub(r25680, r25679, r25663, MPFR_RNDN);
        mpfr_div(r25681, r25665, r25658, MPFR_RNDN);
        mpfr_mul(r25682, r25656, r25656, MPFR_RNDN);
        mpfr_div(r25683, r25681, r25682, MPFR_RNDN);
        mpfr_add(r25684, r25680, r25683, MPFR_RNDN);
        ;
        mpfr_set_si(r25686, mpfr_cmp(r25675, r25685) <= 0, MPFR_RNDN);
        mpfr_add(r25687, r25655, r25658, MPFR_RNDN);
        mpfr_pow(r25688, r25687, r25657, MPFR_RNDN);
        ;
        mpfr_pow(r25690, r25688, r25689, MPFR_RNDN);
        mpfr_cbrt(r25691, r25690, MPFR_RNDN);
        mpfr_pow(r25692, r25658, r25657, MPFR_RNDN);
        mpfr_sub(r25693, r25691, r25692, MPFR_RNDN);
        mpfr_sub(r25694, r25688, r25655, MPFR_RNDN);
        mpfr_mul(r25695, r25665, r25661, MPFR_RNDN);
        mpfr_div(r25696, r25656, r25665, MPFR_RNDN);
        mpfr_div(r25697, r25695, r25696, MPFR_RNDN);
        mpfr_sub(r25698, r25694, r25697, MPFR_RNDN);
        mpfr_div(r25699, r25665, r25656, MPFR_RNDN);
        mpfr_sub(r25700, r25698, r25699, MPFR_RNDN);
        if (mpfr_get_si(r25686, MPFR_RNDN)) { mpfr_set(r25701, r25693, MPFR_RNDN); } else { mpfr_set(r25701, r25700, MPFR_RNDN); };
        if (mpfr_get_si(r25677, MPFR_RNDN)) { mpfr_set(r25702, r25684, MPFR_RNDN); } else { mpfr_set(r25702, r25701, MPFR_RNDN); };
        return mpfr_get_d(r25702, MPFR_RNDN);
}

