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

char *name = "Harley's example";

double f_if(float c_p, float c_n, float t, float s) {
        float r11527 = 1;
        float r11528 = s;
        float r11529 = -r11528;
        float r11530 = exp(r11529);
        float r11531 = r11527 + r11530;
        float r11532 = r11527 / r11531;
        float r11533 = c_p;
        float r11534 = pow(r11532, r11533);
        float r11535 = r11527 - r11532;
        float r11536 = c_n;
        float r11537 = pow(r11535, r11536);
        float r11538 = r11534 * r11537;
        float r11539 = t;
        float r11540 = -r11539;
        float r11541 = exp(r11540);
        float r11542 = r11527 + r11541;
        float r11543 = r11527 / r11542;
        float r11544 = pow(r11543, r11533);
        float r11545 = r11527 - r11543;
        float r11546 = pow(r11545, r11536);
        float r11547 = r11544 * r11546;
        float r11548 = r11538 / r11547;
        return r11548;
}

double f_id(double c_p, double c_n, double t, double s) {
        double r11549 = 1;
        double r11550 = s;
        double r11551 = -r11550;
        double r11552 = exp(r11551);
        double r11553 = r11549 + r11552;
        double r11554 = r11549 / r11553;
        double r11555 = c_p;
        double r11556 = pow(r11554, r11555);
        double r11557 = r11549 - r11554;
        double r11558 = c_n;
        double r11559 = pow(r11557, r11558);
        double r11560 = r11556 * r11559;
        double r11561 = t;
        double r11562 = -r11561;
        double r11563 = exp(r11562);
        double r11564 = r11549 + r11563;
        double r11565 = r11549 / r11564;
        double r11566 = pow(r11565, r11555);
        double r11567 = r11549 - r11565;
        double r11568 = pow(r11567, r11558);
        double r11569 = r11566 * r11568;
        double r11570 = r11560 / r11569;
        return r11570;
}


double f_of(float c_p, float c_n, float t, float s) {
        float r11571 = 1;
        float r11572 = t;
        float r11573 = -r11572;
        float r11574 = exp(r11573);
        float r11575 = r11571 + r11574;
        float r11576 = r11571 / r11575;
        float r11577 = 3.487853581647123e-06;
        bool r11578 = r11576 <= r11577;
        float r11579 = s;
        float r11580 = -r11579;
        float r11581 = exp(r11580);
        float r11582 = r11581 + r11571;
        float r11583 = r11571 / r11582;
        float r11584 = r11571 - r11583;
        float r11585 = c_n;
        float r11586 = pow(r11584, r11585);
        float r11587 = c_p;
        float r11588 = pow(r11583, r11587);
        float r11589 = 1/2;
        float r11590 = log(r11589);
        float r11591 = r11589 * r11572;
        float r11592 = r11590 + r11591;
        float r11593 = r11592 * r11587;
        float r11594 = r11593 + r11571;
        float r11595 = r11588 / r11594;
        float r11596 = r11586 * r11595;
        float r11597 = r11574 + r11571;
        float r11598 = r11571 / r11597;
        float r11599 = r11571 - r11598;
        float r11600 = pow(r11599, r11585);
        float r11601 = r11596 / r11600;
        float r11602 = log(r11597);
        float r11603 = log(r11582);
        float r11604 = r11602 - r11603;
        float r11605 = r11604 * r11587;
        float r11606 = log(r11584);
        float r11607 = log(r11599);
        float r11608 = r11606 - r11607;
        float r11609 = r11585 * r11608;
        float r11610 = r11605 + r11609;
        float r11611 = exp(r11610);
        float r11612 = r11578 ? r11601 : r11611;
        return r11612;
}

double f_od(double c_p, double c_n, double t, double s) {
        double r11613 = 1;
        double r11614 = t;
        double r11615 = -r11614;
        double r11616 = exp(r11615);
        double r11617 = r11613 + r11616;
        double r11618 = r11613 / r11617;
        double r11619 = 3.487853581647123e-06;
        bool r11620 = r11618 <= r11619;
        double r11621 = s;
        double r11622 = -r11621;
        double r11623 = exp(r11622);
        double r11624 = r11623 + r11613;
        double r11625 = r11613 / r11624;
        double r11626 = r11613 - r11625;
        double r11627 = c_n;
        double r11628 = pow(r11626, r11627);
        double r11629 = c_p;
        double r11630 = pow(r11625, r11629);
        double r11631 = 1/2;
        double r11632 = log(r11631);
        double r11633 = r11631 * r11614;
        double r11634 = r11632 + r11633;
        double r11635 = r11634 * r11629;
        double r11636 = r11635 + r11613;
        double r11637 = r11630 / r11636;
        double r11638 = r11628 * r11637;
        double r11639 = r11616 + r11613;
        double r11640 = r11613 / r11639;
        double r11641 = r11613 - r11640;
        double r11642 = pow(r11641, r11627);
        double r11643 = r11638 / r11642;
        double r11644 = log(r11639);
        double r11645 = log(r11624);
        double r11646 = r11644 - r11645;
        double r11647 = r11646 * r11629;
        double r11648 = log(r11626);
        double r11649 = log(r11641);
        double r11650 = r11648 - r11649;
        double r11651 = r11627 * r11650;
        double r11652 = r11647 + r11651;
        double r11653 = exp(r11652);
        double r11654 = r11620 ? r11643 : r11653;
        return r11654;
}

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 r11655, r11656, r11657, r11658, r11659, r11660, r11661, r11662, r11663, r11664, r11665, r11666, r11667, r11668, r11669, r11670, r11671, r11672, r11673, r11674, r11675, r11676;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r11655, "1", 10, MPFR_RNDN);
        mpfr_init(r11656);
        mpfr_init(r11657);
        mpfr_init(r11658);
        mpfr_init(r11659);
        mpfr_init(r11660);
        mpfr_init(r11661);
        mpfr_init(r11662);
        mpfr_init(r11663);
        mpfr_init(r11664);
        mpfr_init(r11665);
        mpfr_init(r11666);
        mpfr_init(r11667);
        mpfr_init(r11668);
        mpfr_init(r11669);
        mpfr_init(r11670);
        mpfr_init(r11671);
        mpfr_init(r11672);
        mpfr_init(r11673);
        mpfr_init(r11674);
        mpfr_init(r11675);
        mpfr_init(r11676);
}

double f_im(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11656, s, MPFR_RNDN);
        mpfr_neg(r11657, r11656, MPFR_RNDN);
        mpfr_exp(r11658, r11657, MPFR_RNDN);
        mpfr_add(r11659, r11655, r11658, MPFR_RNDN);
        mpfr_div(r11660, r11655, r11659, MPFR_RNDN);
        mpfr_set_d(r11661, c_p, MPFR_RNDN);
        mpfr_pow(r11662, r11660, r11661, MPFR_RNDN);
        mpfr_sub(r11663, r11655, r11660, MPFR_RNDN);
        mpfr_set_d(r11664, c_n, MPFR_RNDN);
        mpfr_pow(r11665, r11663, r11664, MPFR_RNDN);
        mpfr_mul(r11666, r11662, r11665, MPFR_RNDN);
        mpfr_set_d(r11667, t, MPFR_RNDN);
        mpfr_neg(r11668, r11667, MPFR_RNDN);
        mpfr_exp(r11669, r11668, MPFR_RNDN);
        mpfr_add(r11670, r11655, r11669, MPFR_RNDN);
        mpfr_div(r11671, r11655, r11670, MPFR_RNDN);
        mpfr_pow(r11672, r11671, r11661, MPFR_RNDN);
        mpfr_sub(r11673, r11655, r11671, MPFR_RNDN);
        mpfr_pow(r11674, r11673, r11664, MPFR_RNDN);
        mpfr_mul(r11675, r11672, r11674, MPFR_RNDN);
        mpfr_div(r11676, r11666, r11675, MPFR_RNDN);
        return mpfr_get_d(r11676, MPFR_RNDN);
}

static mpfr_t r11677, r11678, r11679, r11680, r11681, r11682, r11683, r11684, r11685, r11686, r11687, r11688, r11689, r11690, r11691, r11692, r11693, r11694, r11695, r11696, r11697, r11698, r11699, r11700, r11701, r11702, r11703, r11704, r11705, r11706, r11707, r11708, r11709, r11710, r11711, r11712, r11713, r11714, r11715, r11716, r11717, r11718;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r11677, "1", 10, MPFR_RNDN);
        mpfr_init(r11678);
        mpfr_init(r11679);
        mpfr_init(r11680);
        mpfr_init(r11681);
        mpfr_init(r11682);
        mpfr_init_set_str(r11683, "3.487853581647123e-06", 10, MPFR_RNDN);
        mpfr_init(r11684);
        mpfr_init(r11685);
        mpfr_init(r11686);
        mpfr_init(r11687);
        mpfr_init(r11688);
        mpfr_init(r11689);
        mpfr_init(r11690);
        mpfr_init(r11691);
        mpfr_init(r11692);
        mpfr_init(r11693);
        mpfr_init(r11694);
        mpfr_init_set_str(r11695, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11696);
        mpfr_init(r11697);
        mpfr_init(r11698);
        mpfr_init(r11699);
        mpfr_init(r11700);
        mpfr_init(r11701);
        mpfr_init(r11702);
        mpfr_init(r11703);
        mpfr_init(r11704);
        mpfr_init(r11705);
        mpfr_init(r11706);
        mpfr_init(r11707);
        mpfr_init(r11708);
        mpfr_init(r11709);
        mpfr_init(r11710);
        mpfr_init(r11711);
        mpfr_init(r11712);
        mpfr_init(r11713);
        mpfr_init(r11714);
        mpfr_init(r11715);
        mpfr_init(r11716);
        mpfr_init(r11717);
        mpfr_init(r11718);
}

double f_fm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11678, t, MPFR_RNDN);
        mpfr_neg(r11679, r11678, MPFR_RNDN);
        mpfr_exp(r11680, r11679, MPFR_RNDN);
        mpfr_add(r11681, r11677, r11680, MPFR_RNDN);
        mpfr_div(r11682, r11677, r11681, MPFR_RNDN);
        ;
        mpfr_set_si(r11684, mpfr_cmp(r11682, r11683) <= 0, MPFR_RNDN);
        mpfr_set_d(r11685, s, MPFR_RNDN);
        mpfr_neg(r11686, r11685, MPFR_RNDN);
        mpfr_exp(r11687, r11686, MPFR_RNDN);
        mpfr_add(r11688, r11687, r11677, MPFR_RNDN);
        mpfr_div(r11689, r11677, r11688, MPFR_RNDN);
        mpfr_sub(r11690, r11677, r11689, MPFR_RNDN);
        mpfr_set_d(r11691, c_n, MPFR_RNDN);
        mpfr_pow(r11692, r11690, r11691, MPFR_RNDN);
        mpfr_set_d(r11693, c_p, MPFR_RNDN);
        mpfr_pow(r11694, r11689, r11693, MPFR_RNDN);
        ;
        mpfr_log(r11696, r11695, MPFR_RNDN);
        mpfr_mul(r11697, r11695, r11678, MPFR_RNDN);
        mpfr_add(r11698, r11696, r11697, MPFR_RNDN);
        mpfr_mul(r11699, r11698, r11693, MPFR_RNDN);
        mpfr_add(r11700, r11699, r11677, MPFR_RNDN);
        mpfr_div(r11701, r11694, r11700, MPFR_RNDN);
        mpfr_mul(r11702, r11692, r11701, MPFR_RNDN);
        mpfr_add(r11703, r11680, r11677, MPFR_RNDN);
        mpfr_div(r11704, r11677, r11703, MPFR_RNDN);
        mpfr_sub(r11705, r11677, r11704, MPFR_RNDN);
        mpfr_pow(r11706, r11705, r11691, MPFR_RNDN);
        mpfr_div(r11707, r11702, r11706, MPFR_RNDN);
        mpfr_log(r11708, r11703, MPFR_RNDN);
        mpfr_log(r11709, r11688, MPFR_RNDN);
        mpfr_sub(r11710, r11708, r11709, MPFR_RNDN);
        mpfr_mul(r11711, r11710, r11693, MPFR_RNDN);
        mpfr_log(r11712, r11690, MPFR_RNDN);
        mpfr_log(r11713, r11705, MPFR_RNDN);
        mpfr_sub(r11714, r11712, r11713, MPFR_RNDN);
        mpfr_mul(r11715, r11691, r11714, MPFR_RNDN);
        mpfr_add(r11716, r11711, r11715, MPFR_RNDN);
        mpfr_exp(r11717, r11716, MPFR_RNDN);
        if (mpfr_get_si(r11684, MPFR_RNDN)) { mpfr_set(r11718, r11707, MPFR_RNDN); } else { mpfr_set(r11718, r11717, MPFR_RNDN); };
        return mpfr_get_d(r11718, MPFR_RNDN);
}

static mpfr_t r11719, r11720, r11721, r11722, r11723, r11724, r11725, r11726, r11727, r11728, r11729, r11730, r11731, r11732, r11733, r11734, r11735, r11736, r11737, r11738, r11739, r11740, r11741, r11742, r11743, r11744, r11745, r11746, r11747, r11748, r11749, r11750, r11751, r11752, r11753, r11754, r11755, r11756, r11757, r11758, r11759, r11760;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1872);
        mpfr_init_set_str(r11719, "1", 10, MPFR_RNDN);
        mpfr_init(r11720);
        mpfr_init(r11721);
        mpfr_init(r11722);
        mpfr_init(r11723);
        mpfr_init(r11724);
        mpfr_init_set_str(r11725, "3.487853581647123e-06", 10, MPFR_RNDN);
        mpfr_init(r11726);
        mpfr_init(r11727);
        mpfr_init(r11728);
        mpfr_init(r11729);
        mpfr_init(r11730);
        mpfr_init(r11731);
        mpfr_init(r11732);
        mpfr_init(r11733);
        mpfr_init(r11734);
        mpfr_init(r11735);
        mpfr_init(r11736);
        mpfr_init_set_str(r11737, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11738);
        mpfr_init(r11739);
        mpfr_init(r11740);
        mpfr_init(r11741);
        mpfr_init(r11742);
        mpfr_init(r11743);
        mpfr_init(r11744);
        mpfr_init(r11745);
        mpfr_init(r11746);
        mpfr_init(r11747);
        mpfr_init(r11748);
        mpfr_init(r11749);
        mpfr_init(r11750);
        mpfr_init(r11751);
        mpfr_init(r11752);
        mpfr_init(r11753);
        mpfr_init(r11754);
        mpfr_init(r11755);
        mpfr_init(r11756);
        mpfr_init(r11757);
        mpfr_init(r11758);
        mpfr_init(r11759);
        mpfr_init(r11760);
}

double f_dm(double c_p, double c_n, double t, double s) {
        ;
        mpfr_set_d(r11720, t, MPFR_RNDN);
        mpfr_neg(r11721, r11720, MPFR_RNDN);
        mpfr_exp(r11722, r11721, MPFR_RNDN);
        mpfr_add(r11723, r11719, r11722, MPFR_RNDN);
        mpfr_div(r11724, r11719, r11723, MPFR_RNDN);
        ;
        mpfr_set_si(r11726, mpfr_cmp(r11724, r11725) <= 0, MPFR_RNDN);
        mpfr_set_d(r11727, s, MPFR_RNDN);
        mpfr_neg(r11728, r11727, MPFR_RNDN);
        mpfr_exp(r11729, r11728, MPFR_RNDN);
        mpfr_add(r11730, r11729, r11719, MPFR_RNDN);
        mpfr_div(r11731, r11719, r11730, MPFR_RNDN);
        mpfr_sub(r11732, r11719, r11731, MPFR_RNDN);
        mpfr_set_d(r11733, c_n, MPFR_RNDN);
        mpfr_pow(r11734, r11732, r11733, MPFR_RNDN);
        mpfr_set_d(r11735, c_p, MPFR_RNDN);
        mpfr_pow(r11736, r11731, r11735, MPFR_RNDN);
        ;
        mpfr_log(r11738, r11737, MPFR_RNDN);
        mpfr_mul(r11739, r11737, r11720, MPFR_RNDN);
        mpfr_add(r11740, r11738, r11739, MPFR_RNDN);
        mpfr_mul(r11741, r11740, r11735, MPFR_RNDN);
        mpfr_add(r11742, r11741, r11719, MPFR_RNDN);
        mpfr_div(r11743, r11736, r11742, MPFR_RNDN);
        mpfr_mul(r11744, r11734, r11743, MPFR_RNDN);
        mpfr_add(r11745, r11722, r11719, MPFR_RNDN);
        mpfr_div(r11746, r11719, r11745, MPFR_RNDN);
        mpfr_sub(r11747, r11719, r11746, MPFR_RNDN);
        mpfr_pow(r11748, r11747, r11733, MPFR_RNDN);
        mpfr_div(r11749, r11744, r11748, MPFR_RNDN);
        mpfr_log(r11750, r11745, MPFR_RNDN);
        mpfr_log(r11751, r11730, MPFR_RNDN);
        mpfr_sub(r11752, r11750, r11751, MPFR_RNDN);
        mpfr_mul(r11753, r11752, r11735, MPFR_RNDN);
        mpfr_log(r11754, r11732, MPFR_RNDN);
        mpfr_log(r11755, r11747, MPFR_RNDN);
        mpfr_sub(r11756, r11754, r11755, MPFR_RNDN);
        mpfr_mul(r11757, r11733, r11756, MPFR_RNDN);
        mpfr_add(r11758, r11753, r11757, MPFR_RNDN);
        mpfr_exp(r11759, r11758, MPFR_RNDN);
        if (mpfr_get_si(r11726, MPFR_RNDN)) { mpfr_set(r11760, r11749, MPFR_RNDN); } else { mpfr_set(r11760, r11759, MPFR_RNDN); };
        return mpfr_get_d(r11760, MPFR_RNDN);
}

